Cancelacion OP
This commit is contained in:
79
OP/OP.aspx
79
OP/OP.aspx
@@ -776,6 +776,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row mt-4">
|
||||||
|
<div class="col-md-12 d-flex justify-content-end">
|
||||||
|
<asp:Button ID="BtnCancelarOP" runat="server" Text="Cancelar OP"
|
||||||
|
CssClass="btn btn-danger" Visible="false"
|
||||||
|
OnClick="BtnCancelarOP_Click" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="DVModalFinalizarOP" class="modal ADS fade" role="dialog" data-backdrop="static">
|
<div id="DVModalFinalizarOP" class="modal ADS fade" role="dialog" data-backdrop="static">
|
||||||
<div class="modal-dialog" style="width: 750px;">
|
<div class="modal-dialog" style="width: 750px;">
|
||||||
<asp:UpdatePanel runat="server" class="modal-content" ID="UpModalFinalizar" UpdateMode="Conditional">
|
<asp:UpdatePanel runat="server" class="modal-content" ID="UpModalFinalizar" UpdateMode="Conditional">
|
||||||
@@ -877,6 +887,73 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Modal de Cancelación -->
|
||||||
|
<div id="DVModalCancelarOP" class="modal ADS fade" role="dialog" data-backdrop="static">
|
||||||
|
<div class="modal-dialog" style="width: 750px;">
|
||||||
|
<asp:UpdatePanel runat="server" class="modal-content" ID="UpModalCancelar" UpdateMode="Conditional">
|
||||||
|
<ContentTemplate>
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||||
|
<h4 class="modal-title">Cancelar Orden de Producción #<%= LblFolio.Text %></h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 form-group">
|
||||||
|
<label>Almacén Salida MP:</label>
|
||||||
|
<asp:DropDownList ID="DdlAlmacenSalidaMP" runat="server"
|
||||||
|
DataTextField="Almacen" DataValueField="CveAlmacen"
|
||||||
|
CssClass="form-control select2me" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 form-group">
|
||||||
|
<label>Almacén Devoluciones:</label>
|
||||||
|
<asp:DropDownList ID="DdlAlmacenDevolucionCancel" runat="server"
|
||||||
|
DataTextField="Almacen" DataValueField="CveAlmacen"
|
||||||
|
CssClass="form-control select2me" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 form-group">
|
||||||
|
<label>Almacén Mermas:</label>
|
||||||
|
<asp:DropDownList ID="DdlAlmacenMermas" runat="server"
|
||||||
|
DataTextField="Almacen" DataValueField="CveAlmacen"
|
||||||
|
CssClass="form-control select2me" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Materia Prima</div>
|
||||||
|
<asp:GridView ID="GvMPCancelacion" runat="server" AutoGenerateColumns="False"
|
||||||
|
CssClass="table table-striped table-hover" GridLines="None" Width="100%"
|
||||||
|
DataKeyNames="CvePSMateriaPrima,CveUMMateriaPrima">
|
||||||
|
<Columns>
|
||||||
|
<asp:BoundField DataField="PSCodigo" HeaderText="Producto" />
|
||||||
|
<asp:BoundField DataField="UnidadMedida" HeaderText="UM" />
|
||||||
|
<asp:BoundField DataField="Cantidad" HeaderText="Cantidad" DataFormatString="{0:N2}" ItemStyle-HorizontalAlign="Right" />
|
||||||
|
<asp:TemplateField HeaderText="Merma">
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:TextBox ID="TxtMerma" runat="server" Text="0"
|
||||||
|
CssClass="form-control" TextMode="Number" step="0.01" min="0" />
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
<asp:TemplateField HeaderText="Devolución">
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:TextBox ID="TxtDevolucionCancel" runat="server" Text="0"
|
||||||
|
CssClass="form-control" TextMode="Number" step="0.01" min="0" />
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<asp:Button ID="BtnAceptarCancelacion" runat="server"
|
||||||
|
Text="Aceptar Cancelación" CssClass="btn btn-primary"
|
||||||
|
OnClick="BtnAceptarCancelacion_Click" />
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
|
||||||
|
</div>
|
||||||
|
</ContentTemplate>
|
||||||
|
</asp:UpdatePanel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</asp:Content>
|
</asp:Content>
|
||||||
|
|
||||||
|
|
||||||
@@ -892,7 +969,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</asp:Content>
|
</asp:Content>
|
||||||
|
|||||||
129
OP/OP.aspx.vb
129
OP/OP.aspx.vb
@@ -107,6 +107,8 @@ Partial Class OP_OP
|
|||||||
CreaPS()
|
CreaPS()
|
||||||
SetValues()
|
SetValues()
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
BtnCancelarOP.Visible = (CveOP > 0 AndAlso TipoEstatus <> 3 AndAlso TipoEstatus <> 4)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub CreaPS()
|
Private Sub CreaPS()
|
||||||
@@ -900,6 +902,133 @@ Partial Class OP_OP
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
#Region "Cancelar"
|
||||||
|
Protected Sub BtnCancelarOP_Click(sender As Object, e As EventArgs)
|
||||||
|
' Cargar almacenes
|
||||||
|
DdlAlmacenSalidaMP.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1")
|
||||||
|
DdlAlmacenSalidaMP.DataBind()
|
||||||
|
DdlAlmacenDevolucionCancel.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1")
|
||||||
|
DdlAlmacenDevolucionCancel.DataBind()
|
||||||
|
DdlAlmacenMermas.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1")
|
||||||
|
DdlAlmacenMermas.DataBind()
|
||||||
|
|
||||||
|
' Cargar MP
|
||||||
|
GvMPCancelacion.DataSource = DtMP.FiltraParametros("Tipo = 'MP'")
|
||||||
|
GvMPCancelacion.DataBind()
|
||||||
|
|
||||||
|
RegistraScript("$('#DVModalCancelarOP').modal('show');")
|
||||||
|
UpModalCancelar.Update()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Protected Sub BtnAceptarCancelacion_Click(sender As Object, e As EventArgs)
|
||||||
|
Dim ObjInventario As New ClsInventarios()
|
||||||
|
Dim TieneError As Boolean = False
|
||||||
|
Dim MensajeError As String = ""
|
||||||
|
ObjInventario.IniciaTransacSQL()
|
||||||
|
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
|
||||||
|
Dim ObjOP As New ClsOP(ObjInventario.IniciaTransacSQL())
|
||||||
|
|
||||||
|
Try
|
||||||
|
|
||||||
|
|
||||||
|
' Validaciones
|
||||||
|
If DdlAlmacenSalidaMP.SelectedValue = "-1" OrElse
|
||||||
|
DdlAlmacenDevolucionCancel.SelectedValue = "-1" Then
|
||||||
|
Throw New Exception("Seleccione todos los almacenes requeridos")
|
||||||
|
End If
|
||||||
|
|
||||||
|
' 1. Movimiento de Salida MP
|
||||||
|
Dim CveMovSalida As Integer = ObjInventario.AddMovimiento(
|
||||||
|
DdlAlmacenSalidaMP.SelectedValue.ToEntero(), 26, 1, NowADS, -1,
|
||||||
|
UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
|
||||||
|
Observaciones:="Cancelación OP #" & LblFolio.Text)
|
||||||
|
|
||||||
|
' 2. Movimiento de Entrada Devoluciones
|
||||||
|
Dim CveMovEntradaDev As Integer = ObjInventario.AddMovimiento(
|
||||||
|
DdlAlmacenDevolucionCancel.SelectedValue.ToEntero(), 27, 1, NowADS, -1,
|
||||||
|
UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
||||||
|
|
||||||
|
' 3. Procesar cada material
|
||||||
|
For Each row As GridViewRow In GvMPCancelacion.Rows
|
||||||
|
Dim Cantidad As Decimal = CDec(row.Cells(2).Text)
|
||||||
|
Dim Merma As Decimal = row.FCTextBox("TxtMerma").Text.ToDecimal()
|
||||||
|
Dim Devolucion As Decimal = row.FCTextBox("TxtDevolucionCancel").Text.ToDecimal()
|
||||||
|
|
||||||
|
If (Merma + Devolucion) > Cantidad Then
|
||||||
|
Throw New Exception("La suma de merma y devolución no puede exceder la cantidad")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim CvePS As Integer = GvMPCancelacion.DataKeys(row.RowIndex).Values(0)
|
||||||
|
Dim CveUM As Integer = GvMPCancelacion.DataKeys(row.RowIndex).Values(1)
|
||||||
|
|
||||||
|
' Registrar salida
|
||||||
|
ObjInventario.AddMovimientoDetalle(CveMovSalida, Cantidad, CveUM, CvePS, 0)
|
||||||
|
|
||||||
|
' Registrar devolución
|
||||||
|
If Devolucion > 0 Then
|
||||||
|
ObjInventario.AddMovimientoDetalle(CveMovEntradaDev, Devolucion, CveUM, CvePS, 0)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
' 4. Registrar mermas si existen
|
||||||
|
Dim TotalMermas As Decimal = 0
|
||||||
|
If DdlAlmacenMermas.SelectedValue <> "-1" Then
|
||||||
|
Dim CveMovMerma As Integer = ObjInventario.AddMovimiento(
|
||||||
|
DdlAlmacenMermas.SelectedValue.ToEntero(), 26, 1, NowADS, -1,
|
||||||
|
UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
||||||
|
|
||||||
|
For Each row As GridViewRow In GvMPCancelacion.Rows
|
||||||
|
Dim Merma As Decimal = row.FCTextBox("TxtMerma").Text.ToDecimal()
|
||||||
|
If Merma > 0 Then
|
||||||
|
Dim CvePS As Integer = GvMPCancelacion.DataKeys(row.RowIndex).Values(0)
|
||||||
|
Dim CveUM As Integer = GvMPCancelacion.DataKeys(row.RowIndex).Values(1)
|
||||||
|
ObjInventario.AddMovimientoDetalle(CveMovMerma, Merma, CveUM, CvePS, 0)
|
||||||
|
TotalMermas += Merma
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
' 5. Generar pólizas contables
|
||||||
|
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("OP/Cancelacion", 53, 0, 0, 1, NowADS,
|
||||||
|
"Cancelación OP #" & LblFolio.Text,
|
||||||
|
UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
||||||
|
|
||||||
|
' Salida MP (Abono 68)
|
||||||
|
ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalMP, TotalMP, 68, "Salida MP Cancelación")
|
||||||
|
|
||||||
|
' Entrada Devoluciones (Cargo 68)
|
||||||
|
ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalDevoluciones, TotalDevoluciones, 68, "Devoluciones Cancelación")
|
||||||
|
|
||||||
|
If TotalMermas > 0 Then
|
||||||
|
' Salida Mermas (Abono 68)
|
||||||
|
ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalMermas, TotalMermas, 68, "Mermas Cancelación")
|
||||||
|
' Cargo Mermas (95)
|
||||||
|
ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalMermas, TotalMermas, 95, "Ajuste por Mermas")
|
||||||
|
End If
|
||||||
|
|
||||||
|
' 6. Actualizar estatus OP
|
||||||
|
|
||||||
|
If ObjOP.UpdateEstatusOP(CveOP, 4, UsuarioActual.CveEmpresa) Then
|
||||||
|
ObjInventario.Commit()
|
||||||
|
TxtEstatus.Text = "Cancelado"
|
||||||
|
BtnCancelarOP.Visible = False
|
||||||
|
UpOP.Update()
|
||||||
|
RegistraScript("$('#DVModalCancelarOP').modal('hide');")
|
||||||
|
Alert("OP cancelada correctamente", TipoMensaje.MsgInformacion)
|
||||||
|
Else
|
||||||
|
Throw New Exception("Error al actualizar el estatus de la OP")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
ObjInventario.RollBack()
|
||||||
|
Alert($"Error: {ex.Message}", TipoMensaje.MsgError)
|
||||||
|
Finally
|
||||||
|
ObjInventario.Dispose()
|
||||||
|
ObjConta.Dispose()
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Region "Finalizar"
|
#Region "Finalizar"
|
||||||
|
|||||||
Reference in New Issue
Block a user