- complementos de pago 4.0

This commit is contained in:
2022-06-20 18:46:09 -07:00
parent dbadc2d80f
commit e78dbe9d63
2 changed files with 231 additions and 113 deletions

View File

@@ -13,7 +13,8 @@ Public Class CFDITimbre
Public Property RetencionesLocales As List(Of CFDIRetencionesLocales) Public Property RetencionesLocales As List(Of CFDIRetencionesLocales)
Public Property TrasladosLocales As List(Of CFDITrasladosLocales) Public Property TrasladosLocales As List(Of CFDITrasladosLocales)
Public Property Nomina As CFDINomina Public Property Nomina As CFDINomina
Public Property ComplementoPagos As CFDIComplementoPagos Public Property ComplementoPagos As CFDIComplementoPago
Public Property ComplementoPagos20 As CFDIComplementoPagos20
Public Property Complementos As CFDIComplementos Public Property Complementos As CFDIComplementos
Public Property Timbrado As Boolean Public Property Timbrado As Boolean
Public Property IStimbreFiniquito As Boolean Public Property IStimbreFiniquito As Boolean
@@ -115,7 +116,8 @@ Public Class CFDITimbre
Receptor = New CFDIReceptor Receptor = New CFDIReceptor
RetencionesLocales = New List(Of CFDIRetencionesLocales) RetencionesLocales = New List(Of CFDIRetencionesLocales)
TrasladosLocales = New List(Of CFDITrasladosLocales) TrasladosLocales = New List(Of CFDITrasladosLocales)
ComplementoPagos = New CFDIComplementoPagos ComplementoPagos = New CFDIComplementoPago
ComplementoPagos20 = New CFDIComplementoPagos20
Complementos = New CFDIComplementos Complementos = New CFDIComplementos
End Sub End Sub
@@ -437,7 +439,111 @@ End Class
<Serializable> <Serializable>
Public Class CFDIComplementoPagos Public Class CFDIComplementoPagos20
Public Property TotalTrasladosBaseExento As Decimal = 0
Public Property TotalRetencionesIVA As Decimal = 0
Public Property TotalRetencionesISR As Decimal = 0
Public Property ComplementoPagos As List(Of CFDIComplementoPago)
Public ReadOnly Property MontoTotalPagos As Decimal
Get
Return (From c In ComplementoPagos Select c.Monto * c.TipoCambioP).Sum()
End Get
End Property
Public ReadOnly Property TotalTrasladosBaseIVA0 As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.0 Select c.BaseMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Public ReadOnly Property TotalTrasladosImpuestoIVA0 As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.0 Select c.ImporteMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Public ReadOnly Property TotalTrasladosBaseIVA8 As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.BaseMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Public ReadOnly Property TotalTrasladosImpuestoIVA8 As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.ImporteMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Public ReadOnly Property TotalTrasladosBaseIVA16 As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.BaseMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Public ReadOnly Property TotalTrasladosImpuestoIVA16 As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.ImporteMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Public ReadOnly Property TotalRetencionesIEPS As Decimal
Get
Dim Ret As Decimal = 0
For Each cfd As CFDIComplementoPago In ComplementoPagos
Ret = Ret + ((From c In cfd.Retenciones Where c.Impuesto = "003" Select c.ImporteMN).Sum() * cfd.TipoCambioP)
Next
Return Ret.RoundSQL()
End Get
End Property
Sub New()
ComplementoPagos = New List(Of CFDIComplementoPago)
End Sub
'Public ReadOnly Property Totales As CFDIComplementoPagosTotales
' Get
' Dim tRetorno As New CFDIComplementoPagosTotales
' tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagadoMN).Sum()
' tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.BaseMN).Sum()
' tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.BaseMN).Sum()
' tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.BaseMN).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.ImporteMN).Sum()
' tRetorno.TotalTrasladosImpuestoIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.ImporteMN).Sum()
' tRetorno.TotalRetencionesIEPS = (From c In Retenciones Where c.Impuesto = "003" Select c.ImporteMN).Sum()
' Return tRetorno
' End Get
'End Property
End Class
<Serializable>
Public Class CFDIComplementoPago
Public Property FechaPago As Date Public Property FechaPago As Date
Public Property FormaDePagoP As String = "" Public Property FormaDePagoP As String = ""
Public Property MonedaP As String = "" Public Property MonedaP As String = ""
@@ -455,24 +561,24 @@ Public Class CFDIComplementoPagos
Public Property SelloPago As String = "" Public Property SelloPago As String = ""
Public Property DocumentosRelacionados As List(Of CFDIComplementoPagosDocsRelacionados) Public Property DocumentosRelacionados As List(Of CFDIComplementoPagosDocsRelacionados)
Public Property Impuestos As List(Of CFDIConceptosImpuestos) Public Property Impuestos As List(Of CFDIConceptosImpuestos)
Public ReadOnly Property Totales As CFDIComplementoPagosTotales 'Public ReadOnly Property Totales As CFDIComplementoPagosTotales
Get ' Get
Dim tRetorno As New CFDIComplementoPagosTotales ' Dim tRetorno As New CFDIComplementoPagosTotales
tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagadoMN).Sum() ' tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagadoMN).Sum()
tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.BaseMN).Sum() ' tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.BaseMN).Sum()
tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.BaseMN).Sum() ' tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.BaseMN).Sum()
tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.BaseMN).Sum() ' tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.BaseMN).Sum()
tRetorno.TotalTrasladosImpuestoIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Importe).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.ImporteMN).Sum() ' tRetorno.TotalTrasladosImpuestoIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.ImporteMN).Sum()
tRetorno.TotalTrasladosImpuestoIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.ImporteMN).Sum() ' tRetorno.TotalTrasladosImpuestoIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.ImporteMN).Sum()
tRetorno.TotalRetencionesIEPS = (From c In Retenciones Where c.Impuesto = "003" Select c.ImporteMN).Sum() ' tRetorno.TotalRetencionesIEPS = (From c In Retenciones Where c.Impuesto = "003" Select c.ImporteMN).Sum()
Return tRetorno ' Return tRetorno
End Get ' End Get
End Property 'End Property
Public ReadOnly Property TotalImpuestosRetenidos As Decimal Public ReadOnly Property TotalImpuestosRetenidos As Decimal
Get Get

