Compras Pronto Pago

This commit is contained in:
rakcsle
2024-04-01 16:30:05 -07:00
parent e280f83de6
commit bfde4b48e3
8 changed files with 647 additions and 175 deletions

View File

@@ -1118,6 +1118,8 @@ Partial Class Compras_Compras
End Set
End Property
#Region "PROPIEDADES PRONTO PAGO"
''' <summary>
''' Descuento por pronto pago proveedor
''' </summary>
@@ -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