Apoyo Logístico, ordenes a domicilio horarios no operativos.

This commit is contained in:
Oscar Irigoyen
2023-01-12 11:54:34 -07:00
parent 65fcada230
commit 62fd8eeb3d
7 changed files with 8033 additions and 4783 deletions

View File

@@ -1630,6 +1630,48 @@ Public Class ClsOS
Return Retorno
End Function
Public Function AddOrdenesServiciosTecnicoHorarioNoOperativo(CveUsuarioAsignado As Integer, HoraInicio As DateTime, HoraFin As DateTime, CveUsuario As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OS_HorariosNoOperativosAdd")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveUsuarioAsignado", SqlDbType.Int).Value = CveUsuarioAsignado
.Add("@HoraInicio", SqlDbType.Time).Value = HoraInicio.TimeOfDay
.Add("@HoraFin", SqlDbType.Time).Value = HoraFin.TimeOfDay
.Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al agregar el horario no operativo.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
Public Function GetOrdenesServiciosTecnicoHorarioNoOperativo(CveUsuarioAsignado As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_OS_HorariosNoOperativosGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveUsuarioAsignado", SqlDbType.Int).Value = CveUsuarioAsignado
.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 horarios no operativos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
#End Region
#Region "ESTATUS USUARIOS OS"

View File

@@ -5135,6 +5135,8 @@ Public Class ClsPaginas
PaginaDict.Add("/Inventarios/RepEntregaAlmacenRuta.aspx".ToUpper(), 1319)
PaginaDict.Add("/Inventarios/CartaPorteManual.aspx".ToUpper(), 1321)
PaginaDict.Add("/Inventarios/EntradasSalidas.aspx?AL=1".ToUpper(), 1334)
#End Region

View File

@@ -5455,7 +5455,7 @@ Partial Class PopUpVerFactura
params.Add(New ReportParameter("FechaImpresion", Now.ToString("dd/MM/yyyy")))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario))
params.Add(New ReportParameter("Condiciones", dr("Condiciones").ToString))
params.Add(New ReportParameter("FechaAtencion", If(dr("FechaInicio").ToString.Length > 0, dr("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy"), "")))
params.Add(New ReportParameter("FechaAtencion", If(dr("FechaInicio").ToString.Length > 0, dr("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy hh:mm tt"), "")))
params.Add(New ReportParameter("TecnicoAsignado", dr("UsuarioAtendio").ToString))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -130,6 +130,9 @@
<li>
<asp:LinkButton ID="LnlAgregarServicioDomiciolio" runat="server" OnClick="LnlAgregarServicioDomiciolio_Click"> <i class="fa fa-plus" aria-hidden="true"></i> Agregar Servicios a Domicilio </asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="LnkHorariosNoOperativos" runat="server" OnClick="LnkHorariosNoOperativos_Click"> <i class="fa fa-plus" aria-hidden="true"></i> Técnico Horarios no operativos </asp:LinkButton>
</li>
</ContentTemplate>
</asp:UpdatePanel>
@@ -431,6 +434,9 @@
<div id="DVModalOS" class="modal ADS fade" role="dialog">
<asp:UpdatePanel class="modal-dialog" runat="server" ID="UpModalOS" UpdateMode="Conditional">
<ContentTemplate>
@@ -595,7 +601,7 @@
<div class="col-md-6">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlTecnicoAsignar" Width="100%" runat="server" CssClass="form-control select2me" DataTextField="Nombre" Visible="true" DataValueField="CveUsuario">
<asp:DropDownList ID="DdlTecnicoAsignar" Width="100%" runat="server" CssClass="form-control select2me" DataTextField="Nombre" Visible="true" DataValueField="CveUsuario" AutoPostBack="true" OnSelectedIndexChanged="DdlTecnicoAsignar_SelectedIndexChanged1">
</asp:DropDownList>
<%--<asp:RequiredFieldValidator ID="RfvDdlTecnicoAsignar" InitialValue="-1" runat="server" ControlToValidate="DdlTecnicoAsignar" Display="None"
@@ -626,7 +632,7 @@
<div class="form-group col-md-6 form-md-line-input input-iconright" style="padding-left: 0px !important;">
<div class="input-group input-sm date date-picker" data-date-format="dd/mm/yyyy hh:mm" style="width: 70%;">
<asp:TextBox ID="TxtModalFechaOS" ClientIDMode="Static" runat="server" Width="140px" CssClass="form-control input-sm ADDateTimePicker" CausesValidation="true" MaxLength="18"></asp:TextBox>
<asp:TextBox ID="TxtModalFechaOS" onchange="SetDefault($(this).val());" ClientIDMode="Static" runat="server" Width="140px" CssClass="form-control input-sm ADDateTimePicker" CausesValidation="true" MaxLength="18"></asp:TextBox>
<label style="margin-left: -3px; padding-bottom: 30px; width: 70%;" for="<%= TxtModalFechaOS.ClientID.ToString()%>">Fecha:</label>
</div>
</div>
@@ -662,11 +668,104 @@
</asp:UpdatePanel>
</div>
<div id="DVModalOSHorarioNoOperativo" class="modal ADS fade" role="dialog">
<asp:UpdatePanel class="modal-dialog" runat="server" ID="UpModalHorariosNoOperativos" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-content">
<div class="modal-header ">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title"><asp:Label runat="server" ID="Label1" >Horarios No Operativos</asp:Label></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-4">
<div class="form-group form-md-line-input">
<asp:DropDownList ID="DdlTecnicoAsignarHorario" Width="100%" runat="server" CssClass="form-control select2me" DataTextField="Nombre" Visible="true" DataValueField="CveUsuario" AutoPostBack="true"
OnSelectedIndexChanged="DdlTecnicoAsignarHorario_SelectedIndexChanged">
</asp:DropDownList>
<%--<asp:RequiredFieldValidator ID="RfvDdlTecnicoAsignar" InitialValue="-1" runat="server" ControlToValidate="DdlTecnicoAsignar" Display="None"
ErrorMessage="El campo <b>''Técnico''</b> es requerido por la aplicación" ValidationGroup="GrpAsignar"></asp:RequiredFieldValidator>
<ajax:ValidatorCalloutExtender ID="VCERfvDdlTecnicoAsignar" runat="server" HighlightCssClass="vco" TargetControlID="RfvDdlTecnicoAsignar" Width="350px"></ajax:ValidatorCalloutExtender>--%>
<label for="<%= DdlTecnicoAsignarHorario.ClientID.ToString()%>">Técnico: </label>
</div>
</div>
<div class="col-md-4">
<div class="form-group form-md-line-input input-iconright">
<label for="<%= TxtHorarioInicio.ClientID.ToString() %>" style="font-size: 13px; color: #888888;">Hora Inicio:</label>
<div class="form-group form-md-line-input input-iconright">
<cc1:TimeSelector ID="TxtHorarioInicio" runat="server" DisplaySeconds="false" DisplayButtons="true">
</cc1:TimeSelector>
<asp:CustomValidator ID="CVHoraInicio" runat="server" ControlToValidate="TxtHorarioInicio" Display="None" ErrorMessage="El campo <b>''Hora''</b> es necesario, por favor seleccione la hora correcta." ValidationGroup="GrpObligatorio" ValidateEmptyText="true"></asp:CustomValidator>
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" runat="server" HighlightCssClass="vco" TargetControlID="CVHoraInicio" Width="300px"></ajax:ValidatorCalloutExtender>
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group form-md-line-input input-iconright">
<label for="<%= TxtHorarioFin.ClientID.ToString() %>" style="font-size: 13px; color: #888888;">Hora Fin:</label>
<div class="form-group form-md-line-input input-iconright">
<cc1:TimeSelector ID="TxtHorarioFin" runat="server" DisplaySeconds="false" DisplayButtons="true">
</cc1:TimeSelector>
<asp:CustomValidator ID="CVHoraFin" runat="server" ControlToValidate="TxtHorarioFin" Display="None" ErrorMessage="El campo <b>''Hora''</b> es necesario, por favor seleccione la hora correcta." ValidationGroup="GrpObligatorio" ValidateEmptyText="true"></asp:CustomValidator>
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender2" runat="server" HighlightCssClass="vco" TargetControlID="CVHoraFin" Width="300px"></ajax:ValidatorCalloutExtender>
</div>
</div>
</div>
</div>
<%-- <div class="row">
<div class="col-md-4">
<div class="form-group form-md-line-input input-iconright">
<label for="<%= TxtHorarioEnvio.ClientID.ToString() %>" style="font-size: 13px; color: #888888;">Hora de Envío:</label>
<div class="form-group form-md-line-input input-iconright">
<cc1:TimeSelector ID="TxtHorarioEnvio" runat="server" DisplaySeconds="false" DisplayButtons="false">
</cc1:TimeSelector>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TxtHorarioEnvio" Display="None" ErrorMessage="El campo <b>''Hora''</b> es necesario, por favor seleccione la hora correcta." ValidationGroup="GrpObligatorio" ValidateEmptyText="true"></asp:CustomValidator>
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender3" runat="server" HighlightCssClass="vco" TargetControlID="CVHoraInicio" Width="300px"></ajax:ValidatorCalloutExtender>
</div>
</div>
</div>
</div>--%>
</div>
<div class="modal-footer">
<asp:LinkButton runat="server" ID="LnkGuardarHorarioNoOpeartivo" CssClass="btn btn-success" Text="Guardar" OnClick="LnkGuardarHorarioNoOpeartivo_Click" ></asp:LinkButton>
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div style="display:none">
<asp:UpdatePanel ID="UpCommando" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="LnkCommando" OnClick="LnkCommando_Click"></asp:Button>
<asp:Button runat="server" ID="LnkValidaHorarioNoOperativo" OnClick="LnkValidaHorarioNoOperativo_Click"></asp:Button>
<asp:HiddenField runat="server" ID="HFCveOS" Value="-1" ClientIDMode="Static" />
<asp:HiddenField runat="server" ID="HFCveOsDetalle" Value="-1" ClientIDMode="Static" />
<asp:HiddenField runat="server" ID="HFOCveOIEvento" Value="-1" ClientIDMode="Static" />
@@ -1081,15 +1180,24 @@
function InitCalendar() {
$(document).ready(function () {
Calendario();
//$("#TxtModalFechaOS").on("change paste keyup", function () {
// console.log('TxtModalFechaOS Modificado');
//});
//if (PrimeraCargaCalendario) {
//}
//jQuery('#TxtModalFechaOS').on('input', function () {
// console.log('TxtModalFechaOS Modificado');
//});
$("#TxtModalFechaOS").val("" + start.format("DD/MM/YYYY 08:00"));
//$("#TxtModalFechaOS").change(function () {
// console.log('TxtModalFechaOS Modificado');
//});
Calendario();
// CargaPickers();
// $("#TxtModalFechaOS").val("" + start.format("DD/MM/YYYY 08:00 tt"));
});
@@ -1109,7 +1217,68 @@
}
function CargaPickers() {
$.datetimepicker.setLocale('es');
$('input.ADDateTimePicker').each(function () {
var TThis = $(this);
TThis.datetimepicker({
dayOfWeekStart: 1,
lang: 'es',
format: 'd/m/Y H:i',
formatDate: 'd/m/Y H:i',
step: 30
});
var Div = TThis.parent()
var boton = document.createElement('span');
boton.className = "input-group-btn"
var subboton = document.createElement('a')
subboton.className = "btn default"
subboton.innerHTML = "<i class='fa fa-calendar'></i>"
subboton.addEventListener('click', function () {
TThis.datetimepicker('show')
});
boton.appendChild(subboton)
var agregar = true;
for (var i = 0; i < Div[0].children.length; i++) {
if (Div[0].children[i].isEqualNode(boton)) {
agregar = false;
}
}
if (agregar) {
Div[0].appendChild(boton);
}
//Div[0].appendChild(boton)
});
}
var validando = 0;
function SetDefault(Text) {
validando++;
if (validando == 1) {
var timestamp = Date.parse(Text);
if (isNaN(timestamp) == false) {
$('#<%=LnkValidaHorarioNoOperativo.ClientID%>').click();
}
}
if (validando >= 2) {
validando = 0;
}
}
</script>

