-- mejoras en timbrado 4.0
This commit is contained in:
@@ -79,7 +79,7 @@ Public Class CFDITimbre
|
||||
For Each c As CFDIConceptos In Conceptos
|
||||
For Each imp As CFDIConceptosImpuestos In c.Impuestos
|
||||
If imp.TrasladooRetencion = "T" Then
|
||||
tRetorno.Add(New CFDITraslados With {.Impuesto = imp.Impuesto, .Base = imp.Base, .Importe = imp.Importe, .TasaOCuota = imp.TasaOCuota, .TipoFactor = imp.TipoFactor})
|
||||
tRetorno.Add(New CFDITraslados With {.Impuesto = imp.Impuesto, .Base = imp.Base, .Importe = imp.Importe, .TasaOCuota = imp.TasaOCuota, .TipoFactor = imp.TipoFactor, .BaseMN = imp.BaseMN, .ImporteMN = imp.ImporteMN})
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
@@ -90,7 +90,9 @@ Public Class CFDITimbre
|
||||
.TipoFactor = t.Key.TipoFactor,
|
||||
.TasaOCuota = t.Key.TasaOCuota,
|
||||
.Base = t.Sum(Function(tt) tt.Base),
|
||||
.Importe = t.Sum(Function(tt) tt.Importe)}) _
|
||||
.Importe = t.Sum(Function(tt) tt.Importe),
|
||||
.BaseMN = t.Sum(Function(tt) tt.BaseMN),
|
||||
.ImporteMN = t.Sum(Function(tt) tt.ImporteMN)}) _
|
||||
.OrderBy(Function(x) x.Impuesto).ToList
|
||||
|
||||
End If
|
||||
@@ -342,6 +344,8 @@ Public Class CFDIConceptosImpuestos
|
||||
Public Property TipoFactor As String = "Tasa"
|
||||
Public Property TasaOCuota As Decimal = 0.00D
|
||||
Public Property Importe As Decimal = 0.00D ' propiedad utilizada solo para hacer ajustes, por default toma la multiplicación de base * tasa
|
||||
Public Property BaseMN As Decimal = 0.00D
|
||||
Public Property ImporteMN As Decimal = 0.00D
|
||||
'Public ReadOnly Property Importe As Decimal
|
||||
' Get
|
||||
' If ImporteT = 0.00 Then Return Base * TasaOCuota Else Return ImporteT
|
||||
@@ -417,11 +421,14 @@ End Class
|
||||
<Serializable>
|
||||
Public Class CFDITraslados
|
||||
Public Property Impuesto As String
|
||||
Public Property Tasa As Decimal = 0.000000D
|
||||
'Public Property Tasa As Decimal = 0.000000D
|
||||
Public Property TipoFactor As String
|
||||
Public Property TasaOCuota As Decimal = 0.000000D
|
||||
Public Property Importe As Decimal = 0.000000D
|
||||
Public Property Base As Decimal = 0.000000D
|
||||
Public Property ImporteMN As Decimal = 0.000000D
|
||||
Public Property BaseMN As Decimal = 0.000000D
|
||||
Public Property EquivalenciaDR As Decimal = 0.000000D
|
||||
End Class
|
||||
|
||||
|
||||
@@ -458,13 +465,13 @@ Public Class CFDIComplementoPagos
|
||||
Dim tRetorno As New CFDIComplementoPagosTotales
|
||||
tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagado * TipoCambioP).Sum()
|
||||
|
||||
tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Base * TipoCambioP).Sum()
|
||||
tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Base * TipoCambioP).Sum()
|
||||
tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.Base * TipoCambioP).Sum()
|
||||
tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.BaseMN * c.EquivalenciaDR).Sum()
|
||||
tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.BaseMN * c.EquivalenciaDR).Sum()
|
||||
tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.BaseMN * c.EquivalenciaDR).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()
|
||||
tRetorno.TotalTrasladosImpuestoIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Importe * c.EquivalenciaDR).Sum()
|
||||
tRetorno.TotalTrasladosImpuestoIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.ImporteMN * c.EquivalenciaDR).Sum()
|
||||
tRetorno.TotalTrasladosImpuestoIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.ImporteMN * c.EquivalenciaDR).Sum()
|
||||
|
||||
tRetorno.TotalRetencionesIEPS = (From c In Retenciones Where c.Impuesto = "003" Select c.Importe).Sum()
|
||||
|
||||
@@ -503,7 +510,7 @@ Public Class CFDIComplementoPagos
|
||||
For Each c As CFDIComplementoPagosDocsRelacionados In DocumentosRelacionados
|
||||
For Each imp As CFDIConceptosImpuestos In c.Impuestos
|
||||
If imp.TrasladooRetencion = "R" Then
|
||||
tRetorno.Add(New CFDIRetenciones With {.Impuesto = imp.Impuesto, .Importe = imp.Importe})
|
||||
tRetorno.Add(New CFDIRetenciones With {.Impuesto = imp.Impuesto, .Importe = imp.Importe * (1 / c.TipoCambioDR)})
|
||||
|
||||
End If
|
||||
Next
|
||||
@@ -528,7 +535,7 @@ Public Class CFDIComplementoPagos
|
||||
For Each c As CFDIComplementoPagosDocsRelacionados In DocumentosRelacionados
|
||||
For Each imp As CFDIConceptosImpuestos In c.Impuestos
|
||||
If imp.TrasladooRetencion = "T" Then
|
||||
tRetorno.Add(New CFDITraslados With {.Impuesto = imp.Impuesto, .Base = imp.Base, .Importe = imp.Importe, .TasaOCuota = imp.TasaOCuota, .TipoFactor = imp.TipoFactor})
|
||||
tRetorno.Add(New CFDITraslados With {.Impuesto = imp.Impuesto, .Base = imp.Base, .Importe = imp.Importe, .TasaOCuota = imp.TasaOCuota, .TipoFactor = imp.TipoFactor, .BaseMN = imp.BaseMN, .ImporteMN = imp.ImporteMN, .EquivalenciaDR = c.TipoCambioDR})
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
@@ -539,7 +546,9 @@ Public Class CFDIComplementoPagos
|
||||
.TipoFactor = t.Key.TipoFactor,
|
||||
.TasaOCuota = t.Key.TasaOCuota,
|
||||
.Base = t.Sum(Function(tt) tt.Base),
|
||||
.Importe = t.Sum(Function(tt) tt.Importe)}) _
|
||||
.Importe = t.Sum(Function(tt) tt.Importe),
|
||||
.BaseMN = t.Sum(Function(tt) tt.BaseMN),
|
||||
.ImporteMN = t.Sum(Function(tt) tt.ImporteMN)}) _
|
||||
.OrderBy(Function(x) x.Impuesto).ToList
|
||||
|
||||
End If
|
||||
|
||||
@@ -8976,17 +8976,17 @@ Public Class ClsPaginas
|
||||
Dim validaElementoPago = XmlDoc.DocumentElement("cfdi:Conceptos")
|
||||
If Version = "3.3" Then
|
||||
cfdVer = "http://www.sat.gob.mx/cfd/3"
|
||||
namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos")
|
||||
PagoVersion = "pago10"
|
||||
Else ' se considera que es la version 4.0
|
||||
cfdVer = "http://www.sat.gob.mx/cfd/4"
|
||||
namespaces.AddNamespace("pago20", "http://www.sat.gob.mx/Pagos20")
|
||||
End If
|
||||
|
||||
namespaces.AddNamespace(Prefijo, cfdVer)
|
||||
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
|
||||
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
|
||||
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
|
||||
namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos")
|
||||
namespaces.AddNamespace("pago20", "http://www.sat.gob.mx/Pagos20")
|
||||
|
||||
'Datos Fiscales
|
||||
If Not IsNothing(validaElemento) Then
|
||||
|
||||
@@ -347,7 +347,7 @@ Public Class Timbrado
|
||||
|
||||
#Region "Variables"
|
||||
Dim llaveByte As Byte(), certByte As Byte()
|
||||
Dim llaveBase64 As String, certBase64 As String
|
||||
Dim llaveBase64 As String = "", certBase64 As String = ""
|
||||
Dim cfdi As New RVCFDI.GeneraCFDI()
|
||||
Dim complemento As String = ""
|
||||
Dim complementoConcepto As String = ""
|
||||
@@ -631,7 +631,7 @@ Public Class Timbrado
|
||||
|
||||
#Region "Variables"
|
||||
Dim llaveByte As Byte(), certByte As Byte()
|
||||
Dim llaveBase64 As String, certBase64 As String
|
||||
Dim llaveBase64 As String = "", certBase64 As String = ""
|
||||
Dim objCan As New GoFac.GoCfdi()
|
||||
Dim complemento As String = ""
|
||||
Dim complementoConcepto As String = ""
|
||||
@@ -1107,7 +1107,7 @@ Public Class Timbrado
|
||||
|
||||
|
||||
Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago, ObjetoImpuesto As String
|
||||
Dim VentaImportePago, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, PorcentajeIVA, PorcentajeIEPS As Decimal
|
||||
Dim VentaImportePago, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, VentaTipoCambioMN, PorcentajeIVA, PorcentajeIEPS As Decimal
|
||||
Dim VentaNumParcialidad As Integer
|
||||
|
||||
If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then
|
||||
@@ -1126,13 +1126,14 @@ Public Class Timbrado
|
||||
PorcentajeIVA = dr("PorcentajeIVA").ToString.ToDecimal
|
||||
PorcentajeIEPS = dr("PorcentajeIEPS").ToString.ToDecimal
|
||||
ObjetoImpuesto = dr("ObjetoImpuesto").ToString
|
||||
' 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
|
||||
VentaTipoCambio = 1
|
||||
End If
|
||||
|
||||
'condiciones especiales para el pago en pesos, facturas en moneda extranjera
|
||||
If MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then
|
||||
VentaTipoCambioMN = 1
|
||||
'condiciones especiales para el pago en pesos, facturas en moneda extranjera
|
||||
ElseIf MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then
|
||||
VentaTipoCambioMN = VentaTipoCambio
|
||||
VentaTipoCambio = 1 / VentaTipoCambio
|
||||
End If
|
||||
|
||||
@@ -1145,8 +1146,8 @@ Public Class Timbrado
|
||||
.ImpPagado = VentaImportePago,
|
||||
.ImpSaldoInsoluto = VentaImporteSaldoInsoluto,
|
||||
.ImpSaldoAnt = VentaImporteSaldoAnterior,
|
||||
.TipoCambioDR = VentaTipoCambio,
|
||||
.EquivalenciaDR = VentaTipoCambio,
|
||||
.TipoCambioDR = VentaTipoCambioMN,
|
||||
.EquivalenciaDR = VentaTipoCambio,
|
||||
.NumParcialidad = VentaNumParcialidad,
|
||||
.ObjetoImpuesto = ObjetoImpuesto} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)}
|
||||
|
||||
@@ -1156,7 +1157,9 @@ Public Class Timbrado
|
||||
.Base = drp("Base").ToString.ToDecimal.RoundSQL,
|
||||
.TasaOCuota = drp("PorcentajeImpuesto").ToString().ToDecimal,
|
||||
.Impuesto = drp("TipoImpuesto").ToString,
|
||||
.Importe = drp("Importe").ToString().ToDecimal.RoundSQL
|
||||
.Importe = drp("Importe").ToString().ToDecimal.RoundSQL,
|
||||
.BaseMN = (drp("Base").ToString.ToDecimal * VentaTipoCambioMN).RoundSQL,
|
||||
.ImporteMN = (drp("Importe").ToString.ToDecimal * VentaTipoCambioMN).RoundSQL
|
||||
}
|
||||
)
|
||||
|
||||
@@ -3795,7 +3798,7 @@ Public Class Timbrado
|
||||
comprobante.Conceptos(i).Impuestos.Retenciones(k).Impuesto = imp.Impuesto
|
||||
comprobante.Conceptos(i).Impuestos.Retenciones(k).TipoFactor = imp.TipoFactor
|
||||
comprobante.Conceptos(i).Impuestos.Retenciones(k).Importe = imp.Importe.RoundSQL(NumDecimalesImporte)
|
||||
comprobante.Conceptos(i).Impuestos.Retenciones(k).TasaOCuota = imp.TasaOCuota.ToString.ToDecimal
|
||||
comprobante.Conceptos(i).Impuestos.Retenciones(k).TasaOCuota = imp.TasaOCuota.RoundSQL(6)
|
||||
k += 1
|
||||
End If
|
||||
Next
|
||||
@@ -3829,11 +3832,11 @@ Public Class Timbrado
|
||||
comprobante.Impuestos.Traslados(y).Impuesto = Tras.Impuesto
|
||||
comprobante.Impuestos.Traslados(y).TipoFactor = Tras.TipoFactor
|
||||
comprobante.Impuestos.Traslados(y).TasaOCuota = Tras.TasaOCuota.FormatoNumero(6)
|
||||
comprobante.Impuestos.Traslados(y).Importe = Tras.Importe
|
||||
comprobante.Impuestos.Traslados(y).Importe = Tras.Importe.RoundSQL(6)
|
||||
y += 1
|
||||
Next
|
||||
|
||||
comprobante.Impuestos.TotalImpuestosTrasladados = ObjCFDITimbre.TotalImpuestosTrasladados.RoundSQL(6)
|
||||
comprobante.Impuestos.TotalImpuestosTrasladados = ObjCFDITimbre.TotalImpuestosTrasladados.RoundSQL(2)
|
||||
comprobante.Impuestos.TotalImpuestosTrasladadosSpecified = True
|
||||
|
||||
If ObjCFDITimbre.TotalImpuestosRetenidos > 0 Then
|
||||
@@ -4163,8 +4166,8 @@ Public Class Timbrado
|
||||
For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R")
|
||||
If docimp.TrasladooRetencion = "R" Then
|
||||
Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRRetencionDR
|
||||
Tra.BaseDR = docimp.Base.RoundSQL(6)
|
||||
Tra.ImporteDR = docimp.Importe.RoundSQL(6)
|
||||
Tra.BaseDR = docimp.Base.RoundSQL(2)
|
||||
Tra.ImporteDR = docimp.Importe.RoundSQL(2)
|
||||
Tra.ImpuestoDR = docimp.Impuesto
|
||||
Tra.TipoFactorDR = docimp.TipoFactor
|
||||
Tra.TasaOCuotaDR = docimp.TasaOCuota.RoundSQL(6)
|
||||
@@ -4183,9 +4186,9 @@ Public Class Timbrado
|
||||
|
||||
If docimp.TrasladooRetencion = "T" Then
|
||||
Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR
|
||||
Tra.BaseDR = docimp.Base.RoundSQL(6)
|
||||
Tra.BaseDR = docimp.BaseMN.RoundSQL(2)
|
||||
Tra.ImporteDRSpecified = True
|
||||
Tra.ImporteDR = docimp.Importe.RoundSQL(6)
|
||||
Tra.ImporteDR = docimp.ImporteMN.RoundSQL(2)
|
||||
Tra.ImpuestoDR = docimp.Impuesto
|
||||
Tra.TipoFactorDR = docimp.TipoFactor
|
||||
Tra.TasaOCuotaDRSpecified = True
|
||||
@@ -4223,7 +4226,7 @@ Public Class Timbrado
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota.RoundSQL(6)
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe.RoundSQL(6)
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).BaseP = Tra.Base.RoundSQL(6)
|
||||
ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).BaseP = Tra.Base.RoundSQL(2)
|
||||
x += 1
|
||||
Next
|
||||
End If
|
||||
@@ -4322,10 +4325,9 @@ Public Class Timbrado
|
||||
'si lleva material pelgroso, debe llevar embalaje
|
||||
ComCartaPorte.Mercancias.Mercancia(i).EmbalajeSpecified = True
|
||||
ComCartaPorte.Mercancias.Mercancia(i).Embalaje = CType([Enum].Parse(GetType(ProfactCartaPorte.c_TipoEmbalaje), "Item" & concep.Embalaje), ProfactCartaPorte.c_TipoEmbalaje)
|
||||
|
||||
ComCartaPorte.Mercancias.Mercancia(i).DescripEmbalaje = concep.DescripEmbalaje
|
||||
End If
|
||||
|
||||
ComCartaPorte.Mercancias.Mercancia(i).DescripEmbalaje = concep.DescripEmbalaje
|
||||
ComCartaPorte.Mercancias.Mercancia(i).PesoEnKg = concep.PesoenKg
|
||||
ComCartaPorte.Mercancias.Mercancia(i).ValorMercanciaSpecified = False
|
||||
ComCartaPorte.Mercancias.Mercancia(i).MonedaSpecified = False
|
||||
@@ -5093,7 +5095,6 @@ Public Class Timbrado
|
||||
|
||||
If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then
|
||||
|
||||
|
||||
For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados
|
||||
cfdi.Pago20DoctoRelacionado(doc.IdDocumento,
|
||||
doc.Serie,
|
||||
@@ -5122,7 +5123,6 @@ Public Class Timbrado
|
||||
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
|
||||
@@ -5142,7 +5142,7 @@ Public Class Timbrado
|
||||
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)
|
||||
cfdi.Pago20TrasladoP(Tra.BaseMN, Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.ImporteMN)
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
Reference in New Issue
Block a user