From bfde4b48e3baa191b827ba4eac1a780eabb56bf8 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Mon, 1 Apr 2024 16:30:05 -0700 Subject: [PATCH] Compras Pronto Pago --- AF/CatAF.aspx | 3 +- App_Code/ClsCompras.vb | 7 +- Compras/Compras.aspx | 51 +++++ Compras/Compras.aspx.vb | 263 ++++++++++++++++++++++--- Compras/RepNotasCredito.aspx | 320 +++++++++++++++++++++---------- Compras/RepNotasCredito.aspx.vb | 173 ++++++++++++----- General/SaldosIniciales.aspx.vb | 4 +- Ventas/FacturacionGlobal.aspx.vb | 1 + 8 files changed, 647 insertions(+), 175 deletions(-) diff --git a/AF/CatAF.aspx b/AF/CatAF.aspx index 34ad4ee76..393b4fbb2 100644 --- a/AF/CatAF.aspx +++ b/AF/CatAF.aspx @@ -209,7 +209,8 @@ - + <%----%> + diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index e09c65bf0..c3f151af4 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -1630,7 +1630,7 @@ Public Class ClsCompras #Region "N O T A S - C R E D I T O" - Public Function GetNotasCreditoRep(CveProveedor As Integer, Opcion As Integer, FechaI As String, FechaF As String, CveEmpresa As Integer) As Boolean + Public Function GetNotasCreditoRep(CveProveedor As Integer, Opcion As Integer, FechaI As String, FechaF As String, CveEmpresa As Integer, Optional TipoReporte As Integer = 1) As Boolean Dim Retorno As Boolean = False @@ -1642,6 +1642,8 @@ Public Class ClsCompras .Add("@FechaI", SqlDbType.VarChar).Value = FechaI .Add("@FechaF", SqlDbType.VarChar).Value = FechaF .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@TipoReporte", SqlDbType.Int).Value = TipoReporte + End With Try @@ -1656,6 +1658,9 @@ Public Class ClsCompras #End Region + + + #Region "F A C T U R A S " Public Function GetFacturas(CveFactura As Integer, Folio As String, FechaFacturaI As Date, FechaFacturaF As Date, RFC As String, Proveedor As String, FueValidado As Integer, CveResponsable As Integer, CveProveedorClasificacion As Integer, CveTipoProveedor As Integer, TipoComprobante As String, CveEmpresa As Integer, Optional Opcion As Integer = 1) As Boolean diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 6de031337..3214eed66 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -499,6 +499,7 @@ <%----%> + <%-- Ocuado se carga con funcionalidad 574 --%> @@ -534,6 +535,19 @@ + +
+ Remisión Nota de Crédito +
+ + + + <%----%> +
+
+ + + @@ -5512,6 +5526,43 @@ + + + + + diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 6aa638695..cecb271b0 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1118,6 +1118,8 @@ Partial Class Compras_Compras End Set End Property + +#Region "PROPIEDADES PRONTO PAGO" ''' ''' Descuento por pronto pago proveedor ''' @@ -1192,6 +1194,38 @@ Partial Class Compras_Compras End Set End Property + Private Property ImporteRNCSaldar As Decimal + Get + If ViewState("ImporteRNCSaldar") Is Nothing Then + ViewState("ImporteRNCSaldar") = 0D + End If + Return ViewState("ImporteRNCSaldar").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("ImporteRNCSaldar") = value + End Set + End Property + + Private Property DTRemisionesNotaDeCredito As DataTable + Get + + If ViewState("DTRemisionesNotaDeCredito") Is Nothing Then + ViewState("DTRemisionesNotaDeCredito") = New DataTable + End If + + Return DirectCast(ViewState("DTRemisionesNotaDeCredito"), DataTable) + + End Get + Set(value As DataTable) + ViewState("DTRemisionesNotaDeCredito") = value + End Set + End Property + + +#End Region + + + @@ -1596,6 +1630,9 @@ Partial Class Compras_Compras DdlTipoComprobante.SelectedValueExist("DEV") End If + If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then + DdlTipoCompra.Items.Add(New ListItem("Remision Nota De Crédito", "13")) + End If End If @@ -6907,6 +6944,37 @@ Partial Class Compras_Compras End If Next + + If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso DdlRemisionNotaCredito.SelectedValue.ToEntero > 0 AndAlso ImporteRNCSaldar > 0 Then + + 'Dim importeMovimientoNC As Decimal = Gvr.FCTextBox("TxtImporte").Text.ToDecimal + + 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 = "NC" + Pago.Fecha = CompraActual.Fecha 'toma la misma fecha de la provisión en el pago de NC + + 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 = Gvr.DataKey("SerieFolio") + 'CompraPago.TC = Gvr.DataKey("TipoCambio").ToDecimal + 'CompraPago.Fecha = Gvr.DataKey("Fecha").ToDate + 'CompraPago.CveMoneda = Gvr.DataKey("CveMoneda").ToEntero + 'CompraPago.Total = Gvr.DataKey("Total").ToDecimal + 'CompraPago.CveTipoConceptoProveedor = CveTipoConcepto + CompraPago.CveSubProyecto = CompraActual.CveSubProyecto + + ErrorPrepoliza = AplicaPrePolizaPagoCompra(CompraPago, Pago, CvePrePoliza, ObjConta) + + End If + If ErrorPrepoliza Then ErrorMovtosCxP = True Exit Select @@ -7475,7 +7543,7 @@ Partial Class Compras_Compras If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso (ImporteRNC > 0 Or ImporteRNCProntoPago > 0) Then - If Not GeneraRemisionsNotadeCredito(ObjCompras.IniciaTransacSQL) Then + If Not GeneraRemisionsNotadeCredito(ObjCompras.IniciaTransacSQL, CveCompra) Then TieneError = True End If End If @@ -14354,7 +14422,7 @@ Partial Class Compras_Compras End Sub Protected Sub BtnVincularOC_Click(sender As Object, e As EventArgs) - + VincularOcProntoPago = False AjusteProntoPagoPorcentajeIVA = 0D AjusteProntoPagoConIVA = 0D AjusteProntoPagoSinIVA = 0D @@ -14435,10 +14503,14 @@ Partial Class Compras_Compras Next AjusteProntoPagoPorcentajeIVA = TmpDT.MAX("IVAPorcentaje").ToDecimal - AjusteProntoPagoConIVA = (ImporteCompraConIVA - ImporteOCConIVA) '+ ((ImporteCompraConIVA) * PorcentajeProntoPago) - AjusteProntoPagoSinIVA = (ImporteCompraSinIVA - ImporteOCSinIVA) '+ ((ImporteCompraSinIVA) * PorcentajeProntoPago) + AjusteProntoPagoConIVA = (ImporteCompraConIVA - ImporteOCConIVA) + AjusteProntoPagoSinIVA = (ImporteCompraSinIVA - ImporteOCSinIVA) + + If ConfirmaVinculacionOCProntoPago() Then + Vinculacion() + End If + - Vinculacion() Else LbSubTotalDif.Visible = True @@ -14453,6 +14525,7 @@ Partial Class Compras_Compras UpEstatus.Update() End Sub Protected Sub BtnVincularOCCompleta_Click(sender As Object, e As EventArgs) + VincularOcProntoPago = False Vinculacion(True) End Sub Private Sub Vinculacion(Optional VinculacionCompleta As Boolean = False) @@ -15356,6 +15429,9 @@ Partial Class Compras_Compras Protected Sub DdlProveedores_SelectedIndexChanged(sender As Object, e As EventArgs) CargarFacturas() + If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then + CargaDdlRemisionNotaCredito() + End If End Sub Private Sub CargarFacturas() @@ -19327,6 +19403,7 @@ Partial Class Compras_Compras dr("CveMetodoInventario") = 1 Next CargaGvInv() + End If ElseIf DdlTipoComprobante.SelectedValue.Contiene("Fac") Then If DdlTipoCompra.SelectedValue.Contiene("14") Then 'Recolección @@ -19342,9 +19419,24 @@ Partial Class Compras_Compras End If End If + If DdlTipoCompra.SelectedValue = "13" Then 'Remisión de nota de crédito + + If DdlTipoComprobante.SelectedValue = "NC" Then + CargaDdlRemisionNotaCredito() + 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" @@ -20514,24 +20606,7 @@ Partial Class Compras_Compras If resultadosFiltrados.Count > 0 Then - Dim EnumAgrupado = (From row In TmpDT.AsEnumerable() - Group row By - SubProyecto = row.Field(Of String)("SubProyecto"), - CveSubProyecto = row.Field(Of Integer)("CveSubProyecto"), - Clasificacion = row.Field(Of String)("Clasificacion"), - CveClasificacion = row.Field(Of Integer)("CveClasificacion"), - TipoGasto = row.Field(Of String)("TipoGasto"), - CveTipoGasto = row.Field(Of Integer)("CveTipoGasto") - Into Group - Select New With { - .SubProyecto = SubProyecto, - .CveSubProyecto = CveSubProyecto, - .Clasificacion = Clasificacion, - .CveClasificacion = CveClasificacion, - .CveTipoGasto = CveTipoGasto, - .TipoGasto = TipoGasto, - .TotalSum = Group.Sum(Function(r) If(IsDBNull(r("Total")), 0D, Convert.ToDecimal(r("Total")))) - }).ToList() + ''.TotalSum = Group.Sum(Function(r) r.Field(Of Decimal)("Total")) If Opcion = 1 Then @@ -20568,6 +20643,48 @@ Partial Class Compras_Compras Else + + 'Dim EnumAgrupado = (From row In TmpDT.AsEnumerable() + ' Group row By + ' SubProyecto = row.Field(Of String)("SubProyecto"), + ' CveSubProyecto = row.Field(Of Integer)("CveSubProyecto"), + ' Clasificacion = row.Field(Of String)("Clasificacion"), + ' CveClasificacion = row.Field(Of Integer)("CveClasificacion"), + ' TipoGasto = row.Field(Of String)("TipoGasto"), + ' CveTipoGasto = row.Field(Of Integer)("CveTipoGasto") + ' Into Group + ' Select New With { + ' .SubProyecto = SubProyecto, + ' .CveSubProyecto = CveSubProyecto, + ' .Clasificacion = Clasificacion, + ' .CveClasificacion = CveClasificacion, + ' .CveTipoGasto = CveTipoGasto, + ' .TipoGasto = TipoGasto, + ' .TotalSum = Group.Sum(Function(r) If(IsDBNull(r("Total")), 0D, Convert.ToDecimal(r("Total")))) + ' }).ToList() + + Dim EnumAgrupado = ( + From row In TmpDT.AsEnumerable() + Group row By + SubProyecto = If(row.IsNull("SubProyecto"), String.Empty, row.Field(Of String)("SubProyecto")), + CveSubProyecto = If(row.IsNull("CveSubProyecto"), -1, row.Field(Of Integer)("CveSubProyecto")), + Clasificacion = If(row.IsNull("Clasificacion"), String.Empty, row.Field(Of String)("Clasificacion")), + CveClasificacion = If(row.IsNull("CveClasificacion"), -1, row.Field(Of Integer)("CveClasificacion")), + TipoGasto = If(row.IsNull("TipoGasto"), String.Empty, row.Field(Of String)("TipoGasto")), + CveTipoGasto = If(row.IsNull("CveTipoGasto"), -1, row.Field(Of Integer)("CveTipoGasto")) + Into Group + Select New With { + .SubProyecto = SubProyecto, + .CveSubProyecto = CveSubProyecto, + .Clasificacion = Clasificacion, + .CveClasificacion = CveClasificacion, + .CveTipoGasto = CveTipoGasto, + .TipoGasto = TipoGasto, + .TotalSum = Group.Sum(Function(r) If(IsDBNull(r("Total")), 0D, Convert.ToDecimal(r("Total")))) + } + ).ToList() + + For Each item In EnumAgrupado @@ -20633,7 +20750,7 @@ Partial Class Compras_Compras #Region "PRONTO PAGO" - Public Function GeneraRemisionsNotadeCredito(ByRef trasaccion As SqlTransaction) As Boolean + Public Function GeneraRemisionsNotadeCredito(ByRef trasaccion As SqlTransaction, CveCompraRegistrada As Integer) As Boolean Dim respuesta As Boolean = True Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero @@ -20669,6 +20786,8 @@ Partial Class Compras_Compras CompraRNC.CveMoneda = DdlMoneda.SelectedValue.ToEntero CompraRNC.Serie = TxtSerie.Text CompraRNC.Folio = TxtFolio.Text + CompraRNC.CveCompraAmortizacion = CveCompraRegistrada + @@ -20703,6 +20822,7 @@ Partial Class Compras_Compras CompraRNCProntoPAgo.CveMoneda = DdlMoneda.SelectedValue.ToEntero CompraRNCProntoPAgo.Serie = $"{TxtSerie.Text}_P" CompraRNCProntoPAgo.Folio = $"{TxtFolio.Text}_P" + CompraRNCProntoPAgo.CveCompraAmortizacion = CveCompraRegistrada CompraRNCProntoPAgo.ConfiguraRegistroRapidoRNC(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNCProntoPago, ImporteRNCProntoPago) If Not CompraRNCProntoPAgo.AddCompraRNC(trasaccion) Then @@ -20719,8 +20839,99 @@ Partial Class Compras_Compras Return respuesta End Function + + Public Property VincularOcProntoPago As Boolean + Get + If ViewState("VincularOcProntoPago") Is Nothing Then + ViewState("VincularOcProntoPago") = False + End If + Return Boolean.Parse(ViewState("VincularOcProntoPago").ToString) + End Get + Set(value As Boolean) + ViewState("VincularOcProntoPago") = value + End Set + End Property + + Public Function ConfirmaVinculacionOCProntoPago() As Boolean + + If VincularOcProntoPago Then + Return True + Else + + If ImporteRNCProntoPago > 0 Then + LblModalConfirmaVinculacionProntoPago.Text = $"Existe una diferencia de ${(ImporteRNC + ImporteRNCProntoPago).ToString("###,###,###.00")} entre la compra y la Orden de Compra, se generararan dos Remisiones de Nota de Crédito una por descuento de ${ImporteRNC.ToString("###,###,###.00")} y otra por 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 una por descuento de ${ImporteRNC.ToString("###,###,###.00")}" + End If + + RegistraScript("$('#DVModalConfirmaVinculacionProntoPago').modal('show');") + UpModalConfirmaVinculacionProntoPago.Update() + + Return False + End If + + End Function + + Protected Sub BtnModalConfirmaVinculacionProntoPago_Click(sender As Object, e As EventArgs) + + RegistraScript("$('#DVModalConfirmaVinculacionProntoPago').modal('hide');") + VincularOcProntoPago = True + BtnVincularOC_Click(Nothing, Nothing) + + End Sub + + Private Sub CargaDdlRemisionNotaCredito() + DvDdlRemisionNotaCredito.Visible = True + DTRemisionesNotaDeCredito = New DataTable + + Dim ObjCompras As New ClsCompras + + 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 + Protected Sub DdlRemisionNotaCredito_SelectedIndexChanged(sender As Object, e As EventArgs) + + 'ImporteRNCSaldar = 0 + + 'If DdlRemisionNotaCredito.SelectedValue.ToEntero > 0 Then + ' ImporteRNCSaldar = DTRemisionesNotaDeCredito.FiltroPrimeroValor("Saldo", $" CveCompra = {DdlRemisionNotaCredito.SelectedValue.ToEntero} ").ToDecimal + ' SerieFolioProntoPago = DTRemisionesNotaDeCredito.FiltroPrimeroValor("Saldo", $" CveCompra = {DdlRemisionNotaCredito.SelectedValue.ToEntero} ").ToDecimal + ' TipoCambioProntoPago = DTRemisionesNotaDeCredito.FiltroPrimeroValor("Saldo", $" CveCompra = {DdlRemisionNotaCredito.SelectedValue.ToEntero} ").ToDecimal + ' FechaProntoPago = DTRemisionesNotaDeCredito.FiltroPrimeroValor("Saldo", $" CveCompra = {DdlRemisionNotaCredito.SelectedValue.ToEntero} ").ToDecimal + ' CveMonedaProntoPago = DTRemisionesNotaDeCredito.FiltroPrimeroValor("Saldo", $" CveCompra = {DdlRemisionNotaCredito.SelectedValue.ToEntero} ").ToDecimal + ' ProntoPago = DTRemisionesNotaDeCredito.FiltroPrimeroValor("Saldo", $" CveCompra = {DdlRemisionNotaCredito.SelectedValue.ToEntero} ").ToDecimal + 'End If + + ''Alert(ImporteRNCSaldar.ToString) + 'CompraPago.SerieFolio = Gvr.DataKey("SerieFolio") + 'CompraPago.TC = Gvr.DataKey("TipoCambio").ToDecimal + 'CompraPago.Fecha = Gvr.DataKey("Fecha").ToDate + 'CompraPago.CveMoneda = Gvr.DataKey("CveMoneda").ToEntero + + 'CompraPago.Total = Gvr.DataKey("Total").ToDecimal + 'CompraPago.CveTipoConceptoProveedor = CveTipoConcepto + + + End Sub + #End Region + + + + End Class @@ -22734,14 +22945,14 @@ Public Class ClsCompraManagerCompras If ES_RNC Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Me.Total, Me.Total, 370, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, Me.Total), TipoCambio:=TipoCambio, + 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 respuesta = False End If If respuesta Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Me.Total, Me.Total, 372, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, Me.Total), TipoCambio:=TipoCambio, + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Me.Total, Me.Total, 372, 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 respuesta = False diff --git a/Compras/RepNotasCredito.aspx b/Compras/RepNotasCredito.aspx index d7f55adc9..81a7980dc 100644 --- a/Compras/RepNotasCredito.aspx +++ b/Compras/RepNotasCredito.aspx @@ -104,108 +104,224 @@ - - - - - - - - - - - - <%-- --%> - Serie Folio - <%-- --%> - <%-- --%> - - - - - - - - - <%----%> - Fecha - <%-- --%> - <%----%> - - - - - - - - - <%----%> - Proveedor - <%-- --%> - <%-- --%> - - - - - - - - - <%----%> - Moneda - <%----%> - <%----%> - - - - - - - - - <%----%> - Original - <%----%> - <%----%> - - - - - - - - - <%-- --%> - Abonado - <%----%> - <%-- --%> - - - - - - - - - <%-- --%> - Saldo - <%----%> - <%----%> - - - - - - - - - - - - - + + + + + + +
+
+ + + + + + + + + + + + + + <%-- --%> + Serie Folio + <%-- --%> + <%-- --%> + + + + + + + + + <%----%> + Fecha + <%-- --%> + <%----%> + + + + + + + + + <%----%> + Proveedor + <%-- --%> + <%-- --%> + + + + + + + + + <%----%> + Moneda + <%----%> + <%----%> + + + + + + + + + <%----%> + Original + <%----%> + <%----%> + + + + + + + + + <%-- --%> + Abonado + <%----%> + <%-- --%> + + + + + + + + + <%-- --%> + Saldo + <%----%> + <%----%> + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+
+ + + + + + + + + + + + + Serie Folio + + + + + + + + + Fecha + + + + + + + + + Proveedor + + + + + + + + + Moneda + + + + + + + + + Original + + + + + + + + + Abonado + + + + + + + + + Saldo + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+ +