timbrado 4.0, complementos de pago
This commit is contained in:
@@ -395,7 +395,8 @@ End Class
|
||||
<Serializable>
|
||||
Public Class CFDIRetenciones
|
||||
Public Property Impuesto As String
|
||||
Public Property Importe As Double
|
||||
Public Property Importe As Decimal
|
||||
Public Property TasaOCuota As String
|
||||
End Class
|
||||
|
||||
|
||||
@@ -439,8 +440,8 @@ Public Class CFDIComplementoPagos
|
||||
Public Property FormaDePagoP As String = ""
|
||||
Public Property MonedaP As String = ""
|
||||
Public Property NumOperacion As String = ""
|
||||
Public Property TipoCambioP As Double = 0
|
||||
Public Property Monto As Double
|
||||
Public Property TipoCambioP As Decimal = 0
|
||||
Public Property Monto As Decimal
|
||||
Public Property RfcEmisorCtaOrd As String = ""
|
||||
Public Property NomBancoOrdExt As String = ""
|
||||
Public Property CtaOrdenante As String = ""
|
||||
@@ -453,7 +454,7 @@ Public Class CFDIComplementoPagos
|
||||
Public Property DocumentosRelacionados As List(Of CFDIComplementoPagosDocsRelacionados)
|
||||
Public Property Impuestos As List(Of CFDIConceptosImpuestos)
|
||||
|
||||
Public ReadOnly Property TotalImpuestosRetenidos As Double
|
||||
Public ReadOnly Property TotalImpuestosRetenidos As Decimal
|
||||
Get
|
||||
Return (From c In Impuestos
|
||||
Where c.TrasladooRetencion = "R"
|
||||
@@ -461,7 +462,7 @@ Public Class CFDIComplementoPagos
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property TotalImpuestosTrasladados As Double
|
||||
Public ReadOnly Property TotalImpuestosTrasladados As Decimal
|
||||
Get
|
||||
Return (From c In Impuestos
|
||||
Where c.TrasladooRetencion = "T"
|
||||
@@ -469,6 +470,20 @@ 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
|
||||
@@ -476,6 +491,8 @@ Public Class CFDIComplementoPagos
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
|
||||
Sub New()
|
||||
|
||||
DocumentosRelacionados = New List(Of CFDIComplementoPagosDocsRelacionados)
|
||||
@@ -534,7 +551,6 @@ Public Class CFDIComplementoPagos
|
||||
tRetorno = Nothing
|
||||
Return TTraslados
|
||||
|
||||
|
||||
End Get
|
||||
End Property
|
||||
|
||||
@@ -548,6 +564,7 @@ Public Class CFDIComplementoPagosDocsRelacionados
|
||||
Public Property MonedaDR As String = ""
|
||||
Public Property MetodoDePagoDR As String = ""
|
||||
Public Property TipoCambioDR As Decimal
|
||||
Public Property EquivalenciaDR As Decimal = 1
|
||||
Public Property NumParcialidad As Integer = 1
|
||||
Public Property ImpSaldoAnt As Decimal
|
||||
Public Property ImpPagado As Decimal
|
||||
|
||||
@@ -1091,9 +1091,9 @@ Public Class ClsBancos
|
||||
End If
|
||||
|
||||
Timbre = Timbrado.PreparaTimbrePago40(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal,
|
||||
RFCCliente, dr("NombreCliente").ToString, RFCCliente, dr("NombreCliente").ToString, Serie, Folio.ToString, FechaTimbrado, Cuentapago,
|
||||
RFCCliente, dr("NombreCliente").ToString, dr("ClienteCP").ToString, dr("CodigoRegimenFiscal").ToString, Serie, Folio.ToString, FechaTimbrado, Cuentapago,
|
||||
dr("FechaDocumento").ToString.ToDate, dr("ClaveFormaPagoSAT").ToString, dr("AbreviaturaSAT").ToString, dr("VentasTotalPagado").ToString.ToDecimal,
|
||||
UsuarioActual.Empresa.CP.ToString, CuentaBeneficiario, dr("TipoCambioPago").ToString.ToDecimal, dttpagos, dttpagosimpuestos, CFDIRelacionado:=CFDIRelacionado, EsCancelacion:=False)
|
||||
UsuarioActual.Empresa.CP.ToString, CuentaBeneficiario, dr("TipoCambioPago").ToString.ToDecimal, dttpagos, dttpagosimpuestos, CFDIRelacionado:=CFDIRelacionado)
|
||||
|
||||
Else
|
||||
Timbre = Timbrado.PreparaTimbrePago(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal,
|
||||
|
||||
@@ -897,8 +897,8 @@ Public Class Timbrado
|
||||
|
||||
Public Function PreparaTimbrePago(EmisorRFC As String, EmisorNombre As String, EmisorRegimenFiscal As String,
|
||||
ReceptorRFC As String, ReceptorNombre As String, Serie As String, Folio As String, FechaTimbrado As DateTime,
|
||||
CuentaPago As String, FechaPago As DateTime, FormaPago As String, MonedaPago As String, Monto As Double, LugarExpedicion As String,
|
||||
CuentaBeneficiario As String, TipoCambioP As Double, dttpagos As Data.DataTable,
|
||||
CuentaPago As String, FechaPago As DateTime, FormaPago As String, MonedaPago As String, Monto As Decimal, LugarExpedicion As String,
|
||||
CuentaBeneficiario As String, TipoCambioP As Decimal, dttpagos As Data.DataTable,
|
||||
Optional UsoCFDI As String = "P01", Optional CFDIRelacionado As String = "", Optional EsCancelacion As Boolean = False) As CFDITimbre
|
||||
' validación extra para cuando es cancelación requiere el folio relacionado
|
||||
If EsCancelacion AndAlso CFDIRelacionado = "" Then
|
||||
@@ -956,7 +956,7 @@ Public Class Timbrado
|
||||
|
||||
Dim ImporteCancelacion As Decimal = 1
|
||||
Dim MonedaCancelacion As String = "MXN"
|
||||
Dim TipoCambioCancelacion As Double = 1
|
||||
Dim TipoCambioCancelacion As Decimal = 1
|
||||
If EsCancelacion Then MonedaPago = MonedaCancelacion
|
||||
'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
|
||||
@@ -965,7 +965,7 @@ Public Class Timbrado
|
||||
Timbre.ComplementoPagos.FechaPago = FechaPago
|
||||
Timbre.ComplementoPagos.FormaDePagoP = FormaPago
|
||||
Timbre.ComplementoPagos.MonedaP = MonedaPago
|
||||
Timbre.ComplementoPagos.Monto = If(EsCancelacion, ImporteCancelacion, Monto)
|
||||
Timbre.ComplementoPagos.Monto = If(EsCancelacion, ImporteCancelacion, Monto).RoundSQL
|
||||
Timbre.ComplementoPagos.TipoCambioP = If(EsCancelacion, TipoCambioCancelacion, TipoCambioP)
|
||||
|
||||
|
||||
@@ -1029,11 +1029,7 @@ Public Class Timbrado
|
||||
Serie As String, Folio As String, FechaTimbrado As DateTime,
|
||||
CuentaPago As String, FechaPago As DateTime, FormaPago As String, MonedaPago As String, Monto As Decimal, LugarExpedicion As String,
|
||||
CuentaBeneficiario As String, TipoCambioP As Decimal, dttpagos As Data.DataTable, dttpagosimpuestos As DataTable,
|
||||
Optional UsoCFDI As String = "P01", Optional CFDIRelacionado As String = "", Optional EsCancelacion As Boolean = False) As CFDITimbre
|
||||
' validación extra para cuando es cancelación requiere el folio relacionado
|
||||
If EsCancelacion AndAlso CFDIRelacionado = "" Then
|
||||
Return Nothing
|
||||
End If
|
||||
Optional UsoCFDI As String = "CP01", Optional CFDIRelacionado As String = "") As CFDITimbre
|
||||
|
||||
Dim Timbre As New CFDITimbre
|
||||
|
||||
@@ -1089,8 +1085,8 @@ Public Class Timbrado
|
||||
|
||||
Dim ImporteCancelacion As Decimal = 1
|
||||
Dim MonedaCancelacion As String = "MXN"
|
||||
Dim TipoCambioCancelacion As Double = 1
|
||||
If EsCancelacion Then MonedaPago = MonedaCancelacion
|
||||
Dim TipoCambioCancelacion As Decimal = 1
|
||||
|
||||
'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
|
||||
@@ -1098,8 +1094,8 @@ Public Class Timbrado
|
||||
Timbre.ComplementoPagos.FechaPago = FechaPago
|
||||
Timbre.ComplementoPagos.FormaDePagoP = FormaPago
|
||||
Timbre.ComplementoPagos.MonedaP = MonedaPago
|
||||
Timbre.ComplementoPagos.Monto = If(EsCancelacion, ImporteCancelacion, Monto)
|
||||
Timbre.ComplementoPagos.TipoCambioP = If(EsCancelacion, TipoCambioCancelacion, TipoCambioP)
|
||||
Timbre.ComplementoPagos.Monto = Monto.RoundSQL
|
||||
Timbre.ComplementoPagos.TipoCambioP = TipoCambioP
|
||||
|
||||
|
||||
Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago, ObjetoImpuesto As String
|
||||
@@ -1123,7 +1119,9 @@ Public Class Timbrado
|
||||
PorcentajeIEPS = dr("PorcentajeIEPS").ToString.ToDecimal
|
||||
ObjetoImpuesto = dr("ObjetoImpuesto").ToString
|
||||
' si la moneda es igual, se omite el tipo de cambio de la venta
|
||||
If MonedaPago = VentaAbreviaturaSAT Then VentaTipoCambio = 0
|
||||
If MonedaPago = VentaAbreviaturaSAT Then
|
||||
VentaTipoCambio = 1
|
||||
End If
|
||||
|
||||
'condiciones especiales para el pago en pesos, facturas en moneda extranjera
|
||||
If MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then
|
||||
@@ -1136,20 +1134,21 @@ Public Class Timbrado
|
||||
.Folio = VentaFolio,
|
||||
.MonedaDR = VentaAbreviaturaSAT,
|
||||
.MetodoDePagoDR = VentaMetodoPago,
|
||||
.ImpPagado = If(EsCancelacion, 1, VentaImportePago),
|
||||
.ImpSaldoInsoluto = If(EsCancelacion, VentaImporteSaldoAnterior - 1, VentaImporteSaldoInsoluto),
|
||||
.ImpPagado = VentaImportePago,
|
||||
.ImpSaldoInsoluto = VentaImporteSaldoInsoluto,
|
||||
.ImpSaldoAnt = VentaImporteSaldoAnterior,
|
||||
.TipoCambioDR = VentaTipoCambio,
|
||||
.EquivalenciaDR = VentaTipoCambio,
|
||||
.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)}
|
||||
|
||||
For Each drp As DataRow In dttpagosimpuestos.FiltraParametros(String.Format("FolioFiscal = '{0}'", VentaFolioFiscal.ToLower)).Rows
|
||||
doc.Impuestos.Add(New CFDIConceptosImpuestos With {
|
||||
.TrasladooRetencion = drp("Tipo").ToString,
|
||||
.Base = drp("Base").ToString.ToDecimal,
|
||||
.Base = drp("Base").ToString.ToDecimal.RoundSQL,
|
||||
.TasaOCuota = drp("PorcentajeImpuesto").ToString().ToDecimal,
|
||||
.Impuesto = drp("TipoImpuesto").ToString,
|
||||
.Importe = drp("Importe").ToString().ToDecimal
|
||||
.Importe = drp("Importe").ToString().ToDecimal.RoundSQL
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1353,7 +1352,7 @@ Public Class Timbrado
|
||||
|
||||
For Each Ret In ObjCFDITimbre.Retenciones
|
||||
Dim clbImp As ClbNegBICFDv3_3.Impuesto = If(Ret.Impuesto = "002", ClbNegBICFDv3_3.Impuesto.IVA, If(Ret.Impuesto = "003", ClbNegBICFDv3_3.Impuesto.IEPS, ClbNegBICFDv3_3.Impuesto.ISR))
|
||||
Msg = CFDi.ImpuestosRetencionesCfd(clbImp, Ret.Importe.ToDecimal)
|
||||
Msg = CFDi.ImpuestosRetencionesCfd(clbImp, Ret.Importe)
|
||||
Next
|
||||
|
||||
If Not HasErrorRetenciones Then
|
||||
@@ -3700,6 +3699,10 @@ 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
|
||||
|
||||
comprobante.Receptor = New Profact.TimbraCFDI40.ComprobanteReceptor()
|
||||
comprobante.Receptor.Rfc = ObjCFDITimbre.Receptor.RFC
|
||||
comprobante.Receptor.Nombre = ObjCFDITimbre.Receptor.Nombre
|
||||
@@ -3824,7 +3827,7 @@ Public Class Timbrado
|
||||
For Each Ret In ObjCFDITimbre.Retenciones
|
||||
comprobante.Impuestos.Retenciones(w) = New Profact.TimbraCFDI40.ComprobanteImpuestosRetencion()
|
||||
comprobante.Impuestos.Retenciones(w).Impuesto = Ret.Impuesto
|
||||
comprobante.Impuestos.Retenciones(w).Importe = Ret.Importe.ToDecimal
|
||||
comprobante.Impuestos.Retenciones(w).Importe = Ret.Importe
|
||||
w += 1
|
||||
Next
|
||||
|
||||
@@ -4048,9 +4051,9 @@ Public Class Timbrado
|
||||
ComPag.Pago(0).FechaPago = ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss").ToDate()
|
||||
ComPag.Pago(0).FormaDePagoP = ObjCFDITimbre.ComplementoPagos.FormaDePagoP
|
||||
ComPag.Pago(0).MonedaP = ObjCFDITimbre.ComplementoPagos.MonedaP
|
||||
ComPag.Pago(0).TipoCambioPSpecified = If(ObjCFDITimbre.ComplementoPagos.MonedaP = "MXN", False, True)
|
||||
ComPag.Pago(0).TipoCambioP = ObjCFDITimbre.ComplementoPagos.TipoCambioP.ToDecimal
|
||||
ComPag.Pago(0).Monto = ObjCFDITimbre.ComplementoPagos.Monto.ToDecimal
|
||||
ComPag.Pago(0).TipoCambioPSpecified = True 'If(ObjCFDITimbre.ComplementoPagos.MonedaP = "MXN", False, True)
|
||||
ComPag.Pago(0).TipoCambioP = ObjCFDITimbre.ComplementoPagos.TipoCambioP
|
||||
ComPag.Pago(0).Monto = ObjCFDITimbre.ComplementoPagos.Monto
|
||||
If ObjCFDITimbre.ComplementoPagos.NumOperacion <> "" Then
|
||||
ComPag.Pago(0).NumOperacion = ObjCFDITimbre.ComplementoPagos.NumOperacion
|
||||
End If
|
||||
@@ -4085,6 +4088,29 @@ Public Class Timbrado
|
||||
End If
|
||||
|
||||
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.TotalTrasladosBaseIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0
|
||||
Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.16D, "Impuesto").RoundSQL
|
||||
Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0
|
||||
|
||||
Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.08D, "Base")
|
||||
Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0
|
||||
Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.08D, "Impuesto").RoundSQL
|
||||
Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0
|
||||
|
||||
Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.00D, "Base")
|
||||
Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0
|
||||
Totales.TotalTrasladosImpuestoIVA0 = 0
|
||||
Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0
|
||||
|
||||
|
||||
Totales.TotalRetencionesIEPSSpecified = False
|
||||
ComPag.Totales = Totales
|
||||
|
||||
ComPag.Pago(0).DoctoRelacionado = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionado(ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count - 1) {}
|
||||
Dim i As Integer
|
||||
For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados
|
||||
@@ -4096,10 +4122,12 @@ Public Class Timbrado
|
||||
ComPag.Pago(0).DoctoRelacionado(i).Folio = doc.Folio
|
||||
ComPag.Pago(0).DoctoRelacionado(i).MonedaDR = doc.MonedaDR
|
||||
ComPag.Pago(0).DoctoRelacionado(i).NumParcialidad = doc.NumParcialidad.ToString
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAnt = doc.ImpSaldoAnt
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAnt = doc.ImpSaldoAnt.RoundSQL
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpPagadoSpecified = True
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpPagado = doc.ImpPagado
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsoluto = doc.ImpSaldoInsoluto
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpPagado = doc.ImpPagado.RoundSQL
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsoluto = doc.ImpSaldoInsoluto.RoundSQL
|
||||
ComPag.Pago(0).DoctoRelacionado(i).EquivalenciaDR = doc.EquivalenciaDR
|
||||
ComPag.Pago(0).DoctoRelacionado(i).EquivalenciaDRSpecified = True
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ObjetoImpDR = doc.ObjetoImpuesto
|
||||
|
||||
If doc.Impuestos IsNot Nothing Then
|
||||
@@ -4116,6 +4144,9 @@ Public Class Timbrado
|
||||
Tra.ImporteDRSpecified = True
|
||||
Tra.ImporteDR = docimp.Importe
|
||||
Tra.ImpuestoDR = docimp.Impuesto
|
||||
Tra.TipoFactorDR = docimp.TipoFactor
|
||||
Tra.TasaOCuotaDRSpecified = True
|
||||
Tra.TasaOCuotaDR = docimp.TasaOCuota
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR(j) = Tra
|
||||
End If
|
||||
j += 1
|
||||
@@ -4132,54 +4163,80 @@ Public Class Timbrado
|
||||
Tra.BaseDR = docimp.Base
|
||||
Tra.ImporteDR = docimp.Importe
|
||||
Tra.ImpuestoDR = docimp.Impuesto
|
||||
Tra.TipoFactorDR = docimp.TipoFactor
|
||||
Tra.TasaOCuotaDR = docimp.TasaOCuota
|
||||
ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.RetencionesDR(j) = Tra
|
||||
End If
|
||||
j += 1
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
|
||||
i += 1
|
||||
Next
|
||||
|
||||
'Estos impuestos aplicarían para anticipos
|
||||
If ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then
|
||||
If ObjCFDITimbre.ComplementoPagos.Traslados.Count > 0 Then
|
||||
Dim x As Integer
|
||||
ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {}
|
||||
ComPag.Pago(0).ImpuestosP(0) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP()
|
||||
'ComPag.Pago(0).ImpuestosP(0).TotalImpuestosRetenidosSpecifiedP = True
|
||||
'ComPag.Pago(0).ImpuestosP(0).TotalImpuestosRetenidos = ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos.ToDecimal
|
||||
'ComPag.Pago(0).ImpuestosP(0).TotalImpuestosTrasladadosSpecified = True
|
||||
'ComPag.Pago(0).ImpuestosP(0).TotalImpuestosTrasladados = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados.ToDecimal
|
||||
|
||||
If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
|
||||
Dim x As Integer
|
||||
ComPag.Pago(0).ImpuestosP(0).RetencionesP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R").Count - 1) {}
|
||||
For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R")
|
||||
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
|
||||
x += 1
|
||||
Next
|
||||
End If
|
||||
If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then
|
||||
Dim x As Integer
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T").Count - 1) {}
|
||||
For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T")
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP()
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe
|
||||
x += 1
|
||||
Next
|
||||
End If
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Traslados).Count - 1) {}
|
||||
For Each Tra As CFDITraslados In (ObjCFDITimbre.ComplementoPagos.Traslados)
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP()
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).BaseP = Tra.Base
|
||||
x += 1
|
||||
Next
|
||||
End If
|
||||
|
||||
If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then
|
||||
Dim x As Integer
|
||||
If ComPag.Pago(0).ImpuestosP(0) Is Nothing Then ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {}
|
||||
ComPag.Pago(0).ImpuestosP(0).RetencionesP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP((ObjCFDITimbre.ComplementoPagos.Retenciones).Count - 1) {}
|
||||
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
|
||||
x += 1
|
||||
Next
|
||||
End If
|
||||
|
||||
|
||||
Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces()
|
||||
''Estos impuestos aplicarían para anticipos
|
||||
'If ObjCFDITimbre.ComplementoPagos.tota > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then
|
||||
' ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {}
|
||||
' ComPag.Pago(0).ImpuestosP(0) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP()
|
||||
|
||||
' If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then
|
||||
' Dim x As Integer
|
||||
' ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T").Count - 1) {}
|
||||
' For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T")
|
||||
' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP()
|
||||
' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto
|
||||
' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor
|
||||
' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota
|
||||
' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe
|
||||
' x += 1
|
||||
' Next
|
||||
' End If
|
||||
|
||||
' If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
|
||||
' Dim x As Integer
|
||||
' ComPag.Pago(0).ImpuestosP(0).RetencionesP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R").Count - 1) {}
|
||||
' For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R")
|
||||
' 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
|
||||
' x += 1
|
||||
' Next
|
||||
' End If
|
||||
|
||||
|
||||
'End If
|
||||
|
||||
|
||||
Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces()
|
||||
nsComp.Add("pago20", "http://www.sat.gob.mx/Pagos20")
|
||||
Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComPag, GetType(Profact.TimbraCFDI40.Complementos.Pagos20.Pagos), nsComp)
|
||||
Dim docComp As New XmlDocument()
|
||||
@@ -4820,7 +4877,6 @@ Public Class Timbrado
|
||||
If FolioFiscal <> "" Then
|
||||
resultadoTimbre.GuardaXml(RutaArchivo, NombreArchivoXML)
|
||||
|
||||
|
||||
If ObjCFDITimbre.Comprobante.TipoComprobante <> "P" Then
|
||||
|
||||
'Actualiza Estatus Factura
|
||||
@@ -4914,6 +4970,7 @@ Public Class Timbrado
|
||||
End If
|
||||
|
||||
End If
|
||||
resultadoTimbre.GuardaXml(RutaArchivo, NombreArchivoXML)
|
||||
Catch ex As Exception
|
||||
Retorno = ex.ToString()
|
||||
End Try
|
||||
@@ -6220,7 +6277,7 @@ Public Class Timbrado
|
||||
For Each Ret In ObjCFDITimbre.Retenciones
|
||||
comprobante.Impuestos.Retenciones(w) = New Profact.TimbraCFDI33.ComprobanteImpuestosRetencion()
|
||||
comprobante.Impuestos.Retenciones(w).Impuesto = Ret.Impuesto
|
||||
comprobante.Impuestos.Retenciones(w).Importe = Ret.Importe.ToDecimal
|
||||
comprobante.Impuestos.Retenciones(w).Importe = Ret.Importe
|
||||
w += 1
|
||||
Next
|
||||
|
||||
@@ -6444,8 +6501,8 @@ Public Class Timbrado
|
||||
ComPag.Pago(0).FormaDePagoP = ObjCFDITimbre.ComplementoPagos.FormaDePagoP
|
||||
ComPag.Pago(0).MonedaP = ObjCFDITimbre.ComplementoPagos.MonedaP
|
||||
ComPag.Pago(0).TipoCambioPSpecified = If(ObjCFDITimbre.ComplementoPagos.MonedaP = "MXN", False, True)
|
||||
ComPag.Pago(0).TipoCambioP = ObjCFDITimbre.ComplementoPagos.TipoCambioP.ToDecimal
|
||||
ComPag.Pago(0).Monto = ObjCFDITimbre.ComplementoPagos.Monto.ToDecimal
|
||||
ComPag.Pago(0).TipoCambioP = ObjCFDITimbre.ComplementoPagos.TipoCambioP
|
||||
ComPag.Pago(0).Monto = ObjCFDITimbre.ComplementoPagos.Monto
|
||||
If ObjCFDITimbre.ComplementoPagos.NumOperacion <> "" Then
|
||||
ComPag.Pago(0).NumOperacion = ObjCFDITimbre.ComplementoPagos.NumOperacion
|
||||
End If
|
||||
@@ -6511,9 +6568,9 @@ Public Class Timbrado
|
||||
ComPag.Pago(0).Impuestos = New Profact.TimbraCFDI33.Complementos.Pagos10.PagosPagoImpuestos(0) {}
|
||||
ComPag.Pago(0).Impuestos(0) = New Profact.TimbraCFDI33.Complementos.Pagos10.PagosPagoImpuestos()
|
||||
ComPag.Pago(0).Impuestos(0).TotalImpuestosRetenidosSpecified = True
|
||||
ComPag.Pago(0).Impuestos(0).TotalImpuestosRetenidos = ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos.ToDecimal
|
||||
ComPag.Pago(0).Impuestos(0).TotalImpuestosRetenidos = ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos
|
||||
ComPag.Pago(0).Impuestos(0).TotalImpuestosTrasladadosSpecified = True
|
||||
ComPag.Pago(0).Impuestos(0).TotalImpuestosTrasladados = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados.ToDecimal
|
||||
ComPag.Pago(0).Impuestos(0).TotalImpuestosTrasladados = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados
|
||||
|
||||
If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
|
||||
Dim x As Integer
|
||||
|
||||
Reference in New Issue
Block a user