diff --git a/AF/RepDepreciacion.aspx.vb b/AF/RepDepreciacion.aspx.vb index 03b7aaf75..c78d0f4e3 100644 --- a/AF/RepDepreciacion.aspx.vb +++ b/AF/RepDepreciacion.aspx.vb @@ -38,17 +38,16 @@ Partial Class AF_RepDepreciacion For Each RowsDt As GridViewRow In GvDatos.Rows CveActivoFijo = RowsDt.DataKey("CveActivoFijo").ToEntero - If RowsDt.FCLiteral("LtlDepreciacionMensual").Text.ToDouble > 0 And CveActivoFijo <> 0 Then - - Dim MontoDepreciacion As Double = RowsDt.FCLiteral("LtlDepreciacionMensual").Text.ToDouble + Dim MontoDepreciacion As Decimal = RowsDt.FCLiteral("LtlDepreciacionMensual").Text.ToDecimal + If MontoDepreciacion > 0 And CveActivoFijo <> 0 Then Dim ConceptoPolizaDetalle As String = String.Format("Depreciacion - {0} - {1}", txtFechaI.Text, RowsDt.FCLiteral("LtlDescripcion").Text) If CvePrePoliza > 0 Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, MontoDepreciacion.ToDecimal, ConceptoPolizaDetalle, 101, ConceptoPolizaDetalle, txtFechaI.Text.ToDate, 0, -1, CveActivoFijo:=CveActivoFijo, ImporteMX:=MontoDepreciacion.ToDecimal, ImporteME:=MontoDepreciacion.ToDecimal, CveSubProyecto:=CveSubProyecto) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, -MontoDepreciacion, -MontoDepreciacion, 270, ConceptoPolizaDetalle, ConceptoPolizaDetalle, 0, CveActivoFijo:=CveActivoFijo, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True Exit For End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, MontoDepreciacion.ToDecimal, ConceptoPolizaDetalle, 51, ConceptoPolizaDetalle, txtFechaI.Text.ToDate, 0, -1, CveActivoFijo:=CveActivoFijo, ImporteMX:=MontoDepreciacion.ToDecimal, ImporteME:=MontoDepreciacion.ToDecimal, CveSubProyecto:=CveSubProyecto) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, MontoDepreciacion, MontoDepreciacion, 101, ConceptoPolizaDetalle, ConceptoPolizaDetalle, 0, CveActivoFijo:=CveActivoFijo, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True Exit For End If diff --git a/Acumuladores/CatGarantiasMeses.aspx.vb b/Acumuladores/CatGarantiasMeses.aspx.vb index 3e71a5f47..0f204a538 100644 --- a/Acumuladores/CatGarantiasMeses.aspx.vb +++ b/Acumuladores/CatGarantiasMeses.aspx.vb @@ -72,15 +72,20 @@ Partial Class Acumuladores_CatFoliosGarantia Private Sub CargaCombos() - Dim ObjPS As New ClsProductosServicios + 'Dim ObjPS As New ClsProductosServicios - If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarca.DataSource = ObjPS.DtResultados - DdlMarca.DataBind() - DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) - DdlMarca.SelectedValue = "-1" - End If - ObjPS.Dispose() + 'If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarca.DataSource = ObjPS.DtResultados + ' DdlMarca.DataBind() + ' DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) + ' DdlMarca.SelectedValue = "-1" + 'End If + 'ObjPS.Dispose() + + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarca.DataBind() + DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) + DdlMarca.SelectedValue = "-1" DdlTipoUso.DataSource = GlobalDTAcumTiposUso() DdlTipoUso.DataBind() @@ -109,13 +114,14 @@ Partial Class Acumuladores_CatFoliosGarantia Private Sub CargaCombosModal() - Dim ObjPS As New ClsProductosServicios + 'Dim ObjPS As New ClsProductosServicios - If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarcaM.DataSource = ObjPS.DtResultados + 'If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarcaM.DataSource = ObjPS.DtResultados - End If - ObjPS.Dispose() + 'End If + 'ObjPS.Dispose() + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarcaM.DataBind() DdlTipoUsoM.DataSource = GlobalDTAcumTiposUso() diff --git a/App_Code/ClsClientes.vb b/App_Code/ClsClientes.vb index 2fa90b6e1..14f390bd5 100644 --- a/App_Code/ClsClientes.vb +++ b/App_Code/ClsClientes.vb @@ -589,7 +589,7 @@ Public Class ClsClientes Optional CveMotivoTraslado As Integer = 0, Optional NumRegIdTrib As String = "", Optional ComExtEstado As String = "-1", Optional ComExtMunicipio As String = "-1", Optional ComExtColonia As String = "-1", Optional RequiereOC As Boolean = False, Optional LT As String = "0", Optional LG As String = "0", Optional EsDistribuidor As Boolean = False, Optional TipoCliente As Integer = 1, Optional CargoUsado As Boolean = False, Optional BonificacionUsado As Boolean = False, Optional CveTipoRetencion As Integer = 0, Optional CorreoEntregaCompras As String = "-1", Optional CorreoEntregaAlmacen As String = "-1", Optional CveSATEstado As Integer = -1, Optional CveAdminTrayecto As Integer = -1, Optional CveRegimenFiscal As Integer = 0, Optional RegimenSociedad As String = "-1", Optional TipoPersona As Boolean = False, - Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha) As Boolean + Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha, Optional ComExtCalle As String = "-1", Optional ComExtNumExt As String = "-1", Optional ComExtCP As String = "-1") As Boolean Dim Retorno As Boolean = False @@ -737,6 +737,9 @@ Public Class ClsClientes .Add("@RepresentanteLegal", SqlDbType.VarChar).Value = RepresentanteLegal .Add("@FechaLimiteCredito", SqlDbType.Date).Value = FechaLimiteCredito + .Add("@ComExtCalle", SqlDbType.VarChar).Value = ComExtCalle + .Add("@ComExtNumExt", SqlDbType.VarChar).Value = ComExtNumExt + .Add("@ComExtCP", SqlDbType.VarChar).Value = ComExtCP End With Try SqlAdapter.Fill(Data) @@ -785,7 +788,7 @@ Public Class ClsClientes Optional ApellidoPaternoPF As String = "-1", Optional ApellidoMaternoPF As String = "-1", Optional NombresPF As String = "-1", Optional RequiereOC As Boolean = False, Optional LT As String = "0", Optional LG As String = "0", Optional EsDistribuidor As Boolean = False, Optional TipoCliente As Integer = 1, Optional CargoUsado As Boolean = False, Optional BonificacionUsado As Boolean = False, Optional CveTipoRetencion As Integer = 0, Optional CorreoEntregaCompras As String = "-1", Optional CorreoEntregaAlmacen As String = "-1", Optional CveSATEstado As Integer = -1, Optional CveAdminTrayecto As Integer = -1, Optional NoDesglosaIVA As Boolean = False, Optional CveRegimenFiscal As Integer = 0, Optional RegimenSociedad As String = "-1", Optional TipoPersona As Boolean = False, - Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha) As Boolean + Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha, Optional ComExtCalle As String = "-1", Optional ComExtNumExt As String = "-1", Optional ComExtCP As String = "-1") As Boolean Dim Retorno As Boolean = False @@ -949,6 +952,9 @@ Public Class ClsClientes .Add("@RepresentanteLegal", SqlDbType.VarChar).Value = RepresentanteLegal .Add("@FechaLimiteCredito", SqlDbType.Date).Value = FechaLimiteCredito + .Add("@ComExtCalle", SqlDbType.VarChar).Value = ComExtCalle + .Add("@ComExtNumExt", SqlDbType.VarChar).Value = ComExtNumExt + .Add("@ComExtCP", SqlDbType.VarChar).Value = ComExtCP @@ -1427,7 +1433,7 @@ Public Class ClsClientes Alert("La Clasificación ya existe en el Catálogo.", TipoMensaje.MsgError) End If Catch ex As Exception - OnError("Ocurrió un error al Actualizar la Clasificación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + OnError("Ocurrió un error al actualizar el giro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno @@ -1448,10 +1454,10 @@ Public Class ClsClientes Retorno = True Catch Ex1 As SqlException If Ex1.Message.Contains("Número: 2627;") Then - Alert("La Clasificación ya existe en el Catálogo.", TipoMensaje.MsgError) + Alert("Eñ giro ya existe en el catálogo.", TipoMensaje.MsgError) End If Catch ex As Exception - OnError("Ocurrió un error al Guardar una Clasificación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + OnError("Ocurrió un error al guardar un giro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno End Function @@ -1467,7 +1473,7 @@ Public Class ClsClientes SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error al obtener las Clasificaciones de los Clientes.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error al obtener los giros de los clientes.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno End Function @@ -1483,7 +1489,7 @@ Public Class ClsClientes SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error eliminar la Clasificación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error eliminar el giro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno End Function diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index d80321677..51d7d76b3 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -3378,10 +3378,10 @@ Public Class ClsContabilidad With SqlAdapter.SelectCommand.Parameters .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta .Add("@Codigo", SqlDbType.VarChar).Value = Codigo - .Add("@Afectable", SqlDbType.VarChar).Value = Afectable - .Add("@CveEmpresa", SqlDbType.VarChar).Value = CveEmpresa + .Add("@Afectable", SqlDbType.Int).Value = Afectable + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Nombre", SqlDbType.VarChar).Value = Nombre - .Add("@RowNum", SqlDbType.VarChar).Value = RowNum + .Add("@RowNum", SqlDbType.Int).Value = RowNum .Add("@CvePadre", SqlDbType.Int).Value = CvePadre End With diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index d72be053a..7bb89b66e 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4712,7 +4712,6 @@ Public Class ClsPaginas PaginaDict.Add("/Compras/RepCxP.aspx".ToUpper(), 168) PaginaDict.Add("/Compras/RepCxPDetalle.aspx".ToUpper(), 168) PaginaDict.Add("/Compras/CatProveedoresClasificaciones.aspx".ToUpper(), 186) - PaginaDict.Add("/Compras/CatAcreedores.aspx".ToUpper(), 303) PaginaDict.Add("/Compras/Acreedores.aspx".ToUpper(), 303) PaginaDict.Add("/Compras/RepComprasG.aspx".ToUpper(), 286) PaginaDict.Add("/Compras/Compras2.aspx".ToUpper(), -1) @@ -5778,11 +5777,11 @@ Public Class ClsPaginas If sw IsNot Nothing AndAlso Not (Not User.Identity.IsAuthenticated OrElse UsuarioActual Is Nothing) Then sw.Stop() - 'If Not Page.IsPostBack Then - ' Using ObjUsuario As New ClsSisUsuarios - ' ObjUsuario.AddBitacora(CveModulo, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Request.Url.PathAndQuery.ToString(), sw.ElapsedMilliseconds) - ' End Using - 'End If + If Not Page.IsPostBack Then + Using ObjUsuario As New ClsSisUsuarios + ObjUsuario.AddBitacora(CveModulo, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Request.Url.PathAndQuery.ToString(), sw.ElapsedMilliseconds) + End Using + End If End If If Not IsNothing(ViewState("strToastMsglargonoreplace")) AndAlso ViewState("strToastMsglargonoreplace").ToString.Length > 0 Then @@ -8016,7 +8015,7 @@ Public Class ClsPaginas End If 'TEMPORAL, DEBE CAMBIARSE A FUNCIONALIDAD - If Vta.CveEmpresa.Contiene(172, 173) Then + If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then Dim ArchivoStimulsfot As New System.IO.FileInfo(RutaFormato.Replace(".rdlc", ".mrt")) If ArchivoStimulsfot.Exists Then UsarStimulsoft = True @@ -8070,8 +8069,7 @@ Public Class ClsPaginas RutaFormato = RutaFormato.Replace(".rdlc", ".mrt") retorno = StreamBytesStimulsoft("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF") - 'TEMPORAL, EMPRESAS EN LAS QUE SE UTILIZARA PRIMERO STIMULSOFT - If Vta.CveEmpresa.Contiene(172, 173) Then + If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio)) If Guardar Then If Not ArchivoPDF.Exists Then @@ -9633,6 +9631,8 @@ Public Class ClsPaginas Dim ImporteMN As Decimal = 0 Dim ImporteME As Decimal = 0 Dim TCValuacion As Decimal = CompraActual.TC + Dim TCValuacionPago As Decimal = Pago.TCPago + Dim tFechaUltimaFluctuacion As Date Dim tImportePago, tImporteCompra As Decimal Dim CveConceptoContableComplementaria As Integer = 206 @@ -9650,16 +9650,15 @@ Public Class ClsPaginas Dim FuncionalidadFluctuacionImpuestos As Boolean = If(UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False) Dim tFecha As Date = Pago.Fecha + Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha) - If CompraActual.CveMoneda <> 1 OrElse Pago.CveMonedaPago <> 1 Then - Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha) - - If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then - If UltimaFluctuacion.FechaFluctuacion <= tFecha AndAlso CompraActual.Fecha <= UltimaFluctuacion.FechaFluctuacion Then - 'FechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion - TCValuacion = UltimaFluctuacion.TCFluctuacion - End If + If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then + If UltimaFluctuacion.FechaFluctuacion <= tFecha Then + tFechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion + TCValuacion = UltimaFluctuacion.TCFluctuacion End If + If CompraActual.Fecha < tFechaUltimaFluctuacion Then TCValuacion = TCValuacion + If Pago.Fecha < tFechaUltimaFluctuacion Then TCValuacionPago = TCValuacion End If If CompraActual.CveMoneda = 1 And Pago.CveMonedaPago <> 1 Then 'factura pesos, pago en dolares @@ -9793,6 +9792,82 @@ Public Class ClsPaginas End If + 'concepto pago + Concepto = String.Format("{0} NC:{1}", CompraActual.ProveedorNombre, Pago.Referencia) + + If Pago.TipoPago = "Egsc" AndAlso Not ErrorMovtos Then ' A N T I C I P O / E G R E S O S X C O M P R O B A R + Dim Ret As New ConceptosRetenciones + If Pago.CveMonedaPago > 1 Then + 'Agregamos la Extranjera + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 21, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + + ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 266, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProvComplementaria, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + Else + 'Agregamos Nacional + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 21, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago) Then ErrorMovtos = True + + End If + + End If + + If Pago.TipoPago.Contiene("NC", "DEV") AndAlso Not ErrorMovtos Then ' N O T A D E C R E D I T O + Dim Ret As New ConceptosRetenciones + If Pago.CveMonedaPago > 1 Then + 'Agregamos la Extranjera + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 60, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveCompraAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + + ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 235, Pago.Referencia, Concepto, CompraActual.IdCtaContableProvComplementaria, CveCompra:=Pago.CveCompraAmortizacion, CveVentaAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + Else + 'Agregamos Nacional + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 60, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveVentaAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + End If + + End If + + If Pago.TipoPago = "DD" AndAlso Not ErrorMovtos Then ' D E U D O R D I V E R S O + Dim Ret As New ConceptosRetenciones + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + If ObjConta.GetRetCuenta(66, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero + If Pago.CveMonedaPago > 1 AndAlso ObjConta.GetRetCuenta(207, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero + End If + + If Pago.CveMonedaPago > 1 Then + 'Agregamos la Extranjera + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveCompraAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 207, Pago.Referencia, Concepto, CompraActual.IdCtaContableProvComplementaria, CveCompra:=Pago.CveCompraAmortizacion, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + Else + 'Agregamos Nacional + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveVenta:=Pago.CveCompraAmortizacion, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + End If + End If + + 'If Pago.TipoPago = "Egsc" AndAlso Not ErrorMovtos Then ' I N G R E S O S X C O M P R O B A R + ' Dim Ret As New ConceptosRetenciones + ' If UsuarioActual.Empresa.TipoContabilidad = 2 Then + ' If ObjConta.GetRetCuenta(66, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero + ' If Pago.CveMonedaPago > 1 AndAlso ObjConta.GetRetCuenta(207, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero + + ' End If + + ' If Pago.CveMonedaPago > 1 Then + ' 'Agregamos la Extranjera + ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipo, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + ' ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 207, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipoComplementaria, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + ' Else + ' 'Agregamos Nacional + ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipoExtranjera, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CveSubProyecto:=VentaActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + ' End If + 'End If + If Not ErrorMovtos AndAlso TCValuacion <> Pago.TCPago Then Dim ConceptoContable, IdCtaContable As Integer Dim TipoMovimiento As Boolean @@ -9844,6 +9919,7 @@ Public Class ClsPaginas Public Property OtroGastoIngreso As Decimal = 0 Public Property CveConceptoPago As Integer = -1 'no definido de inicio Public Property CveCreditoDetalle As Integer = -1 + Public Property Referencia As String = "" Public Property AplicaAcreditable As Boolean = True End Class @@ -9870,9 +9946,10 @@ Public Class ClsPaginas Public Property CveConceptoRetISR As Integer Public Property CveSubProyecto As Integer Public Property UsuarioActual As Usuario - Public Property IdCtaContableProv As Integer Public Property IdCtaContableProvComplementaria As Integer + Public Property IdCtaContableAnticipoProv As Integer + Public Property IdCtaContableAnticipoProvComplementaria As Integer Public ReadOnly Property ConceptoPrePolizaIVA As ConceptosRetenciones Get Dim Ret As New ConceptosRetenciones diff --git a/App_Code/ClsSisUsuarios.vb b/App_Code/ClsSisUsuarios.vb index 2d74edb22..352595214 100644 --- a/App_Code/ClsSisUsuarios.vb +++ b/App_Code/ClsSisUsuarios.vb @@ -5,12 +5,12 @@ Imports System.Data Imports System.Data.SqlClient Imports Extensiones Public Class ClsSisUsuarios - Implements IDisposable - - + Implements IDisposable + + #Region "Campos" - - 'SQL + + 'SQL Private SqlConexion As SqlConnection Private SqlAdapter As SqlDataAdapter Private SqlTransacc As SqlTransaction @@ -21,12 +21,12 @@ Public Class ClsSisUsuarios Private disposedValue As Boolean = False ' Para detectar llamadas redundantes 'PARA REGISTRAR CONEXION - Private CveConexion As Integer = 0 - + Private CveConexion As Integer = 0 + #End Region - + #Region "Propiedades" - + Public ReadOnly Property DtResultados() As DataTable Get DtResultados = Data @@ -60,9 +60,9 @@ Public Class ClsSisUsuarios Public Property CveSubProyecto As Integer Public Property AsignarAutomaticamenteSubProyecto As Boolean Public Property AsignarAutomaticamenteOC As Boolean - Public Property DescuentoAutorizado As Double + Public Property DescuentoAutorizado As Double #End Region - + Sub New(Optional TransaccionCompartida As SqlTransaction = Nothing) If TransaccionCompartida Is Nothing Then @@ -90,9 +90,9 @@ Public Class ClsSisUsuarios End With If Not SqlTransacc Is Nothing Then SqlAdapter.SelectCommand.Transaction = SqlTransacc Data = New DataTable - End Sub + End Sub #Region "Conexiones" - + Private Sub ConexionAdd() If ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then @@ -127,7 +127,7 @@ Public Class ClsSisUsuarios End If - End Sub + End Sub #End Region Private Sub DataCommand(pStrSQL As String, Optional TipoComando As CommandType = CommandType.StoredProcedure) With SqlCommand @@ -237,9 +237,9 @@ Public Class ClsSisUsuarios '* Retorno.NombreAbreviatura = Data.Rows(0)("NombreAbreviatura").ToString() - Retorno.DescuentoAutorizado = Data.Rows(0)("DescuentoAutorizado").ToString().ToDouble() - - Retorno.PorcentajeMaximoAutorizacion = Data.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal() + Retorno.DescuentoAutorizado = Data.Rows(0)("DescuentoAutorizado").ToString().ToDouble() + + Retorno.PorcentajeMaximoAutorizacion = Data.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal() Retorno.DiasMaximoAutorizacion = Data.Rows(0)("DiasMaximoAutorizacion").ToString().ToEntero() Retorno.CodigoAutorizado = Data.Rows(0)("CodigoAutorizado").ToString() @@ -415,8 +415,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function ValidaUsuarioCodigoAcceso(CodigoAcceso As String, CveEmpresa As Integer) As Integer Dim Retorno As Integer = Nothing @@ -429,7 +429,7 @@ Public Class ClsSisUsuarios Try SqlAdapter.Fill(Data) - If Data.Rows.Count > 0 Then + If Data.Rows.Count > 0 Then Retorno = Data.Rows(0)("CveUsuario").ToString.ToEntero End If @@ -439,7 +439,7 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function Public Function ValidaUsuarioPortalCliente(CveCliente As Integer, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing @@ -467,7 +467,7 @@ Public Class ClsSisUsuarios 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero Retorno.CveCliente = CveCliente - Retorno.ClienteGPS = False + Retorno.ClienteGPS = False Retorno.Portal = True Retorno.Referencia = Data.Rows(0)("Referencia").ToString Retorno.EsSupervisorRH = If(Data.Rows(0)("EsSupervisorRH").ToString = "1", True, False) @@ -495,8 +495,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function ValidaUsuarioPortalProveedor(CveProveedor As Integer, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing @@ -524,7 +524,7 @@ Public Class ClsSisUsuarios 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero Retorno.CveProveedor = CveProveedor - Retorno.ClienteGPS = False + Retorno.ClienteGPS = False Retorno.Portal = True Retorno.Referencia = Data.Rows(0)("Referencia").ToString Retorno.EsSupervisorRH = If(Data.Rows(0)("EsSupervisorRH").ToString = "1", True, False) @@ -553,9 +553,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - - + End Function + + #Region "U S U A R I O - I N D I C A D O R E S" Public Function getUsuarioIndicadores(_CveUsuario As Integer, _CveEmpresa As Integer, _CveRol As Integer) As DataTable @@ -576,9 +576,9 @@ Public Class ClsSisUsuarios Return dTable - End Function + End Function #End Region - + #Region "U S U A R I O - E M P R E S A S " Public Function AddUsuariosEmpresas(CveUsuario As Integer, CveEmpresa As Integer, Optional CveUsuarioModifico As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -716,9 +716,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S" Public Function GetUsuarios(CveUsuario As Integer, Optional CveRol As Integer = -1, Optional CveUsuarioControlado As Integer = -1, Optional Estatus As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -731,9 +731,9 @@ Public Class ClsSisUsuarios .Add("@Usuario", SqlDbType.VarChar).Value = "-1" .Add("@Contraseña", SqlDbType.VarChar).Value = "-1" .Add("@EsLogIn", SqlDbType.Bit).Value = 0 - .Add("@Estatus", SqlDbType.Int).Value = Estatus - - + .Add("@Estatus", SqlDbType.Int).Value = Estatus + + End With Try @@ -825,7 +825,7 @@ Public Class ClsSisUsuarios Public Function AddUsuario(Usuario As String, Contraseña As String, Nombre As String, CveRol As Integer, Correo As String, CvePersonal As Integer, CveVendedor As Integer, CambiarContraseña As Boolean, CveUsuarioIng As Integer, CveEmpresa As Integer, CveSubProyecto As Integer, Optional Rol As String = "-1", Optional CveAlmacenAsignado As Integer = -1, Optional AsignarSubProyecto As Boolean = False, Optional AsignarOC As Boolean = False, - Optional CvePlataforma As Integer = -1, Optional CveClientePlataforma As Integer = -1, Optional CveProveedorPlataforma As Integer = -1, Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", + Optional CvePlataforma As Integer = -1, Optional CveClientePlataforma As Integer = -1, Optional CveProveedorPlataforma As Integer = -1, Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", Optional LimiteCreditoAutorizado As Decimal = 0, Optional PorcentajeMaximoAutorizacion As Decimal = 0, Optional DiasMaximoAutorizacion As Integer = 0) As Integer Dim Retorno = -1 DataAdapter("PA_Sis_UsuarioAdd") @@ -848,10 +848,10 @@ Public Class ClsSisUsuarios .Add("@DescuentoAutorizado", SqlDbType.Float).Value = DescuentoAutorizado .Add("@CodigoAcceso", SqlDbType.VarChar).Value = CodigoAcceso .Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado - .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion + .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion .Add("@DiasMaximoAutorizacion", SqlDbType.Int).Value = DiasMaximoAutorizacion - .Add("@CveUsuario", SqlDbType.Int).Direction = ParameterDirection.Output + .Add("@CveUsuario", SqlDbType.Int).Direction = ParameterDirection.Output End With Try @@ -970,8 +970,8 @@ Public Class ClsSisUsuarios .Add("@AsignarOC", SqlDbType.Bit).Value = AsignarOC .Add("@DescuentoAutorizado", SqlDbType.Float).Value = DescuentoAutorizado .Add("@CodigoAcceso", SqlDbType.VarChar).Value = CodigoAcceso - .Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado - .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion + .Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado + .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion .Add("@DiasMaximoAutorizacion", SqlDbType.Int).Value = DiasMaximoAutorizacion End With @@ -1061,16 +1061,18 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "B I T A C O R A D E U S A R I O S" - Public Function GetBitacora(CveUsuario As Integer) As Boolean + Public Function GetBitacora(CveUsuario As Integer, Optional FechaI As DateTime = ModExtensiones.MinFecha, Optional FechaF As DateTime = ModExtensiones.MaxFecha) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosBitacoraGet") With SqlAdapter.SelectCommand.Parameters .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@FechaI", SqlDbType.DateTime).Value = FechaI + .Add("@FechaF", SqlDbType.DateTime).Value = FechaF End With Try @@ -1105,14 +1107,14 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "R O L E S" - - ''' - ''' Consulta para generar las opciones del MENU, Modulos que tiene un ususario - ''' + + ''' + ''' Consulta para generar las opciones del MENU, Modulos que tiene un ususario + ''' Public Function GetUsuariosRolesModulos(ByVal pCveUsuario As Integer, CveEmpresa As Integer) As DataTable DataAdapter("PA_Sis_UsuariosRolesModulosGet") @@ -1144,9 +1146,9 @@ Public Class ClsSisUsuarios End Try Return Data - End Function + End Function #End Region - + #Region "U S U A R I O S - M O D U L O S" Public Function GetUsuariosModulos(CveUsuario As Integer, CveEmpresa As Integer, Optional CveUsuarioActual As Integer = -1, Optional CvePlataforma As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1235,9 +1237,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S - D I S P O S I T I V O S" Public Function UpdateUsuariosDispositivos(CveUsuario As Integer, CveDispositivo As Integer, Permitir As Boolean) As Boolean Dim Retorno As Boolean = False @@ -1262,9 +1264,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S - C O M A N D O S" Public Function UpdateUsuariosComandos(CveUsuario As Integer, CveUsuarioAsigno As Integer, CveComando As Integer, Permitir As Boolean, EsFavorito As Boolean) As Boolean Dim Retorno As Boolean = False @@ -1291,10 +1293,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - - + + #Region "U S U A R I O S - P R O C E S O S " Public Function GetUsuariosProcesos(CveUsuario As Integer, Optional CveUsuarioActual As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1382,11 +1384,11 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S - P O R T AL " - + Public Function GetUsuariosPortal(pCveUsuarioPortal As Integer, pCveCliente As Integer, pCveProveedor As Integer) As Boolean Dim Retorno As Boolean = False @@ -1488,12 +1490,12 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - - + End Function + + #End Region - - + + #Region " S U B - P R O Y E C T O S " Public Function GetSubProyectos(CveUsuario As Integer, Optional CveSubProyecto As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1576,10 +1578,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " E S T A T U S O C " Public Function GetEstatusOC(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -1656,8 +1658,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region #Region "C L A S I F I C A C I O N E S" Public Function AddUsuariosClasificaciones(CveUsuario As Integer, CveClasificacion As Integer, CveUsuarioIng As Integer, CveUsuarioModifico As Integer) As Boolean @@ -1721,8 +1723,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region #Region " A L M A C E N " Public Function GetAlmacen(CveUsuario As Integer, CveEmpresa As Integer) As Boolean @@ -1805,9 +1807,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + Private Function GeneraMenu(CveUsuario As Integer, dtMenu As DataTable, Optional CvePlataforma As Integer = 1) As Boolean Dim Retorno As Boolean = False dtMenu.TableName = "UsuariosModulos" @@ -1836,10 +1838,10 @@ Public Class ClsSisUsuarios Return Retorno - End Function - - - + End Function + + + #Region " CLONAR USUARIOS " Public Function ClonarUsuario(CveUsuario As Integer, CveUsuarioClonado As Integer, UsuariosEmpresas As Boolean, UsuariosModulos As Boolean, UsuariosProcesos As Boolean, UsuariosSubProyectos As Boolean, UsuariosAlmacenes As Boolean, UsuariosOC As Boolean, UsuariosOS As Boolean) As Boolean Dim Retorno As Boolean = False @@ -1884,12 +1886,12 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - - + + #Region " RESTRICCIONES ACCESO " - + Public Function UsuariosRestriccionesAccesoAdd(CveUsuario As Integer, IP As String, MAC As String, HI1 As String, HF1 As String, HI2 As String, HF2 As String, HI3 As String, HF3 As String, HI4 As String, HF4 As String, HI5 As String, HF5 As String, HI6 As String, HF6 As String, HI7 As String, HF7 As String, Optional CveUsuarioModifico As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -2016,10 +2018,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - - + + #Region "ACTUALIZAR USUARIO RESPONSABLE MASIVAMENTE" Public Function UpdateUsuarioResponsableMasivo(CveUsuario As Integer, CveUsuarioResponsable As Integer) As Boolean Dim Retorno As Boolean = False @@ -2035,13 +2037,13 @@ Public Class ClsSisUsuarios OnError("Ocurrio un error al actualizar el Usuario Responsable.", ex) End Try Return Retorno - End Function - + End Function + #End Region - - + + #Region " ASIGNAR " - + #Region " ALMACEN ASIGNAR " Public Function GetAlmacenAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2098,9 +2100,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region " SUBPROYECTOS ASIGNAR " Public Function GetSubProyectosAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2157,10 +2159,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " CUENTAS BANCARIAS " Public Function GetCuentasBancariasAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2217,10 +2219,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " MODULOS " Public Function GetModulosAsignar(CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2278,10 +2280,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " PERMISOS " Public Function GetPermisosAsignar(CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2338,10 +2340,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " EMPRESAS " Public Function GetEmpresasAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2398,10 +2400,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " ROLES " Public Function GetRolesAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2458,10 +2460,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " PERMISOS " Public Function GetIndicadoresAsignar(CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2518,12 +2520,12 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #End Region - + Public Function GetClienteGPSRolesModulos(ByVal pCveUsuario As Integer, CveCliente As Integer) As DataTable DataAdapter("PA_Sis_ClienteGPSRolesModulosGet") @@ -2539,11 +2541,11 @@ Public Class ClsSisUsuarios End Try Return Data - End Function - - + End Function + + #Region "U S U A R I O S - GPS " - + Public Function ValidaUsuarioGPS(Clave As String, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing @@ -2825,8 +2827,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function GetUsuarioCliente(CveUsuario As Integer, CveCliente As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosClienteGet") @@ -2849,8 +2851,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function AddUsuarioProveedor(CveUsuario As Integer, CveProveedor As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosProveedoresAdd") @@ -2873,7 +2875,7 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function Public Function GetUsuarioProveedor(CveUsuario As Integer, CveProveedor As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosProveedorGet") @@ -2896,13 +2898,13 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - - + + #Region "U S U A R I O S - PyME" - + Public Function AddUsuariosModulosPyMe(CveUsuario As Integer, Rol As String) As Boolean Dim Retorno As Boolean = False @@ -2941,22 +2943,22 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - - + End Function + + #End Region - + #Region "IDisposable Support" Protected Overridable Sub Dispose(disposing As Boolean) If Not Me.disposedValue Then - If disposing Then - - - If Not Data Is Nothing Then Data.Dispose() : Data = Nothing - If Not SqlAdapter Is Nothing Then SqlAdapter.Dispose() : SqlAdapter = Nothing - If Not SqlCommand Is Nothing Then SqlCommand.Dispose() : SqlCommand = Nothing - If Not SqlTransacc Is Nothing Then SqlTransacc.Dispose() : SqlTransacc = Nothing - If SqlConexion.State <> ConnectionState.Closed Then SqlConexion.Close() + If disposing Then + + + If Not Data Is Nothing Then Data.Dispose() : Data = Nothing + If Not SqlAdapter Is Nothing Then SqlAdapter.Dispose() : SqlAdapter = Nothing + If Not SqlCommand Is Nothing Then SqlCommand.Dispose() : SqlCommand = Nothing + If Not SqlTransacc Is Nothing Then SqlTransacc.Dispose() : SqlTransacc = Nothing + If SqlConexion.State <> ConnectionState.Closed Then SqlConexion.Close() If Not SqlConexion Is Nothing Then SqlConexion.Dispose() : SqlConexion = Nothing End If @@ -2967,9 +2969,9 @@ Public Class ClsSisUsuarios ConexionClose() Dispose(True) GC.SuppressFinalize(Me) - End Sub + End Sub #End Region - + End Class diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index abe6d4e94..0ca7bf273 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -4960,18 +4960,23 @@ Public Class Timbrado ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Estado, ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Pais, ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.CP) - cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP) + + If ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario IsNot Nothing Then + cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP) + End If + + 'MERCANCIAS If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias diff --git a/App_Code/modExtensiones.vb b/App_Code/modExtensiones.vb index 38687b3e8..0f178b373 100644 --- a/App_Code/modExtensiones.vb +++ b/App_Code/modExtensiones.vb @@ -1004,11 +1004,11 @@ Namespace Extensiones '**********Une la parte entera y la parte decimal************* If dec <> "" Then - palabras.AppendFormat("{0} {1} /100 {2}", Moneda, dec, AbrevMoneda) + palabras.AppendFormat("{0} {1}/100 {2}", Moneda, dec, AbrevMoneda) Retorno = palabras.ToString Else - palabras.AppendFormat("{0} {1} /100 {2}", Moneda, dec, AbrevMoneda) + palabras.AppendFormat("{0} {1}/100 {2}", Moneda, dec, AbrevMoneda) Retorno = palabras.ToString End If diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index ab47bc026..0fce0f8df 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -505,7 +505,7 @@
F. Captura
- +
@@ -5925,12 +5925,9 @@ if (!isNaN(txtComision.value)) { txtComisionImporte = ToDouble(txtComision.value); } - } - - - - var txtvalue = ToDouble(txt.value); + } + var txtvalue = ToDouble(txt.value); if (txtComisionImporte != 0 && txtComisionImporte > txtvalue) { @@ -5941,7 +5938,7 @@ return; } - + debugger; if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { txtvalue = ToDouble(txtvalue / TCAnticipo); } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { @@ -5949,7 +5946,7 @@ } var SaldoCompra = (TotalSaldo - FnSumaValoresAnt() + ToDouble(txtvalue)).toFixed(2); // le agrego lo del valor actual para validarlo //parseFloat(parseFloat($get('HdnCompraSaldo').value).toFixed(2)); - + alert(txtvalue); if (SaldoCompra < 0) txt.value = SaldoCompra - txtvalue; //minimo entre saldocompra y el saldoanticipo if (SaldoCompra < saldo) saldo = SaldoCompra; diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index d7a183627..6ff2b3fef 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -2642,6 +2642,7 @@ Partial Class Compras_Compras TxtObsFact.Text = dr("Observaciones").ToString LblUsuarioCaptura.Text = dr("Usuario").ToString LitFechCaptura.Text = dr("FechaIng").ToString.ToDate.ToShortDateString + LitFechCaptura.ToolTip = dr("FechaIng").ToString LblRetIVA.Text = Math.Round((dr("RetIVA").ToString.ToDouble / TxtSubTotal2.Text.ToDouble) * 100, 4).FormatoNumero(3) + "%" LblRetISR.Text = Math.Round((dr("RetISR").ToString.ToDouble / TxtSubTotal2.Text.ToDouble) * 100, 4).FormatoNumero(3) If dr("TipoFactura").ToString <> "CFDi" Then LblTipoFact.Text = dr("TipoFactura").ToString : divTipoFactura.Visible = True @@ -4774,7 +4775,7 @@ Partial Class Compras_Compras 'End If 'METODO DE PREPOLIZA DE ALMACEN - If UsuarioActual.CveEmpresa.Contiene(1, 119, 72, 80, 140, 141, 145, 152, 153, 154, 158, 159, 160, 161, 162, 163) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then + If UsuarioActual.CveEmpresa.Contiene(1, 119, 72, 80, 140, 141, 145, 152, 153, 154, 158, 159, 160, 161, 162, 163, 172, 173) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then Dim ImporteAlmacen = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveTipoPS = 2").ToString.ToDecimal If ImporteAlmacen > 0 Then If Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then diff --git a/Compras/Proveedores.aspx b/Compras/Proveedores.aspx index dad72b1e8..373264917 100644 --- a/Compras/Proveedores.aspx +++ b/Compras/Proveedores.aspx @@ -3101,7 +3101,7 @@ - + Archivo diff --git a/Compras/RepCxP.aspx.vb b/Compras/RepCxP.aspx.vb index 9a3504bbc..cc90a744c 100644 --- a/Compras/RepCxP.aspx.vb +++ b/Compras/RepCxP.aspx.vb @@ -163,7 +163,7 @@ Partial Class Compras_RepCxP If lItem.Value.ToEntero = 9 Then lItem.Text = LblSubProyectofiltro.Text & "-Sucursal" End If - Next + Next End Sub @@ -1426,7 +1426,24 @@ Partial Class Compras_RepCxP TCEspecifico = -1 End If - Dim Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") + Dim Proyecto = "" + Dim Sucursal = "" + + Select Case UsuarioActual.Empresa.Tipo_CentroCosto + Case 1 + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Centro de costo: {DdlSubProyecto.SelectedItem.Text}") + Case 2 + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") + Case 3 + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlSubProyecto.SelectedItem.Text}") + Case 4 + Proyecto = If(DdlProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlProyecto.SelectedItem.Text}") + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sub Proyecto: {DdlSubProyecto.SelectedItem.Text}") + Case 5 + Proyecto = If(DdlProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlProyecto.SelectedItem.Text}") + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") + End Select + Dim Proveedor = If(DdlProveedor.SelectedValue = "-1", "", $" Proveedor: {DdlProveedor.SelectedText}") Dim Clasificacion = If(DdlProveedoresClasificaciones.SelectedValue = "-1", "", $" Clasificación: {DdlProveedoresClasificaciones.SelectedItem.Text}") Dim Grupo = If(DdlGrupo.SelectedValue = "-1", "", $" Grupo: {DdlGrupo.SelectedItem.Text}") @@ -1465,7 +1482,7 @@ Partial Class Compras_RepCxP params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) params.Add(New ReportParameter("Grupo", DdlGrupo.SelectedItem.Text)) - params.Add(New ReportParameter("AgrupadoPor", $"{Grupo}{Proveedor}{Clasificacion}{FechaIn}{FechaFn}{Registro}{Responsable}{Sucursal}{TipoMoneda}{FVI}{FVF}")) + params.Add(New ReportParameter("AgrupadoPor", $"{Grupo}{Proveedor}{Clasificacion}{FechaIn}{FechaFn}{Registro}{Responsable}{Proyecto}{Sucursal}{TipoMoneda}{FVI}{FVF}")) params.Add(New ReportParameter("CantColumnas", CantidadColumnas)) If Imagen.Exists Then @@ -1531,23 +1548,34 @@ Partial Class Compras_RepCxP UpPersonalizarRango.Update() End Sub - Protected Sub LnkEliminar_Click(sender As Object, e As EventArgs) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) - DtPersonalizarRango.Rows.RemoveAt(gvRow.RowIndex) DtPersonalizarRango.AcceptChanges() CargaGv() End Sub + Protected Sub LnkEliminar_Click(sender As Object, e As EventArgs) + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + DtPersonalizarRango.Rows.RemoveAt(gvRow.RowIndex) + DtPersonalizarRango.AcceptChanges() + CargaGv() + End Sub - Protected Sub LnkEditar_Click(sender As Object, e As EventArgs) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + Protected Sub LnkEditar_Click(sender As Object, e As EventArgs) + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) Index = gvRow.RowIndex Modalidad = "U" - DdlTipo.SelectedValueExist(gvRow.DataKey("Tipo")) TxtRI.Text = gvRow.DataKey("RangoInicial") TxtRF.Text = gvRow.DataKey("RangoFinal") If Not TxtRF.Text.ToDouble > 0 Then + DdlTipo.SelectedValueExist(gvRow.DataKey("Tipo")) + TxtRI.Text = gvRow.DataKey("RangoInicial") + TxtRF.Text = gvRow.DataKey("RangoFinal") + If Not TxtRF.Text.ToDouble > 0 Then ChkMayor.Checked = True TxtRF.Enabled = False Else ChkMayor.Checked = False End If - RegistraScript("$('#DivPersonalizarRangoEditar').modal()") UpPersonalizarRangoEditar.Update() End Sub + RegistraScript("$('#DivPersonalizarRangoEditar').modal()") + UpPersonalizarRangoEditar.Update() + End Sub Private Sub LimpiaPersonalizarColumna() DdlTipo.SelectedIndex = 0 - TxtRI.Text = "" TxtRF.Text = "" + TxtRI.Text = "" + TxtRF.Text = "" ChkMayor.Checked = False SoloNumeros2.Enabled = True TxtRF.Enabled = True @@ -1670,7 +1698,8 @@ Partial Class Compras_RepCxP Protected Sub BtnAgregarRango_Click(sender As Object, e As EventArgs) Modalidad = "A" LimpiaPersonalizarColumna() - RegistraScript("$('#DivPersonalizarRangoEditar').modal()") UpPersonalizarRangoEditar.Update() + RegistraScript("$('#DivPersonalizarRangoEditar').modal()") + UpPersonalizarRangoEditar.Update() End Sub Protected Sub BtnPersonalizarRango_Click(sender As Object, e As EventArgs) diff --git a/Contabilidad/DiarioPagos.aspx.vb b/Contabilidad/DiarioPagos.aspx.vb index 54ffcf3c7..ec96f64eb 100644 --- a/Contabilidad/DiarioPagos.aspx.vb +++ b/Contabilidad/DiarioPagos.aspx.vb @@ -599,7 +599,7 @@ Partial Class Contabilidad_DiarioPagos Select Case UsuarioActual.CveEmpresa - Case 13 + Case 13, 83 Select Case gvr.DataKey("CveTipoTransaccion") Case "1" 'cheque Folio = gvr.DataKey("Folio") @@ -791,7 +791,7 @@ Partial Class Contabilidad_DiarioPagos End If 'registro los movimientos en proveedores, cuando es de contado que toque - If UsuarioActual.CveEmpresa = 13 AndAlso Not EsContabilizada AndAlso Opcion = 1 AndAlso Math.Abs(CargoProveedor) <= 1 AndAlso Math.Abs(AbonoProveedor) <= 1 Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) AndAlso Not EsContabilizada AndAlso Opcion = 1 AndAlso Math.Abs(CargoProveedor) <= 1 AndAlso Math.Abs(AbonoProveedor) <= 1 Then CargoProveedor += CompraPagadoTotal AbonoProveedor += CompraPagadoTotal End If @@ -835,7 +835,7 @@ Partial Class Contabilidad_DiarioPagos End If Dim ttTipoCambioPago As Double = TipoCambioPago - If UsuarioActual.CveEmpresa = 13 Then ttTipoCambioPago = TipoCambioCompra + If UsuarioActual.CveEmpresa.Contiene(13, 83) Then ttTipoCambioPago = TipoCambioCompra If IVAAcreditable > 0 Then 'iva Acreditable @@ -927,8 +927,7 @@ Partial Class Contabilidad_DiarioPagos If SimplificaRetIVA = False Then CompraRetIVA = CompraPagadoRetIVA 'no registra la retencion de iva al pagar - If UsuarioActual.CveEmpresa = 13 Then IdCuentaRetIVACirculacion = 0 - + If UsuarioActual.CveEmpresa.Contiene(13, 83) Then IdCuentaRetIVACirculacion = 0 ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, TipoCambioFechaCompra), ConceptoDetalle) If CompraRetIVA > 0 AndAlso IdCuentaRetIVACirculacion > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, IdCuentaRetIVACirculacion, False, CompraPagadoRetIVA * TipoCambioFechaCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraRetIVA, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For diff --git a/Contabilidad/PlantillasPolizasDetalle.aspx.vb b/Contabilidad/PlantillasPolizasDetalle.aspx.vb index ec1b8e94a..2b79f5b48 100644 --- a/Contabilidad/PlantillasPolizasDetalle.aspx.vb +++ b/Contabilidad/PlantillasPolizasDetalle.aspx.vb @@ -61,7 +61,7 @@ Partial Class Contabilidad_PlantillasPolizasDetalle ObjPlantillaPolizasTipo.Dispose() Dim dt As DataTable = Nothing - If UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.TipoContabilidad = 2 Then Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) If Conta.GetCuentas(-1, "-1", 1) Then @@ -257,13 +257,12 @@ Partial Class Contabilidad_PlantillasPolizasDetalle DdlPorcentajeImpuesto.SelectedValue.ToDecimal, CveCuenta:=DdlCuentas.SelectedValue.ToEntero) Then TxtOrden.Text = "" If Not ChkSeguirAgregando.Checked Then - updatatos() Alert("El nuevo Registro se guardó correctamente.", TipoMensaje.MsgInformacion) Else RegistraScript(String.Format("$('#{0}').modal();", "divAgregarSucursal")) UpModal.Update() End If - + updatatos() Else ErrorDetalle = True End If diff --git a/Contabilidad/PopUpAuxiliar.aspx.vb b/Contabilidad/PopUpAuxiliar.aspx.vb index 153b14da1..7817aaf45 100644 --- a/Contabilidad/PopUpAuxiliar.aspx.vb +++ b/Contabilidad/PopUpAuxiliar.aspx.vb @@ -210,7 +210,7 @@ Partial Class PopUpAuxiliar e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) End If - If e.Row.DBCampo("CveConceptoContable").Contiene("91", "251", "301") Then 'desaplicar NC + If e.Row.DBCampo("CveConceptoContable").Contiene("91", "294", "251", "301") Then 'desaplicar NC e.Row.FCLinkButton("LnkDesAplicar").Visible = True e.Row.FCLinkButton("imgD").Visible = False diff --git a/Contabilidad2/CatCuentasAsignaciones.aspx b/Contabilidad2/CatCuentasAsignaciones.aspx index 2c8963058..59e0d8c68 100644 --- a/Contabilidad2/CatCuentasAsignaciones.aspx +++ b/Contabilidad2/CatCuentasAsignaciones.aspx @@ -60,7 +60,7 @@
- +
@@ -134,11 +134,11 @@
- +
- +
@@ -147,7 +147,7 @@
- +
@@ -165,11 +165,11 @@
- +
- +
@@ -178,11 +178,11 @@
- +
- +
@@ -249,7 +249,7 @@
- +
diff --git a/Contabilidad2/RepAnexoCatalogo.aspx b/Contabilidad2/RepAnexoCatalogo.aspx index 791b10d69..103b2fbd3 100644 --- a/Contabilidad2/RepAnexoCatalogo.aspx +++ b/Contabilidad2/RepAnexoCatalogo.aspx @@ -49,18 +49,7 @@
-
- Tipo Movto -
-
- - - - - - - -
+
Fecha Inicio:
@@ -100,6 +89,18 @@
>
+
+ Tipo Movto +
+
+ + + + + + + +
Tipo
diff --git a/Empresas/141/Formatos/Cotizacion.rdlc b/Empresas/141/Formatos/Cotizacion.rdlc index 5687faf52..41f929b25 100644 --- a/Empresas/141/Formatos/Cotizacion.rdlc +++ b/Empresas/141/Formatos/Cotizacion.rdlc @@ -2808,7 +2808,15 @@ 15.93202cm - + + + Embedded + wmc2 + + 21.16666cm @@ -3525,8 +3533,6 @@ String - true - true ReportParameter1 @@ -3739,6 +3745,71 @@ kw04jeTN9mSHt75hjwr1e+/o5W4kjQR4u3XCiH2feFfN/+qjp8XG/Czo4tF6yzQacHcX99sS7pswYF4Y rmIcXIrb1g1O2+CwGDx+2Wv+V4R9FjTs4GmBAfFS5DtFGZqMB9+FAfcPD4UObxUwQOw9+meb30Lqp2KEtfWE4W5DqOf2ExHG/dCt0E3QzYMQvN0u4wjSemg6BrItglw/0OAyHtyPCFcq6cD1Rp73w90e0K+gU3iuhgpJjxH+jHvMx3qQcA/j3Yg86IbDxIRzILwfbeJZJ9NV/rifyfNXcZ+T7ROJyQaVbUMq9D1NcwRqyuLzYxnSSCQSEwMaxNfSkM7oNf8reld+oTEQ3vpG8D+z1/wvjTN0wR+ajp7h+yroiNvaGnoNCPg/BP0svAzBoTLcOBR5t+66/dbJ7xoL3O/eFE947ImMjXsY1kndphuNJa+DkEcMoTN/idwLRrAV4Lss7/9AGjzkNhMOFbalh+Fq0JYeMtNd3spV3BhX9bLf4/25XHcijBdFkD2hAYafQ0mTVgPMMIK/JwL8Ed7rhvdEIjGZUIFR8c7orviFYujxL1Te/BtKJOYhqI9b05DO0QiysW4itzLAzafDy0Cgnn8SPfCwRkET7/IeOXYLL0PYudN5Ku83dq8sDcRuv5IGCbLdi7uPh7dhcLiM73votk2GQhqaYTTsg8yLBQvj8Cx4nO8QYJsc4yVl03girC0j2GFQVxLH7ZHrRGS5WSPMnfSVt994mcemlzoZuhI+x8JzR2iVCKYvmKbI4+rKR9Tx+K9IY0y5NP54duTD7TB2Is0mbJVnIpEYBVS+7angc1QopXIWspJSMe/he550n0jMY9BA7gxdTJ28lOsIop5Oo85eMLPTeWN4GQjw2GQWl26+hQh3OtfToHeHlyE4fMl7e8mnI0ejf3TMZVxP4vty4W0E+LYkuudEwnIX/0Y+hYwvV4fLNoeqnqgZj+/ifzLxUNZGf+MlDJnpGF8nkNZvqoRugdtlkBcesbQrbg/gegL+HWb8VzfPoEv45vCuk/WP5Ppz3u0Mj/dhmP13sB0Y8HorfK7VONew0+hyVAP+ t5DOJ3DVsBt1ODORSEwgUCLLQ5f7J0QFHEZU2jJfY49+Vh0lEonJBXXyNdRNt21Yq4XWxs0b7QUKLwPhsk5nKfyu28C3IgyBt8P/DU364NFOZyHlm4abJr8S/t+hcXhKp7NAeGsEMiwNrYnR0sinTqYH9A5kqnaE535RDJ/VlLXJ/UQQYbwd+VZye4lK4D5BfF5gGuN/te64+Wyckfu17jKPm2eHt3HjMdKbMDaB9/4aXOSTvWk/IrxP5o72icQ8gEqQSuiqxsa5EvaIUWlnolAnbJl2IpFIJOYdMMKehxGWP9SJxLwEf0F2S9/Y1vuFYfYI95tjqA2bZJpIJBKJRCKRGAMu73SehXF1tEYWNML4cuI9xtnRGGd52HYikUgkEonERACja2MMrMbzxq55nNzjZrVwnkgkEolEIpEYD1yZg/F1pj1f9nbVja/S+8X1+/aShZdEIpFIJBKJxFjxWKfzVAyvrez96t52QoPMPWowvs7j/sXhJZFIJBKJRCIxHrh7NcbWvhhgD7vFhBv/uSeMG/7Z84XhNZ3vq4fzRCKRSCQSicR4oQGG8XWQuy1f1ek8gLFVNhQ8hutvZ3Y6bw2niUQikUgkEomJgMeFYHitj+F1BIbYt9LgSiQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEYtLQ6fx/uM6PpN5jBU0AAAAASUVORK5CYII= + + image/png + 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 +ynCm6XsvzXiEGaBtOt9q7DR9j/pKIt+LeubPRWk+zZIehaFAJ+h4c0q5HnANjpcyyz1WDxpvE+l2R5g1gVrloF260ef7SecJkmLQWFTVIvge/q+Y8kpkFUMGaJMutDPW2nNQBTQdulIMGg+pexczegEzQHt0QQwvKDdMShIwh24qkqf4Vsrym8weL5u8bgAadEOMSudIx2ShwcjEoyIV8Cpl72JGTjBkgLboihheND+OmtSSZZZzoDjAlLL8JrOme/2+gj6nS2LIYP4xqiVbS54KXixt+U0HNWhBW3RLDC8u/xqVBWS0EC7kmbL8JiN/IQZoh66J4QXmw5jR0ylV8pT8645m276KXMsQA7RD98SobFqv6tXqCN3wR+8Ua/Bb7d7FzJ7s9RsL+ptuihGuSqtthip5Si5bVnUf3Doj371+Z0Ff01UxKqf6ZgzX4OHkKfm3M83exU7xo9fvLOhruixGyrVBqxqq5Cku3mf19sELid1eAYih22J44XmnvTYIDBpLX4o1+K5O9q5TeO/1Owv6mq6LkW5t4FeDDl8p1uDXxeRlizP81et3FvQ1vyBGmrVBwAzH2uLhQeNjOnEEQrYUaI/fEKOyNpgzWoNHJE+tJVXSsWZ7/caC/uZ3xPCC+cAxenCr6F1Rrb0W+1NkA2tv0A6/JIYXpo8TaQ9WVGLcJfMfYTP+xprByDHEAO3wW2JU2uNtGq7Bi+fhQWMndtHioCICaIvfE6NysGLIbA1O10qhQI/rbIa1N2iTXxTD4GBFc2o0Fqg8xcWf6AU4I9sYMEBb/KoYBgcr6qFuW1ul1hQRLtZjnkzZDxADtMXvipH6YEXTDDloXDWLzpbFRzGyezKz5nr9toJ+55fFaCd5yqbLr/UStKI0HT3wMHqJAQO0x6+Lke5ghX/QoGy7ljT7NB7jhTXT63cV9D2/L0Y7yVMuKaxfvbxcr8fVIGEW6jqDdumFGObJU96TW+q6NK5wNCPr8AK0S0/EME+e +cis9WGN7FNsjP71+U0H/0yMxzJOnErFuMWCAtumVGObJUwkDCtmHF6B9eiZGG8lTsV6s9PodBQNBD8Xw7uyXRslT0V5QnMMAHaGXYlSSpxbN1uARXkyWMJECnaC3YpgnT6m9mPiGF6Aj9FiMSvLUVGcGDUanfuAF6Ay9FqN6UNWo+nPQCzJfhhegQ/ReDC+Y78fbHTSYt+ENL0CnyIAYlQe323ZbKw3mWAfwAnSOTIhRKVc40cagwazCVa//HcBAkQ0xPDX4rmmKiJxGTaPpPegoWRHDi+unWbNuGra1jWkU6CyZEaPaTWM49XxKDhejN/ACdJgMieEF9/eWQ1MlFjLL2sTuBeg4WRKjosbzomVpq8FsMn2H4QJ0nmyJUYnxmxmqpwZzyMgJtADdIGtiVArkXEwlq8HkaDF88AMvQFfInBjVSL+YsWjMCVb5FUrHD6EF6BYZFKMa7bfLLrFVbjD5OYuwxUsOLUDXyKQY1Yh/3Zu0ieWwKm7t/x2bUjZ3+CagBegiGRWjutbgD3uzRYsQalm2bVsWJcQqTG6cvQsRbHUMQEfJrBj10P+8O95enp2aGJ+YmlvePr59b/kaAN0iw2KI1vjnrR/2+mWBwSfbYnjwphMtHwLQVbIvBgA9AGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABi +AKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoOD/AzsaINq0C5nlAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTExLTA1VDE2OjI5OjUyKzAwOjAwrPx6lwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0xMS0wNVQxNjoyOTo1MiswMDowMN2hwisAAAAASUVORK5CYII= + + + image/png + iVBORw0KGgoAAAANSUhEUgAAAxgAAANSCAAAAADD1TeyAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfmCwkALSVtP6IMAABh0ElEQVR42u29Z1dbyxKtXbMViAaDbZxzJjiHffa5P+7+t/eeHZ0JtnHOAXAgGVbo+X5YQii0whISKNRzxvDYB6RGxj1XV3d1zQJFUZRCzE5/AEVpRlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQY +iuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuJAhaEoDlQYiuIgudMfQGl/KIKd/gxxAXf6EyjtC2VDFRlttI4+VBhKg6BIgRKKv9K8qDCUhkARgUiwuvJrLbBIpnv7+lLZLzc/usdQGgAhAvHmvy6uBRtfS3QP7t+XFEbfbXZ0xVDqDkGBrLz9sioJE+0wIEIbovfQ0W6hoPmlocJQ6g1BwfrL936iKBlgw+5jx1OtoAwVhlJnCEI+zP5KGhZOfwJh2H/6cAssGioMpb4QhD/zIZGga+oTCMOR87uaXhkqDKXOWLP0cDHNUvOekCB56qRpcmmoMJR6Qliz8MBP2tKHshQwGL442NzKUGEodYSwZu4+ExblXwU/ceZUU+80VBhK/SCIhbtVTHeCwb7RviZWhgpDqRsEsfx3YKqY7AT89IXD0RFWM6LCUOoHJfx7MWWrmuo0Njx6IWnRnNJQYSj1giCevOiqThcihPiD4826B1dhKHWDsvhXjMo3AkHiwtHmDKe0gk+pFxS8sFL9kxZiE5ycCmElxru2CRWGUjewOJeMdakcROrt30tG2HSRiwpDqRMU+RjGnOCgpH/+/QFoOmWoMJS6YReqOanNA2KT9uFMCIvmCqdUGEq9wOpqDdMJROr1P8uGzbVoqDCUesGVoJbTJVDSP/7+ +hObaaKgwlK1CIYVCrFWbwsgHYlPBgycEwaaRhgpD2SIEM5vnmhYMERFYk3zx7yps8+TVVBjK1iCIwAexlWQEKF3f/vrSROe2KgxlSxDE+r9/r8KKJLegDLEp/96sNE04pcJQtgJhsfrvj+W/vxkyvZXHPaxJPrvzq1nCKRWGUjsUWLP4z1Iq4d35mJDexFYGA6Vr/q+5JgmnVBhKzRC0ZuHftZSlkYcv0Juym9/L+bNKIDbl3X3eHGlwFYZSKwRpPt8NEhYgkk+n0rvDDUEQDPwwblQEaxKzd9eb4VZhE2hTaU0ICt5Nm+jSOIG1I/3Pkplvid81lFz9aZMx/TgJeH3je3a+SEOFodQGQcGL2ezMJyRMhxmRSHD4TK/Iwov5RMLGc3GmCeXsqR0v0lBhKDVBUPD4VSpnRSCyD/rgzNmoJca7Z2ulLaZKjSz+wbH0Dte8qjCUWiAIO/UuXRgpZXRx4GrmdghWn3xOxpzhBLz+iaGdDadUGEoNEETw8EupxSC8NSSI7j4ZeTMbpOItGhQTmHMndjSc0lMpJT4EsX7nS9qWmLhIihACEUMev73bi/cABmxCZh76O3k6pSuGEhvCmpV7y6V9cvzzp63J7MNJE86+Nol4N28JeAPju3cunFJhKDEhSPPz3loZ/yji5u6MMqJ46NOMV0s4deHYjoVTKgwlHgRp5h8EyXK6sKnrgxvHSgQFK5ML6dgpDQZHL+6UI5sKQ4kFQZpPkyxb3U3Y5NXhrDJEaOzT14kaTqcGJwZ2JpxSYShxICh489hUmKuExcTB7JQmKPg449cQTiUuHtmRcEqF0fHE6TBMUPB8NlUxKiIYnjudndIEBUuTPyq/sWiY4PiFxA6EUyqMDifqsFrltCMomHldzfQmxD8ylrCGsnk69eRN/GSf+EMT/dsfTqkwOhuCguW+6qYdQdjJ911VBUQEvKFLfdmHPUHI+8dhMt7dKQJ+avTQtitDhdHRRFuGuetVBVME4T+Y +q/buE8X4XeMj+RuNxcmf8e9OMTxx3kRL27ahwuhkCApeTx67XM2cI4i1+9/T1T/xaUKezdto0AQz72sIp7y9433bu9FQYXQwBAVPX/LExSpXjOX7y1W2hdl4h/gHxrryw6m3T2wN4VR67MC2hlN6V6pzIQiZep6WZFWPR8r6ncV0rJsdoKQ///UtW8YNgjx2q88z8e5OiU0F959uq4WICqNjIYjw/psuMlnleW1qtG/dxLrWB7HpX/++ypZxgxC7+7dDXsyy7siRbTstRDSU6lQIwru/kKb448dsVQ9I4tf01/ipCPEPjabzw6nXT1lDONU9NrJt4ZQKo0MhrFm9t5i2kODyoarOXwUEn71EDRdld40P5Z9OfZtajn06ZUKePoNtOp1SYXQq1ize+5WyEAlu7KvyABYUfJler+Wi7Pnj+adT3tTnWtaekfHu7TmdUmF0IgRpvt33oxuy4e2h6jPfNKtT87Xc7DhyMZUfTr2crWXt6R3fuy3hlAqjA4kMoR5t3JC1/xmodqJRQNjZVzXVHU0M5odT81OrtYRTOZmRBqLC6DzyDaGE5j991c8zgoLa6o5yWxcTpFmbqmkrf2B8GyxEVBgdR5EhVPL37hizLFN39K2WcOrYheRmkQYIefailnCqf3y44eGUCqPTICh48nJzXtvu31NxJhkh1tgnb+LXHYm/e2JXfjj1dXqthrUH5xtuIaLC6DCKDaHCvv/GbLZKEPLhcey6I8BPXTycH079mqxpK39oLNXYcEqF0VlEhlCfc2+OhwO/x80MbKHuKDx+wVgjm+EUZ1/WspXfNdFYCxEVRkdBEOv3v+XdkA323Ky+hG9zHJrw8dta6o6Gx/tzz20Fn6drshDJyYw0ABVGJ+E0hAr2X40tjEw49e5JLXVH6dG8anCaGrfyR0YbaCGiwugoiGJDKP/IpVouWRAU/JxcrCEVYU+ey9YdRZmRGi1Exgdj6ql6VBgdBEUWigyh4J0YtahhehGk +8R/XVnc00ZsfTtVmIZI8f8g06OKUXjvvKIJHDqO0irfO6ayCgIhh6tKYhCZWlURh62IQwkO/1WBwmwwnlxr1m1JhdBTJAUfskSz1apIkrd34o1AgIMjjNdUd+fc3WxeDENt/67gfr0iDCHF9d6N+UyqMDgLEPls4+Sgp12szKgBgIgBACtQR1R3dPhTzYS+wJvF8s3UxRAwTY5cQZ+2hCZPX97OWILC631VjxlWaEWL5z6IVI7hysPBrFJFoyvlra+t+SCRS6XRXOiEi0U4gt40S5NUsk7FTEX73+L7aLURo/J5rA9UVWNWCCqOToMjfPwqbcReVY0SRv8jqjx9Lv7yQ0eSHSaZ7dg0O9my+IHo1KPg2uVLLRdkzZwosRB6/q3IrT+MNXOu1MVP2MVBhdBTWPJ8t9DPIL8fYmPSLXxeWPIEBIglQhLREemDfSG+eNAjSrE/XVHe0f7wmCxEC3p6r6UZel1JhdBIUWfzLFH7tt5xyjCjkX//8aTEwBkWzA2TI9N6jeyT3PgZByItntVyUzW1dTFDwY3Kp4tpDYP3g5URDrxGqMDoKCv9cyo+lcssxoqzb0rvPayZRcmbABmbPyb250thC3VFu6+IoMzL9sUI4RYh3bByNvV6rwugsiCcv03n/5kz+tyvniS3Lrz77ScPScREhEmDk7K4cn/St1B3lti6uxkKEEP/0+UYXZKgwOgqKfPs3f8WwXf8nudn5aP3VOz9pKjz4CZEgefxUcnN2Rhdln9dWdzQRx0KEYHjhpBYqKXWFEv7xK2+XYXv/C0FmuXj/fLWiLERECNhg4Pw+2TSz2ULdUZGFSJmtPEE7fqTxfgiJ/9vQ4ZWmI7H0Iy/Vze6jkMitafXRS5uSanJmECK59ml9OJGdoiCE/fuXl+JdBwRo5Mvqno3mMBAxTB5MLDDhGobGmqsHt8FBR4XRWUBEPuesGDTe8EGKgMCHBz/TqDaVDKEx377298qmMsQwfYgLkog1a0Ek +f8wP9mwMBIIyvPvbWrJ40aAJ0tf3boezlIZSHQbh/z/PZP8PvL2X0wIhwidvEolYxRUEAsnzBtxC3VFVFiI0fu+1XQ1M622iwugwKHjwMXM7isD6oUuJqFjo0fe4R0rRwem+8c0b5FuyEMltXUynhQiNN3itZ1t0ocLoOCw+PoyEQYh3YlQEpJl/FNd4MzME/K7RA3mnUzVbiOS2LiYomJvK3coT8PZeTW1TC1cVRqdBrP0vjI5nxT9zjgIK3k9LzHPW7HAmtKfOFYZTNdQdAUGyyEJk6mvWzoTA+uGJxqa7c1BhdBoU3P2ajPIBF09EunjxNG4ZXs54EG/fRE9BOLX11sUFFiLR8tbgdHcOKoyOw+LtdJoEOX440sXTF/G3F5sUda7YioVIbuviyFx9ykuR2FzetqnZmAqj06Bg5Q8CobmyzwIUPH6Z3oIuxNG5Yguti4stRKYWUjnL23Y14VNhdBwU+edbKkhfHbIAaZ68qK5xd7khCztX1Kl1ceQG+vR1woQycWhb27aqMDoPi5ez6L3Wbw2F5vnTLevC0bliC62L/T1FFiKP17ou79N2xkpDocjS/zd0tccawpp3k1vZX+SMakI5k9u5Yguti7vG9udvNJYfnxnaXl2oMDoQInx6Jk0QxPwdU6f5VtjTu/q6o8KBTGhPn8VmOEWBbEevmDxUGJ0IIQRBWfvLc+eRCYm7kBDw+iaGC8KpynVHrp/tjYxvHgBnpui26kKF0YEQ3PiHvzOfKpfXizmhxQQ4d7IwnKqxdXGOhYjItjRqzUOF0YkwKsDAy8ddLl0QEtCQSWy1c8VWWhfnWIjsACqMjoWy8oeUCKOCPQf71r5+DZOxlVHQuWJLFiJjcVqg1RkVRodCEbn3tUQgFZ4/KSLy88UXE+8muqNzRWQh8jzuXSwCXu/Enu2PoTKoMDoVYu5OCdfa4PwpRtV0n56ubrlzxZZaF5/a7k33Bupd26FQ+DJ74JNPOHCSYkSEPPif +wzGtlgVE+v1fP7Nm5pHB7d7fRuIa3AqBrh37/agwOpZv35Pup7Hth4CAQNh1+ZIJjMSz+bfp5X/eAVlliBh2Xz8bWhNjHJrQ3DgijTJtroQKozOh4L0tMd/Nkt1Iq4E8cruGzhUJTk6FsGB20aCcvZb2q5cYjd99a09tNSL1QPcYnQmx/r8AJb7lnzuT2SJEN8ifvKnlytPuiV15Gw2aX5Nz1d7jpfF3NdS0uRIqjDYik7mryi1cPt9PlfxuMH40Wy8U9fQOkvF7eufeII/XupiAN3ytoabNlVBhtA9R+FPVbKJg+k2apcaRYPT4xpzeuEFeS0/v6MpTrsHt55kqassJrB+8lNxJXegeo30gCLwPYVFNIM/FkjthUJLTsxubZxBiB24freF0Kvnsnrf5cUCIPXB7uOKOhZD1Y1d3VhdquNY2EISdfPJjqMtWEU7Be1n6NSAS8yt7M+XXUSOw/d0LYSJWug1EcvHr7h676cgG2K5D4bfyF8gJ8c+MVhsTNgoNpdoEgvAffk376bEDlUtAKUt/lXfahzd4aVdeOFVTT+8gOZ77caqwECEYnj+1nVWsTnTFaA8Ia9bvLqRtMvwU7s0pvy4Blt6Xi6JBJtc+9ezKPLdBCHsOrv+IWbwBGn5MDG8+/UGIDIwsrpT0nSJoJ47vuC5UGO0BYc3KncW0BY1Z+D6crlTvhqWPiXIDAjT8FOwx1lA2wqkD6QUbO5wyX719m1twEMKuQ8G3EhKjsebK9lZ3l/rkO/vzlTpAkObH/fWkRXFtaIl3fL6Xqjiq+MMTfTnntoLvk3FvkBefMJWzEKHZMGnYYV2oMNoAgjRzD4ONjsI0IU+dLRtOEV/vJiuPi9wdC0Eab/pTzHPb4pxEaQuRDdPmnf6NioZSbQBBmo8PN/tJgMbM/RxOlXvwwvtYcXZDmAw/2T0ZiVXoXFFulOWFfTmesyCE3Ye874XhFI03eKNvB9PduR9bV4wWh6DgzUzebra4NrTo +Tat/VHMPiRB/76adOUHBwlTcnt40fv+Nnty8hMtCZHtNmyuhwmhxCAqePSuMb7K1oaXeZf9YTlQ1fJ7/ZlSQN/Ulbjhl/P6b3QXKKLAQ2exJ0Ay60FCqxSEomHlZNFFBY+YWB1Mldxnmx89qhAFhMvjE4cy5UhROHULMrklgcu37AZOzgEUHwIc2D4AJ8U5MYMePabO/n53+AMpWIAg+eOW4swpK6vNiqfeB3FPlsSusSTy7uwYblTWBIM9cj3ODXERgUz8e5bmOQMQwdXmUoSGjmO3c2E6nu/N/f0rLQhD+gzlXyE8TmssjmfjH9c6S184dr83z38x0rpiLF07RrJ8/kx8n5RwAy7abNldChdHCENas3fuRLpkQICjuq+gUTL1NV1sHlO+/Gd0gf/aiqhvkOYS3hwo2QtkDYLHbbdpcCRVG60JYs3xvxeX0ke3iGAXzTmUs/1n9LCzw34w6V0zH6k5GhIO3UeBtQBDy8plIYrtNmyuhwmhVonT3PS9ZrAuK8XZf7bGGAmuWvh9zFGnEWzKEgNc/PpwXTq1OLsQJp2i8iaNFHwMULDzitd3NpQsVRqsSpbsfWEc4Q8DbdyVFEKT5eX/56Kgj2UdZ+yOsfi5STIDzJ/LDqaevYoVTtvc/iUI7nGjHYvua5Zh2AxVGaxKluyfFkSXO6eJImvkHQdIbGN9dGE4RxPtH1S8ZRf6bBAWfZmL09KbxLh8uvu9BsMq6w+1EhdGSEBS8fuy6vE2If3w0c65qPj0SQxOYC0XhFEXw8EM8ZeT5b0adK6bi9PQO9t5wGKhFRwTNpQsVRktCUDD73DUlCfHPno0iHcGbxwZEYXv5jZdK8NdKnEQdJU9ihFgTPo3R05v4va/ZFFACFUYLQhCceZ126oJhxsiAguezqUynC3i57eWzoyz9Hca6slfgv5mxEKm6pze8sWNsjZyyCqMVIcJHH12t84hsQoCCmdcbawrFBImLR/LDKYKYuxuvKK9AYnF7 +evsHr+6YTXM8VBgtCMV/WCLdHSSv7I10ATv5Pkc7Be3lM1+z5sOjeFb/BRKLmlA+qbant+39PdYlq51DhdF6UHj3U1/oTHd3XRvM6KLwqkhhe/noizTvpmI2wSAYHLuYyAun3j2prqc3zX96W2PF0Nu1rQj6fy0VP6Np/P4bu6wRgTVrd7/lXxUBkVzd9DfIfFG4u+tLvGgKROL7t93dm0YJlMG9P1ar0RfC/SoMpUEA0n2wyE6AYryhGxvp7uU7S2mb7xQOYSLH3yB6E4S7u7/ESzpHEuseyLcQKS7IcxGO7FJhKA2CoBnpmc8zQCOMt/9amoYQmu931xxXqECYhe9DOS2HQQh3931hrLOpHInJpiNbVRYidmSgNYShe4xWpNhOgBDv6LjJpLvdV0UkYyEyWmCBRjP/0E/G7QTmsBCZqtzT2790RDffSsOIDoMev9vYaBDin7qwkb74MCUlVwCa0J46l2MhQog1S/drsMUpthCZ+Vjp3Na/erA1hKGhVEuSiV665qPohZDg/LkNXbyeNqUjI9CY+VwLEQiN7T6wtBTvcMppIXIgMS/lgzIea5HNt64YrUpkJzC1GNW/2bGjG7pwXxXJfWNRe3kQ9nEt3WG8fRM9eeHU3KOyQRnxnz4VhtJQCNL4Mx+SEItLBzLpC06/qdi1aLO9fDacoqDAzaaqT1BsIbJ8fzlVWhma4FO2AYKQ109FkleHM7oocVWk6I3iHRjrLmg5/P1RXMMooQl5+mxOkYY16/d+lFaGf+iKXglRGg5BwbdJe33AGiEI78F8VXN7s718bo+89enP8fsmibd/vDs3De7/+zPpHoTGmziilwiVxkOQZo09BAXW/Lr3s9oCC5pQzp7KuVVIEPLiucR0OCi2EMGvP0v5jzDxe09rRFIqjFZns/7NmqV7q6kYVdziHxztKgin5qdWawin5PRpZPu8WvPsmbO9H9E6kZQarrU6IBiJw3z751f1uhBQ0p/+/mYk26ee +ELv3t5GYXb0F1pjZu6ubA7G3xAvFHGsVXeiK0SZQ5OujmD7hBf4GGw4Hz18gfjjld50/LNG7aB58SjpfFey9IdIiylBhtAeU5f9JzGsd0Q3yw7kWIgQFX6fX4hhGiYjQhOGBc/1CAvJ+qoQrbnhzT4vsMFQY7QKF8/Hnc6G/wYabzeRcxVxI0UASpI4c7RMJXj93XrOl8Q5dYassGCqMtoH4NTkf97S10N9gI5yafRnXf5MCBumhnvD7svNDEEz8p6dVZKHCaBdqnc9ROJVnIVKL/2b0PtiQkjBuF+nIh1BDKWWbISj4PB3DAC37xgILEYI0K5NxDKM2RhLQ/SYa7+DV1gmkVBhtRO3zudBChAJr7NPX1RtGVf5sYc9v6daRhQqjnSCkxvm8YSGSjYIICj7OVG0YVXl8ubW7hQIpFUZ7UfN8LrIQifw3J7/HXn5KjB5cPtQc3VirRYXRVkQGaFPx5zMBPzV6qGCjET6JXaThHFu8i6csWimSUmG0GbXPZ4LhifM5FiIEIe8fV2cYVXZgrJ89V2BZ0vSoMNqNmuczIf6e8b6Cc9s8y4XaPo94py80oZ95eVQYbUfN87nIQqTQcqG2TyP+6fMtpwsVRhtS+3x2WIgQEr/mNfeziH/+dOvpQoXRltQ8nwnx9276G2xaLtR4OkVYZmwadvp3EhMVRlsSzefJygZoxW/M8zfYsFx48i5p4t41kch9/dJIk7WdrA4VRnuyaSFSQzjF02dQUPP6/kktyRF4/VcGWlIXKowWhjl/IvtH9ruRhQhrCqdGxgstRJZn5mOKjBBv/0RXa+X1sqgwWhKKiDA/NRA90PMaJgm+TcX13izyN8gsP3z5IoyxaFCyG/lW1IUKowWhbIjCeuueH1BMMt3dlcx8K6uNyE92+lP8jbPLQkTw48m3pKly/SHg9Yzub8Vtd4QKo8XITv3VpZ9Lq15go39Ak0j3DgzvTkUvyJEG5OWzuJY4GQuRsXReOEVjX70M +qnK4JRCGBy92t64uVBitRUYW9ufct2WfgMlcQKKQlugZPrjHSL4rrWBhMrYlTrRxnhgqHGpp9iuSlcaiQPzuc0dyPEBbDxVGC5GRxfKnL8vWGBT+24E2xMDhg11SsD1Ym/paU5FGnoVIZpp/fLGUSFSSRoBDZ3taeLkQFUYrEQVJ8+/mfZMo+e8W2p7Dx7rzpQG+eB7XEsdhIRJJI3j75lciUaJQTwiRkMNn9khr60KF0TJED+y5V9+YMKWmpRCCMOw+fixF2YhjInv+qTpYiGSkuf72w6pTmoSAgew+eaDVZaHCaBWiifbz+VdJSvmoiEAY9p06guzcjCxxpua2biGyIU/v08eftlgbYGiTw0dHkHc41pqoMFoCggL/xduwkiyiFyMM95wdzh5QRRYiz17UwUJkQxr88XlhJRSzsfsXkpaJ/n0HBqQNZKHCaA0IQuYeL6eqkEX0evjm6Jl07qJRkyVOsYWIZA+E7eKPHytrm+fFXf27hwdMe8hChdESEISdfS0VD0pz3yJ+3/kD2RPTyEJkamHrFiLRFyWzFq2vrfmBlUSqq6c4w9jKqDCanowtzkI810wCoT1yPrtoUEDY2Ve1W4jk3wXcTL9vfqngTkpLo8JodqJDpclaoiDx+0b35YdTn2ZqcWQTf2h8V/FBU/lbjK2NCqPJifpGzsRPQ0SLBk+cM8xVRi2WOEUWIh2ACqO5ISh49qzmAjrxh8f7NxN0YrdoIVIPm6mWQIXR1BAUzLyKa8qf834EibGD2SCHIOTD46CmIo3hib7WLDqqBW011swQFEy96qr5OQ0KkMz9/yAP39rlIeYTEZT0978/b/YTa3c65K/ZqlAw86qKxt0l32/8nuu78k6T6mch0taoMJoZ0jyb3ZIuvIFrvQXFpZGFyNOaHNm8fbkWIu2MCqN5Iax5O1W7rTIBb8/VdFFxKUHBz8nFrVuItDEqjKaFIBb+TWxFF+sHLyccRdf1sBBp93BKhdG8UNb/ +9Gr22CDEOz5WwowgshCZrc2RLc9CpF1RYTQrFJF7X9Il8nogWHYtqeAZS1DwfbIOFiJtigqjSSGIt1NOXRASWhEkTOlZTTC8cLLM9N2ahciZ09KqvjhVosJoVihrf4TOPo9gOLS/e/3bgl9yVhPk2JHyAc+WLEQOjHW1dzilwmhOKIJH710LBkGePyEisvT6o3XfCKQJzeWKnrGRhcjUSm0WIuPDbR1OqTCaFMriXyWuJQRjx0gQkG+zzh6tNEH66lDlJzpBmvWpL7VZiJw72c4Xp1QYzQkFDz6mnBMv2HPLZm50wL58UWxOS+P3XttV1jM2r//F89osRMKD57vb99BW70o1K0tfU85pB0aFplFd3pmbfZ7Je7qRxhu8VU4XFIowUhZBnrne5WdKUqsGNObr+k7/jhqICqNJwYfAvZrT/IxiJEAgdvi3w17uxT7CeHtv9tCUO7CSSFYiAkLsvtt7vZixA43f/Z/d7btgqDCaE0r4NVFiaie+vQMpFIGIYeryKEPDzLQmsH7weqrMWWpU4bGAzD1ZUAx7bpwJrYmhDBpv4Naudr5p28Z/tVYmugxS4lvklf0bO+sCr39CvBOjImV1ATv1Np1jFxXbQoSAt/dKuq0zGSqMZoTEs+fpEv80BOVStrdqXqKOEP/sWVbQRfDwc5cNjl1MMNeRbXVqvsrTKQLrhy4l2loXKoymhIJ/FpIlvwvaCydyTQ4yiToBw4snKuli/f63tIX4w5d6s+tOxkKkKke2yqtSO6DCaEYI/3/rpsy3xT9+0eR4Rgnmp1bTtDJxqFz6grBm5d5yyoKA33Vpbw0WIoT4Z861dXJPRIXRnFCW/ix3LEKIv2eiN2ejQbM29dUkL+8rowuCND/vraUsJLpBnr/uCJanvlUKp1hxVWoPVBjNCPHlXrL8C+B3jY/kuanJ7McruyvpYv5BkLQbyT3xj41umusIrLFP3pR3ZCOsjB9u72tSIqLCaE6seTOdLv8vU1Ay +RBASJMsf09J8msxJcBDw9l7ebKtKUPDhcbm+xTShubKvA3SheYxmhCJ+pQcWrEk8u7sGK5l0BMgKuhDz9qHkJP5Apuf/XjJ2w3KWEB6+PVg62UcTpG52hC5UGE1KUHHmgZKe+2veZBN1kEppvedT+XESxKZX/54zzGTqQIjddfuYz1JJd7/31m5r2sqLswQqjJYFYlPrd14AGWVEd0TcRMZts0U7a9hEeO9D1i0KIoaJ8QlsptJzxqDxdt/qb9GG9nFRYTQnyWr2frAm8fTeOjZioZIQBB+6DA1Bg0evNu6HZEKyo7f6C24mSnQJa9+NbnaGLlQYzQhE0lWdioCS/vzXQiV/QILw731wGlSBSD5+jqxkQIgd/O2IVzAkgfXDZS9htRcqjGYE7K3uHwZi07/uvNoIp9wQFmt3vqatc06Dknr6DNnQCSKGyUtjkhdOEeKdvIyO0YUKozlBX6rKc3TYhHn8wCsTThHWLP/zI23hntOgpJ+9NZvvB0Eev5Vb6EGIf260/dN6eb8VpemgyD/fktW+GPB2jQ+VmLUEaX7cX0+WuQVFSHhzT35vVhpv5uPGZp2gHT3WSbrQFaMpAbGv6mIH0KZX/n3jDqcI0szd8crpQkCRKS9nZw4Rw/SVizYKpwgrl4/ZTtKFCqM5AQ91VV2GDdiETD8KHOEUQZqP90JTfjAwufIcue8GQZ682eMZkCZMXD/YEWm93F/JTn8CxQXx5EX10hAC3sDEoKNNHuTNTFUNKe3twbw0SGQhMv05JfB7rg52UDMlEVFhNCkU8f5cj5EyoJggceFoYfKbEr58kaxiShPByHVKoTQgL57B7ipqJdD+aCjVlADSdSGMcfMCsAlOThWHU2tvqxoFkpz7XnDVAwR5+kZq983eTknr5f7ld/oTKC4ogscvYwRT0ZHq7omCrsPEr8m5alr40XiHLxea+xMUrCU6J623iQqjWaHwznw6njLgpy4elvxzV/BplSWrif92F85/ +Vrqc2LZoKNWkEILLu/w4njYQm7SPZkJYbIRTICgXriarMFSjWZ8rujkIEOxEXagwmhUQ0nW9J4ijDAGRfP3vcvYeeebq04HfhiobqoH46ujlWvbSbhujodROkvfLdzQEw/K/ZVPWjhEBPz16MGejQYg19unryme2TP63qwPXBje6YuwUJEkRZBDa6AtZQLD/RnesaEogNhU8eEJw41oghIa4eNkElcIprC/qY3IDXTF2AooIo2eStaEVk0hARKJr4blHSsTq3aV0vEZ5BRYisuEAMvm9ggMIvAunrD4pI1QY205WFSvLyytrXmApMOmuvl27+zaKr7MvzfijxevsQsDvGtufF06RJnzypkKbVv/oRNt3Y60WFcY2k5n54Y+57ys+BYiMx0lKqn/fgX7Jy0MQRDj5oZpERN4PMSFPnc3tOkwQ8u6xLbtjCfbeVGFkUGFsL9FcXfn4Zdkak3cIBNLa1N7jw3nSIAh5+rKq2055P0b8fRPdheHU94e/UmWUEQ7+R4WRQYWxnUSy+Pnmi28Srt88bIj9pwckPwoSfJiO25GbgN89vq8wnFp78K3MjiUc+L2zbgqWQYWxfUReHkuvPoXJEidNhIifPHYqXaiMH49id+SmCXnmTGEaPHj0uXQ2XVeMTVQY2wZBgf/yrZ9Cuf7csEHfmcOyGQXV2pGbEH//eFd+OAU++lBSGcGeWyqMDCqMbSJaAz7PLidN+Uc/gTDcf74/f9GAvHgetyM3Aa9vfE/B6iMPP5ZShl98jbBjUWFsDwQF3pMPJlE5IiIkSJ09nr9oZIz+Y4dTcvZUTjhFUOzfi+4uZvDOni3lmNBxqDC2hWhmT69UFw5RjA32XcxZNDaM/msJpw6OpfMkhp8lG4hfG9EFI4MKYzvIttOO0eXOT509vnk8Ff3HsxdxO3IT8PoncixEKIJ/550OJEz83qOHUhn0BsA2QFh492YTpuojV4hN2em7v7LemdH977PX0jE7coM2vfrv +a2Qr+wBht3v6hwM9+pjcoFrzIqVmCLFm6cFSvA0CLNJff144JBvpaxC0I7sm59Kxkn0Qm+DMwoU+sWBUn4El12kxDUdIfVBm0FCq0UTOTg+DeNfHRYRiQnvkQiq7QYjm9ezLqurx8j4B/PTJY0khIQTeTrsjKb11noMKo8EQFLybRi1uAoT4/WN78vbggs/TVbSQzB9HjA12HTvQJSIi72ZcDlE03vEx1UUWFUZjISh48TRZW3UogQCnT0d115nhaFYmK7aQdA1ke4aHerD6Zd598Yr4vVfPpLKoMBoKQcHs87jzOHcA8feO9+Y0V622Hq9oIIShQAinzRSNd+qCLhibqDAaCUHBkxdxb43nDwG/6+LBzSQdQcHHGT9mOBXZK1BApy5gu35PdUILsWpRYTQU0jx93hV3CheMYUJ7/Hxicw8OCpYf/ah9GXLhXzugC0YOKowGQqF58WQr60U0DMQfGt+VE05VVY8X5ycY7+gEdcHIQYXROAhr3j+qw4OdgJ+6cCQvnIK8fxzGLNIoOb4J+n9LqCxyUWE0DIJYuFMf83yCwbELyfxwanHyZ9xbhSUGt4nbuzrSVq00KozGQVn706+TGzIh/u7xgfxwKph5X4dwiqC9NqK6yEeF0SgowjsLqbj57pLDAUHiYmE49fZJ3JpXx8DiXzrScTb/lVBhNAiCePHEbVceHZzWMGJw/ELB6dSPyZh3sByfxR89oWUYhagwGkXJugdCbCgwsVsUFfr8E6Txpz9uJZwixL94UnVRhAqjMVBE/l1IOnNpDPoGU+tLKyYR/2KHnxo9lHd3CvL6KWsOpwiGF090WHu9qlBhNAji4wNXbTVBOXM0JeLPvfmeqLpyafPd4YnzxppMbXbkFjW1VOOZMGE5fkR14UCF0RAoYv9cTri/dWVEKALh+xertdSqDk/05W40aPzH75PVF0HlDGaC5KUR1YULFUZjID48dJtx+BdPbnwd68/eIxHfSS09dqAgnPrw +JO5V9IyJyJVB1YUTFUZDoMjfP5wLhk3/NyWQDVfCL49rsf6wp85tGtMSFKw+/lLJl6dwGIg3cqlLz2ndqDAaAvHjb3eVqE3/n6Tk3JNdn/kU91QpcxU9/9xW3j5fixGXUUxoT56H5vVKoMJoBKSZfV7C1iw4f2pjSkfx0OtZG7PslYDfPTZSUNm3OvsJySoXDUL8nosH8pzVlVxUGI2AIn/9TJT4Hi8dzH/Yf5tcTcXcOtOEPH0G+UUa8uXZYlXxFIEwPHihR3VRGhVGIyB+/a/EIkDQThzOT9KtPZqPvdGA+CPj3QVmheGb12sVpUHABr1nD0u2YFYpRoXRCChzd0sZExEMz5/KP1WyU+9rqOL2esf35jmpCWTt1QcvWa5rHwH6yaOnunS5KIsKowGQ5sXTdKnfLCH+sVGTHwY9fpWKO01pQp49XWBMC1l582k9UdoeCjZI7j85IKqL8qgwGgBFpt6lSn8b8PZc6snfaEy/ia8MiH9grKuwbZKsfvi0jITTtpmh7Ro5NqiyqIgKowGwpD1s5vuA3z2xN3ejIfznR6La8XPG8fomhvNak4kIJPj6+fu6JJDTywwUa5kc2H+gp6ADpuJChdEAyh1KZV5hQjl3MhsGEdZ8uVeDXSpNgJxxMj9cIPJrYWHxVyACgQiFIonu/uE9A6KyqAr1rm0EoK3wAmvk8Y+xtI0OhkCwppvfsAl5/HMsZTcPmBDJoOfIkXB1eXXVCyxhkume3v7eZKaVuKqiMiqMnQFE+tPSxBAzD3tixSZrWL1BpD8uTexmzqIBoQhFErt2iUTG/9E3SEQriFIRdbduBETF/ULkz/8GiHz+ge+1RbWgTa/8kx0n80UAIiQtSQAkrWXUVVx1URUqjK1DIQuaVjBdcZYDNiHTD/2ocwW8nzX+U0TjPAqyHTCyX8+ogKSIwKgo4qDC2DIERZj3vCf6qjgNBZH+8PdPIwS58KvmfwoQ6feZcQq/tclO/5paDBXGViEI +FEQywoFq+h6BNr38zzuAwOctzFzQppf+eZ//IZQtocLYIgRhH0xZENxMGmB35VhKojCIU498kV8LsbMYheM8mgoLwymlZlQYW4Mggnsf3/67ApuTFGLPUFjlCIbrQnzy8i84MeYMB5F6+/eSK5xSakGFsSUIYu3fr+n0t78/50xKiBypamYTsn7sZgr2U34hHRGGhnGmOCjpn39/hCqjPqgwtgJhsfzPj7S1Kf/+U8mGUxSODAeVZygh/tlxWllYzI+kEBwbXjexpjjEJu3DGcJCw6mto8KoHYpY8+Pf1ZQFrEm++PfXRjgFCM5VTqURDC6eowDvCtcXjtw46sV8+INIvv5nxVhdNLaOCqNmonasd7ykRRTJLPz1dSOcIjh00qswPwny0kmKyNJ8skBFCWMujUsN4dT3vz7rRqMOqDBqhaCYj/dCE5XqQWzKu/csc2QKEZ7Z65erGBIai6uHrUDwvjDsItK0x271ebHDqVSQG9MptaLCqBGCgtcPc9oUw5rEs7tr0ZEpIYlL3WGZaU0TpG6MWICy/qnIy9MkALv7t8Oxw6n8mE6pFRVGbRAUPJvJc74BJf3lr3kjBEGw56qxJacnjd97c8gaEcGHtaKlBSJimLo8Wks4tfDnVw2ntogKoyYIikzPFhRqQ2x6/e5LRLqA3X2l1PQkjTd4a5c1FErwPlF0gSSzUeGJm701hFP+vWcaTm0NFUYtROnu111FBgawxjy578GKCI3dd4VOZRDG23ezm4aA4NNyoug1NhQBIXbot4NezLBoI6arrcRDEREVRk0QhH/3k6tNMSjpT399i3pfwO6/KrZ4B05g/dC1FKOHun1b7JIJ60VbeMP01QvWmpjntpKe+2teV4wtoMKID2Hx69/5tNMkLaqzeB2FU8aOXE8EhbOaEO/ElcgmBCJzi8XXpGBXhYxK+3jqRrdnYiXtIDbl/fNKL07VjgojNoQ1S//8LOHAKYBNYOahD4I0ds+tHj9/+0yI +f3Ys42BAwVvHj6B8j5wMQIjdc3t/3HBKxPbs2unfVCujRxcxIUjz/b5Xzm6WgLfr0iBBgTVrDxdyfQYJhqPHN5w9KD+d7s9ZU/SMz//z50jEMLil8fuuV1MTopRAV4x4EKT5escva8MM2vTyPU8I0LD7xtGc5z1hefm4zeoC71zJDppfLxCV3kXh1Jnrab/qcIo03u5bfXpguwVUGLEgKOb9PZryT2/Apn49R/S0Z2JiNLt9pgkT1w5t2p3L2ldXoz5I6vVnk5nZIMTu+21vteEUYbyRm93q8L8VVBhxICh4NWkqTzkw9e4niOh5f+JmZvtME3Td2Jf1DgTxed154kRJTH7fyA+CYthz40xQ1RpAYP3wtaTqYkuoMGJAUPD0cVWNXij2KYXRXsIO/7bfE5DG77u12xrZ3D58cnc0AmHv/TCZirzoBta5qyasfG5LiHfqsnaE2SIqjOohCJl6Xp0vOZia/wiJ+oEZdl0/F1pjvN23+jabe1Hk52Ki1PtNcGfBMDecOnC736t0QYQQ/9xF9abdKro/qxqCCB8603pubNfvqZw2eXNTaxy5nMqz08STl6WOfYWwmDiYY3Ar1vgPv5bvpEHQjh5TXWwZFUa1EIR3f6H6Di803smLWaNB0vx61HXJ5OlC+MdyaRMEguG5HJ9/grCTH8q5ohMWlw5oI9ato8KoEsKa1XuL6Vjd8uxvg9m2LlGb1bzQv3QLy43vi394LJnfL+DR+9LKoAmSV/eoLuqA7jGqBNYs/rMUSxcUO0vJJCMi3+b8LTG5UK5iQ0BJf/h7MXuFHIRwfLjke2j87pt7bBWHZkolVBjVQKE13/5dS8VaL8DU3CdsLMogWKAL4Hv5OQza9NLf74CMvkDQnGCJYnIaf9etQWuovs1bR4VRRTqZIM3nO0GcSxkiImDimZ8dH4ICfwT4yxV+/4BNcPKhh82glyW7wRpv6GYvtaF9Xeh0YVBY5Mhc9BpQzLsHEn/KMbHyAqX3 +cfzlVRwRROrDn18BKyRBwfvsR8/93IRZ33+jS9MXdaLDhUEQpoLlK0HBi6laIncw9XaxdNoD62E11s9Mr92d/GUgIhbm5efk5sfatD6ErB/TdHf96GxhEIR9sV7W8pWg4MnTqtLdxW+WcFakZE7Or9Lg1iTf/flyHYAJnjxNZpqFMclsARMh/ukJUV3UjY7uqEQQwYNPH8eHWHJKRcmDd+naesWDya+fD7JkCq/aUZD2n7wdGTDLX5ayiXcmzj5fS5HRXcXwwilN69WRTs5jEMTa/e9dvjl/vNTDliCCh5+rT3cXvd92/550t72rlMbIfy3CUEQSZrPZ3vr1wQffU9ENXjt+RHVRTzo4lCIsVv79kQ5zGhsVv4ZYv/Oly9Y65cDEyqtS+2/u6rXVjiPWpFOpdM5ZLM2HntsnA4KwcvWIVV3Uk44VRmQ8+89KyuY2Nip8ESxW/vmetqX8Niq79YPJ10vuoAmSOFiF83P21RTJS1GYJd9cvGyCRJi8sV/T3fWlU4VBkGb+znrSIrexUWGPCmt+/rNcOq1XTW9gIpyFc/9N4bH+sPZg1nirtIdu717tuTVsjbZjrSsduscgSPNxMpuaIBgcvZgseOxSMP8gSJbTRYiK2Q3Cv3bA/SLiy91U7X+L4Np+0oQvDudcZVfqQ2euGATFvMkxngWRevfPYmE4hc/3wkQ5XXinj/qVa4cSs0GpJWP/qUqe6KUBA6Fh4lyfprvrTkcKIzKenc5NTYCSXizo70j5ekcSLKOL4PzZMz2VknRgYtm9/waE5w948dzU8j5CVICh6Yv604nCICgy8yy/Eg9iE/bRdJg3x3afCUsWkxIMx87Y9JmKuwQw+XrZuf8mRC7vrVUZlGTmBpZuL+pOBwqDIPjwVVHKDkTqzd8/N4+ZIOkLV5IlXGsIK1eOWfDIHr+SMojAvf8GIclre2P6DGZJdBEioha1DaDzhBEZz350pOxAJBfX8l7Jg7d3O11raMLk9QMW +EJw3lR7YYPLLF7gNPcHk9QPrqGWjYdN9KolG0XHCICzW/p1LO1J2NEHi9n7BxuUmELD9t447XGtySoK4+0jFJUMEJfbfIJi4ejK+A6eI2IGqmokrtdBpwiCsWf7npytlR+P33BqykQEghSIQGibGLpmwINah8XbdGsiUBPFMd+X9d3LptTv/DYIyOhrX0FyE4IFaL6ooFeksYVDEmu//rDpSdqTxBqJWLhBsnE6BIA/fGsh7olOMt+dWpiSIkK6q9t+vVkrkvwnhietdcTcaCPv366a7YXSUMMoYzxLG23urh4YQi4XZTO+KyM9p4NZRnznus1g/cD2dOSMFhUcq9/Sm8Uvkv6Mfsfe3kXjhFBGeSKowGkbi/+70J9g+CNJ8eOSqxCOwfuhqMpKDmXvwZXEoHaXBIWKY2N+9ECaii0qEeMcuJ7K5A0BM3wdTKZiSxOJgv3siQ8QwdRALZZImRR/Y+Hsuip7TNowOuhIS9Vl9nIBLF+KdGJOMLj5OSsLvHhvJWvWDgp+Ti2kSUUnQ+dwr3hTB1NtK/iFE2P8fU2omExR8nc6UV1T1d8F/+nWH0Tg6Z8UgKJh9mnLrwj93IWP9ZF5PGcNk8InDGbcbEMKeg+s/DChgePFMXukDIDL4qYr892pyuNTVcBDC/v3LS4mqktiEhJeHNeHdQDpmxSAITr9xVeIRDC+e2LBEm30e1f6IPzLenfXrByFvntokybHCkiCCeDNd2XKK5veekrFP9ONnX5oqrEgI8UdPWL1P20A6RRgEET5ypfWEsDIRtawgOPM60g4Br3d8b1449X1yxZjLI0WlDxTh3z8rbRBovENXWHpbQFDwedqrGE4RDC6eVPeohtIpwhDCezDvMp6lCZKX92V0kasdmlDOZK1jCdJ4U9+vDblKgoiFfxOVP0RwY19Z41kKVqbnUmVDJIoJZeyIFiY1lg4RBkVWH/5wRTs0QdfV3Rld5GuHEP/AWFduOMV1Z6MiimDyXRX7 +712/mTInSYQQfPkiLLNoEPB6J/ZogXeD6Rhh8O6nPuc1EL//Wp81FFjz615+L1YCXt/EcE44hZKmCbL2R0WTKBrvwqkyW2aKgIIfT74lEm5pEAjDA6Pdul40mo4Rhqw9+Vi086YYb+hqd0YXS/cKU+IUE+DcyZxwSkoZfhCvZ7a2/97ItdPwzcu1pHFJAzboPXtY/aMaT4cIQ8TVEpiAl2nlQppv9x0pcYLBobFUxSc0RfjXYhX778OXWVpbmXhNsPbyg58svj1lw66jJ9IaRm0DnSKMqKfR9K9UXsdt8Y6Om4wuvj60rpNSAt6uid2VJyMxf6ea/ffNvSWCJGtWXp3tsoBQIMtvPq+bxOY/D2hD9B063COqi+2gU4SR6Wk0NbdZt0eIf/LiRvrifSlzWooJzIVjlcIXiuDhhy3sv61ZvL80MD688YHk16fPSyEMIEJaonvowN6kymKb6BhhZDJoz15uhFOEBOdOb0zDV09K55wJBkdGk5XCqWr33xdPFmmMIM3CAz/lZ3Y0IiIQLi78WPZCwqR6B4YHuzItXHf6N9kRdI4wMuHUl+n1VHTniXbs6IYunr4o14uVgDc4MVD+YU0Qrx5Xsf9O/N4tDl18fkRDMDg0mrZRQR+NiISeFyLVlZKMtZvKYnvoJGFEE3B1ciEllM0ujgSn3pY3baaYIHHhaPlwiiL2r6Uq9t9HLuXvvwkK3k2bqBuZt2t8KKNXEW7UU0VbI1XFttFRwojCKTv7KgEEqSt7MroIHlXuUUwwOHYxUT6cIubuVGEfH97cw0JdvHgaLVkUE+R4TOeZXO30b6+j6CxhZGbhpxlfuq8NWBOjRzEh/u6JXeXCKYrgwccq9t8Dv+U43hAUPH616e4PBkcuVj4gVhpKpwkjmofLD+313kxar9oexQT81OihshsNyq8/qkjyeaMn8pt3T+X23yDgDUwM6vHTjtJxwoguJAU2Kk21ZvHer2p7sRIMj18w1pTajxDEyyfV +7L//2yWbuggefMkL5ara0SiNpfOEkXPnKTojTVbdi5UQf3iir/SznCL2z+Uq9t9HJ6L9N0Gs3/+Wtvk7iKp2NEoj6URhZPo6goLojDTGG+Gnxw6UiXKIr3er2X/fGo4ugFizcs/RZ6CKHY3SUDpSGBEUvn8c95lME9pT5zK5adeYgvufqth/D95G1Cbp5731pPsmip+6qNcFd4z2t88p08l79UnsvhKwJvn831VY9yMFEJ6ruGcBk9/fQ0Br5v916kIgNmkfzVjVxQ7R9itGph22a4JRFjPWH/EGhN81PlIiyiGI57OV99829XuX0Hxymvlkf9D60I2U5i92hHZfMQhC5oq6iImICGTw9mGPMZ8NEJvy7z2TjCNb4XcpPLGrsv9aYu05aN48KNuQySZGqrivqzSCNrfPiS58TK8Nu054CCYOpBdsIqavAGjM3OKwOwcHSKL7UxX+az/39LrNfDY/nR0/oU4gO0R7h1JRl+4vaUfCjIIN64/lWsKpXAuR/O+J4N6XZMUrJsGeXS/L3NCiCc0l7cW6Y7S1MLJZgqKKiozNv4A03vSnlMSdfjQhz552HxpRVv6s4oqJtclyughSV4dVFztGOwuDsGb13lLKoqApa+awlci4Nr98JlXYnBUOnmchkvcd4tmzivvvjFV6iW8av/faLtvuO8Ampn2FQYg1P+9HFz4I8bMVFVH5w5fRlEXmyGphaqWmcCrHQiT3OyLhH7+qOAguowtv8FqP9ijeQdpWGNGFj/sbXbopJkiMHs6e3n6YCgaiSm4BadanvtQSTuVaiOT/8M/3K+0yyn10eHuvpDW3t5O0qzAI0nyazLnwQTA4fiERrRKvHyeydQ9ROFVkIVLVDxE/U3BXaNmJu19rVQaB9UOXEqqLHaVNhUFQ8HYmz9+AEH9oop+SNW7eqOQWUDA3VbUJf86QmwV3+d+Q5T9rPGglxD8+CtXFztKewiAoeD5bEB0R8NOjByVj3EzAGxwfzIZT +a5Nf03HDqYKCu5yfj9nnVZV5FH908c+c09uDO01bCoOgYOZ18a6BYHjy+NMPUflDTt2DFFiIxPpZjoI7igR/VrP/dgy30ZJgp3+LnU07CoMg7OR7t+W/BF1eIreMNFP3ILkWIvF+mrPgjvh0PxV7dkctCVQXO08bCoMg/Adz7vPXqFlY7v/dqHuQyEJkvqZwqqjgjiK4Mxd3/00Tmiv7NK3XBLSfMAhr1u5/LyyK2/x2Xv4gU8mdDafs7KtqehoVjukouKMs/RX//Dd9bbfqohloO2EQ1izfW6m2jjtbyZ1xVBZ8mqnc06h4jKKCO4J4+iLW/pvG77vWr2m9pqDNhEGQ5sc9r/o67miTsPt6euOSCJYnv8dO9mUK7gqauQZ/rFU/yynG232tW3XRHLTXbZyoS/e/MfwNMm8bjOoeQMD23zoR1FCkkbSPZgibLdIAJHW2opdtzmcw3r6b3bFK0JXG0VYrRtThfkpiTS6C4bnTOR7ohHx4HCRrCaeGx/s3Fw2KyJ35KvffBNaPTBhN6zUL7SSMMh3uy75pw9w5Z5SlyR81hVPp0YN5Qy3+Wd2STIh/YlSPaZuHNhJGTpfuOG+yuJxfD0SQJnjyNhl7ltKE9uQ5s2EhQhBPXlaz/ybEP3dGddFEtI8w8rp0V/+mMHmtqB6IIOTdkzBpY953IsTfO96brfsQ8f9Yr7xmELQXj6sumon2EYYQ9uHHirblBdiuW5GJbcFQFPys1UJkbH9mjhPEh4dVlCxZuXRQ0xdNRfucSlF+/fM5ri4E4Zxjrw5C7ODtI7VZiNyfzViIgMJDe31TfgyaMHFdddFktI8wREJf4q5/RDj1wIOVgndCxDB1aUxCw5jSsCbx/M6vyJENEDmPsKwyaPyum3utUV00FW0VSoUz7+LumEs3Zd2KhYjfPb4vsscF8WWqXCqdxu+/1qdpvWajfYRR4465REWFZE6nvJmPtVmInDmT7dy9Mvmt1BgU4w1f7dL0RdPR +PsKoecdcuikrQcir2dosRPaPd2Wus8M+eeNOrhBYP3A5qbpoPtpIGNEj3p/5UEs4lSnlc4VTNVuIjO/JXGcXfJzxHeEUId7RcU13NyPtJIzMI/7NU1tDOJW4eKRUOFWjhUgomZ7dpVLphPinLmj6oilpL2HUvGMu3cKIW7EQOTgWWYiQJnxcmEqPLmmpLpqTNhNGZscc33SzdAsjgoK56V811bz2TwxluxAUHAwUXdJSmol2E0bmEf/yWbwrtuWashKk+TU1F/9W4eaBlxQdDDguaSlNRPsJI7NjnvwVu+B6oylr0QWRLVmIHI6sQEGaYOb9Rjilps1NThsKI3M99u73uE1XMk1Z3RuNLVuISO7BAI3fc21ATZubl7YVxsKkV4OpU6mmrKyDhYhsHgyI8Qau9Wq6u4lpQ2EQpPk4yUrttp3vLdWUlVuyENloQbCRSoe356qaNjc1bSgMqaGOb/O9+RUVed/ZuoWIZFLp4YHLatrc3LShMCjy/Fn8jNzGuwG/e2yk1LltmXtP5YYMkhc3WxAsPNo7rqbNTU77CYOCV4/64j7WcwcwIU+fgSsNLtaUvPdUdkgwPH4+YU0kDj+pumh22lEY4j2roWA7ZwSIPzLeXSoNXquFyNBEfzacUl00O+0nDJEaC7ZzB4Df42zKWg8LkQ1xKM1MGwqj5oLt3DFKNWXdioWIDU+eV0W0CG0oDNf18wKT82rGKNeUtWYLkeHxPu1o3xK0ozCKrp8TEsTdMZdpylqzhYgJuq7vUmG0BO0pjPzr54QE+5Zid9gr2ZQ1WpEev48XTmVMmzWUag3aVBi5188F4p+8uPToZy1X0Q+NpUqFU/EKogh4e6+m9DiqRWhXYWQLtpmk+OdPE8HjnbQQIbB+eELT3S1D+wpjo2B7NWFHj1FkRy1Eoh7Fose0LUMbC2OjYHv+8gELSIMsRFhNLw5C/LNnNX3RQrSTMDb+Krkd9giubCScd8xChGA4qqbNLUV7CIMi +QkHmr5O5Mr7hxC85Fsvyenb7LUSiHsVarddStL4wKCJEcUdvQqK29rKxhjTIQuTFs/I1rzRB8rL2KG4xWlwYFImm/frKyuq6F1gxyVRXd29vdzL3uxuv3gkLEZqg66r2KG41WlkYG/Pe+/Htx6pnRQARIUWQ7OobGh4wLmlAXj6La7pZwUJkbbK0hYiaNrcmrSuMzJz35798X6MxQM7mm6Rlom/fgcFCadRqupm1ECmyEyxrIUIx3tC1LtVFy9GqwsjM958fv/xiwrj+FmBok8PHRiT/OR894qdjm27WZCFCwBu5rOnuFqRFhRG5FSy8mQ8SZSxowED2nNpbLI1aTDcrWYhMzTvMabVHcavSksKIZPH95RyTZT8/IRLgwJn+/LPWaMc8VcOtwtCeOod8R7bo5zstRAjxT17U9EVL0orCIChYff7JJqVSPESI+OmTJ01xw+JfU1/jukQ5LEQ2EiVSbCFCiH9eTZtblNYTRuS18ebFeqqiLKKXwwZDF4byJmhmx/wirktUpilrdgEiSPNz9WBGGctTORYiatrc0rScMAgKlmfmkybGxVY/cfJ00aJRk+kmTWhPns0k+yLLwwfrp84ZgrAmfJq1ECEsLh3Q9EWr0mrCIAh5/8SPNaEJ8YfH8hN0tZpuEuIPjQ5Gp2IUvJ9hwtsz0Zu5p/jhcfTRaILUlT2qi5alxYRBEOHjt0kTPwRKnj+WtwenwBr79HUNNa9+4swJQxEaPn2VAE2m6b1kLURkw7RZddGitJQwCLFm5dH3GmwGcw35c75Wk+kmwWD43LCILM0spISgCXnqLAhKpnUS1LS5xWklYUQh/cP4ZvzRm4ur8aL9ymRsoREIsP9o6tO7TEhHiL9vvMcCGVMru+eK9ihuaVpIGAQFH6cY228883ZHNR4h1oRP3sR2iSLENybIvo+A3zO2LxNO/XzYe1WrWFub1hEGsRUX88wIwZGLReFUZLoZ0yUqc6k9Z6ANizahIDCa7m5x +WkYYBAUvntbsYh6Nke1vlB9OLU7GthApevlm03tRc9rWp2WEIaR5PrslXeT1N8o/t63BQqR48KjpvWzWDCqtS8sIgzQvn2xRF+KuxiMIefskbs2rY3ATmDPHEuo12Aa0iDAIa95Nbl0X7mo8goIfU1uygY4GMoH8riac7UBrCIMg5u4m6pIuI+CnLh4uToPXYCFSOLQJUteGNIhqB1pCGASx/FdYr3yZqxqvRguR/HGN33ttl26724KWEIZQwn9+ppz5C0KkhgOlomq8Wi1EckY13uC1Hk13twetIAyKYOZVl7umGmLFxJWGqxqvVguRzSG1R3Eb0QrCEGLuTtL9DQlMt6yF8VPXjobeNVqIZN6L9YPao7h9aAFhUCT8c8XVzp6Q4MCJfln+8DGMfxNQvH0FDb1rtRCJRjs+pr1Y24cWEIYQz592uZ/iwdkzIiLyc3auBlNav2t8pDicqsJ0s3gs8U+f17ReG9H8wqDI+v9C9747ODKRMSOQt8/iXx93NPSuyUKEYHjhpOqinWh+YQgx+zztnqf2P7sEjErpVmbmannQFzb0rsJ0s3gYK+OHVRdthdn6EI2FFP9jwj3laJIiBECI7btxzloTS+egpL/+NW+Em88HEGL3/bZvvepnBk1orh22qou2oumFAcrX1YR7jsL/EtmZQ8RQztzo9ozEkQbEptfvvADylCGG3dfPhdawmrFo/K6bambebjR9KEXB3a9J97dA3BjKZNSiffP05xrCKe/geNoVTq1WcTpFwBu8qlWsbUfzCwPr/wtQ6ns2dX1wY05X1azCNQi8/ku7HadT058rnnQRWN+v5rRtSPMLQ+bdyT0REcImN01qCArmp6p50Of/BBOYi0eLHdnk1TObLDtW1HNS0xdtSNMLw5oXT9MlPyRhMZY9EIqczKe+xPeKYnDyQtG5reDHdNnKPppQLmhvvbak2YVBkcn3qTLfB8PT5zZK8qI5+uxF/HBKvJFL+W0sosq+2Tcm +UWLRIOB3T+xVXbQlzS8M/P0tWe4FEP/A5uaZoODrVFyLHQJe/5WB/LMlgpAvT1bciwYh3sh4jx5HtSdNLwzwj6VE+VfA658YygunVqfmYodTJkhO7C9ShmB99j2KdxoEfHPqjG4v2pWmF4bYP1YrJFuYZxgVOZnPvozvZE57sWDDEP2/L7NLyaLMoQ0LLdSVdqIdhFFoGEVQ8Hk67t0pQvwz5wrmOkGB//qNl9PPDGTIXcePGNVF+9L0wqgYSkWvyjOMIihYmfwWM9lHiHdirFAZIgJZffdl1SLTFZZIDx3Yn1DvqHam6YUh+Hc+WcXL8gyjCCHiO5kTWD9ySQrWgaiYKfz+Y3Hdp5hkd//AYLeod1R7s1PC2Gw9XPF1M2/SVXxIgsHRi8m8cOrjTLw+GkJg/fDlQmVkVg0RCa2YRPbjqyzamMoP4zrD6I+NflzRDCw9xWCxq6pxQaTeLY0PMFo0QJCHdk3+SMV5roPS9cFcKhQThEIhJJGQ6D9UFe3Otq4YFBECri+XnGjE4l9VtxQLkhcPb4ZTzDSriLtmnL5g4fg8m78pFUX7s33CyE7/cO3Xr1+eH1qYZLq7t68nUU4bFP61WHH3nXktGBy/kNgwjIrakj0OY3lFEeJPHNV9daezTcLYmPj+4o+fK2sBMyqgCJLdg3v2dOcE8gVY83w2XWVKghB/aKI/73RqcfJnrFuFBOW3AdVFh7MtwsjM+bWFuR9rFgZAtnG8kAyle8+hvaU8wilr/6s6VUfAT48ezEuDBzPvY4VTRDB0CxowdTbbIIzouJMLH+fXJCdNlveSALuPHEy6Vw1i5nW1S0Z0q/DEeWNNtMGvxcmcZn38uC4ZnU3DhRHN9eDzu582WW6uhXbXsSMJ116DpVxCSvxAiB+1F94Mp35MLsUKp2zX7yldMjqaRguDoCD88GbJVNpAIwwHTh6CI54i3k5Vv2REhlFj+/PCKX/6Y4xwisa7cEqXjI6mscKIoqhPL38m +Eqx0PYNAYPecHS7aalBE7s6lYlwJLPDfjJzMnzJGOGV7fze6YnQyDRUGQcHS7Fckq4pjCAnM4TPdLM48r/3px7EbIMTbN9GTF059m4rjZB7c2KvC6GQaKAyCNHz5MkhWfZePEL/nzFEpLhiK2TaGgN89NpIXTsWxEIF3bJyqjA6mccKIlouZhaSJcyAEhOHI+V0FZRGw5vVMvLuym/6bm+HUi+dVO5nbnv9qLNXJNEwYBCHvnsa8xRc965NnTxQuGjRPn3fFvBCY578Z10LE/jao2+8OplHCIIhwpqYewTQ22Dfal7toEBRMvYmrDHi943sLLES+VrfwwLt0mE1v06g0jMYIgxBrVh9+r61vFwE/ff5IbiEQQZHJd/GUITShnDmdHYcg+Lw6CxF4py7oitHBNEQYBGm+PVyLG0ZtDmBscPhirm9mjcqA+AfGuvItRKar+lz+wau6++5gGiEMgjSfJllLy67sEPD6x/bkhFMEBdOvY5p/EPD6x4fzwqlfk9VYiAR7b6owOpjE/637kARp3kyarfgcg0yuf8LwZpM8ECIjMh+vWhVkcv1jYggb5UtimDrEBUlUGsV2H9FLIR1M/feXBMW8nN5iL3nAJsyTu2uwG4saCOG50ZCxFjnAJvD4gQ8bXXIHQTl/NelX7BegouhoGhBKkebF0xqbAueNk3+qtGGLMxkm49uZ75rYnRdOVbYQCUauayjVwdRfGKR59bgOupAoSXd281QpmtM/H8ZtUk8pdGSzxj5+U/4z+sfG9VSqg6l3KEWheV8nXQisSTy9t54Jg0RAGDt4O0YbsGgY2IRMPwo2wylDjJUPyiB9UlVDJaU9qfOKQRDzd0zdKqYLTpUyuYinr2IaRjkd2b4+LNcHKbyxRyOpDqa+wiCIlb+COvbdopgA507mhVOCT9Nxr5oUObKR5tu9sOQnten/pjWU6mDqG0qBEj70Kh6Fxhlx41SJuYdTB2/v9uKHU5ycyoZTIsYOX0PJ +aMoOVuPyprQtdRUGKXj6PU5JURWASH/862c2dgIhdtetY368c1sBkXr7z9JG72LQ2OFzQalwiQdqzdorbUE9hUEIvr4pE4Ew58/qAW169Y+P2b0wRAwT45cQVtdveHMcSf/8+wNAISOvwkPdpRaMvn26w+ho6ikMUPzHpRNnFNjADxivFbeIQMTu6s/7QSCP3N7lmXjhlNikffjIi1LgZRYEIjycUmF0NHUUBkXwfKXkBoOgnx45PAyPiPWkpxhvz60ByfH2BCF24PYRr4Zw6v2fXwAKhcSHNeeHhe0+ytgrm9JO1PNUirL8Z+kwChanjnaJLL/9EKPYNXKTPXQpUWiaWYthlIhQTGgPnY7Wn8+P3BZvahKi1FEYFDz8UMrmhrCpK8PRgdDi88+JRLXzmRDv+Jij111NhlHRgH760KF+rL1/7WwsSYT9/zF6Waqzqaswlv4sFZkRNLcGMqKBfJj9VeV8dvb/yo4Z1zAq8z7YINGDda9Ugj64sU8XjA6nfsKgYPpNaV80f/xYlGgmKPj1+HNV85lgeOFkqeZFNRhGZd4HWgHcbYqNd2KUumB0OHXcfGP9S7LkXLe9BzPREAixPdfGEFY+niLISydtqaZeIMgTN3tjnk4JxIoxcN6eJYLBcxSoLjqb+gmD/LpmSs5PprO9myBiyOO3dlVMXtNYXD1cpsU8CLHDtw/ETINnloMSi1BiItn0rQmVRlM3YRD4UiY4Mqtrm3EbCLGDtyslr2mC1I2RMrrIiKzr2nlrTV2mMiHh+IC2jVHqt2JgvUzjI8J7AWZ1ABHD5PhE2eQ1jd97a8hWOB8CQZ6+3uXFzhs6Pya8cwdtfS7NK61MHUOpH+tlekxK6t1bs6mMaD4fvdVfcntAGm/wVn+Zm+G5y8/e30ZiFmk4RwTWT53O9PNWOpp6CYOUn+Wes5TkzIcCZYgd/K1U8pow3r6b3SylC2b+J5nlp/v6uXCr4RSB9WMXCd1gKPVbMYClchMK +FDP5duNqq8hGOHVpTFzhFIH1Q9dTJYN9gpGxwUZlH+XstXRlh4NyEFg/Nq597RWReoZSdq3sfAKRmHqG3AoIEOTxW33F4RQh3skrKKcL4PVq1kIEhNiR3/ZsJZwiZP3EhKguFJH6JfgI/3/rpsJLxD8ylsjdNRCk8WY+FqSgCfHPni397CYITr3pz7EQoYDgsxemVpc3QvzT53W9UCLqJowqGuUR8IYv9eadvxKEvJplriUOwXD0eHldBA8/dxVZiAi+zNToC0rQXjihulAy1G/F+FW56TDF+N0Te/OmX9TtaHJl8+4UYeXSwdLpC4JYv/8tbSH+gfFNg9vorsn0l5guntGYJkhMHFBdKBvUTxhr/6+KIIYm5LlTuT7mmW5HU182wimaIHllbzldWLN6byllQcDrnxgqCKdePbfVdTbLHRJe/+XBsqlEpbOonzC8P9ar2MkT4h8cSxeHUy+eRfb8NEHX1d3WlHjsE2LN4r1fUWE585zUMovG95mfMZsvQbz9E10lf6bSgdRPGPbPpUodi6MXFjhFSWY+z03/SpFi/P5rfSXTegRpFu4HG1sSgsHR0USuMmjCZ6+l+kWDQMhTZ6H3QJQc6rf5xt2vyepeaQKcP1EcTv2amksJvKFrXeWOaWk+P8pJ+xHwhi71ba5ABCELjxdTUp31LCF+3+g+3V4oedRNGMTzZ1VaMREMDo+mcsOpzGnrSxOMXEmWT+u9nckzOqQYv2tiX4H1c/DydVjN8RSB0B660KW6UPKp2/UHyvydqlYMKfIfz3yNgq+TeydMeV08ny3cQNCEvJhzuhv918/ZuUSigjQI0O87d1AIdTZX8qifMOD9z6s2j04xgblwrDCcEqx1obwuHr8q3lgT4p+4mPPGaJ5/fLFUVhqEiJ88ejqty4VSRB1XDDz8kKr+5WBw9GIyP5wSgZS9BmIn37u68BFYP3Ap92ZVFE+9fbuaKK1VMDAjpwcyP1dRcqlnzffc3WpjKYnC +qcGJgfxwSqR8uvvBV7eHAgFv8GqvNfnKEO/9+2Uk3JdubZjcd3xYdLlQXNRTGPbP5WoObLOvN0Hi4hGp7piUINbuf0+Xsj2g8XuuDlqT9w6BBF8/fveRyL9KDlrLnv2HB7P31hUln3ra5+DNdDrOFT6CwfELiWoSzoQ1K/eWy/hFOxLmmRhpZW5+0bNiAIFQSNJ07d6/N62yUEpSzxVDwj9+xWqNQYg/NNFfMZohSPPj/nrZ5nuElcsH8lW2MfPXlxaXfq0HliImke4dGBxIi8pCKUNdLTrx8UGsJUMI+KnRQxWUQZBm7mFQoSklQTtx2ObXpTL6KSIiQRBYIplMQVQVSgXq6kQocu9LPGUIwfDEeVPunhJBmo+TUnExIhheKlRGRgPEpgyi/buqQilDXeubKWt/eTH7jBHiD0/0lb1lLnj9uJquewTtpUPOi1b5f00VhVKB+oZSxPydRMw7qgT89NiBMjacgmfPqrsvS9Be3W/r2ANQ6VDqu2LAmneTsXsZ04T21Dk472UQFJl5XW3xEUHc3K0XZZWtUu92xjSvZ+IrA+LvHe91hFMEEU5+6IpxiTzs/q1LYyVli9TbQ4k0b2biduEWAn732IgjnCL8B3NxWmDQ+HtuQLcRytao94oB0nyYqnyCVPRGE/L0maJwiuL/s9hVyWWhYKT182c0mFK2Rn37fAsI2MPXEmFcU0BYk3h2dy3rFJUlcSjpx+rOCqZfLGqRqrI16m5HSZDm54PVVMxmLkLA6x3fWxBOEfJtajlWOzEaf/81ra9QtkQDfFoJa349/Ba3N14UTuU6RcmGhcj055j7+fD2bhWGshUaYWBMEOHU+/j+ToT4B8a6SluIVDmM8Y5O6JKhbIWGOHsThDx/FvtwSgh4fRMOC5H5qdU4K5BN/zetuwxlCzTG8p6g4NN0ELdrpAhNgHMni8OptamvccKp4Po+XTGULdCgXhAEaRYfLdaw0YD4h0bTxRYiz19UH07BO32O +2v5FqZ1GNUkhxBp/6lPsLHgZC5Hp6g2bg303dJOhbIHGdQ+qYdeceaMUGG9KZgVanZqrdkMf9v+uNwmVLVDnBF8Oma6R8dscATYh04982M3b4qAY9t48E1TZTgxB0LC/mNIJNE4YUZujfbdraHMEIv3+7595jclAUM5frTINjjBs3F9M6QAa2oiRAsLOvkqYWsKpxIWjxeHUyqPv1WzoaX7v1VBKqZ0GrhiZxzwuXEnUFE5xciooDKds361jXjVq1iMpZUs0unUvQcHy5PdaTqfE3z2xq/B0CvL6CSpurG3697SeSim109AVQzLXbftvnfAZf6Mh6Z9/f0DORiPa0J+4lqx8eTeRVFkoW6DRwhAIDROjl00YO5wSm7SPZgiLnHAKYkdu9fgVlMFUQrvYK1ug4cLIPOYP3x6oam9Q+M7k63+WDXNOp0SM3XVroIIy2KO6ULbCNggjeszvun2stnDq+9+fCsIpw54bg365scC+mMuTouSxHcIQiBgmxicQxqrFExGITQUPnggsmBNOsetaX1hGGcSAnkspW2FbhJEJp47e6vdM7EXDmuTLf1ZNTs0rCNs9gTKnTkwPqCyUrbBNwojCqcHbR7yawqlvf33NS4MTHNpX5tJHuKtbIyllK2yXMKJwKnVpTGoKp/x7T5iT7API/pLZdIJ71Q1B2RLbJoxMOHX8Zl9N4VTi5d+LRpjZaZCC1ZLnUrCp/brDULbENgojCqeGbh+q5dxW0j/+fimgCEUImsWvpbo3UcI9fRpJKVui0VdCCiAIeTXLZNxbhUIw2HN+d8bU36z9u5IoGS0FN/fofRBlS2yzMKK7U98mV2qpeYWfOHyyV0REfjxaSZZsGxAM3xL16FS2xHYLo1anqOit4ncdHOmT1c8fbOn1QoKbe3XrrWyNbRfGFmpehYANTEp8myzpzEPjHbxKXTCUrbEDwqjJKSr7VpACKbPc0PynV2WhbJHtPJXaAITYvb+NxK95FYgVQEo7 +gBDB2b4dkbvSVuzMFIqqj57FcIqqdmDj7b8mGkgpW2Wnnq2xnaKqHNV2aT8lpQ7sWNBBkObX5HwNp1Nlx7w5rE1jlK2zc9F4ZLw5+9LULZwixL90RHu2KnVgJ7epBAWfZ9brFE4RWD9/xkIjKWXr7Oj5TeQUNfmtLuEUgfVTF63eHlTqwc4ebFJgjX36ug7hFIH1k6OOvq+KUgM7feIfddKY8bYaThHinbqoulDqxE4LI1LGynTVPualRhH/7FnVhVIvdlwYQhEBn79ksvZFg6C9eFx1odSNnRdGZtFYmFmqeQ9OEyQn9qsulPrRDMKITqf82bcmUcuiQcDrvzKQ1+tVUbZGUwgjc3fqy5OVGqs0DoynrVH/A6V+NIcwMuGUN/teYu40CAQ4c1r0HohSV5pFGJlFY+7pYtLEkAYh/sDosG4vlDrTNMLILBrBq9dBstqgiEAgx84ldXuh1JsmEkZ0cCvLzz6jqniKQBgOndujYZRSf5pJGJlFQ74+/5GoeD5FwAY9J48ZDaOUBtBcwshIw354vZRIsHRERQjCsPvI8a7MMqMo9aXZhJGZ6MGHt0smUfLDgaHtPXS0R3S5UBpD0wljI54KPr//YRMurwYwtInBQwfSKgulYTShMDakIfOf5tdoDLIt+CAkLRP9e/fvFg2ilAbSlMLI2P1D1r8t/PgVbJjlUATJrl1DQwPYeIGiNIYmFUZWGmJ/raz88nxLJFLp7r7enkTONxWlQTStMKTU9I/OcVUVSkNpZmFIRhtZ38HoP1QTSuNpcmFEbLYy3ulPonQKLSEMRdludsLUWVGaHhWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWG +ojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKAxWGojhQYSiKg/8fAqku5u3SMCkAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMTEtMDlUMDA6NDU6MDYrMDA6MDB4EpdOAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTExLTA5VDAwOjQ1OjA2KzAwOjAwCU8v8gAAAABJRU5ErkJggg== + es-MX true diff --git a/Inicio.aspx.vb b/Inicio.aspx.vb index 015adfd0b..9bdb20b9e 100644 --- a/Inicio.aspx.vb +++ b/Inicio.aspx.vb @@ -152,10 +152,6 @@ Partial Class Inicio Response.Redirect("/PortalProveedor/PortalProveedor.aspx") End If - If UsuarioActual.CveEmpresa = 66 Then - LtlTitulo.Text = "Sistema Integral de Información Gluyas" - End If - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaContabilidad Then Dim ObjPolizas As New ClsContPAQi(UsuarioActual.Empresa) If ObjPolizas.GetPolizasCuadre() And ObjPolizas.DtResultados.Rows.Count > 0 Then diff --git a/Inventarios/Kardex.aspx b/Inventarios/Kardex.aspx index d08f6290c..3d498a255 100644 --- a/Inventarios/Kardex.aspx +++ b/Inventarios/Kardex.aspx @@ -164,13 +164,12 @@
- Producto:
- +
<%----%> diff --git a/Inventarios/Kardex.aspx.vb b/Inventarios/Kardex.aspx.vb index fa4336ed0..8beae4fb0 100644 --- a/Inventarios/Kardex.aspx.vb +++ b/Inventarios/Kardex.aspx.vb @@ -54,6 +54,7 @@ Partial Class Inventarios_Kardex If UsuarioActual.CveUsuario = 100 Then LblPS.ToolTip = ddlProducto2.SelectedValue + lblAlm.InnerText = ddlProducto2.SelectedValue End If End If @@ -180,6 +181,7 @@ Partial Class Inventarios_Kardex If UsuarioActual.CveUsuario = 100 Then LblPS.ToolTip = ddlProducto2.SelectedValue + lblAlm.InnerText = ddlProducto2.SelectedValue End If TxtSerie.Text = "" diff --git a/Inventarios/KardexAlmacenHorizontal.aspx.vb b/Inventarios/KardexAlmacenHorizontal.aspx.vb index 87eee4512..044361971 100644 --- a/Inventarios/KardexAlmacenHorizontal.aspx.vb +++ b/Inventarios/KardexAlmacenHorizontal.aspx.vb @@ -39,11 +39,12 @@ Partial Class Inventarios_KardexAlmacen CargaFuncionalidad105() CargaPS() - Using ObjPS As New ClsProductosServicios - If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarca.DataSource = ObjPS.DtResultados.Copy().FiltraParametros("", Orderby:="Marca") - End If - End Using + 'Using ObjPS As New ClsProductosServicios + ' If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarca.DataSource = ObjPS.DtResultados.Copy().FiltraParametros("", Orderby:="Marca") + ' End If + 'End Using + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataBind() DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 5be5719cd..f7a1e120d 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -4350,8 +4350,6 @@ Partial Class Inventarios_RecepcionAlmacen TipoCambio = 0 TipoMovimiento = 1 - - If ObjInventario.RecepcionAlmacenOCGet(CveOC, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then DtDatosDetalle = Nothing CreaDtDetalle() @@ -4359,7 +4357,10 @@ Partial Class Inventarios_RecepcionAlmacen CreaDtLoteDetalle() CreaDTInv(ObjInventario.DtResultados.FiltraParametros("CantidadCompra = 0")) BtnGuardar.Visible = True - + 'cuando están todos los detalles de la compra, nos indica que se va a recibir la totalidad de la compra + If DtDatosDetalle.Rows.Count = DtDatosDetalle.Rows(0)("NumDetalles").ToString.ToEntero Then + RecibidaCompleta = True + End If ''MONEDA DIFERENTE If CveMoneda <> 1 Then diff --git a/Inventarios/RepEntregaAlmacenRuta.aspx b/Inventarios/RepEntregaAlmacenRuta.aspx index 489d0cbbe..201541830 100644 --- a/Inventarios/RepEntregaAlmacenRuta.aspx +++ b/Inventarios/RepEntregaAlmacenRuta.aspx @@ -103,49 +103,44 @@ DataKeyNames="CveSubProyecto, CveEntregaAlmacen,Estatus,CveCliente,CveDireccionOrigen,CveDireccionDestino,CveCamion,CveChofer,FechaEntrega,CveAlmacen,Tipo,AplicaCP,RFCReceptor,RFCEmisor,CveTimbre,CvePAC,FolioFiscal,TimbreTipoDocto,CveMovimiento,FechaLlegada,CveCamionRemolque1,CveCamionRemolque2,Distancia,CveConfigAutoTransporte,SerieFolio,DireccionOrigen,Direccion" AutoGenerateColumns="False" EmptyDataText="No se encontraron Registros con los filtros especificados" CssClass="table table-striped table-advance table-hover Widthall mysmallbtn ScrollAD" data-sort="true" GridLines="None" EmptyDataRowStyle-HorizontalAlign="Center" OnRowDataBound="GVDatos_RowDataBound"> - - - + + - - + - + - - + - - + - - + + - - - + - - + + - - - + + + - - + + + @@ -156,7 +151,7 @@ - + diff --git a/Inventarios/RepEntregaAlmacenRuta.aspx.cs b/Inventarios/RepEntregaAlmacenRuta.aspx.cs index c8c96d15f..3dc47a24d 100644 --- a/Inventarios/RepEntregaAlmacenRuta.aspx.cs +++ b/Inventarios/RepEntregaAlmacenRuta.aspx.cs @@ -619,7 +619,7 @@ public partial class General_RepEntregaAlmacenRuta : ClsPaginas { if (e.Row.RowType == DataControlRowType.DataRow) { - e.Row.Cells[11].Text = ""; + e.Row.Cells[13].Text = ""; LinkButton LnkEditar = e.Row.FCLinkButton("LnkEditar"); LinkButton LnkTimbrar = e.Row.FCLinkButton("LnkTimbrar"); LinkButton LnkCancelaTimbre = e.Row.FCLinkButton("LnkCancelaTimbre"); diff --git a/Sistemas/UsuarioDetalle.aspx b/Sistemas/UsuarioDetalle.aspx index c6e3e9dc6..3be2a8771 100644 --- a/Sistemas/UsuarioDetalle.aspx +++ b/Sistemas/UsuarioDetalle.aspx @@ -2563,19 +2563,51 @@
+
- -
+
+
+
+ +
+
+
+
Fecha Inicio:
+
+
+ + + + +
+ + +
+
Fecha Fin:
+
+
+ + + + +
+ + +
+
+
+
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info">
-
+
@@ -2592,6 +2624,9 @@
+ + + diff --git a/Sistemas/UsuarioDetalle.aspx.vb b/Sistemas/UsuarioDetalle.aspx.vb index f8e068c35..a4f9dbb0b 100644 --- a/Sistemas/UsuarioDetalle.aspx.vb +++ b/Sistemas/UsuarioDetalle.aspx.vb @@ -3,10 +3,11 @@ Option Strict On Imports System.Data Imports Extensiones - +Imports Microsoft.Reporting.WebForms + Partial Class Sistemas_UsuarioDetalle - Inherits ClsPaginas - + Inherits ClsPaginas + #Region "P R O P I E D A D E S" Private Property DTEstatusSubProyectos As DataTable Get @@ -403,10 +404,10 @@ Partial Class Sistemas_UsuarioDetalle Set(value As Integer) ViewState("CveEmpresaAnterior") = value End Set - End Property + End Property #End Region - - + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then @@ -419,6 +420,8 @@ Partial Class Sistemas_UsuarioDetalle Exit Sub End If + TxtFechaIBitacora.Text = Now.AddMonths(-1).ToString("dd/MM/yyyy") + TxtFechaFBitacora.Text = Now.ToString("dd/MM/yyyy") ViewState("CveUsuario") = PreviousPage.CurrentUsuario ViewState("CveRol") = -1 @@ -482,17 +485,17 @@ Partial Class Sistemas_UsuarioDetalle End Using End If - End Sub - - 'DOCUMENTACION - 'LOS CAMPOS DE DATATABLE "ACCION" SE REFIERE AL ESTATUS DE LOS CAMBIOS QUE OCURRIERON ANTES DE DARLE GUARDAR - ' 0/NULL/VACIO = ORIGINAL (SIN CAMBIO) - ' 1 = AGREGADO - ' 2 = ELIMINADO - ' 3 = NADA (AGREGADO Y ELIMINADO): CUANDO AGREGA UN REGISTRO Y LO ELIMINA, ES DECIR, NO SE GUARDA NADA - ' 4 = UPDATE - - + End Sub + + 'DOCUMENTACION + 'LOS CAMPOS DE DATATABLE "ACCION" SE REFIERE AL ESTATUS DE LOS CAMBIOS QUE OCURRIERON ANTES DE DARLE GUARDAR + ' 0/NULL/VACIO = ORIGINAL (SIN CAMBIO) + ' 1 = AGREGADO + ' 2 = ELIMINADO + ' 3 = NADA (AGREGADO Y ELIMINADO): CUANDO AGREGA UN REGISTRO Y LO ELIMINA, ES DECIR, NO SE GUARDA NADA + ' 4 = UPDATE + + #Region " C A R G A R - D A T O S " Private Sub CargaDatos() @@ -756,7 +759,7 @@ Partial Class Sistemas_UsuarioDetalle Public Sub CargaBitacora() Dim ObjUsuario As New ClsSisUsuarios - If ObjUsuario.GetBitacora(CveUsuario) Then + If ObjUsuario.GetBitacora(CveUsuario, TxtFechaIBitacora.Text.ToDateTime(), TxtFechaFBitacora.Text.ToDateTime()) Then GVBitacora.DataSource = ObjUsuario.DtResultados Else GVBitacora.DataSource = Nothing @@ -782,23 +785,23 @@ Partial Class Sistemas_UsuarioDetalle If CveTipoDocumentoAsignado <> "-1" Then DdlTipoDocumento.SelectedValueExist(CveTipoDocumentoAsignado) UpFiltrosAsignarPermiso.Update() - End Sub + End Sub #End Region - - 'Private Sub CargaSucursal() - ' DtSubProyectos2 = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveSubProyecto =" & DdlSubProyectos.SelectedValue.ToEntero) - ' If DtSubProyectos2.Rows.Count > 0 Then - ' Dim dr As DataRow - ' dr = DtSubProyectos2(0) - ' CveSucursal = dr("CveSucursal").ToString.ToEntero - ' Else - ' CveSucursal = -1 - ' End If - - 'End Sub - + + 'Private Sub CargaSucursal() + ' DtSubProyectos2 = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveSubProyecto =" & DdlSubProyectos.SelectedValue.ToEntero) + ' If DtSubProyectos2.Rows.Count > 0 Then + ' Dim dr As DataRow + ' dr = DtSubProyectos2(0) + ' CveSucursal = dr("CveSucursal").ToString.ToEntero + ' Else + ' CveSucursal = -1 + ' End If + + 'End Sub + #Region " G U A R D A R - U P D A T E " - + Private Function ValidaUsername(Username As String, Correo As String) As Boolean Dim Retorno As Boolean = True 'If CveUsuario = -1 Then @@ -1441,10 +1444,10 @@ Partial Class Sistemas_UsuarioDetalle Catch ex As Exception OnError("Ocurrió error al mandar MAIL", ex) End Try - End Sub + End Sub #End Region - - + + #Region " E L I M I N A R - U S U A R I O " Protected Sub BtnEliminar_Click(sender As Object, e As System.EventArgs) Handles BtnEliminar.Click ''DENTRO DEL PROCEDIMIENTO ELIMINA TODO LO RELACIONADO CON EL USUARIO (ALMACENES, SUBPROYECTOS, ACCESO A EMPRESAS...) @@ -1456,10 +1459,10 @@ Partial Class Sistemas_UsuarioDetalle Alert("Ocurrió un error al eliminar el usuario. Por favor vuelva a intentar", TipoMensaje.MsgError) End If ObjUsuario.Dispose() - End Sub + End Sub #End Region - - + + #Region " CONTRASEÑA " Protected Sub LnkRestablecer_Click(sender As Object, e As EventArgs) Handles LnkRestablecer.Click Dim Usuario As New ClsSisUsuarios @@ -1476,12 +1479,12 @@ Partial Class Sistemas_UsuarioDetalle End Sub Protected Sub LnkVerCodigoAcceso_Click(sender As Object, e As EventArgs) Handles LnkVerCodigoAcceso.Click Alert(CodigoAcceso) - End Sub - - + End Sub + + #End Region - - + + #Region "TAB - ASIGNACIONES" Protected Sub DdlEmpresaAsignaciones_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEmpresaAsignaciones.SelectedIndexChanged @@ -1543,8 +1546,8 @@ Partial Class Sistemas_UsuarioDetalle DtAsignacionesMultiEmpresa.Columns.Add("CveSucursal", GetType(Integer)) DtAsignacionesMultiEmpresa.Columns.Add("CveAlmacen", GetType(Integer)) DtAsignacionesMultiEmpresa.Columns.Add("CveTipoDocumento", GetType(String)) - End Sub - + End Sub + #Region " PROYECTOS-SUBPROYECTOS " Private Sub CargaProyectos() DdlProyecto.Items.Clear() @@ -1932,8 +1935,8 @@ Partial Class Sistemas_UsuarioDetalle End If End If ChkAsignarAllProyectos.Checked = False - End Sub - + End Sub + #Region "GV SUBPROYECTOS" Protected Sub GvSubProyectos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvSubProyectos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -2035,14 +2038,14 @@ Partial Class Sistemas_UsuarioDetalle GvSubProyectos.EditIndex = -1 CargaGvSubProyectos() - End Sub - + End Sub + #End Region - + #End Region - + #Region " ALMACENES " - + Private Function GetAlmacenesSinGV() As String Dim SB As New StringBuilder Dim prefix As String = "" @@ -2151,8 +2154,8 @@ Partial Class Sistemas_UsuarioDetalle Private Sub CargaGVAlmacen() GvAlmacenes.DataSource = DtAlmacenes.FiltraParametros(String.Format("CveEmpresa = {0} And (isnull(Accion,0) < 2 Or Accion = 4)", DdlEmpresaAsignaciones.SelectedValue.ToEntero)) GvAlmacenes.DataBind() - End Sub - + End Sub + #Region "GV ALMACENES" Protected Sub GvAlmacenes_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvAlmacenes.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -2239,11 +2242,11 @@ Partial Class Sistemas_UsuarioDetalle GvAlmacenes.EditIndex = -1 CargaGVAlmacen() - End Sub + End Sub #End Region - + #End Region - + #Region " CUENTAS BANCARIAS " Private Sub CargaCuentasBancarias() DdlCuentasBancarias.Items.Clear() @@ -2306,9 +2309,9 @@ Partial Class Sistemas_UsuarioDetalle DtCuentasBancarias.AcceptChanges() CargaGvCuentasBancarias() - End Sub + End Sub #End Region - + #Region " ESTATUS DE ÓRDENES DE COMPRA" Private Sub CargaEstatusOrdenesCompra() ' Exit Sub @@ -2537,9 +2540,9 @@ Partial Class Sistemas_UsuarioDetalle Else CargaGridEstatusUsuarioOC("OC") End If - End Sub + End Sub #Region "GRIDVIEW" - + Protected Sub GvEstatusUsuariosREQ_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEstatusUsuariosREQ.RowDataBound If e.Row.RowType = DataControlRowType.Header Then For i As Integer = 2 To GvEstatusUsuariosREQ.Columns.Count - 1 @@ -2816,13 +2819,13 @@ Partial Class Sistemas_UsuarioDetalle End If Next End If - End Sub - - + End Sub + + #End Region - + #End Region - + #Region "ESTATUS DE ORDENES DE SERVICIO" Private Sub CargaEstatusOS() CreaGridEstatusOS() @@ -2975,9 +2978,9 @@ Partial Class Sistemas_UsuarioDetalle End If Next Next - End Sub + End Sub #End Region - + #Region " ESTATUS ORDENES DE COMPRA - CLASIFICACIONES USUARIO OC " Private Sub InicializaEstasClasificacionesOC() @@ -3039,15 +3042,15 @@ Partial Class Sistemas_UsuarioDetalle ObjOC.Dispose() CargaGVOCClasificaciones() - End Sub - - - + End Sub + + + #End Region - + #End Region - - + + #Region "TAB - ACCESO MODULOS" Public Sub CargaModulosAcceso() Dim ObjPermisos As New ClsSisUsuarios @@ -3133,10 +3136,10 @@ Partial Class Sistemas_UsuarioDetalle Alert("Los Permisos se eliminaron correctamente.", TipoMensaje.MsgInformacion, "window.location.href=""/Sistemas/Usuarios.aspx""") End If ObjUsuario.Dispose() - End Sub + End Sub #End Region - - + + #Region "TAB - PERMISO MODULOS" Public Sub CargaModulosPermisos() Dim ObjProcesos As New ClsSisUsuarios @@ -3236,10 +3239,10 @@ Partial Class Sistemas_UsuarioDetalle Alert("Los Procesos se eliminaron correctamente.", TipoMensaje.MsgInformacion, "window.location.href=""/Sistemas/Usuarios.aspx""") End If ObjUsuario.Dispose() - End Sub + End Sub #End Region - - + + #Region "TAB - ACCESO EMPRESAS" Private Sub CargaEmpresas() Dim ClsUsuarios As New ClsSisUsuarios @@ -3429,10 +3432,10 @@ Partial Class Sistemas_UsuarioDetalle Private Sub LnkRenviaCorreo_Click(sender As Object, e As EventArgs) Handles LnkRenviaCorreo.Click EnviaCorreo() Alert("Correo enviado con exito.", TipoMensaje.MsgInformacion) - End Sub + End Sub #End Region - - + + #Region "TAB - RESTRICCIONES ACCESO " Private Sub InicializaRestricciones() CargaDtRestricciones() @@ -3645,8 +3648,8 @@ Partial Class Sistemas_UsuarioDetalle CargaGvRestricciones() RegistraScript("$('#DivAgregarRestricción').modal('hide')") - End Sub - + End Sub + #Region " GV " Private Sub GvRestricciones_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvRestricciones.RowCommand @@ -3736,13 +3739,13 @@ Partial Class Sistemas_UsuarioDetalle End If CargaGvRestricciones() - End Sub + End Sub #End Region - - + + #End Region - - + + #Region "TAB - INDICADORES" Public Sub CargaGridIndicadores() Dim Objeto As New ClsIndicadores @@ -3759,11 +3762,11 @@ Partial Class Sistemas_UsuarioDetalle e.Row.FCCheckBox("chkIndicador").Checked = True End If End If - End Sub - + End Sub + #End Region - - + + #Region " CLONAR USUARIO " Private Sub InicializaClonarUsuario() DdlUsuarioClonar.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) @@ -3849,12 +3852,12 @@ Partial Class Sistemas_UsuarioDetalle 'CargaDatos() Return Retorno - End Function - - + End Function + + #End Region - - + + #Region " MANDA CORREO " Private Sub MandaCorreo(Asunto As String, Para As String, Body As String) Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) @@ -3862,13 +3865,13 @@ Partial Class Sistemas_UsuarioDetalle Dim Mail As New ClsSisMail() 'Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, Para, Asunto, "", "", Nothing, Body) Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body) - End Sub - - - + End Sub + + + #End Region - - + + #Region " ASIGNACIONES DE PERMISOS " Protected Sub DdlEmpresaAsignarPermiso_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEmpresaAsignarPermiso.SelectedIndexChanged CargaAsignaciones() @@ -3892,8 +3895,8 @@ Partial Class Sistemas_UsuarioDetalle CargaDtEstatusOC() CargaGvEstatusOC() - End Sub - + End Sub + #Region " EMPRESAS " Public Sub CargaDTEmpresasAsignar() Dim ObjPermisos As New ClsSisUsuarios @@ -3952,10 +3955,10 @@ Partial Class Sistemas_UsuarioDetalle CargaAsignaciones() - End Sub - + End Sub + #End Region - + #Region " ROLES " Private Sub CargaDtRolesAsignar() Dim ClsUsuarios As New ClsSisUsuarios @@ -4044,9 +4047,9 @@ Partial Class Sistemas_UsuarioDetalle DTRolesAsignar.AcceptChanges() CargaGVRolesAsignar() - End Sub + End Sub #End Region - + #Region " ALMACENES " Private Sub CargaDtAlmacenAsignar() Dim ClsUsuarios As New ClsSisUsuarios @@ -4137,11 +4140,11 @@ Partial Class Sistemas_UsuarioDetalle DtAlmacenesAsignar.AcceptChanges() CargaGVAlmacenAsignar() - End Sub - - + End Sub + + #End Region - + #Region " PROYECTOS-SUBPROYECTOS " Private Sub CargaDtSubProyectosAsignar() Dim ClsUsuarios As New ClsSisUsuarios @@ -4252,10 +4255,10 @@ Partial Class Sistemas_UsuarioDetalle DtSubProyectosAsignar.AcceptChanges() CargarGvSubProyectosAsignar() - End Sub - + End Sub + #End Region - + #Region " CUENTAS BANCARIAS " Private Sub CargaCuentasBancariasAsignar() DdlCuentasBancariasAsignar.Items.Clear() @@ -4340,9 +4343,9 @@ Partial Class Sistemas_UsuarioDetalle DtCuentasBancariasAsignar.AcceptChanges() CargaGvCuentasBancariasAsignar() - End Sub + End Sub #End Region - + #Region " MODULOS " Public Sub CargaDTModulosAsignar() Dim ObjPermisos As New ClsSisUsuarios @@ -4377,10 +4380,10 @@ Partial Class Sistemas_UsuarioDetalle End If End If - End Sub - + End Sub + #End Region - + #Region " PERMISOS " Public Sub CargaDTPermisosAsignar() Dim ObjPermisos As New ClsSisUsuarios @@ -4415,9 +4418,9 @@ Partial Class Sistemas_UsuarioDetalle End If End If - End Sub + End Sub #End Region - + #Region " INDICADORES " Public Sub CargaDTIndicadoresAsignar() Dim ObjIndicadores As New ClsSisUsuarios @@ -4445,13 +4448,13 @@ Partial Class Sistemas_UsuarioDetalle End If End If - End Sub + End Sub #End Region - - + + #End Region - - + + #Region " USUARIO CONTROLADO " Private Sub InicializaUsuarioControlado() Dim ClsUsuarios As New ClsSisUsuarios @@ -4501,12 +4504,12 @@ Partial Class Sistemas_UsuarioDetalle End If ClsUsuarios.Dispose() - End Sub + End Sub #End Region - - + + #Region "C O N T O L E S DE U S U A R I O S" - + #Region "ESTATUS DE ÓRDENES DE COMPRA" Private Sub CargaDtEstatusOCPermisos() Dim ClsUsuarios As New ClsSisUsuarios @@ -4627,10 +4630,10 @@ Partial Class Sistemas_UsuarioDetalle DTEstatusOC = dt DTEstatusOCAsignar = dt - End Sub + End Sub #End Region - - + + #Region "GV ESTATUS DE OC" Protected Sub GvEstatusOC_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEstatusOC.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -4741,11 +4744,11 @@ Partial Class Sistemas_UsuarioDetalle GvEstatusUsuariosOC.Columns(i).Visible = (dtValida IsNot Nothing AndAlso dtValida.Rows.Count = 1) End If Next - End Sub - + End Sub + #End Region #End Region - + Protected Sub LnkAgregarClasificacion_Click(sender As Object, e As EventArgs) If DtClasificaciones IsNot Nothing Then Dim CveClasificacion As Integer = DdlClasificacion.SelectedValue.ToEntero @@ -4872,10 +4875,10 @@ Partial Class Sistemas_UsuarioDetalle - End Sub - + End Sub + #Region "USUARIO RESPONSABLE" - + Protected Sub BtnUpdateUsuarioResponsable_Click(sender As Object, e As EventArgs) Dim ObjUsuarios As New ClsSisUsuarios If ObjUsuarios.UpdateUsuarioResponsableMasivo(CveUsuario, DdlUsuarioResponsable.SelectedValue.ToEntero) Then @@ -4883,10 +4886,10 @@ Partial Class Sistemas_UsuarioDetalle RegistraScript("$('#DivUpdateUsuarioResponsable').modal('hide')") End If ObjUsuarios.Dispose() - End Sub - + End Sub + #End Region - + Protected Sub LnkAutorizarEquipo_Click(sender As Object, e As EventArgs) 'CveUsuario Dim AdsCodex As String = Encripta(String.Format("{0}_{1}_{2}", CveUsuario, DateTime.Now.Ticks, UsuarioActual.CveUsuario)) @@ -4957,6 +4960,46 @@ Partial Class Sistemas_UsuarioDetalle LblClonarMensaje.Text = "" UpClonarUsuario.Update() - End Sub - + End Sub + + Protected Sub BtnConsultarBitacora_Click(sender As Object, e As EventArgs) + CargaBitacora() + + UpSistema.Update() + End Sub + Protected Sub LnkExportarBitacora_Click(sender As Object, e As EventArgs) + Dim DtDatos As DataTable = Nothing + Dim ObjUsuario As New ClsSisUsuarios + If ObjUsuario.GetBitacora(CveUsuario, TxtFechaIBitacora.Text.ToDateTime(), TxtFechaFBitacora.Text.ToDateTime()) Then + DtDatos = ObjUsuario.DtResultados.Copy() + End If + ObjUsuario.Dispose() + + Dim StrFiltro As New StringBuilder + + If TxtFechaIBitacora.Text <> "" Then StrFiltro.AppendFormat(" Fecha Inicio : {0}", TxtFechaIBitacora.Text.ToDate.ToShortDateString) + If TxtFechaFBitacora.Text <> "" Then StrFiltro.AppendFormat(" Fecha Fin : {0}", TxtFechaFBitacora.Text.ToDate.ToShortDateString) + + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + Dim FechaI, FechaF As String + FechaI = TxtFechaIBitacora.Text + FechaF = TxtFechaFBitacora.Text + + Dim params As New List(Of ReportParameter) + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("FechaInicio", FechaI)) + params.Add(New ReportParameter("FechaFin", FechaF)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) + params.Add(New ReportParameter("Filtros", StrFiltro.ToString)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + ImprimirPDF("Empresas/Grales/Formatos/BitacoraLogin.rdlc", DtDatos, params, String.Format("BitacoraRegistro-{0}", Now.ToDateTime.ToShortDateString)) + End Sub End Class diff --git a/Ventas/CatClasificaciones.aspx.vb b/Ventas/CatClasificaciones.aspx.vb index eab05b55b..bf140a196 100644 --- a/Ventas/CatClasificaciones.aspx.vb +++ b/Ventas/CatClasificaciones.aspx.vb @@ -225,7 +225,18 @@ Partial Class CatClasificaciones Private Sub CargaCuentasContables(Optional IdCuentaPadre As Integer = -1) - If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + If UsuarioActual.Empresa.TipoContabilidad = 1 Then + + DdlCuentaGasto.DataValueField = "CveCuenta" + DdlCuentaGasto.DataTextField = "Cuenta" + Dim ObjContabilidad As New ClsContabilidad + If ObjContabilidad.GetCuentas(-1, "-1", 1, UsuarioActual.CveEmpresa) Then + DtCuentasContables = ObjContabilidad.DtResultados + 'Cuenta, CtaCodigo + DtCuentasContables.Columns("CtaCodigo").ColumnName = "Cuenta" + End If + ObjContabilidad.Dispose() + ElseIf UsuarioActual.Empresa.TipoContabilizacion = 1 Then Dim ObjEmpresa As New ClsSisEmpresas Dim Empresa As Empresa = Nothing @@ -238,9 +249,8 @@ Partial Class CatClasificaciones ObjContabilidad.Dispose() End If ObjEmpresa.Dispose() - ElseIf UsuarioActual.Empresa.TipoContabilizacion = 2 Then - DdlCuentaGasto.DataValueField = "CveCuenta" - DdlCuentaGasto.DataTextField = "Cuenta" + + End If diff --git a/Ventas/Clientes.aspx b/Ventas/Clientes.aspx index 7c74ab75d..ae60cc84c 100644 --- a/Ventas/Clientes.aspx +++ b/Ventas/Clientes.aspx @@ -308,16 +308,16 @@ - + -
  • +
  • - +
    - - + + @@ -358,43 +358,43 @@
    -
    -
    - -
    - - - Física - Moral +
    +
    + +
    + + + Física + Moral - - - -
    - -
    -
    + + + +
    + +
    +
    -
    - - - - +
    + + + +
    -
    -
    - - <%----%> - - +
    +
    + + <%----%> + +
    - +
    @@ -424,7 +424,7 @@
    -
    +
    @@ -480,8 +480,8 @@
    - -
    + +
    @@ -504,9 +504,9 @@
    -
    +
    + -
    @@ -514,7 +514,7 @@
    - +
    @@ -527,11 +527,11 @@
    -
    +
    - + @@ -618,50 +618,50 @@
    - - + +
    -
    +
    -
    +
    - +
    -
    - - +
    + + +
    -
    -
    -
    -
    - - - - +
    +
    +
    + + + + +
    -
    -
    -
    - - - +
    +
    + + + +
    -
    -
    -
    +
    +
    @@ -681,8 +681,8 @@
    - -
    + +
    @@ -691,7 +691,7 @@
    - +
    Frecuente @@ -699,33 +699,33 @@
    - -
    + +
    - - + +
    -
    +
    -
    -
    +
    +
    -
    -
    -
    +
    +
    +
    @@ -1107,8 +1107,8 @@ - - + +
    @@ -2557,7 +2557,7 @@ - + Archivos @@ -3058,6 +3058,35 @@
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    @@ -4164,7 +4193,7 @@
    - +
    @@ -4193,7 +4222,7 @@ - +
    @@ -4222,13 +4251,13 @@
    - - + +
    +
    -
    @@ -4488,16 +4517,16 @@ - - + + -
    <%# Eval("CodigoPS") %>
    +
    <%# Eval("CodigoPS") %>
    - - + + @@ -4505,18 +4534,18 @@ <%-- --%> - + - + -
    <%# Eval("Usuario") %>
    +
    <%# Eval("Usuario") %>
    - + @@ -4551,11 +4580,11 @@ - + - +
    @@ -4569,7 +4598,7 @@
    -
    +
    @@ -4579,25 +4608,25 @@ CssClass="table table-striped table-advance table-hover ScrollAD " ShowHeader="True" EmptyDataText="No se encontraron resultados." ShowHeaderWhenEmpty="true" AutoGenerateColumns="False" AllowPaging="False" ShowFooter="False"> - - - + + + - - - - + + + + - + - - + + - + @@ -4711,7 +4740,7 @@
    -
    +
    @@ -4719,10 +4748,10 @@
    -
    +
    - +
    @@ -4857,8 +4886,8 @@ Agregar
    --%> -
    -
    +
    +
    @@ -5110,7 +5139,7 @@ - +
    @@ -5363,14 +5392,15 @@
    -
    +
    - +
    - +
    @@ -6364,7 +6394,7 @@ <%--table table-striped table-advance table-hover Widthall ScrollAD tabla_correcto grides Widthall mysmallbtn--%> - + @@ -6700,7 +6730,7 @@
    -