diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index c71136040..4021301ca 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4156,7 +4156,7 @@ Namespace Modelos End Select If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then - DtExistencias = ObjInventario.DtResultados.FiltraParametros($"CvePS IS NOT NULL AND {Filtro}") + DtExistencias = ObjInventario.DtResultados.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2") TieneSalida = DtExistencias.Rows.Count > 0 Else ErrorCancelar = True @@ -4269,6 +4269,12 @@ Namespace Modelos End If End If End If + + 'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL + If Not GeneraMovimientosVirtuales(CveVenta, ObjInventario) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." + End If Else 'UTILIZA LA DEVOLUCION YA REALIZADA If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then @@ -4503,6 +4509,58 @@ Namespace Modelos Return Retorno End Function + Private Function GeneraMovimientosVirtuales(CveVenta As Integer, ByRef ObjInventario As ClsInventarios) As Boolean + Dim ErrorCancelar As Boolean = False + Try + If UsuarioActual.CveEmpresa = 140 Then + Dim CveMovimientoSalida As Integer = -1 + Dim CveAlmacenVirutal As Integer = -1 + + Dim DtMovtosDev As DataTable = Nothing + + If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then + Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND CveTipoAlmacen = 24 AND CveConcepto = 3 AND CveVenta > 0") + CveMovimientoSalida = RowMovimiento("CveMovimiento").ToString().ToEntero() + CveAlmacenVirutal = RowMovimiento("CveAlmacen").ToString().ToEntero() + Else + ErrorCancelar = True + End If + + If CveMovimientoSalida > 0 Then + 'CARGA CONCEPTOS DEVUELTOS EN LA VENTA + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + DtMovtosDev = ObjInventario.DtResultados.Copy() + Else + ErrorCancelar = True + End If + + If DtMovtosDev IsNot Nothing AndAlso DtMovtosDev.Rows.Count > 0 Then + Dim CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenVirutal, 18, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1) + + For Each RowUsado As DataRow In DtMovtosDev.Rows + Dim CvePS = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble() + Dim PU As Double = RowUsado("PU").ToString().ToDouble() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorCancelar = True + Exit For + End If + Next + Else + ErrorCancelar = True + End If + + End If + End If + Catch ex As Exception + OnError("Ocurrió un error al realizar la devolución al almacen virtual.", ex) + ErrorCancelar = True + End Try + + Return Not ErrorCancelar + End Function Private Function GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimiento As Integer, ByRef ObjVentas As ClsVentas, ByRef ObjInventario As ClsInventarios, ByRef DtDevRem As DataTable, ByRef ListaRemisionesCancelar As List(Of Integer)) As Boolean Dim ErrorCancelar As Boolean = False diff --git a/Inventarios/RecepcionAlmacen.aspx b/Inventarios/RecepcionAlmacen.aspx index 60f5a4f91..fe8ca46d5 100644 --- a/Inventarios/RecepcionAlmacen.aspx +++ b/Inventarios/RecepcionAlmacen.aspx @@ -408,7 +408,8 @@ - + diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 377a2551a..3617f527e 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -353,9 +353,10 @@ Partial Class Inventarios_RecepcionAlmacen Set(value As Integer) ViewState("CveVendedor") = value End Set - End Property + End Property + #End Region - + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then @@ -1998,6 +1999,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim ObjCompras As New ClsCompras(ObjInventario.IniciaTransacSQL()) Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim ObjOC As New ClsOC(ObjInventario.IniciaTransacSQL()) + Dim ObjAcum As New ClsAcumuladores(ObjInventario.IniciaTransacSQL()) Dim ObjContaAC As ClsContPAQi = Nothing Dim ObjContaContPAQ As ClsContPAQi = Nothing @@ -2011,612 +2013,669 @@ Partial Class Inventarios_RecepcionAlmacen Dim MovtosEntrada As New List(Of Integer) Dim FoliosEntrada As New List(Of Integer) + 'VIRUAL + Dim CveMovimientoVirtual As Integer = -1 + Dim FolioVirtual As Integer = -1 + 'CONTABILIDAD Dim CvePrePoliza = -1 Dim MensajeContabilidad = "" - 'RECARGA TC CUANDO ES RECEPCION CON OC Y DOLARES - If CveOCSurtir > 0 And CveMoneda <> 1 Then - TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate) - End If - - If HdnTipoDocto.Value <> "Fac" Then RecibidaCompleta = False - - 'ENTRADA ALMACÉN - CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, If(TipoMovimiento > 1, 13, 2), 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), MovimientoFijo:=If(TipoMovimiento = 2, True, False), Remision:=TxtRemision.Text) - If CveMovimiento > 0 Then - InvFolio = ObjInventario.Folio.ToString - Dim DtDetalle As New DataTable - Dim DtDetalleLote As New DataTable - Dim PU As Decimal = 0.0D - Dim PUExtranjero As Decimal = 0.0D - Dim CostoIndirecto As Decimal = 0.0D - Dim SumaTotal As Decimal = 0.0D - Dim Cont As Integer = 0 - For Each gvr As GridViewRow In GvInv.Rows - If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then - - PU = DtInv.Rows(gvr.RowIndex)("PU").ToString.ToDecimal - CostoIndirecto = DtInv.Rows(gvr.RowIndex)("CostoIndirecto").ToString.ToDecimal - PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal - - 'SI FUE POR SERIE LOTE - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) - DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) - If DtDetalle.Rows.Count > 0 Then - Dim ContDt As Integer = 0 - For Each Dr As DataRow In DtDetalle.Rows - SumaTotal += PU + CostoIndirecto - If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso ContDt + 1 = DtDetalle.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> SumaTotal Then - PU = Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (PU)) - End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - ErrorMovInv = True - Exit For - End If - ContDt += 1 - Next - ElseIf DtDetalleLote.Rows.Count > 0 Then - Dim ContDt As Integer = 0 - For Each Dr As DataRow In DtDetalleLote.Rows - SumaTotal += Dr("Cantidad").ToString.ToDecimal * (PU + CostoIndirecto) - If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso ContDt + 1 = DtDetalleLote.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> SumaTotal Then - PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (Dr("Cantidad").ToString.ToDecimal * (PU)))) / Dr("Cantidad").ToString.ToDecimal - End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - ErrorMovInv = True - Exit For - End If - - ContDt += 1 - Next - Else - SumaTotal += gvr.FCTextBox("TbCantidadF").Text.ToDecimal * (PU + CostoIndirecto) ' considerar el costo indirecto para el ajuste - If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> Math.Round(SumaTotal, 2) Then - Dim tTotal As Decimal = gvr.FCTextBox("TbCantidadF").Text.ToDecimal * (PU) - - PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - tTotal)) / gvr.FCTextBox("TbCantidadF").Text.ToDecimal - End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - ErrorMovInv = True - Exit For - End If - - End If - If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then - For Each Dr As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {gvr.RowIndex}").Rows - If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("CantidadSeccionAlmacen").ToString.ToDecimal) Then - ErrorMovInv = True - Exit For - End If - Next - End If - Cont += 1 - End If - Next - Else - ErrorMovInv = True - End If - - ''VALIDACIÓN DE IMPORTES INGRESADOS VS LA COMPRA U OC - - If Not ErrorMovInv AndAlso RecibidaCompleta AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - Dim dtt As DataTable = ObjInventario.DtResultados - Dim tTotalInsertado As Decimal = dtt.SUMD("TotalOriginal") - If CveTipoCompra = 8 Then 'entrada almacen con costo indirecto cargado en la misma compra - tTotalInsertado = dtt.SUMD("Total") ' está incluido el costo indirecto en la factura - End If - If Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) <> Math.Round(tTotalInsertado, 2) Then - ErrorMovInv = True - Alert("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado, TipoMensaje.MsgError) - GuardaLog("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado) - End If - End If - - - 'SI RECEPCION VALIDA [ENTREGADIRECTA, APARTADOS, AC] - If TipoMovimiento = 1 Then - 'ENTREGA DIRECTA - If EntregaDirecta Then - If Not ErrorMovInv Then - Dim CveVenta As Integer = 0 - Dim Dt As DataTable - - If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - If ObjInventario.DtResultados.Rows.Count > 0 Then - Dt = ObjInventario.DtResultados - CveVenta = ObjInventario.DtResultados.Rows(0)("CveVenta").ToString.ToEntero - End If - End If - - CveMovtoSalidaDirecta = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 3, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), MovimientoFijo:=True, CveMovimientoRelacionado:=CveMovimiento, Remision:=TxtRemision.Text, CveVendedor:=CveVendedor, CveCliente:=CveCliente) - FolioSalidaDirecta = ObjInventario.Folio - - If Not CveMovtoSalidaDirecta > 0 Then - ErrorMovInv = True - End If - - If Not ErrorMovInv Then - For Each Dr As DataRow In Dt.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaDirecta, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - ErrorMovInv = True - Exit For - End If - Next - End If - - If Not ErrorMovInv Then - If Not ObjInventario.LimpiaEntregaDirecta(CveMovimiento) Then - ErrorMovInv = True - End If - End If - - If Not ErrorMovInv Then - If Not GeneraPrePolizaSalidaEntregaDirecta(CveMovtoSalidaDirecta, ObjInventario, ObjConta, ObjContaContPAQ) Then - ErrorMovInv = True - End If - End If - - End If - End If - - 'APARTADOS - If Apartado Then - If ObjInventario.GetMovimientosDetalleVendedor(CveMovimiento) Then - - Dim CveMovtoSalidaActual = -1 - Dim CveMovtoEntradaActual = -1 - Dim CveVendedorActual = -1 - Dim CveClienteActual = -1 - - Dim CveAlmacenDestino = CveAlmacenApartado - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - - If CveVendedorActual = -1 Or (Dr("CveVendedor").ToString.ToEntero <> CveVendedorActual Or Dr("CveCliente").ToString.ToEntero <> CveClienteActual) Then - CveMovtoSalidaActual = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 8, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), CveAlmacenDestino:=CveAlmacenDestino, MovimientoFijo:=True, CveVendedor:=Dr("CveVendedor").ToString.ToEntero, CveCliente:=Dr("CveCliente").ToString.ToEntero, Remision:=TxtRemision.Text) - MovtosSalida.Add(CveMovtoSalidaActual) - FoliosSalida.Add(ObjInventario.Folio) - - CveMovtoEntradaActual = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), CveAlmacenDestino:=CveAlmacenDestino, CveMovimientoRelacionado:=CveMovtoSalidaActual, CveVendedor:=Dr("CveVendedor").ToString.ToEntero, CveCliente:=Dr("CveCliente").ToString.ToEntero, Remision:=TxtRemision.Text) - MovtosEntrada.Add(CveMovtoEntradaActual) - FoliosEntrada.Add(ObjInventario.Folio) - - CveVendedorActual = Dr("CveVendedor").ToString.ToEntero - CveClienteActual = Dr("CveCliente").ToString.ToEntero - End If - - If CveMovtoSalidaActual <= 0 Or CveMovtoEntradaActual <= 0 Then - ErrorMovInv = True - Exit For - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - ErrorMovInv = True - Exit For - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovtoEntradaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - ErrorMovInv = True - Exit For - End If - - Next - - End If - End If - - 'DEVENGAR AC - If Not ErrorMovInv AndAlso UsuarioActual.Empresa.UsaAC Then - Dim IDPoliza As Integer - Dim TotalDetalle As Double = 0.0 - Dim TotalPorDevengar = 0.0 - TotalPorDevengar += GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4)) - TotalPorDevengar = Math.Round(TotalPorDevengar, 4) - If ObjContaContPAQ Is Nothing Then - ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa) - ObjContaContPAQ.IniciaTransacSQL() - End If - - IDPoliza = ObjContaAC.AddPoliza(4, "Devengado", TotalPorDevengar * 2, TotalPorDevengar * 2, UsuarioActual.CveUsuario, FechaMovto) - If IDPoliza > 0 AndAlso ObjContaAC.GetCuentas(-1, "-1", -1) Then - DtCuentas = ObjContaAC.DtResultados.Copy - Dim drRegistroMatriz As DataRow - Dim CuentaCargo As Integer - Dim CuentaAbono As Integer - Dim Importe = 0.0 - - For Each gvr As GridViewRow In GvInv.Rows - Importe = gvr.FCTextBox("TbCantidadF").Text.ToDouble * gvr.DataKey("PU").ToString.ToDouble - TotalDetalle += Importe - - If Importe > 0 Then - If ObjContaAC.AddMovimiento(IDPoliza, 1, False, Importe, "", "", 0, FechaMovto, "") Then - 'actualizo el idcuenta del presupuesto - If Not ObjContaAC.AddMovimiento(IDPoliza, gvr.DataKey("IdCuentaComprometido").ToString.ToEntero, True, Importe, "", "", 0, FechaMovto, "") Then - ErrorMovInv = True - Exit For - End If - Else - ErrorMovInv = True - Exit For - End If - - 'AFECTAR MATRIZ EGRESOS - drRegistroMatriz = GlobalDTAC_MatrizEgresos.FiltroPrimero(String.Format("Partida = {0} And TipoGasto = {1}", gvr.DataKey("CodigoClasificacion").ToString, gvr.DataKey("CveTipoGasto").ToString)) - If drRegistroMatriz IsNot Nothing AndAlso drRegistroMatriz("CuentaCargo").ToString.ToEntero > 0 Then - CuentaCargo = DtCuentas.FiltroPrimeroValor("Id", String.Format("Codigo = '{0}'", drRegistroMatriz("CuentaCargo").ToString)).ToEntero - CuentaAbono = DtCuentas.FiltroPrimeroValor("Id", String.Format("Codigo = '{0}'", drRegistroMatriz("CuentaAbono").ToString)).ToEntero - If CuentaCargo > 0 AndAlso CuentaAbono > 0 Then - If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargo, False, Importe, "", "", 0, FechaMovto, "") Then - If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbono, True, Importe, "", "", 0, FechaMovto, "") Then - ErrorMovInv = True - Exit For - End If - Else - ErrorMovInv = True - Exit For - End If - Else - ErrorMovInv = True - Exit For - End If - End If - 'TERMINA AFECTAR MATRIZ INGRESOS - - End If - Next - If TotalDetalle <= 0 AndAlso TotalPorDevengar >= TotalDetalle Then - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - - If ErrorMovInv Then - Alert("Error al registrar los movimientos Contables", TipoMensaje.MsgError) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - End If - End If - 'TERMINA: DEVENGAR - End If - - 'ACTUALIZA ESTATUS ALMACEN - If TipoMovimiento = 2 Then - If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0) Then - ErrorMovInv = True - End If - End If - - 'AGREGA BITACORA TEMPORAL - If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then - ErrorMovInv = GuardaBitacoraTemporal(ObjBitacora, CveMovimiento) - End If - - 'PREPOLIZA - SOLO CUANDO SEA RECEPCIÓN - If TipoMovimiento = 1 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - Dim DtCostos As DataTable = Nothing - Dim ValorInventario As Decimal = 0 - DtCostos = ObjInventario.DtResultados - Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL - Dim TotalCostoExtranjero As Decimal = DtCostos.SUM("TotalExtranjero").ToDecimal - - 'VARIABLES - Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim IdCtaContableRecepcion = -1 - Dim IdCtaContableRecepcionME = -1 - Dim IdCtaContableRecepcionComplementaria = -1 - Dim Fecha As Date = Now - Dim CveProveedor As Integer = -1 - Dim ProveedorNombre As String = "" - Dim SerieFolio As String = "" - Dim CveConceptoContableCosto = -1 - Dim CveConceptoContableCostoME = -1 - Dim CveConceptoContableCostoComplementaria = -1 - Dim UsaComplementariaFleteImportaciones As Boolean = False - If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = False - - If DtCostos.Rows.Count > 0 Then - If CveCompraSurtir > 0 Then - If ObjCompras.GetCompras(CveCompraSurtir, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then - 'Fecha = ObjCompras.DtResultados(0)("Fecha").ToString.ToDate - Fecha = TxtFecha.Text.ToDate - CveProveedor = ObjCompras.DtResultados(0)("CveProveedor").ToString.ToEntero - ProveedorNombre = ObjCompras.DtResultados(0)("RazonSocial").ToString - SerieFolio = $"Compra: {ObjCompras.DtResultados(0)("SerieFolio").ToString}" - CveConceptoContableCosto = 205 - CveConceptoContableCostoME = 230 - CveConceptoContableCostoComplementaria = 231 - - If ObjConta.GetRetCuenta(205, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableRecepcion = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(230, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableRecepcionME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(231, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableRecepcionComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - Else - ErrorMovInv = True - End If - ElseIf CveOCSurtir > 0 Then - If ObjOC.GetOC(CveOCSurtir, UsuarioActual.CveEmpresa) Then - 'Fecha = ObjOC.DtResultados(0)("Fecha").ToString.ToDate - Fecha = TxtFecha.Text.ToDate - CveProveedor = ObjOC.DtResultados(0)("CveProveedor").ToString.ToEntero - ProveedorNombre = ObjOC.DtResultados(0)("RazonSocial").ToString - SerieFolio = String.Format("{0} OC# {1} - Almacén# {2}", ProveedorNombre, ObjOC.DtResultados(0)("Folio"), ObjInventario.Folio) - CveConceptoContableCosto = 176 - CveConceptoContableCostoME = 228 - CveConceptoContableCostoComplementaria = 229 - - If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = True - - If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableRecepcion = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableRecepcionME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableRecepcionComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - Else - ErrorMovInv = True - End If - End If - - If Not ErrorMovInv Then - Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero - CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePoliza > 0 Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen) Then - - 'AGREGA POR CONCEPTO POR CVEOCDETALLE - If CveOCSurtir > 0 Then - Dim TotalCostoDetalle As Decimal = 0 - Dim TotalCostoAcumulado As Decimal = 0 - Dim cont As Integer = 1 - For Each Dr As DataRow In DtCostos.Rows - TotalCostoDetalle = (Dr("Total").ToString.ToDecimal) - TotalCostoExtranjero = Dr("TotalExtranjero").ToString.ToDecimal - TotalCostoAcumulado += Math.Round(TotalCostoDetalle, 2) - - 'si es el último movimiento verifica los importes que sean igual - If cont = DtCostos.Rows.Count AndAlso (Math.Round(TotalCosto, 2) <> Math.Round(TotalCostoAcumulado, 2)) Then - TotalCostoDetalle = TotalCostoDetalle + (Math.Round(TotalCosto, 2) - Math.Round(TotalCostoAcumulado, 2)) - TotalCostoExtranjero = TotalCostoExtranjero + (Math.Round(TotalCosto, 2) - Math.Round(TotalCostoAcumulado, 2)) - End If - - If CveMoneda <> 1 AndAlso UsaComplementariaFleteImportaciones Then - 'COMPLEMENTARIA - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoME, SerieFolio, Fecha, IdCtaContableRecepcionME, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveSubProyecto:=CveSubProyecto, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoDetalle - TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoComplementaria, SerieFolio, Fecha, IdCtaContableRecepcionComplementaria, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveSubProyecto:=CveSubProyecto, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoDetalle - TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then - ErrorMovInv = True - Exit For - End If - Else - ErrorMovInv = True - Exit For - End If - Else - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoDetalle, SerieFolio, CveConceptoContableCosto, SerieFolio, Fecha, IdCtaContableRecepcion, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveSubProyecto:=CveSubProyecto, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoDetalle, CveCuenta:=-1, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then - ErrorMovInv = True - Exit For - End If - End If - cont = cont + 1 - - Next - Else - TotalCosto = DtCostos.SUMD("Total").RoundSQL - TotalCostoExtranjero = DtCostos.SUMD("TotalExtranjero") - - If CveMoneda <> 1 AndAlso UsaComplementariaFleteImportaciones Then - 'COMPLEMENTARIA - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoME, SerieFolio, Fecha, IdCtaContableRecepcionME, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal) Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCosto - TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoComplementaria, SerieFolio, Fecha, IdCtaContableRecepcionComplementaria, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto - TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal) Then - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - Else - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCosto, SerieFolio, CveConceptoContableCosto, SerieFolio, Fecha, IdCtaContableRecepcion, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=-1) Then - ErrorMovInv = True - End If - End If - End If - - Else - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - End If - - If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - MensajeError = "El Movimiento presenta una diferencia en el registro." - ErrorMovInv = True - End If - End If - - 'CONTABILIZAR - UNIFICAR Y SIMPLIFICAR CON PP DE LA COMPRA - If Not ErrorMovInv Then - - If CvePrePolizaCompra > 0 Then - If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then - If Not ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCompra) Then - ErrorMovInv = True - MensajeError = "Error al unificar los conceptos contables" - End If - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then - If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then - ErrorMovInv = True - MensajeError = "Error al simplificar los conceptos contables" - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - If ObjContaContPAQ Is Nothing Then - ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa) - ObjContaContPAQ.IniciaTransacSQL() - End If - If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then - MensajeContabilidad = $"
Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
" - Else - ErrorMovInv = True - MensajeError = "Error al contabilizar los conceptos contables" - End If - End If - - End If - - End If - End If - - 'PREPOLIZA - NC - If TipoMovimiento = 3 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - - Dim DtCostos As DataTable = Nothing - DtCostos = ObjInventario.DtResultados - Dim TotalCosto As Decimal = DtCostos.SUM("Total").ToDecimal - - Dim TotalNC As Decimal = 0 - Dim CveClasificacionDifCostoNC = -1 - Dim tTipoCambio As Decimal = 1 - If CveMoneda <> 1 Then tTipoCambio = TipoCambio.ToDecimal - - For Each gvr As GridViewRow In GvInv.Rows - TotalNC += gvr.FCTextBox("TbCantidadF").Text.ToDecimal * gvr.DataKey("PU").ToDecimal * tTipoCambio - CveClasificacionDifCostoNC = gvr.DataKey("CveClasificacion").ToEntero - Next - Dim IdCtaContableClasificacion As Integer = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {CveClasificacionDifCostoNC}").ToEntero - Dim CveCuentaClasificacion As Integer = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {CveClasificacionDifCostoNC}").ToEntero - - TotalCosto = Math.Round(TotalCosto, 2) - TotalNC = Math.Round(TotalNC, 2) - Dim DifCostoNC = Math.Round(TotalCosto - TotalNC, 2) - - - 'VARIABLES - Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim Fecha As Date = TxtFecha.Text.ToDate - Dim CveProveedor As Integer = -1 - Dim ProveedorNombre As String = "" - Dim SerieFolio As String = "" - Dim IdCtaContableNC = 0 - Dim CveConceptoContableNC = -1 - - If DtCostos.Rows.Count > 0 Then - If CveCompraSurtir > 0 Then - If ObjCompras.GetCompras(CveCompraSurtir, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then - CveProveedor = ObjCompras.DtResultados(0)("CveProveedor").ToString.ToEntero - ProveedorNombre = ObjCompras.DtResultados(0)("RazonSocial").ToString - SerieFolio = $"NC: {ObjCompras.DtResultados(0)("SerieFolio").ToString}" - - CveConceptoContableNC = 225 - If ObjConta.GetRetCuenta(CveConceptoContableNC, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContableNC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero - End If - - Else - ErrorMovInv = True - End If - End If - - If Not ErrorMovInv Then - CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen-NC", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePoliza > 0 Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalNC, SerieFolio, CveConceptoContableNC, SerieFolio, Fecha, IdCtaContableNC, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalNC) Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, CveCuenta:=CveCuentaAlmacen) Then - If DifCostoNC <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DifCostoNC * -1, SerieFolio, 69, SerieFolio, Fecha, IdCtaContableClasificacion, -1, CveClasificacion:=CveClasificacionDifCostoNC, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DifCostoNC * -1, CveCuenta:=CveCuentaClasificacion) Then - ErrorMovInv = True - End If - End If - Else - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - End If - - If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Inventarios/RecepcionAlmacen-PPNC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ErrorMovInv = True - End If - End If - - 'CONTABILIZAR - UNIFICAR Y SIMPLIFICAR CON PP DE LA COMPRA - If Not ErrorMovInv Then - - If CvePrePolizaCompra > 0 Then - If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then - If Not ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCompra) Then - ErrorMovInv = True - MensajeError = "Error al unificar los conceptos contables" - End If - End If - End If - - - If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then - If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then - ErrorMovInv = True - MensajeError = "Error al simplificar los conceptos contables" - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa) - ObjContaContPAQ.IniciaTransacSQL() - If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then - MensajeContabilidad = $"
Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
" - Else - ErrorMovInv = True - MensajeError = "Error al contabilizar los conceptos contables" - End If - End If - - End If - - End If - End If - - 'AGREGA SALDOS A OC SURTIDAS - If Not ErrorMovInv And CveOCSurtir > 0 Then - If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjOC.OrdenesCompraDetalleSaldosInvCompraAdd(Dr("CveOrdenCompraDetalle").ToString.ToEntero, Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("Cantidad").ToString.ToDouble, -1, -1) Then - ErrorMovInv = True - Exit For - End If - Next - Else - ErrorMovInv = True - End If - End If - - 'FINAL + Try + 'RECARGA TC CUANDO ES RECEPCION CON OC Y DOLARES + If CveOCSurtir > 0 And CveMoneda <> 1 Then + TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate) + End If + + If HdnTipoDocto.Value <> "Fac" Then RecibidaCompleta = False + + 'ENTRADA ALMACÉN + CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, If(TipoMovimiento > 1, 13, 2), 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), MovimientoFijo:=If(TipoMovimiento = 2, True, False), Remision:=TxtRemision.Text) + If CveMovimiento > 0 Then + InvFolio = ObjInventario.Folio.ToString + Dim DtDetalle As New DataTable + Dim DtDetalleLote As New DataTable + Dim PU As Decimal = 0.0D + Dim PUExtranjero As Decimal = 0.0D + Dim CostoIndirecto As Decimal = 0.0D + Dim SumaTotal As Decimal = 0.0D + Dim Cont As Integer = 0 + For Each gvr As GridViewRow In GvInv.Rows + If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then + + PU = DtInv.Rows(gvr.RowIndex)("PU").ToString.ToDecimal + CostoIndirecto = DtInv.Rows(gvr.RowIndex)("CostoIndirecto").ToString.ToDecimal + PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal + + 'SI FUE POR SERIE LOTE + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) + DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero)) + If DtDetalle.Rows.Count > 0 Then + Dim ContDt As Integer = 0 + For Each Dr As DataRow In DtDetalle.Rows + SumaTotal += PU + CostoIndirecto + If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso ContDt + 1 = DtDetalle.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> SumaTotal Then + PU = Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (PU)) + End If + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + ContDt += 1 + Next + ElseIf DtDetalleLote.Rows.Count > 0 Then + Dim ContDt As Integer = 0 + For Each Dr As DataRow In DtDetalleLote.Rows + SumaTotal += Dr("Cantidad").ToString.ToDecimal * (PU + CostoIndirecto) + If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso ContDt + 1 = DtDetalleLote.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> SumaTotal Then + PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (Dr("Cantidad").ToString.ToDecimal * (PU)))) / Dr("Cantidad").ToString.ToDecimal + End If + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + + ContDt += 1 + Next + Else + SumaTotal += gvr.FCTextBox("TbCantidadF").Text.ToDecimal * (PU + CostoIndirecto) ' considerar el costo indirecto para el ajuste + If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> Math.Round(SumaTotal, 2) Then + Dim tTotal As Decimal = gvr.FCTextBox("TbCantidadF").Text.ToDecimal * (PU) + + PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - tTotal)) / gvr.FCTextBox("TbCantidadF").Text.ToDecimal + End If + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + + End If + + If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then + For Each Dr As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {gvr.RowIndex}").Rows + If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("CantidadSeccionAlmacen").ToString.ToDecimal) Then + ErrorMovInv = True + Exit For + End If + Next + End If + Cont += 1 + End If + Next + Else + ErrorMovInv = True + End If + + ''VALIDACIÓN DE IMPORTES INGRESADOS VS LA COMPRA U OC + + If Not ErrorMovInv AndAlso RecibidaCompleta AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + Dim dtt As DataTable = ObjInventario.DtResultados + Dim tTotalInsertado As Decimal = dtt.SUMD("TotalOriginal") + If CveTipoCompra = 8 Then 'entrada almacen con costo indirecto cargado en la misma compra + tTotalInsertado = dtt.SUMD("Total") ' está incluido el costo indirecto en la factura + End If + If Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) <> Math.Round(tTotalInsertado, 2) Then + ErrorMovInv = True + Alert("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado, TipoMensaje.MsgError) + GuardaLog("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado) + End If + End If + + + 'SI RECEPCION VALIDA [ENTREGADIRECTA, APARTADOS, AC] + If TipoMovimiento = 1 Then + 'ENTREGA DIRECTA + If EntregaDirecta Then + If Not ErrorMovInv Then + Dim CveVenta As Integer = 0 + Dim Dt As DataTable = Nothing + + If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + If ObjInventario.DtResultados.Rows.Count > 0 Then + Dt = ObjInventario.DtResultados + CveVenta = ObjInventario.DtResultados.Rows(0)("CveVenta").ToString.ToEntero + End If + End If + + CveMovtoSalidaDirecta = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 3, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), MovimientoFijo:=True, CveMovimientoRelacionado:=CveMovimiento, Remision:=TxtRemision.Text, CveVendedor:=CveVendedor, CveCliente:=CveCliente) + FolioSalidaDirecta = ObjInventario.Folio + + If Not CveMovtoSalidaDirecta > 0 Then + ErrorMovInv = True + End If + + If Not ErrorMovInv Then + For Each Dr As DataRow In Dt.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaDirecta, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next + End If + + If Not ErrorMovInv Then + If Not ObjInventario.LimpiaEntregaDirecta(CveMovimiento) Then + ErrorMovInv = True + End If + End If + + If Not ErrorMovInv Then + If Not GeneraPrePolizaSalidaEntregaDirecta(CveMovtoSalidaDirecta, ObjInventario, ObjConta, ObjContaContPAQ) Then + ErrorMovInv = True + End If + End If + + End If + End If + + 'APARTADOS + If Apartado Then + If ObjInventario.GetMovimientosDetalleVendedor(CveMovimiento) Then + Dim CveMovtoSalidaActual = -1 + Dim CveMovtoEntradaActual = -1 + Dim CveVendedorActual = -1 + Dim CveClienteActual = -1 + + Dim CveAlmacenDestino = CveAlmacenApartado + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + If CveVendedorActual = -1 Or (Dr("CveVendedor").ToString.ToEntero <> CveVendedorActual Or Dr("CveCliente").ToString.ToEntero <> CveClienteActual) Then + CveMovtoSalidaActual = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 8, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), CveAlmacenDestino:=CveAlmacenDestino, MovimientoFijo:=True, CveVendedor:=Dr("CveVendedor").ToString.ToEntero, CveCliente:=Dr("CveCliente").ToString.ToEntero, Remision:=TxtRemision.Text) + MovtosSalida.Add(CveMovtoSalidaActual) + FoliosSalida.Add(ObjInventario.Folio) + + CveMovtoEntradaActual = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), CveAlmacenDestino:=CveAlmacenDestino, CveMovimientoRelacionado:=CveMovtoSalidaActual, CveVendedor:=Dr("CveVendedor").ToString.ToEntero, CveCliente:=Dr("CveCliente").ToString.ToEntero, Remision:=TxtRemision.Text) + MovtosEntrada.Add(CveMovtoEntradaActual) + FoliosEntrada.Add(ObjInventario.Folio) + + CveVendedorActual = Dr("CveVendedor").ToString.ToEntero + CveClienteActual = Dr("CveCliente").ToString.ToEntero + End If + + If CveMovtoSalidaActual <= 0 Or CveMovtoEntradaActual <= 0 Then + ErrorMovInv = True + Exit For + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovtoEntradaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next + End If + End If + 'VIRTUAL + Dim DtTamanios As New DataTable("DtTamanios") + DtTamanios.Columns.Add(New DataColumn("CvePS", GetType(Integer))) + DtTamanios.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) + DtTamanios.Columns.Add(New DataColumn("PU", GetType(Decimal))) + DtTamanios.Columns.Add(New DataColumn("CveUM", GetType(Integer))) + + If ObjAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then + For Each GvRow As GridViewRow In GvInv.Rows + If GvRow.RowType = DataControlRowType.DataRow Then + For Each Tam As DataRow In ObjAcum.DtResultados.Rows + If Tam("CveTamaño").ToString() = GvRow.DataKey("CveTamaño") Then + Dim Row As DataRow = DtTamanios.NewRow() + + Row("CvePS") = Tam("CvePSCargo").ToString().ToEntero() + Row("Cantidad") = GvRow.FCTextBox("TbCantidadF").Text.ToDecimal() + Row("PU") = GvRow.DataKey("PU").ToDecimal() + Row("CveUM") = GvRow.DataKey("CveUM").ToEntero() + + DtTamanios.Rows.Add(Row) + End If + Next + End If + Next + End If + + 'If DtTamanios.Rows.Count = 0 Then + ' ErrorMovInv = True + 'End If + + If DtTamanios IsNot Nothing AndAlso DtTamanios.Rows.Count > 0 Then + Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero() + + Dim CveAlmacenVirutal As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 24).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirutal, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim) + FolioVirtual = ObjInventario.Folio + + For Each RowUsado As DataRow In DtTamanios.Rows + Dim CvePS = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble() + Dim PU As Double = RowUsado("PU").ToString().ToDouble() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next + End If + + 'DEVENGAR AC + If Not ErrorMovInv AndAlso UsuarioActual.Empresa.UsaAC Then + Dim IDPoliza As Integer + Dim TotalDetalle As Double = 0.0 + Dim TotalPorDevengar = 0.0 + TotalPorDevengar += GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4)) + TotalPorDevengar = Math.Round(TotalPorDevengar, 4) + If ObjContaContPAQ Is Nothing Then + ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa) + ObjContaContPAQ.IniciaTransacSQL() + End If + + IDPoliza = ObjContaAC.AddPoliza(4, "Devengado", TotalPorDevengar * 2, TotalPorDevengar * 2, UsuarioActual.CveUsuario, FechaMovto) + If IDPoliza > 0 AndAlso ObjContaAC.GetCuentas(-1, "-1", -1) Then + DtCuentas = ObjContaAC.DtResultados.Copy + Dim drRegistroMatriz As DataRow + Dim CuentaCargo As Integer + Dim CuentaAbono As Integer + Dim Importe = 0.0 + + For Each gvr As GridViewRow In GvInv.Rows + Importe = gvr.FCTextBox("TbCantidadF").Text.ToDouble * gvr.DataKey("PU").ToString.ToDouble + TotalDetalle += Importe + + If Importe > 0 Then + If ObjContaAC.AddMovimiento(IDPoliza, 1, False, Importe, "", "", 0, FechaMovto, "") Then + 'actualizo el idcuenta del presupuesto + If Not ObjContaAC.AddMovimiento(IDPoliza, gvr.DataKey("IdCuentaComprometido").ToString.ToEntero, True, Importe, "", "", 0, FechaMovto, "") Then + ErrorMovInv = True + Exit For + End If + Else + ErrorMovInv = True + Exit For + End If + + 'AFECTAR MATRIZ EGRESOS + drRegistroMatriz = GlobalDTAC_MatrizEgresos.FiltroPrimero(String.Format("Partida = {0} And TipoGasto = {1}", gvr.DataKey("CodigoClasificacion").ToString, gvr.DataKey("CveTipoGasto").ToString)) + If drRegistroMatriz IsNot Nothing AndAlso drRegistroMatriz("CuentaCargo").ToString.ToEntero > 0 Then + CuentaCargo = DtCuentas.FiltroPrimeroValor("Id", String.Format("Codigo = '{0}'", drRegistroMatriz("CuentaCargo").ToString)).ToEntero + CuentaAbono = DtCuentas.FiltroPrimeroValor("Id", String.Format("Codigo = '{0}'", drRegistroMatriz("CuentaAbono").ToString)).ToEntero + If CuentaCargo > 0 AndAlso CuentaAbono > 0 Then + If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargo, False, Importe, "", "", 0, FechaMovto, "") Then + If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbono, True, Importe, "", "", 0, FechaMovto, "") Then + ErrorMovInv = True + Exit For + End If + Else + ErrorMovInv = True + Exit For + End If + Else + ErrorMovInv = True + Exit For + End If + End If + 'TERMINA AFECTAR MATRIZ INGRESOS + + End If + Next + If TotalDetalle <= 0 AndAlso TotalPorDevengar >= TotalDetalle Then + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + + If ErrorMovInv Then + Alert("Error al registrar los movimientos Contables", TipoMensaje.MsgError) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + End If + End If + 'TERMINA: DEVENGAR + End If + + 'ACTUALIZA ESTATUS ALMACEN + If TipoMovimiento = 2 Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0) Then + ErrorMovInv = True + End If + End If + + 'AGREGA BITACORA TEMPORAL + If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then + ErrorMovInv = GuardaBitacoraTemporal(ObjBitacora, CveMovimiento) + End If + + 'PREPOLIZA - SOLO CUANDO SEA RECEPCIÓN + If TipoMovimiento = 1 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + Dim DtCostos As DataTable = Nothing + Dim ValorInventario As Decimal = 0 + DtCostos = ObjInventario.DtResultados + Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL + Dim TotalCostoExtranjero As Decimal = DtCostos.SUM("TotalExtranjero").ToDecimal + + 'VARIABLES + Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + Dim IdCtaContableRecepcion = -1 + Dim IdCtaContableRecepcionME = -1 + Dim IdCtaContableRecepcionComplementaria = -1 + Dim Fecha As Date = Now + Dim CveProveedor As Integer = -1 + Dim ProveedorNombre As String = "" + Dim SerieFolio As String = "" + Dim CveConceptoContableCosto = -1 + Dim CveConceptoContableCostoME = -1 + Dim CveConceptoContableCostoComplementaria = -1 + Dim UsaComplementariaFleteImportaciones As Boolean = False + If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = False + + If DtCostos.Rows.Count > 0 Then + If CveCompraSurtir > 0 Then + If ObjCompras.GetCompras(CveCompraSurtir, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + 'Fecha = ObjCompras.DtResultados(0)("Fecha").ToString.ToDate + Fecha = TxtFecha.Text.ToDate + CveProveedor = ObjCompras.DtResultados(0)("CveProveedor").ToString.ToEntero + ProveedorNombre = ObjCompras.DtResultados(0)("RazonSocial").ToString + SerieFolio = $"Compra: {ObjCompras.DtResultados(0)("SerieFolio").ToString}" + CveConceptoContableCosto = 205 + CveConceptoContableCostoME = 230 + CveConceptoContableCostoComplementaria = 231 + + If ObjConta.GetRetCuenta(205, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableRecepcion = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(230, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableRecepcionME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(231, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableRecepcionComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + Else + ErrorMovInv = True + End If + ElseIf CveOCSurtir > 0 Then + If ObjOC.GetOC(CveOCSurtir, UsuarioActual.CveEmpresa) Then + 'Fecha = ObjOC.DtResultados(0)("Fecha").ToString.ToDate + Fecha = TxtFecha.Text.ToDate + CveProveedor = ObjOC.DtResultados(0)("CveProveedor").ToString.ToEntero + ProveedorNombre = ObjOC.DtResultados(0)("RazonSocial").ToString + SerieFolio = String.Format("{0} OC# {1} - Almacén# {2}", ProveedorNombre, ObjOC.DtResultados(0)("Folio"), ObjInventario.Folio) + CveConceptoContableCosto = 176 + CveConceptoContableCostoME = 228 + CveConceptoContableCostoComplementaria = 229 + + If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = True + + If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableRecepcion = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableRecepcionME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableRecepcionComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + Else + ErrorMovInv = True + End If + End If + + If Not ErrorMovInv Then + Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero + CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePoliza > 0 Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen) Then + + 'AGREGA POR CONCEPTO POR CVEOCDETALLE + If CveOCSurtir > 0 Then + Dim TotalCostoDetalle As Decimal = 0 + Dim TotalCostoAcumulado As Decimal = 0 + Dim cont As Integer = 1 + For Each Dr As DataRow In DtCostos.Rows + TotalCostoDetalle = (Dr("Total").ToString.ToDecimal) + TotalCostoExtranjero = Dr("TotalExtranjero").ToString.ToDecimal + TotalCostoAcumulado += Math.Round(TotalCostoDetalle, 2) + + 'si es el último movimiento verifica los importes que sean igual + If cont = DtCostos.Rows.Count AndAlso (Math.Round(TotalCosto, 2) <> Math.Round(TotalCostoAcumulado, 2)) Then + TotalCostoDetalle = TotalCostoDetalle + (Math.Round(TotalCosto, 2) - Math.Round(TotalCostoAcumulado, 2)) + TotalCostoExtranjero = TotalCostoExtranjero + (Math.Round(TotalCosto, 2) - Math.Round(TotalCostoAcumulado, 2)) + End If + + If CveMoneda <> 1 AndAlso UsaComplementariaFleteImportaciones Then + 'COMPLEMENTARIA + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoME, SerieFolio, Fecha, IdCtaContableRecepcionME, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveSubProyecto:=CveSubProyecto, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoDetalle - TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoComplementaria, SerieFolio, Fecha, IdCtaContableRecepcionComplementaria, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveSubProyecto:=CveSubProyecto, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoDetalle - TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + ErrorMovInv = True + Exit For + End If + Else + ErrorMovInv = True + Exit For + End If + Else + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoDetalle, SerieFolio, CveConceptoContableCosto, SerieFolio, Fecha, IdCtaContableRecepcion, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveSubProyecto:=CveSubProyecto, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoDetalle, CveCuenta:=-1, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + ErrorMovInv = True + Exit For + End If + End If + cont = cont + 1 + + Next + Else + TotalCosto = DtCostos.SUMD("Total").RoundSQL + TotalCostoExtranjero = DtCostos.SUMD("TotalExtranjero") + + If CveMoneda <> 1 AndAlso UsaComplementariaFleteImportaciones Then + 'COMPLEMENTARIA + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoME, SerieFolio, Fecha, IdCtaContableRecepcionME, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCosto - TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoComplementaria, SerieFolio, Fecha, IdCtaContableRecepcionComplementaria, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto - TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal) Then + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + Else + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCosto, SerieFolio, CveConceptoContableCosto, SerieFolio, Fecha, IdCtaContableRecepcion, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=-1) Then + ErrorMovInv = True + End If + End If + End If + + Else + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + End If + + If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + MensajeError = "El Movimiento presenta una diferencia en el registro." + ErrorMovInv = True + End If + End If + + 'CONTABILIZAR - UNIFICAR Y SIMPLIFICAR CON PP DE LA COMPRA + If Not ErrorMovInv Then + + If CvePrePolizaCompra > 0 Then + If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then + If Not ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCompra) Then + ErrorMovInv = True + MensajeError = "Error al unificar los conceptos contables" + End If + End If + End If + + If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then + If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then + ErrorMovInv = True + MensajeError = "Error al simplificar los conceptos contables" + End If + End If + + If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + If ObjContaContPAQ Is Nothing Then + ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa) + ObjContaContPAQ.IniciaTransacSQL() + End If + If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then + MensajeContabilidad = $"
Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
" + Else + ErrorMovInv = True + MensajeError = "Error al contabilizar los conceptos contables" + End If + End If + + End If + + End If + End If + + 'PREPOLIZA - NC + If TipoMovimiento = 3 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + + Dim DtCostos As DataTable = Nothing + DtCostos = ObjInventario.DtResultados + Dim TotalCosto As Decimal = DtCostos.SUM("Total").ToDecimal + + Dim TotalNC As Decimal = 0 + Dim CveClasificacionDifCostoNC = -1 + Dim tTipoCambio As Decimal = 1 + If CveMoneda <> 1 Then tTipoCambio = TipoCambio.ToDecimal + + For Each gvr As GridViewRow In GvInv.Rows + TotalNC += gvr.FCTextBox("TbCantidadF").Text.ToDecimal * gvr.DataKey("PU").ToDecimal * tTipoCambio + CveClasificacionDifCostoNC = gvr.DataKey("CveClasificacion").ToEntero + Next + Dim IdCtaContableClasificacion As Integer = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {CveClasificacionDifCostoNC}").ToEntero + Dim CveCuentaClasificacion As Integer = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {CveClasificacionDifCostoNC}").ToEntero + + TotalCosto = Math.Round(TotalCosto, 2) + TotalNC = Math.Round(TotalNC, 2) + Dim DifCostoNC = Math.Round(TotalCosto - TotalNC, 2) + + + 'VARIABLES + Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + Dim Fecha As Date = TxtFecha.Text.ToDate + Dim CveProveedor As Integer = -1 + Dim ProveedorNombre As String = "" + Dim SerieFolio As String = "" + Dim IdCtaContableNC = 0 + Dim CveConceptoContableNC = -1 + + If DtCostos.Rows.Count > 0 Then + If CveCompraSurtir > 0 Then + If ObjCompras.GetCompras(CveCompraSurtir, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + CveProveedor = ObjCompras.DtResultados(0)("CveProveedor").ToString.ToEntero + ProveedorNombre = ObjCompras.DtResultados(0)("RazonSocial").ToString + SerieFolio = $"NC: {ObjCompras.DtResultados(0)("SerieFolio").ToString}" + + CveConceptoContableNC = 225 + If ObjConta.GetRetCuenta(CveConceptoContableNC, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContableNC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero + End If + + Else + ErrorMovInv = True + End If + End If + + If Not ErrorMovInv Then + CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen-NC", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePoliza > 0 Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalNC, SerieFolio, CveConceptoContableNC, SerieFolio, Fecha, IdCtaContableNC, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalNC) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, CveCuenta:=CveCuentaAlmacen) Then + If DifCostoNC <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DifCostoNC * -1, SerieFolio, 69, SerieFolio, Fecha, IdCtaContableClasificacion, -1, CveClasificacion:=CveClasificacionDifCostoNC, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DifCostoNC * -1, CveCuenta:=CveCuentaClasificacion) Then + ErrorMovInv = True + End If + End If + Else + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + End If + + If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Inventarios/RecepcionAlmacen-PPNC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + ErrorMovInv = True + End If + End If + + 'CONTABILIZAR - UNIFICAR Y SIMPLIFICAR CON PP DE LA COMPRA + If Not ErrorMovInv Then + + If CvePrePolizaCompra > 0 Then + If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then + If Not ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCompra) Then + ErrorMovInv = True + MensajeError = "Error al unificar los conceptos contables" + End If + End If + End If + + + If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then + If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then + ErrorMovInv = True + MensajeError = "Error al simplificar los conceptos contables" + End If + End If + + If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa) + ObjContaContPAQ.IniciaTransacSQL() + If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then + MensajeContabilidad = $"
Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
" + Else + ErrorMovInv = True + MensajeError = "Error al contabilizar los conceptos contables" + End If + End If + + End If + + End If + End If + + 'AGREGA SALDOS A OC SURTIDAS + If Not ErrorMovInv And CveOCSurtir > 0 Then + If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + If Not ObjOC.OrdenesCompraDetalleSaldosInvCompraAdd(Dr("CveOrdenCompraDetalle").ToString.ToEntero, Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("Cantidad").ToString.ToDouble, -1, -1) Then + ErrorMovInv = True + Exit For + End If + Next + Else + ErrorMovInv = True + End If + End If + Catch ex As Exception + ErrorMovInv = True + OnError("Ocurrió un error al guardar", ex) + End Try + + 'FINAL If Not ErrorMovInv Then ObjInventario.Commit() ' aplica los movimientos insertados If ObjContaAC IsNot Nothing Then ObjContaAC.Commit() @@ -2647,6 +2706,12 @@ Partial Class Inventarios_RecepcionAlmacen link = String.Format("{1}", MovtosEntrada(index), FoliosEntrada(index)) Msg.AppendFormat("
Movimiento de Entrada por Traspaso: Folio: {0}
", link) Next + End If + + 'VIRTUAL + If CveMovimientoVirtual > 0 Then + link = String.Format("{1}", CveMovimientoVirtual, FolioVirtual) + Msg.AppendFormat("
Movimiento de Entrada al Almacen Virtal: Folio: {0}", link) End If 'CONTABILIDAD @@ -3421,19 +3486,11 @@ Partial Class Inventarios_RecepcionAlmacen Next - End Sub + End Sub #End Region - - - - - - - - - + #Region "Imprimir PDF/Excel" - + Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click ImprimiReporte("EXCEL") End Sub @@ -3460,14 +3517,11 @@ Partial Class Inventarios_RecepcionAlmacen params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) ImprimirPDF(RutaPDF, dt, params, "Reporte de Entrada Almacén", Formato:=Formato) - End Sub - - + End Sub + + #End Region - - - - + #Region " VIEJO - POR ELIMINAR 22 NOVIEMBRE 2017 " Protected Sub ImgAlmacen_Click(sender As Object, e As ImageClickEventArgs) For i As Integer = 0 To GvInv.Rows.Count - 1 @@ -3593,10 +3647,8 @@ Partial Class Inventarios_RecepcionAlmacen DtSeccionAlmacen.Rows.RemoveAt(Index) DtSeccionAlmacen.AcceptChanges() CargaSeccionAlmacen() - End Sub - + End Sub + #End Region - - - + End Class diff --git a/Inventarios/RecepcionEntrega.aspx b/Inventarios/RecepcionEntrega.aspx index 5dd948d5c..ebcb39af7 100644 --- a/Inventarios/RecepcionEntrega.aspx +++ b/Inventarios/RecepcionEntrega.aspx @@ -329,8 +329,18 @@ + + <%--ADVERTENCIA--%> +
+
+
+ + Información: + +
+
-
+
@@ -346,7 +356,6 @@
-
@@ -408,7 +417,8 @@ <%--GV DATOS--%> - + diff --git a/Inventarios/RecepcionEntrega.aspx.vb b/Inventarios/RecepcionEntrega.aspx.vb index f291d9842..b7b78daae 100644 --- a/Inventarios/RecepcionEntrega.aspx.vb +++ b/Inventarios/RecepcionEntrega.aspx.vb @@ -3,6 +3,7 @@ Option Explicit On Imports System.Data Imports System.IO +Imports System.Linq Imports Extensiones Partial Class Inventarios_RecepcionEntrega @@ -711,6 +712,11 @@ Partial Class Inventarios_RecepcionEntrega DivTipoCambioAdvertencia.Visible = False End If + 'If DtDatos.Rows.Cast(Of DataRow).Any(Function(Row) Row("CveTamaño").ToString().ToEntero() > 0) Then + + 'End If + + DdlAlmacen.Items.Clear() If CveAlmacenTraspasoOrigen > 0 Then DdlAlmacen.Items.Insert(0, New ListItem(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoOrigen}"), CveAlmacenTraspasoOrigen.ToString)) @@ -1526,6 +1532,9 @@ Partial Class Inventarios_RecepcionEntrega Dim CveMovimientoGarantia As Integer = -1 Dim FolioGarantia As Integer = -1 + Dim CveMovimientoVirtual As Integer = -1 + Dim FolioVirtual As Integer = -1 + 'PASA DATOS DEL GV A DATATABLE PARA MANEJOR CON FOR EACH Dim Index = 0 For Each gvr As GridViewRow In GvDatos.Rows @@ -1901,7 +1910,7 @@ Partial Class Inventarios_RecepcionEntrega DtGarantias = ObjAcumuladores.DtResultados.Copy() End If - If DtGarantias IsNot Nothing AndAlso DtGarantias.Rows.Count > 0 Then + If DtGarantias IsNot Nothing AndAlso DtGarantias.Rows.Count > 0 AndAlso CveAlmacenGarantia > 0 Then CveMovimientoGarantia = ObjInventario.AddMovimiento(CveAlmacenGarantia, 2, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text) FolioGarantia = ObjInventario.Folio @@ -1922,6 +1931,66 @@ Partial Class Inventarios_RecepcionEntrega ' TERMINA: GARANTIAS + + ' COMIENZA: VIRTUAL + If TipoDocto.Contiene("Ing", "Rem") AndAlso UsuarioActual.CveEmpresa = 140 AndAlso TipoMovimiento = 1 Then + + Dim DtTamanios As New DataTable("DtTamanios") + DtTamanios.Columns.Add(New DataColumn("CvePS", GetType(Integer))) + DtTamanios.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) + DtTamanios.Columns.Add(New DataColumn("PU", GetType(Decimal))) + DtTamanios.Columns.Add(New DataColumn("CveUM", GetType(Integer))) + + If ObjAcumuladores.TamañoGet(-1, UsuarioActual.CveEmpresa) Then + For Each GvRow As GridViewRow In GvDatos.Rows + If GvRow.RowType = DataControlRowType.DataRow Then + For Each Tam As DataRow In ObjAcumuladores.DtResultados.Rows + If Tam("CveTamaño").ToString() = GvRow.DataKey("CveTamaño") Then + Dim Row As DataRow = DtTamanios.NewRow() + + Row("CvePS") = Tam("CvePSCargo").ToString().ToEntero() + Row("Cantidad") = GvRow.FCTextBox("TbCantidadF").Text.ToDecimal() + Row("PU") = GvRow.DataKey("PUVenta").ToDecimal() + Row("CveUM") = GvRow.DataKey("CveUM").ToEntero() + + DtTamanios.Rows.Add(Row) + End If + Next + End If + Next + End If + + Dim CveAlmacenVirutal As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 24).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + + If DtTamanios IsNot Nothing AndAlso DtTamanios.Rows.Count > 0 AndAlso CveAlmacenVirutal > 0 Then + Dim CveConceptoMovimientoVirtual = If(TipoMovimiento = 1, 3, 18) 'CHECA SI ES ENTRADA O DEVOLUCION + + CveAlmacenVirutal = ObjInventario.AddMovimiento(CveAlmacenVirutal, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text) + FolioVirtual = ObjInventario.Folio + + For Each RowUsado As DataRow In DtTamanios.Rows + Dim CvePS = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadEntrada As Double = RowUsado("Cantidad").ToString().ToDouble() + Dim PU As Double = RowUsado("PU").ToString().ToDouble() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + If Not ObjInventario.AddMovimientoDetalle(CveAlmacenVirutal, CantidadEntrada, CveUM, CvePS, PU, -1) Then + ErrorMovInv = True + TextoError = "Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar." + Exit For + End If + Next + Else + ErrorMovInv = True + End If + + If DtTamanios.Rows.Count = 0 Then + ErrorMovInv = True + End If + End If + + ' TERMINA: VIRTUAL + If Not ErrorMovInv Then Dim ConceptoMovimiento = 3 ConceptoMovimiento = If(TipoMovimiento = 1, ConceptoMovimiento, 18) @@ -2389,8 +2458,14 @@ Partial Class Inventarios_RecepcionEntrega Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoGarantia))) End If + 'VIRTUAL + If CveMovimientoVirtual > 0 Then + Msg.AppendFormat("
Movimiento de Salida del Almacen Virtal: Folio : ") + Msg.AppendFormat("{1}", CveMovimientoVirtual, FolioVirtual) + End If + 'If CveMovimientoSalidaDevRem > 0 Then - ' Msg.AppendFormat("

Movimiento de salida de devolución (Traspaso): {1}", CveMovimientoSalidaDevRem, FolioMovimientoSalidaDevRem) + ' Msg.AppendFormat(" < br /<> br /> Movimiento de salida de devolución (Traspaso): {1}", CveMovimientoSalidaDevRem, FolioMovimientoSalidaDevRem) ' Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalidaDevRem))) ' Msg.AppendFormat("

Movimiento de entrada de devolución (Traspaso): {1}", CveMovimientoEntradaDevRem, FolioMovimientoEntradaDevRem) diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index ab199856e..f9e3bbb22 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -638,7 +638,7 @@ Partial Class Inventarios_TraspasoAlmacen End If 'VALIDA ALMACEN DISTINTA SUCURSAL DEBE SER TRANSITORIO - If UsuarioActual.CveEmpresa <> 7 Then '[IPP] EMPRESA VIGILANCIA NO OCUPA TRANSITORIOS - TIENEN MIL SUCURSALES Xd + If Not UsuarioActual.CveEmpresa.Contiene(7, 140) Then '[IPP] EMPRESA VIGILANCIA NO OCUPA TRANSITORIOS - TIENEN MIL SUCURSALES Xd If Not ChkTransitorio.Checked Then Dim CveSucursalOrigen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue.ToEntero}") Dim CveSucursalDestino = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}") @@ -747,7 +747,7 @@ Partial Class Inventarios_TraspasoAlmacen Dim ErrorMovInv As Boolean = False Dim ErrorAC As Boolean = False Dim TextoError = "" - Dim TipoMovimientoSalida = If(ChkTransitorio.Checked, 26, 8) + Dim TipoMovimientoSalida = If(ChkTransitorio.Checked, 26, If(TipoAlmacenOrigen = 24, 26, 8)) 'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN diff --git a/Ventas/RepRecuperacion.aspx.vb b/Ventas/RepRecuperacion.aspx.vb index 4312dec0d..ab5d4b57b 100644 --- a/Ventas/RepRecuperacion.aspx.vb +++ b/Ventas/RepRecuperacion.aspx.vb @@ -92,8 +92,9 @@ Partial Class Ventas_RepRecuperacion 'Carga Bancos' DdlBanco.DataSource = GlobalDTBancos().FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa}") - DdlBanco.Items.Insert(0, New ListItem("Todos", "-1")) - DdlBanco.DataBind() + DdlBanco.DataBind() + DdlBanco.Items.Insert(0, New ListItem("Todos", "-1")) + DdlBanco.Items.Add(New ListItem("Empresa", "0")) 'Carga Clasificacion Cliente' Dim ObjCliente As New ClsClientes @@ -178,10 +179,8 @@ Partial Class Ventas_RepRecuperacion #Region "SELECTED INDEX CHANGE" Protected Sub DdlBanco_SelectedIndexChanged(sender As Object, e As EventArgs) - DdlCuentaBancaria.Items.Clear() - If DdlBanco.SelectedValue.ToEntero > 0 Then - DdlCuentaBancaria.DataSource = GlobalDTBancosCuentas(-1).FiltraParametros($"CveBanco = {DdlBanco.SelectedValue.ToEntero}") - End If + DdlCuentaBancaria.Items.Clear() + DdlCuentaBancaria.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltraParametros($"CveBanco = {DdlBanco.SelectedValue.ToEntero}") DdlCuentaBancaria.Items.Insert(0, New ListItem("Todos", "-1")) DdlCuentaBancaria.DataBind() End Sub diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 82e4ee29a..5d74cb4b2 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -3344,7 +3344,7 @@ Partial Class Ventas Dim Cons As Integer = 1 For Each dr As DataRow In OS.DtResultados.FiltraParametros("SeFacturara = 1 ").Rows - AgregarProductoServicio(dr("Cantidad").ToString.ToDecimal, dr("CveUM").ToString.ToEntero, dr("UM").ToString, -1, "", dr("CvePS").ToString.ToEntero, "", dr("Obs").ToString, dr("PU"), 0, -1, "", + AgregarProductoServicio(dr("Cantidad").ToString.ToDecimal, dr("CveUM").ToString.ToEntero, dr("UM").ToString, -1, "", dr("CvePS").ToString.ToEntero, "", dr("Obs").ToString, dr("PU").ToString.ToDecimal, 0, -1, "", dr("CveSubProyecto").ToString.ToEntero, dr("SubProyecto").ToString) 'Dim drt As DataRow = TmpDT.NewRow @@ -6862,7 +6862,7 @@ Partial Class Ventas End If ElseIf UsuarioActual.Empresa.TipoFacturacion = "CBB" Then - GeneraPDFCBB(ObjFactura.Fecha, Nothing, ObjFactura.SerieFolio, False) + GeneraPDFCBB(ObjFactura.FechaCP, Nothing, ObjFactura.SerieFolio, False) End If End If @@ -13499,17 +13499,21 @@ Partial Class Ventas Return False End If - If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count >= 1 Then - Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) - If DrPS IsNot Nothing Then - If DrPS("CveMoneda").ToString.ToEntero <> DdlMoneda.SelectedValue.ToEntero Then - Alert("No puede agregar un producto de diferente moneda a la ya seleccionada", TipoMensaje.MsgAdvertencia) - Return False + 'SI NO TIENE LA FUNCIONALIDAD VALIDARA LAS MONEDAS + If Not UsuarioActual.Empresa.Funcionalidad(524) <> "" Then + If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count >= 1 Then + Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) + If DrPS IsNot Nothing Then + If DrPS("CveMoneda").ToString.ToEntero <> DdlMoneda.SelectedValue.ToEntero Then + Alert("No puede agregar un producto de diferente moneda a la ya seleccionada", TipoMensaje.MsgAdvertencia) + Return False + End If End If End If End If - If Not UsuarioActual.TienePermisoProceso(169) Then ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR + ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR + If Not UsuarioActual.TienePermisoProceso(169) Then 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS If UsuarioActual.Empresa.UsaInventarios AndAlso CveTipoPS = 2 AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") Or (DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119))) Then Dim ObjInventarios As New ClsInventarios @@ -15463,7 +15467,7 @@ Partial Class Ventas Cuerpo = Cuerpo.Replace("{""Fecha""}", TxtFecha.Text) Cuerpo = Cuerpo.Replace("{""Total""}", TxtTotal.Text) Cuerpo = Cuerpo.Replace("{""FechaVencimiento""}", TxtFechaPago.Text) - Cuerpo = Cuerpo.Replace("{""SerieFolio""}", $"{LblSerie.Text} - {TxtFolio.Text}") + Cuerpo = Cuerpo.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) End If If UsuarioActual.Empresa.AsuntoPlantillaMailVenta.Trim.Length > 0 Then @@ -18411,7 +18415,7 @@ Partial Class Ventas strBody.AppendFormat("
Datos de {0} ", DdlTipoComprobante.SelectedItem.Text) strBody.Append(" ") strBody.Append(" ") - strBody.AppendFormat(" ", LblSerie.Text, TxtFolio.Text) + strBody.AppendFormat(" ", ObjFactura.SerieFolio) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", UsuarioActual.Empresa.Empresa)
Serie-Folio:{0}-{1} Serie-Folio:{0}
Empresa:{0}