-- timbrado complementos de pago pac 4

This commit is contained in:
2022-03-07 18:40:36 -07:00
parent 2191b4db79
commit b2db474fef
2 changed files with 89 additions and 48 deletions

View File

@@ -453,6 +453,22 @@ Public Class CFDIComplementoPagos
Public Property SelloPago As String = ""
Public Property DocumentosRelacionados As List(Of CFDIComplementoPagosDocsRelacionados)
Public Property Impuestos As List(Of CFDIConceptosImpuestos)
Public ReadOnly Property Totales As CFDIComplementoPagosTotales
Get
Dim tRetorno As New CFDIComplementoPagosTotales
tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagado).Sum()
tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Base).Sum()
tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Base).Sum()
tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.Base).Sum()
tRetorno.TotalTrasladosImpuestoIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Importe).Sum()
tRetorno.TotalTrasladosImpuestoIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Importe).Sum()
tRetorno.TotalTrasladosImpuestoIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.Importe).Sum()
Return tRetorno
End Get
End Property
Public ReadOnly Property TotalImpuestosRetenidos As Decimal
Get
@@ -470,29 +486,6 @@ Public Class CFDIComplementoPagos
End Get
End Property
Public ReadOnly Property TotalImpuestosTrasladados(Impuesto As String, Tasa As Decimal, Optional Dato As String = "Base") As Decimal
Get
If Dato = "Base" Then
Return (From c In Traslados Where c.Impuesto = Impuesto And c.TasaOCuota = Tasa
Select c.Base).Sum()
Else
Return (From c In Traslados Where c.Impuesto = Impuesto And c.TasaOCuota = Tasa
Select c.Importe).Sum()
End If
End Get
End Property
Public ReadOnly Property TotalPagos As Decimal
Get
Return (From c In DocumentosRelacionados
Select c.ImpPagado).Sum()
End Get
End Property
Sub New()
DocumentosRelacionados = New List(Of CFDIComplementoPagosDocsRelacionados)
@@ -577,6 +570,23 @@ Public Class CFDIComplementoPagosDocsRelacionados
End Class
<Serializable>
Public Class CFDIComplementoPagosTotales
Public Property MontoTotalPagos As Decimal = 0
Public Property TotalTrasladosBaseIVA16 As Decimal = 0
Public Property TotalTrasladosImpuestoIVA16 As Decimal = 0
Public Property TotalTrasladosBaseIVA8 As Decimal = 0
Public Property TotalTrasladosImpuestoIVA8 As Decimal = 0
Public Property TotalTrasladosBaseIVA0 As Decimal = 0
Public Property TotalTrasladosImpuestoIVA0 As Decimal = 0
Public Property TotalTrasladosBaseExento As Decimal = 0
Public Property TotalRetencionesIVA As Decimal = 0
Public Property TotalRetencionesISR As Decimal = 0
Public Property TotalRetencionesIEPS As Decimal = 0
End Class
<Serializable>
Public Class CFDIComercioExterior11
Public Property MotivoTraslado As String

View File

@@ -4090,19 +4090,20 @@ Public Class Timbrado
If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then
Dim Totales As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosTotales()
'Totales Generales
Totales.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos.TotalPagos.RoundSQL
Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.16D, "Base")
Totales.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos
Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16
Totales.TotalTrasladosBaseIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0
Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.16D, "Impuesto").RoundSQL
Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16.RoundSQL
Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0
Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.08D, "Base")
Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8
Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0
Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.08D, "Impuesto").RoundSQL
Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8.RoundSQL
Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0
Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.00D, "Base")
Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0
Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0
Totales.TotalTrasladosImpuestoIVA0 = 0
Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0
@@ -5029,6 +5030,9 @@ Public Class Timbrado
#End Region
#Region "Receptor"
If ObjCFDITimbre.Receptor.RFC.ToUpper.Contiene("XAXX010101000", "XEXX010101000") Then 'Condición del SAT. CFDI40149
ObjCFDITimbre.Receptor.DomicilioFiscalReceptor = ObjCFDITimbre.Comprobante.LugarExpedicion
End If
cfdi.Receptor(ObjCFDITimbre.Receptor.RFC, ObjCFDITimbre.Receptor.Nombre, ObjCFDITimbre.Receptor.DomicilioFiscalReceptor, ObjCFDITimbre.Receptor.ResidenciaFiscal, ObjCFDITimbre.Receptor.NumeroRegistroTributario, ObjCFDITimbre.Receptor.RegimenFiscalReceptor, ObjCFDITimbre.Receptor.UsoCFDI)
@@ -5284,7 +5288,18 @@ Public Class Timbrado
#Region "Complemento Pago"
If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then
cfdi.Pago20Totales(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ObjCFDITimbre.ComplementoPagos.TotalPagos)
cfdi.Pago20Totales(ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIVA,
ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesISR,
ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIEPS,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA8,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA0,
ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseExento,
ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos)
cfdi.Pago20(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"),
ObjCFDITimbre.ComplementoPagos.FormaDePagoP,
@@ -5317,31 +5332,47 @@ Public Class Timbrado
doc.ImpPagado,
doc.ImpSaldoInsoluto,
doc.ObjetoImpuesto)
'falta impuestos
If doc.Impuestos IsNot Nothing Then
''traslados
If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then
Dim j As Integer = 0
For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T")
If docimp.TrasladooRetencion = "T" Then
cfdi.Pago20TrasladoDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe)
End If
j += 1
Next
End If
''retenciones
If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
Dim j As Integer = 0
For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R")
If docimp.TrasladooRetencion = "R" Then
cfdi.Pago20RetencionDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe)
End If
j += 1
Next
End If
End If
Next
'Estos impuestos aplicarían para anticipos
If ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then
cfdi.PagoImpuestos(ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos, ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados)
If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R")
cfdi.PagoRetencion(Ret.Impuesto, Ret.Importe)
Next
End If
If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then
For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T")
cfdi.PagoTraslado(Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe)
Next
End If
If ObjCFDITimbre.ComplementoPagos.Traslados.Count > 0 Then
For Each Tra As CFDITraslados In (ObjCFDITimbre.ComplementoPagos.Traslados)
cfdi.Pago20TrasladoP(Tra.Base, Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe)
Next
End If
If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then
For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones
cfdi.Pago20RetencionP(Ret.Impuesto, Ret.Importe)
Next
End If
End If
End If
#End Region