From bd9cf87ea3795d2cd0e32b5e52736030c3d9cd5c Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 18 Apr 2024 07:46:14 -0700 Subject: [PATCH] - cambios en RNC --- App_Code/ClsPaginas.vb | 20 +- Compras/Compras.aspx.vb | 383 +++++++++++------------------ Compras/RepNotasCredito.aspx.vb | 4 +- Contabilidad/RegPrePolizaS.aspx.vb | 2 +- 4 files changed, 154 insertions(+), 255 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index f6868d9ec..616dc1d76 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -8863,7 +8863,7 @@ Public Class ClsPaginas Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(1, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor) 'cuando el Pago viene por NC, se utiliza un concepto - If Pago.TipoPago.Contiene("NC", "DEV") Then If CompraActual.CveMoneda = 2 Then ConPreP.CveConcepto = 304 Else ConPreP.CveConcepto = 272 'pago nota de crédito ME + If Pago.TipoPago.Contiene("NC", "DEV", "RNC") Then If CompraActual.CveMoneda = 2 Then ConPreP.CveConcepto = 304 Else ConPreP.CveConcepto = 272 'pago nota de crédito ME 'cuando el Pago viene por Venta, se utiliza un concepto 'If Pago.TipoPago.Contiene("Venta") Then If CompraActual.CveMoneda = 2 Then ConPreP.CveConcepto = 275 Else ConPreP.CveConcepto = 275 'Pago Compra con Venta @@ -9163,24 +9163,6 @@ Public Class ClsPaginas Ret.CveConceptoAcreditable = 333 Ret.CveConceptoxAcreditar = 334 End If - 'If UsuarioActual.Empresa.TipoContabilidad = 2 Then - ' Dim ObjConta As New ClsContabilidad - ' If UsuarioActual.Empresa.Funcionalidad(FuncionalidadxAcred).ToEntero > 0 Then - ' Ret.IdCtaContablexAcreditar = UsuarioActual.Empresa.Funcionalidad(FuncionalidadxAcred).ToEntero - ' Else - ' If ObjConta.GetRetCuenta(Ret.CveConceptoxAcreditar, UsuarioActual.CveEmpresa) Then - ' If ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - ' End If - ' End If - ' If UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero > 0 Then - ' Ret.IdCtaContableAcreditable = UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero - ' Else - ' If ObjConta.GetRetCuenta(Ret.CveConceptoAcreditable, UsuarioActual.CveEmpresa) Then - ' If ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - ' End If - ' End If - ' ObjConta.Dispose() - 'End If Return Ret End Get End Property diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index ba963379c..837cd65fe 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1689,12 +1689,6 @@ Partial Class Compras_Compras DdlTipoComprobante.Items.Add(New ListItem("Devolución", "DEV")) DdlTipoComprobante.SelectedValueExist("DEV") End If - - If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then - DdlTipoCompra.Items.Add(New ListItem("Remision Nota De Crédito", "15")) - End If - - End If 'SE OCUPAN AFUERA DEL POSTBACK ?? @@ -7013,56 +7007,31 @@ Partial Class Compras_Compras End If End If Next + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then + If DdlRemisionNotaCredito.SelectedValue.ToEntero > 0 AndAlso ImporteRNCSaldar > 0 Then - If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso DdlRemisionNotaCredito.SelectedValue.ToEntero > 0 AndAlso ImporteRNCSaldar > 0 Then + If Not ErrorPrepoliza Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteRNCSaldar, ImporteRNCSaldar, 373, Referencia, Concepto, CveCompra:=DdlRemisionNotaCredito.SelectedValue.ToEntero, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, ImporteRNCSaldar), TipoCambio:=TipoCambio, + CveClasificacion:=-1, CveSubProyecto:=CompraActual.CveSubProyecto, Contabilizable:=True) Then + ErrorPrepoliza = True + End If - 'Dim importeMovimientoNC As Decimal = Gvr.FCTextBox("TxtImporte").Text.ToDecimal + If Not ErrorPrepoliza Then + Dim ConPrePNC As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(15, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor) - Dim Pago As New CompraPago - Pago.ImportePago = ImporteRNCSaldar - Pago.CveMonedaPago = CompraActual.CveMoneda - Pago.CveCompraAmortizacion = CompraActual.CveCompra - Pago.Referencia = CompraActual.SerieFolio - Pago.TCPago = CompraActual.TC - Pago.AplicaAcreditable = False - Pago.TipoPago = "RNC" - Pago.Fecha = CompraActual.Fecha 'toma la misma fecha de la provisión en el pago de NC + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteRNCSaldar, ImporteRNCSaldar, ConPrePNC.CveConcepto, Referencia, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, ImporteRNCSaldar), TipoCambio:=TipoCambio, + CveClasificacion:=-1, CveSubProyecto:=CompraActual.CveSubProyecto, Contabilizable:=True) Then + ErrorPrepoliza = True + End If + End If + End If + End If - Dim CompraPago As New Compra - ''datos de la compra tipodocto:Fac, para sobreescribirlos - CompraPago.CveCompra = DdlRemisionNotaCredito.SelectedValue.ToEntero - CompraPago.CveProveedor = DdlProveedor.SelectedValue.ToEntero - CompraPago.SerieFolio = SerieFolioProntoPago - CompraPago.TC = TipoCambioProntoPago - CompraPago.Fecha = FechaProntoPago - CompraPago.CveMoneda = CveMonedaProntoPago - CompraPago.Total = ImporteRNCSaldar - CompraPago.CveTipoConceptoProveedor = CveTipoConcepto - CompraPago.CveSubProyecto = CompraActual.CveSubProyecto - - ErrorPrepoliza = AplicaPrePolizaPagoCompra(CompraPago, Pago, CvePrePoliza, ObjConta) - - 'If Not ErrorPrepoliza Then - ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteRNCSaldar, ImporteRNCSaldar, 371, Referencia, Concepto, CveCompra:=DdlRemisionNotaCredito.SelectedValue.ToEntero, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, ImporteRNCSaldar), TipoCambio:=TipoCambio, - ' CveClasificacion:=-1, CveSubProyecto:=CompraActual.CveSubProyecto, Contabilizable:=True) Then - ' ErrorPrepoliza = True - ' End If - - ' If Not ErrorPrepoliza Then - ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteRNCSaldar, ImporteRNCSaldar, 372, Referencia, Concepto, CveCompra:=DdlRemisionNotaCredito.SelectedValue.ToEntero, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, ImporteRNCSaldar), TipoCambio:=TipoCambio, - ' CveClasificacion:=-1, CveSubProyecto:=CompraActual.CveSubProyecto, Contabilizable:=True) Then - ' ErrorPrepoliza = True - ' End If - ' End If - 'End If - - - End If - - If ErrorPrepoliza Then - ErrorMovtosCxP = True - Exit Select + If ErrorPrepoliza Then + ErrorMovtosCxP = True + Exit Select + End If End If importeMovimiento = 0 @@ -7627,8 +7596,8 @@ Partial Class Compras_Compras End If - If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso (ImporteRNC > 0 Or ImporteRNCProntoPago > 0) Then - If Not GeneraRemisionsNotadeCredito(ObjCompras.IniciaTransacSQL, CveCompra) Then + If UsuarioActual.Empresa.Funcionalidad(574) = "1" AndAlso (ImporteRNC > 0 Or ImporteRNCProntoPago > 0) Then + If Not GeneraRNC(ObjCompras.IniciaTransacSQL, CveCompra, CompraActual, ObjConta, CvePrePoliza) Then TieneError = True End If End If @@ -14738,10 +14707,6 @@ Partial Class Compras_Compras IndexTmpOriginal += 1 Next - - - - If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso (AjusteProntoPagoConIVA > 0 Or AjusteProntoPagoSinIVA > 0) Then Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero @@ -15680,6 +15645,13 @@ Partial Class Compras_Compras If DdlTipoComprobante.SelectedValue = "NC" Then DivReembolso.Visible = False RBLPago.Items(2).Enabled = False + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then + If DdlTipoCompra.Items.FindByValue("15") Is Nothing Then + DdlTipoCompra.Items.Add(New ListItem("Remision Nota De Crédito", "15")) + UpEstatus.Update() + End If + + End If Else DivReembolso.Visible = True RBLPago.Items(2).Enabled = True @@ -19540,20 +19512,18 @@ Partial Class Compras_Compras If DdlTipoComprobante.SelectedValue = "NC" Then CargaDdlRemisionNotaCredito() + 'bloquear la vinculación a la compra + HLAplicaNCFact.Visible = False Else Alert("Para elegir Remisión de Nota de Crédito el tipo de documento debe de ser Nota de Crédito.", TipoMensaje.MsgAdvertencia) DdlRemisionNotaCredito.SelectedValueExist(-1) DdlTipoCompra.SelectedValueExist(-1) End If - - End If - End Sub - #End Region #Region "GARANTÍAS" @@ -20867,7 +20837,7 @@ Partial Class Compras_Compras #Region "PRONTO PAGO" - Public Function GeneraRemisionsNotadeCredito(ByRef trasaccion As SqlTransaction, CveCompraRegistrada As Integer) As Boolean + Public Function GeneraRNC(ByRef sqltransaccion As SqlTransaction, CveCompraRegistrada As Integer, ByRef CompraActual As Compra, ByRef ObjConta As ClsContabilidad, CvePrePoliza As Integer) As Boolean Dim respuesta As Boolean = True Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal @@ -20890,20 +20860,20 @@ Partial Class Compras_Compras If PSRow IsNot Nothing Then - Dim CompraRNC As New ClsCompraManagerCompras("", ClsCompraManagerCompras.EnumCargaCompra.SinXML, GlobalDTTiposGastos(UsuarioActual.CveEmpresa), UsuarioActual) - CompraRNC.CveFactura = -1 - CompraRNC.CveProveedor = DdlProveedor.SelectedValue.ToEntero - CompraRNC.CveTipoProveedor = CveTipoProveedor - CompraRNC.CveTipoConceptoProveedor = CveTipoConcepto - CompraRNC.TipoCompra = ClsCompraManagerCompras.EnumTipoCompra.Sin_definir - CompraRNC.IEPSGasto = False - CompraRNC.Descripcion = $"Remisión Nota de Crédito {TxtDescripcion.Text}" - CompraRNC.NombreProveedor = DdlProveedor.SelectedItem.Text - CompraRNC.Fecha = TxtFecha.Text.ToDate - CompraRNC.CveMoneda = DdlMoneda.SelectedValue.ToEntero - CompraRNC.Serie = TxtSerie.Text - CompraRNC.Folio = TxtFolio.Text - CompraRNC.CveCompraAmortizacion = CveCompraRegistrada + Dim CompraRNC As New ClsCompraManagerCompras(UsuarioActual) With { + .CveFactura = -1, + .TipoDocto = "RNC", + .CveProveedor = DdlProveedor.SelectedValue.ToEntero, + .CveTipoProveedor = CveTipoProveedor, + .CveTipoConceptoProveedor = CveTipoConcepto, + .Descripcion = $"Remisión Nota de Crédito {TxtDescripcion.Text}", + .NombreProveedor = DdlProveedor.SelectedItem.Text, + .Fecha = TxtFecha.Text.ToDate, + .CveMoneda = DdlMoneda.SelectedValue.ToEntero, + .Serie = TxtSerie.Text, + .Folio = TxtFolio.Text, + .CveCompraAmortizacion = CveCompraRegistrada + } Dim CveTipoPS As Integer = PSRow("CveTipoPS").ToString.ToEntero If PSRow("CvePSCargo").ToString <> "" Then @@ -20917,42 +20887,62 @@ Partial Class Compras_Compras Dim UM As String = PSRow("UnidadMedida").ToString Dim IVARNC As Decimal = (ImporteRNC * PorcentajeIVA).RoundSQL(2) - - CompraRNC.ConfiguraRegistroRapidoRNC(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNC, (ImporteRNC + IVARNC), IVARNC) - If Not CompraRNC.AddCompraRNC(trasaccion) Then + CompraRNC.ConfiguraRegistroRapido(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNC, IVARNC, (ImporteRNC + IVARNC), PorcentajeIVA) + If CompraRNC.AddCompra(sqltransaccion) Then + Dim tImporteRNC = ImporteRNC + IVARNC ' le agrego el importe del iva + Dim Pago As New CompraPago + Pago.ImportePago = tImporteRNC + Pago.CveMonedaPago = CompraActual.CveMoneda + Pago.CveCompraAmortizacion = CompraRNC.CveCompra + Pago.Referencia = CompraRNC.SerieFolio + Pago.TCPago = CompraActual.TC + Pago.AplicaAcreditable = False + Pago.TipoPago = "RNC" + Pago.Fecha = CompraActual.Fecha 'toma la misma fecha de la provisión en el pago de NC + respuesta = Not AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) + Else respuesta = False End If - If respuesta Then + If respuesta AndAlso ImporteRNCProntoPago > 0 Then - Dim CompraRNCProntoPAgo As New ClsCompraManagerCompras("", ClsCompraManagerCompras.EnumCargaCompra.SinXML, GlobalDTTiposGastos(UsuarioActual.CveEmpresa), UsuarioActual) - CompraRNCProntoPAgo.CveFactura = -1 - CompraRNCProntoPAgo.CveProveedor = DdlProveedor.SelectedValue.ToEntero - CompraRNCProntoPAgo.CveTipoProveedor = CveTipoProveedor - CompraRNCProntoPAgo.CveTipoConceptoProveedor = CveTipoConcepto - CompraRNCProntoPAgo.TipoCompra = ClsCompraManagerCompras.EnumTipoCompra.Sin_definir - CompraRNCProntoPAgo.IEPSGasto = False - CompraRNCProntoPAgo.Descripcion = $"Remisión Nota de Crédito {TxtDescripcion.Text}" - CompraRNCProntoPAgo.NombreProveedor = DdlProveedor.SelectedItem.Text - CompraRNCProntoPAgo.Fecha = TxtFecha.Text.ToDate - CompraRNCProntoPAgo.CveMoneda = DdlMoneda.SelectedValue.ToEntero - CompraRNCProntoPAgo.Serie = $"PP-{TxtSerie.Text}" - CompraRNCProntoPAgo.Folio = $"{TxtFolio.Text}" - CompraRNCProntoPAgo.CveCompraAmortizacion = CveCompraRegistrada - Dim IVARNCProntoPago As Decimal = (ImporteRNC * PorcentajeIVA).RoundSQL(2) + Dim CompraRNCProntoPago As New ClsCompraManagerCompras(UsuarioActual) With { + .TipoDocto = "RNC", + .CveProveedor = DdlProveedor.SelectedValue.ToEntero, + .CveTipoProveedor = CveTipoProveedor, + .CveTipoConceptoProveedor = CveTipoConcepto, + .Descripcion = $"Remisión Nota de Crédito {TxtDescripcion.Text}", + .NombreProveedor = DdlProveedor.SelectedItem.Text, + .Fecha = TxtFecha.Text.ToDate, + .CveMoneda = DdlMoneda.SelectedValue.ToEntero, + .Serie = $"PP-{TxtSerie.Text}", + .Folio = $"{TxtFolio.Text}", + .CveCompraAmortizacion = CveCompraRegistrada + } + Dim IVARNCProntoPago As Decimal = (ImporteRNCProntoPago * PorcentajeIVA).RoundSQL(2) - CompraRNCProntoPAgo.ConfiguraRegistroRapidoRNC(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNCProntoPago, (ImporteRNCProntoPago + IVARNCProntoPago), IVARNCProntoPago) - If Not CompraRNCProntoPAgo.AddCompraRNC(trasaccion) Then + CompraRNCProntoPago.ConfiguraRegistroRapido(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNCProntoPago, (ImporteRNCProntoPago + IVARNCProntoPago), IVARNCProntoPago, PorcentajeIVA) + If CompraRNCProntoPago.AddCompra(sqltransaccion) Then + Dim tImporteRNCProntoPago = ImporteRNCProntoPago + IVARNC ' le agrego el importe del iva + Dim Pago As New CompraPago + Pago.ImportePago = tImporteRNCProntoPago + Pago.CveMonedaPago = CompraActual.CveMoneda + Pago.CveCompraAmortizacion = CompraRNCProntoPago.CveCompra + Pago.Referencia = CompraRNCProntoPago.SerieFolio + Pago.TCPago = CompraActual.TC + Pago.AplicaAcreditable = False + Pago.TipoPago = "RNC" + Pago.Fecha = CompraActual.Fecha 'toma la misma fecha de la provisión en el pago de NC + respuesta = Not AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) + Else respuesta = False End If - End If End If Return respuesta End Function - Public Property VincularOcProntoPago As Boolean Get If ViewState("VincularOcProntoPago") Is Nothing Then @@ -20970,12 +20960,11 @@ Partial Class Compras_Compras If VincularOcProntoPago Then Return True Else - + Dim StrMsg As String = $"Existe una diferencia de ${(ImporteRNC + ImporteRNCProntoPago).ToString("###,###,###.00")} entre la compra y la Orden de Compra.
Se generaran Remisiones de Nota de Crédito.
- Descuento de ${ImporteRNC.ToString("###,###,###.00")}.
" If ImporteRNCProntoPago > 0 Then - LblModalConfirmaVinculacionProntoPago.Text = $"Existe una diferencia de ${(ImporteRNC + ImporteRNCProntoPago).ToString("###,###,###.00")} entre la compra y la Orden de Compra.
Se generaran las siguientes Remisiones de Nota de Crédito.
- Descuento de ${ImporteRNC.ToString("###,###,###.00")}.
- Pronto pago de ${ImporteRNCProntoPago.ToString("###,###,###.00")}" - Else - LblModalConfirmaVinculacionProntoPago.Text = $"Existe una diferencia de ${(ImporteRNC).ToString("###,###,###.00")} entre la compra y la Orden de Compra, se generara una Remision de Nota de Crédito por descuento de ${ImporteRNC.ToString("###,###,###.00")}" + StrMsg = StrMsg & $"- Pronto pago de ${ImporteRNCProntoPago.ToString("###,###,###.00")}" End If + LblModalConfirmaVinculacionProntoPago.Text = StrMsg RegistraScript("$('#DVModalConfirmaVinculacionProntoPago').modal('show');") UpModalConfirmaVinculacionProntoPago.Update() @@ -21002,15 +20991,12 @@ Partial Class Compras_Compras If ObjCompras.GetNotasCreditoRep(DdlProveedor.SelectedValue.ToEntero, 0, "-1", "-1", UsuarioActual.CveEmpresa, 2) Then DdlRemisionNotaCredito.DataSource = ObjCompras.DtResultados DTRemisionesNotaDeCredito = ObjCompras.DtResultados - Else - Alert("Ocurrió un error al obtener el catálogo de Notas de Crédito", Extensiones.TipoMensaje.MsgError) End If ObjCompras.Dispose() DdlRemisionNotaCredito.DataBind() DdlRemisionNotaCredito.Items.Insert(0, New ListItem("-", "-1")) - UpEstatus.Update() End Sub @@ -21069,11 +21055,11 @@ Public Class ClsCompraManagerCompras End Enum Public Enum EnumCFDIVersion v32 - V33 - V40 + v33 + v40 End Enum Public Enum EnumTipoCompra - Sin_definir = -1 + SinDefinir = -1 Gasto_con_almacen = 10 Activo_Fijo = 1 'Costo_Indirecto = 2 @@ -21112,7 +21098,7 @@ Public Class ClsCompraManagerCompras Public Property Folio As String = "" Public Property FolioSecundario As String = "" Public Property Descripcion As String = "" - Public Property CFDIVersion As EnumCFDIVersion = EnumCFDIVersion.V40 + Public Property CFDIVersion As EnumCFDIVersion = EnumCFDIVersion.v40 Public Property ProveedorNombre As String = "" Public Property EsImportacion As Boolean = False Public Property TC As Decimal = 1 @@ -21122,6 +21108,7 @@ Public Class ClsCompraManagerCompras Public Property Total As Decimal = 0D Public Property Moneda As String = "" Public Property TipoComprobante As String + Public Property TipoDocto As String = "Fac" Public Property TipoCambio As Decimal = 1 Public Property CompraNoDeducible As Integer = 0 Public Property IVA As Decimal = 0D @@ -21269,7 +21256,7 @@ Public Class ClsCompraManagerCompras Public Property Proyecto As String = "" Public Property CveProyecto As Integer = -1 Public Property SubProyecto As String = "" - Public Property TipoCompra As EnumTipoCompra = EnumTipoCompra.Sin_definir + Public Property TipoCompra As EnumTipoCompra = EnumTipoCompra.SinDefinir Private Property DTTiposGastos() As DataTable Public Property CveTipoProveedor As Integer = -1 Public Property IEPSGasto As Boolean = False @@ -21282,14 +21269,19 @@ Public Class ClsCompraManagerCompras Public Property CveIE As Integer = -1 Public Property CveCompraAmortizacion As Integer = -1 - Public Sub New(XmlFuente As String, OpcionCarga As EnumCargaCompra, DTTiposGastos As DataTable, UsuarioActual As Usuario) + Public Sub New(UsuarioActual As Usuario) Errores = New StringBuilder - Me.DTTiposGastos = DTTiposGastos Me.UsuarioActual = UsuarioActual + End Sub + Public Sub New(XmlFuente As String, OpcionCarga As EnumCargaCompra, DTTiposGastos As DataTable, UsuarioActual As Usuario) + + Errores = New StringBuilder + Me.DTTiposGastos = DTTiposGastos + Me.UsuarioActual = UsuarioActual If OpcionCarga = EnumCargaCompra.SinXML Then @@ -21300,11 +21292,10 @@ Public Class ClsCompraManagerCompras CargaDesdeString(XmlFuente) End If End If - - - End Sub +#Region "C A R G A S D E F U E N T E S " + Private Sub CargaDesdeArchivo(XmlFuenteRuta As String) Dim XMLDoc As New XmlDocument @@ -21350,7 +21341,6 @@ Public Class ClsCompraManagerCompras End If End Sub - Private Sub CargaComprobanteXML(XMLDoc As XmlDocument) Dim nodo As XmlNode = XMLDoc.DocumentElement @@ -21361,9 +21351,9 @@ Public Class ClsCompraManagerCompras If StrCFDIVerion = "3.2" Then CFDIVersion = EnumCFDIVersion.v32 ElseIf StrCFDIVerion = "3.3" Then - CFDIVersion = EnumCFDIVersion.V33 + CFDIVersion = EnumCFDIVersion.v33 ElseIf StrCFDIVerion = "4.0" Then - CFDIVersion = EnumCFDIVersion.V40 + CFDIVersion = EnumCFDIVersion.v40 Else GuardaLog($"CFDI Versión {StrCFDIVerion} no soportada") Errores.AppendLine($"CFDI Versión {StrCFDIVerion} no soportada") @@ -21389,7 +21379,7 @@ Public Class ClsCompraManagerCompras TipoComprobante = ValorXML(nodo, "tipoDeComprobante") TipoCambio = ValorXML(nodo, "TipoCambio", "1").ToDecimal - If CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40 Then + If CFDIVersion = EnumCFDIVersion.v33 Or CFDIVersion = EnumCFDIVersion.v40 Then Dim drm As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", ValorXML(nodo, "MetodoPago"))) If drm IsNot Nothing Then CveMetodoPago = drm("CveMetodoPago").ToString.ToEntero @@ -21404,7 +21394,7 @@ Public Class ClsCompraManagerCompras If CFDIVersion = EnumCFDIVersion.v32 Then Prefijo = "cfd" cfdVer = "http://www.sat.gob.mx/cfd/2" - ElseIf CFDIVersion = EnumCFDIVersion.V33 Then + ElseIf CFDIVersion = EnumCFDIVersion.v33 Then cfdVer = "http://www.sat.gob.mx/cfd/3" Else ' se considera que es la version 4.0 cfdVer = "http://www.sat.gob.mx/cfd/4" @@ -21415,7 +21405,7 @@ Public Class ClsCompraManagerCompras namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") - If TipoComprobante.ToUpper = "E" AndAlso (CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40) Then + If TipoComprobante.ToUpper = "E" AndAlso (CFDIVersion = EnumCFDIVersion.v33 OrElse CFDIVersion = EnumCFDIVersion.v40) Then Dim UUIDS As String = "" Dim UUIDSLista As New List(Of String) @@ -21465,7 +21455,7 @@ Public Class ClsCompraManagerCompras TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDecimal - If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + If CFDIVersion = EnumCFDIVersion.v33 OrElse CFDIVersion = EnumCFDIVersion.v40 Then For Each retencion As XmlNode In nodeRetenciones If retencion.Attributes("Impuesto").Value = "002" Then RetencionIVA += retencion.Attributes("Importe").Value.ToDecimal @@ -21485,7 +21475,7 @@ Public Class ClsCompraManagerCompras TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDecimal Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces) - If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + If CFDIVersion = EnumCFDIVersion.v33 OrElse CFDIVersion = EnumCFDIVersion.v40 Then For Each traslado As XmlNode In nodeTraslados @@ -21586,7 +21576,7 @@ Public Class ClsCompraManagerCompras ObjeFacturas.Dispose() - If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + If CFDIVersion = EnumCFDIVersion.v33 OrElse CFDIVersion = EnumCFDIVersion.v40 Then If Not TmpDT.Columns.Contains("Amortizacion") Then TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) End If @@ -21599,6 +21589,8 @@ Public Class ClsCompraManagerCompras #End Region End Sub +#End Region + Public Function ConfiguraRegistroRapidoReembolso(CvePS As Integer, CveSubProyecto As Integer, CveCajaChica As Integer, CvePersonal As Integer, CveRetIVAConcepto As Integer, CveRetISRConcepto As Integer, NumeroReembolso As String) As Boolean Dim respuesta As Boolean = True @@ -21645,8 +21637,8 @@ Public Class ClsCompraManagerCompras Return respuesta End Function - Public Function ConfiguraRegistroRapidoRNC(CvePS As Integer, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, PS As String, CveSubProyecto As Integer, SubProyecto As String, - SubTotal As Decimal, Total As Decimal, IVA As Decimal) As Boolean + Public Function ConfiguraRegistroRapido(CvePS As Integer, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, PS As String, CveSubProyecto As Integer, SubProyecto As String, + SubTotal As Decimal, IVA As Decimal, Total As Decimal, PorcentajeIVA As Decimal) As Boolean Dim respuesta As Boolean = True Me.CveSubProyecto = CveSubProyecto @@ -21660,7 +21652,7 @@ Public Class ClsCompraManagerCompras Me.SubTotal = SubTotal Me.IVA = IVA Me.Total = Total - + Me.PorcentajeIVA = PorcentajeIVA Dim dRowSubProyecto As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") @@ -21673,9 +21665,8 @@ Public Class ClsCompraManagerCompras Return False End If - CreaDTCompras() - AddPS(1, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, 1, CveSubProyecto.ToString, SubProyecto, "", "-1", "", SubTotal, SubTotal, 0, 0, 0, 0, 0, 0) + AddPS(1, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, 1, CveSubProyecto.ToString, SubProyecto, "", "-1", "", SubTotal, Total, 0, 0, 0, 0, 0, 0, PorcentajeIVA:=PorcentajeIVA) 'If respuesta AndAlso IEPS > 0 Then ' If Not AgregaIEPSReembolso(CvePS:=CvePS) Then @@ -22543,16 +22534,16 @@ Public Class ClsCompraManagerCompras Row("IVA") = 0 Row("IVAPorcentaje") = 0 Else - Row("IVA") = (IVA * Total).RoundSQL - Row("IVAPorcentaje") = IVA + Row("IVA") = (PorcentajeIVA * Total).RoundSQL + Row("IVAPorcentaje") = PorcentajeIVA End If - Row("RetIVA") = (RetIVA * Total).RoundSQL - Row("RetIVAPorcentaje") = RetIVA - Row("RetISR") = (RetISR * Total).RoundSQL - Row("RetISRPorcentaje") = RetISR - Row("IEPSPS") = (IEPSPS * Total).RoundSQL - Row("IEPSPSPorcentaje") = IEPSPS + Row("RetIVA") = (PorcentajeRetIVA * Total).RoundSQL + Row("RetIVAPorcentaje") = PorcentajeRetIVA + Row("RetISR") = (PorcentajeRetISR * Total).RoundSQL + Row("RetISRPorcentaje") = PorcentajeRetISR + Row("IEPSPS") = (PorcentajeIEPS * Total).RoundSQL + Row("IEPSPSPorcentaje") = PorcentajeIEPS End If Row("ImporteConImpuestos") = (Row("Cantidad").ToString.ToDecimal * Row("PU").ToString.ToDecimal) + Row("IVA").ToString.ToDecimal + Row("IEPSPS").ToString.ToDecimal - (Row("RetIVA").ToString.ToDecimal + Row("RetISR").ToString.ToDecimal) @@ -22877,19 +22868,25 @@ Public Class ClsCompraManagerCompras End If End Function - Public Function AddCompra() As Boolean + Public Function AddCompra(Optional ByRef transacccion As SqlTransaction = Nothing) As Boolean If Not AjustesValidacion() Then Return False Dim respuesta As Boolean = True - Dim ObjCompras As New ClsCompras + Dim ObjCompras As ClsCompras + + If transacccion IsNot Nothing Then + ObjCompras = New ClsCompras(transacccion) + Else + ObjCompras = New ClsCompras + End If Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL()) If Not AddPrepolizaCabecera(ObjConta) Then respuesta = False End If - If respuesta AndAlso ObjCompras.AddCompra(If(Me.TipoComprobante = "I", "Fac", "NC"), Me.Descripcion, Me.Serie, Me.Folio, Me.FolioSecundario, Me.CveProveedor, Me.SubTotal, Me.Descuento, + If respuesta AndAlso ObjCompras.AddCompra(Me.TipoDocto, Me.Descripcion, Me.Serie, Me.Folio, Me.FolioSecundario, Me.CveProveedor, Me.SubTotal, Me.Descuento, Me.Amortizacion, Me.IVA, Me.RetIVA, Me.RetISR, Me.IEPS, Me.OtrosImpuestos, Me.Redondeo, Me.Total, Me.Fecha, Me.CveMoneda, Me.TipoCambio, If(Me.FechaPago = Nothing, Me.Fecha, Me.FechaPago), Me.AplicaNotaCredito, Me.Observaciones, Me.CveEstatusFactura, Me.CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Me.IdPoliza, CveCajaChica:=Me.CveCajaChica, CvePersonal:=Me.CvePersonal, NumeroReembolso:=Me.NumeroReembolso, CveProveedorSucursal:=Me.CveProveedorSucursal, @@ -22940,111 +22937,31 @@ Public Class ClsCompraManagerCompras End If End If - If respuesta Then + If respuesta AndAlso Me.CveFactura > 0 Then If Not ObjCompras.UpdateCompraFactura(Me.CveCompra, Me.CveFactura, Me.Serie, Me.Folio) Then respuesta = False End If - If respuesta Then - ObjCompras.Commit() - Else - ObjCompras.RollBack() - End If - - ObjCompras.Dispose() - ObjConta.Dispose() - - Return respuesta - End Function - - - Public Function AddCompraRNC(ByRef transacccion As SqlTransaction) As Boolean - - If Not AjustesValidacion() Then Return False - - Dim respuesta As Boolean = True - Dim ObjCompras As New ClsCompras(transacccion) - Dim ObjConta As New ClsContabilidad(transacccion) - - If Not AddPrepolizaCabecera(ObjConta) Then - respuesta = False - End If - - If respuesta AndAlso ObjCompras.AddCompra("RNC", Me.Descripcion, Me.Serie, Me.Folio, Me.FolioSecundario, Me.CveProveedor, Me.SubTotal, Me.Descuento, - Me.Amortizacion, Me.IVA, Me.RetIVA, Me.RetISR, Me.IEPS, Me.OtrosImpuestos, - Me.Redondeo, Me.Total, Me.Fecha, Me.CveMoneda, Me.TipoCambio, If(Me.FechaPago = Nothing, Me.Fecha, Me.FechaPago), Me.AplicaNotaCredito, Me.Observaciones, Me.CveEstatusFactura, - Me.CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Me.IdPoliza, CveCajaChica:=Me.CveCajaChica, CvePersonal:=Me.CvePersonal, NumeroReembolso:=Me.NumeroReembolso, CveProveedorSucursal:=Me.CveProveedorSucursal, - AplicoPromocion:=Me.AplicoPromocion, PorcentajeIVA:=Me.PorcentajeIVA, CveMetodoPago:=Me.CveMetodoPago, CveRetIVAConcepto:=Me.CveRetIVAConcepto, - CveConceptoContableAlmacen:=Me.CveConceptoContableAlmacen, - CveRetISRConcepto:=Me.CveRetISRConcepto, NoDeducible:=Me.NoDeducible, CveTipoCompra:=Me.CveTipoCompra, TotalOriginal:=Me.TotalOriginal, CveTipoConcepto:=Me.CveTipoConcepto, - EsImportacion:=Me.EsImportacion, CveFactura:=Me.CveFactura, CveSubProyecto:=Me.CveSubProyectoPrincipal, DoctosRelacionados:=Me.DocumentosRelacionadosUUIDSString, CveFolioGarantia:=Me.CveFolioGarantia) Then - Me.CveCompra = ObjCompras.CveCompra - Else - respuesta = False - End If - - If respuesta AndAlso Me.CveCompra > 0 Then - - For Each Row As DataRow In Me.TmpDT.Rows - - Dim TipoRecepcion As Integer = -1 - Dim Referencia As String = "" - Dim EsNoDeducible As Boolean = False - Dim CveAF As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 1, Row("CveActivoFijo").ToString.ToEntero, -1) - Dim CveAFC As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 2, Row("CveActivoFijo").ToString.ToEntero, -1) - - If Not ObjCompras.AddCompraDetalle(Me.CveCompra, Row("CveUM").ToString.ToEntero, Row("CvePS").ToString.ToEntero, Row("CveSubProyecto").ToString.ToEntero, -1, CveAF, - Row("Cantidad").ToString.ToDecimal, Row("PU").ToString.ToDecimal, Row("IVA").ToString.ToDecimal, Row("Total").ToString.ToDecimal, Row("Descuento").ToString.ToDecimal, - Row("Obs").ToString, Row("CveOrdenCompraDetalle").ToString.ToEntero, TipoRecepcion, Row("CveContrato").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero, - AplicaCostoIndirecto:=Row("AplicaCostoIndirecto").ToString.ToEntero, EstatusAlmacen:=Row("EntregaDirecta").ToString.ToEntero, CvePersonal:=CvePersonal, - CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero, AF_Medida:=Row("AFMedida").ToString.ToEntero, AF_TipoMantenimiento:=Row("AFTipoMantenimiento").ToString.ToEntero, Referencia:=Referencia, OtrosGastos:=Row("OtrosGastos").ToString.ToDecimal, - RetIVA:=Row("RetIVA").ToString.ToDecimal, RetISR:=Row("RetISR").ToString.ToDecimal, IEPSPS:=Row("IEPSPS").ToString.ToDecimal.RoundSQL, IEPSPSIVA:=Row("IEPSPSIVA").ToString.ToDecimal, - IVAPorcentaje:=Row("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=Row("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=Row("RetISRPorcentaje").ToString.ToDecimal, - IEPSPSPorcentaje:=Row("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=Row("IEPSPSIVAPorcentaje").ToString.ToDecimal, NoDeducible:=If((Row("NoDeducible").ToString().ToUpper().Contiene("TRUE", "1")) AndAlso EsNoDeducible, True, False), - CveContratoDetalle:=Row("CveContratoDetalle").ToString.ToEntero, CveCultivoCuadroDetalle:=Row("CveCultivoCuadroDetalle").ToString.ToEntero, CveActivoFijoCompra:=CveAFC) Then - - respuesta = False - Exit For - End If - Next - End If - - If respuesta Then - If Not AddPrePolizaDetalles(ObjConta, True) Then respuesta = False - End If - - If respuesta AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, 4) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - Errores.AppendLine($"Compras/RNC | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}.") - GuardaLogAD($"Compras/RNC | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - respuesta = False + If transacccion Is Nothing Then 'SINO VIENE DE UNA TRANSACCIÓN + If respuesta Then + ObjCompras.Commit() + Else + ObjCompras.RollBack() End If + ObjCompras.Dispose() + ObjConta.Dispose() End If - 'If respuesta Then - ' If Not ObjCompras.UpdateCompraFactura(Me.CveCompra, Me.CveFactura, Me.Serie, Me.Folio) Then respuesta = False - 'End If - - 'If respuesta Then - ' ObjCompras.Commit() - 'Else - ' ObjCompras.RollBack() - 'End If - - 'ObjCompras.Dispose() - 'ObjConta.Dispose() - Return respuesta End Function - - Private Function AddPrepolizaCabecera(ByRef ObjConta As ClsContabilidad, Optional ES_RNC As Boolean = False) As Boolean + Private Function AddPrePolizaCabecera(ByRef ObjConta As ClsContabilidad) As Boolean Dim respuesta As Boolean = False Dim ConceptoPoliza As String = String.Format("{0} - {1} - {2}", NombreProveedor, SerieFolio, "") Dim Modulo As String = "eFacturas/Registrar" - If ES_RNC Then + If Me.TipoDocto = "RNC" Then ConceptoPoliza = String.Format("{0} - {1} - {2}", NombreProveedor, SerieFolio, "") Modulo = "Compras/RNC" End If @@ -23060,7 +22977,7 @@ Public Class ClsCompraManagerCompras Dim Concepto As String = $"{Me.NombreProveedor} {Me.SerieFolio}" Dim Referencia As String = Me.SerieFolio - If ES_RNC Then + If TipoDocto = "RNC" Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Me.Total, Me.Total, 370, Referencia, Concepto, CveCompra:=CveCompra, CveCompraAmortizacion:=Me.CveCompraAmortizacion, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, Me.Total), TipoCambio:=TipoCambio, CveClasificacion:=-1, CveSubProyecto:=Me.CveSubProyecto, Contabilizable:=True) Then @@ -23108,7 +23025,7 @@ Public Class ClsCompraManagerCompras If respuesta AndAlso Me.IEPS > 0 Then importeMovimiento = Me.IEPS importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, 25, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, importeMN, 25, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then respuesta = False End If End If diff --git a/Compras/RepNotasCredito.aspx.vb b/Compras/RepNotasCredito.aspx.vb index 286f7dc18..ed89558d0 100644 --- a/Compras/RepNotasCredito.aspx.vb +++ b/Compras/RepNotasCredito.aspx.vb @@ -58,7 +58,7 @@ Partial Class Compras_RepNotasCredito If Tab.ActiveTabIndex = 0 Then CargaDatos() Else - CargaDatosRemisiones() + CargaDatosRNC() End If End Sub @@ -142,7 +142,7 @@ Partial Class Compras_RepNotasCredito #Region "REMISIONES" - Private Sub CargaDatosRemisiones() + Private Sub CargaDatosRNC() DtDatosRemisiones = New DataTable GvRemisiones.DataSource = Nothing Dim ObjCompras As New ClsCompras diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb index a78088c73..d3f7770d9 100644 --- a/Contabilidad/RegPrePolizaS.aspx.vb +++ b/Contabilidad/RegPrePolizaS.aspx.vb @@ -554,7 +554,7 @@ Partial Class ContabilidadC_RegPrePolizaS Dim CveConceptoContable As Integer = e.Row.DataKey("CveConceptoContable").ToEntero If CveConceptoContable.Contiene(1, 2, 12, 91, 13, 38, 207, 203, 39, 61, 62, 63, 4, 278, 291, 292, 293, 294, 272, 150, 251, 301) Then e.Row.FCHyperLink("HlReferencia").NavigateUrl = String.Format("/Ventas/Ventas.aspx?CveVenta={0}", e.Row.DataKey("CveVenta")) - If CveConceptoContable.Contiene(5, 6, 17, 18, 14, 19, 25, 26, 60, 205, 225, 234, 235, 240, 305, 306, 307, 308, 309, 310, 311, 312, 201, 206, 323, 324, 341, 342, 343, 344, 304, 272, 259, 287, 288, 370, 371, 372) Then e.Row.FCHyperLink("HlReferencia").NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DataKey("CveCompra")) + If CveConceptoContable.Contiene(5, 6, 17, 18, 14, 19, 25, 26, 60, 205, 225, 234, 235, 240, 305, 306, 307, 308, 309, 310, 311, 312, 201, 206, 323, 324, 341, 342, 343, 344, 304, 272, 259, 287, 288, 370, 371, 372, 373) Then e.Row.FCHyperLink("HlReferencia").NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DataKey("CveCompra")) If CveConceptoContable.Contiene(68) Then e.Row.FCHyperLink("HlReferencia").NavigateUrl = String.Format("/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}", e.Row.DBCampo("CveMovimientoAlmacen")) If CveConceptoContable.Contiene(30, 204, 66, 92, 202, 10, 21, 48, 56, 338, 339, 340, 345, 346, 347) Then e.Row.FCHyperLink("HlReferencia").NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE"))