--Cancelacion de NC, desde factura de ingreso

This commit is contained in:
JPerez
2025-06-26 17:55:28 -07:00
parent 2d3852764e
commit 52c989d25f
3 changed files with 112 additions and 11 deletions

View File

@@ -17812,7 +17812,7 @@ Partial Class Ventas
ObjNC.PreparaTimbre()
AjustarTimbreNC(ObjNC)
Retorno = ObjNC.EmitirFactura(False, Transac:=ObjVentas.IniciaTransacSQL(), Modulo:="Cobranza/GuardarVenta", MostrarURL:=True)
Retorno = ObjNC.EmitirFactura(False, Transac:=ObjVentas.IniciaTransacSQL(), Modulo:="Vta/NC/GuardarVenta", MostrarURL:=True)
Retorno.Factura = ObjNC
If Retorno IsNot Nothing AndAlso Retorno.CveVenta > 0 Then
@@ -27412,7 +27412,7 @@ Partial Class Ventas
End If
If Extra.Trim().Length > 0 Then
SbCondiciones.AppendFormat("<br><b>*{0}</b>", Extra)
SbCondiciones.AppendFormat("{0}", Extra)
End If
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
@@ -27439,6 +27439,29 @@ Partial Class Ventas
Private Sub LbCancelarDocumento_Click(sender As Object, e As EventArgs) Handles LbCancelarDocumento.Click
Dim SaldoAlmacen As Decimal = 0
If DdlTipoComprobante.SelectedValue = "Ing" Then
Dim DtNCCancelar As DataTable = Nothing
Dim ObjVta As New ClsVentas
If ObjVta.GetVentasAntNC(CveVenta, -1) Then
DtNCCancelar = (
From row In ObjVta.DtResultados.AsEnumerable()
Where row("TipoDocto").ToString() = "Egs" AndAlso row("CveTipoRelacion").ToString() = "7"
Group row By categoria = row.Field(Of Integer)("CveVenta") Into grupo = Group
Select New With {
.CveVenta = categoria,
.Total = grupo.Sum(Function(r) r.Field(Of Decimal)("Importe"))
}
).QueryToDataTable(True)
End If
ObjVta.Dispose()
If DtNCCancelar IsNot Nothing AndAlso DtNCCancelar.FiltraParametros("Total > 0").Rows.Count > 0 Then
DivCancelarEgs.Visible = True
ChkCancelarNC.Checked = True
End If
End If
If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Dev", "Ped") Then
Dim PermiteCancelar As Boolean = True
@@ -27947,8 +27970,81 @@ Partial Class Ventas
CveEstatusFacturaAsignado = 4
End If
resp = ObjFacturaCancelacion.CancelarFactura(If(ChkDevAlm.Checked, 1, 0), ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion, ForzarDevolucion:=GenerarDevolucionAnticipada, CancelacionPagos:=CancelacionPagos, ValidarSAT:=ValidarSAT, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado)
Dim SbNC As New StringBuilder
Dim ErrorCancelacionNC As Boolean = False
Dim SbNCError As New StringBuilder
If ObjFacturaCancelacion.TipoDocto = "Ing" AndAlso ChkCancelarNC.Checked Then
'NO CANCELAR EL PAGO EN LA CANCELACION DE LA FACTURA, SI NO DESDE LA CANCELACION DESDE LA NC
CancelacionPagos = OpcionesCancelacionPagos.SinPagos
Dim DtNCCancelar As DataTable = Nothing
Dim ObjVta As New ClsVentas
If ObjVta.GetVentasAntNC(CveVenta, -1) Then
DtNCCancelar = (
From row In ObjVta.DtResultados.AsEnumerable()
Where row("TipoDocto").ToString() = "Egs" AndAlso row("CveTipoRelacion").ToString() = "7"
Group row By categoria = row.Field(Of Integer)("CveVenta") Into grupo = Group
Select New With {
.CveVenta = categoria,
.Total = grupo.Sum(Function(r) r.Field(Of Decimal)("Importe"))
}
).QueryToDataTable(True)
End If
ObjVta.Dispose()
If DtNCCancelar IsNot Nothing Then
For Each RowVta As DataRow In DtNCCancelar.FiltraParametros("Total > 0").Rows
Dim ObjNCCancelacion As New Modelos.Factura(UsuarioActual, RowVta("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa, EsCancelacion:=True, VerificaAlmacen:=False)
ObjNCCancelacion.CveDevolucion = ObjFacturaCancelacion.CveVenta
If ObjNCCancelacion IsNot Nothing Then
Dim respNC = ObjNCCancelacion.CancelarFactura(RealizarDevolucionAlmacen:=0, ValidarSAT:=ValidarSAT)
If respNC IsNot Nothing Then
If respNC.HuboError Then
SbNCError.Append(respNC.Mensaje)
ErrorCancelacionNC = True
Exit For
Else
SbNC.AppendFormat(" - <b>{0}</b>", ObjNCCancelacion.SerieFolio)
End If
End If
End If
Next
If Not ErrorCancelacionNC Then
Using ObjV As New ClsVentas
If ObjV.GetVenta(ObjFacturaCancelacion.CveVenta, UsuarioActual.CveEmpresa) Then
Dim DbRowVenta As DataRow = ObjV.DtResultados.FiltroPrimero("")
If DbRowVenta IsNot Nothing Then
ObjFacturaCancelacion.Pagado = DbRowVenta("Pagado").ToString().ToDecimal()
ObjFacturaCancelacion.Saldo = DbRowVenta("Saldo").ToString().ToDecimal()
End If
End If
End Using
End If
End If
End If
If Not ErrorCancelacionNC Then
resp = ObjFacturaCancelacion.CancelarFactura(If(ChkDevAlm.Checked, 1, 0), ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion, ForzarDevolucion:=GenerarDevolucionAnticipada, CancelacionPagos:=CancelacionPagos, ValidarSAT:=ValidarSAT, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado)
Else
resp = New Modelos.Factura.MCancelacionVentaMensaje()
resp.HuboError = True
resp.Mensaje = "No se pudo cancelar la factura"
End If
strMensaje.Append(resp.Mensaje)
If ChkCancelarNC.Checked Then
strMensaje.AppendFormat("<br/>{0}", If(ErrorCancelacionNC, $"Ocurrió un error al cancelar las NC relacionadas. <br/> {SbNCError.ToString()}", $"Se cancelaron las siguientes notas de crédito. <br/> {SbNC.ToString()}"))
End If
Dim DtBonificaciones As DataTable = Nothing
'SI ES RNC DE CARGO DEBE CANCELAR LAS BON