mejora en timbrado con impuestos a tasa cero

This commit is contained in:
2022-01-27 13:17:04 -07:00
parent 54116a4073
commit b6b5b4f2df
2 changed files with 68 additions and 61 deletions

View File

@@ -33,6 +33,13 @@ Public Class CFDITimbre
End Get
End Property
Public ReadOnly Property AplicaImpuestosTraslados As Boolean 'detecte si va la etiqueta de impuestos, aunque sea en cero
Get
Return (From c In Conceptos
Select c.Impuestos.Where(Function(tra) tra.TrasladooRetencion = "T" And tra.TipoFactor = "Tasa")).Count() > 0
End Get
End Property
Public ReadOnly Property Retenciones As List(Of CFDIRetenciones)
Get
Dim tRetorno As New List(Of CFDIRetenciones)

View File

@@ -868,7 +868,7 @@ Public Class Timbrado
Timbre.Comprobante.FormadePago = ""
Timbre.Comprobante.CondicionesdePago = ""
Timbre.Comprobante.MetodoPago = ""
Timbre.Comprobante.Subtotal = 0
Timbre.Comprobante.SubTotal = 0
Timbre.Comprobante.Descuentos = 0
Timbre.Comprobante.Moneda = "XXX"
Timbre.Comprobante.TipoCambio = ""
@@ -1094,7 +1094,7 @@ Public Class Timbrado
ObjCFDITimbre.Comprobante.Fecha,
ObjCFDITimbre.Comprobante.FormadePago,
ObjCFDITimbre.Comprobante.CondicionesdePago,
ObjCFDITimbre.Comprobante.Subtotal,
ObjCFDITimbre.Comprobante.SubTotal,
ObjCFDITimbre.Comprobante.Descuentos,
ObjCFDITimbre.Comprobante.TipoCambio.ToDecimal,
ObjCFDITimbre.Comprobante.Moneda,
@@ -1513,7 +1513,7 @@ Public Class Timbrado
ObjCFDITimbre.Comprobante.Fecha.ToString("yyyy-MM-ddTHH:mm:ss"),
ObjCFDITimbre.Comprobante.FormadePago,
ObjCFDITimbre.Comprobante.CondicionesdePago,
ObjCFDITimbre.Comprobante.Subtotal,
ObjCFDITimbre.Comprobante.SubTotal,
ObjCFDITimbre.Comprobante.Descuentos,
ObjCFDITimbre.Comprobante.Moneda,
ObjCFDITimbre.Comprobante.TipoCambio.ToString,
@@ -2106,7 +2106,7 @@ Public Class Timbrado
ObjCFDITimbre.Comprobante.Fecha.ToString("yyyy-MM-ddTHH:mm:ss"),
ObjCFDITimbre.Comprobante.FormadePago,
ObjCFDITimbre.Comprobante.CondicionesdePago,
ObjCFDITimbre.Comprobante.Subtotal,
ObjCFDITimbre.Comprobante.SubTotal,
ObjCFDITimbre.Comprobante.Descuentos,
ObjCFDITimbre.Comprobante.Moneda,
ObjCFDITimbre.Comprobante.TipoCambio.ToString,
@@ -2161,7 +2161,7 @@ Public Class Timbrado
#Region "Impuestos"
'SI NO ES FACTURA EN 0 AGREGA LOS IMPUESTOS
If Ventas.Total <> 0 And (ObjCFDITimbre.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.TotalImpuestosTrasladados > 0) Then
If Ventas.Total <> 0 And (ObjCFDITimbre.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.AplicaImpuestosTraslados) Then
cfdi.Impuestos(ObjCFDITimbre.TotalImpuestosRetenidos, ObjCFDITimbre.TotalImpuestosTrasladados)
End If
#End Region
@@ -2175,8 +2175,8 @@ Public Class Timbrado
Next
End If
If ObjCFDITimbre.Traslados.Sum(Function(x) x.Importe) > 0 Then
'' si el importe de impuestos es mayor a cero o si es tasa con importe = 0, debe de ir el atributo
If ObjCFDITimbre.AplicaImpuestosTraslados Then
''se acumulan los importes
For Each Tras In ObjCFDITimbre.Traslados
cfdi.Traslado(Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe)
@@ -2189,45 +2189,45 @@ Public Class Timbrado
If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 OrElse ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe) > 0 Then
cfdi.ImpuestosLocales(ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe), ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe))
cfdi.ImpuestosLocales(ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe), ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe))
For Each ret As CFDIRetencionesLocales In ObjCFDITimbre.RetencionesLocales
If ret.Importe > 0 Then
cfdi.RetencionLocal(ret.ImpuestoLocalRetenido, ret.TasaRetencion, ret.Importe)
End If
Next
For Each ret As CFDIRetencionesLocales In ObjCFDITimbre.RetencionesLocales
If ret.Importe > 0 Then
cfdi.RetencionLocal(ret.ImpuestoLocalRetenido, ret.TasaRetencion, ret.Importe)
End If
Next
For Each ret As CFDITrasladosLocales In ObjCFDITimbre.TrasladosLocales
If ret.Importe > 0 Then
cfdi.TrasladoLocal(ret.ImpuestoLocalTraslado, ret.TasaTraslado, ret.Importe)
End If
Next
End If
For Each ret As CFDITrasladosLocales In ObjCFDITimbre.TrasladosLocales
If ret.Importe > 0 Then
cfdi.TrasladoLocal(ret.ImpuestoLocalTraslado, ret.TasaTraslado, ret.Importe)
End If
Next
End If
If Ventas.CveComplementoTimbrado > 0 Then
If Ventas.CveComplementoTimbrado > 0 Then
Select Case Ventas.CveComplementoTimbrado
Case 5 'INE Proceso Ordinario Directivo Estatal"
cfdi.Ine11("Ordinario", "Directivo Estatal", "0")
Select Case Ventas.CveComplementoTimbrado
Case 5 'INE Proceso Ordinario Directivo Estatal"
cfdi.Ine11("Ordinario", "Directivo Estatal", "0")
cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "")
cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
Case 6 'INE Proceso Ordinario Ejecutivo Estatal"
cfdi.Ine11("Ordinario", "Ejecutivo Estatal", "0")
cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "")
cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
Case 6 'INE Proceso Ordinario Ejecutivo Estatal"
cfdi.Ine11("Ordinario", "Ejecutivo Estatal", "0")
cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "")
cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
Case 7 'INE Proceso Ordinario Ejecutivo Nacional"
cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "")
cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
Case 7 'INE Proceso Ordinario Ejecutivo Nacional"
cfdi.Ine11("Ordinario", "Ejecutivo Nacional", Ventas.ComplementoINE.INEIdContabilidad.ToString)
Case 8 'INE PreCampaña
cfdi.Ine11(Ventas.ComplementoINE.INETipoProceso, "", "0")
cfdi.Ine11("Ordinario", "Ejecutivo Nacional", Ventas.ComplementoINE.INEIdContabilidad.ToString)
Case 8 'INE PreCampaña
cfdi.Ine11(Ventas.ComplementoINE.INETipoProceso, "", "0")
cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, Ventas.ComplementoINE.INETipoComite)
cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
End Select
cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, Ventas.ComplementoINE.INETipoComite)
cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
End Select
End If
End If
@@ -2236,11 +2236,11 @@ Public Class Timbrado
#Region "Comercio Exterior"
If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then
If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then
If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then
If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then
'DATOS GENERALES
cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado,
'DATOS GENERALES
cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado,
ObjCFDITimbre.Complementos.ComercioExterior11.TipoOperacion,
ObjCFDITimbre.Complementos.ComercioExterior11.ClavedePedimento,
ObjCFDITimbre.Complementos.ComercioExterior11.CertificadoOrigen,
@@ -2251,9 +2251,9 @@ Public Class Timbrado
ObjCFDITimbre.Complementos.ComercioExterior11.Observaciones,
ObjCFDITimbre.Complementos.ComercioExterior11.TipoCambioUSD,
ObjCFDITimbre.Complementos.ComercioExterior11.TotalUSD)
'EMISOR
cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP))
cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle,
'EMISOR
cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP))
cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle,
ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior,
ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior,
ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Colonia,
@@ -2263,9 +2263,9 @@ Public Class Timbrado
ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Estado,
ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais,
ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CP)
'RECEPTOR
cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib)
cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle,
'RECEPTOR
cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib)
cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle,
ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroExterior,
ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroInterior,
ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Colonia,
@@ -2275,7 +2275,7 @@ Public Class Timbrado
ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Estado,
ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Pais,
ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.CP)
cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib,
cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib,
ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre,
ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle,
ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior,
@@ -2287,35 +2287,35 @@ Public Class Timbrado
ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado,
ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais,
ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP)
'MERCANCIAS
If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then
For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias
cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares)
If concep.DescripcionesEspecificas.Marca <> "" Then
cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca,
'MERCANCIAS
If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then
For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias
cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares)
If concep.DescripcionesEspecificas.Marca <> "" Then
cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca,
concep.DescripcionesEspecificas.Modelo,
concep.DescripcionesEspecificas.SubModelo,
concep.DescripcionesEspecificas.NumeroSerie)
End If
Next
End If
End If
Next
End If
End If
End If
#End Region
End If
End If
#Region "C O M P L E M E N T O C A R T A P O R T E"
If ObjCFDITimbre.Complementos.CartaPorte IsNot Nothing Then
If ObjCFDITimbre.Complementos.CartaPorte IsNot Nothing Then
Dim Carta As CFDICartaPorte = ObjCFDITimbre.Complementos.CartaPorte