diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 7088e71a2..3e1804197 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -4007,7 +4007,7 @@ Partial Class Inventarios_EntradasSalidas #Region "CAMBIO INVENTARIO FISICO" Protected Sub LnkCambioInventarioFisico_Click(sender As Object, e As EventArgs) - RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambioFisico")) + RegistraScript("$('#DivModalCambioFisico').modal({backdrop: 'static', keyboard: false});") End Sub Protected Sub LnkCambioVigencia_Click(sender As Object, e As EventArgs) @@ -4438,8 +4438,20 @@ Partial Class Inventarios_EntradasSalidas Exit Sub End If - Dim ObjInventario As New ClsInventarios - Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) + Dim CveAlmacen As Integer = DdlAlmacenInventarioFisico.SelectedValue.ToEntero + Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero() + Dim EsContabilizable As Boolean = (CveModalidad = 1) + + If CveAlmacen <= 0 Then + Alert("Debe seleccionar un almacen", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim ErrorMovInv As Boolean = False + Dim Mensaje As String = "" + Dim ValorEntrada As Decimal = 0 + Dim ValorSalida As Decimal = 0 + Dim ImporteConcepto As Decimal = 0 Dim CveMovimientoEntrada As Integer = -1 Dim FolioEntrada As Integer = -1 @@ -4447,215 +4459,214 @@ Partial Class Inventarios_EntradasSalidas Dim CveMovimientoSalida As Integer = -1 Dim FolioSalida As Integer = -1 - Dim ErrorMovInv As Boolean = False - Dim Mensaje As String = "" - Dim ValorEntrada As Decimal = 0 - Dim ValorSalida As Decimal = 0 - Dim ImporteConcepto As Decimal = 0 Dim tConcepto As String = TxtIFDescripcion.Text.Trim Dim Fecha As Date = (TxtFechaInvFisico.Text.ToDate.ToString("yyyy/MM/dd ") & NowADS().ToShortTimeString).ToDate Dim tCveSubProyectoEntrada As Integer = -1 Dim tCveSubProyectoSalida As Integer = -1 Dim TipoMovto As Boolean = False - Dim Prorratear As Boolean = If(UsuarioActual.CveEmpresa = 172 AndAlso DtMovimientosSalidaInvFisico.Rows.Count > 0 AndAlso DtMovimientosEntradaInvFisico.Rows.Count > 0, True, False) - Dim ProPU As Decimal = 0 + Dim ObjInventario As New ClsInventarios + Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) + Try - Dim CveAlmacen As Integer = DdlAlmacenInventarioFisico.SelectedValue.ToEntero - Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero() - Dim EsContabilizable As Boolean = (CveModalidad = 1) + Dim Prorratear As Boolean = If(UsuarioActual.CveEmpresa = 172 AndAlso DtMovimientosSalidaInvFisico.Rows.Count > 0 AndAlso DtMovimientosEntradaInvFisico.Rows.Count > 0, True, False) + Dim ProPU As Decimal = 0 - 'MOVIMIENTO DE ENTRADA - If DtMovimientosEntradaInvFisico.Rows.Count > 0 Then - 'FolioEntrada = ObjInventario.GetFolioSiguiente(32, UsuarioActual.CveEmpresa) - CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 32, 1, Fecha, FolioEntrada, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ1") - FolioEntrada = ObjInventario.Folio - Else - CveMovimientoEntrada = -1 - End If - - 'MOVIMIENTO DE SALIDA - If DtMovimientosSalidaInvFisico.Rows.Count > 0 Then - 'FolioSalida = ObjInventario.GetFolioSiguiente(34, UsuarioActual.CveEmpresa) - CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacen, 34, 1, Fecha, FolioSalida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimientoEntrada, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ2") - FolioSalida = ObjInventario.Folio - End If - - 'Registro PrePoliza - Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/E/S INVENTARIO FISICO", 53, 0, 0, 1, Fecha, TxtIFDescripcion.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) - - 'VALIDA, sino hay registrado ningun movimiento, que no siga - If (CveMovimientoEntrada <= 0 AndAlso CveMovimientoSalida <= 0) Or CvePrePoliza <= 0 Then - Alert("Ocurrió un error al realizar los registros. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - ObjInventario.RollBack() 'deshace lo insertado. - ObjInventario.Dispose() 'elimino la instancia - Exit Sub - End If - - 'VALIDA EXISTENCIAS SALIDA E INSERTA DETALLES - For Each Dr As DataRow In DtMovimientosSalidaInvFisico.Rows - If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1) >= Dr("Cantidad").ToString.ToDouble Then - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, - Dr("PU").ToString.ToDecimal.RoundSQL(6), -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, - Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then - Mensaje = "Ocurrió un error al guardar los movimientos de salida" - ErrorMovInv = True - Exit For - End If + 'MOVIMIENTO DE ENTRADA + If DtMovimientosEntradaInvFisico.Rows.Count > 0 Then + 'FolioEntrada = ObjInventario.GetFolioSiguiente(32, UsuarioActual.CveEmpresa) + CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 32, 1, Fecha, FolioEntrada, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ1") + FolioEntrada = ObjInventario.Folio Else - Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS")) + CveMovimientoEntrada = -1 + End If + + 'MOVIMIENTO DE SALIDA + If DtMovimientosSalidaInvFisico.Rows.Count > 0 Then + 'FolioSalida = ObjInventario.GetFolioSiguiente(34, UsuarioActual.CveEmpresa) + CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacen, 34, 1, Fecha, FolioSalida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimientoEntrada, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ2") + FolioSalida = ObjInventario.Folio + End If + + 'Registro PrePoliza + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/E/S INVENTARIO FISICO", 53, 0, 0, 1, Fecha, TxtIFDescripcion.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) + + 'VALIDA, sino hay registrado ningun movimiento, que no siga + If (CveMovimientoEntrada <= 0 AndAlso CveMovimientoSalida <= 0) Or CvePrePoliza <= 0 Then + ErrorMovInv = True + Alert("Ocurrió un error al realizar los registros. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - ErrorMovInv = True - Exit For End If - Next - If Prorratear Then - If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - - Dim ProTotalSalida As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) - Dim ProCantidadEntrada As Decimal = DtMovimientosEntradaInvFisico.SUMD("Cantidad", "") - - ProPU = (ProTotalSalida / ProCantidadEntrada).RoundSQL(10) - - If Not ProPU > 0 Then + If Not ErrorMovInv Then + 'VALIDA EXISTENCIAS SALIDA E INSERTA DETALLES + For Each Dr As DataRow In DtMovimientosSalidaInvFisico.Rows + If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1) >= Dr("Cantidad").ToString.ToDouble Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, + Dr("PU").ToString.ToDecimal.RoundSQL(6), -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, + Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then + Mensaje = "Ocurrió un error al guardar los movimientos de salida" + ErrorMovInv = True + Exit For + End If + Else + Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS")) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ErrorMovInv = True - Mensaje = $"Ocurrió un error al obtener el PU proraterado, pu {ProPU}" + Exit For End If + Next - Else - ErrorMovInv = True - Mensaje = "Ocurrió un error al obtener el PU proraterado" - End If - End If - End If + If Not ErrorMovInv AndAlso Prorratear Then + If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - If Not ErrorMovInv Then - For Each Dr As DataRow In DtMovimientosEntradaInvFisico.Rows - ImporteConcepto = If(Prorratear, ProPU, Dr("PU").ToString.ToDecimal) - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, - ImporteConcepto, -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, - Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then - Mensaje = "Ocurrió un error al guardar los movimientos de entrada" - ErrorMovInv = True - Exit For - End If - Next - End If + Dim ProTotalSalida As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) + Dim ProCantidadEntrada As Decimal = DtMovimientosEntradaInvFisico.SUMD("Cantidad", "") - 'Obtiene valor entrada - If Not ErrorMovInv AndAlso CveMovimientoEntrada > 0 Then - If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then - Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) - ValorEntrada = tValorInventario + ProPU = (ProTotalSalida / ProCantidadEntrada).RoundSQL(10) - Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue)) - If drA2 IsNot Nothing Then - tCveSubProyectoEntrada = drA2("CveSubProyecto").ToString.ToEntero - End If - Else - ErrorMovInv = True - Mensaje = "Ocurrió un error al validar los movimientos contables de entrada" - End If - End If + If Not ProPU > 0 Then + ErrorMovInv = True + Mensaje = $"Ocurrió un error al obtener el PU proraterado, pu {ProPU}" + End If - 'Obtiene valor salida - If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) - ValorSalida = tValorInventario - Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue)) - If drA2 IsNot Nothing Then - tCveSubProyectoSalida = drA2("CveSubProyecto").ToString.ToEntero - End If - Else - ErrorMovInv = True - Mensaje = "Ocurrió un error al validar los movimientos contables de salida" - End If - End If - - If Not ErrorMovInv Then - 'NOTA - ' cuando el valor entrada sea mayor al de salida, el valor de salida debe de ser negativo y cargado - ' cuando el valor salida sea mayor al de entrada, el valor de entrada debe de ser negativo y abonado - - 'Registro la prepólizaDetalle Entradas - If CveMovimientoEntrada > 0 Then - TipoMovto = False - If ValorEntrada <= ValorSalida Then - TipoMovto = True : ValorEntrada = -ValorEntrada ' invierto su naturaleza - End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorEntrada, ValorEntrada, 68, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoEntrada, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then - ErrorMovInv = True - Mensaje = "Ocurrió un error al guardar los movimientos contables de entrada" - End If - End If - - 'Registro la prepólizaDetalle Salidas - If CveMovimientoSalida > 0 Then - TipoMovto = True - If ValorSalida < ValorEntrada Then - TipoMovto = False : ValorSalida = -ValorSalida ' invierto su naturaleza - End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorSalida, ValorSalida, 68, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then - ErrorMovInv = True - Mensaje = "Ocurrió un error al guardar los movimientos contables de salida" - End If - End If - - If ValorEntrada >= ValorSalida Then - 'si el valor entrada es igual al valorsalida, y este sea cero. - If tCveSubProyectoEntrada = -1 Then tCveSubProyectoEntrada = tCveSubProyectoSalida - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorEntrada + ValorSalida, ValorEntrada + ValorSalida, 260, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then - ErrorMovInv = True - Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de ingreso" - End If - ElseIf ValorSalida >= ValorEntrada Then - 'inserta el gasto - Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("") - Dim tCveClasificacion As Integer = -1 - If dr IsNot Nothing Then - tCveClasificacion = dr("CveClasificacion").ToString.ToEntero - End If - - If Math.Abs((ValorSalida + ValorEntrada)) <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorSalida + ValorEntrada, ValorSalida + ValorEntrada, 290, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=tCveClasificacion, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then - ErrorMovInv = True - Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de salida" + Else + ErrorMovInv = True + Mensaje = "Ocurrió un error al obtener el PU proraterado" + End If End If End If + + If Not ErrorMovInv Then + For Each Dr As DataRow In DtMovimientosEntradaInvFisico.Rows + ImporteConcepto = If(Prorratear, ProPU, Dr("PU").ToString.ToDecimal) + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, + ImporteConcepto, -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, + Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then + Mensaje = "Ocurrió un error al guardar los movimientos de entrada" + ErrorMovInv = True + Exit For + End If + Next + End If + + 'Obtiene valor entrada + If Not ErrorMovInv AndAlso CveMovimientoEntrada > 0 Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then + Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) + ValorEntrada = tValorInventario + + Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue)) + If drA2 IsNot Nothing Then + tCveSubProyectoEntrada = drA2("CveSubProyecto").ToString.ToEntero + End If + Else + ErrorMovInv = True + Mensaje = "Ocurrió un error al validar los movimientos contables de entrada" + End If + End If + + 'Obtiene valor salida + If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2) + ValorSalida = tValorInventario + Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue)) + If drA2 IsNot Nothing Then + tCveSubProyectoSalida = drA2("CveSubProyecto").ToString.ToEntero + End If + Else + ErrorMovInv = True + Mensaje = "Ocurrió un error al validar los movimientos contables de salida" + End If + End If + + If Not ErrorMovInv Then + 'NOTA + ' cuando el valor entrada sea mayor al de salida, el valor de salida debe de ser negativo y cargado + ' cuando el valor salida sea mayor al de entrada, el valor de entrada debe de ser negativo y abonado + + 'Registro la prepólizaDetalle Entradas + If CveMovimientoEntrada > 0 Then + TipoMovto = False + If ValorEntrada <= ValorSalida Then + TipoMovto = True : ValorEntrada = -ValorEntrada ' invierto su naturaleza + End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorEntrada, ValorEntrada, 68, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoEntrada, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then + ErrorMovInv = True + Mensaje = "Ocurrió un error al guardar los movimientos contables de entrada" + End If + End If + + 'Registro la prepólizaDetalle Salidas + If CveMovimientoSalida > 0 Then + TipoMovto = True + If ValorSalida < ValorEntrada Then + TipoMovto = False : ValorSalida = -ValorSalida ' invierto su naturaleza + End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorSalida, ValorSalida, 68, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then + ErrorMovInv = True + Mensaje = "Ocurrió un error al guardar los movimientos contables de salida" + End If + End If + + If ValorEntrada >= ValorSalida Then + 'si el valor entrada es igual al valorsalida, y este sea cero. + If tCveSubProyectoEntrada = -1 Then tCveSubProyectoEntrada = tCveSubProyectoSalida + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorEntrada + ValorSalida, ValorEntrada + ValorSalida, 260, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then + ErrorMovInv = True + Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de ingreso" + End If + ElseIf ValorSalida >= ValorEntrada Then + 'inserta el gasto + Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("") + Dim tCveClasificacion As Integer = -1 + If dr IsNot Nothing Then + tCveClasificacion = dr("CveClasificacion").ToString.ToEntero + End If + + If Math.Abs((ValorSalida + ValorEntrada)) <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorSalida + ValorEntrada, ValorSalida + ValorEntrada, 290, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=tCveClasificacion, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then + ErrorMovInv = True + Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de salida" + End If + End If + End If + + End If + + If Not ErrorMovInv Then + Dim AutoConta As Boolean = True + If (UsuarioActual.CveEmpresa = 119) Then + AutoConta = False + End If + If Not ErrorMovInv AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, AutoConta:=AutoConta) Then + ErrorMovInv = True + 'If ObjConta.ValorPolizaDescuadre > 0 Then + ' GuardaLogAD($"Compras/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + ' ErrorPrepolizaDescuadre = True + 'End If + End If + End If + + Dim RetornoVirtual As MMovimientoVirtual = Nothing + If Not ErrorMovInv AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + If CveMovimientoSalida > 0 Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoSalida, ObjInventario, ObjConta) + + If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError + + If CveMovimientoEntrada > 0 AndAlso Not ErrorMovInv Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoEntrada, ObjInventario, ObjConta) + + If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError + End If End If - End If - - If Not ErrorMovInv Then - Dim AutoConta As Boolean = True - If (UsuarioActual.CveEmpresa = 119) Then - AutoConta = False - End If - If Not ErrorMovInv AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, AutoConta:=AutoConta) Then - ErrorMovInv = True - 'If ObjConta.ValorPolizaDescuadre > 0 Then - ' GuardaLogAD($"Compras/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ' ErrorPrepolizaDescuadre = True - 'End If - End If - End If - - Dim RetornoVirtual As MMovimientoVirtual = Nothing - If Not ErrorMovInv AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - If CveMovimientoSalida > 0 Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoSalida, ObjInventario, ObjConta) - - If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError - - If CveMovimientoEntrada > 0 AndAlso Not ErrorMovInv Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoEntrada, ObjInventario, ObjConta) - - If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError - End If - + Catch ex As Exception + OnError("Ocurrió un error al generar el movimiento", ex) + ErrorMovInv = True + End Try If Not ErrorMovInv Then ObjInventario.Commit() ' aplica los movimientos insertados @@ -4695,12 +4706,13 @@ Partial Class Inventarios_EntradasSalidas If GvSalidasCambioVigencia.Rows.Count = 0 Then Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambioFisico")) + RegistraScript(String.Format("$('#{0}').modal({backdrop: 'static', keyboard: false});", "DivModalCambioFisico")) Exit Sub End If Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) + Dim CveMovimientoEntrada As Integer = -1 Dim CveMovimientoSalida As Integer = -1 Dim ErrorMovInv As Boolean = False @@ -4709,7 +4721,7 @@ Partial Class Inventarios_EntradasSalidas Dim ValorSalida As Decimal = 0 Dim ImporteConcepto As Decimal = 0 Dim tConcepto As String = TxtObsCambioVigencia.Text.Trim - Dim Fecha As Date = TxtFechaCambio.Text.ToDate.ToString("yyyy/MM/dd").ToDate + Dim Fecha As Date = TxtFechaCambio.Text.ToDate.ToString("yyyy/MM/dd").ToDate() Dim tCveSubProyecto As Integer = -1 Dim TipoMovto As Boolean = False @@ -5480,36 +5492,46 @@ Partial Class Inventarios_EntradasSalidas 'VERIFICA SI TIENE ALMACEN VIRTUAL If CveAlmacenVirtual > 0 Then If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then - DtPSVirtual = ObjInventario.DtResultados - End If + DtPSVirtual = ObjInventario.DtResultados.Copy() - If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then + If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then - CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(tOrigen > 0, 36, 37), 1, TxtFecha.Text.Replace(",", "").ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="ES/GV") - FolioVirtual = ObjInventario.Folio + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(tOrigen > 0, 36, 37), 1, TxtFecha.Text.Replace(",", "").ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="ES/GV") + If CveMovimientoVirtual > 0 Then + FolioVirtual = ObjInventario.Folio - For Each RowUsado As DataRow In DtPSVirtual.Rows - Dim CvePS As Integer = RowUsado("CvePS").ToString().ToEntero() - Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() - Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() - Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + For Each RowUsado As DataRow In DtPSVirtual.Rows + Dim CvePS As Integer = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next + Else ErrorMovInv = True - Exit For End If - Next - End If - If Not ErrorMovInv Then - Dim dttCosto As DataTable = Nothing - If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) Then - dttCosto = ObjInventario.DtResultados End If - If ContabilizaMovimientoAlmacen(ObjConta:=ObjConta, TxtFecha.Text.Replace(",", "").ToDate, "Virtual", "ES/GV", CveMovimientoVirtual, -1, DtPSVirtual.SUM("TotalCargo"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, True, dttCosto, tCveSubProyecto) > 0 Then - ErrorMovInv = True + If Not ErrorMovInv AndAlso CveMovimientoVirtual > 0 Then + If Not ErrorMovInv Then + Dim dttCosto As DataTable = Nothing + If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) Then + dttCosto = ObjInventario.DtResultados + End If + + If ContabilizaMovimientoAlmacen(ObjConta, TxtFecha.Text.Replace(",", "").ToDate, "Virtual", "ES/GV", CveMovimientoVirtual, -1, dttCosto.SUM("Total"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, True, dttCostos:=dttCosto, CveSubProyecto:=tCveSubProyecto) <= 0 Then + ErrorMovInv = True + End If + End If End If + + Else + ErrorMovInv = True End If End If