--Correcion en proceso de cancelacion de compras

This commit is contained in:
2023-06-29 16:52:56 -07:00
parent 4f8e392036
commit 48edc7963a

View File

@@ -6613,9 +6613,6 @@ Partial Class Compras_Compras
Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}"
If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then
ErrorMovInv = True
End If
If importeMovimiento > 0 Or TxtTotal.Text.ToDecimal = 0 Then If importeMovimiento > 0 Or TxtTotal.Text.ToDecimal = 0 Then
RegistroCuentaPuente = True RegistroCuentaPuente = True
@@ -13692,28 +13689,39 @@ Partial Class Compras_Compras
End If End If
End If End If
ObjComprasComprobacion.Dispose() ObjComprasComprobacion.Dispose()
Dim cvemovimientoentrada As Integer = -1
Dim ObjCompras As New ClsCompras
Dim ObjContabilidad As New ClsContabilidad(ObjCompras.IniciaTransacSQL())
Dim ObjInventario As New ClsInventarios(ObjCompras.IniciaTransacSQL())
Dim ObjAC As ClsContPAQi = Nothing
If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then
ObjAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjAC.IniciaTransacSQL()
End If
Dim ErrorCancelar = False
Dim IdPolizaNueva = -1
Dim FolioPolizaNueva = -1
Dim CvePrePolizaNueva = -1
Try
'DEVOLUCIÓN AUTOMATICA 'DEVOLUCIÓN AUTOMATICA
If CheckDevAuto.Checked Then If CheckDevAuto.Checked Then
Dim ErrorMovInv As Boolean = False
Dim folio As Integer Dim fecha As Date = TxtFechaCancelacion.Text.ToDateTime().AddHours(23).AddMinutes(59)
Dim fecha As Date = TxtFechaCancelacion.Text.ToDate
Dim importeconcepto As Decimal Dim importeconcepto As Decimal
Dim ObjInventario As New ClsInventarios
Dim ObjCompra As New ClsCompras
Dim tbmovs As DataTable = Nothing Dim tbmovs As DataTable = Nothing
Dim TmpDT As DataTable = Nothing Dim TmpDT As DataTable = Nothing
Dim TipoCambioGuardar As Decimal = 1 Dim TipoCambioGuardar As Decimal = 1
Dim tcvealmacen As Integer = 0
If ObjCompra.GetCompraDetalle(CveCompra, UsuarioActual.CveEmpresa) Then
If ObjCompra.DtResultados.Rows.Count > 0 Then If ObjCompras.GetCompraDetalle(CveCompra, UsuarioActual.CveEmpresa) Then
TmpDT = ObjCompra.DtResultados If ObjCompras.DtResultados.Rows.Count > 0 Then
TmpDT = ObjCompras.DtResultados.Copy()
End If End If
End If End If
@@ -13728,60 +13736,93 @@ Partial Class Compras_Compras
End If End If
TipoCambio = If(DivTC.Visible, TipoCambioGuardar, TipoCambio) TipoCambio = If(DivTC.Visible, TipoCambioGuardar, TipoCambio)
For Each dtMovs As DataRow In TmpDT.Rows 'For Each dtMovs As DataRow In TmpDT.Rows
If TmpDT.Rows.Count > 0 Then ' If TmpDT.Rows.Count > 0 Then
tcvealmacen = dtMovs("AlmacenRegistrado").ToString.ToEntero ' tcvealmacen = dtMovs("AlmacenRegistrado").ToString.ToEntero
' Exit For
' End If
'Next
Dim DtMovimientos = tbmovs.FiltraParametros("Origen = 1", DistinctColumns:={"CveMovimiento", "CveConcepto", "CveAlmacen", "Origen"})
For Each RowMovto As DataRow In DtMovimientos.Rows
Dim CveMovimientoEntrada As Integer = -1
Dim Folio As Integer
Dim CveAlmacen As Integer = RowMovto("CveAlmacen").ToString().ToEntero()
Dim CveConceptoDevolucion As Integer = -1
Dim CveConcetoEntrada = RowMovto("CveConcepto").ToString().ToEntero()
Dim CveMovimientoReferencia As Integer = RowMovto("CveMovimiento").ToString().ToEntero()
Select Case CveConcetoEntrada
Case 2
CveConceptoDevolucion = 13
End Select
Folio = ObjInventario.GetFolioSiguiente(CveConceptoDevolucion, UsuarioActual.CveEmpresa)
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, CveConceptoDevolucion, 1, fecha, Folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), Modulo:="Devolucion Automatica")
If CveMovimientoEntrada <= 0 Then
ErrorCancelar = True
Exit For
Else
For Each dr As DataRow In tbmovs.Rows
If dr("CveAlmacen").ToString.ToEntero = CveAlmacen And dr("CveCompraDetalle").ToString.ToEntero <> -1 And dr("origen").ToString.ToEntero <> -1 And dr("Total").ToString.ToDecimal <> 0 Then
'hay que restarle descuento
importeconcepto = dr("Total").ToString.ToDecimal
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, dr("Cantidad").ToString.ToDouble, dr("CveUM").ToString.ToEntero, dr("CvePS").ToString.ToEntero, importeconcepto, -1, CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero, Serie:=dr("Serie").ToString) Then
ErrorCancelar = True
Exit For
End If
End If
Next
End If
If CvePrePoliza > 0 Then
Dim Total68 As Decimal = 0
If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then
Total68 = ObjInventario.DtResultados.SUMD("Total").RoundSQL(2) * -1
End If
If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then
Dim DtPrePolizaAlmacen = ObjContabilidad.DtResultados.FiltraParametros($"CveMovimientoAlmacen = {CveMovimientoReferencia}")
CvePrePolizaNueva = ObjContabilidad.AddPrePolizas("Compras/Cancelar", DtPrePolizaAlmacen.Rows(0)("CvePlantillaPoliza").ToString.ToEntero, DtPrePolizaAlmacen.Rows(0)("Cargos").ToString.ToDouble * -1, DtPrePolizaAlmacen.Rows(0)("Abonos").ToString.ToDouble * -1, DtPrePolizaAlmacen.Rows(0)("CveMoneda").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, String.Format("Cancelación: {0}", DtPrePolizaAlmacen.Rows(0)("Concepto").ToString), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePolizaNueva > 0 Then
For Each dr As DataRow In DtPrePolizaAlmacen.Rows
If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePolizaNueva, CBool(dr("TipoMovto").ToString), Total68, dr("Referencia").ToString, dr("CveConceptoContable").ToString.ToEntero,
dr("Concepto").ToString, TxtFechaCancelacion.Text.ToDate, dr("IdCtaContable").ToString.ToEntero, dr("IdSegmentoNegocio").ToString.ToEntero, dr("CveIE").ToString.ToEntero,
dr("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero,
CveMovimientoEntrada,
dr("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero,
ImporteMX:=Total68, ImporteME:=Total68,
CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero,
PorcentajeImpuesto:=dr("PorcentajeImpuesto").ToString.ToDecimal,
CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero) Then
ErrorCancelar = True
Exit For Exit For
End If End If
Next Next
folio = ObjInventario.GetFolioSiguiente(13, UsuarioActual.CveEmpresa)
cvemovimientoentrada = ObjInventario.AddMovimiento(tcvealmacen, 13, 1, fecha, folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), Modulo:="Devolucion Automatica")
If cvemovimientoentrada <= 0 Then
ErrorMovInv = True
Else Else
For Each dr As DataRow In tbmovs.Rows ErrorCancelar = True
If dr("cvealmacen").ToString.ToEntero = tcvealmacen And dr("CveCompraDetalle").ToString.ToEntero <> -1 And dr("origen").ToString.ToEntero <> -1 And dr("Total").ToString.ToDecimal <> 0 Then End If
'hay que restarle descuento Else
importeconcepto = dr("Total").ToString.ToDecimal ErrorCancelar = True
If Not ObjInventario.AddMovimientoDetalle(cvemovimientoentrada, dr("cantidad").ToString.ToDouble, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, importeconcepto, -1, CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero, Serie:=dr("Serie").ToString) Then
ErrorMovInv = True
Exit Sub
End If End If
End If End If
Next Next
End If End If
If ErrorMovInv = True Then
ObjInventario.RollBack()
End If
ObjInventario.Dispose()
ObjCompra.Dispose()
End If
Dim ObjAC As ClsContPAQi = Nothing
If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1") AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then
ObjAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjAC.IniciaTransacSQL()
End If
Dim ObjCompras As New ClsCompras
Dim ObjContabilidad As New ClsContabilidad(ObjCompras.IniciaTransacSQL())
Dim ErrorCancelar = False
Dim IdPolizaNueva = -1
Dim FolioPolizaNueva = -1
Dim CvePrePolizaNueva = -1
Dim dt As DataTable Dim dt As DataTable
' MOVIMIENTOS CONTRARIOS (NEGATIVOS)
' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS)
If True Then
'CREA POLIZA NEGATIVA 'CREA POLIZA NEGATIVA
If IdPoliza > 0 AndAlso ObjAC IsNot Nothing AndAlso UsuarioActual.Empresa.UsaAC Then If Not ErrorCancelar AndAlso IdPoliza > 0 AndAlso ObjAC IsNot Nothing AndAlso UsuarioActual.Empresa.UsaAC Then
If ObjAC.GetPoliza(IdPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then If ObjAC.GetPoliza(IdPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then
dt = ObjAC.DtResultados dt = ObjAC.DtResultados
@@ -13809,6 +13850,7 @@ Partial Class Compras_Compras
End If End If
'CREA PRE-POLIZA NEGATIVA 'CREA PRE-POLIZA NEGATIVA
If Not ErrorCancelar Then
If DdlTipoComprobante.SelectedValue.Contiene("NC") Then If DdlTipoComprobante.SelectedValue.Contiene("NC") Then
If ObjCompras.GetCancelarNC(CveCompra, UsuarioActual.CveEmpresa) Then If ObjCompras.GetCancelarNC(CveCompra, UsuarioActual.CveEmpresa) Then
dt = ObjCompras.DtResultados dt = ObjCompras.DtResultados
@@ -13836,7 +13878,7 @@ Partial Class Compras_Compras
Else Else
If CvePrePoliza > 0 Then If CvePrePoliza > 0 Then
If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then
dt = ObjContabilidad.DtResultados dt = ObjContabilidad.DtResultados.FiltraParametros("ISNULL(CveMovimientoAlmacen,0) <=0")
CvePrePolizaNueva = ObjContabilidad.AddPrePolizas("Compras/Cancelar", dt.Rows(0)("CvePlantillaPoliza").ToString.ToEntero, dt.Rows(0)("Cargos").ToString.ToDouble * -1, dt.Rows(0)("Abonos").ToString.ToDouble * -1, dt.Rows(0)("CveMoneda").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, String.Format("Cancelación: {0}", dt.Rows(0)("Concepto").ToString), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) CvePrePolizaNueva = ObjContabilidad.AddPrePolizas("Compras/Cancelar", dt.Rows(0)("CvePlantillaPoliza").ToString.ToEntero, dt.Rows(0)("Cargos").ToString.ToDouble * -1, dt.Rows(0)("Abonos").ToString.ToDouble * -1, dt.Rows(0)("CveMoneda").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, String.Format("Cancelación: {0}", dt.Rows(0)("Concepto").ToString), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePolizaNueva > 0 Then If CvePrePolizaNueva > 0 Then
@@ -13844,7 +13886,7 @@ Partial Class Compras_Compras
If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePolizaNueva, CBool(dr("TipoMovto").ToString), dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, dr("CveConceptoContable").ToString.ToEntero, If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePolizaNueva, CBool(dr("TipoMovto").ToString), dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, dr("CveConceptoContable").ToString.ToEntero,
dr("Concepto").ToString, TxtFechaCancelacion.Text.ToDate, dr("IdCtaContable").ToString.ToEntero, dr("IdSegmentoNegocio").ToString.ToEntero, dr("CveIE").ToString.ToEntero, dr("Concepto").ToString, TxtFechaCancelacion.Text.ToDate, dr("IdCtaContable").ToString.ToEntero, dr("IdSegmentoNegocio").ToString.ToEntero, dr("CveIE").ToString.ToEntero,
dr("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, dr("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero,
If(cvemovimientoentrada > 0, cvemovimientoentrada, dr("CveMovimientoAlmacen").ToString.ToEntero), dr("CveMovimientoAlmacen").ToString.ToEntero,
dr("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero,
ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1,
CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero,
@@ -13862,48 +13904,6 @@ Partial Class Compras_Compras
End If End If
End If End If
End If End If
'MES ACTUAL
Else
'LIMPIA POLIZA PONIENDO IMPORTE EN CEROS
If IdPoliza > 0 AndAlso ObjAC IsNot Nothing Then
If ObjAC.GetPoliza(IdPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then
dt = ObjAC.DtResultados
For Each dr As DataRow In dt.Rows
If Not ObjAC.UpdateMovimiento(dr("Id").ToString.ToEntero, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "1", 0, dr("Referencia").ToString, dr("Concepto").ToString, dr("IdSegNeg").ToString.ToEntero, dr("Fecha").ToString.ToDate) Then
ErrorCancelar = True : Exit For
End If
Next
'AJUSTA POLIZA
If Not ErrorCancelar Then
If Not ObjAC.AjustaPoliza(IdPoliza) Then
ErrorCancelar = True
End If
End If
Else
ErrorCancelar = True
End If
End If
'LIMPIA PRE-POLIZA PONIENDO IMPORTE EN CEROS
If CvePrePoliza > 0 Then
If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then
dt = ObjContabilidad.DtResultados
For Each dr As DataRow In dt.Rows
If Not ObjContabilidad.UpdatePrePolizasDetalle(dr("CvePrePolizaDetalle").ToString.ToEntero, dr("Concepto").ToString, dr("CveSubProyecto").ToString.ToEntero, dr("IdCtaContable").ToString.ToEntero, CBool(dr("TipoMovto").ToString), 0, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorCancelar = True : Exit For
End If
Next
Else
ErrorCancelar = True
End If
End If
End If End If
If Not ErrorCancelar Then If Not ErrorCancelar Then
@@ -13918,6 +13918,10 @@ Partial Class Compras_Compras
ErrorCancelar = True ErrorCancelar = True
End If End If
End If End If
Catch ex As Exception
OnError("Ocurrió un error al cancelar la compra", ex)
ErrorCancelar = True
End Try
If Not ErrorCancelar Then If Not ErrorCancelar Then
If ObjAC IsNot Nothing Then If ObjAC IsNot Nothing Then