diff --git a/App_Code/ClsOS.vb b/App_Code/ClsOS.vb index 3b0a253bc..717f0c40e 100644 --- a/App_Code/ClsOS.vb +++ b/App_Code/ClsOS.vb @@ -1337,7 +1337,7 @@ Public Class ClsOS Return Retorno End Function - Public Function UpdateVentaOS(CveVenta As Integer, CveOS As Integer, Optional Paciente As String = "-1", Optional Episodio As String = "-1", Optional FolioAdicional As String = "") As Boolean + Public Function UpdateVentaOS(CveVenta As Integer, CveOS As Integer, CveEmpresa As Integer, Optional Paciente As String = "-1", Optional Episodio As String = "-1", Optional FolioAdicional As String = "") As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OS_UpdateVentaOS") @@ -1345,6 +1345,7 @@ Public Class ClsOS With SqlAdapter.SelectCommand.Parameters .Add("@CveVenta", SqlDbType.Int).Value = CveVenta .Add("@CveOS", SqlDbType.Int).Value = CveOS + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Paciente", SqlDbType.VarChar).Value = Paciente .Add("@Episodio", SqlDbType.VarChar).Value = Episodio .Add("@FolioAdicional", SqlDbType.VarChar).Value = FolioAdicional @@ -1361,6 +1362,28 @@ Public Class ClsOS Return Retorno End Function + Public Function LiberarVentaOS(CveVenta As Integer, CveEmpresa As Integer, Optional CveOS As Integer = -1) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_OS_LiberarVentaOS") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveOS", SqlDbType.Int).Value = CveOS + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + + Catch ex As Exception + OnError("Ocurrió un error al guardar la venta en la Orden de Servicio.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + Public Function GetOrdenesServicioDevolucionMaterial(CveOS As Integer, CveVenta As Integer, Opcion As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OS_OrdenesServicioDevolucionMaterialGet") diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 579856c52..30b432f89 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2353,7 +2353,7 @@ Namespace Modelos 'Si viene de OS, Se guarda CveVenta en OS If CveOS > 0 Then - If Not ObjOS.UpdateVentaOS(factura.CveVenta, CveOS) Then + If Not ObjOS.UpdateVentaOS(factura.CveVenta, CveOS, UsuarioActual.CveEmpresa) Then ErrorList.Add("Ocurrió un error al guardar la venta en Ordenes de Servicio") End If End If @@ -5995,6 +5995,7 @@ Namespace Modelos Dim ObjEventos As New ClsOIEventos(ObjVentas.IniciaTransacSQL()) Dim ObjAcum As New ClsAcumuladores(ObjVentas.IniciaTransacSQL()) Dim ObjClientes As New ClsClientes(ObjVentas.IniciaTransacSQL()) + Dim ObjOS As New ClsOS(ObjVentas.IniciaTransacSQL()) Try If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then @@ -6225,50 +6226,50 @@ Namespace Modelos Dim TotalCostoAcumulado As Decimal = 0 Dim cont As Integer = 1 - Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - 'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER) - For Each RowInv As DataRow In tmpCostos.Rows - ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD() - TotalCostoAcumulado += ValorInventario + Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + 'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER) + For Each RowInv As DataRow In tmpCostos.Rows + ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD() + TotalCostoAcumulado += ValorInventario - 'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES - If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then - ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) + 'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES + If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then + ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) + End If + + If Not ErrorCancelar Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, Multiplicador * ValorInventario, 69, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then + ErrorCancelar = True End If + End If + cont += 1 + Next - If Not ErrorCancelar Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, Multiplicador * ValorInventario, 69, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then - ErrorCancelar = True - End If - End If - cont += 1 - Next + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, Multiplicador * TotalCosto, 68, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + ErrorCancelar = True + End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, Multiplicador * TotalCosto, 68, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + 'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA + + Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" + + If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then + AutoConta = False + End If + + If Not ErrorCancelar AndAlso ObjConta.ValidacionesPrePoliza(CvePrePolizaDev, UsuarioActual) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Modelos/RecepcionEntrega | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") ErrorCancelar = True End If + End If - 'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA - - Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" - - If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then - AutoConta = False - End If - - If Not ErrorCancelar AndAlso ObjConta.ValidacionesPrePoliza(CvePrePolizaDev, UsuarioActual) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Modelos/RecepcionEntrega | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ErrorCancelar = True - End If - End If - - If AutoConta And Not ErrorCancelar Then - If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al contabilizar la prepoliza." - End If + If AutoConta And Not ErrorCancelar Then + If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al contabilizar la prepoliza." End If + End If ' Else 'ErrorCancelar = True 'MensajeError = "Ocurrió un Error al ingresar las prepolizas" @@ -6556,6 +6557,8 @@ Namespace Modelos End If End If + + 'CANCELA CONTRATOS If Not ErrorCancelar Then If ObjFactura.CveContrato > 0 AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Ant") Then @@ -6613,6 +6616,16 @@ Namespace Modelos End If End If + 'EMPRESA HOSPITALARIA - SI SE CANCELA UNA REMISIÓN DEBE DE DESVINCULARSE DE LA OS y retornarle el estatus en proceso + If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso ObjFactura.TipoDocto = "Rem" Then + + If Not ObjOS.LiberarVentaOS(ObjFactura.CveVenta, UsuarioActual.CveEmpresa) Then + ErrorCancelar = True + MensajeError = "No se pudo actualizar el estatus de almacen del pedido" + End If + + End If + 'POLIZA DE CANCELACION 'If Not ErrorCancelar Then ' If UsuarioActual.Empresa.UsaAC Then @@ -7080,13 +7093,14 @@ Namespace Modelos Dim CveMovimientoEntradaDevRem As Integer = 0 Dim FolioMovimientoEntradaDevRem As Integer = 0 Dim Fecha As DateTime = ClsPaginas.NowADS() + Dim tCveOS As Integer = DtMovDetalle.MAX("CveOS").ToEntero 'SALIDA DE (ENTREGA POR ADELANTADO) - CveMovimientoSalidaDevRem = ObjInventario.AddMovimiento(CveAlmacen, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=CveAlmacenDestino, Modulo:="Mod/CancExAR1") + CveMovimientoSalidaDevRem = ObjInventario.AddMovimiento(CveAlmacen, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=CveAlmacenDestino, Modulo:="Mod/CancExAR1", CveOS:=tCveOS) FolioMovimientoSalidaDevRem = ObjInventario.Folio 'ENTRADA A (ALMACEN GENERAL) - CveMovimientoEntradaDevRem = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalidaDevRem, CveAlmacenDestino:=CveAlmacenDestino, Modulo:="Mod/CancExAR2") + CveMovimientoEntradaDevRem = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalidaDevRem, CveAlmacenDestino:=CveAlmacenDestino, Modulo:="Mod/CancExAR2", CveOS:=tCveOS) FolioMovimientoEntradaDevRem = ObjInventario.Folio If Not (CveMovimientoSalidaDevRem > 0 And CveMovimientoEntradaDevRem > 0) Then