diff --git a/OP/OP.aspx.vb b/OP/OP.aspx.vb
index 4e48eecba..3053d6962 100644
--- a/OP/OP.aspx.vb
+++ b/OP/OP.aspx.vb
@@ -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.
+
{ObjInventario.Folio} ", TipoMensaje.MsgInformacion)
Else
ObjInventario.RollBack()
Alert($"Error contable: {TextoError}", TipoMensaje.MsgError)