This commit is contained in:
2025-03-14 13:30:01 -07:00
16 changed files with 1538 additions and 301 deletions

View File

@@ -325,7 +325,7 @@ Public Class ClsInventarios
End Function
Public Function GetRepAlmacenes(FechaInicio As String, FechaFin As String, CveEmpresa As Integer, CveTipoAlmacen As String, Contabilizable As Integer, Inventariable As Integer,
Optional SoloMovimientosContables As Boolean = False, Optional Almacenes As String = "-1", Optional CveSubProyecto As Integer = -1,
Optional CveUsuarioConsulta As Integer = -1) As Boolean
Optional CveUsuarioConsulta As Integer = -1, Optional Gpo As Integer = -1) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Inv_AlmacenesRepGet")
@@ -340,6 +340,7 @@ Public Class ClsInventarios
.Add("@Almacenes", SqlDbType.VarChar).Value = Almacenes
.Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto
.Add("@CveUsuarioConsulta", SqlDbType.Int).Value = CveUsuarioConsulta
.Add("@Gpo", SqlDbType.Int).Value = Gpo
End With
Try
SqlAdapter.Fill(Data)

View File

@@ -2,6 +2,7 @@
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.VisualBasic
Imports Telerik.Web.UI.ImageEditor
Public Class ClsOP
Implements IDisposable
@@ -112,7 +113,55 @@ Public Class ClsOP
Public Function GetProductosOP(CveOP As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_ProductosGET")
DataAdapter("PA_OP_ProductosGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveOP", SqlDbType.Int).Value = CveOP
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al obtener los productos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
Public Function GetProductosMO(CveOP As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_ProductosMOGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveOP", SqlDbType.Int).Value = CveOP
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al obtener los productos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
Public Function GetProductosMP(CveOP As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_ProductosMPGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveOP", SqlDbType.Int).Value = CveOP
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al obtener los productos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
Public Function GetProductosCI(CveOP As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_ProductosCIGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveOP", SqlDbType.Int).Value = CveOP
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
@@ -359,7 +408,7 @@ Public Class ClsOP
#Region "O R D E N E S D E P R O D U C C I O N"
Public Function GetReportesOP(CveOP As Integer, CveCliente As Integer, CveSubProyecto As Integer, CvePS As Integer, CveEstatus As Integer, Asignado As Integer, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer) As Boolean
Public Function GetReportesOP(CveOP As Integer, CveCliente As Integer, CveSubProyecto As Integer, CvePS As Integer, CveEstatus As Integer, Asignado As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_OrdendeProduccionGet")
With SqlAdapter.SelectCommand.Parameters
@@ -369,8 +418,8 @@ Public Class ClsOP
.Add("@CvePS", SqlDbType.Int).Value = CvePS
.Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus
.Add("@Asignado", SqlDbType.Int).Value = Asignado
.Add("@FechaI", SqlDbType.Date).Value = FechaInicio
.Add("@FechaF", SqlDbType.Date).Value = FechaFin
.Add("@FechaI", SqlDbType.Date).Value = FechaI
.Add("@FechaF", SqlDbType.Date).Value = FechaF
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
End With
Try
@@ -382,6 +431,75 @@ Public Class ClsOP
Return Retorno
End Function
Public Function GetOP(CveOP As Integer, CveCliente As Integer, CveSubProyecto As Integer, CvePS As Integer, CveEstatus As Integer, Asignado As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_OrdendeProduccionGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveOP", SqlDbType.Int).Value = CveOP
.Add("@CveCliente", SqlDbType.Int).Value = CveCliente
.Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto
.Add("@CvePS", SqlDbType.Int).Value = CvePS
.Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus
.Add("@Asignado", SqlDbType.Int).Value = Asignado
.Add("@FechaI", SqlDbType.Date).Value = FechaI
.Add("@FechaF", SqlDbType.Date).Value = FechaF
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al obtener los productos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
Public Function GetEstatusOP(CveEmpresa As Integer, Optional CveEstatusOP As Integer = -1, Optional TipoEstatus As Integer = -1, Optional Estatus As Integer = -1) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_EstatusOPGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@CveEstatusOP", SqlDbType.Int).Value = CveEstatusOP
.Add("@TipoEstatus", SqlDbType.Int).Value = TipoEstatus
.Add("@Estatus", SqlDbType.Int).Value = Estatus
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As SqlException
OnError("Ocurrió un error al consultar los Estatus de Factura.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
End Try
Return Retorno
End Function
Public Function UpdateOP(CveOP As Integer, Descripcion As String, CveCliente As Integer, CvePS As Integer, CveSubProyecto As Integer, Cantidad As Integer, Fecha As Date, CveEmpresa As Integer, CveUsuario As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OP_OrdendeProduccionUp")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveOP", SqlDbType.Int).Value = CveOP
.Add("@Descripcion", SqlDbType.VarChar).Value = Descripcion
.Add("@CveCliente", SqlDbType.Int).Value = CveCliente
.Add("@CvePS", SqlDbType.Int).Value = CvePS
.Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto
.Add("@Cantidad", SqlDbType.Int).Value = Cantidad
.Add("@Fecha", SqlDbType.Date).Value = Fecha
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al guardar la orden de producción.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
#End Region
#Region "IDisposable Support"
' IDisposable

View File

@@ -403,6 +403,33 @@ Public Class ClsPaginas
Application("GlobalDTEstatus") = value
End Set
End Property
#Region "ordenes de producción"
Property GlobalDTOPEstatus(CveEmpresa As Integer, Optional Estatus As Integer = -1) As DataTable
Get
Dim AppNombre As String = $"GlobalDTOPEstatus-{CveEmpresa}"
If HttpContext.Current.Application(AppNombre) Is Nothing Then
Using ObjOP As New ClsOP
If ObjOP.GetEstatusOP(CveEmpresa) Then Application(AppNombre) = ObjOP.DtResultados
End Using
End If
Dim filtros As New List(Of String)
If Estatus <> -1 Then filtros.Add($"Estatus = {Estatus}")
If filtros.Count > 0 Then
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), String.Join(" AND ", filtros), "", DataViewRowState.CurrentRows)
GlobalDTOPEstatus = Dv.ToTable
Dv.Dispose()
Else
GlobalDTOPEstatus = DirectCast(HttpContext.Current.Application(AppNombre), DataTable)
End If
End Get
Set(value As DataTable)
Dim AppNombre As String = $"GlobalDTOPEstatus-{CveEmpresa}"
Application(AppNombre) = value
End Set
End Property
#End Region
Property DtFacturaDefault() As DataTable
Get
DtFacturaDefault = DirectCast(Application("DtFacturaDefault"), DataTable)
@@ -9908,6 +9935,7 @@ Public Class ClsPaginas
PaginaDict.Add("/OI/ConvocatoriaDetalle.aspx".ToUpper(), 908)
PaginaDict.Add("/OI/RepReuniones.aspx".ToUpper(), 908)
PaginaDict.Add("/AdSistemasTeam/ProcedimientosAlmacenados.aspx".ToUpper(), -1)
PaginaDict.Add("/OS/CatOrdenesServiciosCaracteristicas.aspx".ToUpper(), -1)
PaginaDict.Add("/OS/CatOSCaracteristicasOpciones.aspx".ToUpper(), -1)
PaginaDict.Add("/OS/CatSubTiposOrdenesServicios.aspx".ToUpper(), -1)
@@ -11141,6 +11169,8 @@ Public Class ClsPaginas
#Region "Ordenes de Produccion"
PaginaDict.Add("/OP/CatConfiguracionProducto.aspx".ToUpper(), 790)
PaginaDict.Add("/OP/RepOS.aspx".ToUpper(), 791)
PaginaDict.Add("/OP/OP.aspx".ToUpper(), -1)
PaginaDict.Add("/OP/RepOP.aspx".ToUpper(), -1)
#End Region
'Antes de aquí.

View File

@@ -348,7 +348,7 @@ table.adssigscroll {
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda2','{0}')", GvDatos.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
<asp:UpdatePanel ID="UpDatos" runat="server">
<asp:UpdatePanel ID="UpDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="divContainerads">

View File

@@ -161,6 +161,9 @@ Partial Class Inventarios_KardexAlmacenHorizontal
End Sub
Private Sub CargarKardex(CvePS As Integer)
'GvDatos.Columns.Clear()
'GvDatos.AutoGenerateColumns = True
Dim dt As New DataTable
Dim ObjMovimientos As New ClsInventarios
Dim FechaI As String = "-1" ' If(TxtFechaI.Text <> "" AndAlso TxtFechaI.Text <> "__/__/____", TxtFechaI.Text, "-1")
@@ -202,13 +205,16 @@ Partial Class Inventarios_KardexAlmacenHorizontal
GvDatos.DataSource = dt
Else
Alert("La búsqueda no contiene resultados.", TipoMensaje.MsgAdvertencia)
GvDatos.Columns.Clear()
dt = Nothing
GvDatos.DataSource = dt
GvDatos.DataBind()
UpDatos.Update()
Exit Sub
End If
Else
ObjMovimientos.Dispose()
Alert("Ocurrió un error al consultar el Kardex.", TipoMensaje.MsgError)
UpDatos.Update()
Exit Sub
End If
GvDatos.DataBind()
@@ -232,6 +238,7 @@ Partial Class Inventarios_KardexAlmacenHorizontal
Next
UpDatos.Update()
End Sub
Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound

View File

@@ -140,17 +140,35 @@
</asp:DropDownList>
</div>
<div class="col-md-1 truncate v-center" style="text-align: right!important">Tipo Almacen:</div>
<div class="col-md-2 v-center">
<div class="col-md-1 v-center">
<asp:ListBox ID="DdlTipoAlmacen" SelectionMode="Multiple" CssClass="form-control ddlFiltros input-sm select2me Widthall" DataTextField="TipoAlmacen" DataValueField="CveTipoAlmacen" Style="width: 100%;" runat="server"></asp:ListBox>
</div>
<div class="col-md-1 truncate" style="text-align: right!important">Aplica Almacen</div>
<div class="col-md-2">
<div class="col-md-1">
<asp:DropDownList ID="DdlAplicaInventario" runat="server" CssClass="input-small input-sm select2me" Width="100%">
<asp:ListItem Text="Todos" Value="-1" Selected="True"> </asp:ListItem>
<asp:ListItem Text="Inventariable" Value="1"></asp:ListItem>
<asp:ListItem Text="No Inventariable" Value="0"></asp:ListItem>
</asp:DropDownList>
</asp:DropDownList>
</div>
<div class="col-md-1 truncate" style="text-align: right!important">Grupo:</div>
<div class="col-md-1">
<asp:DropDownList ID="DdlGrupo" runat="server" CssClass="input-small input-sm select2me" Width="100%">
<asp:ListItem Text="Almacen" Value="1"></asp:ListItem>
<asp:ListItem Text="Clasificación" Value="2"></asp:ListItem>
</asp:DropDownList>
</div>
</div>
</div>
</div>
@@ -159,11 +177,12 @@
<asp:UpdatePanel ID="UpDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="GVAlmacen" runat="server" AutoGenerateColumns="False" data-sort="true" EmptyDataText="No se encontraron Almacenes" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" GridLines="None">
<asp:GridView ID="GVAlmacen" runat="server" AutoGenerateColumns="False" data-sort="true" EmptyDataText="No se encontraron Almacenes" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" GridLines="None"
DataKeyNames="Gpo,CveAlmacen,CveClasificacion" >
<Columns>
<asp:TemplateField HeaderText="Almacén">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" Target="_blank" NavigateUrl='<%# String.Format("/Inventarios/RepEntradasSalidas.aspx?CveAlmacen={0}&FechaInicio={1:d}&FechaCorte={2:d}&Tipo=-1", Eval("CveAlmacen").ToString, Eval("FechaInicio"), Eval("FechaFin"))%>' runat="server"><%# Eval("Almacen") %></asp:HyperLink>
<%--<asp:HyperLink ID="HyperLink1" Target="_blank" NavigateUrl='<%# String.Format("/Inventarios/RepEntradasSalidas.aspx?CveAlmacen={0}&FechaInicio={1:d}&FechaCorte={2:d}&Tipo=-1", Eval("CveAlmacen").ToString, Eval("FechaInicio"), Eval("FechaFin"))%>' runat="server"><%# Eval("Almacen") %></asp:HyperLink>--%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tipo Almacén">

View File

@@ -54,7 +54,7 @@ Partial Class Inventarios_RepAlmacen
Dim CveSubProyecto As Integer = DdlSucursal.SelectedValue.ToEntero()
If objInv.GetRepAlmacenes(FechaI, FechaF, UsuarioActual.CveEmpresa, TipoAlmacen, DdlModalidadFiltro.SelectedValue.ToEntero, DdlAplicaInventario.SelectedValue.ToEntero,
Almacenes:=Almacenes, CveSubProyecto:=CveSubProyecto, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then
Almacenes:=Almacenes, CveSubProyecto:=CveSubProyecto, CveUsuarioConsulta:=UsuarioActual.CveUsuario, Gpo:=DdlGrupo.SelectedValue.ToEntero) Then
GVAlmacen.DataSource = objInv.DtResultados
TmpDT = objInv.DtResultados
End If
@@ -103,12 +103,28 @@ Partial Class Inventarios_RepAlmacen
Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
GenerarPDF()
End Sub
Private Sub GVAlmacen_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVAlmacen.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.FCLabel("LtlAlmacen").Text = "" Then
Private Sub GVAlmacen_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVAlmacen.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
'If e.Row.FCLabel("LtlAlmacen").Text = "" Then
' e.Row.CssClass = "Totales"
'End If
If e.Row.Cells(0).Text = "" Then
e.Row.CssClass = "Totales"
End If
If e.Row.DataKey("CveAlmacen").ToEntero > 0 Then
Dim Liga As String = $"./RepEntradasSalidas.aspx?CveAlmacen={e.Row.DataKey("CveAlmacen").ToEntero}&FechaInicio={1:d}&FechaCorte={2:d}&Tipo=-1"
e.Row.Cells(0).Text = $"<a href='{Liga}' target='_blank' >{e.Row.DataKey("Gpo")}</a>"
<asp:HyperLink ID = "HyperLink1" Target="_blank" NavigateUrl='<%# String.Format("/Inventarios/RepEntradasSalidas.aspx?CveAlmacen={0}&FechaInicio={1:d}&FechaCorte={2:d}&Tipo=-1", Eval("CveAlmacen").ToString, Eval("FechaInicio"), Eval("FechaFin"))%>' runat="server"><%# Eval("Almacen") %></asp:HyperLink>-
End If
End If
End Sub
#End Region
@@ -169,4 +185,6 @@ Partial Class Inventarios_RepAlmacen
#End Region
Public Overrides Sub VerifyRenderingInServerForm(control As Control)
End Sub
End Class

253
OP/OP.aspx Normal file
View File

@@ -0,0 +1,253 @@
<%@ 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" />
<asp:Button ID="BtnEliminarProducto" runat="server" Text="Eliminar Producto"
CssClass="btn-eliminar" OnClick="BtnEliminarProducto_Click" />
</div>
<!-- GridViews -->
<asp:UpdatePanel ID="UpGvDatosOP" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row">
<div class="col-md-12 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" DataFormatString="{0:#,##0.####}" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="Surtido" HeaderText="Surtido" ItemStyle-HorizontalAlign="Right"/>
</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>
<!-- Botón para Guardar la OP -->
<div class="form-group" style="margin-top: 20px;">
<asp:Button ID="BtnGuardarOP" runat="server" Text="Guardar Orden de Producción"
CssClass="btn btn-success" OnClick="BtnGuardarOP_Click"
ValidationGroup="GrpGuardar" />
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
</asp:Content>

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

@@ -0,0 +1,407 @@
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("productoMateriaPrima").ToString()
rowMP("UnidadMedida") = drMP("UnidadMedidaMateriaPrima").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("productoMateriaPrima").ToString()
rowCI("Cantidad") = drCI("Cantidad").ToString().ToDecimal()
DtCI.Rows.Add(rowCI)
Next
End If
ActualizarGrids()
End Sub
Protected Sub BtnEliminarProducto_Click(sender As Object, e As EventArgs)
If DdlPS.SelectedValue = "-1" Then
Alert("Seleccione un producto del listado.", TipoMensaje.MsgAdvertencia)
Return
End If
Dim CveProducto As Integer = DdlPS.SelectedValue.ToEntero()
Dim filasProducto As DataRow() = DtPS.Select($"Clave = {CveProducto}")
If filasProducto.Length > 0 Then
DtPS.Rows.Remove(filasProducto(0))
End If
EliminarDatosRelacionados(CveProducto)
ActualizarGrids()
End Sub
Private Sub EliminarDatosRelacionados(CveProducto As Integer)
Dim filasMP As DataRow() = DtMP.Select($"Clave = {CveProducto}")
For Each fila As DataRow In filasMP
DtMP.Rows.Remove(fila)
Next
Dim filasMO As DataRow() = DtMO.Select($"Clave = {CveProducto}")
For Each fila As DataRow In filasMO
DtMO.Rows.Remove(fila)
Next
Dim filasCI As DataRow() = DtCI.Select($"Clave = {CveProducto}")
For Each fila As DataRow In filasCI
DtCI.Rows.Remove(fila)
Next
End Sub
Protected Sub BtnGuardarOP_Click(sender As Object, e As EventArgs)
' Validar campos obligatorios
If DdlClientes.SelectedValue = "-1" Then
Alert("Seleccione un cliente.", TipoMensaje.MsgAdvertencia)
Return
End If
If DtPS.Rows.Count = 0 Then
Alert("Agregue al menos un producto.", TipoMensaje.MsgAdvertencia)
Return
End If
' Iniciar transacción
Dim clsOP As New ClsOP()
clsOP.IniciaTransacSQL()
Try
' Insertar/Actualizar cabecera de la OP usando UpdateOP
Dim CveOP As Integer = Me.CveOP ' Si es nuevo, CveOP = -1
Dim Success As Boolean = clsOP.UpdateOP(
CveOP:=CveOP,
Descripcion:=TxtDescripcion.Text,
CveCliente:=DdlClientes.SelectedValue.ToEntero(),
CvePS:=DdlPS.SelectedValue.ToEntero(),
CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero(),
Cantidad:=1, ' Ajustar según lógica de negocio
Fecha:=Convert.ToDateTime(Txtfecha.Text),
CveEmpresa:=UsuarioActual.CveEmpresa,
CveUsuario:=UsuarioActual.CveUsuario
)
If Not Success Then
Throw New Exception("Error al guardar la cabecera de la OP.")
End If
' Obtener el CveOP generado (asumiendo que se actualiza en la propiedad)
If Me.CveOP = -1 Then
' Si es nuevo, recuperar el CveOP de la base de datos
' (Requiere que el SP PA_OP_OrdendeProduccionUp devuelva el ID)
' Esto depende de la implementación del SP.
' Ejemplo hipotético:
clsOP.GetOP(-1, DdlClientes.SelectedValue.ToEntero(), DdlSubProyecto.SelectedValue.ToEntero(), -1, -1, -1, MinFecha, MaxFecha, UsuarioActual.CveEmpresa)
If clsOP.DtResultados.Rows.Count > 0 Then
Me.CveOP = clsOP.DtResultados.Rows(0)("CveOP").ToString.ToEntero()
End If
End If
' Insertar detalles de Productos, MP, MO, CI
For Each drProducto As DataRow In DtPS.Rows
Dim CvePS As Integer = drProducto("Clave").ToString().ToEntero()
' Insertar Materia Prima relacionada
For Each drMP As DataRow In DtMP.Select($"Clave = {CvePS}")
clsOP.AddMP(
Cantidad:=drMP("Cantidad").ToString().ToDecimal(),
CvePS:=CvePS,
CvePSMateriaPrima:=drMP("CvePSMateriaPrima").ToString().ToEntero(),
CveUM:=drMP("CveUM").ToString().ToEntero(),
CveUMMateriaPrima:=drMP("CveUMMateriaPrima").ToString().ToEntero()
)
Next
' Insertar Mano de Obra relacionada
For Each drMO As DataRow In DtMO.Select($"Clave = {CvePS}")
clsOP.AddMO(
Cantidad:=drMO("Cantidad").ToString().ToDecimal(),
CvePS:=CvePS,
CvePuesto:=drMO("CvePuesto").ToString().ToEntero(),
CveUM:=drMO("CveUM").ToString().ToEntero()
)
Next
' Insertar Costos Indirectos relacionados
For Each drCI As DataRow In DtCI.Select($"Clave = {CvePS}")
clsOP.AddCI(
Cantidad:=drCI("Cantidad").ToString().ToDecimal(),
CvePS:=CvePS,
CvePSMateriaPrima:=drCI("CvePSMateriaPrima").ToString().ToEntero(),
CveUM:=drCI("CveUM").ToString().ToEntero(),
CveUMMateriaPrima:=drCI("CveUMMateriaPrima").ToString().ToEntero()
)
Next
Next
' Commit si todo es exitoso
clsOP.Commit()
Alert("Orden de Producción guardada correctamente.", TipoMensaje.MsgInformacion)
Response.Redirect($"OP.aspx?CveOP={Me.CveOP}") ' Redirigir a la OP guardada
Catch ex As Exception
' Rollback en caso de error
clsOP.RollBack()
Alert($"Error al guardar: {ex.Message}", TipoMensaje.MsgError)
Finally
clsOP.Dispose()
End Try
End Sub
Private Sub ActualizarGrids()
Dim dtProductosFiltrados As DataTable = DtPS.Clone() ' Clona la estructura
Dim rowsProductos As DataRow() = DtPS.Select("Tipo = 'Producto'")
If rowsProductos.Length > 0 Then
dtProductosFiltrados = rowsProductos.CopyToDataTable()
End If
GvProductos.DataSource = dtProductosFiltrados
GvProductos.DataBind()
Dim dtMPFiltrados As DataTable = DtMP.Clone()
Dim rowsMP As DataRow() = DtMP.Select("Tipo = 'MP'")
If rowsMP.Length > 0 Then
dtMPFiltrados = rowsMP.CopyToDataTable()
End If
GvMateriaPrima.DataSource = dtMPFiltrados
GvMateriaPrima.DataBind()
Dim dtMOFiltrados As DataTable = DtMO.Clone()
Dim rowsMO As DataRow() = DtMO.Select("Tipo = 'MO'")
If rowsMO.Length > 0 Then
dtMOFiltrados = rowsMO.CopyToDataTable()
End If
GvManoObra.DataSource = dtMOFiltrados
GvManoObra.DataBind()
Dim dtCIFiltrados As DataTable = DtCI.Clone()
Dim rowsCI As DataRow() = DtCI.Select("Tipo = 'CI'")
If rowsCI.Length > 0 Then
dtCIFiltrados = rowsCI.CopyToDataTable()
End If
GvCostosIndirectos.DataSource = dtCIFiltrados
GvCostosIndirectos.DataBind()
UpGvDatosOP.Update()
End Sub
End Class

216
OP/RepOP.aspx Normal file
View File

@@ -0,0 +1,216 @@
<%@ Page Title="Orden de Produccion" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepOP.aspx.vb" Inherits="OP_RepOP" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<style>
table > tbody > .SubTotales, table > tbody > .SubTotales:hover, table > tbody > .SubTotales:nth-of-type(odd) {
background: #CCCCCC !important;
}
table > tbody > .SubTotalesB, table > tbody > .SubTotalesB:hover, table > tbody > .SubTotalesB:nth-of-type(odd) {
background: #DDD !important;
}
.SegundoNivel, .SegundoNivel:hover {
background-color: rgba(172, 195, 222, 0.65) !important;
}
.select2 .select2-selection__rendered {
line-height: 1;
color: #111;
}
.select2 .select2-selection--multiple {
box-sizing: border-box;
cursor: pointer;
display: block;
min-height: 20px;
user-select: none;
-webkit-user-select: none;
}
.select2-container--default .select2-selection--multiple .select2-selection__choice {
margin-top: 10px;
}
.select2-selection__rendered {
margin-top: 0px;
height: 25px;
}
.select2-selection {
margin-top: 0px;
height: 31px;
background-color: rgba(255,255,255,0.9) !important;
border: 1px solid #ced4da !important;
}
.select2-container--default.select2-container--focus .select2-selection--multiple {
border: none;
outline: 0;
}
#chartdiv {
width: 100%;
height: 500px;
}
/* Ajustar posición del botón "Consultar" */
.portlet-title .tools {
margin-top: -1px !important;
}
</style>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="HA" runat="Server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
<div class="btn-group pull-right btn-separete">
<%-- <asp:Button ID="BtnConsultar" runat="server" Text="Consultar" class="btn btn-fit-height btnopaco" />--%>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="HB" runat="Server">
<li>
<asp:HyperLink ID="HLAgregarOrdenOP" NavigateUrl="OP.aspx?CveOP=-1" runat="server"> <i class="fa fa-plus"></i>Agregar Orden de Producción</asp:HyperLink>
</li>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="E" runat="Server">
Orden de Producción
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="C" runat="Server">
<asp:UpdatePanel ID="UPFiltros" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="portlet solid grey-cascade portlet-filter" id="idnecesaria">
<div class="portlet-title portlet-filterT smalltitle">
<div class="tools">
<asp:Button ID="BtnConsultar" runat="server" Text="Consultar" class="btn btn-primary" />
<a href="javascript:;" class="expand"></a>
</div>
<div class="titlefiltros caption">
<div class="row">
<label class="col-md-1 ">Cliente:</label>
<div class="col-md-2">
<ADS:Dropdownlost CssClassDdl="select2me" ID="DdlClientes" Width="100%" data-metodo="getcliente" runat="server" DataTextField="NombreComercial" DataValueField="CveCliente" CssStyle="width: 100%;"></ADS:Dropdownlost>
</div>
<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>
<label class="col-md-1 ">Estatus:</label>
<div class="col-md-2">
<asp:DropDownList ID="DdlEstatusOP" runat="server" AppendDataBoundItems="true" DataTextField="EstatusOP" DataValueField="CveEstatusOP" Class="table-group-action-input form-control input-inline input-small input-sm select2me" Style="width: 100%;">
<asp:ListItem Selected="True" Text="Todos" Value="-1"></asp:ListItem>
</asp:DropDownList>
</div>
</div>
</div>
</div>
<div class="portlet-body" style="display: none">
<div class="row">
<label class="col-md-1 truncate">Productos Servicios:</label>
<div class="col-md-2">
<ADS:Dropdownlost runat="server" ID="DdlPS" CssStyle="width:100%;" CssClass="DdlPS" CssClassDdl="select2me " DataTextField="PSCodigo" DataValueField="CvePS" />
</div>
<div class="col-md-1">
<label class="mb-0">Fecha Inicio:</label>
<!-- Usa etiqueta <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="txtFechaI" runat="server" CssClass="form-control" CausesValidation="true" MaxLength="10"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="imgCalendario" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="Calendario" TargetControlID="txtFechaI" PopupButtonID="ImgCalendario" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="rfvFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="El campo <b>''Fecha Inicial''</b> es requerido por la aplicación, por favor ingrese una fecha." ValidationGroup="Valida"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="cvFechaI" runat="server" ControlToValidate="txtFechaI" Display="None" ErrorMessage="El campo <b>''Fecha Inicial''</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="vcoFfvFI" runat="server" HighlightCssClass="vco" TargetControlID="rfvFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
<ajax:ValidatorCalloutExtender ID="vcoCvFI" runat="server" HighlightCssClass="vco" TargetControlID="cvFechaI" Width="350px"></ajax:ValidatorCalloutExtender>
</div>
<div class="col-md-1">
<label class="mb-0">Fecha Fin:</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="txtFechaF" 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="txtFechaF" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="Calendario2" TargetControlID="txtFechaF" PopupButtonID="imgCalendarioF" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="rfvFechaF" runat="server" ControlToValidate="txtFechaF" 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="txtFechaF" 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>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UPDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="GvDatos" runat="server" DataKeysNames="CveOP" AutoGenerateColumns="False" EmptyDataText="No se encontraron Ventas con los filtros especificados" ToolTip="Listado de Ventas"
CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-sort="true" Style="text-align: center;" GridLines="None" Width="99%">
<Columns>
<asp:HyperLinkField DataNavigateUrlFormatString="/OP/OP.aspx?CveOP={0}" DataNavigateUrlFields="CveOP" ControlStyle-CssClass="Texto" DataTextField="Folio" HeaderText="Folio"
ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="Cliente" HeaderText="Cliente"
ItemStyle-Width="20%" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Descripcion" HeaderText="Descripción"
ItemStyle-Width="25%" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Fecha" HeaderText="Fecha"
DataFormatString="{0:dd/MM/yyyy}"
ItemStyle-Width="15%" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="Estatus" HeaderText="Estatus"
ItemStyle-Width="15%" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="AsignadoA" HeaderText="Asignado"
ItemStyle-Width="15%" ItemStyle-HorizontalAlign="Left" />
</Columns>
<RowStyle CssClass="Texto" />
<HeaderStyle CssClass="Titulos" />
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="JS" runat="Server">
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
<script src="https://www.amcharts.com/lib/3/serial.js"></script>
<script src="https://www.amcharts.com/lib/3/pie.js"></script>
<script src="https://www.amcharts.com/lib/3/plugins/export/export.min.js"></script>
<link rel="stylesheet" href="https://www.amcharts.com/lib/3/plugins/export/export.css" type="text/css" media="all" />
<script src="https://www.amcharts.com/lib/3/themes/light.js"></script>
</asp:Content>

161
OP/RepOP.aspx.vb Normal file
View File

@@ -0,0 +1,161 @@
Option Explicit On
Option Strict On
Imports System.Data
Imports Extensiones
Imports Ionic.Zlib
Imports Microsoft.Reporting.WebForms
Partial Class OP_RepOP
Inherits ClsPaginas
#Region "PROPIEDADES"
Private Property DtOp As DataTable
Get
Return DirectCast(ViewState("DtOp"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtOp") = value
End Set
End Property
Private Property Agrupador As String
Get
Return ViewState("Agrupador").ToString
End Get
Set(value As String)
ViewState("Agrupador") = value
End Set
End Property
Private Property TCEspecifico As Double
Get
Return ViewState("TCEspecifico").ToString.ToDouble
End Get
Set(value As Double)
ViewState("TCEspecifico") = value
End Set
End Property
Private Property TipoCambio As Integer
Get
Return ViewState("TipoCambio").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("TipoCambio") = 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
If UsuarioActual.CveEmpresa = 2 AndAlso UsuarioActual.CveUsuario.Contiene(77, 21) Then Response.Redirect("/Inicio.aspx")
'CargarMarcas()
SetValues()
End If
End Sub
#Region " CARGA DATOS INICIALES "
Private Sub SetValues()
'Carga Productos
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
'CargaEstatus
DdlEstatusOP.DataSource = GlobalDTOPEstatus(UsuarioActual.CveEmpresa)
DdlEstatusOP.DataBind()
DdlEstatusOP.Items.Add(New ListItem("Canceladas", "4"))
DdlEstatusOP.SelectedValue = "-1"
'Carga Clasificacion del cliente
CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto, VisualizacionReporte:=1)
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("Todos", "-1"))
End If
DdlEstatusOP.DataSource = GlobalDTOPEstatus(UsuarioActual.CveEmpresa)
DdlEstatusOP.DataBind()
txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString
txtFechaF.Text = NowADS().ToShortDateString
If UsuarioActual.TienePermisoProceso(339) Then
GvDatos.Columns(3).Visible = False
GvDatos.Columns(4).Visible = False
GvDatos.Columns(5).Visible = False
GvDatos.Columns(6).Visible = False
End If
End Sub
#End Region
#Region " CARGA DATOS "
Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click
CargaDatos()
UPDatos.Update()
End Sub
Private Sub CargaDatos()
Dim FechaI, FechaF As Date
FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.ToDate, MinFecha)
FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.ToDate, MaxFecha)
Dim CveCliente As Integer = If(DdlClientes.SelectedValue.ToEntero > 0, DdlClientes.SelectedValue.ToEntero, -1)
Dim ObjOP As New ClsOP()
If ObjOP.GetReportesOP(-1, DdlClientes.SelectedValue.ToEntero,
DdlSubProyecto.SelectedValue.ToEntero,
DdlPS.SelectedValue.ToEntero,
DdlEstatusOP.SelectedValue.ToEntero,
-1,
FechaI, FechaF,
UsuarioActual.CveEmpresa) Then
GvDatos.DataSource = ObjOP.DtResultados
DtOp = ObjOP.DtResultados
Else
GvDatos.DataSource = Nothing
End If
ObjOP.Dispose()
GvDatos.DataBind()
End Sub
#End Region
#Region "Gv Datos"
Protected Sub GvDatos_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GvDatos.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
'Verificar si el DataKey existe
If e.Row.DataItem IsNot Nothing AndAlso GvDatos.DataKeys.Count > e.Row.RowIndex Then
Dim CveOP As Integer = GvDatos.DataKeys(e.Row.RowIndex).Value.ToString().ToEntero()
Dim Liga As String = $"/OP/OP.aspx?CveOP={CveOP}"
'Acceder al control solo si existe
Dim hl As HyperLink = TryCast(e.Row.FindControl("HlAgregarOrdenOP"), HyperLink)
If hl IsNot Nothing Then
hl.NavigateUrl = Liga
End If
End If
End If
End Sub
#End Region
End Class

View File

@@ -1,317 +1,317 @@
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RolesDetalle.aspx.vb" Inherits="Sistemas_RolesDetalle" %>
 <%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RolesDetalle.aspx.vb" Inherits="Sistemas_RolesDetalle" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Rol:
<asp:Label runat="server" Text="Rol" ID="LblRol"></asp:Label>
</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">
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Rol:
<asp:Label runat="server" Text="Rol" ID="LblRol"></asp:Label>
</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">
<asp:UpdatePanel UpdateMode="Conditional" runat="server" ID="UpDatos">
<ContentTemplate>
<ajax:TabContainer runat="server" ID="TabsRoles">
<asp:UpdatePanel UpdateMode="Conditional" runat="server" ID="UpDatos">
<ContentTemplate>
<ajax:TabContainer runat="server" ID="TabsRoles">
<ajax:TabPanel ID="TabPanel1" runat="server" HeaderText="Rol">
<ContentTemplate>
<asp:UpdatePanel ID="UpTabGeneral" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-6">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">General</span>
</div>
<div class="actions">
<div class="btn-group">
<ajax:TabPanel ID="TabPanel1" runat="server" HeaderText="Rol">
<ContentTemplate>
<asp:UpdatePanel ID="UpTabGeneral" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-6">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">General</span>
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
</div>
</div>
<div class="portlet-body">
<div class="form-group form-md-line-input input-iconright">
<asp:DropDownList ID="DdlModulo" runat="server" Width="50%" CssClass="select2me form-control" AppendDataBoundItems="true" CausesValidation="true" DataTextField="Modulo" DataValueField="CveModulo" ValidationGroup="GrpObligatorio"></asp:DropDownList>
<label for="<%= DdlModulo.ClientID.ToString()%>">Modulo Rol:</label>
</div>
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtRol" CssClass="form-control" runat="server" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVRol" runat="server" ControlToValidate="TxtRol" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>'Nombre del Rol''</b> es necesario, por favor ingréselo." ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
<%-- <ajax:ValidatorCalloutExtender ID="VCEEmpresa" runat="server" HighlightCssClass="vco" TargetControlID="RFVRol" Width="300px"></ajax:ValidatorCalloutExtender>--%>
<label for="<%= TxtRol.ClientID.ToString()%>">Nombre Rol:</label>
</div>
<div class="row" id="DivManual" runat="server" visible="false">
<div class="col-md-3">
<label>Manual del rol:</label>
<div>
<asp:LinkButton ID="BtnAdjuntar" runat="server" Visible="false" Text="<i class='fa-upload fa' style=' color: white;'></i> Adjuntar" data-toggle="modal" data-target="#ModalAdjuntar" CssClass="btn myventasbutton btn-primary" />
<br />
<asp:LinkButton ID="BtnArchivoAdjunto" runat="server" Visible="false" Text="" Font-Size="14px" />
&nbsp;
<asp:LinkButton ID="BtnReemplazarAdjunto" runat="server" Visible="false" AlternateText="Reemplazar" CausesValidation="False" CommandName="Delete" CssClass="btn btn-sm blue" Text="<i class='fa-upload fa' style=' color: white;'></i>" data-toggle="modal" data-target="#ModalAdjuntar" />
<div class="actions">
<div class="btn-group">
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
</div>
</div>
<div class="portlet-body">
<div class="form-group form-md-line-input input-iconright">
<asp:DropDownList ID="DdlModulo" runat="server" Width="50%" CssClass="select2me form-control" AppendDataBoundItems="true" CausesValidation="true" DataTextField="Modulo" DataValueField="CveModulo" ValidationGroup="GrpObligatorio"></asp:DropDownList>
<label for="<%= DdlModulo.ClientID.ToString()%>">Modulo Rol:</label>
</div>
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtRol" CssClass="form-control" runat="server" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVRol" runat="server" ControlToValidate="TxtRol" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>'Nombre del Rol''</b> es necesario, por favor ingréselo." ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
<%-- <ajax:ValidatorCalloutExtender ID="VCEEmpresa" runat="server" HighlightCssClass="vco" TargetControlID="RFVRol" Width="300px"></ajax:ValidatorCalloutExtender>--%>
<label for="<%= TxtRol.ClientID.ToString()%>">Nombre Rol:</label>
</div>
<div class="row" id="DivManual" runat="server" visible="false">
<div class="col-md-3">
<label>Manual del rol:</label>
<div>
<asp:LinkButton ID="BtnAdjuntar" runat="server" Visible="false" Text="<i class='fa-upload fa' style=' color: white;'></i> Adjuntar" data-toggle="modal" data-target="#ModalAdjuntar" CssClass="btn myventasbutton btn-primary" />
<br />
<asp:LinkButton ID="BtnArchivoAdjunto" runat="server" Visible="false" Text="" Font-Size="14px" />
&nbsp;
<asp:LinkButton ID="BtnReemplazarAdjunto" runat="server" Visible="false" AlternateText="Reemplazar" CausesValidation="False" CommandName="Delete" CssClass="btn btn-sm blue" Text="<i class='fa-upload fa' style=' color: white;'></i>" data-toggle="modal" data-target="#ModalAdjuntar" />
</div>
</div>
</div>
<div class="form-group form-md-line-input input-iconright" id="LblFechaAlta" runat="server">
<label for="<%= TxtFecha.ClientID.ToString()%>">Fecha Alta:</label>
<asp:Label ID="TxtFecha" runat="server"></asp:Label>
</div>
<div class="form-group form-md-line-input input-iconright" id="LblUsuarioAlta" runat="server">
<label for="<%= TxtUsuarioAlta.ClientID.ToString()%>">Usuario Alta:</label>
<asp:Label ID="TxtUsuarioAlta" runat="server"></asp:Label>
</div>
</div>
<div class="form-group form-md-line-input input-iconright" id="LblFechaAlta" runat="server">
<label for="<%= TxtFecha.ClientID.ToString()%>">Fecha Alta:</label>
<asp:Label ID="TxtFecha" runat="server"></asp:Label>
</div>
<div class="form-group form-md-line-input input-iconright" id="LblUsuarioAlta" runat="server">
<label for="<%= TxtUsuarioAlta.ClientID.ToString()%>">Usuario Alta:</label>
<asp:Label ID="TxtUsuarioAlta" runat="server"></asp:Label>
</div>
</div>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="TabPanelPermisos" runat="server" HeaderText="Acceso a Módulos">
<ContentTemplate>
<asp:UpdatePanel ID="UPPAltaRep" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row" align="right">
<input type="text" id="TxtBusqueda2" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqueda2','{0}')", GvPermisos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda2','{0}')", GvPermisos.ClientID) %>" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvPermisos" runat="server" CssClass="table table-striped table-hover Widthall ScrollAD" data-sort="true" AutoGenerateColumns="False" Width="100%" DataKeyNames="CveRol,CveModulo" GridLines="None">
<Columns>
<asp:BoundField DataField="Padres" HeaderText="Módulo Padre">
<ControlStyle Width="175px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="Modulo" HeaderText="Módulo">
<ControlStyle Width="175px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField>
<HeaderTemplate><span title="Permitir">P</span></HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="ChkP"></asp:CheckBox>
</ItemTemplate>
<ControlStyle Width="25px" />
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="Titulos" Height="15px"></HeaderStyle>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="TabPanelPermisos" runat="server" HeaderText="Acceso a Módulos">
<ContentTemplate>
<asp:UpdatePanel ID="UPPAltaRep" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row" align="right">
<input type="text" id="TxtBusqueda2" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqueda2','{0}')", GvPermisos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda2','{0}')", GvPermisos.ClientID) %>" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvPermisos" runat="server" CssClass="table table-striped table-hover Widthall ScrollAD" data-sort="true" AutoGenerateColumns="False" Width="100%" DataKeyNames="CveRol,CveModulo" GridLines="None">
<Columns>
<asp:BoundField DataField="Padres" HeaderText="Módulo Padre">
<ControlStyle Width="175px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="Modulo" HeaderText="Módulo">
<ControlStyle Width="175px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField>
<HeaderTemplate><span title="Permitir">P</span></HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="ChkP"></asp:CheckBox>
</ItemTemplate>
<ControlStyle Width="25px" />
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="Titulos" Height="15px"></HeaderStyle>
</asp:GridView>
<ajax:TabPanel ID="TabPanelProcesos" runat="server" HeaderText="Permiso en Módulos">
<ContentTemplate>
<asp:UpdatePanel ID="UPPAltaProcesos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row" align="right">
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvProcesos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvProcesos.ClientID) %>" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvProcesos" runat="server" CssClass="table table-striped table-hover Widthall ScrollAD" data-sort="true" AutoGenerateColumns="False" Width="100%" DataKeyNames="CveRol,CveModulo,CveProceso" GridLines="None">
<Columns>
<asp:BoundField DataField="Modulo" HeaderText="Módulo">
<ControlStyle Width="150px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="Descripcion" HeaderText="Proceso">
<ControlStyle Width="250px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField>
<HeaderTemplate><span title="Permitir">P</span></HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="ChkP"></asp:CheckBox>
</ItemTemplate>
<ControlStyle Width="25px" />
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="Titulos" Height="15px"></HeaderStyle>
</asp:GridView>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="TabPanelProcesos" runat="server" HeaderText="Permiso en Módulos">
<ContentTemplate>
<asp:UpdatePanel ID="UPPAltaProcesos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row" align="right">
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvProcesos.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvProcesos.ClientID) %>" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvProcesos" runat="server" CssClass="table table-striped table-hover Widthall ScrollAD" data-sort="true" AutoGenerateColumns="False" Width="100%" DataKeyNames="CveRol,CveModulo,CveProceso" GridLines="None">
<Columns>
<asp:BoundField DataField="Modulo" HeaderText="Módulo">
<ControlStyle Width="150px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="Descripcion" HeaderText="Proceso">
<ControlStyle Width="250px" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField>
<HeaderTemplate><span title="Permitir">P</span></HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="ChkP"></asp:CheckBox>
</ItemTemplate>
<ControlStyle Width="25px" />
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
<HeaderStyle CssClass="Titulos" Height="15px"></HeaderStyle>
</asp:GridView>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="TabPanelIndicadores" runat="server" HeaderText="Indicadores">
<ContentTemplate>
<asp:UpdatePanel ID="UpIndicadores" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-6">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Indicadores</span>
<ajax:TabPanel ID="TabPanelIndicadores" runat="server" HeaderText="Indicadores">
<ContentTemplate>
<asp:UpdatePanel ID="UpIndicadores" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-6">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Indicadores</span>
</div>
<div class="actions">
<div class="btn-group">
<div class="row ">
<div class="col-md-12">
<input type="text" id="TxtBusquedaIndicador" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaIndicador','{0}')", GvIndicadores.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaIndicador','{0}')", GvIndicadores.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
</div>
</div>
<div class="tools">
</div>
</div>
<div class="actions">
<div class="btn-group">
<div class="row ">
<div class="col-md-12">
<input type="text" id="TxtBusquedaIndicador" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaIndicador','{0}')", GvIndicadores.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaIndicador','{0}')", GvIndicadores.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
<div class="portlet-body">
<asp:GridView ID="GvIndicadores" DataKeyNames="CveIndicador, CveRol" data-sort="true" CssClass="table table-striped table-hover Widthall ScrollAD" DataKey="CveIndicador" AutoGenerateColumns="false" GridLines="None" EmptyDataText="Aun no se Indicadores" runat="server">
<Columns>
<asp:BoundField DataField="Indicador" HeaderText="Indicador" />
<asp:TemplateField HeaderText="Aplica" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkIndicador" Checked="false" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="TabPanelUsuarios" runat="server" HeaderText="Usuarios">
<ContentTemplate>
<asp:UpdatePanel ID="UpUsuarios" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-6">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Usuarios</span>
</div>
<div class="actions">
<div class="btn-group">
<div class="row ">
<div class="col-md-12">
<input type="text" id="TxtBusquedaUsuario" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaUsuario','{0}')", GvUsurios.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaUsuario','{0}')", GvUsurios.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
</div>
</div>
</div>
<div class="tools">
</div>
</div>
<div class="portlet-body">
<asp:GridView ID="GvIndicadores" DataKeyNames="CveIndicador, CveRol" data-sort="true" CssClass="table table-striped table-hover Widthall ScrollAD" DataKey="CveIndicador" AutoGenerateColumns="false" GridLines="None" EmptyDataText="Aun no se Indicadores" runat="server">
<Columns>
<asp:BoundField DataField="Indicador" HeaderText="Indicador" />
<asp:TemplateField HeaderText="Aplica" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkIndicador" Checked="false" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="TabPanelUsuarios" runat="server" HeaderText="Usuarios">
<ContentTemplate>
<asp:UpdatePanel ID="UpUsuarios" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="row">
<div class="col-md-6">
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Usuarios</span>
</div>
<div class="actions">
<div class="btn-group">
<div class="row ">
<div class="col-md-12">
<input type="text" id="TxtBusquedaUsuario" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaUsuario','{0}')", GvUsurios.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaUsuario','{0}')", GvUsurios.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</div>
</div>
<div class="tools">
</div>
</div>
<div class="tools">
<div class="portlet-body">
<asp:GridView ID="GvUsurios" DataKeyNames="CveUsuario" data-sort="true" CssClass="table table-striped table-hover Widthall ScrollAD"
DataKey="CveUsuario" AutoGenerateColumns="false" GridLines="None" EmptyDataText="Aun no se usuarios" runat="server">
<Columns>
<asp:BoundField DataField="Usuario" HeaderText="Usuario" />
<asp:BoundField DataField="Nombre" HeaderText="Nombre" />
</Columns>
</asp:GridView>
</div>
</div>
<div class="portlet-body">
<asp:GridView ID="GvUsurios" DataKeyNames="CveUsuario" data-sort="true" CssClass="table table-striped table-hover Widthall ScrollAD"
DataKey="CveUsuario" AutoGenerateColumns="false" GridLines="None" EmptyDataText="Aun no se usuarios" runat="server">
<Columns>
<asp:BoundField DataField="Usuario" HeaderText="Usuario" />
<asp:BoundField DataField="Nombre" HeaderText="Nombre" />
</Columns>
</asp:GridView>
</div>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</ajax:TabPanel>
</ajax:TabContainer>
<br />
</ajax:TabContainer>
<br />
<table width="100%">
<tr>
<td align="center">
<asp:Button runat="server" ID="BtnGuardar" Text="Guardar" CssClass="btn btn-primary" />
</td>
</tr>
</table>
<table width="100%">
<tr>
<td align="center">
<asp:Button runat="server" ID="BtnGuardar" Text="Guardar" CssClass="btn btn-primary" />
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
<%--MODAL ADJUNTAR--%>
<div id="ModalAdjuntar" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header ">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Adjuntar</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<asp:TextBox ID="txtAdjuntar" CssClass="ADSdropzone hidden" data-maxFile="1" Text="" runat="server"></asp:TextBox>
<%--MODAL ADJUNTAR--%>
<div id="ModalAdjuntar" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header ">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Adjuntar</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<asp:TextBox ID="txtAdjuntar" CssClass="ADSdropzone hidden" data-maxFile="1" Text="" runat="server"></asp:TextBox>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<asp:Button ID="btnGuardarAdjunto" runat="server" Text="Guardar" CssClass="btn btn-primary" OnClick="btnGuardarAdjunto_Click" />
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancelar</button>
<div class="modal-footer">
<asp:Button ID="btnGuardarAdjunto" runat="server" Text="Guardar" CssClass="btn btn-primary" OnClick="btnGuardarAdjunto_Click" />
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancelar</button>
</div>
</div>
</div>
</div>
</div>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
</asp:Content>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
</asp:Content>

