diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 0478b39c0..35bab8940 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6613,9 +6613,6 @@ Partial Class Compras_Compras 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 RegistroCuentaPuente = True @@ -13692,74 +13689,11 @@ Partial Class Compras_Compras End If End If ObjComprasComprobacion.Dispose() - Dim cvemovimientoentrada As Integer = -1 - - - 'DEVOLUCIÓN AUTOMATICA - If CheckDevAuto.Checked Then - Dim ErrorMovInv As Boolean = False - - Dim folio As Integer - Dim fecha As Date = TxtFechaCancelacion.Text.ToDate - Dim importeconcepto As Decimal - Dim ObjInventario As New ClsInventarios - Dim ObjCompra As New ClsCompras - Dim tbmovs As DataTable = Nothing - Dim TmpDT As DataTable = Nothing - Dim TipoCambioGuardar As Decimal = 1 - Dim tcvealmacen As Integer = 0 - - If ObjCompra.GetCompraDetalle(CveCompra, UsuarioActual.CveEmpresa) Then - If ObjCompra.DtResultados.Rows.Count > 0 Then - TmpDT = ObjCompra.DtResultados - End If - End If - - If ObjInventario.GetInv_ComprasMov(CveCompra, UsuarioActual.CveEmpresa) Then - If ObjInventario.DtResultados.Rows.Count > 0 Then - tbmovs = ObjInventario.DtResultados - End If - End If - - If DdlMoneda.SelectedValue.ToEntero > 1 Then - TipoCambioGuardar = If(DivTC.Visible, TxtTC.Text.ToDecimal, LblTC.Text.Substring(3).ToDecimal) - End If - TipoCambio = If(DivTC.Visible, TipoCambioGuardar, TipoCambio) - - For Each dtMovs As DataRow In TmpDT.Rows - If TmpDT.Rows.Count > 0 Then - tcvealmacen = dtMovs("AlmacenRegistrado").ToString.ToEntero - Exit For - End If - 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 - For Each dr As DataRow In tbmovs.Rows - 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 - '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 - ErrorMovInv = True - Exit Sub - End If - End If - Next - - End If - - If ErrorMovInv = True Then - ObjInventario.RollBack() - End If - ObjInventario.Dispose() - ObjCompra.Dispose() - End If - + 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 @@ -13767,21 +13701,128 @@ Partial Class Compras_Compras 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 + + Try + + 'DEVOLUCIÓN AUTOMATICA + If CheckDevAuto.Checked Then + + Dim fecha As Date = TxtFechaCancelacion.Text.ToDateTime().AddHours(23).AddMinutes(59) + Dim importeconcepto As Decimal + + Dim tbmovs As DataTable = Nothing + Dim TmpDT As DataTable = Nothing + Dim TipoCambioGuardar As Decimal = 1 - ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) - If True Then + If ObjCompras.GetCompraDetalle(CveCompra, UsuarioActual.CveEmpresa) Then + If ObjCompras.DtResultados.Rows.Count > 0 Then + TmpDT = ObjCompras.DtResultados.Copy() + End If + End If + If ObjInventario.GetInv_ComprasMov(CveCompra, UsuarioActual.CveEmpresa) Then + If ObjInventario.DtResultados.Rows.Count > 0 Then + tbmovs = ObjInventario.DtResultados + End If + End If + + If DdlMoneda.SelectedValue.ToEntero > 1 Then + TipoCambioGuardar = If(DivTC.Visible, TxtTC.Text.ToDecimal, LblTC.Text.Substring(3).ToDecimal) + End If + TipoCambio = If(DivTC.Visible, TipoCambioGuardar, TipoCambio) + + 'For Each dtMovs As DataRow In TmpDT.Rows + ' If TmpDT.Rows.Count > 0 Then + ' 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 + End If + Next + Else + ErrorCancelar = True + End If + Else + ErrorCancelar = True + End If + End If + + Next + + End If + + Dim dt As DataTable + + ' MOVIMIENTOS CONTRARIOS (NEGATIVOS) '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 dt = ObjAC.DtResultados @@ -13809,47 +13850,21 @@ Partial Class Compras_Compras End If 'CREA PRE-POLIZA NEGATIVA - If DdlTipoComprobante.SelectedValue.Contiene("NC") Then - If ObjCompras.GetCancelarNC(CveCompra, UsuarioActual.CveEmpresa) Then - dt = ObjCompras.DtResultados - - 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 - For Each dr As DataRow In dt.Rows - 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("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, - dr("CveMovimientoAlmacen").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero, - ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, - PorcentajeImpuesto:=dr("PorcentajeImpuesto").ToString.ToDecimal, CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero, - CveCompraAmortizacion:=dr("CveCompraAmortizacion").ToString.ToEntero) Then - ErrorCancelar = True - Exit For - End If - Next - Else - ErrorCancelar = True - End If - Else - ErrorCancelar = True - End If - Else - If CvePrePoliza > 0 Then - If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then - dt = ObjContabilidad.DtResultados + If Not ErrorCancelar Then + If DdlTipoComprobante.SelectedValue.Contiene("NC") Then + If ObjCompras.GetCancelarNC(CveCompra, UsuarioActual.CveEmpresa) Then + dt = ObjCompras.DtResultados 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 For Each dr As DataRow In dt.Rows 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("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("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero, - ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, - CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, - PorcentajeImpuesto:=dr("PorcentajeImpuesto").ToString.ToDecimal, - CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero) Then + 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("CveMovimientoAlmacen").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero, + ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, + PorcentajeImpuesto:=dr("PorcentajeImpuesto").ToString.ToDecimal, CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero, + CveCompraAmortizacion:=dr("CveCompraAmortizacion").ToString.ToEntero) Then ErrorCancelar = True Exit For End If @@ -13860,64 +13875,53 @@ Partial Class Compras_Compras Else ErrorCancelar = True End If - End If - End If + Else + If CvePrePoliza > 0 Then + If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then + dt = ObjContabilidad.DtResultados.FiltraParametros("ISNULL(CveMovimientoAlmacen,0) <=0") - '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 + 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 + For Each dr As DataRow In dt.Rows + 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("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, + dr("CveMovimientoAlmacen").ToString.ToEntero, + dr("CveActivoFijo").ToString.ToEntero, -1, -1, dr("CveCreditoDetalle").ToString.ToEntero, + ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, + 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 + End If + Next + Else + ErrorCancelar = True + End If + Else ErrorCancelar = True End If End If + End If + End If - Else + If Not ErrorCancelar Then + If Not ObjCompras.CancelarCompraOC(CveCompra, UsuarioActual.CveEmpresa) Then 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 + 'CANCELA COMPRA + If Not ErrorCancelar Then + If Not ObjCompras.UpdateEstatusCompra(CveCompra, -2) Then ErrorCancelar = True End If End If - - End If - - If Not ErrorCancelar Then - If Not ObjCompras.CancelarCompraOC(CveCompra, UsuarioActual.CveEmpresa) Then - ErrorCancelar = True - End If - End If - - 'CANCELA COMPRA - If Not ErrorCancelar Then - If Not ObjCompras.UpdateEstatusCompra(CveCompra, -2) Then - ErrorCancelar = True - 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 ObjAC IsNot Nothing Then