This commit is contained in:
2025-04-02 17:37:19 -07:00
parent 940de8b510
commit 3b8bf96871

View File

@@ -822,7 +822,7 @@ Partial Class OP_OP
UpModalFinalizar.Update()
End Sub
Protected Sub BtnGuardarFinalizarOP_Click(sender As Object, e As EventArgs) Handles BtnGuardarFinalizarOP.Click
Protected Sub BtnGuardarFinalizarOP_Click(sender As Object, e As EventArgs)
If DdlAlmacenOrigenSalidaMP.SelectedValue = "-1" OrElse DdlAlmacenTerminado.SelectedValue = "-1" Then
Alert("Selecciona ambos almacenes.", TipoMensaje.MsgAdvertencia)
Exit Sub
@@ -840,9 +840,8 @@ Partial Class OP_OP
'Dim FolioVirtualEntrada As Integer = 0
'Dim FolioVirtualSalida As Integer = 0
Dim FolioEntrada As Integer = 0
Dim Fecha As DateTime = Txtfecha.Text.ToDate
Dim Fecha As DateTime = NowADS()
Dim ErrorMovInv As Boolean = False
Dim ErrorAC As Boolean = False
Dim TextoError As String = ""
Dim TipoMovimientoSalida As Integer = 8
Dim CveConceptoEntrada As Integer = 9
@@ -852,132 +851,72 @@ Partial Class OP_OP
ObjInventario.IniciaTransacSQL()
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Dim ObjOP As New ClsOP(ObjInventario.IniciaTransacSQL())
Try
CveMovimientoSalida = ObjInventario.AddMovimiento(
CveAlmacen:=DdlAlmacenOrigenSalidaMP.SelectedValue.ToEntero(),
CveConcepto:=TipoMovimientoSalida,
CveMoneda:=1,
FechaMovto:=Fecha,
tFolio:=-1,
CveUsuario:=UsuarioActual.CveUsuario,
CveEmpresa:=UsuarioActual.CveEmpresa,
CveCompra:=-1,
CveVenta:=-1,
CveSubProyecto:=-1,
CveActivoFijo:=-1,
Observaciones:="Finalización OP #" & LblFolio.Text,
CveAlmacenDestino:=DdlAlmacenTerminado.SelectedValue.ToEntero(),
Modulo:="OP/FinalizarOPSalida"
)
CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigenSalidaMP.SelectedValue.ToEntero(), TipoMovimientoSalida, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:="Finalización OP #" & LblFolio.Text, Modulo:="OP/FinalizarOPSalida")
If CveMovimientoSalida > 0 Then
For Each rowMP As DataRow In DtMP.Select("Tipo = 'MP'")
For Each rowMP As DataRow In DtMP.Select("Tipo = 'MP'")
If Not ObjInventario.AddMovimientoDetalle(
CveMovimientoSalida,
rowMP("Cantidad").ToString.ToDecimal(),
rowMP("CveUMMateriaPrima").ToString.ToEntero(),
rowMP("CvePSMateriaPrima").ToString.ToEntero(),
1
) Then
Throw New Exception("Error al agregar detalle de MP")
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, rowMP("Cantidad").ToString.ToDecimal(), rowMP("CveUMMateriaPrima").ToString.ToEntero(), rowMP("CvePSMateriaPrima").ToString.ToEntero(), 1) Then
ErrorMovInv = True : TextoError = "x" : Exit For
End If
Next
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
TotalCostoMP = ObjInventario.DtResultados.SUMD("Total")
End If
TotalCostoMP += rowMP("Cantidad").ToString.ToDecimal()
Next
CveMovimientoEntrada = ObjInventario.AddMovimiento(
CveAlmacen:=DdlAlmacenTerminado.SelectedValue.ToEntero(),
CveConcepto:=CveConceptoEntrada,
CveMoneda:=1,
FechaMovto:=Fecha,
tFolio:=-1,
CveUsuario:=UsuarioActual.CveUsuario,
CveEmpresa:=UsuarioActual.CveEmpresa,
CveCompra:=-1, CveVenta:=-1, CveSubProyecto:=-1, CveActivoFijo:=-1,
Observaciones:="Finalización OP #" & LblFolio.Text,
Modulo:="OP/FinalizarOPEntrada",
CveMovimientoRelacionado:=CveMovimientoSalida
)
Dim CantidadPT As Decimal = DtPS.AsEnumerable().Sum(Function(row) Convert.ToDecimal(row("Cantidad")))
Dim PU_PT As Decimal = If(CantidadPT > 0, TotalCostoMP / CantidadPT, 1)
For Each rowPT As DataRow In DtPS.Select("Tipo = 'Producto'")
If Not ObjInventario.AddMovimientoDetalle(
CveMovimientoEntrada,
rowPT("Cantidad").ToString.ToDecimal(),
rowPT("CveUM").ToString.ToEntero(),
rowPT("Clave").ToString.ToEntero(),
PU_PT
) Then
Throw New Exception("Error al agregar detalle de PT")
If Not ErrorMovInv Then
CveMovimientoEntrada = ObjInventario.AddMovimiento(DdlAlmacenTerminado.SelectedValue.ToEntero(), CveConceptoEntrada, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:="Finalización OP #" & LblFolio.Text, Modulo:="OP/FinalizarOPEntrada", CveMovimientoRelacionado:=CveMovimientoSalida)
End If
Next
If CveMovimientoEntrada > 0 AndAlso Not ErrorMovInv Then
Dim CantidadPT As Decimal = DtPS.AsEnumerable().Sum(Function(row) Convert.ToDecimal(row("Cantidad")))
Dim PU_PT As Decimal = If(CantidadPT > 0, TotalCostoMP / CantidadPT, 1)
For Each rowPT As DataRow In DtPS.Select("Tipo = 'Producto'")
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, rowPT("Cantidad").ToString.ToDecimal(), rowPT("CveUM").ToString.ToEntero(), rowPT("Clave").ToString.ToEntero(), PU_PT) Then
ErrorMovInv = True : TextoError = "x" : Exit For
End If
Next
If Not ErrorMovInv Then
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/OPFinalizada", 53, 0, 0, 1, Fecha, "Producción OP #" & LblFolio.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePoliza > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoMP, TotalCostoMP, 68, "Consumo MP OP #" & LblFolio.Text, "Consumo MP OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoSalida) Then
ErrorMovInv = True
End If
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCostoMP, TotalCostoMP, 68, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoEntrada) Then
ErrorMovInv = True
End If
If Not ErrorMovInv Then
If Not ObjOP.UpdateEstatusOP(CveOP, 3, UsuarioActual.CveEmpresa) Then
ErrorMovInv = True : TextoError = "Error al actualizar estatus de la OP"
End If
End If
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas(
Modulo:="Inventario/OPFinalizada",
CvePlantillaPoliza:=53,
Cargos:=0,
Abonos:=0,
CveMoneda:=1,
Fecha:=Fecha,
Concepto:="Producción OP #" & LblFolio.Text,
CveUsuario:=UsuarioActual.CveUsuario,
CveEmpresa:=UsuarioActual.CveEmpresa
)
If Not ObjConta.AddPrePolizasDetalle(
CvePrePoliza,
False,
TotalCostoMP,
TotalCostoMP,
68,
"Consumo MP OP #" & LblFolio.Text,
"Consumo MP OP #" & LblFolio.Text,
CveMovimientoAlmacen:=CveMovimientoSalida
) Then ErrorMovInv = True
If Not ObjConta.AddPrePolizasDetalle(
CvePrePoliza,
True,
TotalCostoMP,
TotalCostoMP,
68,
"Producción PT OP #" & LblFolio.Text,
"Producción PT OP #" & LblFolio.Text,
CveMovimientoAlmacen:=CveMovimientoEntrada
) Then ErrorMovInv = True
If Not ErrorMovInv Then
Dim ObjOP As New ClsOP()
If Not ObjOP.UpdateEstatusOP(CveOP, 3, UsuarioActual.CveEmpresa) Then
ErrorMovInv = True
TextoError = "Error al actualizar estatus de la OP"
'If Not ErrorMovInv Then
' If Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then
' ErrorMovInv = True : TextoError = "Error en validación de póliza"
' ElseIf ObjConta.ValorPolizaDescuadre > 0 Then
' ErrorMovInv = True : TextoError = "Descuadre en póliza contable"
' End If
'End If
End If
End If
End If
If Not ErrorMovInv Then
If Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then
ErrorMovInv = True
TextoError = "Error en validación de póliza"
ElseIf ObjConta.ValorPolizaDescuadre > 0 Then
ErrorMovInv = True
TextoError = "Descuadre en póliza contable"
End If
End If
If Not ErrorMovInv Then
ObjInventario.Commit()
Alert($"OP finalizada. Folio Contable: {ObjConta.ContaFolio}", TipoMensaje.MsgInformacion)
Alert($"Orden de producción finalizada.
<br/><a class='Texto' href='/Inventarios/EntradasSalidas.aspx?CveMovimiento= {CveMovimientoEntrada}'>{ObjInventario.Folio}</a> ", TipoMensaje.MsgInformacion)
Else
ObjInventario.RollBack()
Alert($"Error contable: {TextoError}", TipoMensaje.MsgError)