From 838d3380a573bb3a59786502b78a35cafdc387c2 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Fri, 21 Jun 2024 17:45:28 -0700 Subject: [PATCH] Saldos Menores --- App_Code/ClsMovimientos.vb | 8 +- Contabilidad/RepIVA.aspx.cs | 27 +- Empresas/119/Formatos/RepIVA.rpt | Bin 131072 -> 147456 bytes Empresas/Grales/Formatos/CatPS.rpt | Bin 245760 -> 245760 bytes General/SaldosMenores.aspx | 315 +++++++---- General/SaldosMenores.aspx.vb | 806 ++++++++++++++++++----------- 6 files changed, 740 insertions(+), 416 deletions(-) diff --git a/App_Code/ClsMovimientos.vb b/App_Code/ClsMovimientos.vb index a7bd91c78..2f8a91298 100644 --- a/App_Code/ClsMovimientos.vb +++ b/App_Code/ClsMovimientos.vb @@ -609,7 +609,8 @@ Public Class ClsMovimientos 'CveAplicaNC Public Function GetCxPProveedor(CveProveedor As Integer, FechaI As String, FechaF As String, CveUsuarioProgramo As Integer, CveUsuarioRegistro As Integer, CveUsuarioResponsable As Integer, CveClasificacionProveedor As Integer, CveMoneda As Integer, CveEstatus As Integer, CveProveedorSucursal As Integer, CveAplicaNC As Integer, - Optional FechaVI As String = "-1", Optional FechaVF As String = "-1", Optional CodigoProgramacion As String = "-1", Optional CveSubProyecto As Integer = -1) As Boolean + Optional FechaVI As String = "-1", Optional FechaVF As String = "-1", Optional CodigoProgramacion As String = "-1", Optional CveSubProyecto As Integer = -1, Optional Opcion As Integer = 1, + Optional CveEmpresa As Integer = -1, Optional SaldoMayorA As Decimal = -999999999999, Optional SaldoMenorA As Decimal = 999999999999) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ProveedorCxP") With SqlAdapter.SelectCommand.Parameters @@ -628,7 +629,10 @@ Public Class ClsMovimientos .Add("@FechaVF", SqlDbType.VarChar).Value = FechaVF .Add("@CodigoProgramacion", SqlDbType.VarChar).Value = CodigoProgramacion .Add("@CveSubProyecto", SqlDbType.SmallInt).Value = CveSubProyecto - + .Add("@Opcion", SqlDbType.SmallInt).Value = Opcion + .Add("@CveEmpresaOp", SqlDbType.SmallInt).Value = CveEmpresa + .Add("@SaldoMayorA", SqlDbType.Money).Value = SaldoMayorA + .Add("@SaldoMenorA", SqlDbType.Money).Value = SaldoMenorA End With diff --git a/Contabilidad/RepIVA.aspx.cs b/Contabilidad/RepIVA.aspx.cs index ace02b2f8..1a90339d7 100644 --- a/Contabilidad/RepIVA.aspx.cs +++ b/Contabilidad/RepIVA.aspx.cs @@ -253,14 +253,33 @@ public partial class Contabilidad_RepIVA : ClsPaginas if (Archivo.Exists) { Ruta = string.Format("{0}Formatos\\{1}", UsuarioActual.Empresa.Ruta, Formato); - ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + //ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + + if (UsuarioActual.Empresa.Funcionalidad(713).ToEntero() == 1) + { + ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta, Dt, para, DtIEPSA, DtIVAA, "RepIEPSPorcentaje.rpt", "RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + } + else + { + //ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta, Dt, para, new DataTable(), new DataTable(), "RepIEPSPorcentaje.rpt", "RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + } + }else { Ruta = ModExtensiones.DirectorioBaseEmpresas + $@"Empresas\Grales\Formatos\{Formato}"; - - + //ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta, Dt, para, DtIEPSA, DtIVAA, "RepIEPSPorcentaje.rpt", "RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + if (UsuarioActual.Empresa.Funcionalidad(713).ToEntero() == 1) + { ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta, Dt, para, DtIEPSA, DtIVAA, "RepIEPSPorcentaje.rpt", "RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); - //ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + } + else + { + //ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta, Dt, para, new DataTable(), new DataTable(), "RepIEPSPorcentaje.rpt", "RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + } + + } diff --git a/Empresas/119/Formatos/RepIVA.rpt b/Empresas/119/Formatos/RepIVA.rpt index dac02e363da336cadc31e9c7ed5432488be59dad..7467658403c8d5c1b84da30133c98dc9a7aeebbe 100644 GIT binary patch delta 23698 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 diff --git a/Empresas/Grales/Formatos/CatPS.rpt b/Empresas/Grales/Formatos/CatPS.rpt index b1c8440bf3b9c8b0718cfc8340edf243c34f29cb..d6860ee14d25270f49f56918c5c61c2d709ffb21 100644 GIT binary patch delta 8302 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 a=e~&K63HYm{C}(7)FiNEiCYqw^}hgL4t|ON delta 8284 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 WCCZY(uM#jfqF*( diff --git a/General/SaldosMenores.aspx b/General/SaldosMenores.aspx index 7ab09bad8..74d387dfa 100644 --- a/General/SaldosMenores.aspx +++ b/General/SaldosMenores.aspx @@ -146,18 +146,18 @@ - - + + - - -

