diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index b0e2013b4..8080a8225 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -327,12 +327,14 @@ Public Class CFDIConceptos Public Property ClaveProdServ As String = "" Public Property ClaveUnidad As String = "" Public Property Impuestos As List(Of CFDIConceptosImpuestos) + Public Property ACuentaTerceros As CFDIConceptosACuentaTerceros Public Property Descuento As Decimal = 0.00D Public Property ObjetoImpuesto As String = "02" Public Property ImporteGravaIVAAdicional As Decimal = 0.00D 'caso IEPS Sub New() Impuestos = New List(Of CFDIConceptosImpuestos) + ACuentaTerceros = New CFDIConceptosACuentaTerceros End Sub End Class @@ -349,6 +351,16 @@ Public Class CFDIConceptosImpuestos Public Property ImporteMN As Decimal = 0.000000D +End Class + + +Public Class CFDIConceptosACuentaTerceros + Public Property RfcACuentaTerceros As String = "" + Public Property NombreACuentaTerceros As String = "" + Public Property RegimenFiscalACuentaTerceros As String = "" + Public Property DomicilioFiscalACuentaTerceros As String = "" + + End Class diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index 7c010deb9..8b1f062b8 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -1113,7 +1113,8 @@ Public Class ClsBancos Timbre = Timbrado.PreparaTimbrePago40(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal, 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) + UsuarioActual.Empresa.CP.ToString, CuentaBeneficiario, dr("TipoCambioPago").ToString.ToDecimal, dttpagos, dttpagosimpuestos, CFDIRelacionado:=CFDIRelacionado, + RfcACuentaTerceros:=dr("RfcACuentaTerceros").ToString, NombreACuentaTerceros:=dr("NombreACuentaTerceros").ToString, RegimenFiscalACuentaTerceros:=dr("RegimenFiscalACuentaTerceros").ToString, DomicilioFiscalACuentaTerceros:=dr("DomicilioFiscalACuentaTerceros").ToString) Else CFDIVersion = "3.3" diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index a10b756f0..822536e62 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -1325,7 +1325,7 @@ Public Class ClsContabilidad Try - If GetEncabezadoPrePoliza(CvePrePoliza, Empresa.CveEmpresa) Then + If GetEncabezadoPrePoliza(CvePrePoliza, Empresa.CveEmpresa) AndAlso DtResultados.Rows.Count > 0 Then CveTipoPoliza = Data.Rows(0)("CveTipoPoliza").ToString.ToEntero Cargos = Data.Rows(0)("Cargos").ToString.ToDecimal Abonos = Data.Rows(0)("Abonos").ToString.ToDecimal diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index d1ba33607..7f7ec4ec1 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -7788,7 +7788,7 @@ Public Class ClsPaginas 'concepto pago Concepto = String.Format("{0} NC:{1}", CompraActual.ProveedorNombre, Pago.Referencia) If Pago.TipoPago = "Egsc" AndAlso Not ErrorMovtos Then ' A N T I C I P O / E G R E S O S X C O M P R O B A R - Dim ConPrepAplicacion As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(11, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor) + Dim ConPrepAplicacion As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(11, Pago.CveMonedaPago, True, CompraActual.CveTipoConceptoProveedor) If Pago.CveMonedaPago > 1 Then 'Agregamos la Extranjera If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, Pago.ImportePago, ConPrepAplicacion.CveConcepto, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=Pago.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True @@ -7800,7 +7800,7 @@ Public Class ClsPaginas End If End If If Pago.TipoPago.Contiene("NC", "DEV") AndAlso Not ErrorMovtos Then ' N O T A D E C R E D I T O - Dim ConPrepAplicacion As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(15, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor) + Dim ConPrepAplicacion As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(15, Pago.CveMonedaPago, True, CompraActual.CveTipoConceptoProveedor) If Pago.CveMonedaPago > 1 Then 'Agregamos la Extranjera If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, Pago.ImportePago, ConPrepAplicacion.CveConcepto, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveCompraAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True @@ -7812,7 +7812,7 @@ Public Class ClsPaginas End If End If If Pago.TipoPago = "DD" AndAlso Not ErrorMovtos Then ' D E U D O R D I V E R S O - Dim ConPrepAplicacion As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(17, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor) + Dim ConPrepAplicacion As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(17, Pago.CveMonedaPago, True, CompraActual.CveTipoConceptoProveedor) If Pago.CveMonedaPago > 1 Then 'Agregamos la Extranjera If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, Pago.ImportePago, ConPrepAplicacion.CveConcepto, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveCompraAmortizacion:=CompraActual.CveCompra, CveProveedor:=Pago.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index ed304f1ff..5b5e57eeb 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -10,6 +10,8 @@ Imports System.Xml Imports System.Xml.Serialization Imports Extensiones Imports Newtonsoft.Json.Linq +Imports Profact.TimbraCFDI33.Complementos.CartaPorte10 +Imports Profact.TimbraCFDI33.Complementos.CartaPorte20 Imports ProfactCartaPorte = Profact.TimbraCFDI33.Complementos.CartaPorte20 @@ -1042,7 +1044,11 @@ 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 = "CP01", Optional CFDIRelacionado As String = "") As CFDITimbre + Optional UsoCFDI As String = "CP01", Optional CFDIRelacionado As String = "", + Optional RfcACuentaTerceros As String = "", + Optional NombreACuentaTerceros As String = "", + Optional RegimenFiscalACuentaTerceros As String = "", + Optional DomicilioFiscalACuentaTerceros As String = "") As CFDITimbre Dim Timbre As New CFDITimbre @@ -1087,6 +1093,14 @@ Public Class Timbrado .ClaveProdServ = "84111506", .Noidentificacion = "", .ObjetoImpuesto = "01"} + + 'Pago ACuentaTerceros + If RfcACuentaTerceros <> "" Then + concepto.ACuentaTerceros.RfcACuentaTerceros = RfcACuentaTerceros + concepto.ACuentaTerceros.NombreACuentaTerceros = NombreACuentaTerceros + concepto.ACuentaTerceros.DomicilioFiscalACuentaTerceros = DomicilioFiscalACuentaTerceros + concepto.ACuentaTerceros.RegimenFiscalACuentaTerceros = RegimenFiscalACuentaTerceros + End If Timbre.Conceptos.Add(concepto) Select Case FormaPago @@ -1137,6 +1151,7 @@ Public Class Timbrado ObjetoImpuesto = dr("ObjetoImpuesto").ToString VentaImportePagoMN = dr("VentasTotalPagado").ToString.ToDecimal + '' si la moneda es igual, se omite el tipo de cambio de la venta If MonedaPago = VentaAbreviaturaSAT Then VentaTipoCambio = 1 @@ -3628,10 +3643,10 @@ Public Class Timbrado If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then AmbienteProductivo = False Clave = "12345678a" - EmisorRFC = "IIA040805DZ4" - EmisorNombre = "INDISTRIA ILUMINADORA DE ALMACENES SA DE CV" - ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\publicKey.key" - ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\publicCer.cer" + EmisorRFC = "EKU9003173C9" + UsuarioActual.Empresa.Empresa = "ESCUELA KEMPER URGATE" + ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.key" + ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.cer" UsuarioActual.Empresa.CodigoRegimenFiscal = "601" End If @@ -3792,6 +3807,11 @@ Public Class Timbrado comprobante.Conceptos(i).InformacionAduanera = New Profact.TimbraCFDI40.ComprobanteConceptoInformacionAduanera(1) {} 'solo un codigo por el momento comprobante.Conceptos(i).InformacionAduanera(0) = New Profact.TimbraCFDI40.ComprobanteConceptoInformacionAduanera() With {.NumeroPedimento = concep.NumeroPedimento} End If + If concep.ACuentaTerceros IsNot Nothing AndAlso concep.ACuentaTerceros.RfcACuentaTerceros <> "" Then + comprobante.Conceptos(i).ACuentaTerceros = New Profact.TimbraCFDI40.ComprobanteConceptoACuentaTerceros() With { + .RfcACuentaTerceros = concep.ACuentaTerceros.RfcACuentaTerceros, .NombreACuentaTerceros = concep.ACuentaTerceros.NombreACuentaTerceros, + .RegimenFiscalACuentaTerceros = concep.ACuentaTerceros.RegimenFiscalACuentaTerceros, .DomicilioFiscalACuentaTerceros = concep.ACuentaTerceros.DomicilioFiscalACuentaTerceros} + End If j = 0 k = 0 @@ -4246,7 +4266,9 @@ Public Class Timbrado ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota.RoundSQL(6) + ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).TasaOCuotaPSpecified = True ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.ImporteMN.RoundSQL(6) + ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).ImportePSpecified = True ComPag.Pago(ii).ImpuestosP(0).TrasladosP(x).BaseP = Tra.BaseMN.RoundSQL(2) x += 1 Next @@ -4333,7 +4355,7 @@ Public Class Timbrado ComCartaPorte.Mercancias.Mercancia(i) = New ProfactCartaPorte.CartaPorteMercanciasMercancia If concep.BienesTransp <> "" Then - ComCartaPorte.Mercancias.Mercancia(i).BienesTransp = CType([Enum].Parse(GetType(ProfactCartaPorte.c_ClaveProdServCP), "Item" & concep.BienesTransp), ProfactCartaPorte.c_ClaveProdServCP) + ComCartaPorte.Mercancias.Mercancia(i).BienesTransp = concep.BienesTransp End If ComCartaPorte.Mercancias.Mercancia(i).Descripcion = concep.Descripción @@ -4345,7 +4367,7 @@ Public Class Timbrado ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligrosoSpecified = True '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).Embalaje = concep.Embalaje ComCartaPorte.Mercancias.Mercancia(i).DescripEmbalaje = concep.DescripEmbalaje End If @@ -4760,22 +4782,17 @@ Public Class Timbrado If Retorno = "[]" Then Retorno = resultadoTimbre.Descripcion + MensajeErrorCFDI = resultadoTimbre.Descripcion End If - If MensajeErrorCFDI = "[]" Then - Retorno = resultadoTimbre.Descripcion - End If - End If resultadoTimbre.GuardaXml(RutaArchivo, NombreArchivoXML) Catch ex As Exception Retorno = ex.ToString() End Try - Else Retorno = resultadoTimbre.Detalle MensajeErrorCFDI = resultadoTimbre.Detalle End If - End If GuardaLogTimbrado(swTiempo.ToString, UsuarioActual.Empresa.CvePAC) @@ -5121,7 +5138,6 @@ Public Class Timbrado docp.CadPago, docp.SelloPago) - If docp.DocumentosRelacionados.Count > 0 Then For Each doc As CFDIComplementoPagosDocsRelacionados In docp.DocumentosRelacionados @@ -5555,7 +5571,7 @@ Public Class Timbrado If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then EmisorRFC = "EKU9003173C9" - UsuarioActual.Empresa.Empresa = "ESCUELA KEMPER URGATE SA DE CV" + UsuarioActual.Empresa.Empresa = "ESCUELA KEMPER URGATE" ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.key" ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.cer" @@ -6522,7 +6538,7 @@ Public Class Timbrado ComCartaPorte.Mercancias.Mercancia(i) = New ProfactCartaPorte.CartaPorteMercanciasMercancia If concep.BienesTransp <> "" Then - ComCartaPorte.Mercancias.Mercancia(i).BienesTransp = CType([Enum].Parse(GetType(ProfactCartaPorte.c_ClaveProdServCP), "Item" & concep.BienesTransp), ProfactCartaPorte.c_ClaveProdServCP) + ComCartaPorte.Mercancias.Mercancia(i).BienesTransp = concep.BienesTransp End If ComCartaPorte.Mercancias.Mercancia(i).Descripcion = concep.Descripción @@ -6534,7 +6550,7 @@ Public Class Timbrado ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligrosoSpecified = True '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).Embalaje = concep.Embalaje End If diff --git a/Bin/Profact.TimbraCFDI.dll b/Bin/Profact.TimbraCFDI.dll index b1c756dcf..9754ce481 100644 Binary files a/Bin/Profact.TimbraCFDI.dll and b/Bin/Profact.TimbraCFDI.dll differ