View File

@@ -9,6 +9,7 @@ Imports Telerik.Web.UI
Imports APP_Code_CSharp
Imports AjaxControlToolkit.AsyncFileUpload.Constants
Imports System
Imports System.Globalization
Partial Class OS_RepServicioDomicilio
Inherits ClsPaginas
@@ -740,7 +741,7 @@ Partial Class OS_RepServicioDomicilio
DdlTecnicoAsignar.SelectedValueExist(ObjOS.CveUsuarioAtendio)
CveTecnicoAsignarOrioginal = ObjOS.CveUsuarioAtendio
FechaInicioOriginal = ObjOS.FechaInicio
TxtModalFechaOS.Text = ObjOS.FechaInicio.ToString.ToDate.ToString("dd/MM/yyyy hh:mm")
TxtModalFechaOS.Text = ObjOS.FechaInicio.ToString.ToDate.ToString("dd/MM/yyyy HH:mm")
DvModalSubProyecto.Visible = True
'TSTimeSelector.Hour = If(ObjOS.FechaInicio.Hour > 12, ObjOS.FechaInicio.Hour - 12, ObjOS.FechaInicio.Hour)
'TSTimeSelector.Minute = ObjOS.FechaInicio.Minute
@@ -971,11 +972,11 @@ Partial Class OS_RepServicioDomicilio
Dim CorreoAsignado As String = GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero).Rows(0)("Correo").ToString
If Not TieneError And CorreoAsignado.Trim.Length > 0 AndAlso DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then
CorreoAsignado = GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero).Rows(0)("Correo").ToString
MandaCorreOS(CveOSAsignar, CorreoAsignado)
MandaCorreOS(CveOS, CorreoAsignado)
End If
If Not TieneError And TxtEmail.Text.Trim.Length > 0 AndAlso DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then
MandaCorreOS(CveOSAsignar, TxtEmail.Text, True)
MandaCorreOS(CveOS, TxtEmail.Text, True)
End If
If Not TieneError Then
@@ -1092,7 +1093,7 @@ Partial Class OS_RepServicioDomicilio
params.Add(New ReportParameter("FechaImpresion", Now.ToString("dd/MM/yyyy")))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario))
params.Add(New ReportParameter("Condiciones", dr("Condiciones").ToString))
params.Add(New ReportParameter("FechaAtencion", If(dr("FechaInicio").ToString.Length > 0, dr("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy"), "")))
params.Add(New ReportParameter("FechaAtencion", If(dr("FechaInicio").ToString.Length > 0, dr("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy hh:mm tt"), "")))
params.Add(New ReportParameter("TecnicoAsignado", dr("UsuarioAtendio").ToString))
@@ -1126,7 +1127,7 @@ Partial Class OS_RepServicioDomicilio
Dim lrds As New List(Of ReportDataSource)
Dim rds As New ReportDataSource With {.Name = "DataSet2", .Value = TmpDTMaterialesOS}
Dim rds2 As New ReportDataSource With {.Name = "DataSet1", .Value = TmpDTOS}
Dim rds2 As New ReportDataSource With {.Name = "DataSet1", .Value = TmpDTMaterialesOS}
lrds.Add(rds)
lrds.Add(rds2)
@@ -1247,4 +1248,154 @@ Partial Class OS_RepServicioDomicilio
End Sub
Protected Sub LnkHorariosNoOperativos_Click(sender As Object, e As EventArgs)
RegistraScript("$('#DVModalOSHorarioNoOperativo').modal('show');")
DdlTecnicoAsignarHorario.Items.Clear()
DdlTecnicoAsignarHorario.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'True'")
DdlTecnicoAsignarHorario.DataBind()
DdlTecnicoAsignarHorario.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
DdlTecnicoAsignarHorario.SelectedValueExist("-1")
TxtHorarioInicio.SetTime(0, 0, 0, MKB.TimePicker.TimeSelector.AmPmSpec.AM)
TxtHorarioFin.SetTime(0, 0, 1, MKB.TimePicker.TimeSelector.AmPmSpec.AM)
UpModalHorariosNoOperativos.Update()
End Sub
Protected Sub DdlTecnicoAsignarHorario_SelectedIndexChanged(sender As Object, e As EventArgs)
TxtHorarioInicio.SetTime(0, 0, 0, MKB.TimePicker.TimeSelector.AmPmSpec.AM)
TxtHorarioFin.SetTime(0, 0, 1, MKB.TimePicker.TimeSelector.AmPmSpec.AM)
If DdlTecnicoAsignarHorario.SelectedValue.ToEntero > 0 Then
Dim objOS As New ClsOS
Dim DTHorarios As New DataTable
If objOS.GetOrdenesServiciosTecnicoHorarioNoOperativo(DdlTecnicoAsignarHorario.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
DTHorarios = objOS.DtResultados
End If
objOS.Dispose()
If DTHorarios IsNot Nothing AndAlso DTHorarios.Rows.Count > 0 Then
Dim HoraInicio As String = DTHorarios.Rows(0)("HoraInicio").ToString
Dim HoraFin As String = DTHorarios.Rows(0)("HoraFin").ToString
TxtHorarioInicio.SetTime(HoraInicio.ToDateTime.Hour, HoraInicio.ToDateTime.Minute, HoraInicio.ToDateTime.Second, If(HoraInicio.ToDateTime.ToString("tt", CultureInfo.InvariantCulture) = "PM", MKB.TimePicker.TimeSelector.AmPmSpec.PM, MKB.TimePicker.TimeSelector.AmPmSpec.AM))
TxtHorarioFin.SetTime(HoraFin.ToDateTime.Hour, HoraFin.ToDateTime.Minute, HoraFin.ToDateTime.Second, If(HoraFin.ToDateTime.ToString("tt", CultureInfo.InvariantCulture) = "PM", MKB.TimePicker.TimeSelector.AmPmSpec.PM, MKB.TimePicker.TimeSelector.AmPmSpec.AM))
End If
End If
UpModalHorariosNoOperativos.Update()
End Sub
Protected Sub LnkGuardarHorarioNoOpeartivo_Click(sender As Object, e As EventArgs)
If DdlTecnicoAsignarHorario.SelectedValue.ToEntero > 0 Then
Dim HoraInicio = $"{TxtHorarioInicio.Hour}:{TxtHorarioInicio.Minute}:{TxtHorarioInicio.Second} {TxtHorarioInicio.AmPm}".ToDateTime
Dim HoraFin = $"{TxtHorarioFin.Hour}:{TxtHorarioFin.Minute}:{TxtHorarioFin.Second} {TxtHorarioFin.AmPm}".ToDateTime
If HoraInicio > HoraFin Then
Alert("La hora final no debe ser mayor a la hora inicial", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If HoraFin = HoraInicio Then
Alert("la hora de inicio y la hora fin no pueden ser iguales", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim objOS As New ClsOS
If objOS.AddOrdenesServiciosTecnicoHorarioNoOperativo(DdlTecnicoAsignarHorario.SelectedValue.ToEntero, HoraInicio, HoraFin, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then
Alert("Horario no operativo guardado correntamente.")
RegistraScript("$('#DVModalOSHorarioNoOperativo').modal('hide');")
End If
objOS.Dispose()
End If
End Sub
Protected Sub DdlTecnicoAsignar_SelectedIndexChanged1(sender As Object, e As EventArgs)
ValidaHorarioNoOperativo()
End Sub
Protected Sub LnkValidaHorarioNoOperativo_Click(sender As Object, e As EventArgs)
ValidaHorarioNoOperativo()
End Sub
Private Sub ValidaHorarioNoOperativo()
If DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then
'If ViewState("Validando") Is Nothing Then
' ViewState("Validando") = True
'Else
' Exit Sub
'End If
Dim objOS As New ClsOS
Dim DTHorarios As New DataTable
If objOS.GetOrdenesServiciosTecnicoHorarioNoOperativo(DdlTecnicoAsignar.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
DTHorarios = objOS.DtResultados
End If
objOS.Dispose()
If DTHorarios IsNot Nothing AndAlso DTHorarios.Rows.Count > 0 Then
Dim HoraInicio As TimeSpan = DTHorarios.Rows(0)("HoraInicio").ToString.ToDate.TimeOfDay
Dim HoraFin As TimeSpan = DTHorarios.Rows(0)("HoraFin").ToString.ToDate.TimeOfDay
Dim HoraAsignacion As TimeSpan = TxtModalFechaOS.Text.ToDate.TimeOfDay
If HoraAsignacion >= HoraInicio And HoraAsignacion <= HoraFin Then
Alert($"La hora especificada esta dentro del horario no operativo del Técnico {HoraInicio.ToString()} a {HoraFin.ToString()} .", TipoMensaje.MsgAdvertencia)
End If
End If
'ViewState("Validando") = Nothing
End If
End Sub
End Class