View File

@@ -1097,19 +1097,23 @@ Public Class Timbrado
'como registra un peso por cada fatura que se cancele, se tiene que multiplicar por el numero de facturas, para que se pueda emitir el timbre 'como registra un peso por cada fatura que se cancele, se tiene que multiplicar por el numero de facturas, para que se pueda emitir el timbre
If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then ImporteCancelacion = ImporteCancelacion * dttpagos.Rows.Count If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then ImporteCancelacion = ImporteCancelacion * dttpagos.Rows.Count
Timbre.ComplementoPagos.CtaOrdenante = CuentaPago
Timbre.ComplementoPagos.CtaBeneficiario = CuentaBeneficiario Dim docPago As New CFDIComplementoPago
Timbre.ComplementoPagos.FechaPago = FechaPago
Timbre.ComplementoPagos.FormaDePagoP = FormaPago docPago.CtaOrdenante = CuentaPago
Timbre.ComplementoPagos.MonedaP = MonedaPago docPago.CtaBeneficiario = CuentaBeneficiario
Timbre.ComplementoPagos.Monto = Monto.RoundSQL docPago.FechaPago = FechaPago
Timbre.ComplementoPagos.TipoCambioP = TipoCambioP docPago.FormaDePagoP = FormaPago
docPago.MonedaP = MonedaPago
docPago.Monto = Monto.RoundSQL
docPago.TipoCambioP = TipoCambioP
Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago, ObjetoImpuesto As String Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago, ObjetoImpuesto As String
Dim VentaImportePago, VentaImportePagoMN, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, VentaTipoCambioMN, PorcentajeIVA, PorcentajeIEPS As Decimal Dim VentaImportePago, VentaImportePagoMN, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, PorcentajeIVA, PorcentajeIEPS, Equivalencia As Decimal
Dim VentaNumParcialidad As Integer Dim VentaNumParcialidad As Integer
If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then
For Each dr As Data.DataRow In dttpagos.Rows For Each dr As Data.DataRow In dttpagos.Rows
@@ -1131,11 +1135,14 @@ Public Class Timbrado
'' si la moneda es igual, se omite el tipo de cambio de la venta '' si la moneda es igual, se omite el tipo de cambio de la venta
If MonedaPago = VentaAbreviaturaSAT Then If MonedaPago = VentaAbreviaturaSAT Then
VentaTipoCambio = 1 VentaTipoCambio = 1
VentaTipoCambioMN = 1 Equivalencia = 1
'condiciones especiales para el pago en pesos, facturas en moneda extranjera 'condiciones especiales para el pago en pesos, facturas en moneda extranjera
ElseIf MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then ElseIf MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then
VentaTipoCambioMN = VentaTipoCambio VentaTipoCambio = VentaTipoCambio.RoundSQL(6)
VentaTipoCambio = (1 / VentaTipoCambio).RoundSQL(6) Equivalencia = (1 / VentaTipoCambio).RoundSQL(6)
ElseIf MonedaPago = "USD" AndAlso VentaAbreviaturaSAT <> "USD" Then
VentaTipoCambio = VentaTipoCambio.RoundSQL(6)
Equivalencia = VentaTipoCambio
End If End If
' For Each drr As Data.DataRow In DtFacturasPagadas.Rows ' For Each drr As Data.DataRow In DtFacturasPagadas.Rows
@@ -1145,11 +1152,11 @@ Public Class Timbrado
.MonedaDR = VentaAbreviaturaSAT, .MonedaDR = VentaAbreviaturaSAT,
.MetodoDePagoDR = VentaMetodoPago, .MetodoDePagoDR = VentaMetodoPago,
.ImpPagado = VentaImportePago, .ImpPagado = VentaImportePago,
.ImpPagadoMN = (VentaImportePago / VentaTipoCambio).RoundSQL, .ImpPagadoMN = (VentaImportePago * TipoCambioP).RoundSQL,
.ImpSaldoInsoluto = VentaImporteSaldoInsoluto, .ImpSaldoInsoluto = VentaImporteSaldoInsoluto,
.ImpSaldoAnt = VentaImporteSaldoAnterior, .ImpSaldoAnt = VentaImporteSaldoAnterior,
.TipoCambioDR = VentaTipoCambio, .TipoCambioDR = VentaTipoCambio,
.EquivalenciaDR = VentaTipoCambio, .EquivalenciaDR = Equivalencia,
.NumParcialidad = VentaNumParcialidad, .NumParcialidad = VentaNumParcialidad,
.ObjetoImpuesto = ObjetoImpuesto} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)} .ObjetoImpuesto = ObjetoImpuesto} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)}
@@ -1160,17 +1167,18 @@ Public Class Timbrado
.TasaOCuota = drp("PorcentajeImpuesto").ToString().ToDecimal, .TasaOCuota = drp("PorcentajeImpuesto").ToString().ToDecimal,
.Impuesto = drp("TipoImpuesto").ToString, .Impuesto = drp("TipoImpuesto").ToString,
.Importe = drp("Importe").ToString().ToDecimal.RoundSQL, .Importe = drp("Importe").ToString().ToDecimal.RoundSQL,
.BaseMN = (drp("Base").ToString.ToDecimal / VentaTipoCambio).RoundSQL(6), .BaseMN = (drp("Base").ToString.ToDecimal / Equivalencia).RoundSQL(2),
.ImporteMN = (drp("Importe").ToString.ToDecimal * VentaTipoCambio).RoundSQL(6) .ImporteMN = (drp("Importe").ToString.ToDecimal / Equivalencia).RoundSQL(2)
} }
) )
Next Next
Timbre.ComplementoPagos.DocumentosRelacionados.Add(doc) docPago.DocumentosRelacionados.Add(doc)
Next Next
Timbre.ComplementoPagos20.ComplementoPagos.Add(docPago)
End If End If
'If drr("IVA").ToString.ToDouble > 0 Then 'If drr("IVA").ToString.ToDouble > 0 Then
@@ -4113,24 +4121,24 @@ Public Class Timbrado
Dim Totales As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosTotales() Dim Totales As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosTotales()
'Totales Generales 'Totales Generales
Totales.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos.RoundSQL Totales.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos20.MontoTotalPagos.RoundSQL
Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16.RoundSQL Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA16.RoundSQL
Totales.TotalTrasladosBaseIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0 Totales.TotalTrasladosBaseIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0
Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16.RoundSQL Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA16.RoundSQL
Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosImpuestoIVA16 > 0 Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosImpuestoIVA16 > 0
Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8.RoundSQL Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA8.RoundSQL
Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0 Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0
Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA8.RoundSQL Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA8.RoundSQL
Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosImpuestoIVA8 > 0 Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosImpuestoIVA8 > 0
Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0.RoundSQL Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA0.RoundSQL
Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0
Totales.TotalTrasladosImpuestoIVA0 = 0 Totales.TotalTrasladosImpuestoIVA0 = 0
Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 ' si hay base > 0, debe de ponerse aunque sea en cero Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 ' si hay base > 0, debe de ponerse aunque sea en cero
If ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIEPS > 0 Then If ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIEPS > 0 Then
Totales.TotalRetencionesIEPS = ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIEPS.RoundSQL Totales.TotalRetencionesIEPS = ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIEPS.RoundSQL
Totales.TotalRetencionesIEPSSpecified = True Totales.TotalRetencionesIEPSSpecified = True
Else Else
Totales.TotalRetencionesIEPSSpecified = False Totales.TotalRetencionesIEPSSpecified = False
@@ -4214,7 +4222,7 @@ Public Class Timbrado
For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones
ComPag.Pago(0).ImpuestosP(0).RetencionesP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP() ComPag.Pago(0).ImpuestosP(0).RetencionesP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP()
ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImpuestoP = Ret.Impuesto ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImpuestoP = Ret.Impuesto
ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImporteP = Ret.Importe ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImporteP = Ret.ImporteMN
x += 1 x += 1
Next Next
End If End If
@@ -5066,88 +5074,92 @@ Public Class Timbrado
If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then
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"), cfdi.Pago20Totales(ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIVA,
ObjCFDITimbre.ComplementoPagos.FormaDePagoP, ObjCFDITimbre.ComplementoPagos20.TotalRetencionesISR,
ObjCFDITimbre.ComplementoPagos.MonedaP, ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIEPS,
ObjCFDITimbre.ComplementoPagos.TipoCambioP, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA16,
ObjCFDITimbre.ComplementoPagos.Monto, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA16,
ObjCFDITimbre.ComplementoPagos.NumOperacion, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA8,
ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaOrd, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA8,
ObjCFDITimbre.ComplementoPagos.NomBancoOrdExt, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA0,
ObjCFDITimbre.ComplementoPagos.CtaOrdenante, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA0,
ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaBen, ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseExento,
ObjCFDITimbre.ComplementoPagos.CtaBeneficiario, ObjCFDITimbre.ComplementoPagos20.MontoTotalPagos)
ObjCFDITimbre.ComplementoPagos.TipoCadPago,
ObjCFDITimbre.ComplementoPagos.CertPago, For Each docp As CFDIComplementoPago In ObjCFDITimbre.ComplementoPagos20.ComplementoPagos
ObjCFDITimbre.ComplementoPagos.CadPago,
ObjCFDITimbre.ComplementoPagos.SelloPago) cfdi.Pago20(docp.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"),
docp.FormaDePagoP,
docp.MonedaP,
docp.TipoCambioP,
docp.Monto,
docp.NumOperacion,
docp.RfcEmisorCtaOrd,
docp.NomBancoOrdExt,
docp.CtaOrdenante,
docp.RfcEmisorCtaBen,
docp.CtaBeneficiario,
docp.TipoCadPago,
docp.CertPago,
docp.CadPago,
docp.SelloPago)
If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then If docp.DocumentosRelacionados.Count > 0 Then
For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados For Each doc As CFDIComplementoPagosDocsRelacionados In docp.DocumentosRelacionados
cfdi.Pago20DoctoRelacionado(doc.IdDocumento, cfdi.Pago20DoctoRelacionado(doc.IdDocumento,
doc.Serie, doc.Serie,
doc.Folio, doc.Folio,
doc.MonedaDR, doc.MonedaDR,
doc.EquivalenciaDR, doc.EquivalenciaDR,
doc.NumParcialidad, doc.NumParcialidad,
doc.ImpSaldoAnt, doc.ImpSaldoAnt,
doc.ImpPagado, doc.ImpPagado,
doc.ImpSaldoInsoluto, doc.ImpSaldoInsoluto,
doc.ObjetoImpuesto) doc.ObjetoImpuesto)
If doc.Impuestos IsNot Nothing Then If doc.Impuestos IsNot Nothing Then
''retenciones ''retenciones
If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
Dim j As Integer = 0 Dim j As Integer = 0
For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R") For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R")
If docimp.TrasladooRetencion = "R" Then If docimp.TrasladooRetencion = "R" Then
cfdi.Pago20RetencionDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe) cfdi.Pago20RetencionDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe)
End If End If
j += 1 j += 1
Next Next
End If
''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
End If End If
''traslados Next
If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then
Dim j As Integer = 0 If (docp.Retenciones).Count > 0 Then
For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T") For Each Ret As CFDIRetenciones In docp.Retenciones
If docimp.TrasladooRetencion = "T" Then cfdi.Pago20RetencionP(Ret.Impuesto, Ret.ImporteMN)
cfdi.Pago20TrasladoDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe) Next
End If
j += 1
Next
End If
End If End If
Next If docp.Traslados.Count > 0 Then
For Each Tra As CFDITraslados In (docp.Traslados)
If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then cfdi.Pago20TrasladoP(Tra.BaseMN, Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.ImporteMN)
For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones Next
cfdi.Pago20RetencionP(Ret.Impuesto, Ret.ImporteMN) End If
Next
End If End If
Next
If ObjCFDITimbre.ComplementoPagos.Traslados.Count > 0 Then
For Each Tra As CFDITraslados In (ObjCFDITimbre.ComplementoPagos.Traslados)
cfdi.Pago20TrasladoP(Tra.BaseMN, Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.ImporteMN)
Next
End If
End If
End If End If
#End Region #End Region