CalculoSBC

This commit is contained in:
JORGE LUIS CAUDILLO ESPARZA
2024-09-23 07:24:00 -07:00
parent 473bdbced3
commit 8a3e3d232f
9 changed files with 609 additions and 16 deletions

View File

@@ -1,19 +1,323 @@
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="TripsChecks.aspx.cs" Inherits="VYA_TripsChecks" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" Runat="Server">
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" Runat="Server">
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<style>
.trip-button {
display: inline-block;
width: 150px;
text-align: center;
margin: 20px;
cursor: pointer;
}
.trip-button img {
width: 150px;
height: auto;
border: 2px solid #ddd;
border-radius: 5px;
padding: 10px;
transition: transform 0.2s;
}
.trip-button img:hover {
transform: scale(1.05);
}
.trip-button p {
font-family: Arial, sans-serif;
margin-top: 10px;
font-weight: bold;
}
.odometer-container {
display: flex;
align-items: center;
justify-content: space-between;
width: 200px;
}
.odometer-btn {
width: 40px;
height: 40px;
font-size: 1.5rem;
line-height: 1;
text-align: center;
padding: 0;
border-radius: 50%;
background-color: #e0e0e0;
border: none;
cursor: pointer;
}
.btn-ok {
background-color: green;
color: white;
}
.btn-detected {
background-color: red;
color: white;
}
.btn-next {
background-color: blue;
color: white;
}
.gridview-style {
width: 100%;
border-collapse: collapse;
}
.gridview-style td {
padding: 10px;
border-bottom: 1px solid #ddd;
}
.requerido{color:darkred}
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" Runat="Server">
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" Runat="Server">
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="H" Runat="Server">
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="HA" Runat="Server">
<asp:Content ID="Content6" ContentPlaceHolderID="HA" runat="Server">
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="C" Runat="Server">
<asp:Content ID="Content7" ContentPlaceHolderID="C" runat="Server">
<asp:UpdatePanel ID="UpDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row">
<div class="col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2 col-xs-12">
<asp:Panel ID="PnlPaso1" runat="server">
<div class="portlet light xspadding bordered" id="idnecesaria1">
<div class="portlet-title ">
<div class="tools">
</div>
<div class="titlefiltros caption">
Paso 1: Seleccione el Tipo de Unidad
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body">
<div class="row">
<div class="col-sm-offset-2 col-sm-4">
<!-- Botón para Trip Autobus -->
<asp:ImageButton ID="imgBtnAutobus" runat="server" ImageUrl="~/imagenes/autobus.png" OnClick="ImgBtnAutobus_Click" CssClass="trip-button" />
<p>TRIP AUTOBUS</p>
</div>
<div class="col-sm-4">
<!-- Botón para Trip Sprinter -->
<asp:ImageButton ID="imgBtnSprinter" runat="server" ImageUrl="~/imagenes/sprinter.png" OnClick="ImgBtnSprinter_Click" CssClass="trip-button" />
<p>TRIP SPRINTER</p>
</div>
<div class="col-sm-4"></div>
</div>
</div>
</div>
</asp:Panel>
<asp:Panel ID="PnlPaso2" runat="server">
<div class="portlet light xspadding bordered" id="idnecesaria">
<div class="portlet-title ">
<div class="tools">
</div>
<div class="titlefiltros caption">
Paso 2: CHECK PT
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body">
<div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Tipo de Unidad</label>
<asp:DropDownList ID="DdlTipoUnidad" data-text="Todos" AppendDataBoundItems="true" AutoPostBack="true"
DataTextField="TipoActivoFijo" DataValueField="CveTipoActivoFijo" OnSelectedIndexChanged="DdlTipoUnidad_SelectedIndexChanged"
CssClass="form-control ddlFiltros input-sm select2me Widthall" ClientIDMode="Static"
Style="width: 100%;" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Unidad</label>
<asp:DropDownList ID="DdlAF" DataValueField="CveActivoFijo" DataTextField="CodDesc" Class="form-control select2me" Width="100%" runat="server">
</asp:DropDownList>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="odometro">Folio</label>
<asp:TextBox ID="TxtFolio" runat="server" CssClass="form-control text-right" Text="0" Style="width: 100%;" />
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Fecha</label>
<div style="width: 115px">
<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"
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>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Chofer</label>
<asp:DropDownList ID="DdlChofer" data-text="Todos" AppendDataBoundItems="true"
DataTextField="NombreCompleto" DataValueField="CvePersonal" CssClass="form-control ddlFiltros input-sm select2me Widthall" ClientIDMode="Static"
Style="width: 100%;" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="odometro">ODÓMETRO</label>
<div class="odometer-container">
<button type="button" class="odometer-btn" onclick="updateOdometer(-1)">-</button>
<asp:TextBox ID="txtOdometer" runat="server" CssClass="form-control text-center" Text="0" Style="width: 80px;" />
<button type="button" class="odometer-btn" onclick="updateOdometer(1)">+</button>
</div>
</div>
</div>
</div>
</div>
<div class="form-group text-right">
<asp:Button ID="btnContinuar" runat="server" CssClass="btn btn-primary" Text="Continuar" OnClientClick="setPaso(3); return false;" />
</div>
</div>
</div>
</asp:Panel>
<asp:Panel ID="PnlPaso3" runat="server">
<div class="portlet light xspadding bordered" id="idnecesaria3">
<div class="portlet-title ">
<div class="tools">
</div>
<div class="titlefiltros caption">
Paso 3:
</div>
<div class="tools">
<a href="javascript:;" class="expand" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body" style="display:none;">
<div>
<h4>
<asp:Label ID="lblFormulario" runat="server" Font-Bold="True" />
</h4>
<asp:GridView ID="gvPreguntas" runat="server" GridLines="none" AutoGenerateColumns="False" ShowHeader="false" DataKeyNames="CvePregunta,Valor"
CssClass="gridview-style" OnRowDataBound="gvPreguntas_RowDataBound" >
<Columns>
<asp:TemplateField HeaderText="Acciones">
<ItemTemplate>
<h4>
<asp:Label ID="lblPregunta" runat="server" Text='<%# Eval("Pregunta") %>'></asp:Label>*<br />
</h4>
<asp:Button ID="btnOk" runat="server" Text="OK" OnClick="btnOk_Click" />
<asp:Button ID="btnDetected" runat="server" Text="Detectado" OnClick="btnDetected_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div class="form-group">
<h4>
<asp:Label ID="lblFormularioobserv" runat="server"></asp:Label><br />
</h4>
<asp:TextBox ID="TxtObservaciones" runat="server" TextMode="multiline" CssClass="Widthall" Columns="50" Rows="5"></asp:TextBox>
</div>
<div class="text-center">
<asp:Button ID="btnAnt" runat="server" CssClass="btn btn-default" Text="Anterior" OnClick="btnAnt_Click" />
<asp:Button ID="BtnCancel" runat="server" CssClass="btn btn-default" Text="Cancelar" OnClick="BtnCancel_Click" />
<asp:Button ID="btnNext" runat="server" CssClass="btn btn-default" Text="Siguiente" OnClick="btnNext_Click" />
<asp:Button ID="btnGuardar" runat="server" CssClass="btn btn-primary" Text="Guardar" OnClick="btnGuardar_Click" />
</div>
</div>
</div>
</div>
</asp:Panel>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" Runat="Server">
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
<script>
function setPaso(id){
if (id == 3) {
}
}
function updateOdometer(change) {
// Get the odometer input field
var odometerInput = document.getElementById('<%= txtOdometer.ClientID %>');
// Convert the current value to a number and update it by the change amount
var currentValue = parseInt(odometerInput.value, 10);
if (isNaN(currentValue)) {
currentValue = 0;
}
// Update the value
odometerInput.value = currentValue + change;
}
</script>
</asp:Content>

