diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index 5dc887e7c..c1f2e0bf7 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -13,7 +13,8 @@ Public Class CFDITimbre Public Property RetencionesLocales As List(Of CFDIRetencionesLocales) Public Property TrasladosLocales As List(Of CFDITrasladosLocales) 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 Timbrado As Boolean Public Property IStimbreFiniquito As Boolean @@ -115,7 +116,8 @@ Public Class CFDITimbre Receptor = New CFDIReceptor RetencionesLocales = New List(Of CFDIRetencionesLocales) TrasladosLocales = New List(Of CFDITrasladosLocales) - ComplementoPagos = New CFDIComplementoPagos + ComplementoPagos = New CFDIComplementoPago + ComplementoPagos20 = New CFDIComplementoPagos20 Complementos = New CFDIComplementos End Sub @@ -437,7 +439,111 @@ End Class -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 + + + +Public Class CFDIComplementoPago Public Property FechaPago As Date Public Property FormaDePagoP As String = "" Public Property MonedaP As String = "" @@ -455,24 +561,24 @@ 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.ImpPagadoMN).Sum() + '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.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.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() + ' tRetorno.TotalRetencionesIEPS = (From c In Retenciones Where c.Impuesto = "003" Select c.ImporteMN).Sum() - Return tRetorno - End Get - End Property + ' Return tRetorno + ' End Get + 'End Property Public ReadOnly Property TotalImpuestosRetenidos As Decimal Get diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 4c8169ca6..cf660b490 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -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 If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then ImporteCancelacion = ImporteCancelacion * dttpagos.Rows.Count - Timbre.ComplementoPagos.CtaOrdenante = CuentaPago - Timbre.ComplementoPagos.CtaBeneficiario = CuentaBeneficiario - Timbre.ComplementoPagos.FechaPago = FechaPago - Timbre.ComplementoPagos.FormaDePagoP = FormaPago - Timbre.ComplementoPagos.MonedaP = MonedaPago - Timbre.ComplementoPagos.Monto = Monto.RoundSQL - Timbre.ComplementoPagos.TipoCambioP = TipoCambioP + + Dim docPago As New CFDIComplementoPago + + docPago.CtaOrdenante = CuentaPago + docPago.CtaBeneficiario = CuentaBeneficiario + docPago.FechaPago = FechaPago + docPago.FormaDePagoP = FormaPago + docPago.MonedaP = MonedaPago + docPago.Monto = Monto.RoundSQL + docPago.TipoCambioP = TipoCambioP 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 + If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then 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 If MonedaPago = VentaAbreviaturaSAT Then VentaTipoCambio = 1 - VentaTipoCambioMN = 1 + Equivalencia = 1 'condiciones especiales para el pago en pesos, facturas en moneda extranjera ElseIf MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then - VentaTipoCambioMN = VentaTipoCambio - VentaTipoCambio = (1 / VentaTipoCambio).RoundSQL(6) + VentaTipoCambio = VentaTipoCambio.RoundSQL(6) + Equivalencia = (1 / VentaTipoCambio).RoundSQL(6) + ElseIf MonedaPago = "USD" AndAlso VentaAbreviaturaSAT <> "USD" Then + VentaTipoCambio = VentaTipoCambio.RoundSQL(6) + Equivalencia = VentaTipoCambio End If ' For Each drr As Data.DataRow In DtFacturasPagadas.Rows @@ -1145,11 +1152,11 @@ Public Class Timbrado .MonedaDR = VentaAbreviaturaSAT, .MetodoDePagoDR = VentaMetodoPago, .ImpPagado = VentaImportePago, - .ImpPagadoMN = (VentaImportePago / VentaTipoCambio).RoundSQL, + .ImpPagadoMN = (VentaImportePago * TipoCambioP).RoundSQL, .ImpSaldoInsoluto = VentaImporteSaldoInsoluto, .ImpSaldoAnt = VentaImporteSaldoAnterior, .TipoCambioDR = VentaTipoCambio, - .EquivalenciaDR = VentaTipoCambio, + .EquivalenciaDR = Equivalencia, .NumParcialidad = VentaNumParcialidad, .ObjetoImpuesto = ObjetoImpuesto} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)} @@ -1160,17 +1167,18 @@ Public Class Timbrado .TasaOCuota = drp("PorcentajeImpuesto").ToString().ToDecimal, .Impuesto = drp("TipoImpuesto").ToString, .Importe = drp("Importe").ToString().ToDecimal.RoundSQL, - .BaseMN = (drp("Base").ToString.ToDecimal / VentaTipoCambio).RoundSQL(6), - .ImporteMN = (drp("Importe").ToString.ToDecimal * VentaTipoCambio).RoundSQL(6) + .BaseMN = (drp("Base").ToString.ToDecimal / Equivalencia).RoundSQL(2), + .ImporteMN = (drp("Importe").ToString.ToDecimal / Equivalencia).RoundSQL(2) } ) Next - Timbre.ComplementoPagos.DocumentosRelacionados.Add(doc) + docPago.DocumentosRelacionados.Add(doc) Next + Timbre.ComplementoPagos20.ComplementoPagos.Add(docPago) End If 'If drr("IVA").ToString.ToDouble > 0 Then @@ -4113,24 +4121,24 @@ Public Class Timbrado Dim Totales As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosTotales() '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.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16.RoundSQL + Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA16.RoundSQL Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosImpuestoIVA16 > 0 - Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8.RoundSQL + Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA8.RoundSQL Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0 - Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA8.RoundSQL + Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA8.RoundSQL Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosImpuestoIVA8 > 0 - Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0.RoundSQL + Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA0.RoundSQL Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 Totales.TotalTrasladosImpuestoIVA0 = 0 Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 ' si hay base > 0, debe de ponerse aunque sea en cero - If ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIEPS > 0 Then - Totales.TotalRetencionesIEPS = ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIEPS.RoundSQL + If ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIEPS > 0 Then + Totales.TotalRetencionesIEPS = ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIEPS.RoundSQL Totales.TotalRetencionesIEPSSpecified = True Else Totales.TotalRetencionesIEPSSpecified = False @@ -4214,7 +4222,7 @@ Public Class Timbrado 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).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 Next End If @@ -5066,88 +5074,92 @@ Public Class Timbrado 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"), - ObjCFDITimbre.ComplementoPagos.FormaDePagoP, - ObjCFDITimbre.ComplementoPagos.MonedaP, - ObjCFDITimbre.ComplementoPagos.TipoCambioP, - ObjCFDITimbre.ComplementoPagos.Monto, - ObjCFDITimbre.ComplementoPagos.NumOperacion, - ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaOrd, - ObjCFDITimbre.ComplementoPagos.NomBancoOrdExt, - ObjCFDITimbre.ComplementoPagos.CtaOrdenante, - ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaBen, - ObjCFDITimbre.ComplementoPagos.CtaBeneficiario, - ObjCFDITimbre.ComplementoPagos.TipoCadPago, - ObjCFDITimbre.ComplementoPagos.CertPago, - ObjCFDITimbre.ComplementoPagos.CadPago, - ObjCFDITimbre.ComplementoPagos.SelloPago) + cfdi.Pago20Totales(ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIVA, + ObjCFDITimbre.ComplementoPagos20.TotalRetencionesISR, + ObjCFDITimbre.ComplementoPagos20.TotalRetencionesIEPS, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA16, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA16, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA8, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA8, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseIVA0, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosImpuestoIVA0, + ObjCFDITimbre.ComplementoPagos20.TotalTrasladosBaseExento, + ObjCFDITimbre.ComplementoPagos20.MontoTotalPagos) + + For Each docp As CFDIComplementoPago In ObjCFDITimbre.ComplementoPagos20.ComplementoPagos + + 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 - cfdi.Pago20DoctoRelacionado(doc.IdDocumento, - doc.Serie, - doc.Folio, - doc.MonedaDR, - doc.EquivalenciaDR, - doc.NumParcialidad, - doc.ImpSaldoAnt, - doc.ImpPagado, - doc.ImpSaldoInsoluto, - doc.ObjetoImpuesto) - If doc.Impuestos IsNot Nothing Then + For Each doc As CFDIComplementoPagosDocsRelacionados In docp.DocumentosRelacionados + cfdi.Pago20DoctoRelacionado(doc.IdDocumento, + doc.Serie, + doc.Folio, + doc.MonedaDR, + doc.EquivalenciaDR, + doc.NumParcialidad, + doc.ImpSaldoAnt, + doc.ImpPagado, + doc.ImpSaldoInsoluto, + doc.ObjetoImpuesto) + If doc.Impuestos IsNot Nothing Then - ''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 + ''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 + + ''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 - ''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 + Next + + If (docp.Retenciones).Count > 0 Then + For Each Ret As CFDIRetenciones In docp.Retenciones + cfdi.Pago20RetencionP(Ret.Impuesto, Ret.ImporteMN) + Next End If - Next - - If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then - For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones - cfdi.Pago20RetencionP(Ret.Impuesto, Ret.ImporteMN) - Next + If docp.Traslados.Count > 0 Then + For Each Tra As CFDITraslados In (docp.Traslados) + cfdi.Pago20TrasladoP(Tra.BaseMN, Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.ImporteMN) + 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 Region