View File

@@ -236,7 +236,8 @@
<ContentTemplate>
<div style="min-height: 250px; overflow-x: scroll">
<asp:GridView ID="GvE" runat="server" AutoGenerateColumns="False" EmptyDataText="No se encontraron Ventas con los filtros especificados"
CssClass="table table-striped table-advance table-hover Widthall ScrollAD" DataKeyNames="CveCliente,CveVendedor,CveSubProyecto,CvePS,CveUnidadMedida,Cantidad,PU,CveVentaDetalle,GastosEnvio" data-sort="true" GridLines="None" Width="99%">
CssClass="table table-striped table-advance table-hover Widthall ScrollAD" DataKeyNames="CveCliente,CveVendedor,CveSubProyecto,CvePS,CveUnidadMedida,Cantidad,PU,CveVentaDetalle,GastosEnvio,CveVenta,SerieFolio" data-sort="true" GridLines="None" Width="99%"
OnRowDataBound="GvE_RowDataBound">
<Columns>
<asp:BoundField HeaderText="Cliente" DataField="NombreComercial" ItemStyle-Width="30%" />
<asp:BoundField HeaderText="SerieFolio" DataField="SerieFolio" ItemStyle-Width="10%" />

View File

@@ -150,6 +150,11 @@ Partial Class Ventas_RepPedidosSTF
If e.Row.DBCampo("TipoRenglon") = "1" Then e.Row.CssClass = "SubTotales"
If UsuarioActual.TienePermisoPagina(6) Then
e.Row.Cells(1).Text = $"<a href='./Ventas.aspx?CveVenta={e.Row.DataKey("CveVenta")}' target='_blank' class ='Texto' >{e.Row.DataKey("SerieFolio")}</a>"
End If
End If
If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then
@@ -444,4 +449,16 @@ Partial Class Ventas_RepPedidosSTF
UpBodyHorariosPedidos.Update()
RegistraScript("$('#divHorariosPedidos').modal({ backdrop: 'static', keyboard: false});")
End Sub
Protected Sub GvE_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
If UsuarioActual.TienePermisoPagina(6) Then
e.Row.Cells(1).Text = $"<a href='./Ventas.aspx?CveVenta={e.Row.DataKey("CveVenta")}' target='_blank' class ='Texto' >{e.Row.DataKey("SerieFolio")}</a>"
End If
End If
End Sub
End Class