View File

@@ -1,13 +1,274 @@
using System;
using CrystalDecisions.Shared.Json;
using System;
using System.Activities.Expressions;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Extensiones;
public partial class VYA_TripsChecks : System.Web.UI.Page
public partial class VYA_TripsChecks : ClsPaginas
{
#region "Propiedades"
private int Paso
{
get
{
return ViewState["Paso"].ToEntero();
}
set
{
PnlPaso1.Visible = (value == 1);
PnlPaso2.Visible = (value == 2 || value == 3);
PnlPaso3.Visible = (value == 3 || value == 2);
ViewState["Paso"] = value;
}
}
private int _currentFormIndex
{
get
{
return ViewState["_currentFormIndex"].ToEntero();
}
set
{
ViewState["_currentFormIndex"] = value;
}
}
private DataTable _dtPreguntas
{
get
{
if (ViewState["_dtPreguntas"] != null)
return (DataTable)ViewState["_dtPreguntas"];
else
return null;
}
set
{
ViewState["_dtPreguntas"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Paso = (Request["Paso"] != null && Request["Paso"].ToString().ToEntero() > 0) ? Request["Paso"].ToString().ToEntero() : 1;
_currentFormIndex = (Request["FormIndex"] != null && Request["FormIndex"].ToString().ToEntero() > 0) ? Request["FormIndex"].ToString().ToEntero() : 1;
CargaCombos();
LoadData();
BindForm();
}
}
public void CargaCombos()
{
DataTable dttipoaf = get_GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("MedidaVehicularClave IN (2,3)");
DdlTipoUnidad.DataSource = dttipoaf;
DdlTipoUnidad.Items.Insert(0, new ListItem("Todos", "-1"));
DdlTipoUnidad.DataBind();
//CvePuesto =702 valor fijo V&A
DataTable dtchofer = get_GlobalDTRHPersonal(UsuarioActual.CveEmpresa).FiltraParametros("CvePuesto = 702 and CveEstatusPersonal = 1", "NombreCompleto");
DdlChofer.DataSource = dtchofer;
DdlChofer.DataBind();
DdlChofer.Items.Insert(0, new ListItem("-", "-1"));
}
public void cargaUnidades()
{
DataTable dt = get_GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros(string.Format(" EstadoActivoFijo= 'Activo' ", DdlTipoUnidad.SelectedValue));
DdlAF.DataSource = dt;
DdlAF.DataBind();
DdlAF.Items.Insert(0, new ListItem("-", "-1"));
}
#region "Paso 1"
protected void ImgBtnAutobus_Click(object sender, ImageClickEventArgs e)
{
DdlTipoUnidad.SelectedValue = "181";
Paso = 2;
cargaUnidades();
}
protected void ImgBtnSprinter_Click(object sender, ImageClickEventArgs e)
{
DdlTipoUnidad.SelectedValue = "184";
Paso = 2;
cargaUnidades();
}
#endregion
protected void DdlTipoUnidad_SelectedIndexChanged(object sender, EventArgs e)
{
cargaUnidades();
}
#region "Formulario"
private void LoadData()
{
_dtPreguntas = new DataTable();
using(ClsTransportes nom =new ClsTransportes())
{
if(nom.VIA_FormularioTrip(-1,UsuarioActual.CveUsuario,UsuarioActual.CveEmpresa))
{
_dtPreguntas =nom.DtResultados;
}
}
//// Para la demostración, aquí va un código para llenar el DataTable con datos ficticios.
//_dtPreguntas.Columns.Add("CveFormulario", typeof(int));
//_dtPreguntas.Columns.Add("Formulario", typeof(string));
//_dtPreguntas.Columns.Add("CvePregunta", typeof(int));
//_dtPreguntas.Columns.Add("Pregunta", typeof(string));
//_dtPreguntas.Columns.Add("Valor", typeof(int));
//_dtPreguntas.Columns.Add("OrdenPregunta", typeof(int));
//_dtPreguntas.Columns.Add("OrdenFormulario", typeof(int));
//// Agregar datos de prueba
//_dtPreguntas.Rows.Add(1, "Formulario 1", 1, "Pregunta 1", null, 1, 1);
//_dtPreguntas.Rows.Add(1, "Formulario 1", 2, "Pregunta 2", null, 2, 1);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 3, "Pregunta 3", null, 1, 2);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 4, "Pregunta 4", null, 2, 2);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 5, "Pregunta 5", null, 1, 3);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 6, "Pregunta 6", null, 2, 3);
}
private void BindForm()
{
var filteredRowsant = _dtPreguntas.FiltraParametros($"OrdenFormulario = {_currentFormIndex - 1}");
var filteredRowsnext = _dtPreguntas.FiltraParametros($"OrdenFormulario = {_currentFormIndex + 1}");
btnAnt.Visible = filteredRowsant.Rows.Count > 0;
btnNext.Visible = filteredRowsnext.Rows.Count > 0;
btnGuardar.Visible = !(filteredRowsnext.Rows.Count > 0);
var filteredRows = _dtPreguntas.Select($"OrdenFormulario = {_currentFormIndex}");
var sortedRows = filteredRows.CopyToDataTable();
if(sortedRows.Rows.Count > 0)
{
lblFormulario.Text = $"{sortedRows.Rows[0]["Formulario"]}:";
lblFormularioobserv.Text = $"Observaciones {sortedRows.Rows[0]["Formulario"]}";
}
gvPreguntas.DataSource = sortedRows;
gvPreguntas.DataBind();
UpDatos.Update();
}
protected void gvPreguntas_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string valor = e.Row.DataKey("Valor");
// Botón btnOk
Button btnOk = (Button)e.Row.FindControl("btnOk");
if (btnOk != null)
{
btnOk.CssClass = valor == "1" ? "btn btn-primary" : "btn btn-default";
}
// Botón btnDetected
Button btnDetected = (Button)e.Row.FindControl("btnDetected");
if (btnDetected != null)
{
btnDetected.CssClass = valor == "0" ? "btn btn-primary" : "btn btn-default";
}
}
}
private void UpdateValue(int cvePregunta, int newValue)
{
foreach (DataRow row in _dtPreguntas.Rows)
{
if (Convert.ToInt32(row["CvePregunta"]) == cvePregunta)
{
row["Valor"] = newValue;
break;
}
}
}
protected void btnOk_Click(object sender, EventArgs e)
{
Button btnOk = (Button)sender;
GridViewRow row = (GridViewRow)btnOk.NamingContainer;
int cvePregunta = row.DataKey("CvePregunta").ToEntero();
UpdateValue(cvePregunta, 1);
BindForm();
}
protected void btnDetected_Click(object sender, EventArgs e)
{
Button btnDetected = (Button)sender;
GridViewRow row = (GridViewRow)btnDetected.NamingContainer;
int cvePregunta = row.DataKey("CvePregunta").ToEntero();
UpdateValue(cvePregunta, 0);
BindForm();
}
public bool ValidarGridView()
{
bool ok = true;
foreach (GridViewRow row in gvPreguntas.Rows)
{
// Obtener el valor del DataKey correspondiente a la fila actual
string valor = row.DataKey("Valor");
// Verificar si el valor es diferente de '0' o '1'
if (valor != "0" && valor != "1")
{
ok = false;
// Marcar lblPregunta como requerido si el valor es diferente
Label lblPregunta = (Label)row.FindControl("lblPregunta");
if (lblPregunta != null)
{
lblPregunta.CssClass = "requerido"; // Añade tu clase CSS para marcar como requerido
}
}
}
return ok;
}
protected void btnNext_Click(object sender, EventArgs e)
{
if (ValidarGridView())
{
// Incrementar el índice del formulario
_currentFormIndex++;
BindForm();
}
}
protected void btnAnt_Click(object sender, EventArgs e)
{
_currentFormIndex--;
BindForm();
}
protected void BtnCancel_Click(object sender, EventArgs e)
{
Paso = 1;
}
#endregion
protected void btnGuardar_Click(object sender, EventArgs e)
{
}
protected void btnContinuar_Click(object sender, EventArgs e)
{
}