Modulo de Orden De Producción Detalles

This commit is contained in:
Luis Quijada
2025-03-12 19:44:50 -07:00
parent b2a4b63432
commit 52593271df
2 changed files with 501 additions and 0 deletions

244
OP/OP.aspx Normal file
View File

@@ -0,0 +1,244 @@
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="OP.aspx.vb" Inherits="OP_OP" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<style>
.op-container {
max-width: 1400px;
margin: 20px auto;
padding: 20px;
}
.op-header {
text-align: left;
border-bottom: 2px solid #e0e0e0;
padding-bottom: 15px;
margin-bottom: 25px;
}
.op-title {
font-size: 24px;
color: #2c3e50;
margin: 0;
}
.op-section {
margin-bottom: 25px;
text-align: left;
}
.op-field {
margin-bottom: 15px;
}
.op-label {
font-weight: bold;
color: #7f8c8d;
margin-bottom: 5px;
display: block;
}
.op-input {
width: 100%;
max-width: 400px;
}
.op-date-section {
margin-top: 30px;
padding-top: 15px;
border-top: 1px solid #eee;
}
.op-status {
font-size: 16px;
font-weight: bold;
}
.section-title {
font-weight: bold;
background-color: #CCC;
padding: 5px;
margin-top: 10px;
}
.box {
background-color: #EEE;
margin-bottom: 10px;
padding: 10px;
}
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Orden de Producción
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="HA" runat="Server">
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="C" runat="Server">
<!-- Aquí se muestra la información de la OP -->
<asp:UpdatePanel ID="UpOP" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="op-container">
<!-- Encabezado -->
<div class="op-header">
<h3 class="op-title">Orden de producción #<asp:Label ID="LblCveOP" runat="server"></asp:Label></h3>
<div class="op-status">
<label>Estatus:</label>
<asp:TextBox ID="TxtEstatus" runat="server" CssClass="form-control" Width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVEstatus" runat="server"
ControlToValidate="TxtEstatus"
Display="Dynamic"
ErrorMessage="Estatus requerido"
CssClass="text-danger"
ValidationGroup="GrpGuardar" />
</div>
</div>
<div class="form-section">
<div class="form-group">
<label>Cliente</label>
<ADS:Dropdownlost ID="DdlClientes" runat="server"
CssClassDdl="form-control" DataTextField="NombreComercial"
data-metodo="getcliente"
DataValueField="CveCliente" Enabled="false" />
</div>
</div>
<!-- Centro de Costo -->
<div class="form-section">
<div class="form-group">
<asp:Label ID="LblProyecto" runat="server" class="col-md-1">
<span class="filtro-texto">Proyecto:</span>
</asp:Label>
<div runat="server" id="DivProyecto" class="col-md-2">
<asp:DropDownList ID="DdlProyecto" runat="server" AutoPostBack="true" AppendDataBoundItems="true" DataTextField="Proyecto" DataValueField="CveProyecto" Class="table-group-action-input form-control input-inline input-small input-sm select2me" Style="width: 100%;"></asp:DropDownList>
</div>
<asp:Label ID="LblSubProyecto" runat="server" class="col-md-1">
<span class="filtro-texto">Subproyecto:</span>
</asp:Label>
<div runat="server" id="DivSubProyecto" class="col-md-2">
<asp:DropDownList ID="DdlSubProyecto" runat="server" AppendDataBoundItems="true" DataTextField="SubProyecto" DataValueField="CveSubProyecto" Class="table-group-action-input form-control input-inline input-small input-sm select2me" Style="width: 100%;"></asp:DropDownList>
</div>
</div>
</div>
<!-- Descripción -->
<div class="form-group">
<label>Descripción</label>
<asp:TextBox ID="TxtDescripcion" runat="server"
CssClass="form-control"
TextMode="MultiLine"
Rows="2" />
<asp:RequiredFieldValidator ID="RFVDescripcion" runat="server"
ControlToValidate="TxtDescripcion"
ErrorMessage="Descripción requerida"
Display="Dynamic"
CssClass="text-danger"
ValidationGroup="GrpGuardar" />
</div>
<!-- Fecha -->
<div class="row">
<div class="col-md-1">
<label class="mb-0">Fecha</label>
</div>
<div class="col-md-2">
<div class="input-group input-sm input-small date date-picker " data-date-format="dd/mm/yyyy" style="width: 100px !important; padding: 0px;">
<asp:TextBox Width="80px" ID="Txtfecha" runat="server" CssClass="form-control" CausesValidation="true" MaxLength="10"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="imgCalendarioF" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="MEEFechaF" runat="server" TargetControlID="Txtfecha" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="Calendario2" TargetControlID="Txtfecha" PopupButtonID="imgCalendarioF" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="rfvFechaF" runat="server" ControlToValidate="Txtfecha" Display="None" ErrorMessage="El campo <b>''Fecha Final''</b> es requerido por la aplicación, por favor ingrese una fecha." ValidationGroup="Valida"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="cvFechaF" runat="server" ControlToValidate="Txtfecha" Display="None" ErrorMessage="El campo <b>''Fecha Final''</b> no tienes el formato correcto, por favor intente de nuevo con el siguiente formato: (dd/mm/yyyy)." Operator="DataTypeCheck" Type="Date" ValidationGroup="Valida"></asp:CompareValidator>
<ajax:ValidatorCalloutExtender ID="vcoRfvFF" runat="server" HighlightCssClass="vco" TargetControlID="rfvFechaF" Width="350px"></ajax:ValidatorCalloutExtender>
<ajax:ValidatorCalloutExtender ID="vcoCvFF" runat="server" HighlightCssClass="vco" TargetControlID="cvFechaF" Width="350px"></ajax:ValidatorCalloutExtender>
</div>
</div>
<!-- Producto -->
<div class="form-group">
<label class="col-md-2">Producto:</label>
<div class="col-md-4">
<ADS:Dropdownlost ID="DdlPS" runat="server"
CssClassDdl="form-control" DataTextField="PSCodigo"
DataValueField="CvePS" Enabled="false" />
</div>
<asp:Button ID="BtnAgregarProducto" runat="server" Text="Agregar Producto"
CssClass="btn btn-primary" ValidationGroup="GrpAgregarProducto" />
</div>
<!-- GridViews -->
<asp:UpdatePanel ID="UpGvDatosOP" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row">
<div class="col-md-6 box">
<div class="section-title">Productos</div>
<asp:GridView ID="GvProductos" runat="server" AutoGenerateColumns="False"
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
<Columns>
<asp:BoundField DataField="PSCodigo" HeaderText="Producto" />
<asp:BoundField DataField="UnidadMedida" HeaderText="UM" />
<asp:BoundField DataField="Cantidad" HeaderText="Cantidad" />
</Columns>
</asp:GridView>
</div>
</div>
<div class="row">
<div class="col-md-6 box">
<div class="section-title">Materia prima</div>
<asp:GridView ID="GvMateriaPrima" runat="server" AutoGenerateColumns="False"
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
<Columns>
<asp:BoundField DataField="producto" HeaderText="Producto" />
<asp:BoundField DataField="UnidadMedida" HeaderText="UM" />
<asp:BoundField DataField="Cantidad" HeaderText="Cantidad" />
<asp:BoundField DataField="Surtido" HeaderText="Surtido" />
</Columns>
</asp:GridView>
</div>
</div>
<div class="col-md-6 box">
<div class="section-title">Mano de obra</div>
<asp:GridView ID="GvManoObra" runat="server" AutoGenerateColumns="False"
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
<Columns>
<asp:BoundField DataField="Puesto" HeaderText="Puesto" />
<asp:BoundField DataField="Cantidad" HeaderText="Cantidad" />
</Columns>
</asp:GridView>
</div>
<div class="row">
<div class="col-md-6 box">
<div class="section-title">Costo indirecto</div>
<asp:GridView ID="GvCostosIndirectos" runat="server" AutoGenerateColumns="False"
CssClass="table table-striped table-hover" GridLines="None" Width="100%">
<Columns>
<asp:BoundField DataField="producto" HeaderText="Producto" />
<asp:BoundField DataField="Cantidad" HeaderText="Costo" />
</Columns>
</asp:GridView>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
</asp:Content>

