From 0414862fcdbd9e9684370d507ec39fd3bc824a8b Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 12:59:03 -0700 Subject: [PATCH 01/16] timbrado 4.0, complementos de pago --- App_Code/CFDITimbre.vb | 29 +++++-- App_Code/ClsBancos.vb | 4 +- App_Code/Timbrado.vb | 189 +++++++++++++++++++++++++++-------------- 3 files changed, 148 insertions(+), 74 deletions(-) diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index e506f303e..68164a131 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -395,7 +395,8 @@ End Class 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 diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index 7ddc1e495..55ee851fb 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -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, diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 60a04e2e9..7e6a090c2 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -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 From 01ed3748d910f4f2c0449a9eecf92c758d0f74d5 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 13:11:57 -0700 Subject: [PATCH 02/16] -- cantidad minima --- OC/OC.aspx.vb | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index c8ecc8f12..ed899c1ce 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -2193,36 +2193,44 @@ Partial Class OC Dim TotalPS As Double = If(txtPrecioUnitario.Text.ToDouble > 0, (txtPrecioUnitario.Text.ToDouble * TxtCant.Text.ToDouble) - TxtDescuentoAdd.Text.ToDouble, 0) Dim ImportePS As Double = If(txtPrecioUnitario.Text.ToDouble > 0, txtPrecioUnitario.Text.ToDouble, 0) Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 + Dim CantidadVentaMinima As Decimal = DrPS("VentaMinima").ToString.ToDecimal + + If CantidadVentaMinima > 0 AndAlso TxtCant.Text.ToDecimal > 0 Then + If TxtCant.Text.ToDecimal Mod CantidadVentaMinima <> 0 Then + Alert(String.Format("El producto se vende solo en cantidades de {0:####.####}", CantidadVentaMinima)) + Exit Sub + End If + End If 'Si es Proveedor Extranjero el IVA es 0% If GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros($"CveProveedor = {DdlProveedores.SelectedValue} AND RFC = 'XEXX010101000'").Rows.Count = 1 Then - IvaPS = 0 - End If + IvaPS = 0 + End If - AddPS(TxtCant.Text, DdlP2.SelectedValue.ToEntero, DdlP2.SelectedText, TxtObsPS.Text, ImportePS, TxtDescuentoAdd.Text.ToDouble, TotalPS, + AddPS(TxtCant.Text, DdlP2.SelectedValue.ToEntero, DdlP2.SelectedText, TxtObsPS.Text, ImportePS, TxtDescuentoAdd.Text.ToDouble, TotalPS, CboUnidadMedida.SelectedValue.ToEntero, IvaPS, IEPSPS, IEPSPSIVA, DdlClasificacion.SelectedValue.ToEntero, CboUnidadMedida.SelectedItem.Text, DdlClasificacion.SelectedItem.Text, DdlProyecto.SelectedValue.ToEntero, Proyecto, DdlSubProyecto.SelectedValue.ToEntero, SubProyecto, LblCodigo.Text, HdnCveActivoFijo.Value.ToEntero, 0, CveOrdenCompraDetalle, CveOrdenCompra, IdCuentaPorEjercer, IdCuentaComprometido, DdlACGeneral1.SelectedValue.ToEntero, DdlACGeneral2.SelectedValue.ToEntero, DdlACGeneral3.SelectedValue.ToEntero, DdlACGeneral4.SelectedValue.ToEntero, DdlACGeneral5.SelectedValue.ToEntero, RetIVA, RetISR, CveCultivoCuadroDetalle:=DdlCultivosCuadro.SelectedValue.ToEntero, Cuadro:=DdlCultivosCuadro.SelectedItem.Text) - TxtCant.Text = "" - CboUnidadMedida.SelectedIndex = 0 - DdlClasificacion.SelectedIndex = 0 - DdlP2.SelectedValue = "-1" - DdlP2.SelectedText = "Seleccione un producto o servicio" - txtPrecioUnitario.Text = "" - TxtObsPS.Text = "" - HdnCveActivoFijo.Value = "" - LblCodigo.Text = "" - LblCvePOA.Text = "" - TxtCant.Focus() + TxtCant.Text = "" + CboUnidadMedida.SelectedIndex = 0 + DdlClasificacion.SelectedIndex = 0 + DdlP2.SelectedValue = "-1" + DdlP2.SelectedText = "Seleccione un producto o servicio" + txtPrecioUnitario.Text = "" + TxtObsPS.Text = "" + HdnCveActivoFijo.Value = "" + LblCodigo.Text = "" + LblCvePOA.Text = "" + TxtCant.Focus() - Total.Text = "0.00" - TxtDescuentoAdd.Text = "0.00" + Total.Text = "0.00" + TxtDescuentoAdd.Text = "0.00" - End If + End If - CargaSuperior() + CargaSuperior() CargaDatosDetalles() UPPDetalle.Update() From c643e602d938e84e7e42fb1c6a33d6b8d20090c0 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 13:41:28 -0700 Subject: [PATCH 03/16] -- fltrado de polizas --- Contabilidad/FiltraPolizas.aspx | 5 ++--- Contabilidad/FiltraPolizas.aspx.vb | 16 ---------------- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/Contabilidad/FiltraPolizas.aspx b/Contabilidad/FiltraPolizas.aspx index 9718d46b2..155ba2d57 100644 --- a/Contabilidad/FiltraPolizas.aspx +++ b/Contabilidad/FiltraPolizas.aspx @@ -21,8 +21,7 @@
  • Paquete Egresos
  • - - + @@ -71,7 +70,7 @@ - +
    diff --git a/Contabilidad/FiltraPolizas.aspx.vb b/Contabilidad/FiltraPolizas.aspx.vb index 08d83a34f..0c28e02e6 100644 --- a/Contabilidad/FiltraPolizas.aspx.vb +++ b/Contabilidad/FiltraPolizas.aspx.vb @@ -45,14 +45,8 @@ Partial Class Contabilidad_FiltraPolizas Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - - If Not Page.IsPostBack Then - - ContabilidadSIG = UsuarioActual.Empresa.UsaContabilidadSIG - - ViewState("Orden") = "" DdlPeriodo.SelectedValue = Now.Month.ToString TxtFechaICredito.Text = Now.FirstDayOfMonth.ToShortDateString @@ -87,9 +81,6 @@ Partial Class Contabilidad_FiltraPolizas Dim Ejercicio As Integer = DdlEjercicio.SelectedValue.ToString().ToEntero() Dim Periodo As Integer = DdlPeriodo.SelectedValue.ToString().ToEntero() - - - If ContabilidadSIG Then Dim ObjConta As New ClsContabilidad @@ -103,7 +94,6 @@ Partial Class Contabilidad_FiltraPolizas ObjConta.Dispose() - Else Dim ObjConta As New ClsContPAQi(UsuarioActual.Empresa) @@ -125,8 +115,6 @@ Partial Class Contabilidad_FiltraPolizas End If - - Gv.DataBind() UpDatos.Update() End Sub @@ -151,7 +139,6 @@ Partial Class Contabilidad_FiltraPolizas End If - DdlSegmentoNeg.DataBind() DdlSegmentoNeg.Items.Insert(0, New ListItem("Todos", "-1")) @@ -183,7 +170,6 @@ Partial Class Contabilidad_FiltraPolizas End If - DdlEjercicio.DataBind() DdlEjercicio.SelectedValueExist(UsuarioActual.Empresa.EjercicioActual.ToString) @@ -624,8 +610,6 @@ Partial Class Contabilidad_FiltraPolizas End If - - End If End Sub From 48ac1f7425df5e072339b4bada8582b53ba753cd Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 13:59:29 -0700 Subject: [PATCH 04/16] =?UTF-8?q?--=20cambios,=20se=20liminaron=20espacios?= =?UTF-8?q?=20en=20el=20c=C3=B3digo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contabilidad/FiltraPolizas.aspx.vb | 3 +++ Contabilidad/PolizasImpresion.aspx.vb | 21 ++++----------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/Contabilidad/FiltraPolizas.aspx.vb b/Contabilidad/FiltraPolizas.aspx.vb index 0c28e02e6..b1477c7c3 100644 --- a/Contabilidad/FiltraPolizas.aspx.vb +++ b/Contabilidad/FiltraPolizas.aspx.vb @@ -607,6 +607,9 @@ Partial Class Contabilidad_FiltraPolizas e.Row.Cells(2).Text = $"{e.Row.DataKey("Folio")}" e.Row.Cells(6).Text = $"" + Else + e.Row.Cells(2).Text = $"{e.Row.DataKey("Folio")}" + e.Row.Cells(6).Text = $"" End If diff --git a/Contabilidad/PolizasImpresion.aspx.vb b/Contabilidad/PolizasImpresion.aspx.vb index 900c7af9d..ad1f7f81f 100644 --- a/Contabilidad/PolizasImpresion.aspx.vb +++ b/Contabilidad/PolizasImpresion.aspx.vb @@ -9,8 +9,6 @@ Imports Microsoft.Reporting.WebForms Partial Class Contabilidad_PolizasImpresion Inherits ClsPaginas - - Public Property ContabilidadSIG As Boolean Get If ViewState("ContabilidadSIG") Is Nothing Then @@ -53,26 +51,22 @@ Partial Class Contabilidad_PolizasImpresion CargaCuentas() End If - - End If End Sub Private Sub BtnConsultar_click(sender As Object, args As EventArgs) Handles BtnConsultar.Click If ContabilidadSIG Then - ConsultaSIIG() + ConsultaSIG() Else ConsultaCONTPAQi() End If End Sub +#Region "SIG" - -#Region "SIIG" - - Private Sub ConsultaSIIG() + Private Sub ConsultaSIG() Dim foli As Integer = -1 Dim folf As Integer = -1 @@ -129,9 +123,7 @@ Partial Class Contabilidad_PolizasImpresion End Sub - - - Private Sub cargaddlpolizasSIG() + Private Sub CargaDdlPolizasSIG() Dim objcont As New ClsContabilidad If objcont.GetTiposPoliza(-1, "-1", UsuarioActual.CveEmpresa) Then ddlTipoPoliza.DataSource = objcont.DtResultados @@ -159,8 +151,6 @@ Partial Class Contabilidad_PolizasImpresion DdlCuenta.DataValueField = "CveCuenta" DdlCuenta.DataTextField = "CtaCodigo" - - Dim objconta As New ClsContabilidad If objconta.GetCuentas(-1, "-1", -1, UsuarioActual.CveEmpresa) Then DdlCuenta.DataSource = objconta.DtResultados @@ -276,7 +266,4 @@ Partial Class Contabilidad_PolizasImpresion #End Region - - - End Class From 2191b4db7959622eefae42b9c246350cd088288c Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 16:13:47 -0700 Subject: [PATCH 05/16] =?UTF-8?q?--=20descripci=C3=B3n=20de=20registro=20d?= =?UTF-8?q?e=20p=C3=B3liza=20virtual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/Ventas.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index beeb7be43..cbefbde0b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -32615,13 +32615,13 @@ Partial Class Ventas If resp(0)("Codigo").ToString().Contiene("500", "501", "502", "503", "504", "505", "506", "507", "508", "510") Then Retorno = True Dim ObjAcum As New ClsAcumuladores - If ObjAcum.UpdateEnvioPolizaVirutal(CvePolizaVirtual, True, Now, obj.product_unique_code) Then + If ObjAcum.UpdateEnvioPolizaVirtual(CvePolizaVirtual, True, Now, obj.product_unique_code, resp(0)("Descripcion").ToString()) Then Alert(Msg.ToString(), TipoMensaje.MsgInformacion) End If ObjAcum.Dispose() Else Dim ObjAcum As New ClsAcumuladores - If ObjAcum.UpdateEnvioPolizaVirutal(CvePolizaVirtual, False, Now, obj.product_unique_code) Then + If ObjAcum.UpdateEnvioPolizaVirtual(CvePolizaVirtual, False, Now, obj.product_unique_code, resp(0)("Descripcion").ToString()) Then Alert(Msg.ToString(), TipoMensaje.MsgAdvertencia) End If ObjAcum.Dispose() From 3ec957fb77e1207a18a5d764b5234cae22e852c3 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Mon, 7 Mar 2022 18:28:41 -0700 Subject: [PATCH 06/16] RepOrigen Aplicacion , seleimina PolizasImpresion.aspx de contabilidad 2 --- App_Code/ClsContabilidad.vb | 24 +++++ App_Code/ClsPaginas.vb | 1 - Contabilidad/RepOrigenAplicacion.aspx | 10 ++ Contabilidad/RepOrigenAplicacion.aspx.vb | 60 +++++++++--- Contabilidad2/PolizasImpresion.aspx | 116 ----------------------- Contabilidad2/PolizasImpresion.aspx.vb | 111 ---------------------- vwd.webinfo | 2 + 7 files changed, 85 insertions(+), 239 deletions(-) delete mode 100644 Contabilidad2/PolizasImpresion.aspx delete mode 100644 Contabilidad2/PolizasImpresion.aspx.vb diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 1fa789d2c..4add4e889 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -6629,6 +6629,30 @@ Public Class ClsContabilidad End Function + Public Function GetRepOrigenAplicacion(FechaFin As Date, CveEmpresa As Integer) As Boolean + Dim Respuesta As Boolean = False + + DataAdapter("PA_Conta_RepOrigenAplicacionGet2") + + With SqlAdapter.SelectCommand.Parameters + + .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + + + End With + Try + SqlAdapter.Fill(Data) + Respuesta = True + Catch ex As Exception + Me.OnError("Ocurrió un error al obtener el reporte", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Respuesta + + End Function + + #Region "IDisposable Support" ' IDisposable Protected Overridable Sub Dispose(disposing As Boolean) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index d921cbd71..a2c0e9929 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4863,7 +4863,6 @@ Public Class ClsPaginas 'PaginaDict.Add("/Contabilidad2/RepBalanceGeneral.aspx".ToUpper(), 530) PaginaDict.Add("/Contabilidad2/CatCuentasAsignaciones.aspx".ToUpper(), 724) PaginaDict.Add("/Contabilidad2/CatContaEjercicios.aspx".ToUpper(), 725) - PaginaDict.Add("/Contabilidad2/PolizasImpresion.aspx".ToUpper(), 726) PaginaDict.Add("/Contabilidad2/RepEstadoResultadosHorizontal.aspx".ToUpper(), 420) PaginaDict.Add("/Contabilidad2/RepAnexoCatalogoMensualHorizontal.aspx".ToUpper(), -1) diff --git a/Contabilidad/RepOrigenAplicacion.aspx b/Contabilidad/RepOrigenAplicacion.aspx index a5a43cbde..68b37fb1b 100644 --- a/Contabilidad/RepOrigenAplicacion.aspx +++ b/Contabilidad/RepOrigenAplicacion.aspx @@ -1,6 +1,16 @@ <%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepOrigenAplicacion.aspx.vb" Inherits="Contabilidad_RepOrigenAplicacion" %> + + +
  • + +
  • +
    + + + +
    diff --git a/Contabilidad/RepOrigenAplicacion.aspx.vb b/Contabilidad/RepOrigenAplicacion.aspx.vb index 8da89fb33..b5b3bf848 100644 --- a/Contabilidad/RepOrigenAplicacion.aspx.vb +++ b/Contabilidad/RepOrigenAplicacion.aspx.vb @@ -81,6 +81,16 @@ Partial Class Contabilidad_RepOrigenAplicacion TabContainer_ActiveTabChanged(TabContainer, EventArgs.Empty) + + If UsuarioActual.Empresa.UsaContabilidadSIG Then + + TabMensual.Enabled = False + TabAnual.Enabled = False + TdFI.Visible = False + tdTipoReporte.Visible = False + + End If + End If End Sub @@ -139,23 +149,48 @@ Partial Class Contabilidad_RepOrigenAplicacion #Region " NORMAL " Private Sub CargaDatos() - Dim ObjConta As New ClsContPAQi(UsuarioActual.Empresa) - Dim FechaInicio = If(TxtFechaDel.Text = "" Or TxtFechaDel.Text = "__/__/____", Date.Now, TxtFechaDel.Text.ToDate) - Dim FechaFin = If(TxtFechaAl.Text = "" Or TxtFechaAl.Text = "__/__/____", Date.Now, TxtFechaAl.Text.ToDate) - If ObjConta.GetOrigenAplicacion(FechaInicio, FechaFin) Then - DtDatos = ObjConta.DtResultados + LnkExcel.Visible = False + + If UsuarioActual.Empresa.UsaContabilidadSIG Then + Dim ObjConta As New ClsContabilidad + + If ObjConta.GetRepOrigenAplicacion(TxtFechaAl.Text.ToDate, UsuarioActual.CveEmpresa) Then + GvDatos.DataSource = ObjConta.DtResultados + + If ObjConta.DtResultados.Rows.Count > 0 Then + LnkExcel.Visible = True + End If + Else + GvDatos.DataSource = Nothing + End If + ObjConta.Dispose() + GvDatos.DataBind() + Else - DtDatos = Nothing - Alert("Ocurrio un error al cargar los datos de origen y aplicación", TipoMensaje.MsgError) - End If - ObjConta.Dispose() + + Dim ObjConta As New ClsContPAQi(UsuarioActual.Empresa) + + Dim FechaInicio = If(TxtFechaDel.Text = "" Or TxtFechaDel.Text = "__/__/____", Date.Now, TxtFechaDel.Text.ToDate) + Dim FechaFin = If(TxtFechaAl.Text = "" Or TxtFechaAl.Text = "__/__/____", Date.Now, TxtFechaAl.Text.ToDate) + + If ObjConta.GetOrigenAplicacion(FechaInicio, FechaFin) Then + DtDatos = ObjConta.DtResultados - If DtDatos IsNot Nothing Then - CargaGrid() + Else + DtDatos = Nothing + Alert("Ocurrio un error al cargar los datos de origen y aplicación", TipoMensaje.MsgError) + End If + ObjConta.Dispose() + + + If DtDatos IsNot Nothing Then + CargaGrid() + End If End If + End Sub Private Sub CargaGrid() @@ -334,4 +369,7 @@ Partial Class Contabilidad_RepOrigenAplicacion #End Region + Protected Sub LnkExcel_Click(sender As Object, e As EventArgs) + GvDatos.ExportToExcel2("RepOrigenAplicacion.xlsx") + End Sub End Class diff --git a/Contabilidad2/PolizasImpresion.aspx b/Contabilidad2/PolizasImpresion.aspx deleted file mode 100644 index 7664693c0..000000000 --- a/Contabilidad2/PolizasImpresion.aspx +++ /dev/null @@ -1,116 +0,0 @@ -<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="PolizasImpresion.aspx.vb" Inherits="Contabilidad2_PolizasImpresion" %> - - - - - - - - - - - - - -
    -
    -
    - -
    -
    -
    - -
    - -
    - - - - - - - - - - -
    -
    - -
    - -
    - - - - - - - - - - -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    - -
    - - - - - - - -
    - - -
    - - - - - -
    - -
    - -
    -
    -
    - -
    - - - diff --git a/Contabilidad2/PolizasImpresion.aspx.vb b/Contabilidad2/PolizasImpresion.aspx.vb deleted file mode 100644 index 1260c2550..000000000 --- a/Contabilidad2/PolizasImpresion.aspx.vb +++ /dev/null @@ -1,111 +0,0 @@ -Option Explicit On -Option Strict On - -Imports System.Data -Imports Extensiones -Imports System.Activities.Statements -Imports Microsoft.Reporting.WebForms - -Partial Class Contabilidad2_PolizasImpresion - Inherits ClsPaginas - - - Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.LoadComplete - If Not IsPostBack Then - TxtFechaInicio.Text = Now.AddDays(-1).ToShortDateString - TxtFechaFin.Text = Now.ToShortDateString - - DdlUsuarioRegistro.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) - DdlUsuarioRegistro.DataBind() - cargaddlpolizas() - CargaSubProyectos() - CargaCuentas() - End If - End Sub - Private Sub BtnConsultar_click(sender As Object, args As EventArgs) Handles BtnConsultar.Click - Dim foli As Integer = -1 - Dim folf As Integer = -1 - If Not FolioInicio.Text = "" Then - foli = FolioInicio.Text.ToEntero() - End If - If Not FolioFin.Text = "" Then - folf = FolioFin.Text.ToEntero() - End If - - Dim ArchivoReporte As String = "Empresas/Grales/Formatos/Polizas.rdlc" - - If IO.File.Exists(String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta)) Then - ArchivoReporte = String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta) - End If - - Dim ObjConta As New ClsContabilidad - If ObjConta.GetPrePolizasImpresion(UsuarioActual.CveEmpresa, TxtFechaInicio.Text.ToDate, TxtFechaFin.Text.ToDate, CveTipoPoliza:=ddlTipoPoliza.SelectedValue.ToEntero, FolioI:=foli, - FolioF:=folf, CveUsuario:=DdlUsuarioRegistro.SelectedValue.ToEntero, CveSubProyecto:=DdlSubProyectos.SelectedValue.ToEntero, - CveCuenta:=DdlCuenta.SelectedValue.ToEntero, CvePlantillaPoliza:=DdlGrupoPlantilla.SelectedValue.ToEntero, - CveTipoProveedor:=DdlTipoProveedor.SelectedValue.ToEntero) Then - If ObjConta.DtResultados.Rows.Count < 10000 Then - - If ObjConta.DtResultados.Rows.Count > 0 Then - Dim dr As DataRow - dr = ObjConta.DtResultados.Rows(0) - Dim params As New List(Of ReportParameter) - params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) - params.Add(New ReportParameter("TipoPoliza", dr("TipoPoliza").ToString)) - params.Add(New ReportParameter("Finicio", TxtFechaInicio.Text)) - params.Add(New ReportParameter("FFin", TxtFechaFin.Text)) - params.Add(New ReportParameter("Fecha", dr("Fecha").ToString.ToDate.ToShortDateString)) - 'params.Add(New ReportParameter("Nombre", dr("Cuenta").ToString)) - 'params.Add(New ReportParameter("Cuenta", dr("Codigo").ToString)) - params.Add(New ReportParameter("Numero", dr("Folio").ToString)) - params.Add(New ReportParameter("Moneda", "")) - params.Add(New ReportParameter("CodigoPostal", "")) - - If UsuarioActual.CveEmpresa = 119 Then - params.Add(New ReportParameter("UsuarioRegistro", dr("NombreUsuario").ToString)) - End If - - ImprimirPDF(ArchivoReporte, ObjConta.DtResultados, params) - - Else - Alert("Los Filtros Actuales no contienen datos") - End If - - Else - Alert("Los Filtros Actuales contienen muchos datos") - End If - End If - ObjConta.Dispose() - - End Sub - Private Sub cargaddlpolizas() - Dim objcont As New ClsContabilidad - If objcont.GetTiposPoliza(-1, "-1", UsuarioActual.CveEmpresa) Then - ddlTipoPoliza.DataSource = objcont.DtResultados - ddlTipoPoliza.DataBind() - ddlTipoPoliza.Items.Insert(0, New ListItem("Todos", "-1")) - - End If - objcont.Dispose() - DdlUsuarioRegistro.Items.Insert(0, New ListItem("Todos", "-1")) - End Sub - - Private Sub CargaSubProyectos() - DdlSubProyectos.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) - DdlSubProyectos.DataBind() - DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) - DdlSubProyectos.Items.Insert(1, New ListItem("Sin Asignar", "-2")) - End Sub - - Private Sub CargaCuentas() - - Dim objconta As New ClsContabilidad - If objconta.GetCuentas(-1, "-1", -1, UsuarioActual.CveEmpresa) Then - DdlCuenta.DataSource = objconta.DtResultados - End If - objconta.Dispose() - DdlCuenta.DataBind() - - DdlCuenta.Items.Insert(0, New ListItem("Todos", "-1")) - End Sub - -End Class diff --git a/vwd.webinfo b/vwd.webinfo index 79e6f2494..3743f868d 100644 --- a/vwd.webinfo +++ b/vwd.webinfo @@ -440,6 +440,8 @@ + + From b2db474fef2e372a4b024300dcf8f9c489185645 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 18:40:36 -0700 Subject: [PATCH 07/16] -- timbrado complementos de pago pac 4 --- App_Code/CFDITimbre.vb | 56 +++++++++++++++++------------ App_Code/Timbrado.vb | 81 +++++++++++++++++++++++++++++------------- 2 files changed, 89 insertions(+), 48 deletions(-) diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index 68164a131..85197ff2d 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -453,6 +453,22 @@ Public Class CFDIComplementoPagos Public Property SelloPago As String = "" Public Property DocumentosRelacionados As List(Of CFDIComplementoPagosDocsRelacionados) Public Property Impuestos As List(Of CFDIConceptosImpuestos) + Public ReadOnly Property Totales As CFDIComplementoPagosTotales + Get + Dim tRetorno As New CFDIComplementoPagosTotales + tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagado).Sum() + + tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Base).Sum() + tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Base).Sum() + tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.Base).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() + + Return tRetorno + End Get + End Property Public ReadOnly Property TotalImpuestosRetenidos As Decimal Get @@ -470,29 +486,6 @@ 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 - Select c.ImpPagado).Sum() - End Get - End Property - - - Sub New() DocumentosRelacionados = New List(Of CFDIComplementoPagosDocsRelacionados) @@ -577,6 +570,23 @@ Public Class CFDIComplementoPagosDocsRelacionados End Class + +Public Class CFDIComplementoPagosTotales + Public Property MontoTotalPagos As Decimal = 0 + Public Property TotalTrasladosBaseIVA16 As Decimal = 0 + Public Property TotalTrasladosImpuestoIVA16 As Decimal = 0 + Public Property TotalTrasladosBaseIVA8 As Decimal = 0 + Public Property TotalTrasladosImpuestoIVA8 As Decimal = 0 + Public Property TotalTrasladosBaseIVA0 As Decimal = 0 + Public Property TotalTrasladosImpuestoIVA0 As Decimal = 0 + Public Property TotalTrasladosBaseExento As Decimal = 0 + Public Property TotalRetencionesIVA As Decimal = 0 + Public Property TotalRetencionesISR As Decimal = 0 + Public Property TotalRetencionesIEPS As Decimal = 0 + +End Class + + Public Class CFDIComercioExterior11 Public Property MotivoTraslado As String diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 7e6a090c2..028059683 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -4090,19 +4090,20 @@ Public Class Timbrado 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.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos + + Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16 Totales.TotalTrasladosBaseIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0 - Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.16D, "Impuesto").RoundSQL + Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16.RoundSQL Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0 - Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.08D, "Base") + Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8 Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0 - Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.08D, "Impuesto").RoundSQL + Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8.RoundSQL Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0 - Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados("002", 0.00D, "Base") + Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0 Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 Totales.TotalTrasladosImpuestoIVA0 = 0 Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 @@ -5029,6 +5030,9 @@ 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 cfdi.Receptor(ObjCFDITimbre.Receptor.RFC, ObjCFDITimbre.Receptor.Nombre, ObjCFDITimbre.Receptor.DomicilioFiscalReceptor, ObjCFDITimbre.Receptor.ResidenciaFiscal, ObjCFDITimbre.Receptor.NumeroRegistroTributario, ObjCFDITimbre.Receptor.RegimenFiscalReceptor, ObjCFDITimbre.Receptor.UsoCFDI) @@ -5284,7 +5288,18 @@ 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.Pago20Totales(ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIVA, + ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesISR, + ObjCFDITimbre.ComplementoPagos.Totales.TotalRetencionesIEPS, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA8, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA0, + ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseExento, + ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos) cfdi.Pago20(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"), ObjCFDITimbre.ComplementoPagos.FormaDePagoP, @@ -5317,31 +5332,47 @@ Public Class Timbrado doc.ImpPagado, doc.ImpSaldoInsoluto, doc.ObjetoImpuesto) - 'falta impuestos + If doc.Impuestos IsNot Nothing Then + + ''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") + + If docimp.TrasladooRetencion = "T" Then + cfdi.Pago20TrasladoDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe) + 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") + If docimp.TrasladooRetencion = "R" Then + cfdi.Pago20RetencionDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe) + End If + j += 1 + Next + End If + End If Next - 'Estos impuestos aplicarían para anticipos - If ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then - - cfdi.PagoImpuestos(ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos, ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados) - If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then - For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R") - cfdi.PagoRetencion(Ret.Impuesto, Ret.Importe) - Next - End If - If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then - For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T") - cfdi.PagoTraslado(Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe) - Next - End If + 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) + Next End If - - + If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then + For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones + cfdi.Pago20RetencionP(Ret.Impuesto, Ret.Importe) + Next + End If End If - End If #End Region From 3d05843dc8161bc6c10887447c17bdc30846048f Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 18:40:46 -0700 Subject: [PATCH 08/16] -- filtro tipo dato --- App_Code/ClsContabilidad.vb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 1fa789d2c..0c79bc652 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -5807,7 +5807,7 @@ Public Class ClsContabilidad Public Function AddCuentasAsignaciones(Optional CveConceptoContable As Integer = -1, Optional CveEmpresa As Integer = -1, Optional CveCuenta As Integer = -1, Optional IdCtaContable As Integer = -1, Optional CveProveedor As Integer = -1, Optional CveCliente As Integer = -1, Optional CvePersonal As Integer = -1, Optional CveClasificacion As Integer = -1, Optional CveAlmacen As Integer = -1, Optional PorcentajeIVA As Decimal = -1, Optional CveConceptoNomina As Decimal = -1, Optional CveBancoCuenta As Integer = -1, - Optional CveSubProyecto As Integer = -1, Optional CveActivoFijo As Integer = -1) As Boolean + Optional CveSubProyecto As Integer = -1, Optional CveActivoFijo As Integer = -1, Optional CveTipoGasto As Integer = -1) As Boolean Dim Retorno = False DataAdapter("PA_Conta_CuentasAsignacionesAdd") @@ -5827,6 +5827,7 @@ Public Class ClsContabilidad .Add("@CveBancoCuenta", SqlDbType.Int).Value = CveBancoCuenta .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo + .Add("@CveTipoGasto", SqlDbType.Int).Value = CveTipoGasto End With Try @@ -5862,7 +5863,7 @@ Public Class ClsContabilidad Optional IdCtaContable As Integer = -1, Optional CveProveedor As Integer = -1, Optional CveCliente As Integer = -1, Optional CvePersonal As Integer = -1, Optional CveClasificacion As Integer = -1, Optional CveAlmacen As Integer = -1, Optional PorcentajeIVA As Decimal = -1, Optional CveConceptoNomina As Decimal = -1, Optional CveBancoCuenta As Integer = -1, - Optional CveSubProyecto As Integer = -1, Optional CveActivoFijo As Integer = -1) As Boolean + Optional CveSubProyecto As Integer = -1, Optional CveActivoFijo As Integer = -1, Optional CveTipoGasto As Integer = -1) As Boolean Dim Retorno = False DataAdapter("PA_Conta_CuentasAsignacionesUpdate") @@ -5882,6 +5883,7 @@ Public Class ClsContabilidad .Add("@CveBancoCuenta", SqlDbType.Int).Value = CveBancoCuenta .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo + .Add("@CveTipoGasto", SqlDbType.Int).Value = CveTipoGasto End With Try From 6ecdefcbf9704d294ef2d51cce237c5e71460ac4 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 18:41:09 -0700 Subject: [PATCH 09/16] =?UTF-8?q?--=20mejoras=20pago=20s=20en=20d=C3=B3lar?= =?UTF-8?q?es=20sobre=20pesos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/PagoAcreedor.aspx | 13 ++++---- Bancos/PagoAcreedor.aspx.cs | 64 ++++++++++++++++++++++++------------- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/Bancos/PagoAcreedor.aspx b/Bancos/PagoAcreedor.aspx index 7905f115d..aac7ecfc0 100644 --- a/Bancos/PagoAcreedor.aspx +++ b/Bancos/PagoAcreedor.aspx @@ -101,7 +101,7 @@
    - +
    @@ -664,7 +664,7 @@ if (textBoxes[i].id.indexOf('C_Tab_TabPago_GvMovAcreedor_TxtComision') >= 0) { if (textBoxes[i].value != '') { - Comision = parseFloat(Comision) + parseFloat(textBoxes[i].value.split(',').join('')); + Comision = parseFloat(Comision) + ToDouble(textBoxes[i].value); } } @@ -673,16 +673,15 @@ idd = textBoxes[i].id.replace('C_Tab_TabPago_GvMovAcreedor_TxtAbonar_', ''); Facturas = Facturas + (Importe == 0 ? '' : ', ') + $get("C_Tab_TabPago_GvMovAcreedor_HplF_" + idd).innerText; if (CveMoneda == 2 && CveMonedaPago == 1) { - Importe = parseFloat(Importe) + (parseFloat($get('TxtTCPago').value) * parseFloat(textBoxes[i].value.split(',').join(''))); + Importe = parseFloat(Importe) + (parseFloat($get('TxtTCPago').value) * ToDouble(textBoxes[i].value)); } else if (CveMoneda == 1 && CveMonedaPago == 2) { - Importe = parseFloat(Importe) + (parseFloat($get('TxtTCPago').value) / parseFloat(textBoxes[i].value.split(',').join(''))); + Importe = parseFloat(Importe) + (ToDouble(textBoxes[i].value) / ToDouble($get('TxtTCPago').value)); } else if ((CveMoneda == 1 && CveMonedaPago == 1) || (CveMoneda == 2 && CveMonedaPago == 2)) { - Importe = parseFloat(Importe) + parseFloat(textBoxes[i].value.split(',').join('')); - } + Importe = parseFloat(Importe) + ToDouble(textBoxes[i].value); + } } } } - } if (!Facturas == '') { diff --git a/Bancos/PagoAcreedor.aspx.cs b/Bancos/PagoAcreedor.aspx.cs index 56fa5710f..9ec719505 100644 --- a/Bancos/PagoAcreedor.aspx.cs +++ b/Bancos/PagoAcreedor.aspx.cs @@ -277,7 +277,7 @@ public partial class Bancos_PagoAcreedor : ClsPaginas int CveConceptoContablePrestamoComplementario = 202; int CvePlantillaPoliza = 21; int CvePrePoliza = 0; - int CveMoneda = get_GlobalDTBancosCuentas(-1, CveEmpresa: UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCuenta = {DdlCuenta.SelectedValue.ToEntero()}").ToEntero(); + int CveMonedaPago = get_GlobalDTBancosCuentas(-1, CveEmpresa: UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCuenta = {DdlCuenta.SelectedValue.ToEntero()}").ToEntero(); int FolioFijo = 0; int IDPoliza = 0; StringBuilder Msg = new StringBuilder(); @@ -300,7 +300,7 @@ public partial class Bancos_PagoAcreedor : ClsPaginas // DATOS PREPOLIZA if ( DdlTipoTransaccion.SelectedValue == "1" && UsuarioActual.CveEmpresa != 119) FolioFijo = TxtFolio.Text.ToEntero(); - CvePrePoliza = ObjMov.AddPrePolizas("Bancos/IE PAGO ACRREDORES", CvePlantillaPoliza, TxtImporte.Text.Trim().ToDouble(), TxtImporte.Text.Trim().ToDouble(), CveMoneda, TxtFechaDocumento.Text.ToDate(), DdlProveedores.SelectedText.ToString(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo: FolioFijo, ReglaFolioPoliza: ObjComp.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, null, UsuarioActual.CveEmpresa), CveTipoPoliza: ObjMov.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, "-1", UsuarioActual.CveEmpresa)); + CvePrePoliza = ObjMov.AddPrePolizas("Bancos/IE PAGO ACRREDORES", CvePlantillaPoliza, TxtImporte.Text.Trim().ToDouble(), TxtImporte.Text.Trim().ToDouble(), CveMonedaPago, TxtFechaDocumento.Text.ToDate(), DdlProveedores.SelectedText.ToString(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo: FolioFijo, ReglaFolioPoliza: ObjComp.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, null, UsuarioActual.CveEmpresa), CveTipoPoliza: ObjMov.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, "-1", UsuarioActual.CveEmpresa)); if (CvePrePoliza > 0) { @@ -311,7 +311,7 @@ public partial class Bancos_PagoAcreedor : ClsPaginas string Conc = TxtObservaciones.Text == "" ? TxtFolio.Text : TxtObservaciones.Text; string Ref = TxtObservaciones.Text == "" ? TxtFolio.Text : TxtObservaciones.Text; - CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero(), DdlTipoTransaccion.SelectedValue.ToEntero(), TxtFechaDocumento.Text.Trim().ToDate(), TxtFolio.Text.Trim(), DdlProveedores.SelectedText.ToString(), ImporteBanco.ToString().ToDouble(), CveMoneda, + CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero(), DdlTipoTransaccion.SelectedValue.ToEntero(), TxtFechaDocumento.Text.Trim().ToDate(), TxtFolio.Text.Trim(), DdlProveedores.SelectedText.ToString(), ImporteBanco.ToString().ToDouble(), CveMonedaPago, TCPago.ToString().ToDouble(), TxtObservaciones.Text.Trim(), "", ChkAbonoCuenta.Checked, false, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa); @@ -327,6 +327,7 @@ public partial class Bancos_PagoAcreedor : ClsPaginas decimal ImporteMN; decimal ImporteComision; decimal ImporteComisionMN; + decimal AcumImporteMN = 0; bool TipoMovtoComision = false; int IdCtaContableOtrosGastos = 0; @@ -364,18 +365,18 @@ public partial class Bancos_PagoAcreedor : ClsPaginas if (gvr.FCCheckBox("Chk").Checked) { int tCveMoneda = gvr.DataKey("CveMoneda").ToEntero(); - if (CveMoneda == 1 && tCveMoneda == 1) + if (CveMonedaPago == 1 && tCveMoneda == 1) { ImporteMN = Importe; ImporteComisionMN = ImporteComision; } - else if (CveMoneda == 1 && tCveMoneda == 2) + else if (CveMonedaPago == 1 && tCveMoneda == 2) { ImporteComisionMN = ImporteComision; if (UsaComplementaria) { ImporteMN = Importe; - ImporteComplementaria = Importe * TC - Importe; + ImporteComplementaria = (Importe * TC - Importe).RoundSQL(); } else { @@ -383,33 +384,32 @@ public partial class Bancos_PagoAcreedor : ClsPaginas ImporteComplementaria = 0; } } - else if (CveMoneda == 2 && tCveMoneda == 1) + else if (CveMonedaPago == 2 && tCveMoneda == 1) { ImporteMN = Importe; ImporteComisionMN = ImporteComision; } - else if (CveMoneda == 2 && tCveMoneda == 2) + else if (CveMonedaPago == 2 && tCveMoneda == 2) { ImporteComisionMN = ImporteComision; if (UsaComplementaria) { ImporteMN = Importe; - ImporteComplementaria = Importe * TC - Importe; + ImporteComplementaria = (Importe * TC - Importe).RoundSQL(); } else { - ImporteMN = Importe * TC; + ImporteMN = (Importe * TC).RoundSQL(); ImporteComplementaria = 0; } } - ImporteMN = Math.Round(ImporteMN, 2, MidpointRounding.AwayFromZero); - ImporteComplementaria = Math.Round(ImporteComplementaria, 2, MidpointRounding.AwayFromZero); - ImporteComisionMN = Math.Round(ImporteComisionMN, 2, MidpointRounding.AwayFromZero); - ImporteComision = Math.Round(ImporteComision, 2, MidpointRounding.AwayFromZero); - - + ImporteMN = ImporteMN.RoundSQL(); + ImporteComplementaria = ImporteComplementaria.RoundSQL(); + ImporteComisionMN = ImporteComisionMN.RoundSQL(); + ImporteComision = ImporteComision.RoundSQL(); + AcumImporteMN += ImporteMN; if (tCveMoneda != 1) { @@ -477,18 +477,19 @@ public partial class Bancos_PagoAcreedor : ClsPaginas } - if (CveMoneda != 1) + if (CveMonedaPago != 1) { if (UsaComplementaria) { ImporteMNBanco = ImporteBanco; - ImporteComplementaria = ImporteBanco * TCPago - ImporteBanco; + ImporteComplementaria = (ImporteBanco * TCPago - ImporteBanco).RoundSQL(); } else { - ImporteMNBanco = ImporteBanco * TCPago; + ImporteMNBanco = (ImporteBanco * TCPago).RoundSQL(); ImporteComplementaria = 0; - } + } + } if (!ObjMov.AddPrePolizasDetalle(CvePrePoliza, true, ImporteBanco, Ref, CveConceptoContableBanco, Conc, DateTime.Now, IDCtaContableBancos, -1, CveIE, CveProveedor: DdlProveedores.SelectedValue.ToEntero(), ImporteMX: ImporteMNBanco, ImporteME: ImporteBanco, TipoCambio: TCPago, TipoCambioPago: TCPago, CveSubProyecto: DdlSubProyecto.SelectedValue.ToEntero())) @@ -496,12 +497,30 @@ public partial class Bancos_PagoAcreedor : ClsPaginas MsgError = "No se pudo insertar concepto de bancos"; } - if (CveMoneda != 1 && UsaComplementaria) + if (CveMonedaPago != 1 && UsaComplementaria) { if (!ObjMov.AddPrePolizasDetalle(CvePrePoliza, true, ImporteBanco, Ref, CveConceptoContableBancoComplementario, Conc, DateTime.Now, IDCtaContableBancosComplementario, -1, CveIE, CveProveedor: DdlProveedores.SelectedValue.ToEntero(), ImporteMX: ImporteComplementaria, ImporteME: ImporteBanco, TipoCambio: TCPago, TipoCambioPago: TCPago, CveSubProyecto: DdlSubProyecto.SelectedValue.ToEntero())) { MsgError = "No se pudo insertar concepto de bancos complementaria"; } + if (AcumImporteMN!=(ImporteBanco + ImporteComplementaria)) { + int tCveConceptoOtIngresos = 0; + bool TipoMovtoOt = false; + decimal Dif = AcumImporteMN - (ImporteBanco + ImporteComplementaria); + if (Dif < 0) + { + tCveConceptoOtIngresos = 211; TipoMovtoOt = false; + } + else + { + tCveConceptoOtIngresos = 78; TipoMovtoOt = true; + } + + if (!ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoOt, Dif.Abs(), Ref, tCveConceptoOtIngresos, Conc, DateTime.Now, 0, -1, CveIE, CveProveedor: DdlProveedores.SelectedValue.ToEntero(), ImporteMX: Dif.Abs(), ImporteME: Dif.Abs(), TipoCambio: TCPago, TipoCambioPago: TCPago, CveSubProyecto: DdlSubProyecto.SelectedValue.ToEntero())) + { + MsgError = "No se pudo insertar concepto de ajuste en redondeo"; + } + } } } @@ -556,7 +575,8 @@ public partial class Bancos_PagoAcreedor : ClsPaginas { if (Msg.ToString().Equals("")) { - Msg.Append("El Documento se guardo correctamente"); + Msg.AppendFormat("El Documento se guardo correctamente. Folio {1}
    ", CveIE, ObjIE.Folio); + } System.IO.FileInfo archivo = null; From 2bcfb11dfe67fb6e1bff8caa57e255a29c782744 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 7 Mar 2022 18:42:02 -0700 Subject: [PATCH 10/16] -- mejoras PAC 4. timbrado complementos de pago --- Bin/GoCfdi.dll | Bin 500224 -> 506880 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Bin/GoCfdi.dll b/Bin/GoCfdi.dll index 84f2dafe45f0192d3b21f362a85809a5f7aa2965..c944593308e94b189b0fbf748bbb1461438dfe3c 100644 GIT binary patch delta 107344 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 vrT&FNJFG{yY0p^xo!SM Date: Tue, 8 Mar 2022 06:27:02 -0700 Subject: [PATCH 11/16] mejoras para transferncias a cajas chicas --- Bancos/Transferencias.aspx | 5 +++++ Bancos/Transferencias.aspx.vb | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/Bancos/Transferencias.aspx b/Bancos/Transferencias.aspx index 97258648e..f54a0a1ee 100644 --- a/Bancos/Transferencias.aspx +++ b/Bancos/Transferencias.aspx @@ -124,6 +124,11 @@ + + Paguese + + + Observaciones: diff --git a/Bancos/Transferencias.aspx.vb b/Bancos/Transferencias.aspx.vb index 1cdd89b8e..adcf61749 100644 --- a/Bancos/Transferencias.aspx.vb +++ b/Bancos/Transferencias.aspx.vb @@ -283,6 +283,14 @@ Partial Class Bancos_Transferencias CveIE = ObjIE.AddBancos_IE(DdlCuentaDestino.SelectedValue.ToEntero, DdlTipoMovto.SelectedValue.ToEntero, TxtFechaDocumento.Text.Trim.ToDate, TxtFolio.Text.Trim, CuentaDestino, ImporteMXOrigen, CveMonedaOrigen, TipoCambio, Observaciones, "", False, False, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) CveIEDestino = CveIE Else + If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then + FolioDestino = TxtFolio.Text.Trim + If TxtPaguese.Text.Trim <> "" Then + CuentaDestino = TxtPaguese.Text.Trim + End If + + End If + CveIE = ObjIE.AddBancos_IE(DdlCuentaOrigen.SelectedValue.ToEntero, DdlTipoMovto.SelectedValue.ToEntero, TxtFechaDocumento.Text.Trim.ToDate, TxtFolio.Text.Trim, CuentaDestino, TxtImporte.Text.Trim.ToDouble, CveMonedaOrigen, TipoCambio, TxtObservaciones.Text.Trim, "", False, False, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) CveIEDestino = ObjIE.AddBancos_IE(DdlCuentaDestino.SelectedValue.ToEntero, If(DdlTipoMovto.SelectedValue = "2", 8, 3), TxtFechaDocumento.Text.Trim.ToDate, FolioDestino, String.Format("Transferencia Cta: {0}", DdlCuentaOrigen.SelectedItem.Text), ImporteDestino, CveMonedaDestino, TipoCambio, TxtObservaciones.Text.Trim, "", False, False, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) End If From 5565150f33dd82978ff6e55edf35c5e50dcd3dad Mon Sep 17 00:00:00 2001 From: rakcsle Date: Tue, 8 Mar 2022 13:10:03 -0700 Subject: [PATCH 12/16] Ie correcion concepto 3 sin venta, se cambia por 66, RepOrigen aplicaion cambios columnas de ejercicios. --- Bancos/IE.aspx.vb | 2 +- Contabilidad/RepOrigenAplicacion.aspx | 16 ++++++++++++++++ Contabilidad/RepOrigenAplicacion.aspx.vb | 14 ++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 8be4b0926..cb9885c32 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -2613,7 +2613,7 @@ Partial Class Bancos_IE If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "ANTC" Then If CveCliente > 0 Then - CveConceptoCompra = 3 'Clientes + CveConceptoCompra = 66 'Clientes CveConceptoContable = 30 'Bancos CvePlantillaPoliza = 12 End If diff --git a/Contabilidad/RepOrigenAplicacion.aspx b/Contabilidad/RepOrigenAplicacion.aspx index 68b37fb1b..5e47e1b03 100644 --- a/Contabilidad/RepOrigenAplicacion.aspx +++ b/Contabilidad/RepOrigenAplicacion.aspx @@ -243,6 +243,22 @@ + + + + + + + + + + + + + + + + diff --git a/Contabilidad/RepOrigenAplicacion.aspx.vb b/Contabilidad/RepOrigenAplicacion.aspx.vb index b5b3bf848..857ac42b4 100644 --- a/Contabilidad/RepOrigenAplicacion.aspx.vb +++ b/Contabilidad/RepOrigenAplicacion.aspx.vb @@ -153,7 +153,21 @@ Partial Class Contabilidad_RepOrigenAplicacion LnkExcel.Visible = False + + + If UsuarioActual.Empresa.UsaContabilidadSIG Then + + Dim AnioActual As Integer = TxtFechaAl.Text.ToDate.Year + Dim AnioAnteior As Integer = AnioActual - 1 + + + GvDatos.Columns(1).Visible = True + GvDatos.Columns(2).Visible = True + + GvDatos.Columns(1).HeaderText = AnioAnteior.ToString + GvDatos.Columns(2).HeaderText = AnioActual.ToString + Dim ObjConta As New ClsContabilidad If ObjConta.GetRepOrigenAplicacion(TxtFechaAl.Text.ToDate, UsuarioActual.CveEmpresa) Then From 82679c0cbb5f5c2ac29687db2c98cd46e9509148 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 8 Mar 2022 22:41:09 -0700 Subject: [PATCH 13/16] Estatus de solicitud de cancelacion --- App_Code/ClsVentas.vb | 3 ++- App_Code/Modelos.vb | 3 +++ App_Code/Timbrado.vb | 1 + App_Code/modExtensiones.vb | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 6a393bec7..fa31af006 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -746,7 +746,7 @@ Public Class ClsVentas Optional IdPolizaCancelacion As Integer = -1, Optional CvePAC As Integer = -1, Optional CveEstatusRefacturacion As Integer = 0, Optional CveUsuarioCambiaEstatus As Integer = -1, Optional FechaCambioEstatus As String = "-1", Optional RFCReceptor As String = "-1", Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional EstadoCancelacion As String = "", - Optional CveEstadoCancelacion As Integer = 0) As Boolean + Optional CveEstadoCancelacion As Integer = 0, Optional SelloSolicitudDigitalSAT As String = "") As Boolean Dim Retorno As Boolean = False DataAdapter("PA_VentasUpdateEstatus") @@ -767,6 +767,7 @@ Public Class ClsVentas .Add("@MotivoCancelacion", SqlDbType.VarChar).Value = MotivoCancelacion .Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion .Add("@CveEstadoCancelacion", SqlDbType.TinyInt).Value = CveEstadoCancelacion + .Add("@SelloSolicitudDigitalSAT", SqlDbType.VarChar).Value = SelloSolicitudDigitalSAT End With Try diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 92d95b07b..1a3e6f0cf 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4811,6 +4811,7 @@ Namespace Modelos Dim CancelacionFecha As Date Dim FolioFiscal As String = ObjFactura.FolioFiscal + Dim SolicitudCancelacionAcuse As String = "" Dim CancelacionAcuse As String = "" Dim EstadoCancelacion As String = "" Dim MensajeError As String = "" @@ -4918,6 +4919,7 @@ Namespace Modelos CveEstatus = 5 End If CancelacionAcuse = ObjCancelacion.CancelacionAcuse + SolicitudCancelacionAcuse = Resp.SolicitudCancelacionAcuse Else Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.
    Origen del error: WebService www.sat.gob.mx" Retorno.TipoMensaje = TipoMensaje.MsgError @@ -5000,6 +5002,7 @@ Namespace Modelos CveEstatus = Resp.CveEstatus CancelacionFecha = Resp.CancelacionFecha CancelacionAcuse = ObjCancelacion.CancelacionAcuse + SolicitudCancelacionAcuse = Resp.SolicitudCancelacionAcuse Else Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.
    Origen del error: WebService www.sat.gob.mx" Retorno.TipoMensaje = TipoMensaje.MsgError diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 7b40ba2cb..d499f9b8b 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -784,6 +784,7 @@ Public Class Timbrado If VigenciaExtra.Estado.ToUpper = "VIGENTE" AndAlso VigenciaExtra.EstatusCancelacion.ToUpper.Contiene("EN PROCESO") Then Retorno.Estado = "EN PROCESO" Retorno.CveEstatus = 20 + Retorno.SolicitudCancelacionAcuse = Retorno.CancelacionAcuse End If If VigenciaExtra.Estado.ToUpper = "CANCELADO" Then Retorno.Estado = "CANCELADO" diff --git a/App_Code/modExtensiones.vb b/App_Code/modExtensiones.vb index 14b8818a4..c6fb28bb7 100644 --- a/App_Code/modExtensiones.vb +++ b/App_Code/modExtensiones.vb @@ -153,6 +153,7 @@ Namespace Extensiones Public Property Estado As String = "" Public Property EstatusCancelacion As String = "" Public Property CancelacionFecha As Date + Public Property SolicitudCancelacionAcuse As String = "" Public Property CancelacionAcuse As String = "" End Class From f1f49c8f17bcb2df173c74f741993c274bea9c9c Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 8 Mar 2022 22:41:39 -0700 Subject: [PATCH 14/16] Tomar corte del usuario actual al generar devolucion de efectivo --- Bancos/IE.aspx.vb | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 8be4b0926..ae4c77908 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -1307,16 +1307,25 @@ Partial Class Bancos_IE GvRH.DataBind() UpGvRH.Update() End Sub - Private Sub CargaCorteCaja(CveCuenta As Integer) + Private Sub CargaCorteCaja() 'Checar si hay un Turno Abierto Dim ObjPVenta As New ClsPuntoVenta - If ObjPVenta.GetCortesPorCuenta(CveCuenta, UsuarioActual.CveEmpresa) Then - - CveCorte = ObjPVenta.CveCorte - + If ObjPVenta.GetVta_Cortes("-1", "-1", UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, 0) Then + If ObjPVenta.DtResultados.Rows.Count > 0 Then + CveCorte = ObjPVenta.CveCorte + End If End If ObjPVenta.Dispose() + + 'Dim ObjPVenta As New ClsPuntoVenta + + 'If ObjPVenta.GetCortesPorCuenta(CveCuenta, UsuarioActual.CveEmpresa) Then + + ' CveCorte = ObjPVenta.CveCorte + + 'End If + 'ObjPVenta.Dispose() End Sub #Region " CARGA PROVEEDOR " @@ -1671,7 +1680,7 @@ Partial Class Bancos_IE 'PAGAR NC CON C.CH DEBE DESCONTAR EN EL CORTE If Opcion IsNot Nothing AndAlso Opcion = "DevDinV" AndAlso dr("CveTipoCuenta").ToString.ToEntero = 1 Then - CargaCorteCaja(DdlCuenta.SelectedValue.ToEntero) + CargaCorteCaja() End If If dr("UsaTarjeta").ToString = "True" Then From 1fecad039f5b1acc304ad82e18d109cb1eb2b52c Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 8 Mar 2022 22:42:05 -0700 Subject: [PATCH 15/16] Cambio de expresion en codigo de emsanble en motobaterias --- Ventas/PV.aspx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index 654463864..bea4a6ee1 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -3310,7 +3310,7 @@ return; //MARCA MOTOBATERIAS } else if ((CveMarca == "1090" || CveMarca == "1091") || CveClasificacion == "20517") { - let regex = new RegExp("^[1X]"); + let regex = new RegExp("^[A-L][0-9][0-9A-Z][A-Q][JAVY]$"); arguments.IsValid = regex.test(arguments.Value); return; //AUTOMOTRIZ-ACUMULADORES From 371222b1ed1c1f4ab936e336cdacdd76c921a53a Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 8 Mar 2022 22:44:12 -0700 Subject: [PATCH 16/16] Carga de vendedores al editar cotizacion, validacion para descuentos al editar, bloquear fecha de pago en E140 --- Ventas/Ventas.aspx.vb | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index beeb7be43..1d9dd05c9 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -7593,6 +7593,12 @@ Partial Class Ventas ObjDescuento.ImporteDescuento = DescuentoManual End If + 'VERIFICA SI EL DESCUENTO SUPERA EL SUBTOTAL + If ObjDescuento.ImporteDescuento > (Cantidad * PU) Then + Alert("El descuento no puede ser mayor al subtotal", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + Dim CantidadOriginal As Decimal = GvPS.Rows(e.RowIndex).DataKey("Cantidad").ToDecimal() Dim DatarowPS As DataRow = Nothing @@ -9354,10 +9360,15 @@ Partial Class Ventas If Not MsgCancelacionRefacturacion.HuboError Then If MsgCancelacionRefacturacion.CveEstatus = 5 Then MensajeAlert.AppendFormat("
    El folio {0} fue cancelado.
    Descargar Acuse", Me.ObjFacturaNC.SerieFolio, Encripta(String.Format("OP=CAN&CVEVTA={0}", Me.ObjFacturaNC.CveVenta))) + MensajeAlert.AppendFormat(" Enviar Acuse.

    ", Me.ObjFacturaNC.CveVenta) ElseIf MsgCancelacionRefacturacion.CveEstatus = 20 Then MensajeAlert.AppendFormat("
    El folio {0} esta en proceso de cancelación. Descargar Acuse", Me.ObjFacturaNC.SerieFolio, Encripta(String.Format("OP=CAN&CVEVTA={0}", Me.ObjFacturaNC.CveVenta))) + MensajeAlert.AppendFormat(" Enviar Acuse.

    ", Me.ObjFacturaNC.CveVenta) + Else + MensajeAlert.AppendFormat("
    El folio {0} no fue cancelado. Intente mas tarde cancelar el documento Ver en el reporte", Me.ObjFacturaNC.SerieFolio, Me.ObjFacturaNC.CveVenta) End If - MensajeAlert.AppendFormat(" Enviar Acuse.

    ", Me.ObjFacturaNC.CveVenta) + Else + MensajeAlert.AppendFormat("
    El folio {0} no fue cancelado. Intente mas tarde cancelar el documento Ver en el reporte", Me.ObjFacturaNC.SerieFolio, Me.ObjFacturaNC.CveVenta) End If End If @@ -17336,7 +17347,7 @@ Partial Class Ventas End If 'multiples vendedores visible - If UsuarioActual.TienePermisoProceso(153) Then + If UsuarioActual.TienePermisoProceso(153) OrElse UsuarioActual.TienePermisoProceso(161) Then DdlVendedor.Enabled = True End If @@ -21603,6 +21614,13 @@ Partial Class Ventas LimpiaContado() LimpiaProntoPago() + + 'NO PERMITE EDITAR FECHA DEL PAGO + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + TxtFechaPago.Enabled = False + imgCalendario.Visible = False + End If + UpContado.Update() UPCondicionesPago.Update() End Sub @@ -29502,6 +29520,8 @@ Partial Class Ventas BloqueaCondiconesPago() + CargaVendedores() + UpPS.Update() UPPDescuento.Update() UPObservaciones.Update()