View File

@@ -9028,13 +9028,13 @@
<asp:UpdatePanel class="modal-dialog" runat="server" ID="UpDvModalTipoVenta" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-content">
<div class="modal-content" style="width:650px;">
<div class="modal-header ">
<h4 class="modal-title">
<asp:Label ID="LblDvModalTipoVentaTitulo" runat="server">Tipo de Venta</asp:Label>
</h4>
</div>
<div class="modal-body" style="min-height: 233.45px">
<div class="modal-body" style="min-height: 250px">
<%--Tipo Venta--%>
<div class="row" runat="server" visible="True" id="DvModalTipoVentaPasoTipo">
@@ -9126,7 +9126,7 @@
<div class="row" runat="server" id="DVGvPSProced" visible="false">
<div class="row">
<div class="col-md-8">
<asp:CheckBox ID="ChkVerTodosPS" runat="server" Text="Ver Todos" AutoPostBack="true" OnCheckedChanged="ChkVerTodosPS_CheckedChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;<asp:CheckBox ID="ChkVerTodosPS" runat="server" Text="Ver Todos los productos" AutoPostBack="true" OnCheckedChanged="ChkVerTodosPS_CheckedChanged" />
</div>
<div class="col-md-4" style="text-align: right">
<input type="text" id="TxtBus" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBus','{0}')", GvPSProced.ClientID) %>" style="display: inline-block; width: 150px;" />
@@ -9144,7 +9144,7 @@
<ajax:FilteredTextBoxExtender ID="FilTxtCantidad" runat="server" TargetControlID="TxtCantidad" FilterType="Custom, Numbers" ValidChars="." />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Cantidad" HeaderText="Cant." DataFormatString="{0:#,###.##}" ItemStyle-Width="30px">
<asp:BoundField DataField="Cantidad" HeaderText="Exist." DataFormatString="{0:#,###.##}" ItemStyle-Width="30px">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="CodigoPS" HeaderText="Producto">

View File

@@ -40167,38 +40167,27 @@ Partial Class Ventas
Protected Sub LnkDvModalTipoVentaCancelar_Click(sender As Object, e As EventArgs)
LnkDvModalTipoVentaAceptar.Visible = False
DvModalTipoVentaPasoTipo.Visible = True
DvModalTipoVentaClientesucursal.Visible = False
DvModalTipoVentaCliente.Visible = False
DvModalTipoVentaPasoRequiereOS.Visible = False
DvModalTipoVentaPasoMedicoProcedimiento.Visible = False
ChkRequiereTecnicoModal.Enabled = True
DdlClienteSucursal.SelectedValueExist(-1)
DvModalRequiereOSFecha.Visible = False
ChkRequiereTecnicoModal.Checked = False
RBLTipoVenta.SelectedValue = Nothing
DdlMedicoModal.SelectedValueExist(-1)
DdlProcedimientoModal.SelectedValueExist(-1)
GvPSProced.DataSource = Nothing
GvPSProced.DataBind()
DVGvPSProced.Visible = False
LblDvModalTipoVentaTitulo.Text = "Tipo de Venta"
UpDvModalTipoVenta.Update()
End Sub
Protected Sub LnkDvModalTipoVentaAceptar_Click(sender As Object, e As EventArgs)
If RBLTipoVenta.SelectedValue = "2" Then 'pago directo