From d99e59f0070c95f8bf8c3209fb0a671b9c22f255 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 24 Apr 2024 21:41:58 -0700 Subject: [PATCH] --SMS 2024.04.23 --- OS/Asignaciones.aspx | 2 +- OS/Asignaciones.aspx.vb | 177 +++++++++++++++++++++++++--------------- Ventas/Ventas.aspx | 4 +- Ventas/Ventas.aspx.vb | 94 ++++++++++++++++++++- 4 files changed, 206 insertions(+), 71 deletions(-) diff --git a/OS/Asignaciones.aspx b/OS/Asignaciones.aspx index 94bcafe1c..2a72d4efd 100644 --- a/OS/Asignaciones.aspx +++ b/OS/Asignaciones.aspx @@ -189,7 +189,7 @@
diff --git a/OS/Asignaciones.aspx.vb b/OS/Asignaciones.aspx.vb index c43b6ebb1..856c54818 100644 --- a/OS/Asignaciones.aspx.vb +++ b/OS/Asignaciones.aspx.vb @@ -42,7 +42,7 @@ Partial Class OS_Asignaciones If Not IsPostBack Then GvNA_ConfiguraColumnas() CargaEstatusOS() - 'CargaUsuarios() + CargaUsuarios() CargaClientes() CargaSubProyecto() @@ -225,75 +225,84 @@ Partial Class OS_Asignaciones DdlTecnico.DataBind() DdlTecnico.Items.Insert(0, New ListItem("Todos", "-1")) ObjOS.Dispose() - End Sub + End Sub #End Region - + #Region "BTN'S" - Protected Sub BtnAsignar_Click(sender As Object, e As EventArgs) Handles BtnAsignar.Click - Dim ObjOS As New ClsOS + Protected Sub BtnAsignar_Click(sender As Object, e As EventArgs) Handles BtnAsignar.Click + Dim TieneError As Boolean = False Dim CveEstatusOS As Integer = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 2", "CveEstatusOrdenServicio ASC").ToEntero Dim time As DateTime - Dim contadorOrdenesAsignadas As Integer = 0 - - ObjOS.IniciaTransacSQL() - - For Each row As GridViewRow In GvNA.Rows - If row.RowType = DataControlRowType.DataRow Then - - Dim picker As MKB.TimePicker.TimeSelector = DirectCast(row.FindControl("TimeSelector"), MKB.TimePicker.TimeSelector) - - If row.FCCheckBox("ChbxAsignar").Checked Then - time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", row.FCTextBox("FechaOS").Text, picker.Hour, picker.Minute, picker.AmPm)) - contadorOrdenesAsignadas += 1 - - If ObjOS.GetSubProyectosEstatusInicial(DdlTecnico.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then - Dim subProyectoDelTecnico As DataTable - subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros(String.Format("CveSubProyecto = {0}", row.DataKey("CveSubProyecto"))) - If subProyectoDelTecnico.Rows.Count > 0 Then - If Not ObjOS.UpdateOrdenesServiciosAsignadas(row.DataKey("CveOSDetalle").ToEntero, DdlTecnico.SelectedValue.ToEntero, row.FCTextBox("FechaOS").Text.ToDate, time, UsuarioActual.CveEmpresa) Then - TieneError = True - End If - Else - Alert("El técnico y la Orden de Servicio deben pertenecer al mismo subProyecto", TipoMensaje.MsgAdvertencia) - TieneError = True - End If - End If - - - If Not TieneError Then - - If Not ObjOS.UpdateOrdenesServiciosEstatus(CveEstatusOS.ToEntero, UsuarioActual.CveUsuario, row.DataKey("CveOS").ToEntero) Then - TieneError = True - End If - - If Not TieneError Then - Dim RecurrenciaTipo As Integer = 0, Frecuencia As Integer = -1, DiasSemana As String = "-1", Dias As Integer = -1, Mes As Integer = -1, RecurrenciaFin As String = "-1" - Dim Fecha As DateTime = time - Dim OIDescripcion As String = $"{DdlTecnico.SelectedItem.Text} Orden de servicio {row.DataKey("Folio")} " - - Dim ObjEventos As New ClsOIEventos(ObjOS.IniciaTransacSQL()) - If Not ObjEventos.AddEventoAgenda(2, DdlTecnico.SelectedItem.Text, OIDescripcion, 2, time, time.AddHours(1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, - RecurrenciaTipo:=RecurrenciaTipo, Frecuencia:=Frecuencia, DiasSemana:=DiasSemana, Dia:=Dias, Mes:=Mes, RecurrenciaFin:=RecurrenciaFin, CveTipoEvento:=2, - Importe:=0, CveOS:=row.DataKey("CveOS").ToEntero, CveSubProyecto:=row.DataKey("CveSubProyecto").ToEntero) Then - TieneError = True - End If - - End If - - Dim CorreoAsignado As String = GlobalDTUsuarios(DdlTecnico.SelectedValue.ToEntero).Rows(0)("Correo").ToString - - If Not TieneError Then - MandaCorreOS(row.DataKey("CveOS").ToEntero, CorreoAsignado, TrasaccionSql:=ObjOS.IniciaTransacSQL) - End If - - - End If - End If - End If - Next - + Dim contadorOrdenesAsignadas As Integer = 0 + + Dim ObjOS As New ClsOS + Dim ObjEventos As New ClsOIEventos(ObjOS.IniciaTransacSQL()) + Try + For Each row As GridViewRow In GvNA.Rows + If row.RowType = DataControlRowType.DataRow Then + + Dim picker As MKB.TimePicker.TimeSelector = DirectCast(row.FindControl("TimeSelector"), MKB.TimePicker.TimeSelector) + + If row.FCCheckBox("ChbxAsignar").Checked Then + time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", row.FCTextBox("FechaOS").Text, picker.Hour, picker.Minute, picker.AmPm)) + contadorOrdenesAsignadas += 1 + + If ObjOS.GetSubProyectosEstatusInicial(DdlTecnico.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then + Dim subProyectoDelTecnico As DataTable + subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros(String.Format("CveSubProyecto = {0}", row.DataKey("CveSubProyecto"))) + If subProyectoDelTecnico.Rows.Count > 0 Then + If Not ObjOS.UpdateOrdenesServiciosAsignadas(row.DataKey("CveOSDetalle").ToEntero, DdlTecnico.SelectedValue.ToEntero, row.FCTextBox("FechaOS").Text.ToDate, time, UsuarioActual.CveEmpresa) Then + TieneError = True + End If + Else + Alert("El técnico y la Orden de Servicio deben pertenecer al mismo subProyecto", TipoMensaje.MsgAdvertencia) + TieneError = True + End If + End If + + If Not TieneError Then + + If Not ObjOS.UpdateOrdenesServiciosEstatus(CveEstatusOS.ToEntero, UsuarioActual.CveUsuario, row.DataKey("CveOS").ToEntero) Then + TieneError = True + End If + + If Not TieneError Then + Dim RecurrenciaTipo As Integer = 0, Frecuencia As Integer = -1, DiasSemana As String = "-1", Dias As Integer = -1, Mes As Integer = -1, RecurrenciaFin As String = "-1" + Dim Fecha As DateTime = time + Dim OIDescripcion As String = $"{DdlTecnico.SelectedItem.Text} Orden de servicio {row.DataKey("Folio")} " + + + If Not ObjEventos.AddEventoAgenda(2, DdlTecnico.SelectedItem.Text, OIDescripcion, 2, time, time.AddHours(1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, + RecurrenciaTipo:=RecurrenciaTipo, Frecuencia:=Frecuencia, DiasSemana:=DiasSemana, Dia:=Dias, Mes:=Mes, RecurrenciaFin:=RecurrenciaFin, CveTipoEvento:=2, + Importe:=0, CveOS:=row.DataKey("CveOS").ToEntero, CveSubProyecto:=row.DataKey("CveSubProyecto").ToEntero) Then + TieneError = True + End If + + End If + + If Not TieneError Then + If Not AgendarCirugia(ObjEventos, row.DataKey("CveOS").ToEntero, time, DdlTecnico.SelectedValue.ToEntero(), row.DataKey("Medico"), row.DataKey("Procedimiento"), row.DataKey("Nombre")) Then + TieneError = True + End If + End If + + Dim CorreoAsignado As String = GlobalDTUsuarios(DdlTecnico.SelectedValue.ToEntero).Rows(0)("Correo").ToString + + If Not TieneError Then + MandaCorreOS(row.DataKey("CveOS").ToEntero, CorreoAsignado, TrasaccionSql:=ObjOS.IniciaTransacSQL) + End If + + + End If + End If + End If + Next + Catch ex As Exception + TieneError = True + OnError("Ocurrió un error al asignar", ex) + End Try If contadorOrdenesAsignadas > 0 Then @@ -301,7 +310,10 @@ Partial Class OS_Asignaciones ObjOS.Commit() Alert("Se asignaron las ordenes de servicio correctamente", TipoMensaje.MsgInformacion) CargaOrdenesServiciosAsignadasXPersona() - CargaOrdenesServiciosNoAsignadas() + CargaOrdenesServiciosNoAsignadas() + Else + ObjOS.RollBack() + Alert("Ocurrió un error al asignar", TipoMensaje.MsgAdvertencia) End If Else ObjOS.RollBack() @@ -312,7 +324,40 @@ Partial Class OS_Asignaciones ObjOS.Dispose() UpAsignacionPersona.Update() UpOS.Update() - End Sub + End Sub + + Protected Function AgendarCirugia(ByRef ObjEventos As ClsOIEventos, CveOS As Integer, FechaCirugia As DateTime, CveUsuarioAgendar As Integer, Medico As String, Procedimiento As String, Hospital As String) As Boolean + Dim TieneError As Boolean = False + Try + If FechaCirugia > MinFecha Then + + If CveUsuarioAgendar > 0 Then + + Dim Asunto As String = "Cirugía" + Dim Descripcion As New StringBuilder + + Descripcion.AppendFormat("Dr {0} {1}", Hospital, "
") + + Descripcion.AppendFormat("Cirugía {0} {1}", Procedimiento, "
") + + Descripcion.AppendFormat("Fecha de Cirugía {0} {1}", FechaCirugia.ToString("dd/MM/yyyy HH:mm"), "
") + + Descripcion.AppendFormat("{0} {1}", Hospital, "
") + + If Not ObjEventos.AddEventoAgenda(4, Asunto, Descripcion.ToString(), 3, FechaCirugia, FechaCirugia, CveUsuarioAgendar, UsuarioActual.CveEmpresa, RecurrenciaTipo:=0, CveTipoEvento:=2, CveOS:=CveOS) Then + TieneError = True + End If + + End If + + End If + Catch ex As Exception + TieneError = True + OnError("Ocurrió un error al generar la agenda", ex) + End Try + + Return Not TieneError + End Function Private Sub MandaCorreOS(CveOS As Integer, CorreoUsuarioAsignado As String, ByRef TrasaccionSql As SqlClient.SqlTransaction) diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 81715ba2b..71557b826 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -603,7 +603,7 @@ - Fecha de Cirugia: + Fecha de Cirugía: @@ -8801,7 +8801,7 @@
- Fecha de Cirugia: + Fecha de Cirugía:
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 62670ddd6..0475d0f42 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -996,7 +996,7 @@ Partial Class Ventas Private Property CveOSVentaMedica As Integer Get - Return ViewState("CveOSVentaMedica").ToString().ToEntero() + Return IfNull(ViewState("CveOSVentaMedica"), "-1").ToString().ToEntero() End Get Set(value As Integer) ViewState("CveOSVentaMedica") = value @@ -2650,6 +2650,20 @@ Partial Class Ventas 'CargarCamiones() If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then + 'SI ES COTIZACION CARGAR CLIENTE PUBLICO GENERAL + If Opcion = "Cot" Then + Dim CveClientePG As Integer = -1 + If UsuarioActual.CveEmpresa = 186 Then + CveClientePG = 1151377 + ViewState("CveCliente") = CveClientePG + HdnCveCliente.Value = CveClientePG.ToString() + CargaCliente(CveCliente) + + TrVentasMedicas2.Visible = False + TrVentasMedicas3.Visible = False + End If + End If + CargaMedicos() CargaProcedimientos() CargaDdlClientesSucursal() @@ -14159,6 +14173,17 @@ Partial Class Ventas End If End If + If EsVentaMedica AndAlso ErrorList.Count = 0 AndAlso ObjEventos IsNot Nothing Then + Dim CveOSAgenda As Integer = -1 + If Me.CveOSVentaMedica > 0 Then + CveOSAgenda = Me.CveOSVentaMedica + End If + + If Not AgendarCirugia(ObjEventos, CveOSAgenda) Then + ErrorList.Add("Ocurrió un error al guardar la agenda") + End If + End If + 'Contratos If factura.CveContrato > 0 AndAlso Me.CveContratoTipo <> 33 Then If factura.CveContrato > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing") Then @@ -37192,7 +37217,13 @@ Partial Class Ventas item.Text = $"  {item.Text}" Next - RegistraScript("$('#DvModalTipoVenta').modal({ backdrop: 'static', keyboard: false });") + If Opcion <> "Cot" Then + RegistraScript("$('#DvModalTipoVenta').modal({ backdrop: 'static', keyboard: false });") + Else + TrVentasMedicas2.Visible = False + TrVentasMedicas3.Visible = False + End If + End Sub Private Sub CargaProcedimientos(Optional CveProcedimientSeleccion As Integer = -1) @@ -38119,7 +38150,66 @@ Partial Class Ventas End Sub + Protected Function AgendarCirugia(ByRef ObjEventos As ClsOIEventos, CveOS As Integer) As Boolean + Dim TieneError As Boolean = False + Try + If DdlMedico.SelectedValue.ToEntero() > 0 AndAlso TrVentasMedicas2.Visible AndAlso TdFechaOS1.Visible AndAlso TdFechaOS2.Visible Then + Dim FechaCirugia As DateTime = MinFecha + If TxtFechaOS.Text.Replace(",", "").ToDateTime() > MinFecha Then + FechaCirugia = TxtFechaOS.Text.Replace(",", "").ToDateTime() + If FechaCirugia > MinFecha Then + + Dim CveUsuarioAgendar = -1 + Dim CveVendedor As Integer = DdlVendedor.SelectedValue.ToEntero() + + If CveVendedor > 0 Then + Dim strVendedores = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvesUsuariosAsignados", $"CveVendedor = {CveVendedor}") + If strVendedores.Split(","c).Length > 0 Then + CveUsuarioAgendar = strVendedores.Split(","c)(0).ToEntero() + End If + End If + + If CveUsuarioAgendar > 0 Then + + Dim Asunto As String = "Cirugía" + Dim Descripcion As New StringBuilder + + If DdlMedico.SelectedValue.ToEntero() > 0 Then + Descripcion.AppendFormat("Dr {0} {1}", DdlMedico.SelectedItem.Text, "
") + End If + + If DdlProcedimiento.SelectedValue.ToEntero() > 0 Then + Descripcion.AppendFormat("Cirugía {0} {1}", DdlProcedimiento.SelectedItem.Text, "
") + End If + + Descripcion.AppendFormat("Fecha de Cirugía {0} {1}", FechaCirugia.ToString("dd/MM/yyyy HH:mm"), "
") + + If DdlClienteSucursal.SelectedValue.ToEntero() > 0 Then + Descripcion.AppendFormat("{0} {1}", DdlClienteSucursal.SelectedItem.Text, "
") + ElseIf DdlSucursalCliente.SelectedValue.ToEntero() > 0 Then + Descripcion.AppendFormat("{0} {1}", DdlSucursalCliente.SelectedItem.Text, "
") + Else + Descripcion.AppendFormat("{0} {1}", Me.NombreCliente, vbCrLf) + End If + + If Not ObjEventos.AddEventoAgenda(4, Asunto, Descripcion.ToString(), 3, FechaCirugia, FechaCirugia.AddHours(1), CveUsuarioAgendar, UsuarioActual.CveEmpresa, RecurrenciaTipo:=0, CveTipoEvento:=2, CveOS:=CveOS) Then + TieneError = True + End If + + End If + + End If + End If + + End If + Catch ex As Exception + TieneError = True + OnError("Ocurrió un error al generar la agenda", ex) + End Try + + Return Not TieneError + End Function