257
OP/OP.aspx.vb Normal file
View File

@@ -0,0 +1,257 @@
Imports System.Data
Imports System.Drawing
Imports DocumentFormat.OpenXml.Drawing.Diagrams
Imports System.IO
Imports Extensiones
Imports Microsoft.Reporting.WebForms
Imports Org.BouncyCastle.Asn1.Utilities
Partial Class OP_OP
Inherits ClsPaginas
#Region "Propiedades"
Private Property CveOP As Integer
Get
Return ViewState("CveOP").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveOP") = value
End Set
End Property
Private Property DtPS As DataTable
Get
Return DirectCast(ViewState("DtPS"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtPS") = value
End Set
End Property
Private Property DtMP As DataTable
Get
Return DirectCast(ViewState("DtMP"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtMP") = value
End Set
End Property
Private Property DtMO As DataTable
Get
Return DirectCast(ViewState("DtMO"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtMO") = value
End Set
End Property
Private Property DtCI As DataTable
Get
Return DirectCast(ViewState("DtCI"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtCI") = value
End Set
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
CveOP = If(Request("CveOP") <> "", Request("CveOP").ToString.ToEntero, "-1".ToEntero)
CreaPS()
SetValues()
End If
End Sub
Private Sub CreaPS()
DtPS = New DataTable()
DtPS.Columns.Add("Tipo", GetType(String)) ' Producto, MP, MO, CI
DtPS.Columns.Add("Clave", GetType(Integer))
DtPS.Columns.Add("PSCodigo", GetType(String))
DtPS.Columns.Add("UnidadMedida", GetType(String))
DtPS.Columns.Add("Cantidad", GetType(Decimal))
DtPS.Columns.Add("Surtido", GetType(Decimal))
DtPS.Columns.Add("Costo", GetType(Decimal))
DtMP = New DataTable()
DtMP.Columns.Add("Tipo", GetType(String)) ' Producto, MP, MO, CI
DtMP.Columns.Add("Clave", GetType(Integer))
DtMP.Columns.Add("Producto", GetType(String))
DtMP.Columns.Add("UnidadMedida", GetType(String))
DtMP.Columns.Add("Cantidad", GetType(Decimal))
DtMP.Columns.Add("Surtido", GetType(Decimal))
DtMO = New DataTable()
DtMO.Columns.Add("Tipo", GetType(String)) ' Producto, MP, MO, CI
DtMO.Columns.Add("Clave", GetType(Integer))
DtMO.Columns.Add("Puesto", GetType(String))
DtMO.Columns.Add("Cantidad", GetType(Decimal))
DtCI = New DataTable()
DtCI.Columns.Add("Tipo", GetType(String)) ' Producto, MP, MO, CI
DtCI.Columns.Add("Clave", GetType(Integer))
DtCI.Columns.Add("Producto", GetType(String))
DtCI.Columns.Add("Cantidad", GetType(Decimal))
End Sub
Private Sub SetValues()
CargarClientes()
CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto, VisualizacionReporte:=1)
CargarProductos()
If CveOP = -1 Then
' Modo registro: mostrar dropdowns y ocultar los TextBox
DdlClientes.Enabled = True
DdlProyecto.Enabled = True
DdlSubProyecto.Enabled = True
DdlPS.Enabled = True
Else
DdlClientes.Enabled = False
DdlProyecto.Enabled = False
DdlSubProyecto.Enabled = False
DdlPS.Enabled = False
CargaDatos()
End If
End Sub
Private Sub CargaDatos()
If CveOP > 0 Then
Dim ObjOP As New ClsOP()
If ObjOP.GetOP(CveOP, -1, -1, -1, -1, -1, MinFecha, MaxFecha, UsuarioActual.CveEmpresa) Then
Dim DTOP As DataTable = ObjOP.DtResultados
If DTOP.Rows.Count > 0 Then
Dim dr As DataRow = DTOP.Rows(0)
LblCveOP.Text = CveOP.ToString
DdlClientes.txtText.Value = dr("Cliente").ToString
DdlClientes.txtValue.Value = dr("CveCliente").ToString
TxtEstatus.Text = dr("Estatus").ToString
DdlSubProyecto.SelectedValue = dr("CveSubProyecto").ToString
DdlPS.txtText.Value = dr("Producto").ToString
DdlPS.txtValue.Value = dr("CvePS").ToString
Txtfecha.Text = dr("Fecha").ToString
TxtDescripcion.Text = dr("Descripcion").ToString
End If
End If
ObjOP.Dispose()
End If
End Sub
Private Sub CargarClientes()
Dim EsWS As Boolean = If(UsuarioActual.Empresa.Funcionalidad(105) = "1" Or
UsuarioActual.Empresa.Funcionalidad(141) = "1", True, False)
If EsWS Then
DdlClientes.setEsWebService(True)
Else
DdlClientes.setEsWebService(False)
DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
DdlClientes.DataBind()
DdlClientes.ddl.Items.Insert(0, New ListItem("Seleccione Cliente", "-1"))
End If
End Sub
Private Sub CargarProductos()
DdlPS.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then
DdlPS.SelectedText = ""
DdlPS.SelectedValue = "-1"
Else
DdlPS.ddl.Items.Clear()
DdlPS.ddl.DataBind()
DdlPS.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1"))
End If
End Sub
Protected Sub BtnAgregarProducto_Click(sender As Object, e As EventArgs) Handles BtnAgregarProducto.Click
If DdlPS.SelectedValue = "-1" Then Exit Sub
Dim newRow As DataRow = DtPS.NewRow()
Dim CvePS As Integer = DdlPS.SelectedValue.ToEntero
Dim DrPS As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("")
newRow("Tipo") = "Producto"
newRow("Clave") = CvePS
newRow("PSCodigo") = DrPS("PSCodigo")
newRow("UnidadMedida") = DrPS("UnidadMedida")
newRow("Cantidad") = 1
newRow("Surtido") = 0
newRow("Costo") = 0
DtPS.Rows.Add(newRow)
'consultas GetMPReceta, GetMOReceta, GetCIReceta
Dim CveUM As Integer = DrPS("CveUnidadMedida").ToString.ToEntero
Dim ObjMP As New ClsOP()
If ObjMP.GetMPReceta(CvePS, CveUM, UsuarioActual.CveEmpresa) Then
For Each drMP As DataRow In ObjMP.DtResultados.Rows
Dim rowMP As DataRow = DtMP.NewRow()
rowMP("Tipo") = "MP"
rowMP("Clave") = CvePS
rowMP("Producto") = drMP("producto").ToString()
rowMP("UnidadMedida") = drMP("UnidadMedida").ToString()
rowMP("Cantidad") = drMP("Cantidad").ToString().ToDecimal()
rowMP("Surtido") = 0
DtMP.Rows.Add(rowMP)
Next
End If
Dim ObjMO As New ClsOP()
If ObjMO.GetMOReceta(CvePS, CveUM, UsuarioActual.CveEmpresa) Then
For Each drMO As DataRow In ObjMO.DtResultados.Rows
Dim rowMO As DataRow = DtMO.NewRow()
rowMO("Tipo") = "MO"
rowMO("Clave") = CvePS
rowMO("Puesto") = drMO("Puesto").ToString()
rowMO("Cantidad") = drMO("Cantidad").ToString().ToDecimal()
DtMO.Rows.Add(rowMO)
Next
End If
Dim ObjCI As New ClsOP()
If ObjCI.GetCIReceta(CvePS, CveUM, UsuarioActual.CveEmpresa) Then
For Each drCI As DataRow In ObjCI.DtResultados.Rows
Dim rowCI As DataRow = DtCI.NewRow()
rowCI("Tipo") = "CI"
rowCI("Clave") = CvePS
rowCI("Producto") = drCI("producto").ToString()
rowCI("Cantidad") = drCI("Cantidad").ToString().ToDecimal()
DtCI.Rows.Add(rowCI)
Next
End If
ActualizarGrids()
End Sub
Private Sub ActualizarGrids()
GvProductos.DataSource = DtPS.Select("Tipo = 'Producto'").CopyToDataTable()
GvProductos.DataBind()
GvMateriaPrima.DataSource = DtMP.Select("Tipo = 'MP'").CopyToDataTable()
GvMateriaPrima.DataBind()
GvManoObra.DataSource = DtMO.Select("Tipo = 'MO'").CopyToDataTable()
GvManoObra.DataBind()
GvCostosIndirectos.DataSource = DtCI.Select("Tipo = 'CI'").CopyToDataTable()
GvCostosIndirectos.DataBind()
UpGvDatosOP.Update()
End Sub
End Class