From 8faee1bbfdc9d9adb882a840400bf08349ec943f Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 1 Oct 2024 09:01:34 -0700 Subject: [PATCH] -- mejora para registro de facturas con 2 IVAs diferentes --- App_Code/ClsPaginas.vb | 36 ++++++++++++++++++++++++++-- Bancos/ProveedoresAbonar.aspx | 2 +- Bancos/ProveedoresAbonar.aspx.vb | 2 ++ Compras/Compras.aspx.vb | 41 ++++++++++---------------------- 4 files changed, 50 insertions(+), 31 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 580051849..578f763ff 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -8893,11 +8893,39 @@ Public Class ClsPaginas If Pago.AplicaAcreditable Then 'si tiene iva y su proporcion If Not ErrorMovtos AndAlso CompraActual.IVA <> 0 Then - ImporteMovimiento = (PorcentajePago * CompraActual.IVA).RoundSQL + Dim Ret As ConceptosRetenciones = CompraActual.ConceptoPrePolizaIVA + + '' condición para hacer registro del pago del % al 08, si la factura tiene de ambos IVAs + If CompraActual.PorcentajeIVA = 0.16 AndAlso (CompraActual.IVADeducible08 > 0 OrElse CompraActual.IVANoDeducible08 > 0) Then + ImporteMovimiento = (PorcentajePago * (CompraActual.IVADeducible08 + CompraActual.IVANoDeducible08)).RoundSQL + ImporteMN = (ImporteMovimiento * CompraActual.TC).RoundSQL + If CompraActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento + 'IVA por acreditar + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, Ret.CveConceptoxAcreditar, CompraActual.SerieFolio, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, PorcentajeImpuesto:=0.08D, CvePersonal:=Pago.CvePersonal, TipoCambio:=CompraActual.TC, TipoCambioPago:=TCValuacionPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + If Not ErrorMovtos AndAlso CompraActual.IVADeducible08 > 0 Then + ImporteMovimiento = (PorcentajePago * CompraActual.IVADeducible08).RoundSQL + ImporteMN = (ImporteMovimiento * CompraActual.TC).RoundSQL + 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe + If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento.RoundSQL * TCValuacionPago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, Ret.CveConceptoAcreditable, CompraActual.SerieFolio, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, PorcentajeImpuesto:=0.08D, CvePersonal:=Pago.CvePersonal, TipoCambio:=CompraActual.TC, TipoCambioPago:=TCValuacionPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + End If + If Not ErrorMovtos AndAlso CompraActual.IVANoDeducible08 > 0 Then + ImporteMovimiento = (PorcentajePago * CompraActual.IVANoDeducible08).RoundSQL + ImporteMN = (ImporteMovimiento * CompraActual.TC).RoundSQL + If CompraActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento + Dim tConceptoIVA As Integer = If(CompraActual.CompraNoDeducible = 1, 280, 380) '280. iva no deducible en su totalidad + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, tConceptoIVA, CompraActual.SerieFolio, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, PorcentajeImpuesto:=0.08D, CvePersonal:=Pago.CvePersonal, TipoCambio:=CompraActual.TC, TipoCambioPago:=TCValuacionPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + End If + CompraActual.IVADeducible -= CompraActual.IVADeducible08 + CompraActual.IVANoDeducible -= CompraActual.IVANoDeducible08 + End If + + ImporteMovimiento = (PorcentajePago * (CompraActual.IVADeducible + CompraActual.IVANoDeducible)).RoundSQL ImporteMN = (ImporteMovimiento * CompraActual.TC).RoundSQL If CompraActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento - Dim Ret As ConceptosRetenciones = CompraActual.ConceptoPrePolizaIVA + 'IVA por acreditar If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, Ret.CveConceptoxAcreditar, CompraActual.SerieFolio, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, PorcentajeImpuesto:=CompraActual.PorcentajeIVA, CvePersonal:=Pago.CvePersonal, TipoCambio:=CompraActual.TC, TipoCambioPago:=TCValuacionPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + 'IVA ACreditable If Not ErrorMovtos AndAlso CompraActual.IVADeducible > 0 Then ImporteMovimiento = (PorcentajePago * CompraActual.IVADeducible).RoundSQL ImporteMN = (ImporteMovimiento * CompraActual.TC).RoundSQL @@ -8912,6 +8940,8 @@ Public Class ClsPaginas Dim tConceptoIVA As Integer = If(CompraActual.CompraNoDeducible = 1, 280, 380) '280. iva no deducible en su totalidad If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, tConceptoIVA, CompraActual.SerieFolio, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, PorcentajeImpuesto:=CompraActual.PorcentajeIVA, CvePersonal:=Pago.CvePersonal, TipoCambio:=CompraActual.TC, TipoCambioPago:=TCValuacionPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True End If + + End If 'si tiene RET IVA y su proporcion If Not ErrorMovtos AndAlso CompraActual.RetIVA > 0 Then @@ -9104,6 +9134,8 @@ Public Class ClsPaginas Public Property IVA As Decimal Public Property IVADeducible As Decimal Public Property IVANoDeducible As Decimal = 0 + Public Property IVADeducible08 As Decimal + Public Property IVANoDeducible08 As Decimal = 0 Public Property IEPS As Decimal Public Property RetIVA As Decimal Public Property RetISR As Decimal diff --git a/Bancos/ProveedoresAbonar.aspx b/Bancos/ProveedoresAbonar.aspx index f431d8275..65340f9a0 100644 --- a/Bancos/ProveedoresAbonar.aspx +++ b/Bancos/ProveedoresAbonar.aspx @@ -364,7 +364,7 @@ <%-- 0 --%> diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index 784cf9acf..1227b7197 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -792,6 +792,8 @@ Partial Class Bancos_ProveedoresAbonar CompraActual.IVA = gvr.DataKey("IVA").ToDecimal CompraActual.IVADeducible = gvr.DataKey("IVADeducible").ToDecimal CompraActual.IVANoDeducible = gvr.DataKey("IVANoDeducible").ToDecimal + CompraActual.IVADeducible08 = gvr.DataKey("IVADeducible08").ToDecimal + CompraActual.IVANoDeducible08 = gvr.DataKey("IVANoDeducible08").ToDecimal CompraActual.CompraNoDeducible = gvr.DataKey("NoDeducible").ToEntero CompraActual.IEPS = gvr.DataKey("IEPS").ToDecimal CompraActual.RetIVA = gvr.DataKey("RetIVA").ToDecimal diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 81eb592ba..8f621996d 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6246,6 +6246,19 @@ Partial Class Compras_Compras Case 14 'IVA X Acreditar importeMovimiento = CompraActual.IVA + Dim tMinPorcentajeIVA As Decimal = TmpDT.MIN("IVAPorcentaje").ToDecimal + + 'SI LA FACTURA TRAE 2 TIPOS DE IVA (8,16) + If PorcentajeIVA <> tMinPorcentajeIVA AndAlso tMinPorcentajeIVA > 0 Then + Dim tImporte As Decimal = TmpDT.SUM("IVA", "IVAPorcentaje = " & tMinPorcentajeIVA) + tImporte = (tImporte * tipoCambioActual * Multiplicador).RoundSQL + If tImporte <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, tImporte, tImporte, 14, Concepto, Concepto, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CvePersonal:=CvePersonal, PorcentajeImpuesto:=tMinPorcentajeIVA, CveSubProyecto:=CveSubProyectoInsertar, Contabilizable:=SeContabiliza) Then + ErrorPrepoliza = True + End If + End If + importeMovimiento -= tImporte + End If importeMN = (importeMovimiento * tipoCambioActual * Multiplicador).RoundSQL If tipoCambioActual > 1 Then Concepto += $" TC{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}" PorcentajeImpuesto = PorcentajeIVA @@ -6335,34 +6348,6 @@ Partial Class Compras_Compras End If End If - 'Case 64 'Ganancia - - ' 'CveSubProyectoInsertar = CveSubProyecto - ' If CveSubProyectoInsertar <= 0 Then - ' ErrorPrepoliza = True - ' Alert("Concepto ganancia cambiaria sin sub proyecto", TipoMensaje.MsgAdvertencia) - ' End If - - ' If TCPago > 0 AndAlso TCPago <> 1 AndAlso TxtFechaPago.Text <> TxtFecha.Text Then - - ' If TipoCambioCompra > TCPago Then - ' ConceptoContable = 64 - ' TipoMovimiento = True - ' Else - ' ConceptoContable = 65 - ' TipoMovimiento = False - ' End If - ' If TCPago <> TipoCambioCompra Then - ' importeMovimiento = Math.Abs(TCPago - TipoCambioCompra) * importePagoProv - ' importeMovimiento -= Math.Abs(TCPago - TipoCambioCompra) * importeIVAAcreditable - ' importeMovimiento += Math.Abs(TCPago - TipoCambioCompra) * importeRetIVAAcreditable - ' importeMovimiento += Math.Abs(TCPago - TipoCambioCompra) * importeRetISRAcreditable - ' importeMN = importeMovimiento - ' End If - ' Else - ' importeMovimiento = 0 - ' End If - Case 6 'Compra Dim AgregaMercanciaInventario As Boolean = UsuarioActual.Empresa.UsaInventarios