From cb7455f17a7828e62f1d6585bcbd057e6142fe6c Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:11:39 -0700 Subject: [PATCH 01/63] --ignorar el ajuste del pu si no tiene movimeitnos de salida --- OC/OC.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 526093576..146939ec4 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -2858,7 +2858,7 @@ Partial Class OC '2018.11.24 se cambia concepto 176, de cargo a abono negativo., petición MALL '2019.03.26 se cambia concepto 177, de abono a cargo., petición MALL '2019.04.10 se cambia concepto 177, de cargo a abono., petición MALL - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, If(ConceptoSalida = 0, IdCtaContableAlmacen, IdCtaContableRecepcionOCER), -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, SerieFolio, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then TieneError = True Exit For From 28b42b681fcd74c9d14782833fe9f7d5adedd2d3 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:12:07 -0700 Subject: [PATCH 02/63] - envio de parametro de usuario --- OC/CatEstatus.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OC/CatEstatus.aspx.vb b/OC/CatEstatus.aspx.vb index 84303384c..f44f0a3d6 100644 --- a/OC/CatEstatus.aspx.vb +++ b/OC/CatEstatus.aspx.vb @@ -280,7 +280,7 @@ Partial Class OC_CatEstatus Dim CveSuperior As Integer = If(tblSuperior.Visible = True, ddlSuperior.SelectedValue.ToEntero, -1) If hdnCveEstatusUsuarios.Value.ToEntero = -1 Then - If objOC.AddEstatusUsuarios(hdnCveEstatus.Value.ToEntero, CboSubProyecto.SelectedValue.ToEntero, hdnCveUsuario.Value.ToEntero, True, CveSuperior, LimiteSuperior, LimiteInferior) Then + If objOC.AddEstatusUsuarios(hdnCveEstatus.Value.ToEntero, CboSubProyecto.SelectedValue.ToEntero, hdnCveUsuario.Value.ToEntero, True, CveSuperior, LimiteSuperior, LimiteInferior, UsuarioActual.CveUsuario) Then RegistraScript(String.Format("{0}.style.background-color='yellow'", IDCellYellow.Value)) End If From 5264f95b7d05aeb7d767f9a6960ff11f53fe1e0f Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:12:28 -0700 Subject: [PATCH 03/63] -- cambio en alerta de guardado --- Contabilidad/RegPrePoliza.aspx.vb | 59 +++++++++++++++++-------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/Contabilidad/RegPrePoliza.aspx.vb b/Contabilidad/RegPrePoliza.aspx.vb index cd307959c..28d7b8831 100644 --- a/Contabilidad/RegPrePoliza.aspx.vb +++ b/Contabilidad/RegPrePoliza.aspx.vb @@ -982,34 +982,39 @@ Partial Class ContabilidadC_RegPrePoliza Else MsgError = "No se pudo insertar la póliza" - End If - Catch ex As Exception - MsgError = "Error" - End Try - - If MsgError = "" Then - 'MENSAJE IE - If CveIE > 0 Then - MensajeAlert.AppendFormat("

Folio Bancario: {1}", CveIE, FolioIE) - Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion, "window.location.reload()") - Else - Alert(If(MensajeAlert.ToString = "", "Se registro con exito.", MensajeAlert.ToString), TipoMensaje.MsgInformacion, "window.location.reload()") - End If - - ObjIE.Commit() - If Conta IsNot Nothing Then Conta.Commit() - - UPPDocumento.Update() - - TxtObservaciones.Text = "" - GvMov.DataBind() - TxtFecha.Text = "" - TxtObservaciones.Text = "" - Else - ObjIE.RollBack() + End If + + If MsgError = "" Then + + 'MENSAJE IE + If CveIE > 0 Then + MensajeAlert.AppendFormat("

Folio Bancario: {1}", CveIE, FolioIE) + Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion, "window.location.reload()") + Else + Alert(If(MensajeAlert.ToString = "", "Se registro con exito.", MensajeAlert.ToString), TipoMensaje.MsgInformacion, "window.location.reload()") + End If + + ObjIE.Commit() + If Conta IsNot Nothing Then Conta.Commit() + + 'UPPDocumento.Update() + 'TxtObservaciones.Text = "" + 'GvMov.DataBind() + 'TxtFecha.Text = "" + 'TxtObservaciones.Text = "" + Else + ObjIE.RollBack() + If Conta IsNot Nothing Then Conta.RollBack() + End If + Catch ex As Exception + ObjIE.RollBack() If Conta IsNot Nothing Then Conta.RollBack() - End If - + Alert("Ocurrio un error al registrar el movimiento", TipoMensaje.MsgInformacion) + ex.GuardaLog(ex.Message) + End Try + + + ObjIE.Dispose() ObjMov.Dispose() If Conta IsNot Nothing Then Conta.Dispose() From 2d317f5baf359c4e03b34745ed21c065c5c01e5b Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:12:44 -0700 Subject: [PATCH 04/63] -- cambio en la cuenta contable enviada --- Compras/ReembolsosComprobaciones.aspx.vb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Compras/ReembolsosComprobaciones.aspx.vb b/Compras/ReembolsosComprobaciones.aspx.vb index 36b4176d3..f5d83d58c 100644 --- a/Compras/ReembolsosComprobaciones.aspx.vb +++ b/Compras/ReembolsosComprobaciones.aspx.vb @@ -644,7 +644,7 @@ Partial Class Compras_ReembolsosComprobaciones ConceptoMovimiento = $"{gvr.DataKey("Proveedor")} F:{gvr.DataKey("SerieFolio")} {If(DdlPersonal.Visible, DdlPersonal.SelectedItem.Text, DdlCajaChica.SelectedItem.Text)}" Referencia = gvr.DataKey("SerieFolio").ToString IdCtaProveedor = gvr.DataKey("IdCtaContProveedores").ToEntero - CveCuentaProveedor = gvr.DataKey("IdCtaContProveedoresSIG").ToEntero + ImportePagar = gvr.FCTextBox("TxtAbonar").Text.ToDecimal ImporteOriginal = gvr.FCTextBox("TxtAbonar").Text.ToDecimal @@ -660,6 +660,11 @@ Partial Class Compras_ReembolsosComprobaciones Case Else End Select End If + If gvr.DataKey("CveTipoConcepto").ToEntero = 2 Then + IdCtaProveedor = gvr.DataKey("IdCtaContAcreedor").ToEntero + Else + IdCtaProveedor = gvr.DataKey("IdCtaContProveedores").ToEntero + End If If SaldoCheque > 0 Then ImporteMovto = If(ImportePagar > SaldoCheque, SaldoCheque, ImportePagar) From 0f53eedd2661c7df76f3d1e7a05c0a81122bf49c Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:13:26 -0700 Subject: [PATCH 05/63] -- cambios en parametro de concepto de prepoliza --- Bancos/FluctuacionCambiaria.aspx.vb | 42 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx.vb b/Bancos/FluctuacionCambiaria.aspx.vb index b2b635433..98b0fec8d 100644 --- a/Bancos/FluctuacionCambiaria.aspx.vb +++ b/Bancos/FluctuacionCambiaria.aspx.vb @@ -20,12 +20,12 @@ Partial Class Bancos_FluctuacionCambiaria Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then - CargarCentrosDeCosto(Nothing, DdlSubproyectoBancos, Nothing, LblSubProyecto) - CargarCentrosDeCosto(Nothing, DdlsubProyectoVentas, Nothing, LblSubProyectoVentas) - CargarCentrosDeCosto(Nothing, DdlSubProyectoCompras, Nothing, LblSubProyectoCompras) - CargarCentrosDeCosto(Nothing, DdlSubProyectoFiliales, Nothing, LblSubProyectoFiliales) - CargarCentrosDeCosto(Nothing, DdlSubProyectoAcreedores, Nothing, LblSubProyectoAcreedores) - CargarCentrosDeCosto(Nothing, DdlSubProyectoDeudores, Nothing, LblSubProyectoDeudores) + CargarCentrosDeCosto(Nothing, DdlSubproyectoBancos, Nothing, LblSubProyecto, "") + CargarCentrosDeCosto(Nothing, DdlsubProyectoVentas, Nothing, LblSubProyectoVentas, "") + CargarCentrosDeCosto(Nothing, DdlSubProyectoCompras, Nothing, LblSubProyectoCompras, "") + CargarCentrosDeCosto(Nothing, DdlSubProyectoFiliales, Nothing, LblSubProyectoFiliales, "") + CargarCentrosDeCosto(Nothing, DdlSubProyectoAcreedores, Nothing, LblSubProyectoAcreedores, "") + CargarCentrosDeCosto(Nothing, DdlSubProyectoDeudores, Nothing, LblSubProyectoDeudores, "") CargaUltimaFluctuacion() End If @@ -347,9 +347,8 @@ Partial Class Bancos_FluctuacionCambiaria TipoMovto = False End If If Not Conta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, Math.Abs(Total), "Fluctuación Ventas", CveConceptoContable, "Fluctuación Ventas", Now, idCta, 0, ImporteMX:=Math.Abs(Total), CveCuenta:=CveCuenta, CveSubProyecto:=DdlsubProyectoVentas.SelectedValue.ToEntero) Then - If Not Conta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, Math.Abs(Total), "Fluctuación Ventas", CveConceptoContable, "Fluctuación Ventas", Now, idCta, 0, ImporteMX:=Math.Abs(Total), CveCuenta:=CveCuenta, CveSubProyecto:=DdlsubProyectoVentas.SelectedValue.ToEntero) Then - ErrorRegistrar = True - End If + ErrorRegistrar = True + End If Dim CveConconceptoCliente As Integer = 203 @@ -397,7 +396,6 @@ Partial Class Bancos_FluctuacionCambiaria Conta.IniciaTransacSQL() Dim ObjContPaq As New ClsContPAQi(UsuarioActual.Empresa) ObjContPaq.IniciaTransacSQL() - Dim CvePrePoliza As Integer = Conta.AddPrePolizas("Banc/FluctuaB", 1, 0, 0, 1, TxtFecha.Text.ToDate, "Fluctuación Bancaria", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Dim idCta As Integer = 0 Dim CveCuenta As Integer = 0 Dim CveCuentaPerdida, CveCuentaGanancia As Integer @@ -405,28 +403,28 @@ Partial Class Bancos_FluctuacionCambiaria Dim TipoMovto As Boolean = False Dim CveConceptoContable As Integer = 0 Dim ErrorRegistrar As Boolean = False - Dim TCCierreFluctuacion As Decimal = LtTipoCambioActual.Text.ToDecimal - + Dim TCCierreFluctuacion As Decimal = LtTipoCambioActual.Text.ToDecimal + Dim MesTCtexto As String = String.Format("{0} TC:{1}", TxtFecha.Text.ToDate.ToString("MMMM-yyyy"), TCCierreFluctuacion) + + Dim CvePrePoliza As Integer = Conta.AddPrePolizas("Banc/FluctuaB", 1, 0, 0, 1, TxtFecha.Text.ToDate, String.Format("Fluctuación Bancaria {0} ", MesTCtexto), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + CveCuentaPerdida = 0 ' 55379 CveCuentaGanancia = 0 ' 55382 idCtaPerdida = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria '1227 IdCtaGanancia = UsuarioActual.Empresa.IdCuentaGananciaCambiaria '1230 Dim TC As Decimal = 2 ' se pone 2, para que cumpla con el check constrains de complementarias - Total = LblTotalBancos.Text.ToDecimal - - - - - Dim CveConconceptoBancos As Integer = 204 - - - 'saco las cuentas de pérdida y ganancia + Total = LblTotalBancos.Text.ToDecimal + + Dim CveConconceptoBancos As Integer = 204 + + 'saco las cuentas de pérdida y ganancia For Each gvr As GridViewRow In GvCuentas.Rows Dim cb As CheckBox = gvr.FCCheckBox("ChkGenerarBancos") If cb.Checked Then Total = gvr.DataKey("Fluctuacion").ToDecimal Dim IdCtaComplementaria As Integer = gvr.DataKey("IdCtaAfectable").ToEntero - Dim ConceptoReferencia As String = $"{gvr.DataKey("Banco")} - {gvr.DataKey("NumCuenta")} " + Dim ConceptoReferencia As String = String.Format("{0} - {1} {2}", gvr.DataKey("Banco"), gvr.DataKey("NumCuenta"), MesTCtexto) 'MOVIMIENTO DE FLUCTUACION From b85454b2e5967fd138ced06ae80cdaa0371f4d0f Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:13:50 -0700 Subject: [PATCH 06/63] -- recepcion por OC --- Compras/Compras.aspx.vb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index be933f6a1..b71f8ecfd 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -15052,7 +15052,7 @@ Partial Class Compras_Compras 'SI PUEDE RECIBIR POR OC Y COMPRA ' si usa almacen, si tiene activado que reciba por OC, y que si la compra tipo Proveedor. que lo muestre - If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 AndAlso CveTipoConcepto = 1 Then + If UsuarioActual.CveEmpresa = 119 AndAlso UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 AndAlso CveTipoConcepto = 1 Then DivOCVinculaInv.Visible = True End If @@ -15434,15 +15434,16 @@ Partial Class Compras_Compras 'SI PUEDE RECIBIR POR OC Y COMPRA - If UsuarioActual.CveEmpresa.Contiene(119) Then - If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 And Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then - If DdlOCVinculaInv.SelectedValue.ToEntero <= 0 Then - Alert("El campo Tipo de recepción almacén es necesario. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If + + If UsuarioActual.CveEmpresa = 119 AndAlso UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 AndAlso CveTipoConcepto = 1 Then + + If DdlOCVinculaInv.SelectedValue.ToEntero <= 0 Then + Alert("El campo Tipo de recepción almacén es necesario. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + Exit Sub End If End If + If Math.Abs(HdnIEPSModificadoOC.Value.ToDecimal - LbIEPSOC2.Text.ToDecimal) > 0.05 AndAlso UsuarioActual.CveEmpresa.Contiene(119) Then Alert($"Hay una diferencia de IEPS entre la factura y la OC. Dif: {HdnIEPSModificadoOC.Value.ToDecimal - LbIEPSOC2.Text.ToDecimal}", TipoMensaje.MsgAdvertencia) Exit Sub @@ -19831,7 +19832,7 @@ Partial Class Compras_Compras End If Else '2018.11.24 se cambia concepto 177, de cargo a abono negativo., petición MALL - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), ConceptoPartida, Fecha, If(ConceptoSalida = 0, IdCtaContableAlmacen, IdCtaContableRecepcionOCER), -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=CveSubProyecto) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), ConceptoPartida, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=CveSubProyecto) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, ConceptoPartida, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then Retorno = False Exit For From a71c16b7caf7dc4f11590af70232c4391d5c3afa Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:14:06 -0700 Subject: [PATCH 07/63] columna de descripcion --- Compras/RepCxPDetalle.aspx | 12 +++++++++++- Compras/RepCxPDetalle.aspx.vb | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Compras/RepCxPDetalle.aspx b/Compras/RepCxPDetalle.aspx index 120b5ff4b..33b22246f 100644 --- a/Compras/RepCxPDetalle.aspx +++ b/Compras/RepCxPDetalle.aspx @@ -249,7 +249,7 @@ + CssClass="table table-striped table-advance table-hover Widthall ScrollAD" GridLines="None"> @@ -366,6 +366,14 @@ + + + Descripción + + + + + @@ -419,6 +427,8 @@ + + diff --git a/Compras/RepCxPDetalle.aspx.vb b/Compras/RepCxPDetalle.aspx.vb index 842000f1e..8a61cd2fe 100644 --- a/Compras/RepCxPDetalle.aspx.vb +++ b/Compras/RepCxPDetalle.aspx.vb @@ -621,6 +621,8 @@ Partial Class RepCxPDetalle GvDatos.Columns(13).Visible = False End If + GvDatos.Columns(14).Visible = ChkDescripcion.Checked + Personalizo = 1 If Personalizo = 1 Then ImgExcelPersonalizado.Visible = True From df8932c7e7d605f3c9bc7f20c93fa200688adeaf Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Oct 2020 18:20:31 -0700 Subject: [PATCH 08/63] label --- Bancos/FluctuacionCambiaria.aspx.vb | 46 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx.vb b/Bancos/FluctuacionCambiaria.aspx.vb index 4c6bd01d8..56901e562 100644 --- a/Bancos/FluctuacionCambiaria.aspx.vb +++ b/Bancos/FluctuacionCambiaria.aspx.vb @@ -20,7 +20,7 @@ Partial Class Bancos_FluctuacionCambiaria Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then - CargarCentrosDeCosto(Nothing, DdlSubproyectoBancos, Nothing, LblSubProyecto, "") + CargarCentrosDeCosto(Nothing, DdlSubproyectoBancos, Nothing, LblSubProyectoBancos, "") CargarCentrosDeCosto(Nothing, DdlsubProyectoVentas, Nothing, LblSubProyectoVentas, "") CargarCentrosDeCosto(Nothing, DdlSubProyectoCompras, Nothing, LblSubProyectoCompras, "") CargarCentrosDeCosto(Nothing, DdlSubProyectoFiliales, Nothing, LblSubProyectoFiliales, "") @@ -342,31 +342,31 @@ Partial Class Bancos_FluctuacionCambiaria Dim CveConconceptoCliente As Integer = 203 - 'saco las cuentas de pérdida y ganancia - For Each gvr As GridViewRow In GvVentas.Rows - Total = -gvr.DataKey("Fluctuacion").ToDecimal - - If gvr.DataKey("CveIE").ToEntero > 0 AndAlso gvr.DataKey("CveVenta").ToEntero < 0 Then - CveConconceptoCliente = 226 - Else - CveConconceptoCliente = 203 - End If - - 'movimiento de complementaria - If Not Conta.AddPrePolizasDetalle(CvePrePoliza, True, Total, gvr.DataKey("SerieFolio"), CveConconceptoCliente, gvr.DataKey("SerieFolio"), Now, IdCtaComplementaria, 0, CveVenta:=gvr.DataKey("CveVenta").ToEntero, TipoCambio:=TC, ImporteMX:=Total, ImporteME:=Total, CveCuenta:=CveCuentaComplementaria, CveIE:=gvr.DataKey("CveIE").ToEntero) Then - ErrorRegistrar = True - Exit For - End If - Next - - If Not ErrorRegistrar Then - Conta.Commit() - Alert(String.Format("La Fluctuación se ha generado
Ver PrePóliza", CvePrePoliza), TipoMensaje.MsgInformacion) + 'saco las cuentas de pérdida y ganancia + For Each gvr As GridViewRow In GvVentas.Rows + Total = -gvr.DataKey("Fluctuacion").ToDecimal + If gvr.DataKey("CveIE").ToEntero > 0 AndAlso gvr.DataKey("CveVenta").ToEntero < 0 Then + CveConconceptoCliente = 226 Else - Conta.RollBack() + CveConconceptoCliente = 203 End If - Conta.Dispose() + + 'movimiento de complementaria + If Not Conta.AddPrePolizasDetalle(CvePrePoliza, True, Total, gvr.DataKey("SerieFolio"), CveConconceptoCliente, gvr.DataKey("SerieFolio"), Now, IdCtaComplementaria, 0, CveVenta:=gvr.DataKey("CveVenta").ToEntero, TipoCambio:=TC, ImporteMX:=Total, ImporteME:=Total, CveCuenta:=CveCuentaComplementaria, CveIE:=gvr.DataKey("CveIE").ToEntero) Then + ErrorRegistrar = True + Exit For + End If + Next + + If Not ErrorRegistrar Then + Conta.Commit() + Alert(String.Format("La Fluctuación se ha generado
Ver PrePóliza", CvePrePoliza), TipoMensaje.MsgInformacion) + + Else + Conta.RollBack() + End If + Conta.Dispose() End Sub #End Region From 7a7c1f71eaeebed18ff7c4289d8b34ccea5997d2 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 8 Oct 2020 18:33:17 -0700 Subject: [PATCH 09/63] =?UTF-8?q?se=20agrego=20un=20nuevo=20cat=C3=A1logo?= =?UTF-8?q?=20de=20equivalencias=20en=20medidas=20para=20econollantas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsGenerales.vb | 81 ++++++++++++ App_Code/ClsPaginas.vb | 1 + Compras/CatTipoGasto.aspx | 2 +- General/CatMedidaEquivalencia.aspx | 96 ++++++++++++++ General/CatMedidaEquivalencia.aspx.cs | 132 ++++++++++++++++++++ Inventarios/PopUpExistenciasAlmacen.aspx | 27 +++- Inventarios/PopUpExistenciasAlmacen.aspx.vb | 11 ++ 7 files changed, 348 insertions(+), 2 deletions(-) create mode 100644 General/CatMedidaEquivalencia.aspx create mode 100644 General/CatMedidaEquivalencia.aspx.cs diff --git a/App_Code/ClsGenerales.vb b/App_Code/ClsGenerales.vb index 2b82c5a1b..16d1f7a61 100644 --- a/App_Code/ClsGenerales.vb +++ b/App_Code/ClsGenerales.vb @@ -1106,6 +1106,87 @@ Public Class ClsGenerales OnError("Ocurrió un error al eliminar el modelo", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try + Return Retorno + End Function + Public Function GetMedidasEquivalentes(CveEmpresa As Integer, Optional CveMedida As Integer = -1, Optional CveRin As Integer = -1) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Gral_MedidasEquivalenciasGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveMedida", SqlDbType.Int).Value = CveMedida + .Add("@CveRin", SqlDbType.Int).Value = CveRin + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener las equivalencias de medidas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + Public Function AddMedidasEquivalentes(CveMedida As Integer, CveRin As Integer, CveMedidaEquivalente As Integer, CveRinEquivalente As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Gral_MedidasEquivalenciasAdd") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveMedida", SqlDbType.Int).Value = CveMedida + .Add("@CveRin", SqlDbType.Int).Value = CveRin + .Add("@CveMedidaEquivalente", SqlDbType.Int).Value = CveMedidaEquivalente + .Add("@CveRinEquivalente", SqlDbType.Int).Value = CveRinEquivalente + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al agregar la equivalencia de medida", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + Public Function UpdateMedidasEquivalentes(CveMedidaEquivalencia As Integer, CveMedida As Integer, CveRin As Integer, CveMedidaEquivalente As Integer, CveRinEquivalente As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Gral_MedidasEquivalenciasUpdate") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveMedidaEquivalencia", SqlDbType.Int).Value = CveMedidaEquivalencia + .Add("@CveMedida", SqlDbType.Int).Value = CveMedida + .Add("@CveRin", SqlDbType.Int).Value = CveRin + .Add("@CveMedidaEquivalente", SqlDbType.Int).Value = CveMedidaEquivalente + .Add("@CveRinEquivalente", SqlDbType.Int).Value = CveRinEquivalente + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al agregar la equivalencia de medida", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + Public Function RemoveMedidasEquivalentes(CveMedidaEquivalencia As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Gral_MedidasEquivalenciasDelete") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveMedidaEquivalencia", SqlDbType.Int).Value = CveMedidaEquivalencia + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al eliminar la equivalencia de medida", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno End Function #End Region diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index c8384b872..8cef487fc 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4420,6 +4420,7 @@ Public Class ClsPaginas PaginaDict.Add("/General/CatRinTamanios.aspx".ToUpper(), 711) PaginaDict.Add("/General/CatMedidas.aspx".ToUpper(), 712) PaginaDict.Add("/General/CatSatListado69B.aspx".ToUpper, 1038) + PaginaDict.Add("/General/CatMedidaEquivalencia.aspx".ToUpper(), 773) #End Region diff --git a/Compras/CatTipoGasto.aspx b/Compras/CatTipoGasto.aspx index c1f4a738e..ac328153b 100644 --- a/Compras/CatTipoGasto.aspx +++ b/Compras/CatTipoGasto.aspx @@ -45,7 +45,7 @@ -
+
diff --git a/Inventarios/PopUpExistenciasAlmacen.aspx.vb b/Inventarios/PopUpExistenciasAlmacen.aspx.vb index b71e823e5..7b6ec9130 100644 --- a/Inventarios/PopUpExistenciasAlmacen.aspx.vb +++ b/Inventarios/PopUpExistenciasAlmacen.aspx.vb @@ -70,6 +70,7 @@ Partial Class Inventarios_Default DivRin.Visible = True CargarMedRin() DivMedRin.Visible = True + DivEquivalentes.Visible = True DivPS.Visible = False End If Dim Txt As String = IfNull(Request("Txt"), "").ToString @@ -89,6 +90,7 @@ Partial Class Inventarios_Default Protected Sub BtnBuscar_Click(sender As Object, e As System.EventArgs) Handles BtnBuscar.Click If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then CargarDatosMedRin() + CargaEquivalencia() Else CargaDatos(DDlPS.SelectedValue.ToEntero, 1) End If @@ -243,6 +245,15 @@ Partial Class Inventarios_Default UPDatos.Update() End Sub + Private Sub CargaEquivalencia() + Dim ObjGeneral As New ClsGenerales + If ObjGeneral.GetMedidasEquivalentes(UsuarioActual.CveEmpresa, DdlMedidas.SelectedValue.ToEntero(), DdlRin.SelectedValue.ToEntero()) Then + GvEquival.DataSource = ObjGeneral.DtResultados + End If + ObjGeneral.Dispose() + GvEquival.DataBind() + End Sub + Private Function ValidarFiltrosSeleccionados() As Boolean If DDlPS.SelectedValue.ToEntero > 0 Then Return True Return False From 145e805b1243b56a08ac5b665b06d843c5111501 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 8 Oct 2020 21:35:42 -0700 Subject: [PATCH 10/63] =?UTF-8?q?reparando=20error=20l=C3=B3gico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/Compras.aspx.vb | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 7838361a3..47d1eb77c 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -20211,23 +20211,25 @@ Partial Class Compras_Compras CvePSGRuposAux.AppendFormat("{0},", CvePSIndividual) Next - Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) + If CvePSGRuposAux.Length > 0 Then + Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) - Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) + Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) - Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - For Each PS As GridViewRow In GvPS.Rows - Dim PSIndividual As String = PS.DataKey("PS") - Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) - If ClavePSSAT = "46920" Then - ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", PSIndividual) + Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + For Each PS As GridViewRow In GvPS.Rows + Dim PSIndividual As String = PS.DataKey("PS") + Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) + If ClavePSSAT = "46920" Then + ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", PSIndividual) + End If + Next + + If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) + Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + Return False End If - Next - - If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then - Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) - Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) - Return False End If Return True From 81d669748d8bc8cbf9f993b9527fa4df6e76747d Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Fri, 9 Oct 2020 11:19:52 -0700 Subject: [PATCH 11/63] Funcionalidad 281 bloquear fechas --- Bancos/FluctuacionCambiaria.aspx | 10 ++++---- Bancos/PrestamoPersonal.aspx.cs | 11 +++++++++ Inventarios/EntradasSalidas.aspx.vb | 35 ++++++++++++++++++++++++++++ Inventarios/EntregaAlmacen.aspx.vb | 8 +++++++ Inventarios/RecepcionAlmacen.aspx.vb | 8 +++++++ Inventarios/TraspasoAlmacen.aspx.vb | 12 ++++++++++ 6 files changed, 78 insertions(+), 6 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx b/Bancos/FluctuacionCambiaria.aspx index 3ecd068fa..56c76c41c 100644 --- a/Bancos/FluctuacionCambiaria.aspx +++ b/Bancos/FluctuacionCambiaria.aspx @@ -147,9 +147,7 @@
-
- - +
@@ -230,15 +228,15 @@
-
- +
+
-
+
diff --git a/Bancos/PrestamoPersonal.aspx.cs b/Bancos/PrestamoPersonal.aspx.cs index f9674a6bb..2ecb1b234 100644 --- a/Bancos/PrestamoPersonal.aspx.cs +++ b/Bancos/PrestamoPersonal.aspx.cs @@ -106,6 +106,17 @@ public partial class Bancos_PrestamoPersonal : ClsPaginas txtFechaF.Text = DateTime.Now.ToShortDateString(); TxtImporte.Attributes.Add("disabled", "disabled"); + if(UsuarioActual.Empresa.Funcionalidad(281).ToEntero() == 1) + { + TxtFechaPrestamo.Enabled = false; + ImgCalendarioPrestamo.Visible = false; + + TxtFechaDocumento.Enabled = false; + ImgCalendario.Visible = false; + + } + + } } diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 08040c50e..059f71e5b 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -275,6 +275,7 @@ Partial Class Inventarios_EntradasSalidas #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load + If Not IsPostBack Then CveMovimiento = -1 @@ -289,6 +290,7 @@ Partial Class Inventarios_EntradasSalidas CreaDT() CargaCombos() TxtFecha.Text = Now.ToShortDateString + TxtFechaInvFisico.Text = Now.ToShortDateString RVFecha.MaximumValue = Now.ToShortDateString If Not UsuarioActual.CveEmpresa = 48 Then @@ -350,7 +352,25 @@ Partial Class Inventarios_EntradasSalidas PermisoVerImportes() End If + + If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then + + TxtFecha.Enabled = False + ImgFecha.Visible = False + + TxtFechaInvFisico.Enabled = False + ImgFechaInvFisico.Visible = False + + UpGenerales.Update() + UpModalInventarioFisico.Update() + + End If + End If + + + + End Sub #Region " PERMISOS PAGINAS " @@ -927,6 +947,21 @@ Partial Class Inventarios_EntradasSalidas 'BtnGuardar.Visible = False End If + + If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then + + TxtFecha.Enabled = False + ImgFecha.Visible = False + + TxtFechaInvFisico.Enabled = False + ImgFechaInvFisico.Visible = False + + + + + End If + + UpModalInventarioFisico.Update() BloqueaEdicionEncabezado() Mov.Dispose() UpGenerales.Update() diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 6d6e99153..8aff48266 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -263,6 +263,14 @@ Partial Class Inventarios_EntregaAlmacen InicializaValores() CargaParametrosAD() If UsuarioActual.CveEmpresa.Contiene(72, 80) Then DdlAlmacen.AutoPostBack = True + + If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then + + TxtFecha.Enabled = False + ImgFecha.Visible = False + + End If + End If End Sub diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 5022d6ebb..e5b39aeef 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -399,6 +399,14 @@ Partial Class Inventarios_RecepcionAlmacen CargaPermisos() If UsuarioActual.CveEmpresa.Contiene(72, 80) Then DdlAlmacen.AutoPostBack = True + If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then + + TxtFecha.Enabled = False + ImgFecha.Visible = False + + End If + + End If End Sub diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index edb1228f1..efb17de68 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -228,6 +228,18 @@ Partial Class Inventarios_TraspasoAlmacen TipoSeccionAlmacen = 0 + + + If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then + + TxtFecha.Enabled = False + ImgFecha.Visible = False + + TxtFechaRecepcion.Enabled = False + ImgFechaRecepcion.Visible = False + + End If + Else If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(0);$('#DivGastoIndirecto').show(0);$('#DivDocChofer').show(0);") From f8390fb0a4a249b0206b19bdf2aefe88b1a9f7db Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:17:15 -0700 Subject: [PATCH 12/63] -- cambio de parametro de envio en cveseccion cuando es aprtado, se manda ahora -3 --- Inventarios/RecepcionAlmacen.aspx.vb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 5022d6ebb..fb0028b30 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2637,12 +2637,8 @@ Partial Class Inventarios_RecepcionAlmacen ErrorMovInv = True Exit For End If - If CBool(Dr("AplicaSeccion")) Then - CveSeccionDestino = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenDestino, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Else - CveSeccionDestino = -1 - End If + CveSeccionDestino = -3 'se madna este dato, para que el trigger, obtenga la seccion automaticamente If Not ObjInventario.AddMovimientoDetalle(CveMovtoEntradaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSeccionDestino, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True From 21d6457c994126e0a2a8cefd96f19096f4bc7d41 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:17:52 -0700 Subject: [PATCH 13/63] parametro de desglosaieps --- Ventas/Ventas.aspx.vb | 180 +++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index f66c6c5ef..6b1589eed 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -14555,116 +14555,116 @@ Partial Class Ventas If UsuarioActual.TienePermisoProceso(68) AndAlso Not PSCodigoSAT.Contiene("84111506", "80141610") Then TxtPrecio.Enabled = False If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count = 0 Then - DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString()) - CambiaMoneda() + DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString()) + CambiaMoneda() + End If + + 'SUGIERE PRECIO + Dim PrecioSugerido = 0.0 + PrecioSugerido = drPS("Precio").ToString().ToDouble + + If UsuarioActual.CveEmpresa.Contiene(1) Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPorcentajeProductos(CveCliente) Then + Dim PrecioAplicado = ObjPS.DtResultados.FiltraParametros($"CvePS = {CvePSParametro}").FiltroPrimeroValor("PrecioA").ToDouble + If PrecioAplicado > 0 Then + PrecioSugerido = PrecioAplicado + End If + End If + ObjPS.Dispose() + End If + + If UsuarioActual.Empresa.Funcionalidad(404).ToEntero > 0 Then 'cuando el valor es 10.- secuencia Cliente/Sucursal, 20 - sucursal/cliente + Dim TipoPrecioLista As Integer = UsuarioActual.Empresa.Funcionalidad(404).ToEntero + ' si es 10. primero el cliente + Dim CvePrecioListaPS As Integer + Dim PorcentajePrecio As Double = 0 + + If TipoPrecioLista = 10 Then + + CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() + If CvePrecioListaPS <= 0 Then + + CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() + + End If + + Else + + CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() + If CvePrecioListaPS <= 0 Then + + CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() + + End If + End If - 'SUGIERE PRECIO - Dim PrecioSugerido = 0.0 - PrecioSugerido = drPS("Precio").ToString().ToDouble - - If UsuarioActual.CveEmpresa.Contiene(1) Then + If CvePrecioListaPS > 0 Then Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPorcentajeProductos(CveCliente) Then - Dim PrecioAplicado = ObjPS.DtResultados.FiltraParametros($"CvePS = {CvePSParametro}").FiltroPrimeroValor("PrecioA").ToDouble - If PrecioAplicado > 0 Then - PrecioSugerido = PrecioAplicado - End If + If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then + PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDouble + PorcentajePrecio = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDouble End If ObjPS.Dispose() End If - If UsuarioActual.Empresa.Funcionalidad(404).ToEntero > 0 Then 'cuando el valor es 10.- secuencia Cliente/Sucursal, 20 - sucursal/cliente - Dim TipoPrecioLista As Integer = UsuarioActual.Empresa.Funcionalidad(404).ToEntero - ' si es 10. primero el cliente - Dim CvePrecioListaPS As Integer - Dim PorcentajePrecio As Double = 0 - - If TipoPrecioLista = 10 Then - - CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() - If CvePrecioListaPS <= 0 Then - - CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() - - End If - - Else - - CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() - If CvePrecioListaPS <= 0 Then - - CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() - - End If - + If PrecioSugerido = 0 Then + Dim ObjInventarios As New ClsInventarios + Dim CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) + 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal + If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, -1, CveTipoAlmacen:=1) + ObjInventarios.Dispose() + If CostoPS > 0 And PorcentajePrecio > 0 Then + PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS End If - - If CvePrecioListaPS > 0 Then - Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then - PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDouble - PorcentajePrecio = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDouble - End If - ObjPS.Dispose() - End If - - If PrecioSugerido = 0 Then - Dim ObjInventarios As New ClsInventarios - Dim CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal - If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, -1, CveTipoAlmacen:=1) - ObjInventarios.Dispose() - If CostoPS > 0 And PorcentajePrecio > 0 Then - PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS - End If - End If - CvePrecioLista = CvePrecioListaPS End If + CvePrecioLista = CvePrecioListaPS + End If - 'Dim ObjClasificaciones As New ClsClasificaciones - 'If ObjClasificaciones.GetClasificaciones() Then - ' PrecioBaseCosto = ObjClasificaciones.DtResultados.FiltroPrimeroValor("PrecioBaseCosto", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveClasificacion = {drPS("CveClasificacion")}").ToDecimal - 'End If + 'Dim ObjClasificaciones As New ClsClasificaciones + 'If ObjClasificaciones.GetClasificaciones() Then + ' PrecioBaseCosto = ObjClasificaciones.DtResultados.FiltroPrimeroValor("PrecioBaseCosto", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveClasificacion = {drPS("CveClasificacion")}").ToDecimal + 'End If - If PrecioSugerido > 0 Then - Dim PrecioBaseCosto As Decimal = 0 - PrecioBaseCosto = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=drPS("CveClasificacion").ToString().ToEntero()).FiltroPrimeroValor("PrecioBaseCosto", "").ToDecimal + If PrecioSugerido > 0 Then + Dim PrecioBaseCosto As Decimal = 0 + PrecioBaseCosto = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=drPS("CveClasificacion").ToString().ToEntero()).FiltroPrimeroValor("PrecioBaseCosto", "").ToDecimal - If PrecioBaseCosto > 0 Then - PrecioSugerido = PrecioSugerido * ((PrecioBaseCosto / 100) + 1) - End If - TxtPrecio.Text = PrecioSugerido.ToString("#,###.####") ' que muestre hasta los 4 digitos si lo requiere + If PrecioBaseCosto > 0 Then + PrecioSugerido = PrecioSugerido * ((PrecioBaseCosto / 100) + 1) End If + TxtPrecio.Text = PrecioSugerido.ToString("#,###.####") ' que muestre hasta los 4 digitos si lo requiere + End If - If IsNumeric(TxtCantidad.Text.Trim) Then - LblTotalPS.Text = (TxtCantidad.Text.Trim.ToDouble * TxtPrecio.Text.ToDouble).ToString().FormatoNumero(2) + If IsNumeric(TxtCantidad.Text.Trim) Then + LblTotalPS.Text = (TxtCantidad.Text.Trim.ToDouble * TxtPrecio.Text.ToDouble).ToString().FormatoNumero(2) + Else + LblTotalPS.Text = "0.00" + End If + LblPrecio1.Text = TxtPrecio.Text + UPPDescuento.Update() + + HdnIVAPS.Value = If(drPS("IVA").ToString() = "-1", ViewState("IVA"), drPS("IVA").ToString()).ToString() + HdnIVARetAPS.Value = drPS("RetIVA").ToString() + HdnAsientoContable.Value = drPS("AsientoContableVentas").ToString() + HdnCtaContable.Value = drPS("IdCtaContVentas").ToString() + HdnAplicaParaConcepto.Value = drPS("AplicaParaConcepto").ToString() + HdnCodigo.Value = drPS("Codigo").ToString() + If DdlClasificacion.SelectedIndex = 0 Then + If drPS("CveClasificacion").ToString() IsNot Nothing Then + DdlClasificacion.SelectedValueExist(drPS("CveClasificacion").ToString()) Else - LblTotalPS.Text = "0.00" - End If - LblPrecio1.Text = TxtPrecio.Text - UPPDescuento.Update() - - HdnIVAPS.Value = If(drPS("IVA").ToString() = "-1", ViewState("IVA"), drPS("IVA").ToString()).ToString() - HdnIVARetAPS.Value = drPS("RetIVA").ToString() - HdnAsientoContable.Value = drPS("AsientoContableVentas").ToString() - HdnCtaContable.Value = drPS("IdCtaContVentas").ToString() - HdnAplicaParaConcepto.Value = drPS("AplicaParaConcepto").ToString() - HdnCodigo.Value = drPS("Codigo").ToString() - If DdlClasificacion.SelectedIndex = 0 Then - If drPS("CveClasificacion").ToString() IsNot Nothing Then - DdlClasificacion.SelectedValueExist(drPS("CveClasificacion").ToString()) - Else - Alert("El Productos/Servicio no tiene asignada una Clasificación.", TipoMensaje.MsgInformacion) - End If - + Alert("El Productos/Servicio no tiene asignada una Clasificación.", TipoMensaje.MsgInformacion) End If End If - ElseIf CvePSParametro = -2 Then + End If + + ElseIf CvePSParametro = -2 Then CargaPS(DdlClasificacion.SelectedValue.ToEntero(), Ddl) End If @@ -15774,7 +15774,7 @@ Partial Class Ventas End If 'VERIFICA SI EN LA FACTURA PADRE SE DESGLOSO EL IEPS - Dim FacturaDesglosoIEPS As Boolean = ((CveDevolucion > 0 AndAlso NuevaFactura = 1) AndAlso (Me.ObjFacturaNC IsNot Nothing AndAlso Me.ObjFacturaNC.VentaDesglosaIEPS)) + Dim FacturaDesglosoIEPS As Boolean = ((CveDevolucion > 0 AndAlso NuevaFactura = 1) AndAlso (Me.ObjFacturaNC IsNot Nothing AndAlso Not Me.ObjFacturaNC.VentaDesglosaIEPS)) If Not ClienteDesglosaIEPS Then If Not RegeneraIEPS AndAlso Not FacturaDesglosoIEPS Then From 73a0720e7b56d710990a31cb4b8b74306d724dce Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:18:56 -0700 Subject: [PATCH 14/63] -- cambios en aletamiento d xml codigos 01010101 --- Compras/Compras.aspx.vb | 103 ++++++++++++++++++++++------------------ 1 file changed, 56 insertions(+), 47 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 7838361a3..14c97bc31 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1333,9 +1333,9 @@ Partial Class Compras_Compras ViewState("CveFactura") = Request("CveFactura").ToEntero Dim RFC As String = CargaFactura(CveFactura) - If Not VerificarProductosSATPS() Then - Exit Sub - End If + 'If Not VerificarProductosSATPS() Then + ' Exit Sub + 'End If If RFC.Trim <> String.Empty Then DdlProveedor.Visible = False HplProveedor.Visible = True @@ -1663,14 +1663,10 @@ Partial Class Compras_Compras If Not UsuarioActual.Empresa.Funcionalidad(529) = "1" Then 'verificacion doble, si no la han cancelado, ya tiene una validaci[on para que llegue aqui - - - Dim SWatch As New Stopwatch SWatch.Start() Dim ts As New TimeSpan - Dim Valida As New ClsValidaCFDi(dr("UUID").ToString(), dr("RFCDe").ToString, dr("RFCPara").ToString(), dr("Total").ToString.ToDecimal) SWatch.Stop() @@ -1764,6 +1760,21 @@ Partial Class Compras_Compras SubTotalConceptos = Math.Round(TmpDT.SUM("Total"), 2).ToDecimal AddPS2(False) + + 'VALIDA QUE EL XML SI VIENE CON EL CODIGO SAT 01010101 + Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + For Each drr As DataRow In TmpDT.FiltraParametros("ClaveProdServ = '01010101'").Rows + + ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", drr("PS")) + + Next + + If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + Dim mensajeAdvertencia As String = String.Format("El comprobante contiene productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) + Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + + End If + End If Else CargaConceptosXML(XMLDoc) @@ -1785,8 +1796,6 @@ Partial Class Compras_Compras DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) ChkAplicaNotaCredito.Enabled = False - - DdlTipoCompra.Items.Clear() DdlTipoCompra.Items.Add(New ListItem("Seleccione", "-1")) DdlTipoCompra.Items.Add(New ListItem("NC Con Productos", "6")) @@ -4006,7 +4015,7 @@ Partial Class Compras_Compras If UsuarioActual.Empresa.Funcionalidad(702) = "1" Then If Not EstaAsociadoACajaChica And Not EstaAsociadoAPersonal Then If Not CompraEstaVinculadaOC Then - Alert("Debe de vincular una orden de compra para realizar esta factura") + Alert("Debe de vincular una orden de compra para registrar la factura") Exit Sub End If End If @@ -15428,21 +15437,21 @@ Partial Class Compras_Compras Dim DiferenciaPermitida = 1 Dim Cont = 0 'Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - 'For Each gvr As GridViewRow In GvOC1.Rows - ' SubTotalGV += gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal - ' If Cont = 0 Then DdlProveedorSucursal.SelectedValueExist(gvr.DataKey("CveProveedorSucursal").ToEntero()) - ' Cont = 1 - ' If GvOC1.Columns(6).Visible Then - ' Dim SatPS As String = gvr.FCDropDownLost("DdlSATPS").SelectedText() - ' Dim NombreProducto As String = gvr.FCLabel("LbProductoServicio").Text - ' If SatPS.Contains("01010101") Then - ' ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", NombreProducto) - ' 'Dim mensajeAdvertencia As String = String.Format("Al vincular una Orden de Compra no se permiten productos con Producto/Servicio SAT igual a '{0}', revise el producto '{1}' en Orden(es) de Compra Vinculada(s)", SatPS, NombreProducto) - ' 'Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + For Each gvr As GridViewRow In GvOC1.Rows + SubTotalGV += gvr.FCTextBox("TxtTotalOC1").Text.ToDecimal + If Cont = 0 Then DdlProveedorSucursal.SelectedValueExist(gvr.DataKey("CveProveedorSucursal").ToEntero()) + Cont = 1 + ' If GvOC1.Columns(6).Visible Then + ' Dim SatPS As String = gvr.FCDropDownLost("DdlSATPS").SelectedText() + ' Dim NombreProducto As String = gvr.FCLabel("LbProductoServicio").Text + ' If SatPS.Contains("01010101") Then + ' ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", NombreProducto) + ' 'Dim mensajeAdvertencia As String = String.Format("Al vincular una Orden de Compra no se permiten productos con Producto/Servicio SAT igual a '{0}', revise el producto '{1}' en Orden(es) de Compra Vinculada(s)", SatPS, NombreProducto) + ' 'Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) - ' End If - ' End If - 'Next + ' End If + ' End If + Next 'If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then ' Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) ' Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) @@ -20204,35 +20213,35 @@ Partial Class Compras_Compras End Sub - Private Function VerificarProductosSATPS() As Boolean - Dim CvePSGRuposAux As New StringBuilder("") - For Each gvr As GridViewRow In GvPS.Rows - Dim CvePSIndividual As String = gvr.DataKey("CvePS") - CvePSGRuposAux.AppendFormat("{0},", CvePSIndividual) - Next + 'Private Function VerificarProductosSATPS() As Boolean + ' Dim CvePSGRuposAux As New StringBuilder("") + ' For Each gvr As GridViewRow In GvPS.Rows + ' Dim CvePSIndividual As String = gvr.DataKey("CvePS") + ' CvePSGRuposAux.AppendFormat("{0},", CvePSIndividual) + ' Next - Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) + ' Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) - Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) + ' Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) - Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - For Each PS As GridViewRow In GvPS.Rows - Dim PSIndividual As String = PS.DataKey("PS") - Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) - If ClavePSSAT = "46920" Then - ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", PSIndividual) - End If - Next + ' Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + ' For Each PS As GridViewRow In GvPS.Rows + ' Dim PSIndividual As String = PS.DataKey("PS") + ' Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) + ' If ClavePSSAT = "46920" Then + ' ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", PSIndividual) + ' End If + ' Next - If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then - Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) - Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) - Return False - End If + ' If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + ' Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) + ' Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + ' Return False + ' End If - Return True + ' Return True - End Function + 'End Function End Class From a3d77691fc891d45a1a65673ca5dc3b240eee65b Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:19:16 -0700 Subject: [PATCH 15/63] cambio de double a decimal --- Bancos/IE.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 503feacc6..58043f9fb 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -1945,7 +1945,7 @@ Partial Class Bancos_IE ObjOtrosPagos.Add(New CFDINominaOtrosPagos With {.TipoOtroPago = "003", .Clave = "003", .Concepto = "Viáticos (entregados al trabajador).", - .Importe = TxtImporte.Text.ToString.ToDouble + .Importe = TxtImporte.Text.ToString.ToDecimal } ) If ObjOtrosPagos IsNot Nothing AndAlso ObjOtrosPagos.Count > 0 Then cfdi.Nomina.OtrosPagos = ObjOtrosPagos From b3c210bd6203495f4a53e09cda1fe7a2c4cea4e9 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:19:41 -0700 Subject: [PATCH 16/63] -- cambiod datakey a acreedor --- Compras/ReembolsosComprobaciones.aspx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Compras/ReembolsosComprobaciones.aspx b/Compras/ReembolsosComprobaciones.aspx index 760c32799..02d0f7f59 100644 --- a/Compras/ReembolsosComprobaciones.aspx +++ b/Compras/ReembolsosComprobaciones.aspx @@ -292,7 +292,7 @@ + DataKeyNames="CveCompra,FechaCompra,Proveedor,SerieFolio,Original,SubTotal,IVA,RetIVA,RetISR,IdCtaContProveedores,IdCtaContAcreedor,CvePrePoliza,IdPoliza,CveRetIVAConcepto,CveRetISRConcepto,IVAPorcentaje,IVADeducible,IVANoDeducible,CveTipoConcepto,CveSubProyecto"> From 3faf02bc6ededd3347e4f2c2543136ec95b49d72 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:20:01 -0700 Subject: [PATCH 17/63] parametro global bancos --- Sistemas/CatSesiones.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sistemas/CatSesiones.aspx.vb b/Sistemas/CatSesiones.aspx.vb index 88f01e6ec..d37d08cc2 100644 --- a/Sistemas/CatSesiones.aspx.vb +++ b/Sistemas/CatSesiones.aspx.vb @@ -419,7 +419,7 @@ Partial Class Sistemas_CatSesiones Private Sub CargaBancosCuentas() Dim Banc As New ClsBancos - If Banc.GetBancosCuentasUsuarios(-1) Then Application("GlobalDTBancosCuentas") = Banc.DtResultados Else Application("GlobalDTBancosCuentas") = Nothing + If Banc.GetBancosCuentasUsuarios(-1, UsuarioActual.CveEmpresa) Then Application("GlobalDTBancosCuentas") = Banc.DtResultados Else Application("GlobalDTBancosCuentas") = Nothing Banc.Dispose() End Sub From 4654a4cafe90f2a43e80e420e56a87b84f091a27 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:20:31 -0700 Subject: [PATCH 18/63] -- correccion de cleinte general, en titulo de sucursales --- Ventas/Clientes.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index de17079a9..ad9f29627 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -1902,7 +1902,7 @@ Partial Class Clientes GvDireccionesEnvio.DataBind() If TxtRFC.Text = "XAXX010101000" Then - GvDireccionesEnvio.HeaderRow.FCLiteral("LtlNombreSucursal").Text = "Cliente" + If GvDireccionesEnvio.HeaderRow IsNot Nothing AndAlso GvDireccionesEnvio.HeaderRow.FCLiteral("LtlNombreSucursal") IsNot Nothing Then GvDireccionesEnvio.HeaderRow.FCLiteral("LtlNombreSucursal").Text = "Cliente" LtlNombreSucursal.Text = "Cliente" LtlNombreSucursalTitulo.Text = "Cliente" LtlTituloSurcusalCliente.Text = "Datos del cliente" From afd7b0c7b5cc336f278b28c91e7493328ed8a8a9 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 12:20:54 -0700 Subject: [PATCH 19/63] cambio de titulos en div equivalencias --- Inventarios/PopUpExistenciasAlmacen.aspx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/PopUpExistenciasAlmacen.aspx b/Inventarios/PopUpExistenciasAlmacen.aspx index eec03b6a6..2528fc984 100644 --- a/Inventarios/PopUpExistenciasAlmacen.aspx +++ b/Inventarios/PopUpExistenciasAlmacen.aspx @@ -46,7 +46,7 @@
- + From a17b7be38a375ed52ae6707e78203b09897828de Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 12:57:31 -0700 Subject: [PATCH 20/63] Recargar Global DT Subproyectos --- Compras/PopUpVerFactura.aspx.vb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 482e6026a..83cbf87b1 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -937,7 +937,10 @@ Partial Class PopUpVerFactura 'se rellena la sucursal 'Vta.Subproyecto = ObjVentas.DtResultados.Rows(0).DataRowToObject(Of Modelos.SucursalModel) Dim CveSubProyecto As Integer = dtVentas(0)("CveSubProyecto").ToString().ToEntero() - Vta.SubProyecto = GlobalDTSubProyectos(-1, CveSubProyecto).Rows(0).DataRowToObject(Of Modelos.SubProyectoModel) + + Dim DtSubProyecto = GlobalDTSubProyectos(-1, CveSubProyecto:=CveSubProyecto, CveEmpresa:=dtVentas(0)("CveEmpresa").ToString().ToEntero()) + + Vta.SubProyecto = DtSubProyecto.Rows(0).DataRowToObject(Of Modelos.SubProyectoModel) 'Vta.SubProyecto = ObjVentas.DtResultados.Rows(0).DataRowToObject(Of Modelos.SubProyectoModel) Vta.Cliente = New Modelos.ClienteModel Vta.Cliente.Nombre = dtVentas(0)("ClienteNombre").ToString From bde1f17499de5f7ffa43c3b61081d84ec90f8fe4 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 12:58:40 -0700 Subject: [PATCH 21/63] Cambiar la forma de recargar el global de subproyectos --- Planeacion/CatSubProyectos.aspx.vb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Planeacion/CatSubProyectos.aspx.vb b/Planeacion/CatSubProyectos.aspx.vb index f2d679fd2..9b1b67cba 100644 --- a/Planeacion/CatSubProyectos.aspx.vb +++ b/Planeacion/CatSubProyectos.aspx.vb @@ -81,12 +81,8 @@ Partial Class CatSubProyectos End If End Sub - Private Sub RecargaGlobal() - Dim ObjSubProyectos As New ClsSubProyectos - If ObjSubProyectos.GetSubProyectos(UsuarioActual.CveEmpresa) Then - GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = ObjSubProyectos.DtResultados - End If - ObjSubProyectos.Dispose() + Private Sub RecargaGlobal() + GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = Nothing End Sub #Region "O R D E N A M I E N T O" From b99c73f4571073e484213e85fd6ef7c20e90fbfe Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 12:59:23 -0700 Subject: [PATCH 22/63] Traspasar Apartados de un cliente a otro siendo un vendedor --- Inventarios/RepApartados.aspx | 295 +++++++++++++++++++------------ Inventarios/RepApartados.aspx.vb | 287 +++++++++++++++++++++++++++--- 2 files changed, 444 insertions(+), 138 deletions(-) diff --git a/Inventarios/RepApartados.aspx b/Inventarios/RepApartados.aspx index 6cb599ee9..c9cbef7a0 100644 --- a/Inventarios/RepApartados.aspx +++ b/Inventarios/RepApartados.aspx @@ -1,116 +1,179 @@ -<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepApartados.aspx.vb" Inherits="Inventarios_RepApartados" %> - - - - - - - Apartados | Reporte de apartados - Detalle - - -
  • - PDF -
  • -
  • - Excel -
  • -
    - - - - - - - <%--FILTROS--%> - - -
    -
    -
    - - -
    -
    -
    -
    Fecha Inicial:
    -
    -
    - - - - - - - - - - -
    -
    -
    Fecha Final:
    -
    -
    - - - - - - - - - - -
    -
    -
    Sucursal:
    -
    - -
    -
    Vendedor:
    -
    - -
    -
    -
    -
    -
    -
    -
    Cliente
    -
    - -
    -
    PS:
    -
    - -
    -
    -
    -
    -
    -
    - -
    - " style="display: inline-block; margin-right: -20px; width: 150px;" /> - " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> -
    - - <%--GV DATOS--%> - - - - - - - - - - - - - - - -
    - - - +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepApartados.aspx.vb" Inherits="Inventarios_RepApartados" %> + + + + + + + Apartados | Reporte de apartados - Detalle + + +
  • + PDF +
  • +
  • + Excel +
  • +
  • + + + Traspasar Apartado + + +
  • +
    + + + + + + + <%--FILTROS--%> + + +
    +
    +
    + + +
    +
    +
    +
    Fecha Inicial:
    +
    +
    + + + + + + + + + + +
    +
    +
    Fecha Final:
    +
    +
    + + + + + + + + + + +
    +
    +
    Sucursal:
    +
    + +
    +
    Vendedor:
    +
    + +
    +
    +
    +
    +
    +
    +
    Cliente
    +
    + +
    +
    PS:
    +
    + +
    +
    +
    +
    +
    +
    + +
    + " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> +
    + + <%--GV DATOS--%> +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + + diff --git a/Inventarios/RepApartados.aspx.vb b/Inventarios/RepApartados.aspx.vb index a5f0bd02d..cb2b86a4d 100644 --- a/Inventarios/RepApartados.aspx.vb +++ b/Inventarios/RepApartados.aspx.vb @@ -6,9 +6,9 @@ Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class Inventarios_RepApartados - Inherits ClsPaginas - - + Inherits ClsPaginas + + #Region " PROPIEDADES " Private Property DtApartados As DataTable Get @@ -17,18 +17,18 @@ Partial Class Inventarios_RepApartados Set(value As DataTable) ViewState("DtApartados") = 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 SetValues() InicializaParam() End If - End Sub - - + End Sub + + #Region " SET VALUES " Private Sub SetValues() DdlSubProyectos.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) @@ -42,6 +42,15 @@ Partial Class Inventarios_RepApartados DdlClientesWS.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1) DdlClientesWS.DataBind() DdlClientesWS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) + End If + + If UsuarioActual.CveEmpresa = 119 Then + DdlClienteTraspasar.setEsWebService(True) + Else + DdlClienteTraspasar.setEsWebService(False) + DdlClienteTraspasar.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1) + DdlClienteTraspasar.DataBind() + DdlClienteTraspasar.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If Dim DTVendedores As New DataTable @@ -68,9 +77,9 @@ Partial Class Inventarios_RepApartados txtFechaI.Text = Now.FirstDayOfMonth.ToShortDateString txtFechaF.Text = Now.ToShortDateString - End Sub + End Sub #End Region - + Private Sub InicializaParam() Dim Anio, Mes, AnioMes, Fecha, FechaI, FechaF As String Dim CveCliente, CveVendedor, CveSucursal, CvePS As String @@ -127,7 +136,10 @@ Partial Class Inventarios_RepApartados Else DdlClientesWS.SelectedValue = CveCliente DdlClientesWS.SelectedText = "Todos" - End If + End If + + DdlClienteTraspasar.SelectedValue = "-1" + DdlClienteTraspasar.SelectedText = "Seleccione" DdlVendedor.SelectedValueExist(CveVendedor) DdlSubProyectos.SelectedValueExist(CveSucursal) @@ -162,12 +174,18 @@ Partial Class Inventarios_RepApartados Dim ObjInventarios As New ClsInventarios If ObjInventarios.ApartadosRep(CveAlmacenApartado, DdlClientesWS.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate) Then - GvDatos.DataSource = ObjInventarios.DtResultados DtApartados = ObjInventarios.DtResultados - GvDatos.DataBind() - UpDatos.Update() End If - ObjInventarios.Dispose() + ObjInventarios.Dispose() + + GvDatos.DataSource = DtApartados + If DdlSubProyectos.SelectedValue.ToEntero() > 0 AndAlso DtApartados.COUNT("CveVendedor", $"CveVendedor={UsuarioActual.CveVendedor}") > 0 Then + GvDatos.Columns(6).Visible = True + LnkTraspasarApartados.Visible = True + End If + GvDatos.DataBind() + UpDatos.Update() + UpTraspasar.Update() End Sub Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound @@ -182,14 +200,17 @@ Partial Class Inventarios_RepApartados End If If e.Row.DBCampo("IDGPO").ToString.ToEntero = 3 Then - + If e.Row.DBCampo("CveVendedor").ToEntero() = UsuarioActual.CveVendedor Then + e.Row.FCTextBox("TxtCantidad").Visible = True + e.Row.FCRangeValidator("RVCantidad").Visible = True + End If End If End If - End Sub - + End Sub + #Region "PDF" - + Private Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click If DtApartados IsNot Nothing Then Dim StrFiltro As New StringBuilder @@ -226,7 +247,229 @@ Partial Class Inventarios_RepApartados Private Sub ImgExcel_Click(sender As Object, e As EventArgs) Handles ImgExcel.Click GvDatos.ExportToExcel("Reporte de Apartados" & Now.ToShortDateString) - End Sub - + End Sub + #End Region + Protected Sub LnkTraspasarApartados_Click(sender As Object, e As EventArgs) + + LtlAlmacen.Text = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=9).FiltroPrimeroValor("Almacen", $"CveSubProyecto={DdlSubProyectos.SelectedValue.ToEntero()}") + + TxtObs.Text = "" + DdlClienteTraspasar.SelectedValue = "-1" + DdlClienteTraspasar.SelectedText = "Seleccione" + UpTraspasar.Update() + UpGenerarTraspaso.Update() + + RegistraScript("$('#ModalTraspaso').modal('show');") + + End Sub + Protected Sub BtnTraspasar_Click(sender As Object, e As EventArgs) + + If DdlClienteTraspasar.SelectedValue.ToEntero() <= 0 Then + Alert("No se ha seleccionado ningun cliente", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If Not GvDatos.Rows.Cast(Of GridViewRow).Any(Function(gvr) gvr.FCTextBox("TxtCantidad").Text.ToEntero() > 0) Then + Alert("No se ha seleccionado ningun cliente", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim ErrorMovInv As Boolean = False + Dim Mensaje As StringBuilder = New StringBuilder + + Dim SalidasAlmacen As New List(Of MMovimientoAlmacen) + Dim EntradasAlmacen As New List(Of MMovimientoAlmacen) + + Dim ObjInventario As New ClsInventarios + ObjInventario.IniciaTransacSQL() + + Try + Dim CveClienteTraspasar As Integer = DdlClienteTraspasar.SelectedValue.ToEntero() + Dim CveAlmacenApartado As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=9).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={DdlSubProyectos.SelectedValue.ToEntero()}").ToEntero() + + Dim DtTraspaso As DataTable = CrearDTTraspasosClientes() + + 'SE VAN A REALIZAR LOS MOVIMIENTOS POR CADA CLIENTE CONSIDERADO + For Each Row As DataRow In DtTraspaso.FiltraParametros("", DistinctColumns:={"CveCliente", "CveVendedor"}).Rows + 'SACA LOS PS A TRASPASAR + Dim DtPSTraspasar As DataTable = DtTraspaso.FiltraParametros($"CveCliente={Row("CveCliente")} AND CveVendedor={Row("CveVendedor")}") + + 'CUADRA LOS LOS PRODUCTOS CON LO QUE SE PUEDE DESAPARTAR + Dim DtDetalleTraspasar As DataTable = CuadrarMovimientosApartado(CveAlmacenApartado, Row("CveCliente").ToString().ToEntero(), Row("CveVendedor").ToString().ToEntero(), DtPSTraspasar, ObjInventario) + + DtPSTraspasar.Dispose() + + Dim MovSalida = GenerarMovimientoAlmacen(CveAlmacenApartado, 8, Row("CveVendedor").ToString().ToEntero(), Row("CveCliente").ToString().ToEntero(), -1, TxtObs.Text.Trim(), DtDetalleTraspasar, ObjInventario, "RepApar/1") + + DtDetalleTraspasar.Dispose() + + ErrorMovInv = MovSalida.CveMovimiento <= 0 + + If Not ErrorMovInv Then + + SalidasAlmacen.Add(MovSalida) + + Dim MovEntrada = GenerarMovimientoAlmacen(CveAlmacenApartado, 9, UsuarioActual.CveVendedor, CveClienteTraspasar, MovSalida.CveMovimiento, TxtObs.Text.Trim(), Nothing, ObjInventario, "RepApar/2") + + ErrorMovInv = MovEntrada.CveMovimiento <= 0 + + If Not ErrorMovInv Then + EntradasAlmacen.Add(MovEntrada) + End If + + End If + + Next + + + If Not ErrorMovInv Then + Mensaje.Append("Se realizó con éxito el traspaso.") + + For Each MovSalida In SalidasAlmacen + Mensaje.AppendFormat("

    Folio de Salida: {0}", MovSalida.Folio, MovSalida.CveMovimiento) + Mensaje.AppendFormat("
    Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", MovSalida.CveMovimiento))) + Next + + For Each MovEntrada In EntradasAlmacen + Mensaje.AppendFormat("

    Folio de Entrada: {0}", MovEntrada.Folio, MovEntrada.CveMovimiento) + Mensaje.AppendFormat("
    Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", MovEntrada.CveMovimiento))) + Next + + End If + + RegistraScript("$('#ModalTraspaso').modal('hide');") + + Alert(Mensaje.ToString(), If(ErrorMovInv, TipoMensaje.MsgError, TipoMensaje.MsgInformacion)) + + Catch ex As Exception + ErrorMovInv = True + OnError("Ocurrió un error al realizar el traspaso", ex) + End Try + + If ErrorMovInv Then + ObjInventario.RollBack() + Else + ObjInventario.Commit() + End If + ObjInventario.Dispose() + + CargaDatos() + End Sub + Private Function CuadrarMovimientosApartado(CveAlmacenApartado As Integer, CveCliente As Integer, CveVendedor As Integer, DtPSTraspasar As DataTable, ByRef ObjInventarios As ClsInventarios) As DataTable + Dim DtRetorno As DataTable = Nothing + + Dim DtDesapartado As DataTable = Nothing + + If ObjInventarios.DesapartadosGet(CveAlmacenApartado, CveCliente, CveVendedor, UsuarioActual.CveEmpresa) Then + DtDesapartado = ObjInventarios.DtResultados.Copy() + DtRetorno = DtDesapartado.Clone() + End If + + If DtRetorno IsNot Nothing Then + For Each RowCantidad As DataRow In DtPSTraspasar.Rows + Dim Filtro As New StringBuilder + Filtro.AppendFormat("CvePS={0}", RowCantidad("CvePS")) + + 'SI TIENE SERIE LA AGREGA AL FILTRO + If Not String.IsNullOrEmpty(RowCantidad("Serie").ToString()) Then + Filtro.AppendFormat("AND Serie='{0}'", RowCantidad("Serie")) + Else + Filtro.AppendFormat("AND ISNULL(Serie,'') = ''") + End If + + Dim RowDesapartado As DataRow = DtDesapartado.Select(Filtro.ToString()).FirstOrDefault() + RowDesapartado("Cantidad") = RowCantidad("Cantidad") + + DtRetorno.Rows.Add(RowDesapartado.ItemArray) + Next + End If + + Return DtRetorno + End Function + + Private Function CrearDTTraspasosClientes() As DataTable + Dim Dt As New DataTable + + Dt.Columns.Add(New DataColumn("Cantidad", GetType(Integer))) + Dt.Columns.Add(New DataColumn("CvePS", GetType(Integer))) + Dt.Columns.Add(New DataColumn("Serie", GetType(String))) + Dt.Columns.Add(New DataColumn("CveCliente", GetType(Integer))) + Dt.Columns.Add(New DataColumn("CveVendedor", GetType(Integer))) + + For Each GvRow As GridViewRow In GvDatos.Rows.Cast(Of GridViewRow).Where(Function(gvr) gvr.FCTextBox("TxtCantidad").Text.ToEntero() > 0) + Dim Row As DataRow = Dt.NewRow + + Row("Cantidad") = GvRow.FCTextBox("TxtCantidad").Text.ToEntero() + Row("CvePS") = GvRow.DataKey("CvePS").ToEntero() + Row("Serie") = GvRow.DataKey("Serie") + Row("CveCliente") = GvRow.DataKey("CveCliente").ToEntero() + Row("CveVendedor") = GvRow.DataKey("CveVendedor").ToEntero() + + Dt.Rows.Add(Row) + Next + + Return Dt + End Function + + Private Function GenerarMovimientoAlmacen(CveAlmacen As Integer, CveConceptoAlmacen As Integer, CveVendedor As Integer, CveCliente As Integer, CveMovimientoRelacionado As Integer, Obs As String, DtDetalle As DataTable, ObjInventario As ClsInventarios, Modulo As String) As MMovimientoAlmacen + Dim ErrorMovInv As Boolean = False + Dim Retorno As New MMovimientoAlmacen + + Dim CveMovimiento As Integer = -1 + Dim Folio As Integer = -1 + + CveMovimiento = ObjInventario.AddMovimiento(CveAlmacen, CveConceptoAlmacen, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, + -1, -1, -1, Observaciones:=Obs, + MovimientoFijo:=True, CveMovimientoRelacionado:=CveMovimientoRelacionado, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:=Modulo) + Folio = ObjInventario.Folio + + If Not CveMovimiento > 0 Then + ErrorMovInv = True + End If + + 'SI ES MOVIMIENTO DE SALIDA TOMA DE LA TABLA DONDE SE CUADRARON LOS MOVIMIENTOS + If Not ErrorMovInv AndAlso DtDetalle IsNot Nothing AndAlso CveMovimientoRelacionado <= 0 AndAlso CveConceptoAlmacen = 8 Then + For Each Dr As DataRow In DtDetalle.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString().ToEntero(), Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal(), -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), Lote:=Dr("Lote").ToString(), FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero) Then + ErrorMovInv = True + Exit For + End If + Next + 'SI ES MOVIMIENTO DE ENTRADA TOMA LOS DATOS DEL MOVIMIENTO DE SALIDA + ElseIf Not ErrorMovInv AndAlso DtDetalle Is Nothing AndAlso CveMovimientoRelacionado > 0 AndAlso CveConceptoAlmacen = 9 Then + Dim DtMovimientoDetalle As DataTable = Nothing + + If ObjInventario.GetMovimientosDetalle(CveMovimientoRelacionado, UsuarioActual.CveEmpresa) Then + DtMovimientoDetalle = ObjInventario.DtResultados.Copy() + Else + ErrorMovInv = True + End If + + If Not ErrorMovInv AndAlso DtMovimientoDetalle IsNot Nothing Then + For Each Dr As DataRow In DtMovimientoDetalle.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString().ToEntero(), Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero) Then + ErrorMovInv = True + Exit For + End If + Next + End If + + DtMovimientoDetalle.Dispose() + End If + + If Not ErrorMovInv Then + Retorno.CveMovimiento = CveMovimiento + Retorno.Folio = Folio + Retorno.CveConcepto = CveConceptoAlmacen + End If + + Return Retorno + End Function +End Class + +Public Class MMovimientoAlmacen + Public Property CveMovimiento As Integer + Public Property Folio As Integer + Public Property CveConcepto As Integer End Class \ No newline at end of file From c871c61a2d3af095de6e224c6981669bf467b8ab Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 12:59:51 -0700 Subject: [PATCH 23/63] Quitar facturacion de sucursal de E141 --- Ventas/Ventas.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index f66c6c5ef..fa4571f56 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -5263,7 +5263,7 @@ Partial Class Ventas DdlSucursalCliente.DataBind() 'SI UTILIZA EL RFC GENERICO PERMITE FACTURAR SUCURSAL - If (CveVenta <= 0 OrElse NuevaFactura = 1) AndAlso LblRFC.Text.Trim() = "XAXX010101000" Then + If (Not UsuarioActual.CveEmpresa.Contiene(141)) AndAlso (CveVenta <= 0 OrElse NuevaFactura = 1) AndAlso LblRFC.Text.Trim() = "XAXX010101000" Then HabilitarFacturacionSucursal() End If @@ -5663,7 +5663,7 @@ Partial Class Ventas End If 'SI EL CLIENTE TIENE RFC GENERICO Y LA SUCURSAL TIENE RFC DEBE FACTURAR LA SUCURSAL - If LblRFC.Text.Trim() = "XAXX010101000" AndAlso Not String.IsNullOrEmpty(ObjCliente.DtResultados.Rows(0)("RFC").ToString()) Then + If (Not UsuarioActual.CveEmpresa.Contiene(141)) AndAlso LblRFC.Text.Trim() = "XAXX010101000" AndAlso Not String.IsNullOrEmpty(ObjCliente.DtResultados.Rows(0)("RFC").ToString()) Then Me.FacturarSucursal = True LtlTitleRFCSucursal.Text = "RFC:" From 28b8e96dee2dca65c5eabcf4e3e813dbed89991a Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Fri, 9 Oct 2020 13:25:35 -0700 Subject: [PATCH 24/63] Mostrar complementos de Egresos --- Bancos/IE.aspx | 2 +- Bancos/IE.aspx.vb | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Bancos/IE.aspx b/Bancos/IE.aspx index c5e19185d..574ec5150 100644 --- a/Bancos/IE.aspx +++ b/Bancos/IE.aspx @@ -1291,7 +1291,7 @@
    diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 503feacc6..663b0e342 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -1945,7 +1945,7 @@ Partial Class Bancos_IE ObjOtrosPagos.Add(New CFDINominaOtrosPagos With {.TipoOtroPago = "003", .Clave = "003", .Concepto = "Viáticos (entregados al trabajador).", - .Importe = TxtImporte.Text.ToString.ToDouble + .Importe = TxtImporte.Text.ToString.ToDecimal } ) If ObjOtrosPagos IsNot Nothing AndAlso ObjOtrosPagos.Count > 0 Then cfdi.Nomina.OtrosPagos = ObjOtrosPagos @@ -5678,15 +5678,31 @@ Partial Class Bancos_IE Protected Sub GvComplementoPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvComplementoPagos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then - e.Row.Cells(3).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) - e.Row.Cells(4).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) - If e.Row.DataKey("Estatus").Contiene("1", "3") Then - e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = True - Else - e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = False + If e.Row.DataKey("Tipo") = "Ing" Then + e.Row.Cells(3).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) + e.Row.Cells(4).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) + + If e.Row.DataKey("Estatus").Contiene("1", "3") Then + e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = True + Else + e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = False + End If + + ElseIf e.Row.DataKey("Tipo") = "Egs" Then + + e.Row.Cells(3).Text = String.Format("", Encripta(String.Format("OP=Fact&EXT=xml&CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo(("RFCde").ToString.Replace("&", "%26%"))))) + e.Row.Cells(4).Text = String.Format("", Encripta(String.Format("OP=Fact&EXT=pdf&CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo("RFCde").ToString.Replace("&", "%26%")))) + + GvComplementoPagos.Columns(6).Visible = False + GvComplementoPagos.Columns(7).Visible = False + GvComplementoPagos.Columns(8).Visible = False + End If + + + End If End Sub From 6df86a6ba6fb56a2693a8eb283808bf70313d663 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Fri, 9 Oct 2020 13:53:25 -0700 Subject: [PATCH 25/63] =?UTF-8?q?Fluctuaciones=20tama=C3=B1o=20Concepto=20?= =?UTF-8?q?y=20subproyecto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/FluctuacionCambiaria.aspx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx b/Bancos/FluctuacionCambiaria.aspx index 56c76c41c..93673c3d1 100644 --- a/Bancos/FluctuacionCambiaria.aspx +++ b/Bancos/FluctuacionCambiaria.aspx @@ -333,7 +333,7 @@
    -
    +
    @@ -341,7 +341,7 @@
    -
    +
    @@ -385,7 +385,7 @@
    -
    +
    @@ -393,7 +393,7 @@
    -
    +
    @@ -443,7 +443,7 @@
    -
    +
    @@ -451,7 +451,7 @@
    -
    +
    @@ -492,7 +492,7 @@
    -
    +
    @@ -500,7 +500,7 @@
    -
    +
    @@ -539,7 +539,7 @@
    -
    +
    @@ -547,7 +547,7 @@
    -
    +
    From e6e0d4cf4dd7caf46ca33802b58ab60d029585ec Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 13:55:05 -0700 Subject: [PATCH 26/63] -- mandar la seccionalmacen = -3, en lugar de usar el global --- Inventarios/EntregaAlmacen.aspx.vb | 51 ++++++++++++++++-------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 6d6e99153..684c2edd3 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2040,12 +2040,13 @@ Partial Class Inventarios_EntregaAlmacen CantidadPendiente = 1 - If CBool(Dr("AplicaSeccion")) Then - CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Dr2("CveAlmacen").ToString.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", Dr2("CveAlmacen"), Dr("CvePS"), CveSeccionAlmacen) - Else - CveSeccionAlmacen = -1 - End If + 'If CBool(Dr("AplicaSeccion")) Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Dr2("CveAlmacen").ToString.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero + ' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", Dr2("CveAlmacen"), Dr("CvePS"), CveSeccionAlmacen) + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, Serie:=Dr1("Serie").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=CveSeccionAlmacen) Then ErrorMovInv = True @@ -2501,12 +2502,14 @@ Partial Class Inventarios_EntregaAlmacen TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados") Exit For End If - If CBool(Dr("AplicaSeccion")) Then - CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenOrigen, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", CveAlmacenOrigen, Dr("CvePS"), CveSeccionAlmacen) - Else - CveSeccionAlmacen = -1 - End If + 'If CBool(Dr("AplicaSeccion")) Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenOrigen, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero + ' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", CveAlmacenOrigen, Dr("CvePS"), CveSeccionAlmacen) + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaApartado, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString, CveSeccionAlmacen:=CveSeccionAlmacen) Then ErrorMovInv = True TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados") @@ -2535,12 +2538,13 @@ Partial Class Inventarios_EntregaAlmacen If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If CBool(Dr("AplicaSeccion")) Then - CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Dr1("CveAlmacen").ToString.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", Dr1("CveAlmacen").ToString.ToEntero, Dr("CvePS"), CveSeccionAlmacen) - Else - CveSeccionAlmacen = -1 - End If + 'If CBool(Dr("AplicaSeccion")) Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Dr1("CveAlmacen").ToString.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero + ' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", Dr1("CveAlmacen").ToString.ToEntero, Dr("CvePS"), CveSeccionAlmacen) + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString, CveSeccionAlmacen:=CveSeccionAlmacen) Then ErrorMovInv = True @@ -3124,11 +3128,12 @@ Partial Class Inventarios_EntregaAlmacen If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim CveSeccionAlmacen As Integer = -1 For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If CBool(Dr("AplicaSeccion")) Then - CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Almacen2, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Else - CveSeccionAlmacen = -1 - End If + 'If CBool(Dr("AplicaSeccion")) Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Almacen2, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then ErrorMovInv = True From 9773f372e8b0dc6c28d636333657cba7aa40e61e Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 9 Oct 2020 14:07:08 -0700 Subject: [PATCH 27/63] -- cambio en envios de seccion -3 --- Ventas/Ventas.aspx.vb | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 6b1589eed..84a238764 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -12073,8 +12073,8 @@ Partial Class Ventas Exit For End If End If - Dim CveSeccionAlmacen As Integer = -1 - If AplicaSeccion Then CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacen, CveProducto).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero + Dim CveSeccionAlmacen As Integer = -3 + 'If AplicaSeccion Then CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacen, CveProducto).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, Cantidad, CveUnidad, CveProducto, PU, -1, Serie:=Dr("Serie").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero()) Then OcurrioError = True @@ -21609,11 +21609,12 @@ Partial Class Ventas Return False End If - If AplicaSeccion Then - CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenExistenciasContrato, CveProducto).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Else - CveSeccionAlmacen = -1 - End If + 'If AplicaSeccion Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenExistenciasContrato, CveProducto).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaConsignacion, 1, CveUnidad, CveProducto, 0, -1, Serie:=Dr2("Serie").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero()) Then Return False @@ -21625,11 +21626,12 @@ Partial Class Ventas Return False End If - If AplicaSeccion Then - CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenExistenciasContrato, CveProducto).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero - Else - CveSeccionAlmacen = -1 - End If + 'If AplicaSeccion Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenExistenciasContrato, CveProducto).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaConsignacion, Cantidad, CveUnidad, CveProducto, 0, -1, CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero()) Then Return False From 8037a6f17b0cdb372b13b0d0ea3ac8f8ba2df23e Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 14:32:46 -0700 Subject: [PATCH 28/63] Cambiar porcentaje IVA al editar cotizacion --- Ventas/Ventas.aspx.vb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index fa4571f56..de5366a5a 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -24747,6 +24747,10 @@ Partial Class Ventas GvImpuestosLocales2.Enabled = True + If DdlTipoComprobante.SelectedValue = "Cot" Then + DdlIVA.Visible = True + End If + BloqueaCondiconesPago() UpPS.Update() @@ -26539,6 +26543,11 @@ Partial Class Ventas #Region "PORCENTAJE IVA" Protected Sub DdlIVA_SelectedIndexChanged(sender As Object, e As EventArgs) If Not CveVenta > 0 Or EsCreaApartirDe Or CveDevolucion > 0 Then RecalculaIVA() + + If ModalidadEdicion AndAlso DdlTipoComprobante.SelectedValue = "Cot" Then + RecalculaIVA() + End If + End Sub Private Sub RecalculaIVA() From a4eef95158f89b8643c630fed5f3e9a84ee7e7b7 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 14:48:20 -0700 Subject: [PATCH 29/63] Quitar boton de editar erroneo en cotizaciones --- Ventas/Ventas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index de5366a5a..bd10e6eca 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2157,7 +2157,7 @@ Partial Class Ventas DdlSubProyectoDatos.Enabled = False BtnEmitirImprimir.Visible = False BtnCrearApartirDe.Visible = True - If UsuarioActual.TienePermisoProceso(302) Then BtnEditar.Visible = True + If UsuarioActual.TienePermisoProceso(302) AndAlso DdlTipoComprobante.SelectedValue <> "Cot" Then BtnEditar.Visible = True 'DdlEstatus.Enabled = True DivFechaAnticipoCliente.Visible = True From c1d3268b5391befd618f2bc8f7f708c3164b3cab Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Fri, 9 Oct 2020 18:56:19 -0700 Subject: [PATCH 30/63] =?UTF-8?q?se=20agreg=C3=B3=20una=20validaci=C3=B3n?= =?UTF-8?q?=20para=20agregar=20el=20numero=20de=20reembolso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/Compras.aspx | 11 ++++++++-- Compras/Compras.aspx.vb | 47 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 8c1422c57..5f3084c38 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -3732,11 +3732,18 @@
    - +

    +
    + + + +
    + +
    @@ -4142,7 +4149,7 @@
    diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 47d1eb77c..579c5f9a5 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3946,6 +3946,15 @@ Partial Class Compras_Compras Dim EstatusCredito As Integer = 0 Dim CveSubProyecto As Integer = 0 'Credito Multiple + If RBLPago.SelectedValue.ToEntero = 2 Then + If RBLContado.SelectedValue.ToEntero = 6 Or RBLContado.SelectedValue.ToEntero = 2 Then + If Not TxtRembolsoNumero.Text.Length > 0 Then + Alert("Falta especificar un número de reembolso", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + End If + End If + If RBLPago.SelectedValue.ToEntero = 4 Then Dim DifCreCompra As Decimal = 0 @@ -12827,7 +12836,6 @@ Partial Class Compras_Compras Select Case RBLPago.SelectedValue Case "1" 'Credito PnlContado.Visible = False - If Not UsuarioActual.Empresa.UsaAC Then TxtNumeroReembolso.Text = "" tdNumeroReembolso.Visible = False @@ -12836,7 +12844,6 @@ Partial Class Compras_Compras romCreditosTabla.Visible = False Case "2" 'Contado PnlContado.Visible = True - TxtNumeroReembolso.Text = "" tdNumeroReembolso.Visible = False @@ -12870,7 +12877,6 @@ Partial Class Compras_Compras Case "3" 'Reembolso/Comprobacion PnlContado.Visible = True - ''AGARRA VALORES DE SESSION PARA REEMBOLSO -- SI YA ESTA REGISTRADA LA COMPRA IGNORA DATOS DE REEMBOLSO If Not CveCompra > 0 Then If UsuarioActual.Sesion("Comp-NumeroReembolso") <> Nothing AndAlso UsuarioActual.Sesion("Comp-NumeroReembolso").ToString <> "" Then @@ -12998,26 +13004,61 @@ Partial Class Compras_Compras Case "1" ' Bancos PnlContadoBancos.Visible = True TxtDocumentoImporte.Text = (TxtTotal.Text.ToDecimal - LblAmortizacion.Text.ToDecimal).FormatoNumero + ChkCreditoMultiple.Visible = False + DivReembolsoModal.Visible = False + RfvTxtRembolsoModal.Enabled = False + TxtRembolsoModal.Text = "" + TxtRembolsoNumero.Text = "" Case "2" ' F y E PnlContadoFyE.Visible = True CargaFuncionariosEmpleados() + ChkCreditoMultiple.Visible = False + DivReembolsoModal.Visible = True + RfvTxtRembolsoModal.Enabled = True + TxtRembolsoNumero.Text = "" + TxtRembolsoModal.Text = "" Case "3" ' Creditos PnlContadoCreditos.Visible = True + ChkCreditoMultiple.Visible = True CargaCreditos() + DivReembolsoModal.Visible = False + RfvTxtRembolsoModal.Enabled = False + TxtRembolsoModal.Text = "" + TxtRembolsoNumero.Text = "" Case "4" ' Deudores PnlContadoDeudores.Visible = True CargaDeudores() + ChkCreditoMultiple.Visible = False + DivReembolsoModal.Visible = False + RfvTxtRembolsoModal.Enabled = False + TxtRembolsoModal.Text = "" + TxtRembolsoNumero.Text = "" Case "5" ' ACREEDORES PnlContadoAcreedores.Visible = True + ChkCreditoMultiple.Visible = True CargaAcreedores() + DivReembolsoModal.Visible = False + RfvTxtRembolsoModal.Enabled = False + TxtRembolsoModal.Text = "" + TxtRembolsoNumero.Text = "" Case "6" ' Caja Chica PnlContadoCajaChica.Visible = True TxtDocumentoImporteCaja.Text = (TxtTotal.Text.ToDecimal - LblAmortizacion.Text.ToDecimal).FormatoNumero + ChkCreditoMultiple.Visible = False + DivReembolsoModal.Visible = True + RfvTxtRembolsoModal.Enabled = True + TxtRembolsoModal.Text = "" + TxtRembolsoNumero.Text = "" End Select UpContado.Update() End Sub + Protected Sub BtnContado_Click(sender As Object, e As EventArgs) + TxtRembolsoNumero.Text = TxtRembolsoModal.Text + RegistraScript(String.Format("$('#{0}').modal('hide');", "DivContadoModal")) + End Sub + Protected Sub RblRembolso_SelectedIndexChanged(sender As Object, e As EventArgs) TrRembolsoCajaChica.Visible = False TrRembolsoPersonal.Visible = False From 7eb0aa960bdec6c265e26bcc6309ef7b12c028d8 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Sat, 10 Oct 2020 11:58:01 -0700 Subject: [PATCH 31/63] quitar funcionalidad 157 --- App_Code/ClsPaginas.vb | 3 +++ Compras/Compras.aspx.vb | 13 ++----------- Inventarios/RecepcionAlmacen.aspx.vb | 10 ++++------ 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 8cef487fc..a3d763c62 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4386,6 +4386,9 @@ Public Class ClsPaginas PaginaDict.Add("/Finanzas/RazonesFinancierasCuentas.aspx".ToUpper(), -1) PaginaDict.Add("/Finanzas/RepRotacionCartera.aspx".ToUpper(), 649) PaginaDict.Add("/Finanzas/RepRotacionCarteraDetalle.aspx".ToUpper(), 649) + + + PaginaDict.Add("/Finanzas/RepBalanceGeneralHorizontal2.aspx".ToUpper(), -1) #End Region #Region "Flotillas" diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 47d1eb77c..3bc7be0e9 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1266,10 +1266,6 @@ Partial Class Compras_Compras TieneOC = False CveMoneda = -1 - '[IPP] Eliminar 22Junio2018 - 'If UsuarioActual.Empresa.UsaInventarios Then - ' TabAlmacen.Enabled = Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 - 'End If ImgAnticiposPendientes.Attributes.Add("OnClick", "MuestraAnticipos();") 'ImgCerrar.Attributes.Add("OnClick", "$('#DivAnticipos').hide(200);") @@ -15126,12 +15122,7 @@ Partial Class Compras_Compras Dr("RetISRTC") = Dr("RetISR") Dr("TotalTC") = Dr("ImporteAjustadoDescuento") - '[IPP] - JAMEntregaAdelantado | AJUSTE DE CANITDAD POR RECIBIR EN BASE A SALDOS DE INV-COMPRAS - 'If UsuarioActual.CveUsuario = 100 Then - 'If Dr("CveTipoPS").ToString.ToEntero = 2 And UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then - ' Dr("CantidadDisponible") = If(Dr("CantidadDisponible").ToString.ToDouble > Dr("CantidadPendienteVincular").ToString.ToDouble, Dr("CantidadPendienteVincular"), Dr("CantidadDisponible")) - 'End If - 'End If + Next 'DESCRIPCION DE OC CUANDO NO ES COMPRA REGISTRADA @@ -15163,7 +15154,7 @@ Partial Class Compras_Compras 'SI PUEDE RECIBIR POR OC Y COMPRA If UsuarioActual.CveEmpresa.Contiene(119) Then - If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 And Not UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then + If UsuarioActual.Empresa.UsaInventarios And UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then Select Case DdlOCVinculaInv.SelectedValue.ToEntero Case 176 DTOCGV = DTOCGV.FiltraParametros("((EstatusInventario IN (3,5) AND CveTipoPS = 2) OR CveTipoPS = 1)") diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index e5b39aeef..544cb3ba9 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -535,11 +535,9 @@ Partial Class Inventarios_RecepcionAlmacen If UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then DdlTipo.Items.Insert(1, New ListItem("OC", "2")) - If UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then - DdlTipo.Items.RemoveAt(0) - DdlTipo.SelectedValue = "2" - ModalidadRecepcion() - End If + + + End If If UsuarioActual.Empresa.Funcionalidad(155).ToEntero > 0 Then @@ -3754,7 +3752,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim ObjOC As New ClsOC If ObjOC.GetOrdenesCompraRep("OC", -1, -1, -1, -1, MinFecha, MaxFecha, -1, -1, FolioOC, -1, -1, UsuarioActual.CveEmpresa, -1) Then 'If ObjOC.DtResultados.FiltraParametros("TipoTermino = 3").Rows.Count = 1 Then - If ObjOC.DtResultados.Rows(0)("TieneCompra").ToString.ToEntero > 0 And UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then 'Or UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 + If ObjOC.DtResultados.Rows(0)("TieneCompra").ToString.ToEntero > 0 Then 'Or UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 MensajeCompra = String.Format("{1}", ObjOC.DtResultados.Rows(0)("CveCompraVinculada").ToString, ObjOC.DtResultados.Rows(0)("SerieFolioCompraVinculada").ToString) Else CveOC = ObjOC.DtResultados.FiltroPrimeroValor("CveOrdenCompra").ToString.ToEntero From e58a2fd8d63806fd8661ec4969d2d77149509863 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Sat, 10 Oct 2020 12:01:35 -0700 Subject: [PATCH 32/63] Correcion codigo mal comentado en compras --- Compras/Compras.aspx.vb | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 3ca861b3e..e8820574f 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -19444,7 +19444,7 @@ Partial Class Compras_Compras Case 237 Select Case FleteImportacionOpcion Case 1 - If Not ObjInventario.AddFletescompras(CveFlete, CveCompra) Then + If Not ObjInventario.AddFletesCompras(CveFlete, CveCompra) Then ErrorTrans = True End If '''actualiza la compra para que no se surta en almacen. sino por el flete o importación @@ -20252,24 +20252,24 @@ Partial Class Compras_Compras ' CvePSGRuposAux.AppendFormat("{0},", CvePSIndividual) ' Next - Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) + 'Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) - Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) + 'Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) - Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - For Each PS As GridViewRow In GvPS.Rows - Dim PSIndividual As String = PS.DataKey("PS") - Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) - If ClavePSSAT = "46920" Then - ProductosCodigoSATNoPermitidos.AppendFormat("{0}
    ", PSIndividual) - End If - Next + 'Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + 'For Each PS As GridViewRow In GvPS.Rows + 'Dim PSIndividual As String = PS.DataKey("PS") + 'Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) + 'If ClavePSSAT = "46920" Then + ' ProductosCodigoSATNoPermitidos.AppendFormat("{0}
    ", PSIndividual) + ' End If + 'Next - If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then - Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

    {0}", ProductosCodigoSATNoPermitidos.ToString) - Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) - Return False - End If + 'If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + 'Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

    {0}", ProductosCodigoSATNoPermitidos.ToString) + ' Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + ' Return False + 'End If ' Return True From 3756303dbd77f71ec1f1e276d8aace8b6d4d7cd5 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Sat, 10 Oct 2020 17:37:49 -0700 Subject: [PATCH 33/63] Compras pagos conciliados al cancelar compra --- App_Code/ClsCompras.vb | 24 ++++++++++++++++++++++++ Compras/Compras.aspx.vb | 29 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index cd1106378..a32033f8e 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -2445,6 +2445,30 @@ Public Class ClsCompras Return Retorno End Function + Public Function GetComprasPagosConciliados(CveCompra As Integer, CveEmpresa As Integer) As Boolean + + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_ComprasPagosConciliadosGet") + With SqlAdapter.SelectCommand.Parameters + + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener los de pagos de compra", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + + End Function + + + + Public Function RemoveComplementoPagoDesVincular(CveFactura As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_CompraComplementoDesVincular") diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index e8820574f..341e1a52a 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -14637,6 +14637,35 @@ Partial Class Compras_Compras Protected Sub BtnCancelarCompra2_Click(sender As Object, e As EventArgs) RegistraScript("$('#DivCancelarCompra').modal('hide');") + + Dim ObjComprasComprobacion As New ClsCompras + + + If ObjComprasComprobacion.GetComprasPagosConciliados(CveCompra, UsuarioActual.CveEmpresa) Then + + Dim TienePagosConciliados As Boolean = False + + If ObjComprasComprobacion.DtResultados.Rows.Count > 0 Then + TienePagosConciliados = True + Dim PagosConciliados As New StringBuilder + + For Each Drow As DataRow In ObjComprasComprobacion.DtResultados.Rows + PagosConciliados.AppendLine($"{Drow("Folio").ToString}
    ") + Next + + + Alert($"La compra no se puede cancelar, tiene pagos conciliados:
    {PagosConciliados.ToString}", TipoMensaje.MsgAdvertencia) + End If + + If TienePagosConciliados Then + ObjComprasComprobacion.Dispose() + Exit Sub + End If + + + End If + ObjComprasComprobacion.Dispose() + Dim ObjAC As ClsContPAQi = Nothing If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then ObjAC = New ClsContPAQi(UsuarioActual.Empresa) From c92fb2fdd791cb072775ef79b121c5121a69cf29 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:50:41 -0700 Subject: [PATCH 34/63] -- cambios en contabilidad --- App_Code/ClsCompras.vb | 6 +- App_Code/ClsContabilidad.vb | 401 ++++++++++++++++++------------------ App_Code/Modelos.vb | 4 +- 3 files changed, 208 insertions(+), 203 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index cd1106378..d2fef34d1 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -2183,13 +2183,14 @@ Public Class ClsCompras #Region " ESTATUS ALMACEN " - Public Function UpdateEstatusAlmacen(CveCompra As Integer, ValorEstatus As Integer) As Boolean + Public Function UpdateEstatusAlmacen(CveCompra As Integer, ValorEstatus As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasEstatusAlmacenUpdate") With SqlAdapter.SelectCommand.Parameters .Add("@CveCompra", SqlDbType.Int).Value = CveCompra .Add("@Estatus", SqlDbType.Int).Value = ValorEstatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With Try @@ -2201,13 +2202,14 @@ Public Class ClsCompras Return Retorno End Function - Public Function UpdateEstatusAlmacenDetalle(CveCompraDetalle As Integer, ValorEstatus As Integer) As Boolean + Public Function UpdateEstatusAlmacenDetalle(CveCompraDetalle As Integer, ValorEstatus As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasDetalleEstatusAlmacenUpdate") With SqlAdapter.SelectCommand.Parameters .Add("@CveCompraDetalle", SqlDbType.Int).Value = CveCompraDetalle .Add("@Estatus", SqlDbType.Int).Value = ValorEstatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With Try diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 4085f9b24..c175d592d 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -153,22 +153,22 @@ Public Class ClsContabilidad - Public Function CuentasContablesSigGet(cveEmpresa As Int32) As Boolean - Dim retorno As Boolean = False - DataAdapter("PA_Conta_CuentasContablesSigGet", CommandType.StoredProcedure) - With SqlAdapter.SelectCommand.Parameters - .Add("@CveEmpresa", SqlDbType.Int).Value = cveEmpresa - End With - Try - SqlAdapter.Fill(Data) - retorno = True - Catch ex1 As SqlException - OnError("Ocurrió un error al obtener las Cuentas Contables", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - Catch ex As Exception - OnError("Ocurrió un error al obtener las Cuentas Contables", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return retorno - End Function + 'Public Function CuentasContablesSigGet(cveEmpresa As Int32) As Boolean + ' Dim retorno As Boolean = False + ' DataAdapter("PA_Conta_CuentasContablesSigGet", CommandType.StoredProcedure) + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveEmpresa", SqlDbType.Int).Value = cveEmpresa + ' End With + ' Try + ' SqlAdapter.Fill(Data) + ' retorno = True + ' Catch ex1 As SqlException + ' OnError("Ocurrió un error al obtener las Cuentas Contables", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' Catch ex As Exception + ' OnError("Ocurrió un error al obtener las Cuentas Contables", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' End Try + ' Return retorno + 'End Function #Region " C O N T A B I L I D A D - P R E P O L I Z A" Public Function ObtenerTipoPoliza(Valor1 As String, Valor2 As String, CveEmpresa As Integer) As Integer @@ -1118,8 +1118,9 @@ Public Class ClsContabilidad Public Function ContabilizarPrePoliza(CvePrePoliza As Integer, CveUsuario As Integer, Empresa As Empresa, Optional Fecha As Date = MinFecha, Optional Concepto As String = "", Optional ObjConta As ClsContPAQi = Nothing, Optional pIDPoliza As Integer = -1) As Boolean - + Dim StrLog As New StringBuilder Dim Retorno As Boolean = False + StrLog.AppendFormat("CvePrep:{0} - Inicio", CvePrePoliza) If Empresa.TipoContabilizacion = 1 Then ' contabilidad en SIG @@ -1396,6 +1397,8 @@ Public Class ClsContabilidad If Not ContaCompartida Then ObjConta.Dispose() End If + StrLog.AppendFormat(" - Fin") + StrLog.ToString.GuardaLogAD("LogContabilidazacion") Return Retorno End Function @@ -4645,25 +4648,25 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function GetSaldoCuenta(IdCuenta As Integer, TipoMovto As Integer, Ejercicio As Integer) As Boolean - Dim Retorno As Boolean + 'Public Function GetSaldoCuenta(IdCuenta As Integer, TipoMovto As Integer, Ejercicio As Integer) As Boolean + ' Dim Retorno As Boolean - If TipoMovto = 0 Then - DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 1 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0}", IdCuenta, Ejercicio), CommandType.Text) - Else - DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 0 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0} ", IdCuenta, Ejercicio), CommandType.Text) - End If + ' If TipoMovto = 0 Then + ' DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 1 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0}", IdCuenta, Ejercicio), CommandType.Text) + ' Else + ' DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 0 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0} ", IdCuenta, Ejercicio), CommandType.Text) + ' End If - Try - SqlAdapter.Fill(Data) - 'Retorno = Math.Round(SqlCommand.ExecuteScalar.ToString.ToDouble, 2) - Retorno = True - Catch ex As Exception - Me.OnError("Ocurrió un error al obtener eL saldo de la cuenta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' 'Retorno = Math.Round(SqlCommand.ExecuteScalar.ToString.ToDouble, 2) + ' Retorno = True + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al obtener eL saldo de la cuenta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function Public Function GetRepPresupuestosEgresosSaldos(Ejercicio As Integer, Fecha As Date, Capitulo As String, CveClasificacion As Integer, CveFuenteFinanciamiento As Integer, CveProgramaOperativo As Integer, CveUnidadAdministrativa As Integer, CveTipoGasto As Integer, Gpo As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_PresupuestosEgresosSaldosRep") @@ -4742,138 +4745,138 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function Conta_ContabilizaPrePoliza(CvePrepoliza As Integer, Ejercicio As Integer) As Boolean - Dim Retorno = False + 'Public Function Conta_ContabilizaPrePoliza(CvePrepoliza As Integer, Ejercicio As Integer) As Boolean + ' Dim Retorno = False - DataAdapter("PA_Conta_ContabilizaPrepolizas") + ' DataAdapter("PA_Conta_ContabilizaPrepolizas") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePrepoliza", SqlDbType.Int).Value = CvePrepoliza - .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CvePrepoliza", SqlDbType.Int).Value = CvePrepoliza + ' .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then - Retorno = True - Else - Retorno = False - End If - Catch ex As Exception - Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then + ' Retorno = True + ' Else + ' Retorno = False + ' End If + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function - Public Function Conta_CompactaPrePoliza(CvePrepoliza As Integer) As Boolean - Dim Retorno = False + ' Return Retorno + 'End Function + 'Public Function Conta_CompactaPrePoliza(CvePrepoliza As Integer) As Boolean + ' Dim Retorno = False - DataAdapter("PA_Comp_CompactaPrepoliza") + ' DataAdapter("PA_Comp_CompactaPrepoliza") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrepoliza - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrepoliza + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then - Retorno = True - Else - Retorno = False - End If - Catch ex As Exception - Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then + ' Retorno = True + ' Else + ' Retorno = False + ' End If + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function - Public Function Conta_GeneraPptarias(CveCompra As Integer) As Boolean - Dim Retorno = False + ' Return Retorno + 'End Function + 'Public Function Conta_GeneraPptarias(CveCompra As Integer) As Boolean + ' Dim Retorno = False - DataAdapter("PA_Conta_GeneraPptarias") + ' DataAdapter("PA_Conta_GeneraPptarias") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then - Retorno = True - Else - Retorno = False - End If - Catch ex As Exception - Me.OnError("Ocurrió un error al Generar las Cuentas Presupuestarias", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then + ' Retorno = True + ' Else + ' Retorno = False + ' End If + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al Generar las Cuentas Presupuestarias", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function - Public Function AddConta_Poliza(CveTipoPoliza As Integer, CveEjercicio As Integer, Folio As Integer, FechaPoliza As Date, Concepto As String, CveUsuario As Integer, CveEmpresa As Integer) As Integer - Dim Retorno As Integer = 0 + 'Public Function AddConta_Poliza(CveTipoPoliza As Integer, CveEjercicio As Integer, Folio As Integer, FechaPoliza As Date, Concepto As String, CveUsuario As Integer, CveEmpresa As Integer) As Integer + ' Dim Retorno As Integer = 0 - DataAdapter("PA_Add_Conta_Polizas") + ' DataAdapter("PA_Add_Conta_Polizas") - With SqlAdapter.SelectCommand.Parameters - .Add("@Folio", SqlDbType.Int).Value = Folio - ' .Add("@CveTipoPoliza", SqlDbType.Int).Value = CveTipoPoliza - .Add("@Ejercicio", SqlDbType.Int).Value = CveEjercicio - .Add("@Concepto", SqlDbType.VarChar).Value = Concepto - .Add("@FechaPoliza", SqlDbType.DateTime).Value = FechaPoliza - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@CvePoliza", SqlDbType.Int).Direction = ParameterDirection.Output - End With - Try - SqlAdapter.Fill(Data) - Retorno = SqlAdapter.SelectCommand.Parameters("@CvePoliza").Value.ToString.ToEntero - Catch ex As Exception - OnError("Ocurrió un error al agregar la poliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@Folio", SqlDbType.Int).Value = Folio + ' ' .Add("@CveTipoPoliza", SqlDbType.Int).Value = CveTipoPoliza + ' .Add("@Ejercicio", SqlDbType.Int).Value = CveEjercicio + ' .Add("@Concepto", SqlDbType.VarChar).Value = Concepto + ' .Add("@FechaPoliza", SqlDbType.DateTime).Value = FechaPoliza + ' .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + ' .Add("@CvePoliza", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = SqlAdapter.SelectCommand.Parameters("@CvePoliza").Value.ToString.ToEntero + ' Catch ex As Exception + ' OnError("Ocurrió un error al agregar la poliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function - Public Function AddConta_PolizaDetalle(CvePoliza As Integer, CveCuenta As Integer, TipoMovto As Boolean, Importe As Double, Referencia As String, - Concepto As String, FechaMovto As Date, CveUsuario As Integer, Optional ImporteMonedaExtranjera As Double = 0) As Boolean - Dim Retorno As Boolean = False + ' Return Retorno + 'End Function + 'Public Function AddConta_PolizaDetalle(CvePoliza As Integer, CveCuenta As Integer, TipoMovto As Boolean, Importe As Double, Referencia As String, + ' Concepto As String, FechaMovto As Date, CveUsuario As Integer, Optional ImporteMonedaExtranjera As Double = 0) As Boolean + ' Dim Retorno As Boolean = False - If CvePoliza <= 0 Or CveCuenta <= 0 Then - Return False - End If + ' If CvePoliza <= 0 Or CveCuenta <= 0 Then + ' Return False + ' End If - DataAdapter("PA_Add_Conta_PolizasDetalles") - 'DataAdapter("PA_Conta_PolizasDetalleAdd") + ' DataAdapter("PA_Add_Conta_PolizasDetalles") + ' 'DataAdapter("PA_Conta_PolizasDetalleAdd") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePoliza", SqlDbType.Int).Value = CvePoliza - .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta - .Add("@TipoMovto", SqlDbType.Int).Value = TipoMovto - .Add("@Total", SqlDbType.Money).Value = Math.Round(Importe, 2) - .Add("@ImporteME", SqlDbType.Money).Value = ImporteMonedaExtranjera - .Add("@Referencia", SqlDbType.VarChar).Value = Referencia - .Add("@Concepto", SqlDbType.VarChar).Value = Concepto - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CvePoliza", SqlDbType.Int).Value = CvePoliza + ' .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta + ' .Add("@TipoMovto", SqlDbType.Int).Value = TipoMovto + ' .Add("@Total", SqlDbType.Money).Value = Math.Round(Importe, 2) + ' .Add("@ImporteME", SqlDbType.Money).Value = ImporteMonedaExtranjera + ' .Add("@Referencia", SqlDbType.VarChar).Value = Referencia + ' .Add("@Concepto", SqlDbType.VarChar).Value = Concepto + ' .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero <> 0 Then - Retorno = False - Else - Retorno = True - End If - Catch ex As Exception - OnError("Ocurrió un error al agregar el movimiento en la póliza.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero <> 0 Then + ' Retorno = False + ' Else + ' Retorno = True + ' End If + ' Catch ex As Exception + ' OnError("Ocurrió un error al agregar el movimiento en la póliza.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function Public Function GetSaldoCuentaAC(TipoMovto As Integer, CveCuentaAprobado As Integer, CveCuentaDevengado As Integer, Ejercicio As Integer) As Decimal Dim Retorno As Decimal DataAdapter("PA_Conta_CalculaSaldo") @@ -4895,51 +4898,51 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function GetSegmentosNegocio(Id As Integer, Codigo As String) As Boolean - Dim Retorno As Boolean = False - Dim StrSQl = New StringBuilder + 'Public Function GetSegmentosNegocio(Id As Integer, Codigo As String) As Boolean + ' Dim Retorno As Boolean = False + ' Dim StrSQl = New StringBuilder - StrSQl.Clear() - StrSQl.Append(" SELECT Id, RTRIM (LTRIM (Codigo)) AS Codigo, Nombre, '' AS CveProyecto, '' AS CveSubProyecto ") - StrSQl.Append(" FROM SegmentosNegocio ") - StrSQl.Append(" WHERE (@Id = -1 OR Id = @Id) ") - StrSQl.Append(" AND (@Codigo = '-1' OR Codigo = @Codigo) ") + ' StrSQl.Clear() + ' StrSQl.Append(" SELECT Id, RTRIM (LTRIM (Codigo)) AS Codigo, Nombre, '' AS CveProyecto, '' AS CveSubProyecto ") + ' StrSQl.Append(" FROM SegmentosNegocio ") + ' StrSQl.Append(" WHERE (@Id = -1 OR Id = @Id) ") + ' StrSQl.Append(" AND (@Codigo = '-1' OR Codigo = @Codigo) ") - DataAdapter(StrSQl.ToString, CommandType.Text) - SqlAdapter.SelectCommand.Parameters.Add("@Id", SqlDbType.Int).Value = Id - SqlAdapter.SelectCommand.Parameters.Add("@Codigo", SqlDbType.VarChar).Value = Codigo + ' DataAdapter(StrSQl.ToString, CommandType.Text) + ' SqlAdapter.SelectCommand.Parameters.Add("@Id", SqlDbType.Int).Value = Id + ' SqlAdapter.SelectCommand.Parameters.Add("@Codigo", SqlDbType.VarChar).Value = Codigo - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex As Exception + ' OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function - Public Function GetSubProyectos(CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - Dim StrSQl = New StringBuilder + 'Public Function GetSubProyectos(CveEmpresa As Integer) As Boolean + ' Dim Retorno As Boolean = False + ' Dim StrSQl = New StringBuilder - DataAdapter("PA_Comp_Compras_Pptarias") + ' DataAdapter("PA_Comp_Compras_Pptarias") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + ' End With - SqlAdapter.Fill(Data) - Retorno = True - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) - End Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex As Exception + ' OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function Public Function GetNumeroPoliza(CveTipoPoliza As Integer, Tipo As String, Fecha As DateTime, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -4962,29 +4965,29 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function Compras_Pptarias(CveCompra As Integer, Importe As Decimal, CveConceptoContable As Integer) As Boolean + 'Public Function Compras_Pptarias(CveCompra As Integer, Importe As Decimal, CveConceptoContable As Integer) As Boolean - Dim Retorno As Boolean = False + ' Dim Retorno As Boolean = False - DataAdapter("PA_Comp_Compras_Pptarias") + ' DataAdapter("PA_Comp_Compras_Pptarias") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@Importe", SqlDbType.Decimal).Value = Importe - .Add("@CveConceptoContable", SqlDbType.Int).Value = CveConceptoContable - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + ' .Add("@Importe", SqlDbType.Decimal).Value = Importe + ' .Add("@CveConceptoContable", SqlDbType.Int).Value = CveConceptoContable + ' End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex1 As SqlException - OnError("Ocurrió un error al obtener las Plantillas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - Catch ex As Exception - OnError("Ocurrió un error al obtener las Plantillas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex1 As SqlException + ' OnError("Ocurrió un error al obtener las Plantillas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' Catch ex As Exception + ' OnError("Ocurrió un error al obtener las Plantillas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function #End Region #Region "FIS IMPUESTOS" @@ -5878,7 +5881,7 @@ Public Class ClsContabilidad End Function Public Function GetPrePolizasImpresion(CveEmpresa As Integer, FechaI As String, FechaF As String, Optional CveTipoPoliza As Integer = -1, Optional FolioI As Integer = -1, - Optional FolioF As Integer = -1, Optional CveUsuario As Integer = -1, Optional IdSegNegocio As Integer = -1, + Optional FolioF As Integer = -1, Optional CveUsuario As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional CveCuenta As Integer = -1, Optional CvePlantillaPoliza As Integer = -1, Optional CveProveedor As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -5892,7 +5895,7 @@ Public Class ClsContabilidad .Add("@FolioI", SqlDbType.Int).Value = FolioI .Add("@FolioF", SqlDbType.Int).Value = FolioF .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@IdSegNegocio", SqlDbType.Int).Value = IdSegNegocio + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta .Add("@CvePlantillaPoliza", SqlDbType.Int).Value = CvePlantillaPoliza .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 6df233d4e..deb17d739 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4631,7 +4631,7 @@ Namespace Modelos Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero + 'Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero Dim IdCtaContable As Integer = 0 Dim CveCuenta As Integer = 0 If tmpCostos.Rows.Count > 0 Then @@ -4668,7 +4668,7 @@ Namespace Modelos cont += 1 Next - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, -1 * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * TotalCosto, CveCuenta:=CveCuentaAlmacen) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, -1 * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * TotalCosto) Then ErrorCancelar = True End If From 1fb4c59208774022294f1b28ca60ebbdea26a9d9 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:52:38 -0700 Subject: [PATCH 35/63] -- parametro de usuarios, en asolicitar devolucion --- Compras/Compras.aspx.vb | 82 ++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index b8f36c0f5..762ed68de 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3992,23 +3992,23 @@ Partial Class Compras_Compras End If End If - 'VERIFICA SI LOS PRODUCTOS/SERVICIOS EXISTEN EN EL CATALOGO DEL SAT - If UsuarioActual.CveEmpresa = 72 Then + ''VERIFICA SI LOS PRODUCTOS/SERVICIOS EXISTEN EN EL CATALOGO DEL SAT + 'If UsuarioActual.CveEmpresa = 72 Then - Dim DtNoEncontrados As DataTable = TmpDT.FiltraParametros("ISNULL(CveSATPS,0) = 46920 ") - If DtNoEncontrados IsNot Nothing AndAlso DtNoEncontrados.Rows.Count > 0 Then - Dim StrNoEncontrados As New StringBuilder - StrNoEncontrados.Append("Los siguientes productos no tiene asignado la clave Producto SAT o Unidad Medida SAT

    ") - For Each drt As DataRow In DtNoEncontrados.Rows - StrNoEncontrados.AppendFormat("{0}
    ", drt("CodigoPS")) - Next - Alert(StrNoEncontrados.ToString(), TipoMensaje.MsgAdvertencia) - DtNoEncontrados.Dispose() - StrNoEncontrados.Clear() - Exit Sub - End If - DtNoEncontrados.Dispose() - End If + ' Dim DtNoEncontrados As DataTable = TmpDT.FiltraParametros("ISNULL(CveSATPS,0) = 46920 ") + ' If DtNoEncontrados IsNot Nothing AndAlso DtNoEncontrados.Rows.Count > 0 Then + ' Dim StrNoEncontrados As New StringBuilder + ' StrNoEncontrados.Append("Los siguientes productos no tiene asignado la clave Producto SAT o Unidad Medida SAT

    ") + ' For Each drt As DataRow In DtNoEncontrados.Rows + ' StrNoEncontrados.AppendFormat("{0}
    ", drt("CodigoPS")) + ' Next + ' Alert(StrNoEncontrados.ToString(), TipoMensaje.MsgAdvertencia) + ' DtNoEncontrados.Dispose() + ' StrNoEncontrados.Clear() + ' Exit Sub + ' End If + ' DtNoEncontrados.Dispose() + 'End If 'Verifica funcionalidad 702 "Require orden de compra para factura de compra" @@ -4641,7 +4641,7 @@ Partial Class Compras_Compras ErrorOC = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorOC = True End If End Select @@ -4656,7 +4656,7 @@ Partial Class Compras_Compras ErrorOC = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorOC = True End If End Select @@ -18659,14 +18659,14 @@ Partial Class Compras_Compras For Each gvr As GridViewRow In GvSolDev.Rows If gvr.FCTextBox("TxtCant").Text.ToDecimal > 0 Then 'actualiza el estatus del detalle - ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 0) + ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 0, UsuarioActual.CveUsuario) Else - ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 1) + ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 1, UsuarioActual.CveUsuario) End If Next End If - If ObjCompras.UpdateEstatusAlmacen(CveCompra, If(EstatusAlmacen = 1, 0, 1)) Then + If ObjCompras.UpdateEstatusAlmacen(CveCompra, If(EstatusAlmacen = 1, 0, 1), UsuarioActual.CveUsuario) Then EstatusAlmacen = If(EstatusAlmacen = 1, 0, 1) Alert(If(EstatusAlmacen = 1, "La solicitud de devolución de almacen se guardo correctamente.", "La solicitud de almacen se canceló correctamente.")) End If @@ -19029,7 +19029,7 @@ Partial Class Compras_Compras End If CveMovimientoInventario = DtInv.MAX("CveMovimiento", $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToEntero IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero + ' CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero ImporteMovimiento = DtInv.SUM(If(DdlMoneda.SelectedValue = "1", "Total", "TotalExtranjero"), $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToDecimal ImporteMovimiento = If(ImporteMovimiento > Row2("Total").ToString.ToDecimal, Row2("Total").ToString.ToDecimal, ImporteMovimiento) * Multiplicador @@ -19059,15 +19059,15 @@ Partial Class Compras_Compras If IdCtaContable = 0 Then CuentasContablesInvalidas.Append("
    " & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) End If - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
    " & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) - End If + 'If CveCuenta = 0 Then + ' CuentasContablesInvalidasSIG.Append("
    " & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) + 'End If Dim SeContabiliza As Boolean = True 'SI ES GASTO DE ALMACEN NO DEBE CONTABILIZAR CONCEPTO 68 If DdlTipoCompra.SelectedValue = "10" Then SeContabiliza = False End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Concepto, 68, Concepto, FechaMovimiento, Row("IdCtaContable").ToString.ToEntero, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveMovimientoAlmacen:=Row("CveMovimiento").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), CveCuenta:=Row("CveCuenta").ToString.ToEntero, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Concepto, 68, Concepto, FechaMovimiento, Row("IdCtaContable").ToString.ToEntero, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveMovimientoAlmacen:=Row("CveMovimiento").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), Contabilizable:=SeContabiliza) Then TieneError = True Exit For End If @@ -20220,24 +20220,24 @@ Partial Class Compras_Compras ' CvePSGRuposAux.AppendFormat("{0},", CvePSIndividual) ' Next - Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) + 'Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) - Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) + 'Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) - Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - For Each PS As GridViewRow In GvPS.Rows - Dim PSIndividual As String = PS.DataKey("PS") - Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) - If ClavePSSAT = "46920" Then - ProductosCodigoSATNoPermitidos.AppendFormat("{0}
    ", PSIndividual) - End If - Next + 'Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + 'For Each PS As GridViewRow In GvPS.Rows + 'Dim PSIndividual As String = PS.DataKey("PS") + 'Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) + 'If ClavePSSAT = "46920" Then + ' ProductosCodigoSATNoPermitidos.AppendFormat("{0}
    ", PSIndividual) + ' End If + 'Next - If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then - Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

    {0}", ProductosCodigoSATNoPermitidos.ToString) - Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) - Return False - End If + 'If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + 'Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

    {0}", ProductosCodigoSATNoPermitidos.ToString) + ' Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + ' Return False + 'End If ' Return True From 6f47b2e10d5fb8f167ad64aadd2ece91f02d4333 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:53:28 -0700 Subject: [PATCH 36/63] -- cambios en contabilidad, partes quitar la obtencion de cvecuenta --- AF/AF.aspx.vb | 4 +- Contabilidad/ContabilizacionVentas.aspx.cs | 2 +- Contabilidad/RegPrePolizaS.aspx | 8 +- Contabilidad/RegPrePolizaS.aspx.vb | 25 +++-- Contabilidad2/PolizasImpresion.aspx | 4 +- Contabilidad2/PolizasImpresion.aspx.vb | 30 +++--- Inventarios/Apartados.aspx.vb | 2 +- Inventarios/CatAlmacenes.aspx | 4 +- Inventarios/CatAlmacenes.aspx.vb | 108 +++++++++++---------- Inventarios/Consignaciones.aspx.vb | 4 +- Inventarios/EntregaAlmacen.aspx.vb | 4 +- Inventarios/RecepcionAlmacen.aspx.vb | 14 +-- Inventarios/TraspasoAlmacen.aspx.vb | 4 +- OC/OC.aspx.vb | 5 +- Ventas/CatClasificaciones.aspx.vb | 17 ++-- 15 files changed, 124 insertions(+), 111 deletions(-) diff --git a/AF/AF.aspx.vb b/AF/AF.aspx.vb index 690738748..2dcae1e8e 100644 --- a/AF/AF.aspx.vb +++ b/AF/AF.aspx.vb @@ -2135,12 +2135,12 @@ Partial Class AF_AF 'PREPOLIZA DE IMPORTACION DESDE ALMACEN If AFInvCvePS > 0 AndAlso AFInvCveAlmacen > 0 Then Dim IDCtaContableInv = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={AFInvCveAlmacen}").ToEntero - Dim CveCuentaInv = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={AFInvCveAlmacen}").ToEntero + 'Dim CveCuentaInv = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={AFInvCveAlmacen}").ToEntero If Not ErrorGuardar Then Dim CvePrePoliza As Integer = ObjContabilidad.AddPrePolizas("AF/ImportadoInv", 4, TxtValorCompra.Text.ToDouble, TxtValorCompra.Text.ToDouble, 1, Now, $"AF importado de Almacén {TxtCodigo.Text.Trim}", UsuarioActual.CveUsuario, CveEmpresaActual) If ObjContabilidad.AddPrePolizasDetalle(CvePrePoliza, False, TxtValorCompra.Text.ToDecimal, $"{TxtCodigo.Text.Trim} - {TxtDescripcion.Text.Trim}", 49, $"{TxtCodigo.Text.Trim} - {TxtDescripcion.Text.Trim}", Now, DdlCtaContable.SelectedValue.Trim.ToEntero, -1, CveActivoFijo:=CveActivoFijo, ImporteMX:=TxtValorCompra.Text.ToDecimal, CveCuenta:=If(UsuarioActual.Empresa.UsaContabilidad AndAlso UsuarioActual.Empresa.UsaContabilidadSIG, ObtenerCuentaDobleConta(DdlCtaContable.SelectedValue.Trim.ToEntero, UsuarioActual.CveEmpresa), -1)) Then If Not ErrorGuardar Then - If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePoliza, True, TxtValorCompra.Text.ToDecimal, TxtCodigo.Text.Trim, 68, TxtCodigo.Text.Trim, Now, IDCtaContableInv, -1, CveMovimientoAlmacen:=CveMovimientoSalidaInv, ImporteMX:=TxtValorCompra.Text.ToDecimal, CveCuenta:=CveCuentaInv) Then + If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePoliza, True, TxtValorCompra.Text.ToDecimal, TxtCodigo.Text.Trim, 68, TxtCodigo.Text.Trim, Now, IDCtaContableInv, -1, CveMovimientoAlmacen:=CveMovimientoSalidaInv, ImporteMX:=TxtValorCompra.Text.ToDecimal) Then ErrorGuardar = True End If End If diff --git a/Contabilidad/ContabilizacionVentas.aspx.cs b/Contabilidad/ContabilizacionVentas.aspx.cs index 0b85ddfa4..93878626d 100644 --- a/Contabilidad/ContabilizacionVentas.aspx.cs +++ b/Contabilidad/ContabilizacionVentas.aspx.cs @@ -42,7 +42,7 @@ public partial class Contabilidad_ContabilizacionVentas : ClsPaginas TienePermisoVerPoliza = true; } - if (UsuarioActual.Empresa.TipoContabilidad == 2 && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.TipoContabilizacion != 1 ) { ClsContPAQi ObjCont = new ClsContPAQi(UsuarioActual.Empresa); diff --git a/Contabilidad/RegPrePolizaS.aspx b/Contabilidad/RegPrePolizaS.aspx index 56ac1ea7e..e3b61c3c4 100644 --- a/Contabilidad/RegPrePolizaS.aspx +++ b/Contabilidad/RegPrePolizaS.aspx @@ -266,11 +266,15 @@
    -
    +
    Si
    + +
    + +
    @@ -575,7 +579,7 @@
    - +
    diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb index 074017309..cfa135354 100644 --- a/Contabilidad/RegPrePolizaS.aspx.vb +++ b/Contabilidad/RegPrePolizaS.aspx.vb @@ -388,14 +388,23 @@ Partial Class ContabilidadC_RegPrePolizaS LnkComplementoPago.Visible = True End If - If dr("IdPoliza").ToString.ToEntero > 0 Then - HplContabilizada.NavigateUrl = String.Format("RegPoliza.aspx?IdPoliza={0}", dr("IdPoliza")) - divContabilziada.Visible = True - ElseIf TxtTotalCargos.Text.ToDouble = TxtTotalAbonos.Text.ToDouble Then - 'sino está contabilizada, se activa el botón - BtnContabilizar.Visible = True - End If - + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + If dr("FolioPoliza").ToString.ToEntero > 0 Then + divContabilizada.Visible = True + LblFolio.Text = dr("FolioPoliza").ToString + End If + Else + If dr("IdPoliza").ToString.ToEntero > 0 Then + HplContabilizada.NavigateUrl = String.Format("RegPoliza.aspx?IdPoliza={0}", dr("IdPoliza")) + divContabilizada.Visible = True + ElseIf TxtTotalCargos.Text.ToDouble = TxtTotalAbonos.Text.ToDouble Then + 'sino está contabilizada, se activa el botón + BtnContabilizar.Visible = True + End If + End If + + + divDatosPrincipales.Visible = False divObservaciones.Visible = False UPMovs.Visible = False diff --git a/Contabilidad2/PolizasImpresion.aspx b/Contabilidad2/PolizasImpresion.aspx index f266fa9be..7664693c0 100644 --- a/Contabilidad2/PolizasImpresion.aspx +++ b/Contabilidad2/PolizasImpresion.aspx @@ -73,9 +73,9 @@
    - +
    - +
    diff --git a/Contabilidad2/PolizasImpresion.aspx.vb b/Contabilidad2/PolizasImpresion.aspx.vb index 72185a306..992887fb8 100644 --- a/Contabilidad2/PolizasImpresion.aspx.vb +++ b/Contabilidad2/PolizasImpresion.aspx.vb @@ -18,7 +18,7 @@ Partial Class Contabilidad2_PolizasImpresion DdlUsuarioRegistro.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) DdlUsuarioRegistro.DataBind() cargaddlpolizas() - CargaSegmentoNeg() + CargaSubProyectos() CargaCuentas() End If End Sub @@ -34,13 +34,13 @@ Partial Class Contabilidad2_PolizasImpresion Dim ArchivoReporte As String = "Empresas/Grales/Formatos/Polizas.rdlc" - 'If IO.File.Exists(String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta)) Then - ' ArchivoReporte = String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta) - 'End If + If IO.File.Exists(String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta)) Then + ArchivoReporte = String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta) + End If Dim ObjConta As New ClsContabilidad If ObjConta.GetPrePolizasImpresion(UsuarioActual.CveEmpresa, TxtFechaInicio.Text, TxtFechaFin.Text, CveTipoPoliza:=ddlTipoPoliza.SelectedValue.ToEntero, FolioI:=foli, - FolioF:=folf, CveUsuario:=DdlUsuarioRegistro.SelectedValue.ToEntero, IdSegNegocio:=DdlSegmentoNeg.SelectedValue.ToEntero, + FolioF:=folf, CveUsuario:=DdlUsuarioRegistro.SelectedValue.ToEntero, CveSubProyecto:=DdlSubProyectos.SelectedValue.ToEntero, CveCuenta:=DdlCuenta.SelectedValue.ToEntero, CvePlantillaPoliza:=DdlGrupoPlantilla.SelectedValue.ToEntero, CveProveedor:=DdlTipoProveedor.SelectedValue.ToEntero) Then If ObjConta.DtResultados.Rows.Count < 10000 Then @@ -60,9 +60,9 @@ Partial Class Contabilidad2_PolizasImpresion params.Add(New ReportParameter("Moneda", "")) params.Add(New ReportParameter("CodigoPostal", "")) - 'If UsuarioActual.CveEmpresa = 119 Then - ' params.Add(New ReportParameter("UsuarioRegistro", GlobalDTUsuarios(dr("IdUsuario").ToString.ToEntero).FiltroPrimeroValor("Nombre"))) - 'End If + If UsuarioActual.CveEmpresa = 119 Then + params.Add(New ReportParameter("UsuarioRegistro", dr("NombreUsuario").ToString)) + End If ImprimirPDF(ArchivoReporte, ObjConta.DtResultados, params) @@ -89,15 +89,11 @@ Partial Class Contabilidad2_PolizasImpresion DdlUsuarioRegistro.Items.Insert(0, New ListItem("Todos", "-1")) End Sub - Private Sub CargaSegmentoNeg() - Dim objtcont As New ClsContabilidad - If objtcont.GetSegmentosNegocio(-1, "-1") Then - DdlSegmentoNeg.DataSource = objtcont.DtResultados - DdlSegmentoNeg.DataBind() - End If - objtcont.Dispose() - DdlSegmentoNeg.Items.Insert(0, New ListItem("Todos", "-1")) - DdlSegmentoNeg.Items.Insert(1, New ListItem("Sin Asignar", "-2")) + Private Sub CargaSubProyectos() + DdlSubProyectos.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) + DdlSubProyectos.DataBind() + DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) + DdlSubProyectos.Items.Insert(1, New ListItem("Sin Asignar", "-2")) End Sub Private Sub CargaCuentas() diff --git a/Inventarios/Apartados.aspx.vb b/Inventarios/Apartados.aspx.vb index fd119f2c7..7cbe8dca6 100644 --- a/Inventarios/Apartados.aspx.vb +++ b/Inventarios/Apartados.aspx.vb @@ -722,7 +722,7 @@ Partial Class Inventarios_Apartados Dim CveSec As Integer = 0 For Each Dr As DataRow In ObjInventario.DtResultados.Rows - CveSec = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero + CveSec = -3 'GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSec, Serie:=Dr("Serie").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero) Then ErrorMovInv = True diff --git a/Inventarios/CatAlmacenes.aspx b/Inventarios/CatAlmacenes.aspx index 011c6115b..5810385a9 100644 --- a/Inventarios/CatAlmacenes.aspx +++ b/Inventarios/CatAlmacenes.aspx @@ -175,7 +175,7 @@ -   +   @@ -265,7 +265,7 @@
    - + diff --git a/Inventarios/CatAlmacenes.aspx.vb b/Inventarios/CatAlmacenes.aspx.vb index fe6ef2857..a0b990035 100644 --- a/Inventarios/CatAlmacenes.aspx.vb +++ b/Inventarios/CatAlmacenes.aspx.vb @@ -99,31 +99,34 @@ Partial Class Inventarios_CatAlmacenes End Sub Private Sub CargaCuentasContables() - If UsuarioActual.Empresa.TipoContabilidad = 1 Then - divCuentasCompac.Visible = False + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + divCuentasCompac.Visible = False pnlCuentassig.Visible = True Using ObjContabilidad As New ClsContabilidad 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero - If ObjContabilidad.CuentasContablesSigGet(UsuarioActual.CveEmpresa) Then + If ObjContabilidad.GetCuentas(-1, "-1", 1, UsuarioActual.CveEmpresa) Then DdlCuentasSig.DataSource = ObjContabilidad.DtResultados DdlCuentasSig.DataBind() DdlCuentasSig.Items.Insert(0, New ListItem("Selecione", "-1")) End If End Using Else - divCuentasCompac.Visible = True - pnlCuentassig.Visible = False - Using ObjContabilidad As New ClsContPAQi(UsuarioActual.Empresa) - 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero - If ObjContabilidad.GetCuentasRecursiva(UsuarioActual.Empresa.Funcionalidad(208).ToEntero, 1) Then - DtCuentasContables = ObjContabilidad.DtResultados - Else - DtCuentasContables = Nothing - End If - End Using - - DdlCuentasContables.DataSource = DtCuentasContables - DdlCuentasContables.DataBind() + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + divCuentasCompac.Visible = True + pnlCuentassig.Visible = False + Using ObjContabilidad As New ClsContPAQi(UsuarioActual.Empresa) + 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero + If ObjContabilidad.GetCuentasRecursiva(UsuarioActual.Empresa.Funcionalidad(208).ToEntero, 1) Then + DtCuentasContables = ObjContabilidad.DtResultados + Else + DtCuentasContables = Nothing + End If + End Using + + DdlCuentasContables.DataSource = DtCuentasContables + DdlCuentasContables.DataBind() + End If + End If UpAddAlmacen.Update() @@ -156,9 +159,9 @@ Partial Class Inventarios_CatAlmacenes 'e.Row.Cells(7).HorizontalAlign = HorizontalAlign.Center If e.Row.DBCampo("IdCtaContable").ToEntero > 0 Then - e.Row.FCLiteral("LtlCuentaContable").Text = DtCuentasContables.FiltroPrimeroValor("CtaCodigo", $"Id = {e.Row.DBCampo("IdCtaContable")}") - Else - e.Row.FCLiteral("LtlCuentaContable").Text = "Sin Cuenta" + e.Row.FCLiteral("LtlCuentaContable").Text = DtCuentasContables.FiltroPrimeroValor("CtaCodigo", $"Id = {e.Row.DBCampo("IdCtaContable")}") + 'Else + ' e.Row.FCLiteral("LtlCuentaContable").Text = "Sin Cuenta" End If End If @@ -181,15 +184,14 @@ Partial Class Inventarios_CatAlmacenes e.Row.FCDropDownList("DdlTipoAlmacen").DataSource = GlobalDTTipoAlmacen(-1) e.Row.FCDropDownList("DdlTipoAlmacen").DataBind() - e.Row.FCDropDownList("DdlTipoAlmacen").SelectedValue = e.Row.DBCampo("CveTipoAlmacen") - - e.Row.FCDropDownList("DdlCuentasContables").DataSource = DtCuentasContables - e.Row.FCDropDownList("DdlCuentasContables").DataBind() - e.Row.FCDropDownList("DdlCuentasContables").Items.Add(New ListItem("Seleccione", "-1")) - e.Row.FCDropDownList("DdlCuentasContables").SelectedValue = e.Row.DBCampo("IdCtaContable") - - 'e.Row.FCDropDownList("DdlModalidad").DataSource = - 'e.Row.FCDropDownList("DdlModalidad").DataBind() + e.Row.FCDropDownList("DdlTipoAlmacen").SelectedValue = e.Row.DBCampo("CveTipoAlmacen") + + + + + + 'e.Row.FCDropDownList("DdlModalidad").DataSource = + 'e.Row.FCDropDownList("DdlModalidad").DataBind() e.Row.FCDropDownList("DdlModalidad").Items.Add(New ListItem("Solo Existencia", "0")) e.Row.FCDropDownList("DdlModalidad").Items.Add(New ListItem("Contable", "1")) e.Row.FCDropDownList("DdlModalidad").SelectedValue = If(e.Row.DBCampo("Modalidad").ToString = "Contable", "1", "0") @@ -197,26 +199,27 @@ Partial Class Inventarios_CatAlmacenes End If End If - End Sub - + End Sub + #End Region - + #Region "O R D E N A M I E N T O" - 'Private Sub OrdenaDatos() - ' If (GvDatos.Rows.Count > 0) Then - ' GvDatos.UseAccessibleHeader = True - ' GvDatos.HeaderRow.TableSection = TableRowSection.TableHeader - ' RegistraScript("OrdenarGV();") - ' End If - 'End Sub + 'Private Sub OrdenaDatos() + ' If (GvDatos.Rows.Count > 0) Then + ' GvDatos.UseAccessibleHeader = True + ' GvDatos.HeaderRow.TableSection = TableRowSection.TableHeader + ' RegistraScript("OrdenarGV();") + ' End If + 'End Sub #End Region - + Private Sub RecargaGlobalAlmacenes() - Dim ObjAlmacen As New ClsInventarios - If ObjAlmacen.GetAlmacenes(-1, -1, -1, -1) Then - GlobalDTAlmacen(-1) = ObjAlmacen.DtResultados - End If - ObjAlmacen.Dispose() + GlobalDTAlmacen(UsuarioActual.CveEmpresa) = Nothing + 'Dim ObjAlmacen As New ClsInventarios + 'If ObjAlmacen.GetAlmacenes(-1, -1, -1, -1) Then + ' GlobalDTAlmacen(-1) = ObjAlmacen.DtResultados + 'End If + 'ObjAlmacen.Dispose() End Sub Private Sub RecargaGlobalAlmacenesUsuarios() @@ -238,14 +241,15 @@ Partial Class Inventarios_CatAlmacenes Dim CuentaContable As Integer = 0 Dim CveCuenta As Integer = 0 - If divddlcc.Visible Then - If pnlCuentassig.Visible Then - CveCuenta = DdlCuentasSig.SelectedValue.ToEntero() - Else - CuentaContable = DdlCuentasContables.SelectedValue.ToEntero() - End If - End If - + + If pnlCuentassig.Visible Then + CveCuenta = DdlCuentasSig.SelectedValue.ToEntero() + End If + If divCuentasCompac.Visible Then + CuentaContable = DdlCuentasContables.SelectedValue.ToEntero() + End If + + If HdnModalidad.Value = "A" Then If ObjAlmacen.AddAlmacen(TxtAlmacen.Text.Trim, DdlTipoAlmacen.SelectedValue.ToEntero, CuentaContable, DdlModalidad.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CByte(DdlInventariable.SelectedValue), DdlSubProyecto.SelectedValue.ToEntero, TxtOrden.Text.ToEntero, CveCuenta, CveUsuarioAutoriza:=DdlUsuariosAutoriza.SelectedValue.ToEntero) Then Alert("El nuevo Almacen se guardó correctamente.", TipoMensaje.MsgInformacion) diff --git a/Inventarios/Consignaciones.aspx.vb b/Inventarios/Consignaciones.aspx.vb index e414a0e36..e6886a8f2 100644 --- a/Inventarios/Consignaciones.aspx.vb +++ b/Inventarios/Consignaciones.aspx.vb @@ -1153,8 +1153,8 @@ Partial Class Inventarios_Consignaciones End If Next IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacenCI}").ToEntero - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={CveAlmacenCI}").ToEntero - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoCI, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto, CveCuenta:=CveCuenta) Then + 'CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={CveAlmacenCI}").ToEntero + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoCI, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto) Then ErrorMovInv = True End If Else diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index b3997b144..ec68fe2b0 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2816,7 +2816,7 @@ Partial Class Inventarios_EntregaAlmacen Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + 'Dim CveCuentaAlmacen As Integer = 0 'GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Dim IdCtaContable As Integer = 0 Dim CveCuenta As Integer = 0 If tmpCostos.Rows.Count > 0 Then @@ -2868,7 +2868,7 @@ Partial Class Inventarios_EntregaAlmacen cont += 1 Next - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, Serie, 68, Serie, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * TotalCosto, CveCuenta:=CveCuentaAlmacen) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, Serie, 68, Serie, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * TotalCosto) Then ErrorMovInv = True End If diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index ba9bcf526..819e9bf71 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2863,7 +2863,7 @@ Partial Class Inventarios_RecepcionAlmacen 'ACTUALIZA ESTATUS ALMACEN If TipoMovimiento = 2 Then - If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0, UsuarioActual.CveUsuario) Then ErrorMovInv = True End If End If @@ -2885,7 +2885,7 @@ Partial Class Inventarios_RecepcionAlmacen 'VARIABLES Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + ' Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Dim IdCtaContableRecepcion = -1 Dim IdCtaContableRecepcionME = -1 Dim IdCtaContableRecepcionComplementaria = -1 @@ -2959,7 +2959,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePoliza > 0 Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then 'AGREGA POR CONCEPTO POR CVEOCDETALLE If CveOCSurtir > 0 Then @@ -3099,7 +3099,7 @@ Partial Class Inventarios_RecepcionAlmacen 'VARIABLES Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + 'Dim CveCuentaAlmacen As Integer = 0 'GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Dim Fecha As Date = TxtFecha.Text.ToDate Dim CveProveedor As Integer = -1 Dim ProveedorNombre As String = "" @@ -3132,7 +3132,7 @@ Partial Class Inventarios_RecepcionAlmacen CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen-NC", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePoliza > 0 Then If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalNC, SerieFolio, CveConceptoContableNC, SerieFolio, Fecha, IdCtaContableNC, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalNC, Contabilizable:=EsContabilizable) Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then If DifCostoNC <> 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DifCostoNC * -1, SerieFolio, 69, SerieFolio, Fecha, IdCtaContableClasificacion, -1, CveClasificacion:=CveClasificacionDifCostoNC, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DifCostoNC * -1, CveCuenta:=CveCuentaClasificacion, Contabilizable:=EsContabilizable, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True @@ -3542,7 +3542,7 @@ Partial Class Inventarios_RecepcionAlmacen End If If CvePrePoliza > 0 Then Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Dim TotalCosto As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL() Dim IdCtaContableCostoInd As Integer = 0 @@ -3550,7 +3550,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim PorcentajeRecepcionCompras As Decimal = TotalCosto / DtTempCompras.SUMD("SubTotalTC") Dim ConceptoPartida As String = String.Format("{0}- Inv#{1}", HLFolio.Text, InvFolio) - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, True)) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, Contabilizable:=If(CveTipoCompra = 10, False, True)) Then 'se recorren las facturas a descontar el recepción If DtTempCompras IsNot Nothing AndAlso DtTempCompras.Rows.Count > 0 Then diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index efb17de68..58ddb7411 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -1125,8 +1125,8 @@ Partial Class Inventarios_TraspasoAlmacen Next IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacenCI}").ToEntero - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={CveAlmacenCI}").ToEntero - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto, CveCuenta:=CveCuenta) Then + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto) Then ErrorMovInv = True End If diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 146939ec4..dc0d4a830 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -2747,7 +2747,6 @@ Partial Class OC Dim CveOCDetalle = -1 Dim CveAlmacen = -1 Dim IdCtaContableAlmacen As Integer = -1 - Dim CveCuentaAlmacen As Integer = -1 Dim IdCtaContableRecepcionOC = -1 Dim IdCtaContableRecepcionOCME = -1 Dim IdCtaContableRecepcionOCComplementaria = -1 @@ -2813,7 +2812,6 @@ Partial Class OC DiferenciaInvOC = DrDiferencias("Diferencia").ToString.ToDecimal ' DtInvOCDiferencias.SUMD("Diferencia", $"CveAlmacen = {CveAlmacen} AND CveMovimiento = {CveMovimientoAlmacen} AND ConceptoSalida = {ConceptoSalida}") TCInvOC = DrDiferencias("TipoCambioAjuste").ToString.ToDecimal ' DtInvOCDiferencias.FiltroPrimeroValor("TipoCambioAjuste", $"CveAlmacen = {CveAlmacen} AND CveMovimiento = {CveMovimientoAlmacen} AND ConceptoSalida = {ConceptoSalida}").ToDecimal IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero - CveCuentaAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero If DiferenciaInvOC.RoundSQL() <> 0 Then @@ -2858,7 +2856,7 @@ Partial Class OC '2018.11.24 se cambia concepto 176, de cargo a abono negativo., petición MALL '2019.03.26 se cambia concepto 177, de abono a cargo., petición MALL '2019.04.10 se cambia concepto 177, de cargo a abono., petición MALL - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, SerieFolio, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then TieneError = True Exit For @@ -2896,7 +2894,6 @@ Partial Class OC ' DiferenciaInvOC = DtInvOCDiferencias.SUMD("Diferencia", $"CveAlmacen = {CveAlmacen} And CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = {ConceptoSalida}") ' TCInvOC = DtInvOCDiferencias.FiltroPrimeroValor("TipoCambioAjuste", $"CveAlmacen = {CveAlmacen} And CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = {ConceptoSalida}").ToDecimal ' IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero - ' CveCuentaAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero ' 'MODIFICACIÓN CONCEPTO ' If ConceptoSalida = 0 Then diff --git a/Ventas/CatClasificaciones.aspx.vb b/Ventas/CatClasificaciones.aspx.vb index d23b8bc90..eb1ea5c8c 100644 --- a/Ventas/CatClasificaciones.aspx.vb +++ b/Ventas/CatClasificaciones.aspx.vb @@ -109,7 +109,7 @@ Partial Class CatClasificaciones End If UpModalClasif.Update() - If UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then ''COMENTADO DF 30 JUNIO 2017 'Dim Cuenta As New ClsContPAQi(UsuarioActual.Empresa) @@ -118,13 +118,16 @@ Partial Class CatClasificaciones 'End If 'Cuenta.Dispose() Else - DivCuentaIngresos.Visible = False - DivCuentaCostos.Visible = False - DivCuentaGasto.Visible = False + If UsuarioActual.Empresa.TipoContabilizacion = 2 Then + DivCuentaIngresos.Visible = False + DivCuentaCostos.Visible = False + DivCuentaGasto.Visible = False + + GvDatos.Columns(1).Visible = False + GvDatos.Columns(2).Visible = False + GvDatos.Columns(3).Visible = False + End If - GvDatos.Columns(1).Visible = False - GvDatos.Columns(2).Visible = False - GvDatos.Columns(3).Visible = False End If DdlCuentaGasto.Items.Insert(0, New ListItem("-", "-1")) From 1ec0c8613d12cff087322b4bdac4f68076419987 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:57:00 -0700 Subject: [PATCH 37/63] -- cambios en e lcambio de cuenta de contabilidad --- Ventas/Ventas.aspx.vb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 81c0b9d88..20d6b1a1b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -14252,14 +14252,13 @@ Partial Class Ventas End If IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {ddlAlmacen.SelectedValue}").ToEntero() - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {ddlAlmacen.SelectedValue}").ToEntero() ValorInventario = DTMovimientosDetalles.SUMD("Total", $"CveMovimiento = {Mov("CveMovimiento")}").RoundSQL() If ValorInventario <> 0 Then 'Entrada - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveDevolucion, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioEntrada, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then + If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveDevolucion, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioEntrada, ImporteMX:=ValorInventario) Then 'Salida - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioSalida, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioSalida, ImporteMX:=ValorInventario) Then OcurrioError = True Exit For End If From 478dfb6780949612194ce71bf25c91c46993101f Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 18:02:24 -0700 Subject: [PATCH 38/63] - parametro de envio de esatus --- Compras/Compras.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index a81131917..86ede1ae8 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -19485,7 +19485,7 @@ Partial Class Compras_Compras ErrorTrans = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorTrans = True End If End Select @@ -19500,7 +19500,7 @@ Partial Class Compras_Compras ErrorTrans = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorTrans = True End If End Select From 2f25a6b2b22a6882388e6e504b4f8e465e09c0cb Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 11 Oct 2020 10:53:09 -0700 Subject: [PATCH 39/63] -- parametro de usuarioactual --- Sistemas/PopUpAddUsuario.aspx.vb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sistemas/PopUpAddUsuario.aspx.vb b/Sistemas/PopUpAddUsuario.aspx.vb index 22ed375a3..9380667be 100644 --- a/Sistemas/PopUpAddUsuario.aspx.vb +++ b/Sistemas/PopUpAddUsuario.aspx.vb @@ -263,14 +263,14 @@ Partial Class Sistemas_PopUpAddUsuario 'Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If Row.DataKey("CveModuloAcceso") <> "" Then If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkDenegar").Checked OrElse Row.DataKey("Permitir") = "0" AndAlso Row.FCCheckBox("ChkDenegar").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If End If Else If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkPermitir").Checked OrElse Row.DataKey("Permitir") = "1" AndAlso Row.FCCheckBox("ChkPermitir").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If @@ -417,14 +417,14 @@ Partial Class Sistemas_PopUpAddUsuario 'Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If Row.DataKey("CveModuloAcceso") <> "" Then If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkDenegar").Checked OrElse Row.DataKey("Permitir") = "0" AndAlso Row.FCCheckBox("ChkDenegar").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If End If Else If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkPermitir").Checked OrElse Row.DataKey("Permitir") = "1" AndAlso Row.FCCheckBox("ChkPermitir").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If @@ -435,14 +435,14 @@ Partial Class Sistemas_PopUpAddUsuario 'Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If Row.DataKey("CveModuloAcceso") <> "" Then If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkDenegar").Checked OrElse Row.DataKey("Permitir") = "0" AndAlso Row.FCCheckBox("ChkDenegar").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If End If Else If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkPermitir").Checked OrElse Row.DataKey("Permitir") = "1" AndAlso Row.FCCheckBox("ChkPermitir").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If From 72c0ae360c6fbda88d6193f430b7c0879fe61bb5 Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 11 Oct 2020 10:53:37 -0700 Subject: [PATCH 40/63] - cambio en parametro de marcar la factura para surtir --- Inventarios/RepNotasSinAlmacen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/RepNotasSinAlmacen.aspx.vb b/Inventarios/RepNotasSinAlmacen.aspx.vb index d558f6498..af54ebcf6 100644 --- a/Inventarios/RepNotasSinAlmacen.aspx.vb +++ b/Inventarios/RepNotasSinAlmacen.aspx.vb @@ -300,7 +300,7 @@ Partial Class RepNotasSinAlmacen Dim ObjCompras As New ClsCompras Dim ObjEventos As New ClsOIEventos - If ObjCompras.UpdateEstatusAlmacenDetalle(CveCompraDetalle, 1) Then + If ObjCompras.UpdateEstatusAlmacenDetalle(CveCompraDetalle, 1, Usuarioactual.CveUsuario) Then If ObjEventos.AddEventoBitacora(String.Format("El producto: {0} se marcó como no recibido", PS), "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then Alert("El producto se marcó como 'no recibido' correctamente.") End If From 6baa2b002e903c3120aa53fb75ca33c8afa1755e Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 11 Oct 2020 10:53:52 -0700 Subject: [PATCH 41/63] -- cambios de contabilidad --- App_Code/ClsBancos.vb | 4 +- App_Code/ClsContabilidad.vb | 2 +- Bancos/CuentasBancariasDetalle.aspx.vb | 106 +++++++++++++++++-------- 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index 41a2511cb..eacb04c20 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -417,8 +417,8 @@ Public Class ClsBancos Me.FFinal = Data.Rows(0)("FFinal").ToString.ToEntero Me.IdCtaContable = Data.Rows(0)("IdCtaContable").ToString.ToEntero Me.IdCtaContableComplementaria = Data.Rows(0)("IdCtaContableComplementaria").ToString.ToEntero - Me.CveCuentaConta = Data.Rows(0)("IdCtaContableSIG").ToString.ToEntero - Me.CveCuentaContaComplementaria = Data.Rows(0)("IdCtaContableComplementariaSIG").ToString.ToEntero + Me.CveCuentaConta = Data.Rows(0)("CveCuentaContable").ToString.ToEntero + Me.CveCuentaContaComplementaria = Data.Rows(0)("CveCuentaComplementaria").ToString.ToEntero Me.FormatoCheque = Data.Rows(0)("FormatoCheque").ToString Me.Estatus = Data.Rows(0)("Estatus").ToString Me.Fecha = Data.Rows(0)("Fecha").ToString.ToDate diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index c175d592d..a3e36c05a 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -62,7 +62,7 @@ Public Class ClsContabilidad Public Property CveEmpresa As Integer Public Property CveTipoPlantillaPoliza As Integer - Public Property ContaIdPoliza As Integer + Public Property ContaIdPoliza As Integer = 0 Public Property ContaFolio As Integer Public Property ValorPolizaDescuadre As Integer diff --git a/Bancos/CuentasBancariasDetalle.aspx.vb b/Bancos/CuentasBancariasDetalle.aspx.vb index 2b4c1f02f..656a2aa10 100644 --- a/Bancos/CuentasBancariasDetalle.aspx.vb +++ b/Bancos/CuentasBancariasDetalle.aspx.vb @@ -41,9 +41,8 @@ Partial Class Bancos_CuentasBancariasDetalle ViewState("CveCuenta") = Request("CveCuenta") - If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then - trCuentaContable.Visible = True - trCuentaContableComplementaria.Visible = True + If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then + CargaCuentasContables() End If @@ -60,9 +59,8 @@ Partial Class Bancos_CuentasBancariasDetalle ViewState("CveCuenta") = -1 BtnEliminar.Visible = False CreaDTUsuarios() - If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then - trCuentaContable.Visible = True - trCuentaContableComplementaria.Visible = True + If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then + CargaCuentasContables() End If 'LbAgregarSucursal.Enabled = False @@ -98,37 +96,69 @@ Partial Class Bancos_CuentasBancariasDetalle DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() End Sub - Private Sub CargaCuentasContables() - Dim IdPadre As Integer - Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) - - If DdlTipoCuenta.SelectedValue.ToEntero = 1 Then 'Caja Chica - IdPadre = UsuarioActual.Empresa.Funcionalidad(218).ToEntero - Else - Dim tesstr = UsuarioActual.Empresa.Funcionalidad(209) - IdPadre = UsuarioActual.Empresa.Funcionalidad(209).ToEntero - End If - - If IdPadre = 0 Then IdPadre = -1 + Private Sub CargaCuentasContables() Dim dt As DataTable = Nothing - If Conta.GetCuentasRecursiva(IdPadre, 1) Then - dt = Conta.DtResultados - End If - Conta.Dispose() - DDlCuentaContable.DataSource = dt - DDlCuentaContable.DataBind() - DDlCuentaContable.Items.Insert(0, New ListItem("-", "-1")) - DdlCuentaContableComplementaria.DataSource = dt - DdlCuentaContableComplementaria.DataBind() - DdlCuentaContableComplementaria.Items.Insert(0, New ListItem("-", "-1")) - If dt IsNot Nothing Then dt.Dispose() - End Sub + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + Using ObjContabilidad As New ClsContabilidad + 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero + If ObjContabilidad.GetCuentas(-1, "-1", 1, UsuarioActual.CveEmpresa) Then + DDlCuentaContable.DataSource = ObjContabilidad.DtResultados + DDlCuentaContable.DataBind() + DDlCuentaContable.Items.Insert(0, New ListItem("Selecione", "-1")) + DDlCuentaContable.DataTextField = "Cuenta" + DDlCuentaContable.DataValueField = "CveCuenta" + End If + End Using + + DDlCuentaContable.DataSource = dt + DDlCuentaContable.DataBind() + DDlCuentaContable.Items.Insert(0, New ListItem("-", "-1")) + DdlCuentaContableComplementaria.DataSource = dt + DdlCuentaContableComplementaria.DataBind() + DdlCuentaContableComplementaria.Items.Insert(0, New ListItem("-", "-1")) + If dt IsNot Nothing Then dt.Dispose() + trCuentaContable.Visible = True + trCuentaContableComplementaria.Visible = True + + Else + If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then + Dim IdPadre As Integer + Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) + + If DdlTipoCuenta.SelectedValue.ToEntero = 1 Then 'Caja Chica + IdPadre = UsuarioActual.Empresa.Funcionalidad(218).ToEntero + Else + Dim tesstr = UsuarioActual.Empresa.Funcionalidad(209) + IdPadre = UsuarioActual.Empresa.Funcionalidad(209).ToEntero + End If + + If IdPadre = 0 Then IdPadre = -1 + + If Conta.GetCuentasRecursiva(IdPadre, 1) Then + dt = Conta.DtResultados + End If + + Conta.Dispose() + DDlCuentaContable.DataSource = dt + DDlCuentaContable.DataBind() + DDlCuentaContable.Items.Insert(0, New ListItem("-", "-1")) + DdlCuentaContableComplementaria.DataSource = dt + DdlCuentaContableComplementaria.DataBind() + DdlCuentaContableComplementaria.Items.Insert(0, New ListItem("-", "-1")) + If dt IsNot Nothing Then dt.Dispose() + trCuentaContable.Visible = True + trCuentaContableComplementaria.Visible = True + End If + End If + + + End Sub #End Region - + #End Region - - + + #Region " CARGA DATOS " Private Sub CargaDatos() Dim ObjCuentasBancariasDetalle As New ClsBancos() @@ -164,8 +194,14 @@ Partial Class Bancos_CuentasBancariasDetalle DdlTipoCuenta.SelectedValue = ObjCuentasBancariasDetalle.CveTipoCuenta.ToString DdlTipoCuenta_SelectedIndexChanged(DdlTipoCuenta, EventArgs.Empty) - DDlCuentaContable.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContable.ToString) - DdlCuentaContableComplementaria.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContableComplementaria.ToString) + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + DDlCuentaContable.SelectedValueExist(ObjCuentasBancariasDetalle.CveCuentaConta.ToString) + DdlCuentaContableComplementaria.SelectedValueExist(ObjCuentasBancariasDetalle.CveCuentaContaComplementaria.ToString) + Else + DDlCuentaContable.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContable.ToString) + DdlCuentaContableComplementaria.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContableComplementaria.ToString) + End If + Else Alert("El Banco Solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia) BtnGuardar.Enabled = False From 4a4da7703f24623c8112b446c808a3d82082ee56 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 09:46:40 -0700 Subject: [PATCH 42/63] Folios virtuales en PDF E140 --- Compras/PopUpVerFactura.aspx.vb | 153 +-- Empresas/140/Formatos/Salidas.rdlc | 1358 +++++++++++++++++++++++++++ Empresas/140/Formatos/Traslado.rdlc | 81 ++ 3 files changed, 1539 insertions(+), 53 deletions(-) create mode 100644 Empresas/140/Formatos/Salidas.rdlc diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 25b566e4d..ebb9a654f 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -1275,10 +1275,23 @@ Partial Class PopUpVerFactura Dim FechaMovimiento As Date = ObjInventarios.FechaRegistro Dim CveMovimientoRelacionado As Integer = -1 + Dim FolioRelacionado As String = "" + Dim CveConceptoMovtoRelacionado As Integer = -1 + + 'VERIFICA SI TIENE MOVIMIENTO VIRTUAL RELACIONADO If UsuarioActual.CveEmpresa = 140 AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then CveMovimientoRelacionado = ObjInventarios.DtResultados.Rows(0)("CveMtoRel").ToString().ToEntero() - End If - + If CveConcepto.Contiene(3, 26) AndAlso ObjInventarios.DtResultados.FiltroPrimeroValor("CveMovimientoVirtual").ToEntero() > 0 Then + FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioVirtual") + CveConceptoMovtoRelacionado = 37 + ElseIf CveConcepto = 37 Then + FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioRelacionado") + CveConceptoMovtoRelacionado = 3 + End If + End If + + + Dim CantidadProductos As Decimal = 0 Dim CantidadUsados As Decimal = 0 @@ -1345,7 +1358,8 @@ Partial Class PopUpVerFactura EstadoOrigen, PaisOrigen, CPOrigen, CalleDestino, NoExtDestino, ColoniaDestino, LocalidadDestino, MunicipioDestino, EstadoDestino, PaisDestino, CPDestino, FechaMovimiento, NombreCapturo, PuestoRecibio, PuestoEnrego, RazonSocial, ResponsableCarga, ResponsableRecibio, NombreCliente, - CantidadProductos:=CantidadProductos, CantidadUsados:=CantidadUsados, CveTipoAlmacen:=CveTipoAlmacen, NombreEntrego:=NombreEntrego) + CantidadProductos:=CantidadProductos, CantidadUsados:=CantidadUsados, CveTipoAlmacen:=CveTipoAlmacen, NombreEntrego:=NombreEntrego, + CveConceptoMovRelacionado:=CveConceptoMovtoRelacionado, FolioRelacionado:=FolioRelacionado) End Sub Private Sub PUanacExtr(CveMoneda As Integer) 'preciounitario a moneda nacional o extranjera @@ -1362,7 +1376,8 @@ Partial Class PopUpVerFactura Remision As String, Proveedor As String, CalleOrigen As String, NoExtOrigen As String, ColoniaOrigen As String, LocalidadOrigen As String, MunicipioOrigen As String, EstadoOrigen As String, PaisOrigen As String, CPOrigen As String, CalleDestino As String, NoExtDestino As String, ColoniaDestino As String, LocalidadDestino As String, MunicipioDestino As String, EstadoDestino As String, PaisDestino As String, CPDestino As String, FechaMovimiento As Date, NombreCapturo As String, PuestoRecibio As String, PuestoEntrego As String, - RazonSocial As String, ResponsableCarga As String, ResponsableRecibio As String, NombreCliente As String, Optional CantidadProductos As Decimal = 0, Optional CantidadUsados As Decimal = 0, Optional CveTipoAlmacen As Integer = -1, Optional NombreEntrego As String = "") + RazonSocial As String, ResponsableCarga As String, ResponsableRecibio As String, NombreCliente As String, Optional CantidadProductos As Decimal = 0, Optional CantidadUsados As Decimal = 0, + Optional CveTipoAlmacen As Integer = -1, Optional NombreEntrego As String = "", Optional CveConceptoMovRelacionado As Integer = -1, Optional FolioRelacionado As String = "") Select Case CveConcepto @@ -1542,7 +1557,7 @@ Partial Class PopUpVerFactura ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") End If - Case 3, 16 ' S A L I D A S + Case 3, 16, 37 ' S A L I D A S 'Dim Archivo As New System.IO.FileInfo(String.Format("Empresas/{0}/Formatos/Salidas.rdlc", 72)) 'Dim Imagen As New System.IO.FileInfo(String.Format("Empresas/{0}/Logo.png", 72)) Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/Salidas.rdlc", UsuarioActual.Empresa.Ruta)) @@ -1552,6 +1567,8 @@ Partial Class PopUpVerFactura Dim concepto As String = "" If CveConcepto = 3 Then concepto = "SALIDA DE ALMACÉN" + ElseIf CveConcepto = 37 Then + concepto = "SALIDA VIRTUAL" Else concepto = "SALIDA DE ALMACÉN POR RECONSTRUCCIÓN" End If @@ -1688,6 +1705,34 @@ Partial Class PopUpVerFactura 'ImprimirPDF(String.Format("Empresas/{0}/Formatos/Salidas.rdlc", 72), DtMovimientos, params, "ReporteSalidas", RDSName:="DsInventarios") ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") + ElseIf UsuarioActual.CveEmpresa = 140 Then + + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + + params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("Concepto", concepto)) + params.Add(New ReportParameter("Almacen", Almacen)) + params.Add(New ReportParameter("Fecha", Fecha)) + params.Add(New ReportParameter("FacturaProveedor", FolioVenta)) + params.Add(New ReportParameter("FacturadoA", If(DtMovimientos(0)("Nombre").ToString <> "", DtMovimientos(0)("Nombre").ToString, NombreCliente))) + params.Add(New ReportParameter("Observaciones", Observaciones)) + params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("Folio", Folio)) + params.Add(New ReportParameter("Descuentos", "")) + params.Add(New ReportParameter("IVA", "")) + params.Add(New ReportParameter("Total", "")) + 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + params.Add(New ReportParameter("NombreRecibio", Recibio)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("CveConceptoMovRelacionado", CveConceptoMovRelacionado.ToString())) + params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) + + ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") Else params.Add(New ReportParameter("Folio", Folio)) params.Add(New ReportParameter("Fecha", Fecha)) @@ -2124,7 +2169,9 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("CantidadProductos", CantidadProductos.ToString())) - params.Add(New ReportParameter("CantidadUsados", CantidadUsados.ToString())) + params.Add(New ReportParameter("CantidadUsados", CantidadUsados.ToString())) + params.Add(New ReportParameter("CveConceptoMovRelacionado", CveConceptoMovRelacionado.ToString())) + params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) Else params.Add(New ReportParameter("Observaciones", Observaciones)) 'TxtObservaciones.Text params.Add(New ReportParameter("CveAlmacen", DtMovimientos(0)("CveTipoAlmacen").ToString)) @@ -2469,19 +2516,19 @@ Partial Class PopUpVerFactura If (UsuarioActual.CveEmpresa = 72) Then params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) End If - ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/SalidasGarantia.rdlc", DtMovimientos, params, String.Format("SalidaGarantia{0}", Folio.ToString), RDSName:="DsInventarios") - 'Else - ' params.Add(New ReportParameter("Folio", Folio)) - ' params.Add(New ReportParameter("Fecha", Fecha)) - ' params.Add(New ReportParameter("Almacen", Almacen)) - ' params.Add(New ReportParameter("SubProyecto", SubProyecto)) - ' params.Add(New ReportParameter("Observaciones", Observaciones)) - ' params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) - ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) - ' ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") - 'End If - - + ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/SalidasGarantia.rdlc", DtMovimientos, params, String.Format("SalidaGarantia{0}", Folio.ToString), RDSName:="DsInventarios") + 'Else + ' params.Add(New ReportParameter("Folio", Folio)) + ' params.Add(New ReportParameter("Fecha", Fecha)) + ' params.Add(New ReportParameter("Almacen", Almacen)) + ' params.Add(New ReportParameter("SubProyecto", SubProyecto)) + ' params.Add(New ReportParameter("Observaciones", Observaciones)) + ' params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) + ' ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") + 'End If + + Case 18 'D E V O L U C I O N D E L C L I E N T E Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/DevolucionCliente.rdlc", UsuarioActual.Empresa.Ruta)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -2658,36 +2705,36 @@ Partial Class PopUpVerFactura ImprimirPDF(Archivo, DtMovimientos, params, String.Format("Salida por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") ElseIf CveConcepto = 22 Then ImprimirPDF(Archivo, DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") - End If - - 'Case 22 'ENTRADA POR PRESTAMO - ' Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - ' Dim params As New List(Of ReportParameter) - - ' Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - ' If Imagen.Exists Then - ' params.Add(New ReportParameter("LogoPath", logouri)) - ' Else - ' params.Add(New ReportParameter("LogoPath", "")) - ' End If - - ' params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) - ' params.Add(New ReportParameter("Concepto", "Entrada por Prestamo")) - ' params.Add(New ReportParameter("Almacen", Almacen)) - ' params.Add(New ReportParameter("Fecha", Fecha)) - ' params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) - ' params.Add(New ReportParameter("Folio", Folio)) - ' params.Add(New ReportParameter("Descuentos", "")) - ' params.Add(New ReportParameter("IVA", "")) - ' params.Add(New ReportParameter("Total", "")) - ' 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) - ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) - ' params.Add(New ReportParameter("FacturadoA", NombreCliente)) - ' If (UsuarioActual.CveEmpresa = 72) Then - ' params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) - ' End If - ' ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") - + End If + + 'Case 22 'ENTRADA POR PRESTAMO + ' Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + ' Dim params As New List(Of ReportParameter) + + ' Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + ' If Imagen.Exists Then + ' params.Add(New ReportParameter("LogoPath", logouri)) + ' Else + ' params.Add(New ReportParameter("LogoPath", "")) + ' End If + + ' params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) + ' params.Add(New ReportParameter("Concepto", "Entrada por Prestamo")) + ' params.Add(New ReportParameter("Almacen", Almacen)) + ' params.Add(New ReportParameter("Fecha", Fecha)) + ' params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) + ' params.Add(New ReportParameter("Folio", Folio)) + ' params.Add(New ReportParameter("Descuentos", "")) + ' params.Add(New ReportParameter("IVA", "")) + ' params.Add(New ReportParameter("Total", "")) + ' 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) + ' params.Add(New ReportParameter("FacturadoA", NombreCliente)) + ' If (UsuarioActual.CveEmpresa = 72) Then + ' params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) + ' End If + ' ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") + Case 24 'SALIDA POR RESGUARDO If DtMovimientos(0)("CveTipoAlmacen").ToString.ToEntero = 20 Or DtMovimientos(0)("CveTipoAlmacen").ToString.ToEntero = 19 Then Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -3170,11 +3217,11 @@ Partial Class PopUpVerFactura If CveConcepto = 2 Then ElseIf CveConcepto = 3 Then End If - End Sub - - + End Sub + + #End Region - + #Region "OP = 'OC' - IMPRIME PDF OC" Private Sub ImprimePDFOC(CveOrdenCompra As Integer) Dim reporte As Byte() = NewGeneraBytesOC(CveOrdenCompra, ConBitacora:=(UsuarioActual.Empresa.Funcionalidad(119) = "1")) diff --git a/Empresas/140/Formatos/Salidas.rdlc b/Empresas/140/Formatos/Salidas.rdlc new file mode 100644 index 000000000..ff50a2ecb --- /dev/null +++ b/Empresas/140/Formatos/Salidas.rdlc @@ -0,0 +1,1358 @@ + + + + + + + + + 1.14223cm + + + 3.14766cm + + + 11.67011cm + + + 2.70027cm + + + 1.73945cm + + + + + 0.42054cm + + + + + true + true + + + + + Cant. + + + + + + + Textbox7 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Código + + + + + + + Textbox9 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descripción + + + + + + + Textbox11 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Serie + + + + + + + Textbox6 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Lote + + + + + + + Textbox5 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.69042cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!Codigo.Value + + + + + + + Codigo + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!PS.Value + + + + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!SerieLote.Value + + + + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!Lote.Value + + + + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + + + + + + + + + + =IIF(String.IsNullOrEmpty(Fields!Lote.Value), True,False) + + + + + + + + After + + + + + + + DsInventarios + 0.17639cm + 0.22456cm + 1.11096cm + 20.39972cm + + + + + + true + true + + + + + =Parameters!Observaciones.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 0.82291in + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Concepto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!LogoPath.Value + FitProportional + 0.3175cm + 0.19987cm + 1.66316cm + 3.43141cm + 2 + + + + + + true + true + + + + + =Parameters!FacturaProveedor.Value + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!FacturadoA.Value + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Proveedor: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Factura: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Folio: + + + + + + + Textbox3 + 0.22328cm + 13.63291cm + 0.89103cm + 4.09693cm + 7 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Folio.Value + + + + + + + Textbox31 + 0.1905cm + 17.72984cm + 0.9263cm + 2.57165cm + 8 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Almacen.Value + + + + + + + Textbox6 + 2.40855cm + 14.4575cm + 0.56824cm + 5.9022cm + 10 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox32 + 3.12876cm + 14.4575cm + 0.58913cm + 5.9022cm + 11 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Almacén: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =IIF(Parameters!CveConceptoMovRelacionado.Value = 37,"Folio Virtual:","Folio Relacionado:") + + + + + + + Textbox3 + 1.27306cm + 13.63291cm + 0.47477cm + 4.09693cm + 13 + + =IIF(Parameters!FolioRelacionado.Value = "",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!FolioRelacionado.Value + + + + + + + Textbox31 + 1.27306cm + 17.72984cm + 0.47477cm + 2.57165cm + 14 + + =IIF(Parameters!FolioRelacionado.Value = "",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + 2.22251cm + true + true + + + 0.28886cm + 2.22221cm + 0cm + 4.95004cm + + + + + + true + true + + + + + =Parameters!NombreRecibio.Value + + + + Textbox31 + 0.46525cm + 1.74387cm + 0.6cm + 5.95755cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + 0.28886cm + 12.20081cm + 0cm + 4.95004cm + 2 + + + + + + true + true + + + + + =Parameters!Almacen.Value + + + + Textbox31 + 0.42997cm + 11.80394cm + 0.6cm + 5.95755cm + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresion: + + + + + + + Textbox5 + 1.49022cm + 11.96388cm + 0.6cm + 2.90426cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FechaImpresion.Value + + + + + + + Textbox33 + 1.49022cm + 14.86814cm + 0.6cm + 2.89335cm + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 29.7cm + 21cm + 0.5cm + 1.5cm + 2cm + 2cm + 0.13cm + + + true + true + + + + + =Parameters!FolioRelacionado.Value + + + + + + 2pt + 2pt + + + + true + true + + + + + =IIF(Parameters!CveConceptoMovRelacionado.Value = 37,"Folio Virtual:","Folio Relacionado:") + + + + + + + Textbox5 + 1.34386cm + 17.07518cm + 0.6cm + 2.07667cm + 10 + + =IIF(Parameters!FolioRelacionado.Value = "",true,false) + + + + Bottom + 2pt + 2pt + + @@ -183,11 +184,12 @@ - Jesús Julían Moreno Quintana, R.F.C MOQJ851214HK4 + Jesús Julían Moreno Quintana @@ -198,11 +200,64 @@ - |www.adssistemas.mx | julian@adssistemas.mx| + R.F.C MOQJ851214HK4 + + + + + + + + Paseo Florido, 62-A, Col.: Nueva Galicia, C.P.: 83245, + + + + + + + + + Hermosillo, Sonora, México. Tel.: (662) 216-2270 + + + + + + + + + |www.adsistemas.mx | julian@adsistemas.mx| + @@ -213,9 +268,9 @@ Textbox4 0.03532cm - 1.80916in - 0.66099in - 3.62386in + 1.58787in + 1.10377in + 4.01898in 4 - - Embedded - Logo1 - FitProportional - 0.13016cm - 2.88998cm - 3.43694cm - 6 - - - - true @@ -267,6 +308,7 @@ Calibri 9pt Normal + DimGray @@ -280,7 +322,7 @@ 5.662in 0.25114in 2.24597in - 7 + 6 @@ -317,7 +360,7 @@ 5.662in 0.25635in 2.24597in - 8 + 7 - - true - - - - - Domicilio Fiscal - - - - - - - - - Paseo Florido, 62-A, Col.: Nueva Galicia, C.P.: 83245, Hermosillo, Sonora, México. Tel.: (662) 216-2270 - - - - - - - Textbox10 - 0.52493in - 1.53781in - 0.65513in - 2.06754in - 9 - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - Lugar de Expedición - - - - - - - - - =Parameters!DomicilioSucursal.Value - - - - - - - Textbox10 - 0.52493in - 3.69748in - 0.65513in - 1.93674in - 10 - - - Top - - true true @@ -436,9 +379,11 @@ - Nombre + Nombre: @@ -450,7 +395,7 @@ 0.14361cm 0.22222in 0.81128in - 11 + 8 @@ -492,7 +438,7 @@ 0.86782in 0.22222in 4.79418in - 12 + 9 @@ -535,7 +483,7 @@ 0.05654in 0.23611in 0.81128in - 13 + 10 @@ -578,7 +527,7 @@ 0.86782in 0.2309in 7.0427in - 14 + 11 @@ -621,7 +572,7 @@ 0.05654in 0.23611in 0.81128in - 15 + 12 @@ -663,7 +616,7 @@ 0.86782in 0.23611in 4.79418in - 16 + 13 @@ -867,11 +821,11 @@ Textbox58 - 5.82498in - 5.71166in + 5.01023in + 5.70142in 0.18056in 2.22448in - 21 + 18 @@ -894,6 +848,7 @@ calibri 7.5pt Normal + DimGray @@ -901,11 +856,11 @@ Textbox59 - 6.02214in - 5.70646in + 5.20739in + 5.69622in 0.16667in 2.22969in - 22 + 19 @@ -927,6 +882,7 @@ @@ -934,11 +890,11 @@ Textbox60 - 6.22915in - 5.70646in + 5.4144in + 5.69622in 0.16939in 2.22714in - 23 + 20 @@ -960,6 +916,7 @@ @@ -967,11 +924,11 @@ Textbox61 - 6.4388in - 5.71166in + 5.62405in + 5.70142in 0.17784in 2.22193in - 24 + 21 @@ -989,10 +946,11 @@ - Régimen: Régimen General de Ley Personas Morales; Condiciones de pago: + Regímen: Regímen General de Ley Personas Morales; Condiciones de pago: @@ -1000,6 +958,7 @@ @@ -1007,6 +966,7 @@ @@ -1014,6 +974,7 @@ @@ -1021,6 +982,7 @@ @@ -1028,6 +990,7 @@ @@ -1035,11 +998,11 @@ Textbox62 - 6.63726in - 1.54805in + 5.82251in + 1.53781in 0.29498in 6.38809in - 25 + 22 @@ -1057,9 +1020,10 @@ - Éste documento es una representación impresa de un CFDi + Éste documento es una representacion impresa de un CFDi @@ -1067,11 +1031,11 @@ Textbox63 - 6.8506in - 2.55254in + 6.03585in + 2.5423in 0.25in 3.69856in - 26 + 23 @@ -1099,7 +1063,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1109,6 +1073,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1118,6 +1083,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1127,6 +1093,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1138,7 +1105,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1150,7 +1117,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1162,7 +1129,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1174,7 +1141,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1186,7 +1153,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1198,11 +1165,11 @@ Normal dd/MM/yyyy None - #000000 + DimGray - ). Valor recibido a mi (nuestra) entera satisfacción. La falta de pago de éste documento a su vencimiento dará derecho a AD Sistemas, Análisis y Diseño de Sistemas o tenedor, desde el día siguiente a cobrar el 10% mensual de interes moratorios hasta su total liquidación y los gastos judiciales que se ocasionen. Lugar y Fecha de Suscripción: Hermosillo, Sonora a + ). Valor recibido a mi (nuestra) entera satisfacción. la falta de pago de éste documento a su vencimiento dará derecho a AD Sistemas, Análisis y Diseño de Sistemas o tenedor, desde el día siguiente a cobrar el 10% mensual de interes moratorios hasta su total liquidación y los gastos judiciales que se ocasionen. Lugar y Fecha de Suscripción: Hermosillo, Sonora a @@ -1222,7 +1189,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1234,7 +1201,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1251,7 +1218,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1268,7 +1235,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1297,7 +1264,16 @@ - Nombre: + Nombre: + + + + @@ -1316,7 +1293,16 @@ - Dirección: + Dirección: + + + + @@ -1360,6 +1347,7 @@ @@ -1825,11 +1813,11 @@ true - 21.55897cm - 0.0728cm + 16.20868cm + 0.13016cm 4.04843cm 20.06179cm - 27 + 24 = (Parameters!AplicaPagare.Value="0" ORelse Parameters!AplicaPagare.Value="") @@ -2465,7 +2453,7 @@ 0.11468cm 1.01949cm 20.01064cm - 28 + 25 @@ -2504,7 +2492,7 @@ 5.662in 0.20317in 2.26391in - 29 + 26 @@ -2707,6 +2696,7 @@ Myriad Pro 9pt Normal + DimGray @@ -2743,6 +2733,7 @@ 9pt Normal #,0.00 + DimGray @@ -2790,7 +2781,7 @@ 5.73412in 0.34081in 2.19818in - 30 + 27 @@ -2822,6 +2813,7 @@ Calibri 9pt '$'#,0.00;('$'#,0.00) + DimGray @@ -2880,7 +2872,9 @@ - ImpuestoLocal @@ -2906,7 +2900,7 @@ 14.56464cm 0.6cm 5.58343cm - 31 + 28 @@ -2940,6 +2934,7 @@ @@ -2952,19 +2947,9 @@ + - - - - - - - - - - 1pt 2pt @@ -3000,7 +2985,7 @@ @@ -3042,6 +3027,7 @@ @@ -3086,7 +3072,7 @@ @@ -3135,6 +3121,7 @@ @@ -3179,7 +3166,7 @@ @@ -3228,6 +3215,7 @@ @@ -3273,7 +3261,7 @@ @@ -3322,6 +3310,7 @@ @@ -3367,7 +3356,7 @@ @@ -3416,6 +3405,7 @@ @@ -3440,64 +3430,6 @@ - - 0.6cm - - - - - true - true - - - - - Cadena original del complemento de certificación digital del SAT: - - - - - - - Textbox136 - - - - - - - - - - - - - - 1pt - - #eb831f - Middle - 2pt - 2pt - 2pt - 2pt - - - 2 - - - - - @@ -3514,15 +3446,14 @@ - DsOC 5.75282cm 0.11468cm - 5.76188cm + 5.16188cm 14.34413cm - 32 + 29 @@ -3541,6 +3472,7 @@ calibri 7pt Normal + DimGray @@ -3554,6 +3486,7 @@ calibri 7pt Bold + DimGray @@ -3561,11 +3494,11 @@ Textbox18 - 4.54585in + 4.59585in 0.04404in 0.36457in 7.87931in - 33 + 30 @@ -3576,507 +3509,6 @@ 2pt - - - - true - true - - - - - CFDI Relacionados - - - - - - - Textbox5 - 0.11382cm - 0.05336cm - 0.54004cm - 20.00281cm - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Tipo Relación: - - - - - - - Textbox29 - 0.83025cm - 4.33636cm - 0.41981cm - 5.31841cm - 1 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!TipoRelacionTexto.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 2.42456cm - - - 2.05585cm - - - 3.03631cm - - - 7.7847cm - - - - - 0.44125cm - - - - - true - true - - - - - Folio - - - - - - - Textbox10 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Fecha - - - - - - - Textbox12 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Importe - - - - - - - Textbox21 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Folio Fiscal - - - - - - - Textbox11 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - 0.41479cm - - - - - true - true - - - - - =Fields!SerieFolio.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Fecha.Value - - - - - - - Fecha - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Importe.Value - - - - - - - Importe1 - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!FolioFiscal.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - - - - - - - - - - - - - After - - - - - - - DataSet4 - 1.39643cm - 2.83462cm - 0.85604cm - 15.30142cm - 3 - - - - - - true - true - - - - - VERSION 3.3 - - - - - - - Textbox5 - 2.28775cm - 17.08931cm - 0.6cm - 3.06609cm - 4 - - - 2pt - 2pt - 2pt - 2pt - - - - true - 18.31666cm - 0.0585cm - 2.97096cm - 20.1554cm - 34 - - =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) - - - - - true true @@ -4084,264 +3516,57 @@ - Nombre Comercial: + Cadena original del complemento de certificación digital del SAT: - - - - - Beneficiario: - - - - - - - - - - - - - Banco: - - - - - - - - - - - - - Clabe: - - - - - - - - - Cuenta: - - - - - - - - Textbox1 - 12.65668cm - 0.09631cm - 2.03294cm - 10.03331cm - 35 + 10.95026cm + 0.13016cm + 0.6cm + 19.96256cm + 31 + #eb831f 2pt 2pt 2pt 2pt - - true - true - - - - - JESUS JULIAN MORENO QUINTANA - - - - - - - - - Jesús Julián Moreno Quintana - - - - - - - - - BBVA Bancomer - - - - - - - - - 01 2760 0261 1276 8759 - - - - - - - - - 26 1127 6875 - - - - - - - Textbox1 - 12.65667cm - 10.12962cm - 2.03294cm - 10.08428cm - 36 + + Embedded + Logo + FitProportional + 0.07652cm + 0.13016cm + 2.76239cm + 3.72665cm + 32 - 2pt - 2pt - 2pt - 2pt - + - 25.6074cm + 20.41057cm - - - - - - - =Today - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 27.94cm 21.59cm 0.5cm @@ -4381,20 +3606,6 @@ c220a38d-e45b-4e04-917e-7dfd9cc3345f - - - System.Data.DataSet - /* Local Connection */ - - c220a38d-e45b-4e04-917e-7dfd9cc3345f - - - - System.Data.DataSet - /* Local Connection */ - - c220a38d-e45b-4e04-917e-7dfd9cc3345f - @@ -4609,74 +3820,6 @@ - - - DsDesgloseImpuestos - /* Local Query */ - - - - SerieFolio - System.String - - - Fecha - System.String - - - Importe - System.String - - - FolioFiscal - System.String - - - - DsDocumentosRelacionados - C:\Users\Jesus Murua\Documents\Visual Studio 2015\WebSites\WebSite2\App_Code\DsFirmas.xsd - DataTable1 - - - - - - - - DsDesgloseImpuestos - /* Local Query */ - - - - SerieFolio - System.String - - - Fecha - System.String - - - SubTotal - System.String - - - Importe - System.String - - - Moneda - System.String - - - - DsNCVinculadas - C:\Users\Jesus Murua\Documents\Visual Studio 2015\WebSites\WebSite2\App_Code\DsFirmas.xsd - DataTable1 - - - - - @@ -5219,6 +4362,57 @@ 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 + + image/png + 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 + Cm ce050101-4530-4332-90ec-6ac094336e40 diff --git a/Empresas/70/Formatos/Factura.rdlc b/Empresas/70/Formatos/Factura.rdlc index 7fb9bb4e8..9345e93cb 100644 --- a/Empresas/70/Formatos/Factura.rdlc +++ b/Empresas/70/Formatos/Factura.rdlc @@ -172,8 +172,10 @@ @@ -188,9 +190,10 @@ @@ -203,13 +206,74 @@ - www.adssistemas.mx|facturacion@adssistemas.mx + Paseo Florido 62A. Col. Nueva Galicia. C.P. 83245 + + + 0cm + 0cm + + + + + + Hermosillo, Sonora, México. + + + + 0cm + 0cm + + + + + + Tel. (662)2.16.22.70 + + + + 0cm + 0cm + + + + + + www.adssistemas.mx|compras@adssistemas.mx + @@ -221,9 +285,10 @@ Textbox4 - 1.93416in - 0.50583in - 3.62386in + 0.0635cm + 1.41912in + 1.04333in + 4.18732in 4 @@ -259,6 +325,7 @@ calibri 7pt Bold + DimGray @@ -266,7 +333,7 @@ Textbox18 - 4.66779in + 4.69279in 0.04515in 0.64582in 7.86282in @@ -285,7 +352,7 @@ External =Parameters!QR.Value FitProportional - 5.38305in + 6.38305in 0.04026in 1.3497in 1.5531in @@ -296,21 +363,6 @@ - - Embedded - logo - FitProportional - 0.07204cm - 1.40623cm - 2.88998cm - 2.5499cm - 7 - - - - true @@ -322,6 +374,7 @@ Calibri 9pt Normal + DimGray @@ -335,7 +388,7 @@ 5.662in 0.25114in 2.24597in - 8 + 7 @@ -372,7 +426,7 @@ 5.662in 0.25635in 2.24597in - 9 + 8 - - true - - - - - Domicilio Fiscal - - - - - - - - - Paseo Florido, 62 A, Col Nueva Galicia, - - - - 0cm - 0cm - - - - - - C.P.: 83240, Hermosillo, Sonora, México. - - - - 0cm - 0cm - - - - - - Tel.: (662) 216-2270 - - - - 0cm - 0cm - - - - Textbox10 - 0.51102in - 1.93416in - 0.65513in - 1.79619in - 10 - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - Lugar de Expedición - - - - - - - - - =Parameters!DomicilioSucursal.Value - - - - - - - Textbox10 - 0.51102in - 3.77202in - 0.65513in - 1.786in - 11 - - - Top - - true true @@ -536,6 +449,8 @@ @@ -547,7 +462,7 @@ 0.14361cm 0.22222in 0.81128in - 12 + 9 @@ -589,7 +505,7 @@ 0.86782in 0.22222in 4.79418in - 13 + 10 @@ -632,7 +550,7 @@ 0.05654in 0.23611in 0.81128in - 14 + 11 @@ -675,7 +594,7 @@ 0.86782in 0.2309in 7.0427in - 15 + 12 @@ -718,7 +639,7 @@ 0.05654in 0.23611in 0.81128in - 16 + 13 @@ -743,12 +664,14 @@ =Parameters!ClienteLugar.Value @@ -760,7 +683,7 @@ 0.86782in 0.23611in 4.79418in - 17 + 14 @@ -961,11 +885,11 @@ Textbox58 - 5.38382in + 6.38382in 5.70142in 0.18056in 2.22448in - 22 + 19 @@ -988,6 +912,7 @@ calibri 7.5pt Normal + DimGray @@ -995,11 +920,11 @@ Textbox59 - 5.58098in + 6.58098in 5.69622in 0.16667in 2.22969in - 23 + 20 @@ -1021,6 +946,7 @@ @@ -1028,11 +954,11 @@ Textbox60 - 5.80049in + 6.80049in 5.69622in 0.16939in 2.22714in - 24 + 21 @@ -1054,6 +980,7 @@ @@ -1061,11 +988,11 @@ Textbox61 - 5.99764in + 6.99764in 5.70142in 0.17784in 2.22193in - 25 + 22 @@ -1087,6 +1014,7 @@ @@ -1094,6 +1022,7 @@ @@ -1101,6 +1030,7 @@ @@ -1108,6 +1038,7 @@ @@ -1115,6 +1046,7 @@ @@ -1122,6 +1054,7 @@ @@ -1129,11 +1062,11 @@ Textbox62 - 6.21987in + 7.21987in 1.60725in 0.29498in 6.31865in - 26 + 23 @@ -1154,6 +1087,7 @@ Éste documento es una representacion impresa de un CFDi @@ -1161,11 +1095,11 @@ Textbox63 - 6.51485in + 7.51485in 2.5423in 0.25in 3.69856in - 27 + 24 @@ -1193,7 +1127,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1203,6 +1137,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1212,6 +1147,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1221,6 +1157,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1232,7 +1169,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1244,7 +1181,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1256,7 +1193,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1268,7 +1205,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1280,7 +1217,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1292,7 +1229,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1304,7 +1241,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1316,7 +1253,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1328,7 +1265,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1345,7 +1282,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1362,7 +1299,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1395,6 +1332,8 @@ @@ -1427,6 +1366,8 @@ @@ -1567,6 +1508,7 @@ @@ -1987,11 +1929,11 @@ true - 20.23207cm + 22.77207cm 0.0019cm 4.14042cm 20.06179cm - 28 + 25 = (Parameters!AplicaPagare.Value="0") @@ -2663,7 +2605,7 @@ 0.11468cm 1.25761cm 20.01064cm - 29 + 26 @@ -2676,21 +2618,32 @@ - RFC: + RFC: + + + + =Parameters!ClienteRFC.Value @@ -2702,7 +2655,7 @@ 5.662in 0.23611in 2.26391in - 30 + 27 @@ -2905,6 +2859,7 @@ calibri 9pt Normal + DimGray @@ -2941,6 +2896,7 @@ 9pt Normal #,0.00 + DimGray @@ -2988,7 +2944,7 @@ 5.68499in 0.34081in 2.23334in - 31 + 28 @@ -3020,6 +2976,7 @@ Calibri 9pt '$'#,0.00;('$'#,0.00) + DimGray @@ -3078,7 +3035,9 @@ - ImpuestoLocal @@ -3104,7 +3063,7 @@ 14.4684cm 0.6cm 5.60381cm - 32 + 29 @@ -3138,6 +3097,7 @@ @@ -3150,19 +3110,9 @@ + - - - - - - - - - - 1pt 2pt @@ -3198,7 +3148,7 @@ @@ -3206,24 +3156,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3247,6 +3181,7 @@ @@ -3291,7 +3226,7 @@ @@ -3299,24 +3234,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3340,6 +3259,7 @@ @@ -3384,7 +3304,7 @@ @@ -3392,24 +3312,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3433,6 +3337,7 @@ @@ -3478,7 +3383,7 @@ @@ -3486,24 +3391,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3527,6 +3416,7 @@ @@ -3572,7 +3462,7 @@ @@ -3580,24 +3470,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3621,6 +3495,7 @@ @@ -3645,64 +3520,6 @@ - - 0.6cm - - - - - true - true - - - - - Cadena original del complemento de certificación digital del SAT: - - - - - - - Textbox136 - - - - - - - - - - - - - - 1pt - - #eb831f - Middle - 2pt - 2pt - 2pt - 2pt - - - 2 - - - - - @@ -3719,15 +3536,14 @@ - DsOC 5.84979cm 0.14053cm - 6cm + 5.4cm 14.32787cm - 33 + 30 @@ -3785,6 +3601,7 @@ Myriad Pro 8pt Bold + DimGray @@ -3820,6 +3637,7 @@ @@ -4028,6 +3846,7 @@ @@ -4061,6 +3880,7 @@ myriad pro 7.5pt dd/MM/yyyy + DimGray @@ -4096,6 +3916,7 @@ myriad pro 7.5pt #,0.00;-#,0.00;'-' + DimGray @@ -4130,6 +3951,7 @@ @@ -4195,6 +4017,7 @@ MYRiad Pro 9.16pt Bold + DimGray @@ -4221,11 +4044,11 @@ true - 17.18306cm + 19.72306cm 0.04112cm 2.97096cm 20.1554cm - 34 + 31 =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) @@ -4235,8 +4058,242 @@ + + true + true + + + + + Cadena original del complemento de certificación digital del SAT: + + + + + + + Textbox1 + 11.26418cm + 0.14053cm + 0.6cm + 19.93168cm + 32 + + + #eb831f + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Nombre Comercial + + + + + + + + + Beneficiario + + + + + + + + + Banco + + + + + + + + + Clabe + + + + + + + + + Cuenta + + + + + + + Textbox5 + 13.70118cm + 0.14361cm + 2.37271cm + 9.55228cm + 33 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + AD Sistemas Soluciones en TI S.A. de C.V + + + + + + + + + AD Sistemas Soluciones en TI S.A. de C.V + + + + + + + + + BBVA Bancomer + + + + + + + + + 01 2760 0010 3031 6240 + + + + + + + + + 01 0303 1624 + + + + + + + Textbox5 + 13.70118cm + 9.7982cm + 2.37271cm + 9.55228cm + 34 + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo + FitProportional + 0.0635cm + 0.14361cm + 2.6818cm + 3.32767cm + 35 + + + + - 24.37249cm + 27.07124cm @@ -4269,6 +4327,7 @@ =Today @@ -5178,6 +5237,57 @@ OD7vW1kNMHB6w4ebT6+4cBNw7u7uJCOeS3RPEVCkIejo6KApqFHXxGygOAMvqGE+eBaCxXnMmDHjpVEj wDra2lAbPXr0mDGjScCmTZsqLgbHiyiukRHLHt9WfAGLt7f38ePH/8JuUCkaHhzHdub0qeDAgFHWVrCrDM7QSJ+RS1+XZgo4hgQmqmbvvgs1xSiqrDVBjYZ77NixV0RrIhoeHHHr1q24DesdxttDrRI4I0ND5vxhQ4cCTlBTLBYJamiNURSt0UAV1I4cOfLqaE1Eo4Cj5Z05fTooIADBWSiBGzhA9hdEhpiZDRs2lHmUIZS5StQ1QU0se9BDkRspLKhR1141akSjgCMQ3brYdQ724/74U8iDBw0yNpb9QYzBgzp3/r558+ZojR4KNbHERkOAGloDGdZEX18fY3z48OFXKkMV0Vjg0Ej2yZMBfn6/gzMzMzExNTEZYGT47TffCK2J83uAEwuTCI3BwNjYmIGBcSo2NpYG/de63BqiscARJYhuzRrbMaPIU1mympnhQhAUtgNqsKMboDVUxiw1fPhwnO38+fOTkpLIzdzc3Hp/7efLiUYEh+gwEH4+PkNMTEjV/lpan37aAaNLtGjRgilKS0sLq0c+xsTEpKWlXbhwgQTnWa8yL0U0IjiipOR27Nq1o6ytmbA6fv4ZHYCqT/FycHCIiIiIj48X4rp///7fApZyNC648idPsrOzg4OCZP5jxAis/4oVK/bt26cQl3y7v2E0LjiiuLg4JSVl48aNiEtSscb9txNXldHo4Bj7sa9ZWVm5N2+iMrLyVRjRXzwaOVXLyn755ZfNmzahuIMZGdmnTpGkN27cgObdu3exGq+mR6tNNC643+7cQW6AS9iyZe/evYcOHRK/Wn7+/PkrV67QFgoLC+/cufPw4cO/SzNVRCOCIyVzb9zIPHhw7549KRVf7XTs6NGz52Qh+/qRs2d//vnnixcv5uTk3Lx5UxCkAv6/HXn66OHDy5cuoTiCyYk4ceLEzxVaIy7/HuKfV69evX79ukQiURBk4H2VCTYWOI6ZyeHSxYuoC1gEQuN/ITEYVYpfK4IfqIDi u/dEHXxli2BjgSt7/LhAKr129eq1K1dktxX/5Vy7xi1oUJYENtWE7NGKQH2vbBduFHDIjQMuKCjIy8uTM/g94JInyZNKpQgKi0fwQ6UQd0KN25KSkleTXaOA4zjJMlxblQEL4vbvQUWrOZj2X8GO0SjgOE6qO0qpMgAhHhU/iBAPVRfC8b1C7J4+/T+bHvWpPSfVSAAAAABJRU5ErkJggg== + + image/png + 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 + Cm ce050101-4530-4332-90ec-6ac094336e40 From 2bdc38c08052f4c42e9429432472f995354dd9b4 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Mon, 12 Oct 2020 19:26:28 -0700 Subject: [PATCH 47/63] - --- Compras/Compras.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index f17632a17..6109d4080 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -20306,9 +20306,9 @@ Partial Class Compras_Compras ' Return False 'End If - Return True + 'Return True - End Function + 'End Function Private Function VerificarProductosCompraConOC() As Boolean From db6a7abb5028808fa2bfa50d8a17927570889483 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:28:45 -0700 Subject: [PATCH 48/63] funcionalidad de lista de precios en punto de venta --- Ventas/PV.aspx.vb | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 5793ea5e6..7c837c409 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -3668,6 +3668,73 @@ Partial Class PV End If End If End If + + If UsuarioActual.CveEmpresa.Contiene(1) Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPorcentajeProductos(CveCliente) Then + Dim PrecioAplicado = ObjPS.DtResultados.FiltraParametros($"CvePS = {CvePSParametro}").FiltroPrimeroValor("PrecioA").ToDouble + If PrecioAplicado > 0 Then + PrecioSugerido = PrecioAplicado + End If + End If + ObjPS.Dispose() + End If + + If UsuarioActual.Empresa.Funcionalidad(404).ToEntero > 0 Then 'cuando el valor es 10.- secuencia Cliente/Sucursal, 20 - sucursal/cliente + Dim TipoPrecioLista As Integer = UsuarioActual.Empresa.Funcionalidad(404).ToEntero + ' si es 10. primero el cliente + Dim CvePrecioListaPS As Integer + Dim PorcentajePrecio As Double = 0 + + If TipoPrecioLista = 10 Then + CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() + If CvePrecioListaPS <= 0 Then + CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() + End If + Else + CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() + If CvePrecioListaPS <= 0 Then + CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() + End If + End If + + If CvePrecioListaPS > 0 Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then + PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDouble + PorcentajePrecio = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDouble + End If + ObjPS.Dispose() + End If + + If PrecioSugerido = 0 Then + Dim ObjInventarios As New ClsInventarios + Dim CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) + 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal + If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, -1, CveTipoAlmacen:=1) + ObjInventarios.Dispose() + If CostoPS > 0 And PorcentajePrecio > 0 Then + PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS + End If + End If + 'CvePrecioLista = CvePrecioListaPS + End If + + + 'Dim ObjClasificaciones As New ClsClasificaciones + 'If ObjClasificaciones.GetClasificaciones() Then + ' PrecioBaseCosto = ObjClasificaciones.DtResultados.FiltroPrimeroValor("PrecioBaseCosto", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveClasificacion = {drPS("CveClasificacion")}").ToDecimal + 'End If + + If PrecioSugerido > 0 Then + Dim PrecioBaseCosto As Decimal = 0 + PrecioBaseCosto = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=drPS("CveClasificacion").ToString().ToEntero()).FiltroPrimeroValor("PrecioBaseCosto", "").ToDecimal + + If PrecioBaseCosto > 0 Then + PrecioSugerido = PrecioSugerido * ((PrecioBaseCosto / 100) + 1) + End If + End If + If PrecioSugerido > 0 Then TxtPrecio.Text = PrecioSugerido.FormatoNumero() RegistraScript("$get('LblPrecio1').innerText = formato_numero(" + PrecioSugerido.ToString + ", 2, '.', ',');") From 9925e1b51e12d6018a752cb6354e024195bd37de Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:31:11 -0700 Subject: [PATCH 49/63] No generar movimiento virtuales en motobaterias --- Inventarios/RecepcionAlmacen.aspx.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 59c4fb6bc..b6f55b9e9 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -971,7 +971,8 @@ Partial Class Inventarios_RecepcionAlmacen CveAlmacenDevolucionProveedor = DtRecepcion.Rows(0)("CveAlmacenDevolucionProveedor").ToString.ToEntero - If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso (DtRecepcion.COUNT("CveTamaño", "CveTamaño > 0") > 0 OrElse CargaSoloUsados) Then + 'SI ES MOTOBATERIA NO GENERA MOVIMIENTO VIRTUAL + If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso (DtRecepcion.COUNT("CveTamaño", "CveTamaño > 0 AND CveTamaño <> 16") > 0 OrElse CargaSoloUsados) Then RealizarMovimientoVirtual = True DivVirtualAdvertencia.Visible = True End If From e30c356fc153d01ec3050f4375f917ade011f556 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:31:37 -0700 Subject: [PATCH 50/63] Permite Editar datos de cliente de acumuladores --- Ventas/Clientes.aspx.vb | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index ad9f29627..ca113dc39 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -771,6 +771,11 @@ Partial Class Clientes VerificaVinculacion() UpAccionesCRM.Update() End If + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(309) Then + DeshabilitarDatosClienteCajas() + End If + End If 'End If HlEvento.Visible = True @@ -901,17 +906,33 @@ Partial Class Clientes End Function Private Function PermiteEliminar() As Boolean Return UsuarioActual.TienePermisoProceso(194) - End Function - + End Function + + Private Sub DeshabilitarDatosClienteCajas() + DdlSubProyecto.Enabled = False + DdlPrecioLista.Enabled = False + DdlClasificacion.Enabled = False + DdlVendedor.Enabled = False + DdlCorporativo.Enabled = False + ChkRequiereOC.Enabled = False + ChkEsDistribuidor.Enabled = False + DdlTipoCliente.Enabled = False + TxtCorreoEntregaCompras.Enabled = False + TxtCorreoEntregaAlmacen.Enabled = False + ChkCargoUsado.Enabled = False + ChkBonificacionUsado.Enabled = False + End Sub + + #End Region - - + + #Region "C A R G A S" - - - - - + + + + + Private Sub CreaDtPago() DtPagos = New DataTable DtPagos.Columns.Add("CveTipoMovimiento", GetType(String)) From 30eebdb2da79fe886ca1002f5bd11c868a9f9374 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:32:03 -0700 Subject: [PATCH 51/63] Error al enviar correo de factura al obtener el serie folio --- Ventas/Ventas.aspx.vb | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index c34bd0649..abb3ba8e9 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -12625,7 +12625,7 @@ Partial Class Ventas Try ' BytesPdfCotizacion(CveVenta) - Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) + Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar Mail", ex) @@ -12667,7 +12667,7 @@ Partial Class Ventas Try ' BytesPdfCotizacion(CveVenta) - Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) + Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar Mail", ex) @@ -12706,7 +12706,7 @@ Partial Class Ventas Try ' BytesPdfCotizacion(CveVenta) - Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) + Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar Mail", ex) @@ -17757,7 +17757,7 @@ Partial Class Ventas #End Region #Region " MANDA CORREO " - Private Sub MandaMails(CveVenta As Integer, EnviarFactura As Boolean, XML As String, PDF As String) + Private Sub MandaMails(CveVenta As Integer, TipoDocto As String, SerieFolio As String, EnviarFactura As Boolean, XML As String, PDF As String) Dim ObjMail As New ClsSisMail() Dim ObjVentas As New ClsVentas @@ -17770,12 +17770,12 @@ Partial Class Ventas Dim TipoComprobante = "" - If DdlTipoComprobante.SelectedValue.ToString() = "Ing" Then TipoComprobante = "Factura" - If DdlTipoComprobante.SelectedValue.ToString() = "Egs" Then TipoComprobante = "Nota de Crédito" - If DdlTipoComprobante.SelectedValue.ToString() = "Dev" Then TipoComprobante = "Nota de Devolución" - If DdlTipoComprobante.SelectedValue.ToString() = "Rem" Then TipoComprobante = "Remisión" - If DdlTipoComprobante.SelectedValue.ToString() = "Cot" Then TipoComprobante = "Cotización" - If DdlTipoComprobante.SelectedValue.ToString() = "Ant" Then TipoComprobante = "Anticipo" + If TipoDocto = "Ing" Then TipoComprobante = "Factura" + If TipoDocto = "Egs" Then TipoComprobante = "Nota de Crédito" + If TipoDocto = "Dev" Then TipoComprobante = "Nota de Devolución" + If TipoDocto = "Rem" Then TipoComprobante = "Remisión" + If TipoDocto = "Cot" Then TipoComprobante = "Cotización" + If TipoDocto = "Ant" Then TipoComprobante = "Anticipo" If UsuarioActual.Empresa.PlantillaMailVenta.Trim.Length > 0 Then Cuerpo = UsuarioActual.Empresa.PlantillaMailVenta @@ -17785,14 +17785,14 @@ Partial Class Ventas Cuerpo = Cuerpo.Replace("{""Fecha""}", TxtFecha.Text) Cuerpo = Cuerpo.Replace("{""Total""}", TxtTotal.Text) Cuerpo = Cuerpo.Replace("{""FechaVencimiento""}", TxtFechaPago.Text) - Cuerpo = Cuerpo.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Cuerpo = Cuerpo.Replace("{""SerieFolio""}", SerieFolio) End If If UsuarioActual.Empresa.AsuntoPlantillaMailVenta.Trim.Length > 0 Then Asunto = UsuarioActual.Empresa.AsuntoPlantillaMailVenta Asunto = Asunto.Replace("{""TipoDocumento""}", TipoComprobante) Asunto = Asunto.Replace("{""Sucursal""}", DdlSubProyectoDatos.SelectedItem.Text) - Asunto = Asunto.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Asunto = Asunto.Replace("{""SerieFolio""}", SerieFolio) End If If Not EnviarFactura Then From a169286b3dea6ac2e4a42537a33ba3a86f1525c9 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:28:10 -0700 Subject: [PATCH 52/63] - cambios para el usuario luz del mar y celia --- Inventarios/EntradasSalidas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 059f71e5b..5da863d9d 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -2083,7 +2083,7 @@ Partial Class Inventarios_EntradasSalidas ''condicion de limpieza si es el usuario 1490, se dejan sino If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then - If UsuarioActual.CveUsuario <> 1490 Then + If Not UsuarioActual.CveUsuario.Contiene(1490, 2185) Then 'luz del mar(1490), y celia(2185) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("1")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("2")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("3")) From e85652587c0fc827db4ee2226ab2e7a82c8945a4 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:28:20 -0700 Subject: [PATCH 53/63] -- liga de conceptos --- Contabilidad/ContabilizacionVentas.aspx.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contabilidad/ContabilizacionVentas.aspx.cs b/Contabilidad/ContabilizacionVentas.aspx.cs index 93878626d..ab77c72da 100644 --- a/Contabilidad/ContabilizacionVentas.aspx.cs +++ b/Contabilidad/ContabilizacionVentas.aspx.cs @@ -336,7 +336,7 @@ public partial class Contabilidad_ContabilizacionVentas : ClsPaginas int cvecuenta = e.Row.DataKey("CveCuenta").ToString().ToEntero(); int CveConcepto = e.Row.DBCampo("CveConceptoContable").ToEntero(); - if (CveConcepto.Contiene(5, 6, 14, 19, 17, 206, 25, 26)) + if (CveConcepto.Contiene(5, 6, 14, 19, 17, 206, 25, 26,272,275, 305,306,307,308,309,310,311,312 )) { e.Row.FCHyperLink("HplC").NavigateUrl = string.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DBCampo("CveCompra")); } @@ -344,7 +344,7 @@ public partial class Contabilidad_ContabilizacionVentas : ClsPaginas { e.Row.FCHyperLink("HplC").NavigateUrl = string.Format("/Bancos/IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE")); } - if (CveConcepto.Contiene(1, 2, 4, 13, 61, 38, 39, 150, 203, 207, 251)) + if (CveConcepto.Contiene(1, 2, 4, 12, 13, 61, 38, 39, 91, 150, 203, 207, 251, 291, 292, 293, 294)) { e.Row.FCHyperLink("HplC").NavigateUrl = string.Format("/Ventas/Ventas.aspx?CveVenta={0}", e.Row.DBCampo("CveVenta")); } From a5e9dcf8c46c7703073ea73cec13f9550198362e Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:28:33 -0700 Subject: [PATCH 54/63] - tc cuando son dolares --- Bancos/Devoluciones.aspx.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Bancos/Devoluciones.aspx.cs b/Bancos/Devoluciones.aspx.cs index 991e48ded..65a91d93d 100644 --- a/Bancos/Devoluciones.aspx.cs +++ b/Bancos/Devoluciones.aspx.cs @@ -339,6 +339,7 @@ public partial class Bancos_Devoluciones : ClsPaginas int cvePersonal = (DdlPersonal.SelectedValue.ToEntero() > 0) ? DdlPersonal.SelectedValue.ToEntero() : -1; int cveCliente = (DdlCliente.SelectedValue.ToEntero() > 0) ? DdlCliente.SelectedValue.ToEntero() : -1; bool TipoMovoDevolucion = false; + double TC = 1; StringBuilder Msg = new StringBuilder(); switch (OpcionDevolucion.SelectedValue) @@ -369,6 +370,11 @@ public partial class Bancos_Devoluciones : ClsPaginas break; } + if (CveMoneda != 1) + { + TC = get_GlobalTipoCambio(TxtFechaDocumento.Text.ToDate()); + } + // DATOS PREPOLIZA if ( DdlTipoTransanccion.SelectedValue == "1" && UsuarioActual.CveEmpresa != 119) FolioFijo = TxtFolio.Text.ToEntero(); CvePrePoliza = ObjMov.AddPrePolizas("Bancos/IE Devoluciones", CvePlantillaPoliza, TxtImporte.Text.Trim().ToDouble(), TxtImporte.Text.Trim().ToDouble(), CveMoneda, TxtFechaDocumento.Text.ToDate(), TxtObservaciones.Text.Trim(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo: FolioFijo, ReglaFolioPoliza: ObjComp.ObtenerReglaFolio(DdlTipoTransanccion.SelectedValue, null, UsuarioActual.CveEmpresa), CveTipoPoliza: ObjMov.ObtenerTipoPoliza(DdlTipoTransanccion.SelectedValue, "-1", UsuarioActual.CveEmpresa)); @@ -379,7 +385,7 @@ public partial class Bancos_Devoluciones : ClsPaginas string Ref = TxtObservaciones.Text == "" ? TxtFolio.Text : TxtObservaciones.Text; CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero(), DdlTipoTransanccion.SelectedValue.ToEntero(), TxtFechaDocumento.Text.Trim().ToDate(), TxtFolio.Text.Trim(), PagueseA, TxtImporte.Text.Trim().ToDouble(), CveMoneda, - 1, TxtObservaciones.Text.Trim(), "", false, false, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa); + TC, TxtObservaciones.Text.Trim(), "", false, false, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa); if (CveIE > 0) { //GUARDA PREPOLIZAS DETALLE DEVOLUCION From c68f7d3285c728e6e3a46ec5fc17916c2a2dfce4 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:29:17 -0700 Subject: [PATCH 55/63] - cambio de mejora --- Bancos/DepositosCaja.aspx.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Bancos/DepositosCaja.aspx.vb b/Bancos/DepositosCaja.aspx.vb index fec2b767e..3ed466c16 100644 --- a/Bancos/DepositosCaja.aspx.vb +++ b/Bancos/DepositosCaja.aspx.vb @@ -26,13 +26,13 @@ Partial Class Bancos_DepositosCaja End Sub Private Sub CargaCuentas() - DdlCuentaDeposito.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTipoCuenta <> 1", "", {"CveCuenta", "NumCuentaMoneda"}) + DdlCuentaDeposito.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros(" CveTipoCuenta <> 1", "", {"CveCuenta", "NumCuentaMoneda"}) DdlCuentaDeposito.DataBind() - DdlCajaChica.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTipoCuenta = 1", "", {"CveCuenta", "NumCuentaMoneda"}) + DdlCajaChica.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros(" CveTipoCuenta = 1", "", {"CveCuenta", "NumCuentaMoneda"}) DdlCajaChica.DataBind() - DdlSubProyectos.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveEmpresa, -1, UsuarioActual.CveEmpresa) + DdlSubProyectos.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa) DdlSubProyectos.DataBind() DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) End Sub @@ -86,8 +86,8 @@ Partial Class Bancos_DepositosCaja Dim IdCuentaBancariaDestino As Integer = 0 Dim CveCuentaBancariaOrigen As Integer = 0 Dim CveCuentaBancariaDestino As Integer = 0 - Dim drOrigen As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero($"CveCuenta = {DdlCajaChica.SelectedValue}") - Dim drDestino As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero($"CveCuenta = {DdlCuentaDeposito.SelectedValue}") + Dim drOrigen As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCajaChica.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + Dim drDestino As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCuentaDeposito.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") If drOrigen IsNot Nothing Then CveMoneda = drOrigen("CveMoneda").ToString.ToEntero From 3110ed3b1f86e07fb945021eb7d79c3ae5db941a Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:29:43 -0700 Subject: [PATCH 56/63] -- se debe de validar la prepoliza antes de contabilizarla --- Bancos/IE.aspx.vb | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 663b0e342..716f86cfc 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -3671,27 +3671,7 @@ Partial Class Bancos_IE End If End Select - - 'El movimiento 1 es el de Venta - - 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then - If IDCtaBeneficiario > 0 And IDCtaContable > 0 Then - If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - IDPoliza = ObjMov.ContaIdPoliza - 'Alert(alertaContabilizacion & ObjMov.AlertaMensaje, ModExtensiones.TipoMensaje.MsgInformacion) - Else - Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) - End If - Else - If IDCtaContable < 1 Then - Alert("No se puede contabilizar la Prepoliza debido a que la cuenta de Bancos es invalida", TipoMensaje.MsgAdvertencia) - End If - If IDCtaBeneficiario < 1 Then - Alert("No se puede contabilizar la Prepoliza debido a que las cuenta del Beneficiario es invalida", TipoMensaje.MsgAdvertencia) - End If - End If - End If + If UsuarioActual.Empresa.UsaAC Then Dim ConceptoRenglon, Referencia As String @@ -3783,6 +3763,29 @@ Partial Class Bancos_IE Else MsgError = "No se pudo validar la prepoliza de cuadre." End If + End If + + + 'El movimiento 1 es el de Venta + + 'Conta ContPAQ + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then + If IDCtaBeneficiario > 0 And IDCtaContable > 0 Then + If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + IDPoliza = ObjMov.ContaIdPoliza + 'Alert(alertaContabilizacion & ObjMov.AlertaMensaje, ModExtensiones.TipoMensaje.MsgInformacion) + Else + Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) + MsgError = "Error al contabilizar." + End If + Else + If IDCtaContable < 1 Then + Alert("No se puede contabilizar la Prepoliza debido a que la cuenta de Bancos es invalida", TipoMensaje.MsgAdvertencia) + End If + If IDCtaBeneficiario < 1 Then + Alert("No se puede contabilizar la Prepoliza debido a que las cuenta del Beneficiario es invalida", TipoMensaje.MsgAdvertencia) + End If + End If End If If MsgError = "" Then From 4c8c395ca4e8373f41f1a38bc36cdb8e9192e548 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:29:56 -0700 Subject: [PATCH 57/63] nuevo global --- Sistemas/CatSesiones.aspx | 3 ++- Sistemas/CatSesiones.aspx.vb | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Sistemas/CatSesiones.aspx b/Sistemas/CatSesiones.aspx index 0f9885da8..7b5ce4727 100644 --- a/Sistemas/CatSesiones.aspx +++ b/Sistemas/CatSesiones.aspx @@ -56,7 +56,8 @@ - + +    diff --git a/Sistemas/CatSesiones.aspx.vb b/Sistemas/CatSesiones.aspx.vb index d37d08cc2..0d7a489d3 100644 --- a/Sistemas/CatSesiones.aspx.vb +++ b/Sistemas/CatSesiones.aspx.vb @@ -92,13 +92,25 @@ Partial Class Sistemas_CatSesiones ElseIf DdlVariable.SelectedItem.Value = "GlobalDTClasificacionPorcentaje" Then CargaDTClasificacionPorcentaje() ElseIf DdlVariable.SelectedItem.Value = "GlobalDTInvPSSeccionesAlmacen" Then - CargaDTInvPSSeccionesAlmacen() + CargaDTInvPSSeccionesAlmacen() + ElseIf DdlVariable.SelectedItem.Value = "GlobalDTTipoTransacciones" Then + CargaGlobalDTTipoTransacciones() End If - End Sub + End Sub + Private Sub CargaGlobalDTTipoTransacciones() + Using ObjBancos As New ClsBancos + If ObjBancos.GetBancos_TiposTransaccion(-1) Then Application("GlobalDTTipoTransacciones") = ObjBancos.DtResultados Else Application("GlobalDTTipoTransacciones") = Nothing + If ObjBancos.GetBancos_EstatusIE() Then Application("GlobalDTBancosEstatusIE") = ObjBancos.DtResultados Else Application("GlobalDTBancosEstatusIE") = Nothing + If ObjBancos.GetBancos() Then Application("GlobalDTBancos") = ObjBancos.DtResultados Else Application("GlobalDTBancos") = Nothing + If ObjBancos.GetBancos_TiposCuenta() Then Application("GlobalDTTipoCuenta") = ObjBancos.DtResultados Else Application("GlobalDTTipoCuenta") = Nothing + End Using + End Sub + + Private Sub CargaConceptosContables() Dim ObjContabilidad As New ClsContabilidad If ObjContabilidad.GetConta_ConceptosContables() Then Application("GlobalDTContaConceptosContables") = ObjContabilidad.DtResultados Else Application("GlobalDTContaConceptosContables") = Nothing From e79d5ccace2dec9106cd8679f81191c191f64d0c Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:33:24 -0700 Subject: [PATCH 58/63] -- candado de bloqueo de generar NC, cuando E119, rfc XAXX --- Ventas/Ventas.aspx.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 20d6b1a1b..67b3653a7 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -22991,6 +22991,7 @@ Partial Class Ventas AplicaNC = False LBNotaCredito.Visible = True 'LkNotaCredito.Visible = False + DeshabilitarAplicarNotaDeCredito(LblRFC.Text) TxtNCPorcentaje.Attributes.Add("onkeyup", "CalculaImporteNC();") TxtNCImporte.Attributes.Add("onkeyup", "CalculaPorcentajeNC();") From 577c76e6918c84ee41a78889720d94b94311fc88 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:34:41 -0700 Subject: [PATCH 59/63] - --- Contabilidad/RegPrePoliza.aspx.vb | 61 +++++++++++++++++-------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/Contabilidad/RegPrePoliza.aspx.vb b/Contabilidad/RegPrePoliza.aspx.vb index 28d7b8831..c5b0c6618 100644 --- a/Contabilidad/RegPrePoliza.aspx.vb +++ b/Contabilidad/RegPrePoliza.aspx.vb @@ -171,7 +171,7 @@ Partial Class ContabilidadC_RegPrePoliza Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then - If UsuarioActual.Empresa.TipoContabilidad = 1 Then + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then Response.Redirect(Request.Url.PathAndQuery.Replace("RegPrePoliza", "RegPrePolizaS")) End If @@ -190,14 +190,17 @@ Partial Class ContabilidadC_RegPrePoliza Dim dt As DataTable = Nothing ' If UsuarioActual.Empresa.UsaContabilidad Then - Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) - If Conta.GetCuentas(-1, "-1", 1) Then - dt = Conta.DtResultados - DtCuentasContables = Conta.DtResultados - Session("DtCuentas") = Conta.DtResultados + If Conta.GetCuentas(-1, "-1", 1) Then + dt = Conta.DtResultados + DtCuentasContables = Conta.DtResultados + Session("DtCuentas") = Conta.DtResultados + End If + Conta.Dispose() End If - Conta.Dispose() + If IfNull(Request("Tipo"), "").ToString = "NOMPROV" Then DivTipoGasto.Visible = True @@ -949,24 +952,9 @@ Partial Class ContabilidadC_RegPrePoliza Exit For End If End If - Next - - 'El movimiento 2 es el de Pago - If ChkAutoConta.Checked AndAlso MsgError = "" Or UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" Then - If idCuentaContabilizacion > 0 Then - If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - - 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat("

    Folio de Salida: {1}", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) - MensajeAlert.AppendFormat("

    Prepóliza: {1}", CvePrePoliza, ObjMov.ContaFolio) - 'Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion) - Else - Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico") - End If - Else - Alert("No se puede contabilizar la Prepoliza debido a que una o mas cuentas son inválidas") - End If - End If + Next + + If CvePeriodo > 0 Then If Not ObjNom.UpdateProvisionNomina(CvePeriodo, CvePrePoliza, UsuarioActual.CveEmpresa) Then MsgError = "No se pudo actualizar el periodo de la nómina" @@ -978,6 +966,23 @@ Partial Class ContabilidadC_RegPrePoliza GuardaLogAD($"Contabilidad/RegPrePolizas | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") MsgError = ObjMov.MensajePolizaDescuadre & "-" End If + End If + + 'El movimiento 2 es el de Pago + If ChkAutoConta.Checked AndAlso MsgError = "" Or UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" Then + If idCuentaContabilizacion > 0 Then + If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + + 'MENSAJE PRINCIPAL + MensajeAlert.AppendFormat("

    Folio de Póliza: {1}", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + MensajeAlert.AppendFormat("

    Prepóliza: {1}", CvePrePoliza, ObjMov.ContaFolio) + 'Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion) + Else + Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico") + End If + Else + Alert("No se puede contabilizar la Prepoliza debido a que una o mas cuentas son inválidas") + End If End If Else @@ -1003,14 +1008,16 @@ Partial Class ContabilidadC_RegPrePoliza 'TxtFecha.Text = "" 'TxtObservaciones.Text = "" Else + MsgError.GuardaLogAD() ObjIE.RollBack() If Conta IsNot Nothing Then Conta.RollBack() End If Catch ex As Exception + ex.GuardaLog(ex.Message) ObjIE.RollBack() If Conta IsNot Nothing Then Conta.RollBack() - Alert("Ocurrio un error al registrar el movimiento", TipoMensaje.MsgInformacion) - ex.GuardaLog(ex.Message) + Alert("Ocurrio un error al registrar el movimiento", TipoMensaje.MsgInformacion) + End Try From 4320558b59518fe65851c2bf00662b2e3b53e6ca Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:35:15 -0700 Subject: [PATCH 60/63] -- candado de cantidad de precio venta sea mayor a cero --- Ventas/ProductosServicios.aspx.vb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 6a56b6f1a..a086596c8 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1162,6 +1162,16 @@ Partial Class ProductosyServicios Return End If + If UsuarioActual.CveEmpresa = 119 Then + If TxtVentaMinima.Text.ToDecimal < 1 Then + Alert("La cantidad de venta mínima debe de ser especificada(mayor a 1)", TipoMensaje.MsgAdvertencia) + Return + End If + + End If + + + Dim ObjProductosServicios As New ClsProductosServicios() Dim ObjInv As New ClsInventarios(ObjProductosServicios.IniciaTransacSQL()) @@ -1176,6 +1186,7 @@ Partial Class ProductosyServicios CveProveedor = DdlProveedor.txtValue.Value.ToEntero End If + Dim CveMarca As Integer = 0 If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) And CvePS = -1 Then CveMarca = DdlMarcaPSDes.SelectedValue.ToEntero Else CveMarca = DdlMarca.SelectedValue.ToEntero From 4c3487d8e39e3df9822cae3798714568d47b1f92 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:36:48 -0700 Subject: [PATCH 61/63] -- venta minima --- Ventas/ProductosServicios.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index a086596c8..6838ee505 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1163,7 +1163,7 @@ Partial Class ProductosyServicios End If If UsuarioActual.CveEmpresa = 119 Then - If TxtVentaMinima.Text.ToDecimal < 1 Then + If TxtVentaMinima.Text.ToDecimal <= 0 Then Alert("La cantidad de venta mínima debe de ser especificada(mayor a 1)", TipoMensaje.MsgAdvertencia) Return End If From 2f31faf641bcb12619bf80caaec3f07eface832b Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:46:27 -0700 Subject: [PATCH 62/63] - ventaminima --- Ventas/ProductosServicios.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 6425d62e4..ae6e57cc4 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1162,9 +1162,9 @@ Partial Class ProductosyServicios Return End If - If UsuarioActual.CveEmpresa = 119 Then + If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoPS.SelectedValue = "2" Then If TxtVentaMinima.Text.ToDecimal <= 0 Then - Alert("La cantidad de venta mínima debe de ser especificada(mayor a 1)", TipoMensaje.MsgAdvertencia) + Alert("La cantidad de venta mínima debe de ser especificada (mayor a cero)", TipoMensaje.MsgAdvertencia) Return End If From fdce588151cea04735e0a956340f70a7dcc376e1 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Tue, 13 Oct 2020 18:36:03 -0700 Subject: [PATCH 63/63] acomodo de layout en reportes --- Compras/ProveedoresAuxiliar.aspx.vb | 26 ++-- Empresas/Grales/Formatos/EntradasSalidas.rdlc | 113 ++++++------------ Empresas/Grales/Formatos/RepAlmacen.rdlc | 49 ++++---- Inventarios/RepAlmacen.aspx.vb | 11 +- Ventas/Ventas.aspx | 1 + Ventas/Ventas.aspx.vb | 14 ++- 6 files changed, 94 insertions(+), 120 deletions(-) diff --git a/Compras/ProveedoresAuxiliar.aspx.vb b/Compras/ProveedoresAuxiliar.aspx.vb index 26f320e35..529a6887d 100644 --- a/Compras/ProveedoresAuxiliar.aspx.vb +++ b/Compras/ProveedoresAuxiliar.aspx.vb @@ -118,23 +118,19 @@ Partial Class Compras_ProveedoresAuxiliar Dim OpcionP = If(DdlOpcion.SelectedValue = "-1", "", $" Opción: {DdlOpcion.SelectedItem.Text}") Dim TipoProv = If(DdlTipoProveedor.SelectedValue = "-1", "", $" Tipo Proveedor: {DdlTipoProveedor.SelectedItem.Text}") Dim ContaP = If(DdlOpcionContabilizable.SelectedValue = "-1", "", $" Contabilizable: {DdlOpcionContabilizable.SelectedItem.Text}") - If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then - Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - Dim params As New List(Of ReportParameter) - params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) - params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New ReportParameter("FechaImpresion", Now.ToString)) - params.Add(New ReportParameter("Filtros", $"Filtros: {Proveedor}{FechaIn}{FechaFn}{OpcionP}{TipoProv}{ContaP}")) - If Imagen.Exists Then - params.Add(New ReportParameter("LogoPath", logouri)) - Else - params.Add(New ReportParameter("LogoPath", "")) - End If - ImprimirPDF("Empresas/Grales/Formatos/AuxiliarProveedor.rdlc", DtDatos, params, "AuxiliarProveedor", Opcion) + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + Dim params As New List(Of ReportParameter) + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToString)) + params.Add(New ReportParameter("Filtros", $"Filtros: {Proveedor}{FechaIn}{FechaFn}{OpcionP}{TipoProv}{ContaP}")) + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) Else - Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) + params.Add(New ReportParameter("LogoPath", "")) End If + ImprimirPDF("Empresas/Grales/Formatos/AuxiliarProveedor.rdlc", DtDatos, params, "AuxiliarProveedor", Opcion) End Sub Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click GenerarPDF("PDF") diff --git a/Empresas/Grales/Formatos/EntradasSalidas.rdlc b/Empresas/Grales/Formatos/EntradasSalidas.rdlc index 176b0a50e..edfdd2cda 100644 --- a/Empresas/Grales/Formatos/EntradasSalidas.rdlc +++ b/Empresas/Grales/Formatos/EntradasSalidas.rdlc @@ -108,34 +108,34 @@ - 1.82858cm + 3.4316cm - 5.84308cm + 3.4316cm - 1.40241cm + 1.7158cm - 1.59046cm + 1.7158cm - 1.59046cm + 1.7158cm - 1.3846cm + 1.7158cm - 1.62687cm + 1.7158cm - 1.99138cm + 1.7158cm - 1.7797cm + 1.7158cm - 1.865cm + 1.7158cm @@ -193,7 +193,7 @@ - + true true @@ -211,7 +211,7 @@ - Textbox9 + Textbox1 @@ -266,26 +266,9 @@ White - - White - - 1pt - - - White - - 1pt - - White - - 1pt + - - White - - 1pt - #d3d3d3 2pt 2pt @@ -308,7 +291,7 @@ - Importe + @@ -422,7 +405,7 @@ - Articulos + Artículos - White - 1pt - White - 1pt - White - - 1pt + - White - 1pt #d3d3d3 @@ -1763,9 +1738,8 @@ DataSet1 0.20849cm - 0.00415cm 2.52171cm - 20.90254cm + 20.5896cm @@ -1776,7 +1750,7 @@ 1.16692in - Textbox1 0.22049cm - 2.78201cm 0.6cm - 12.60299cm + 20.5896cm @@ -1850,9 +1825,8 @@ Textbox2 1.13799cm - 4.68157cm 0.52945cm - 9.98771cm + 20.5896cm 1 @@ -1988,9 +1959,8 @@ Textbox8 0.28575cm - 0.6059cm 0.44125cm - 1.60042cm + 1.7158cm 1 @@ -379,7 +379,7 @@ Filtros 0.20788cm 0.6cm - 18.70841cm + 20cm 1 @@ -470,9 +470,9 @@ Textbox2 1.10271cm - 3.59188cm + 5cm 0.52945cm - 12.60299cm + 10cm 1 @@ -597,7 +595,7 @@ 0.06cm 1.60042cm 0.68085cm - 5.14936cm + 2.6852cm 2 - Textbox10 0.06cm - 7.24367cm + 5cm 0.68085cm - 2.92333cm + 5cm 3 - 0cm 0cm 19.26933cm 5 @@ -707,7 +706,7 @@ Textbox13 0.48502cm 0.45889cm - 6.74978cm + 4.28563cm 6