From 4f51b06bb8ea6b1e8b8d4472465db81bb5ec2273 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 5 Mar 2022 14:08:14 -0700 Subject: [PATCH 01/15] -- timbrado complementos de pago. --- App_Code/CFDITimbre.vb | 73 +++++++++++++- App_Code/ClsBancos.vb | 41 +++++++- App_Code/Modelos.vb | 8 +- App_Code/Timbrado.vb | 223 +++++++++++++++++++++++++++++++++++++---- 4 files changed, 315 insertions(+), 30 deletions(-) diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index 3138f25ba..e506f303e 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -469,6 +469,13 @@ Public Class CFDIComplementoPagos End Get End Property + Public ReadOnly Property TotalPagos As Decimal + Get + Return (From c In DocumentosRelacionados + Select c.ImpPagado).Sum() + End Get + End Property + Sub New() DocumentosRelacionados = New List(Of CFDIComplementoPagosDocsRelacionados) @@ -476,6 +483,61 @@ Public Class CFDIComplementoPagos End Sub + Public ReadOnly Property Retenciones As List(Of CFDIRetenciones) + Get + Dim tRetorno As New List(Of CFDIRetenciones) + Dim TRetenciones As New List(Of CFDIRetenciones) + + 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}) + + End If + Next + Next + If tRetorno.Count > 0 Then + TRetenciones = tRetorno.GroupBy(Function(t) New With {Key t.Impuesto}) _ + .Select(Function(t) New CFDIRetenciones With {.Impuesto = t.Key.Impuesto, + .Importe = t.Sum(Function(tt) tt.Importe)}) _ + .OrderBy(Function(x) x.Impuesto).ToList + End If + + tRetorno = Nothing + Return TRetenciones + + End Get + End Property + + Public ReadOnly Property Traslados As List(Of CFDITraslados) + Get + Dim tRetorno As New List(Of CFDITraslados) + Dim TTraslados As New List(Of CFDITraslados) + 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}) + End If + Next + Next + 'ya generado todos los registros posibles, los agrupo y los sumo + If tRetorno.Count > 0 Then + TTraslados = tRetorno.GroupBy(Function(t) New With {Key t.TipoFactor, Key t.Impuesto, Key t.TasaOCuota}) _ + .Select(Function(t) New CFDITraslados With {.Impuesto = t.Key.Impuesto, + .TipoFactor = t.Key.TipoFactor, + .TasaOCuota = t.Key.TasaOCuota, + .Base = t.Sum(Function(tt) tt.Base), + .Importe = t.Sum(Function(tt) tt.Importe)}) _ + .OrderBy(Function(x) x.Impuesto).ToList + + End If + tRetorno = Nothing + Return TTraslados + + + End Get + End Property + End Class @@ -487,9 +549,14 @@ Public Class CFDIComplementoPagosDocsRelacionados Public Property MetodoDePagoDR As String = "" Public Property TipoCambioDR As Decimal Public Property NumParcialidad As Integer = 1 - Public Property ImpSaldoAnt As Double - Public Property ImpPagado As Double - Public Property ImpSaldoInsoluto As Double + Public Property ImpSaldoAnt As Decimal + Public Property ImpPagado As Decimal + Public Property ImpSaldoInsoluto As Decimal + Public Property ObjetoImpuesto As String = "01" + Public Property Impuestos As List(Of CFDIConceptosImpuestos) + Sub New() + Impuestos = New List(Of CFDIConceptosImpuestos) + End Sub End Class diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index 3d3f33619..7ddc1e495 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -953,6 +953,7 @@ Public Class ClsBancos Dim Estatus As Integer = 1 Dim dttpagos As DataTable = Nothing + Dim dttpagosimpuestos As DataTable = Nothing Dim dr As Data.DataRow = Nothing If GetComplementoPagosRep(-1, Now.AddYears(-5), Now, If(CvePrePoliza > 0, -1, CveIE), CveVenta, If(EsRegeneracion, 2, 1), UsuarioActual.CveEmpresa, CvePrePoliza:=CvePrePoliza) Then @@ -996,7 +997,6 @@ Public Class ClsBancos 'ReceptorRFC = drr("RFC").ToString 'ReceptorNombre = drr("NombreCliente").ToString - Folio = FActual ComplementoSerieFolio = $"{Serie}-{Folio}" @@ -1084,12 +1084,25 @@ Public Class ClsBancos Dim Timbre As CFDITimbre = Nothing Dim Timbrado As New Timbrado + If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then + If GetComplementoPagosImpuestos(CveIE, UsuarioActual.CveEmpresa) Then + dttpagosimpuestos = DtResultados + End If - Timbre = Timbrado.PreparaTimbrePago(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal, + Timbre = Timbrado.PreparaTimbrePago40(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal, + RFCCliente, dr("NombreCliente").ToString, RFCCliente, dr("NombreCliente").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) + + Else + Timbre = Timbrado.PreparaTimbrePago(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal, RFCCliente, dr("NombreCliente").ToString, Serie, Folio.ToString, FechaTimbrado, Cuentapago, - dr("FechaDocumento").ToString.ToDate, dr("ClaveFormaPagoSAT").ToString, dr("AbreviaturaSAT").ToString, dr("VentasTotalPagado").ToString.ToDouble, - UsuarioActual.Empresa.CP.ToString, CuentaBeneficiario, dr("TipoCambioPago").ToString.ToDouble, dttpagos, CFDIRelacionado:=CFDIRelacionado, EsCancelacion:=False) + dr("FechaDocumento").ToString.ToDate, dr("ClaveFormaPagoSAT").ToString, dr("AbreviaturaSAT").ToString, dr("VentasTotalPagado").ToString.ToDecimal, + UsuarioActual.Empresa.CP.ToString, CuentaBeneficiario, dr("TipoCambioPago").ToString.ToDecimal, dttpagos, CFDIRelacionado:=CFDIRelacionado, EsCancelacion:=False) + + End If + ''PREPARA PARA CANCELACION POR SUSTITUCION DE COMPLEMENTO DE PAGO 'If CFDIRelacionado <> "-1" And CFDIRelacionado <> "" Then @@ -1365,6 +1378,26 @@ Public Class ClsBancos Return Retorno End Function + Public Function GetComplementoPagosImpuestos(CveIE As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Banc_ComplementoPagoImpuestosGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveIE", SqlDbType.Int).Value = CveIE + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener informacion de complementos de pago en impuestos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + Public Function GetComplementoPagos(CveComplementoPago As Integer, CveIE As Integer, CveVenta As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 92d95b07b..af1e4838d 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -686,7 +686,7 @@ Namespace Modelos Return Not ErrorPrePolizas End Function - Public Function EmitirFactura(Optional Timbrar As Boolean = True, Optional Transac As SqlClient.SqlTransaction = Nothing, Optional ObjContPaqTransac As ClsContPAQi = Nothing) As MMensajeFactura + Public Function EmitirFactura(Optional Timbrar As Boolean = True, Optional Transac As SqlClient.SqlTransaction = Nothing, Optional ObjContPaqTransac As ClsContPAQi = Nothing, Optional Modulo As String = "Modelos/GuardarVentaM") As MMensajeFactura Dim Retorno As New MMensajeFactura() If Me.Version = "3.3" AndAlso Not Me.TipoDocto.Contiene("Ped", "PeC") Then @@ -782,7 +782,7 @@ Namespace Modelos Next End If - GuardarVenta(Me, ObjVentas, ObjConta, ObjInventario, ObjContr, DtDetalle, Me.CveNCaVincular, ObjContPaq, ObjBancos, ObjOS, ObjEventos, ObjCGame, ObjClientes, ObjAcum:=ObjAcum, Resp:=Retorno) + GuardarVenta(Me, ObjVentas, ObjConta, ObjInventario, ObjContr, DtDetalle, Me.CveNCaVincular, ObjContPaq, ObjBancos, ObjOS, ObjEventos, ObjCGame, ObjClientes, ObjAcum:=ObjAcum, Resp:=Retorno, Modulo:=Modulo) 'SI ES REFACTURACION Dim ObjNC As List(Of Object) = Nothing @@ -1453,10 +1453,10 @@ Namespace Modelos End If End Sub - Public Sub GuardarVenta(ByRef factura As Modelos.Factura, ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, ByRef ObjInventario As ClsInventarios, ByRef ObjContr As ClsContratos, ByRef TmpDTDetalle As DataTable, CveNCaVincular As Integer, ByRef objContPaqi As ClsContPAQi, Optional ByRef ObjBancos As ClsBancos = Nothing, Optional ByRef ObjOS As ClsOS = Nothing, ByRef Optional ObjEventos As ClsOIEventos = Nothing, ByRef Optional ObjCGame As ClsCGame = Nothing, ByRef Optional ObjCliente As ClsClientes = Nothing, Optional EsNotaCredito As Boolean = False, Optional ObjAcum As ClsAcumuladores = Nothing, ByRef Optional Resp As MMensajeFactura = Nothing) + Public Sub GuardarVenta(ByRef factura As Modelos.Factura, ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, ByRef ObjInventario As ClsInventarios, ByRef ObjContr As ClsContratos, ByRef TmpDTDetalle As DataTable, CveNCaVincular As Integer, ByRef objContPaqi As ClsContPAQi, Optional ByRef ObjBancos As ClsBancos = Nothing, Optional ByRef ObjOS As ClsOS = Nothing, ByRef Optional ObjEventos As ClsOIEventos = Nothing, ByRef Optional ObjCGame As ClsCGame = Nothing, ByRef Optional ObjCliente As ClsClientes = Nothing, Optional EsNotaCredito As Boolean = False, Optional ObjAcum As ClsAcumuladores = Nothing, ByRef Optional Resp As MMensajeFactura = Nothing, Optional Modulo As String = "Modelos/GuardarVentaM") Dim Msgok As New StringBuilder - factura.CvePrePoliza = ObjConta.AddPrePolizas("Modelos/GuardarVentaM", factura.CvePlantillaPoliza, factura.TotalTC, factura.TotalTC, factura.CveMoneda, factura.Fecha, If(factura.CveEmpresaCRM > 0, factura.EmpresaCRM, factura.Cliente.Nombre), factura.CveUsuario, factura.CveEmpresa) + factura.CvePrePoliza = ObjConta.AddPrePolizas(Modulo, factura.CvePlantillaPoliza, factura.TotalTC, factura.TotalTC, factura.CveMoneda, factura.Fecha, If(factura.CveEmpresaCRM > 0, factura.EmpresaCRM, factura.Cliente.Nombre), factura.CveUsuario, factura.CveEmpresa) Dim RFCReceptor As String = "" diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 4a327d03f..253e76353 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -1017,6 +1017,156 @@ Public Class Timbrado If PorcentajeIEPS > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.Base = VentaImportePago * PorcentajeIEPS, .TasaOCuota = PorcentajeIEPS, .Impuesto = "003"}) + 'Next + + Return Timbre + + End Function + + Public Function PreparaTimbrePago40(EmisorRFC As String, EmisorNombre As String, EmisorRegimenFiscal As String, + ReceptorRFC As String, ReceptorNombre As String, ReceptorDomicilioFiscal As String, ReceptorRegimenFiscal 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 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 + + Dim Timbre As New CFDITimbre + + Timbre.Comprobante.TipoComprobante = "P" + Timbre.Comprobante.Folio = Folio + Timbre.Comprobante.Serie = Serie + Timbre.Comprobante.Fecha = FechaTimbrado + Timbre.Comprobante.FormadePago = "" + Timbre.Comprobante.CondicionesdePago = "" + Timbre.Comprobante.MetodoPago = "" + Timbre.Comprobante.SubTotal = 0 + Timbre.Comprobante.Descuentos = 0 + Timbre.Comprobante.Moneda = "XXX" + Timbre.Comprobante.TipoCambio = "" + Timbre.Comprobante.Total = 0 + + Timbre.Comprobante.LugarExpedicion = LugarExpedicion + + Timbre.Emisor.RegimenFiscal = EmisorRegimenFiscal + Timbre.Emisor.Nombre = EmisorNombre + Timbre.Emisor.RFC = EmisorRFC + + Timbre.Receptor.RFC = ReceptorRFC + Timbre.Receptor.Nombre = ReceptorNombre + Timbre.Receptor.DomicilioFiscalReceptor = ReceptorDomicilioFiscal + Timbre.Receptor.RegimenFiscalReceptor = ReceptorRegimenFiscal + Timbre.Receptor.UsoCFDI = UsoCFDI + + If CFDIRelacionado <> "-1" And CFDIRelacionado <> "" Then + Timbre.CFDIRelacionados.TipoRelacion = "04" + Timbre.CFDIRelacionados.UUID.Add(CFDIRelacionado) + End If + + 'detalles + + Dim concepto As New CFDIConceptos With {.Cantidad = 1, + .Descripcion = "Pago", + .ValorUnitario = 0, + .Importe = 0, + .Unidad = "", + .ClaveUnidad = "ACT", + .ClaveProdServ = "84111506", + .Noidentificacion = "", + .ObjetoImpuesto = "01"} + Timbre.Conceptos.Add(concepto) + + Select Case FormaPago + Case "01" + CuentaPago = "" + CuentaBeneficiario = "" + + End Select + + Dim ImporteCancelacion As Decimal = 1 + Dim MonedaCancelacion As String = "MXN" + Dim TipoCambioCancelacion As Double = 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 + Timbre.ComplementoPagos.CtaOrdenante = CuentaPago + Timbre.ComplementoPagos.CtaBeneficiario = CuentaBeneficiario + 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) + + + Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago, ObjetoImpuesto As String + Dim VentaImportePago, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, PorcentajeIVA, PorcentajeIEPS 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 + VentaFolioFiscal = dr("FolioFiscal").ToString + VentaSerie = dr("VentaSerie").ToString + VentaFolio = dr("VentaFolio").ToString + VentaAbreviaturaSAT = dr("VentaAbreviaturaSAT").ToString + VentaMetodoPago = dr("MetodoPago").ToString + VentaImportePago = dr("VentaImportePagado").ToString.ToDecimal + VentaImporteSaldoInsoluto = dr("ImpSaldoInsoluto").ToString.ToDecimal + VentaImporteSaldoAnterior = dr("ImpSaldoAnterior").ToString.ToDecimal + VentaTipoCambio = dr("TipoCambio").ToString.ToDecimal + VentaNumParcialidad = dr("NumParcialidad").ToString.ToEntero + 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 + If MonedaPago = VentaAbreviaturaSAT Then VentaTipoCambio = 0 + + 'condiciones especiales para el pago en pesos, facturas en moneda extranjera + If MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then + VentaTipoCambio = 1 / VentaTipoCambio + End If + + ' For Each drr As Data.DataRow In DtFacturasPagadas.Rows + Dim doc As New CFDIComplementoPagosDocsRelacionados With {.IdDocumento = VentaFolioFiscal, + .Serie = VentaSerie, + .Folio = VentaFolio, + .MonedaDR = VentaAbreviaturaSAT, + .MetodoDePagoDR = VentaMetodoPago, + .ImpPagado = If(EsCancelacion, 1, VentaImportePago), + .ImpSaldoInsoluto = If(EsCancelacion, VentaImporteSaldoAnterior - 1, VentaImporteSaldoInsoluto), + .ImpSaldoAnt = VentaImporteSaldoAnterior, + .TipoCambioDR = VentaTipoCambio, + .NumParcialidad = VentaNumParcialidad, + .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, + .TasaOCuota = drp("PorcentajeImpuesto").ToString().ToDecimal, + .Impuesto = drp("TipoImpuesto").ToString, + .Importe = drp("Importe").ToString().ToDecimal + } + ) + + Next + + Timbre.ComplementoPagos.DocumentosRelacionados.Add(doc) + + Next + + + End If + 'If drr("IVA").ToString.ToDouble > 0 Then + 'If PorcentajeIVA > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = VentaImportePago * PorcentajeIVA, .TasaOCuota = PorcentajeIVA, .Impuesto = "002"}) + 'Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = 0, .TasaOCuota = 0, .Impuesto = "002"}) + + 'If PorcentajeIEPS > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.Base = VentaImportePago * PorcentajeIEPS, .TasaOCuota = PorcentajeIEPS, .Impuesto = "003"}) + + 'Next Return Timbre @@ -3939,19 +4089,52 @@ Public Class Timbrado End If ComPag.Pago(0).DoctoRelacionado(i).Folio = doc.Folio ComPag.Pago(0).DoctoRelacionado(i).MonedaDR = doc.MonedaDR - 'ComPag.Pago(0).DoctoRelacionado(i).TipoCambioDRSpecifiedP = If(doc.TipoCambioDR = 0, False, True) - 'ComPag.Pago(0).DoctoRelacionado(i).TipoCambioDR = doc.TipoCambioDR - 'ComPag.Pago(0).DoctoRelacionado(i).MetodoDePagoDR = doc.MetodoDePagoDR ComPag.Pago(0).DoctoRelacionado(i).NumParcialidad = doc.NumParcialidad.ToString - - 'ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAntSpecified = True - ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAnt = doc.ImpSaldoAnt.ToDecimal - + ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAnt = doc.ImpSaldoAnt ComPag.Pago(0).DoctoRelacionado(i).ImpPagadoSpecified = True - ComPag.Pago(0).DoctoRelacionado(i).ImpPagado = doc.ImpPagado.ToDecimal + ComPag.Pago(0).DoctoRelacionado(i).ImpPagado = doc.ImpPagado + ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsoluto = doc.ImpSaldoInsoluto + ComPag.Pago(0).DoctoRelacionado(i).ObjetoImpDR = doc.ObjetoImpuesto + + If doc.Impuestos IsNot Nothing Then + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDR + ''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") + + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR(doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T").Count - 1) {} + If docimp.TrasladooRetencion = "T" Then + Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR + Tra.BaseDR = docimp.Base + Tra.ImporteDRSpecified = True + Tra.ImporteDR = docimp.Importe + Tra.ImpuestoDR = docimp.Impuesto + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR(j) = Tra + End If + j += 1 + Next + End If + + ''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") + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.RetencionesDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRRetencionDR(doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R").Count - 1) {} + If docimp.TrasladooRetencion = "R" Then + Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRRetencionDR + Tra.BaseDR = docimp.Base + Tra.ImporteDR = docimp.Importe + Tra.ImpuestoDR = docimp.Impuesto + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.RetencionesDR(j) = Tra + End If + j += 1 + Next + End If + End If + + - 'ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsolutoSpecified = True - ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsoluto = doc.ImpSaldoInsoluto.ToDecimal i += 1 Next @@ -3991,8 +4174,8 @@ Public Class Timbrado Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces() - nsComp.Add("pago20", "http://www.sat.gob.mx/Pagos") - Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComPag, GetType(Profact.TimbraCFDI33.Complementos.Pagos10.Pagos), nsComp) + 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() docComp.LoadXml(xmlComp) 'comprobante.PagosSpecified = True @@ -5119,8 +5302,9 @@ Public Class Timbrado #Region "Complemento Pago" If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then + cfdi.Pago20Totales(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ObjCFDITimbre.ComplementoPagos.TotalPagos) - cfdi.Pago(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"), + cfdi.Pago20(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"), ObjCFDITimbre.ComplementoPagos.FormaDePagoP, ObjCFDITimbre.ComplementoPagos.MonedaP, ObjCFDITimbre.ComplementoPagos.TipoCambioP, @@ -5141,16 +5325,17 @@ Public Class Timbrado For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados - cfdi.PagoDoctoRelacionado(doc.IdDocumento, + cfdi.Pago20DoctoRelacionado(doc.IdDocumento, doc.Serie, doc.Folio, doc.MonedaDR, doc.TipoCambioDR, - doc.MetodoDePagoDR, doc.NumParcialidad, doc.ImpSaldoAnt, doc.ImpPagado, - doc.ImpSaldoInsoluto) + doc.ImpSaldoInsoluto, + doc.ObjetoImpuesto) + 'falta impuestos Next @@ -6748,13 +6933,13 @@ Public Class Timbrado ComPag.Pago(0).DoctoRelacionado(i).NumParcialidad = doc.NumParcialidad.ToString ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAntSpecified = True - ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAnt = doc.ImpSaldoAnt.ToDecimal + ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoAnt = doc.ImpSaldoAnt ComPag.Pago(0).DoctoRelacionado(i).ImpPagadoSpecified = True - ComPag.Pago(0).DoctoRelacionado(i).ImpPagado = doc.ImpPagado.ToDecimal + ComPag.Pago(0).DoctoRelacionado(i).ImpPagado = doc.ImpPagado ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsolutoSpecified = True - ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsoluto = doc.ImpSaldoInsoluto.ToDecimal + ComPag.Pago(0).DoctoRelacionado(i).ImpSaldoInsoluto = doc.ImpSaldoInsoluto i += 1 Next From 6ba6b23fe1c24602cbfb3249255b2cfd5a30ffb1 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 5 Mar 2022 14:08:42 -0700 Subject: [PATCH 02/15] =?UTF-8?q?--=20cambio=20en=20objeto=20cancelaci?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/IE.aspx.vb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 96ed401a4..b6d2a0315 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -4624,7 +4624,8 @@ Partial Class Bancos_IE End If Else - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) + If Resp.Verificado Then If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then CargaComplementosPago() @@ -6694,9 +6695,9 @@ Partial Class Bancos_IE End If Else + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) - - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then + If Resp.Verificado Then If ObjBanco.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then From 98254c021fb2bfe00584f4775881a640e42f4d18 Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Mon, 7 Mar 2022 06:14:07 -0700 Subject: [PATCH 03/15] --- App_Code/ClsEdocumentacion.vb | 19 +- App_Code/ClsPaginas.vb | 2 +- Documentacion/TableroMaterialidad.aspx | 860 +------- Documentacion/TableroMaterialidad.aspx.cs | 1762 +--------------- Documentacion/TableroMaterialidad2.aspx | 836 ++++++++ Documentacion/TableroMaterialidad2.aspx.cs | 1779 +++++++++++++++++ Documentacion/TableroMaterialidadDetalle.aspx | 4 +- RH/Personal.aspx | 2 +- vwd.webinfo | 4 + 9 files changed, 2742 insertions(+), 2526 deletions(-) create mode 100644 Documentacion/TableroMaterialidad2.aspx create mode 100644 Documentacion/TableroMaterialidad2.aspx.cs diff --git a/App_Code/ClsEdocumentacion.vb b/App_Code/ClsEdocumentacion.vb index a7c6401b3..576b6b90b 100644 --- a/App_Code/ClsEdocumentacion.vb +++ b/App_Code/ClsEdocumentacion.vb @@ -31,11 +31,22 @@ Public Class ClsEdocumentacion SqlAdapter.SelectCommand.Transaction = SqlTransacc End If Data = New DataTable - End Sub - - + End Sub + + +#End Region +#Region "materialidad" + + Public Function Materialidad_Tablero(cveEmpresa As Int32, anio As Int32, mes As Int32) As Boolean + Dim retorno As Boolean = False + DataAdapter("PA_Materialidad_TableroGET", CommandType.StoredProcedure) + addParameters("@CveEmpresa", SqlDbType.Int, cveEmpresa) + addParameters("@Anio", SqlDbType.Int, anio) + addParameters("@Mes", SqlDbType.Int, mes) + retorno = RunQuery("Ocurrió un error al obtener el Materialidad_Tablero.") + Return retorno + End Function #End Region - #Region "Propiedades" Public ReadOnly Property DSResultados() As DataSet Get diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 0726f8f60..996f5a829 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4264,7 +4264,7 @@ Public Class ClsPaginas PaginaDict.Add("/Nomina/ChecadorAsistencia.aspx".ToUpper(), 921) PaginaDict.Add("/Nomina/ISRCalculoAnual.aspx".ToUpper(), 918) PaginaDict.Add("/Nomina/MovimientosSUA.aspx".ToUpper(), 919) - 'PaginaDict.Add("/Nomina/Acumulados.aspx".ToUpper(), 916) + PaginaDict.Add("/Nomina/Acumulados.aspx".ToUpper(), 916) PaginaDict.Add("/RH/CalculoSBC.aspx".ToUpper(), 915) PaginaDict.Add("/Inicio.aspx".ToUpper(), -1) PaginaDict.Add("/reporteador.aspx".ToUpper(), -1) diff --git a/Documentacion/TableroMaterialidad.aspx b/Documentacion/TableroMaterialidad.aspx index b5874d606..69fbb1c06 100644 --- a/Documentacion/TableroMaterialidad.aspx +++ b/Documentacion/TableroMaterialidad.aspx @@ -1,92 +1,19 @@ <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="TableroMaterialidad.aspx.cs" Inherits="Documentacion_TableroMaterialidad" %> - + - - + - - Materialidad + - + - - - - -
  • - -
  • -
  • - Cargar Doctos - <%--Cargar Doctos--%> -
  • -
  • - Cargar XML PDF - <%--Cargar XML PDF--%> -
  • -
  • Enviar
  • -
    -
    + - + - - - + +
    @@ -98,13 +25,18 @@
    +
    Cliente:
    +
    + +
    Año:
    - +
    +
    MES:
    +
    -
    Mes:
    -
    @@ -130,707 +62,121 @@
    - - -
    - - - - - - - - - - - - - - <%-- class='Modulo5' - - - - - - - - - --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Cliente><%# DataBinder.Eval(Container.DataItem, "Documentacion") %>
    <%# String.Format("{0:dd/MM/yyyy} - {1:dd/MM/yyyy}", DataBinder.Eval(Container.DataItem, "InicioPeriodo"), DataBinder.Eval(Container.DataItem, "FinPeriodo")) %> <%# DataBinder.Eval(Container.DataItem, "Antiguedad") %> <%# DataBinder.Eval(Container.DataItem, "DiasVacaciones") %> <%# DataBinder.Eval(Container.DataItem, "Dias") %> <%# DataBinder.Eval(Container.DataItem, "DiasDisfrutados") %> <%# DataBinder.Eval(Container.DataItem, "DiasPrima") %>
    XML TimbradosPDF Timbrados - - - - - - -
    <%# string.Format("{1}",DataBinder.Eval(Container.DataItem, "CveCliente"),DataBinder.Eval(Container.DataItem, "NombreComercial")) %><%# - DataBinder.Eval( ((RepeaterItem)Container.Parent.Parent).DataItem ,string.Format("V_{0}",DataBinder.Eval(Container.DataItem, "CveDocumentacion"))).ToString() =="-1" ? "N/A": - string.Format("{0}", - (DataBinder.Eval( ((RepeaterItem)Container.Parent.Parent).DataItem ,string.Format("V_{0}",DataBinder.Eval(Container.DataItem, "CveDocumentacion"))).ToString() =="0"? - - - "No": - - - "Si") - - ,DataBinder.Eval(Container.DataItem, "CveDocumentacion"),DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "CveCliente") - ,DataBinder.Eval(Container.DataItem, "Documentacion"),DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "NombreComercial") - ) - - - %> - <%# string.Format("{1}/{0}",DataBinder.Eval(Container.DataItem, "Personal"),DataBinder.Eval(Container.DataItem, "PersonalXML"),DataBinder.Eval(Container.DataItem, "CveCliente"),anio,mes) %> - - <%# string.Format("{1}/{0}",DataBinder.Eval(Container.DataItem, "Personal"),DataBinder.Eval(Container.DataItem, "PersonalPDF"),DataBinder.Eval(Container.DataItem, "CveCliente"),anio,mes) %> - - - <%-- <%# string.Format("Enviar",DataBinder.Eval(Container.DataItem, "CveCliente"),anio,mes) %>--%> -
    - -
    +
    -
    - - Historial de envio +
    + + Materialidad informacion del periodo
    +
    + +
    +
    +
    +
    +
    +
    + +
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - -