-- mejora para registro de facturas con 2 IVAs diferentes

This commit is contained in:
2024-10-01 09:01:34 -07:00
parent c97cc2c8cc
commit 8faee1bbfd
4 changed files with 50 additions and 31 deletions

View File

@@ -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

View File

@@ -364,7 +364,7 @@
<asp:UpdatePanel ID="UPCompras" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="GvCxP" runat="server" AutoGenerateColumns="False" EmptyDataText="No se encontraron Cuentas X Pagar Pendientes"
DataKeyNames="CveCompra,ImporteProgramo,Saldo,SubTotal,IVA,IVADeducible,IVANoDeducible,IEPS,RetIVA,RetISR,Total,UUID,RFC,CveFactura,SerieFolio,Descripcion,CvePrePoliza,Fecha,EstatusInventario,CveProveedor,TipoCambio,TipoCambioOriginal, CveMoneda,CveRetIVAConcepto,IVAPorPagar,IVAPorPagarDeducible,IVAPorPagarNoDeducible,IEPSPorPagar,CveRetISRConcepto,PorcentajeIVA,CveTipoConcepto,CveSubProyecto,TotalOriginal,EsImportacion,NoDeducible"
DataKeyNames="CveCompra,ImporteProgramo,Saldo,SubTotal,IVA,IVADeducible,IVANoDeducible,IVADeducible08,IVANoDeducible08,IEPS,RetIVA,RetISR,Total,UUID,RFC,CveFactura,SerieFolio,Descripcion,CvePrePoliza,Fecha,EstatusInventario,CveProveedor,TipoCambio,TipoCambioOriginal, CveMoneda,CveRetIVAConcepto,IVAPorPagar,IVAPorPagarDeducible,IVAPorPagarNoDeducible,IEPSPorPagar,CveRetISRConcepto,PorcentajeIVA,CveTipoConcepto,CveSubProyecto,TotalOriginal,EsImportacion,NoDeducible"
Width="100%" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" Style="text-align: center;" GridLines="None">
<Columns>
<%-- 0 --%>

View File

@@ -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

View File

@@ -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