Cancelacion OP
This commit is contained in:
79
OP/OP.aspx
79
OP/OP.aspx
@@ -776,6 +776,16 @@
|
||||
</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 class="modal-dialog" style="width: 750px;">
|
||||
<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>
|
||||
|
||||
|
||||
@@ -892,7 +969,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</asp:Content>
|
||||
|
||||
129
OP/OP.aspx.vb
129
OP/OP.aspx.vb
@@ -107,6 +107,8 @@ Partial Class OP_OP
|
||||
CreaPS()
|
||||
SetValues()
|
||||
End If
|
||||
|
||||
BtnCancelarOP.Visible = (CveOP > 0 AndAlso TipoEstatus <> 3 AndAlso TipoEstatus <> 4)
|
||||
End Sub
|
||||
|
||||
Private Sub CreaPS()
|
||||
@@ -900,6 +902,133 @@ Partial Class OP_OP
|
||||
End If
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user