-
+ + +
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> -
+
-
+
@@ -195,17 +195,17 @@ - + - -
-
+ +
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> -
+
-
+
@@ -245,116 +245,205 @@ - - + + -
-
- " style="display: inline-block; margin-right: -20px; width: 150px;" /> - " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> -
-
-
+
+
+ " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> +
+
+
-
- - - - - - - - - <%----%> - - - - - - - - Venta - - - - - - - - Tipo
- Docto -
- - - -
+
+ + + + + + + + + <%----%> + + + + + - - Cliente - - - - - - - - - Fecha
- Venta -
- - - -
- + Venta + + + + + - - Moneda - - - - - - - - - Monto + + Tipo
+ Docto +
+ + + +
+ + + + Cliente + + + + + + + + + Fecha
+ Venta +
+ + + +
+ + + + Moneda + + + + + + + + + Monto
- Venta -
- -   - -
- - - Saldo - -   - - + Venta + + +   + + -
-
+ + Saldo + +   + + -
-
+ + -
-
+ + + +
+
-
+
- + +
+
+ " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> +
+
+
+
+ + + + + + <%-- 0 --%> + + + + + + + + <%-- 1 --%> + + Factura + + + + + + + + Tipo
+ Docto +
+ + + +
+ + + + Proveedor + + + + + + <%-- 5 --%> + + Fecha Compra + + + + + + <%-- 5 --%> + + Moneda + + + + + + <%-- 8 --%> + + Monto Compra + +   + + + <%-- 10 --%> + + Saldo + +   + + + +
+ +
+ +
+
+ +
+
@@ -406,14 +495,20 @@
- + + + + + +
diff --git a/General/SaldosMenores.aspx.vb b/General/SaldosMenores.aspx.vb index 4863ff897..1859ef420 100644 --- a/General/SaldosMenores.aspx.vb +++ b/General/SaldosMenores.aspx.vb @@ -36,6 +36,15 @@ Partial Public Class General_SaldosMenores End Set End Property + Private Property DtDatosCompras As DataTable + Get + Return DirectCast(ViewState("DtDatosCompras"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatosCompras") = value + End Set + End Property + Private Property Tipo As Integer Get Return DirectCast(ViewState("Tipo"), Integer) @@ -45,32 +54,32 @@ Partial Public Class General_SaldosMenores End Set End Property - Private Property CveMoneda As Integer - Get - Return DirectCast(ViewState("CveMoneda"), Integer) - End Get - Set(value As Integer) - ViewState("CveMoneda") = value - End Set - End Property + 'Private Property CveMoneda As Integer + ' Get + ' Return DirectCast(ViewState("CveMoneda"), Integer) + ' End Get + ' Set(value As Integer) + ' ViewState("CveMoneda") = value + ' End Set + 'End Property - Private Property TCEspecifico As Double - Get - Return DirectCast(ViewState("TCEspecifico"), Double) - End Get - Set(value As Double) - ViewState("TCEspecifico") = value - End Set - End Property + 'Private Property TCEspecifico As Double + ' Get + ' Return DirectCast(ViewState("TCEspecifico"), Double) + ' End Get + ' Set(value As Double) + ' ViewState("TCEspecifico") = value + ' End Set + 'End Property - Private Property TipoCambio As Integer - Get - Return DirectCast(ViewState("TipoCambio"), Integer) - End Get - Set(value As Integer) - ViewState("TipoCambio") = value - End Set - End Property + 'Private Property TipoCambio As Integer + ' Get + ' Return DirectCast(ViewState("TipoCambio"), Integer) + ' End Get + ' Set(value As Integer) + ' ViewState("TipoCambio") = value + ' End Set + 'End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -79,7 +88,23 @@ Partial Public Class General_SaldosMenores End If End Sub Protected Sub BtnonClickTabs_Click(sender As Object, e As EventArgs) - Consultar() + 'Consultar() + + GvDatosIXC.DataSource = Nothing + GvCxC.DataSource = Nothing + GvCxP.DataSource = Nothing + + GvDatosIXC.DataBind() + GvCxC.DataBind() + GvCxP.DataBind() + + DvSaldar.Visible = False + + Upsaldar.Update() + UpDatos.Update() + UpDatosNCEXC.Update() + UPVentas.Update() + UPCompras.Update() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click Consultar() @@ -92,6 +117,7 @@ Partial Public Class General_SaldosMenores DtDatosIXC = New DataTable DtDatosNCEXC = New DataTable DtDatosVentas = New DataTable + DtDatosCompras = New DataTable DvSubProyectoSaldar1.Visible = False DvSubProyectoSaldar2.Visible = False @@ -117,289 +143,35 @@ Partial Public Class General_SaldosMenores End If End If + + If Tabs.ActiveTab Is TabCompras Then + CargaDatosCompras() + If DtDatosCompras.Rows.Count > 0 Then + DvSaldar.Visible = True + End If + End If + + + Upsaldar.Update() End Sub Protected Sub BtnSaldar_Click(sender As Object, e As EventArgs) If Tabs.ActiveTab Is TabIXC Then - Dim ObjConta As New ClsContabilidad() - ObjConta.IniciaTransacSQL() - Dim CvePrePoliza As Integer = 0, CveVenta As Integer = -1, CveIE As Integer = -1 - Dim Saldo As Decimal = 0 - Dim SaldoAdmin As Decimal = 0 - Dim ImporteTotalGasto As Decimal = 0 - Dim MsgError As String = "" - - CvePrePoliza = ObjConta.AddPrePolizas("Bancos/RepNCXAplicar", 6, 0, 0, 1, TxtFecha.Text.ToDate(), TxtConcepto.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3) - Dim tMovto As Boolean = True - Dim tConceptoSaldar As Integer = 78 - - If CvePrePoliza > 0 Then - For Each Gv As GridViewRow In GvDatosIXC.Rows - Dim ConPreP As New ConceptosTipoSaldo() - - If Gv.FCCheckBox("Chk").Checked Then - - If Gv.DataKey("CveVenta").ToEntero > 0 Then - ConPreP = ClsPaginas.ObtenerCveConceptoPrePoliza(6, Gv.DataKey("CveMoneda").ToEntero(), False, 2) - ElseIf Gv.DataKey("CveIE").ToEntero > 0 Then - ConPreP.CveConcepto = 3 - End If - - 'If Tipo = 1 OrElse Tipo = 2 Then - If Gv.DataKey("CveVenta").ToEntero() > 0 Then - CveVenta = Gv.DataKey("CveVenta").ToEntero() - Saldo = -Gv.DataKey("Saldo").ToDecimal() - SaldoAdmin = Saldo - - ElseIf Gv.DataKey("CveIE").ToEntero() > 0 Then - 'ElseIf Tipo = 3 Then - ConPreP = ClsPaginas.ObtenerCveConceptoPrePoliza(18, Gv.DataKey("CveMoneda").ToEntero(), True, 2) - CveIE = Gv.DataKey("CveIE").ToEntero() - Saldo = Gv.DataKey("Saldo").ToDecimal() - SaldoAdmin = Saldo - End If - - Saldo = -Saldo ' invertimos el saldo para que se haga negativo para que sea Abono - - ImporteTotalGasto += Saldo - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, SaldoAdmin, Saldo, ConPreP.CveConcepto, Gv.DataKey("SerieFolio").ToString(), TxtConcepto.Text, CveIE, CveVenta, CveCliente:=Gv.DataKey("CveCliente").ToEntero()) Then - MsgError = "Ocurrio un error al saldar el movimiento" - Exit For - End If - - If Gv.DataKey("CveMoneda").ToEntero() > 1 Then - Dim ImporteMN As Decimal = (Saldo * Gv.DataKey("TipoCambio").ToDecimal() - Saldo).RoundSQL() - ImporteTotalGasto += ImporteMN - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, Saldo, ImporteMN, ConPreP.CveConceptoComplementario, Gv.DataKey("SerieFolio").ToString(), TxtConcepto.Text, CveIE, CveVenta, CveCliente:=Gv.DataKey("CveCliente").ToEntero(), ImporteME:=Saldo, TipoCambio:=Gv.DataKey("TipoCambio").ToDecimal()) Then - MsgError = "Ocurrio un error al saldar el movimiento" - Exit For - End If - End If - End If - Next - - If ImporteTotalGasto <> 0 Then - ImporteTotalGasto *= -1 ' se invierte el valor, para cuadre de prepoliza - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, ImporteTotalGasto, ImporteTotalGasto, tConceptoSaldar, "", TxtConcepto.Text, CveIE, CveVenta, CveSubProyecto:=DdlSubProyectoSaldar.SelectedValue.ToEntero()) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - Else - MsgError = "Poliza no insertada" - End If - End If - - If MsgError = "" Then - ObjConta.Commit() - ' DvSaldar.Visible = False - Dim Msg As String = "Los movimientos se saldaron correctamente." - Msg &= $"

Ver Póliza   " - Alert(Msg) - Else - ObjConta.RollBack() - Alert(MsgError, ModExtensiones.TipoMensaje.MsgError) - End If - - CargaDatosIXC() - ObjConta.Dispose() + SaldarIXC() End If - If Tabs.ActiveTab Is TabVentas Then + SaldarVentas() + End If - - Dim ObjConta As New ClsContabilidad - ObjConta.IniciaTransacSQL() - Dim CvePrePoliza As Integer = 0 - Dim MsgError As String = "" - - 'Dim ObjIE As New ClsBancos - Dim FechaUltimaFluctuacion As Date = MinFecha - Dim TipoCambioFluctuacion As Decimal = 1 - - Dim tFecha As Date = TxtFecha.Text.ToDate - Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha) - - If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then - If UltimaFluctuacion.FechaFluctuacion <= tFecha Then - FechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion - TipoCambioFluctuacion = UltimaFluctuacion.TCFluctuacion - End If - End If - - CvePrePoliza = ObjConta.AddPrePolizas("Bancos/ClientesAbonar/SaldarI", 47, 0, 0, 1, TxtFecha.Text.ToDate, TxtFecha.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - - - For Each gr As GridViewRow In GvCxC.Rows - If gr.FCCheckBox("Chk").Checked Then - Dim PorcentajePago As Decimal = gr.DataKey("Saldo").ToDecimal / gr.DataKey("Original").ToDecimal - Dim Saldo As Decimal = gr.DataKey("Saldo").ToDecimal - Dim RETIVA As Decimal = gr.DataKey("RetIVA").ToDecimal - Dim SubTotal As Decimal = PorcentajePago * (gr.DataKey("SubTotal").ToDecimal.RoundSQL - gr.DataKey("Descuento").ToDecimal.RoundSQL).RoundSQL - Dim IVA As Decimal = PorcentajePago * gr.DataKey("IVA").ToDecimal.RoundSQL - Dim IEPS As Decimal = PorcentajePago * gr.DataKey("IEPS").ToDecimal.RoundSQL - Dim TCVenta As Decimal = gr.DataKey("TipoCambio").ToDecimal - Dim FechaVenta As Date = gr.DataKey("Fecha").ToDate - Dim tCveMoneda As Integer = gr.DataKey("CveMoneda").ToEntero - Dim TCPago As Decimal = GlobalTipoCambio(TxtFecha.Text.ToDate).FormatoNumero(4).ToDecimal - Dim CveConceptoDeduccion As Integer = DdlTipoDeduccion.SelectedValue.ToEntero - - Dim CveMoneda As Integer = gr.DataKey("CveMoneda").ToEntero - - 'si la fecha del documento es anterior a su ultima fluctuación. toma el Tc de la fluctuacion - If tCveMoneda = 2 Then - If FechaVenta < FechaUltimaFluctuacion Then - TCVenta = TipoCambioFluctuacion - End If - End If - 'condicionante - Dim ClienteMovto As Boolean = True - Dim SubtotalMovto As Boolean = False - Dim CveConceptoCliente As Integer = 2 - Dim ImpuestosMovto As Boolean = False - - Dim CveSubProyecto As Integer = gr.DataKey("CveSubProyecto").ToEntero - Dim ConceptoPartida As String = TxtConcepto.Text.Trim & " " & gr.DataKey("SerieFolio").ToString - 'TxtConcepto.Text - 'If CveConceptoDeduccion = 255 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(266).ToEntero - 'If CveConceptoDeduccion = 179 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(559).ToEntero - 'If CveConceptoDeduccion = 263 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(537).ToEntero - 'If CveConceptoDeduccion = 252 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(581).ToEntero - - If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) Then - - ClienteMovto = False : Saldo = Saldo * -1 - ImpuestosMovto = True : IVA = IVA * -1 - RETIVA = ((SubTotal * RETIVA / gr.DataKey("SubTotal").ToDecimal.RoundSQL) * -1).RoundSQL(2) - CveConceptoCliente = 1 - End If - - Dim UsaComplementaria As Boolean = True - - 'If UsuarioActual.CveEmpresa = 119 Then - ' UsaComplementaria = True - 'End If - - If MsgError = "" Then - Dim ConPreP As ConceptosTipoSaldo = ClsPaginas.ObtenerCveConceptoPrePoliza(6, tCveMoneda, True, 1) - 'normal - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, Saldo, Saldo, ConPreP.CveConcepto, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - - If UsaComplementaria AndAlso tCveMoneda = 2 Then - 'complementaria - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, 0, If(CveMoneda = 1, Saldo, (Saldo * TCVenta) - Saldo).RoundSQL, ConPreP.CveConceptoComplementario, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, ImporteME:=Saldo, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - End If - - 'fluctuación. - If tCveMoneda = 2 Then - Dim ImporteFluctuacion As Decimal = 0 - ImporteFluctuacion = Saldo * (TCPago - TCVenta) - - If CveSubProyecto <= 0 Then - MsgError = $"No se pudo obtener el sub proyecto de la venta {gr.DataKey("SerieFolio").ToString}" - End If - - If TCPago > TCVenta Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 64, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - Else - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 65, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - End If - - 'cuando hay pago en dólares, se ajusta el concepto de subtotal, - SubTotal = (Saldo * TCVenta) + ImporteFluctuacion - (IVA * TCVenta) - (IEPS * TCVenta) - - End If - - If (IVA > 0 Or UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) And IVA < 0) AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ImpuestosMovto, IVA, If(CveMoneda = 1, IVA, IVA * TCVenta), 13, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, PorcentajeImpuesto:=gr.DataKey("PorcentajeIVA").ToDecimal, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - If (RETIVA > 0 Or UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) And RETIVA < 0) AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, RETIVA, If(CveMoneda = 1, RETIVA, RETIVA * TCVenta), 8, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - If IEPS > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ImpuestosMovto, IEPS, If(CveMoneda = 1, IEPS, IEPS * TCVenta), 38, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - 'al gasto,Subtotal - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, SubtotalMovto, SubTotal, SubTotal, CveConceptoDeduccion, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyecto, CveCuenta:=-1, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then - MsgError = "Ocurrio un error al saldar el movimiento" - End If - - If ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=5) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - MsgError = ObjConta.MensajePolizaDescuadre + " " + ObjConta.ValorDiferencia - GuardaLogAD($"Ventas/ClientesAbonar | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - Exit For - End If - End If - End If - End If - Next - - If MsgError = "" Then - 'ObjConta.RollBack() - ObjConta.Commit() - 'DvSaldar.Visible = False - CargaDatosVentas() - 'RegistraScript("$('#ModalSaldarCuentaIncobrable').modal('hide')") - Alert(String.Format("Los movimientos se saldaron correctamente.
Ver PrePóliza", CvePrePoliza), TipoMensaje.MsgInformacion) - 'BtnSaldarCuentasIncobrables.Visible = False - Else - ObjConta.RollBack() - Alert(MsgError, TipoMensaje.MsgError) - End If - - - ObjConta.Dispose() - - + If Tabs.ActiveTab Is TabCompras Then + SaldarCompras() End If - TxtFecha.Text = DateTime.Today.ToString() Upsaldar.Update() - End Sub - - - -#Region "I X C" - Protected Sub InicializaDatos() - txtFechaI.Text = $"01/01/{Now.Year}" - txtFechaF.Text = DateTime.Today.ToString() - TxtFecha.Text = DateTime.Today.ToString() - - TxtSaldoMayorA.Text = "0" - TxtSaldoMenorA.Text = "1000" - - CargaSucursales() - - Dim CveCliente As Integer = If(Request("CveCliente") Is Nothing, -1, Request("CveCliente").ToString().ToEntero()) - - - CveMoneda = If(Request("CveMoneda") Is Nothing, -1, Request("CveMoneda").ToString().ToEntero()) - txtFechaI.Text = If(Request("FechaI") Is Nothing, NowADS().ToString(), Request("FechaI").ToString()) - txtFechaF.Text = If(Request("FechaF") Is Nothing, NowADS().ToString(), Request("FechaF").ToString()) - TipoCambio = If(Request("TipoCambio") Is Nothing, 1, Request("TipoCambio").ToString().ToEntero()) - TCEspecifico = If(Request("TCEspecifico") Is Nothing, -1, Request("TCEspecifico").ToString().ToDouble()) - 'RblTipoCambio.SelectedValue = TipoCambio.ToString() - 'LiEspecifico.InnerText = TCEspecifico.FormatoNumero() - - Dim FechaICorte As DateTime - FechaICorte = If(Request("FechaICorte") Is Nothing, DateTime.MinValue, Request("FechaICorte").ToString().ToDate()) - - Tipo = -1 - End Sub @@ -409,6 +181,26 @@ Partial Public Class General_SaldosMenores DdlSubProyectoSaldar.DataBind() End Sub +#Region "I X C" + Protected Sub InicializaDatos() + + + txtFechaI.Text = $"01/01/{Now.Year}" + txtFechaF.Text = DateTime.Today.ToString() + TxtFecha.Text = DateTime.Today.ToString() + + TxtSaldoMayorA.Text = "0" + TxtSaldoMenorA.Text = "1000" + + CargaSucursales() + ' + Tipo = -1 + + + End Sub + + + Protected Sub CargaDatosIXC() @@ -421,7 +213,7 @@ Partial Public Class General_SaldosMenores - If ObjVenta.GetRepAnticiposNCIXCDetalle(CveCliente, -1, txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveEmpresa, 1, -1, CveMoneda, FechaICorte, FechaFCorte, TipoCambio, TCEspecifico, + If ObjVenta.GetRepAnticiposNCIXCDetalle(CveCliente, -1, txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveEmpresa, 1, -1, -1, FechaICorte, FechaFCorte, -1, -1, SaldoMayorA:=TxtSaldoMayorA.Text.ToDecimal, SaldoMenorA:=TxtSaldoMenorA.Text.ToDecimal) Then GvDatosIXC.DataSource = ObjVenta.DtResultados DtDatosIXC = ObjVenta.DtResultados @@ -497,7 +289,91 @@ Partial Public Class General_SaldosMenores End Sub + Protected Sub SaldarIXC() + Dim ObjConta As New ClsContabilidad() + ObjConta.IniciaTransacSQL() + Dim CvePrePoliza As Integer = 0, CveVenta As Integer = -1, CveIE As Integer = -1 + Dim Saldo As Decimal = 0 + Dim SaldoAdmin As Decimal = 0 + Dim ImporteTotalGasto As Decimal = 0 + Dim MsgError As String = "" + CvePrePoliza = ObjConta.AddPrePolizas("Bancos/RepNCXAplicar", 6, 0, 0, 1, TxtFecha.Text.ToDate(), TxtConcepto.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3) + Dim tMovto As Boolean = True + Dim tConceptoSaldar As Integer = 78 + + If CvePrePoliza > 0 Then + For Each Gv As GridViewRow In GvDatosIXC.Rows + Dim ConPreP As New ConceptosTipoSaldo() + + If Gv.FCCheckBox("Chk").Checked Then + + If Gv.DataKey("CveVenta").ToEntero > 0 Then + ConPreP = ClsPaginas.ObtenerCveConceptoPrePoliza(6, Gv.DataKey("CveMoneda").ToEntero(), False, 2) + ElseIf Gv.DataKey("CveIE").ToEntero > 0 Then + ConPreP.CveConcepto = 3 + End If + + 'If Tipo = 1 OrElse Tipo = 2 Then + If Gv.DataKey("CveVenta").ToEntero() > 0 Then + CveVenta = Gv.DataKey("CveVenta").ToEntero() + Saldo = -Gv.DataKey("Saldo").ToDecimal() + SaldoAdmin = Saldo + + ElseIf Gv.DataKey("CveIE").ToEntero() > 0 Then + 'ElseIf Tipo = 3 Then + ConPreP = ClsPaginas.ObtenerCveConceptoPrePoliza(18, Gv.DataKey("CveMoneda").ToEntero(), True, 2) + CveIE = Gv.DataKey("CveIE").ToEntero() + Saldo = Gv.DataKey("Saldo").ToDecimal() + SaldoAdmin = Saldo + End If + + Saldo = -Saldo ' invertimos el saldo para que se haga negativo para que sea Abono + + ImporteTotalGasto += Saldo + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, SaldoAdmin, Saldo, ConPreP.CveConcepto, Gv.DataKey("SerieFolio").ToString(), TxtConcepto.Text, CveIE, CveVenta, CveCliente:=Gv.DataKey("CveCliente").ToEntero()) Then + MsgError = "Ocurrio un error al saldar el movimiento" + Exit For + End If + + If Gv.DataKey("CveMoneda").ToEntero() > 1 Then + Dim ImporteMN As Decimal = (Saldo * Gv.DataKey("TipoCambio").ToDecimal() - Saldo).RoundSQL() + ImporteTotalGasto += ImporteMN + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, Saldo, ImporteMN, ConPreP.CveConceptoComplementario, Gv.DataKey("SerieFolio").ToString(), TxtConcepto.Text, CveIE, CveVenta, CveCliente:=Gv.DataKey("CveCliente").ToEntero(), ImporteME:=Saldo, TipoCambio:=Gv.DataKey("TipoCambio").ToDecimal()) Then + MsgError = "Ocurrio un error al saldar el movimiento" + Exit For + End If + End If + End If + Next + + If ImporteTotalGasto <> 0 Then + ImporteTotalGasto *= -1 ' se invierte el valor, para cuadre de prepoliza + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tMovto, ImporteTotalGasto, ImporteTotalGasto, tConceptoSaldar, "", TxtConcepto.Text, CveIE, CveVenta, CveSubProyecto:=DdlSubProyectoSaldar.SelectedValue.ToEntero()) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + Else + MsgError = "Poliza no insertada" + End If + End If + + If MsgError = "" Then + ObjConta.Commit() + ' DvSaldar.Visible = False + Dim Msg As String = "Los movimientos se saldaron correctamente." + Msg &= $"

Ver Póliza   " + Alert(Msg) + Else + ObjConta.RollBack() + Alert(MsgError, ModExtensiones.TipoMensaje.MsgError) + End If + + CargaDatosIXC() + ObjConta.Dispose() + End Sub #End Region @@ -514,7 +390,7 @@ Partial Public Class General_SaldosMenores Dim ObjVenta As New ClsVentas() Dim CveCliente As Integer = -1 - If ObjVenta.GetRepAnticiposNCIXCDetalle(CveCliente, -1, txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveEmpresa, 1, -1, CveMoneda, FechaICorte, FechaFCorte, TipoCambio, TCEspecifico, + If ObjVenta.GetRepAnticiposNCIXCDetalle(CveCliente, -1, txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveEmpresa, 1, -1, -1, FechaICorte, FechaFCorte, -1, -1, SaldoMayorA:=TxtSaldoMayorA.Text.ToDecimal, SaldoMenorA:=TxtSaldoMenorA.Text.ToDecimal) Then GvDatosNCEXC.DataSource = ObjVenta.DtResultados DtDatosNCEXC = ObjVenta.DtResultados @@ -593,9 +469,6 @@ Partial Public Class General_SaldosMenores #Region "V E N T A S" - - '/Compras/RepAnt-NC-EXCDetalle.aspx - Protected Sub CargaDatosVentas() Dim Mov As New ClsMovimientos @@ -643,8 +516,341 @@ Partial Public Class General_SaldosMenores End Sub + Protected Sub SaldarVentas() + Dim ObjConta As New ClsContabilidad + ObjConta.IniciaTransacSQL() + Dim CvePrePoliza As Integer = 0 + Dim MsgError As String = "" + + 'Dim ObjIE As New ClsBancos + Dim FechaUltimaFluctuacion As Date = MinFecha + Dim TipoCambioFluctuacion As Decimal = 1 + + Dim tFecha As Date = TxtFecha.Text.ToDate + Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha) + + If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then + If UltimaFluctuacion.FechaFluctuacion <= tFecha Then + FechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion + TipoCambioFluctuacion = UltimaFluctuacion.TCFluctuacion + End If + End If + + CvePrePoliza = ObjConta.AddPrePolizas("Bancos/ClientesAbonar/SaldarI", 47, 0, 0, 1, TxtFecha.Text.ToDate, TxtConcepto.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + + For Each gr As GridViewRow In GvCxC.Rows + If gr.FCCheckBox("Chk").Checked Then + Dim PorcentajePago As Decimal = gr.DataKey("Saldo").ToDecimal / gr.DataKey("Original").ToDecimal + Dim Saldo As Decimal = gr.DataKey("Saldo").ToDecimal + Dim RETIVA As Decimal = gr.DataKey("RetIVA").ToDecimal + Dim SubTotal As Decimal = PorcentajePago * (gr.DataKey("SubTotal").ToDecimal.RoundSQL - gr.DataKey("Descuento").ToDecimal.RoundSQL).RoundSQL + Dim IVA As Decimal = PorcentajePago * gr.DataKey("IVA").ToDecimal.RoundSQL + Dim IEPS As Decimal = PorcentajePago * gr.DataKey("IEPS").ToDecimal.RoundSQL + Dim TCVenta As Decimal = gr.DataKey("TipoCambio").ToDecimal + Dim FechaVenta As Date = gr.DataKey("Fecha").ToDate + Dim tCveMoneda As Integer = gr.DataKey("CveMoneda").ToEntero + Dim TCPago As Decimal = GlobalTipoCambio(TxtFecha.Text.ToDate).FormatoNumero(4).ToDecimal + Dim CveConceptoDeduccion As Integer = DdlTipoDeduccion.SelectedValue.ToEntero + + Dim CveMoneda As Integer = gr.DataKey("CveMoneda").ToEntero + + 'si la fecha del documento es anterior a su ultima fluctuación. toma el Tc de la fluctuacion + If tCveMoneda = 2 Then + If FechaVenta < FechaUltimaFluctuacion Then + TCVenta = TipoCambioFluctuacion + End If + End If + 'condicionante + Dim ClienteMovto As Boolean = True + Dim SubtotalMovto As Boolean = False + Dim CveConceptoCliente As Integer = 2 + Dim ImpuestosMovto As Boolean = False + + Dim CveSubProyecto As Integer = gr.DataKey("CveSubProyecto").ToEntero + Dim ConceptoPartida As String = TxtConcepto.Text.Trim & " " & gr.DataKey("SerieFolio").ToString + 'TxtConcepto.Text + 'If CveConceptoDeduccion = 255 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(266).ToEntero + 'If CveConceptoDeduccion = 179 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(559).ToEntero + 'If CveConceptoDeduccion = 263 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(537).ToEntero + 'If CveConceptoDeduccion = 252 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(581).ToEntero + + If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) Then + + ClienteMovto = False : Saldo = Saldo * -1 + ImpuestosMovto = True : IVA = IVA * -1 + RETIVA = ((SubTotal * RETIVA / gr.DataKey("SubTotal").ToDecimal.RoundSQL) * -1).RoundSQL(2) + CveConceptoCliente = 1 + End If + + Dim UsaComplementaria As Boolean = True + + 'If UsuarioActual.CveEmpresa = 119 Then + ' UsaComplementaria = True + 'End If + + If MsgError = "" Then + Dim ConPreP As ConceptosTipoSaldo = ClsPaginas.ObtenerCveConceptoPrePoliza(6, tCveMoneda, True, 1) + 'normal + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, Saldo, Saldo, ConPreP.CveConcepto, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + + If UsaComplementaria AndAlso tCveMoneda = 2 Then + 'complementaria + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, 0, If(CveMoneda = 1, Saldo, (Saldo * TCVenta) - Saldo).RoundSQL, ConPreP.CveConceptoComplementario, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, ImporteME:=Saldo, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + End If + + 'fluctuación. + If tCveMoneda = 2 Then + Dim ImporteFluctuacion As Decimal = 0 + ImporteFluctuacion = Saldo * (TCPago - TCVenta) + + If CveSubProyecto <= 0 Then + MsgError = $"No se pudo obtener el sub proyecto de la venta {gr.DataKey("SerieFolio").ToString}" + End If + + If TCPago > TCVenta Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 64, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + Else + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 65, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + End If + + 'cuando hay pago en dólares, se ajusta el concepto de subtotal, + SubTotal = (Saldo * TCVenta) + ImporteFluctuacion - (IVA * TCVenta) - (IEPS * TCVenta) + + End If + + If (IVA > 0 Or UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) And IVA < 0) AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ImpuestosMovto, IVA, If(CveMoneda = 1, IVA, IVA * TCVenta), 13, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, PorcentajeImpuesto:=gr.DataKey("PorcentajeIVA").ToDecimal, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + If (RETIVA > 0 Or UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) And RETIVA < 0) AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, RETIVA, If(CveMoneda = 1, RETIVA, RETIVA * TCVenta), 8, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + If IEPS > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ImpuestosMovto, IEPS, If(CveMoneda = 1, IEPS, IEPS * TCVenta), 38, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + 'al gasto,Subtotal + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, SubtotalMovto, SubTotal, SubTotal, CveConceptoDeduccion, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyecto, CveCuenta:=-1, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + + If ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=5) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + MsgError = ObjConta.MensajePolizaDescuadre + " " + ObjConta.ValorDiferencia + GuardaLogAD($"Ventas/ClientesAbonar | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + Exit For + End If + End If + End If + End If + Next + + If MsgError = "" Then + 'ObjConta.RollBack() + ObjConta.Commit() + 'DvSaldar.Visible = False + CargaDatosVentas() + 'RegistraScript("$('#ModalSaldarCuentaIncobrable').modal('hide')") + Alert(String.Format("Los movimientos se saldaron correctamente.
Ver PrePóliza", CvePrePoliza), TipoMensaje.MsgInformacion) + 'BtnSaldarCuentasIncobrables.Visible = False + Else + ObjConta.RollBack() + Alert(MsgError, TipoMensaje.MsgError) + End If + + + ObjConta.Dispose() + End Sub + +#End Region + +#Region "C O M P R A S" + + + Protected Sub CargaDatosCompras() + + Dim Mov As New ClsMovimientos + Dim FechaI As String = txtFechaI.Text + Dim FechaF As String = txtFechaF.Text + + + + If Mov.GetCxPProveedor(-1, FechaI, FechaF, -1, -1, -1, -1, -1, -1, -1, -1, "-1", "-1", "-1", CveSubProyecto:=-1, Opcion:=2, CveEmpresa:=UsuarioActual.CveEmpresa, SaldoMayorA:=TxtSaldoMayorA.Text.ToDecimal, SaldoMenorA:=TxtSaldoMenorA.Text.ToDecimal) Then + DtDatosCompras = Mov.DtResultados + GvCxP.DataSource = DtDatosCompras + DtDatosCompras.Columns.Add("Movimiento") + If DtDatosCompras.Rows.Count > 0 Then + DtDatosCompras.Rows(0)("Movimiento") = "FACTURA DE ACREEDOR" + End If + + End If + + Mov.Dispose() + GvCxP.DataBind() + UPCompras.Update() + + End Sub + + + Protected Sub GvCxP_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvCxP.RowDataBound + + If e.Row.RowType = DataControlRowType.DataRow Then + + 'e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("FnSuma(this,{0},{1});", e.Row.FCTextBox("TxtAbonar").ClientID, e.Row.DBCampo("Saldo"))) + If e.Row.DataKey("CveCompra").ToEntero = 0 Then + e.Row.FCCheckBox("Chk").Visible = False + e.Row.BackColor = Drawing.Color.LightGray + End If + + End If + End Sub + + Protected Sub SaldarCompras() + + Dim ObjConta As New ClsContabilidad + ObjConta.IniciaTransacSQL() + Dim CvePrePoliza As Integer = 0 + Dim MsgError As String = "" + Dim FuncionalidadFluctuacionImpuestos As Boolean = If(UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False) + + Dim EsContabilizable As Boolean = If(UsuarioActual.CveEmpresa.Contiene(13, 83), False, True) + + CvePrePoliza = ObjConta.AddPrePolizas("Bancos/ProveedoresAbonar/Saldar", 98, 0, 0, 1, TxtFecha.Text.ToDate, TxtConcepto.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + For Each gr As GridViewRow In GvCxP.Rows + If gr.FCCheckBox("Chk").Checked Then + Dim Saldo As Decimal = gr.DataKey("Saldo").ToDecimal 'gr.DataKey("Saldo").ToDecimal + Dim TCCompra As Decimal = gr.DataKey("TipoCambio").ToDecimal + Dim TCPago As Decimal = GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal + Dim CveMoneda As Integer = gr.DataKey("CveMoneda").ToEntero + Dim FechaCompra As Date = gr.DataKey("Fecha").ToDate + Dim CveSubProyecto As Integer = gr.DataKey("CveSubProyecto").ToEntero + + Dim CveConceptoContablePago As Integer = 17 + If gr.DataKey("CveTipoConcepto").ToEntero = 2 Then CveConceptoContablePago = 308 'cuando es acreedor + If CveMoneda <> 1 Then + Select Case CveConceptoContablePago + Case 17 + CveConceptoContablePago = 312 + Case 308 + CveConceptoContablePago = 309 + Case Else + End Select + End If + + Dim CveConceptoContableComplementaria As Integer = 206 + If gr.DataKey("CveTipoConcepto").ToEntero = 2 Then CveConceptoContableComplementaria = 310 'cuando es acreedor + + Dim ConceptoPartida As String = String.Format("Saldar compra {0}", gr.DataKey("SerieFolio").ToString) + + + If CveMoneda > 1 Then + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Saldo, Saldo, CveConceptoContablePago, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, TipoCambio:=TCCompra, ImporteME:=If(CveMoneda > 1, Saldo, 0), Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, 0.00D, (Saldo * TCCompra - Saldo).RoundSQL, CveConceptoContableComplementaria, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, ImporteME:=Saldo, TipoCambio:=TCCompra, Contabilizable:=EsContabilizable) Then + MsgError = "No se pudo insertar la póliza" + End If + Else + TCPago = 1 + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Saldo, If(CveMoneda = 1, Saldo, Saldo * TCCompra), CveConceptoContablePago, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, ImporteME:=If(CveMoneda > 1, Saldo, 0), TipoCambio:=TCCompra, Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + End If + Dim PorcentajePago As Decimal = Saldo / gr.DataKey("TotalOriginal").ToDecimal + + If MsgError = "" AndAlso gr.DataKey("IVA").ToDecimal > 0 Then + Dim PorcentajeImpuesto As Decimal = gr.DataKey("PorcentajeIVA").ToDecimal + Dim IVA As Decimal = PorcentajePago * gr.DataKey("IVA").ToDecimal + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IVA, If(CveMoneda = 1, IVA, IVA * If(FuncionalidadFluctuacionImpuestos, TCPago, TCCompra)), 14, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, PorcentajeImpuesto:=PorcentajeImpuesto, Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + Saldo = Saldo - IVA + End If + + If MsgError = "" AndAlso gr.DataKey("IEPS").ToDecimal > 0 Then + + Dim IEPS As Decimal = PorcentajePago * gr.DataKey("IEPS").ToDecimal + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IEPS, If(CveMoneda = 1, IEPS, IEPS * If(FuncionalidadFluctuacionImpuestos, TCPago, TCCompra)), 25, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + Saldo = Saldo - IEPS + End If + + ' se manda al ot ingresos, los impuestos por acreditar + If MsgError = "" Then + Dim tcvecon As Integer = 78 + Dim tTipoMovto As Boolean = True + If Saldo < 0 Then + tcvecon = 211 + tTipoMovto = False + End If + If MsgError = "" AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tTipoMovto, Saldo, (Saldo * TCPago).RoundSQL, tcvecon, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, TipoCambio:=TCCompra, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto, Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + End If + + 'fluctuación. + If CveMoneda > 1 Then + Dim ImporteFluctuacion As Decimal = 0 + ImporteFluctuacion = Saldo * (TCPago - TCCompra) + + If CveSubProyecto <= 0 Then MsgError = "No se pudo obtener el sub proyecto o centro de costo" + + If TCCompra > TCPago Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 64, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveSubProyecto:=CveSubProyecto, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, TipoCambio:=TCCompra, TipoCambioPago:=TCPago, Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + Else + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 65, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveSubProyecto:=CveSubProyecto, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CveCompra:=gr.DataKey("CveCompra").ToEntero, TipoCambio:=TCCompra, TipoCambioPago:=TCPago, Contabilizable:=EsContabilizable) Then + MsgError = "Ocurrio un error al saldar el movimiento" + End If + End If + End If + End If + Next + + If MsgError.Trim.Length = 0 AndAlso CvePrePoliza > 0 Then + If MsgError = "" AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, 5) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + MsgError = ObjConta.MensajePolizaDescuadre + " " + ObjConta.ValorDiferencia + GuardaLogAD($"Bancos/ProveedoresAbonar | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + End If + End If + End If + + If MsgError = "" Then + ObjConta.Commit() + CargaDatosCompras() + RegistraScript("$('#ModalSaldarCuentaSinPagar').modal('hide')") + Dim Msg As New StringBuilder + Msg.Append("Los movimientos se saldaron correctamente.
") + + If UsuarioActual.TienePermisoProceso(354) Then 'visualizar la póliza al registros + Msg.AppendFormat("Ver Póliza   ", CvePrePoliza) + End If + Alert(Msg.ToString) + + Else + ObjConta.RollBack() + Alert(MsgError, TipoMensaje.MsgError) + End If + + ObjConta.Dispose() + + End Sub + #End Region - End Class