From 2342f39ba862559f01b920cea27ba8ee302eaf9a Mon Sep 17 00:00:00 2001 From: Oscar Irigoyen Date: Mon, 17 Oct 2022 09:51:43 -0700 Subject: [PATCH] RepServiciosDomicilio, asignar ordenes, Compras autoseleccion de alamcenes --- Compras/Compras.aspx.vb | 15 + Empresas/15/Formatos/Factura.rdlc | 9 +- OS/RepServicioDomicilio.aspx | 147 +++++++-- OS/RepServicioDomicilio.aspx.vb | 493 +++++++++++++++++++++++++++++- 4 files changed, 629 insertions(+), 35 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 6db7b064a..ca7ed2be2 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1594,6 +1594,8 @@ Partial Class Compras_Compras NCSeleccionFacturasRelacionadas(UUIDSList) End If + + End If 'SE OCUPAN AFUERA DEL POSTBACK ?? @@ -10768,6 +10770,19 @@ Partial Class Compras_Compras 'e.Row.FCDropDownList("ddlEAlmacen").SelectedValue = If(e.Row.DBCampo("CveAlmacen").ToEntero <= 0, "-1", e.Row.DBCampo("CveAlmacen")) If UsuarioActual.Empresa.UsaAC Then e.Row.FCDropDownList("ddlEAlmacen").Enabled = False + + If UsuarioActual.Empresa.Funcionalidad(567) = "1" Then + If e.Row.FCDropDownList("ddlEAlmacen").Items.Count > 1 Then + + e.Row.FCDropDownList("ddlEAlmacen").SelectedIndex = 1 + e.Row.FCCheckBox("cbInv").Checked = True + + ddlAlmacenConsignacion_SelectedIndexChanged(e.Row.FCDropDownList("ddlEAlmacen"), Nothing) + CambiaTotalDevengar(Nothing, Nothing) + End If + End If + + If Not e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then e.Row.FCTextBox("TbCantidad").Attributes.Add("onblur", String.Format("ValidarCantidad(this,{0})", If(e.Row.DBCampo("CantidadF").ToString.ToDecimal > e.Row.DBCampo("Cantidad").ToString.ToDecimal, e.Row.DBCampo("Cantidad"), e.Row.DBCampo("CantidadF")))) e.Row.FCTextBox("TbCantidad").Text = If(e.Row.DBCampo("CantidadF").ToString.ToDecimal > e.Row.DBCampo("Cantidad").ToString.ToDecimal, e.Row.DBCampo("Cantidad"), e.Row.DBCampo("CantidadF")) diff --git a/Empresas/15/Formatos/Factura.rdlc b/Empresas/15/Formatos/Factura.rdlc index 15b8dc996..033714ae1 100644 --- a/Empresas/15/Formatos/Factura.rdlc +++ b/Empresas/15/Formatos/Factura.rdlc @@ -926,7 +926,7 @@ - + @@ -1394,7 +1397,7 @@ 20.06179cm 10 - = (Parameters!AplicaPagare.Value="0" OrElse Parameters!AplicaPagare.Value="") + true diff --git a/OS/RepServicioDomicilio.aspx b/OS/RepServicioDomicilio.aspx index 6a5edb7ba..1ea3a3297 100644 --- a/OS/RepServicioDomicilio.aspx +++ b/OS/RepServicioDomicilio.aspx @@ -1,5 +1,8 @@ <%@ Page Title="Reporte Servicio a Domicilio" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepServicioDomicilio.aspx.vb" Inherits="OS_RepServicioDomicilio" %> +<%@ Register Assembly="TimePicker" Namespace="MKB.TimePicker" TagPrefix="cc1" %> + + @@ -87,19 +90,6 @@ height: 150px !important; } - /*#overlay a:hover { - position: fixed; - display: none; - width: 100%; - height: 100%; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0,0,0,0.5); - z-index: 2; - cursor: pointer; - }*/ #moopio a { @@ -137,8 +127,6 @@ - -
@@ -159,9 +147,7 @@
-
- - +
@@ -177,6 +163,24 @@
+ + +
+
+ Orden de Servicio: +
+
+ +
+
+ Asignar +
+
+
+
+ + +
@@ -411,6 +415,99 @@ + + @@ -454,10 +551,7 @@ function selectDate(start, end, allDay) { $('#ModalAgenda').modal('show'); - $("#SpanTituloAgenda").html("Agregar Evento");; - - //$("#< %=BtnGuardar.ClientID%>").val('Guardar'); - //$("#< %=BtnEliminar.ClientID%>").css("display", "none"); + $("#SpanTituloAgenda").html("Agregar Evento"); $("#HdnCveEvento").val(-1); @@ -490,9 +584,7 @@ function updateEvent(event, element) { $('#ModalAgenda').modal('show'); - //$("#SpanTituloAgenda").html("Actualizar Evento");; - //$("#< %=BtnGuardar.ClientID%>").val('Actualizar'); - //$("#< %=BtnEliminar.ClientID%>").css("display", ""); + $("#DivDescripcionUpdate").css("display", "block"); $("#<%=TxtDescripcionAgenda.ClientID%>").css("display", "none"); @@ -520,8 +612,7 @@ $("#TxtFechaFinAgenda").val("" + event.end.format("DD/MM/YYYY HH:mm")); //Identifica el tipo de Fecha Termino de la Recurrencia - if (event.recurrenciafin == 0) { - //$("#RBSinFechaFinUpdate").prop('checked', true); + if (event.recurrenciafin == 0) { $("#TxtFrecuencia").val('0'); } else if (!isNaN(event.recurrenciafin)) { $("#RBNumeroOcurrencias").prop('checked', true); @@ -776,7 +867,7 @@ select: selectDate, editable: true, minTime: "08:00:00", - maxTime: "17:00:00", + maxTime: "19:00:00", events: { url: '/Ashx/CargaEventos.ashx', type: 'GET', diff --git a/OS/RepServicioDomicilio.aspx.vb b/OS/RepServicioDomicilio.aspx.vb index 0551ba567..48e21a909 100644 --- a/OS/RepServicioDomicilio.aspx.vb +++ b/OS/RepServicioDomicilio.aspx.vb @@ -5,6 +5,8 @@ Imports Extensiones Imports System.Data Imports Microsoft.Reporting.WebForms Imports System.Web.Services +Imports Telerik.Web.UI +Imports APP_Code_CSharp Partial Class OS_RepServicioDomicilio Inherits ClsPaginas @@ -59,6 +61,126 @@ Partial Class OS_RepServicioDomicilio End Property + Private Property DT_OSSubProyectos As DataTable + Get + If ViewState("DT_OSSubProyectos") Is Nothing Then + ViewState("DT_OSSubProyectos") = New DataTable + End If + Return DirectCast(ViewState("DT_OSSubProyectos"), DataTable) + + End Get + + Set(value As DataTable) + ViewState("DT_OSSubProyectos") = value + End Set + End Property + + Private Property DT_OSNoAsignadas As DataTable + Get + If ViewState("DT_OSNoAsignadas") Is Nothing Then + ViewState("DT_OSNoAsignadas") = New DataTable + End If + Return DirectCast(ViewState("DT_OSNoAsignadas"), DataTable) + + End Get + + Set(value As DataTable) + ViewState("DT_OSNoAsignadas") = value + End Set + End Property + + Private Property CveOSDetalleAsignar As Integer + Get + If ViewState("CveOSDetalleAsignar") Is Nothing Then + ViewState("CveOSDetalleAsignar") = -1 + End If + Return ViewState("CveOSDetalleAsignar").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveOSDetalleAsignar") = value + End Set + End Property + + Private Property CveSubProyectoAsignar As Integer + Get + If ViewState("CveSubProyectoAsignar") Is Nothing Then + ViewState("CveSubProyectoAsignar") = -1 + End If + Return ViewState("CveSubProyectoAsignar").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveSubProyectoAsignar") = value + End Set + End Property + + + + Private Property CveOSAsignar As Integer + Get + If ViewState("CveOSAsignar") Is Nothing Then + ViewState("CveOSAsignar") = -1 + End If + Return ViewState("CveOSAsignar").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveOSAsignar") = value + End Set + End Property + + + Private Property FolioAsignar As String + Get + If ViewState("FolioAsignar") Is Nothing Then + ViewState("FolioAsignar") = "" + End If + Return ViewState("FolioAsignar").ToString + End Get + Set(value As String) + ViewState("FolioAsignar") = value + End Set + End Property + + + Private Property ConceptoAsignar As String + Get + If ViewState("ConceptoAsignar") Is Nothing Then + ViewState("ConceptoAsignar") = "" + End If + Return ViewState("ConceptoAsignar").ToString + End Get + Set(value As String) + ViewState("ConceptoAsignar") = value + End Set + End Property + Private Property ClienteAsignar As String + Get + If ViewState("ClienteAsignar") Is Nothing Then + ViewState("ClienteAsignar") = "" + End If + Return ViewState("ClienteAsignar").ToString + End Get + Set(value As String) + ViewState("ClienteAsignar") = value + End Set + End Property + Private Property SubProyectoAsignar As String + Get + If ViewState("SubProyectoAsignar") Is Nothing Then + ViewState("SubProyectoAsignar") = "" + End If + Return ViewState("SubProyectoAsignar").ToString + End Get + Set(value As String) + ViewState("SubProyectoAsignar") = value + End Set + End Property + + + + + + + #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load @@ -66,12 +188,14 @@ Partial Class OS_RepServicioDomicilio CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyectoEtiqueta) LblSubProyectoFiltro.Text = LblSubProyectoEtiqueta.Text - - DdlTecnico.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) - DdlTecnico.DataBind() - DdlTecnico.Items.Insert(0, New ListItem("Todos", "-1")) + LblModalSubProyectoLabel.Text = LblSubProyectoEtiqueta.Text + CargaTecnicos() + ConsultaOrdenesServiciosNoAsignadas() + CargaOrdenesServiciosNoAsignadas() + CargaTecnicosAsignar() InicializaCalendar() + End If End Sub @@ -115,6 +239,46 @@ Partial Class OS_RepServicioDomicilio ObjEventos.Dispose() End Sub + + Private Sub CargaTecnicos() + DdlTecnico.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) + DdlTecnico.DataBind() + DdlTecnico.Items.Insert(0, New ListItem("Todos", "-1")) + End Sub + + Private Sub CargaTecnicosAsignar() + + + Dim ObjOS As New ClsOS + Dim TecnicosSubProyectos As New DataTable + Dim TecnicosResultado As New DataTable + + If ObjOS.GetSubProyectosEstatusInicial(-1, 3, UsuarioActual.CveEmpresa) Then + TecnicosSubProyectos = ObjOS.DtResultados + End If + + For Each SubProyecto As DataRow In DT_OSSubProyectos.Rows + Dim TecnicosSubProyectoAux As DataTable = TecnicosSubProyectos.FiltraParametros(String.Format("SubProyecto = '{0}'", SubProyecto.Item("SubProyecto"))) + If TecnicosSubProyectoAux.Rows.Count > 0 Then + Dim EstatusDeTipoProcesoMenor As Integer = TecnicosSubProyectoAux.Rows(0).Item("CveEstatusOrdenServicio").ToString.ToEntero + Dim dtAuxiliar As New DataTable + dtAuxiliar = TecnicosSubProyectos.FiltraParametros(String.Format("SubProyecto = '{0}' AND CveEstatusOrdenServicio = {1}", SubProyecto.Item("SubProyecto"), EstatusDeTipoProcesoMenor), "", {"CveUsuario", "Nombre"}) + TecnicosResultado.Merge(dtAuxiliar) + End If + Next + 'DtTecnicosSubProyectos = TecnicosResultado + + ObjOS.Dispose() + + DdlTecnicoAsignar.DataSource = TecnicosResultado + DdlTecnicoAsignar.DataBind() + DdlTecnicoAsignar.Items.Insert(0, New ListItem("Seleccione uno", "-1")) + + UpModalOSAsginar.Update() + + End Sub + + Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Dim ObjEventos As New ClsOIEventos @@ -281,4 +445,325 @@ Partial Class OS_RepServicioDomicilio Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) RegistraScript("Calendario();") End Sub + + + Private Sub CargaOrdenesServiciosNoAsignadas() + + DdlOrdenesSinAsignar.DataSource = DT_OSNoAsignadas + DdlOrdenesSinAsignar.DataBind() + UpOrdenesSinAsignar.Update() + + End Sub + + + Private Sub ConsultaOrdenesServiciosNoAsignadas() + + Dim CveEstatusOrdenServicio As Integer = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus=1").ToEntero + + If CveEstatusOrdenServicio = 0 Then + Alert("No se pudo carga el estatus", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim ObjOS As New ClsOS + + If ObjOS.GetOrdenesServiciosNoAsignadas(-1, -1, CveEstatusOrdenServicio, UsuarioActual.CveEmpresa, "-1", "-1") Then + DT_OSSubProyectos = ObjOS.DtResultados.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) + DT_OSNoAsignadas = ObjOS.DtResultados + Else + + DT_OSSubProyectos = New DataTable + DT_OSNoAsignadas = New DataTable + End If + + + + ObjOS.Dispose() + + + + If DT_OSNoAsignadas.Rows.Count > 0 Then + DVOSPendientes.Visible = True + Else + DVOSPendientes.Visible = False + End If + UpOrdenesSinAsignar.Update() + + End Sub + + + + Protected Sub LnkOrdenesSinAsignarMostarModal_Click(sender As Object, e As EventArgs) + + CveOSDetalleAsignar = -1 + CveOSAsignar = -1 + CveSubProyectoAsignar = -1 + Dim DTable As DataTable = DT_OSNoAsignadas.FiltraParametros($"CveOSDetalle={DdlOrdenesSinAsignar.SelectedValue}") + + + If DTable.Rows.Count = 1 Then + + CveOSDetalleAsignar = DTable.Rows(0)("CveOSDetalle").ToString.ToEntero + CveSubProyectoAsignar = DTable.Rows(0)("CveSubProyecto").ToString.ToEntero + CveOSAsignar = DTable.Rows(0)("CveOS").ToString.ToEntero + FolioAsignar = DTable.Rows(0)("Folio").ToString + + LblModalConcepto.Text = DTable.Rows(0)("Concepto").ToString + LblModalCliente.Text = DTable.Rows(0)("Nombre").ToString + LblModalSubProyecto.Text = DTable.Rows(0)("SubProyecto").ToString + + + UpModalOSAsginar.Update() + RegistraScript("$('#DVModalOSAsginar').modal('show');") + Else + Alert("Error al cargar datos.") + End If + + + + + End Sub + + + + Protected Sub LnkModalAsignar_Click(sender As Object, e As EventArgs) + + Dim TieneError As Boolean = False + Dim CveEstatusOS = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 2", "CveEstatusOrdenServicio ASC").ToEntero + + Dim CorreoAsignado As String = "" + + Dim picker As MKB.TimePicker.TimeSelector = TSTimeSelector + Dim time As DateTime + time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", TxtModalFechaOS.Text, picker.Hour, picker.Minute, picker.AmPm)) + + + Dim ObjOS As New ClsOS + ObjOS.IniciaTransacSQL() + + If ObjOS.GetSubProyectosEstatusInicial(DdlTecnicoAsignar.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then + Dim subProyectoDelTecnico As DataTable + subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros($"CveSubProyecto = {CveSubProyectoAsignar}") + If subProyectoDelTecnico.Rows.Count > 0 Then + If Not ObjOS.UpdateOrdenesServiciosAsignadas(CveOSDetalleAsignar, DdlTecnicoAsignar.SelectedValue.ToEntero, TxtModalFechaOS.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, UsuarioActual.CveUsuario, CveOSAsignar) Then + TieneError = True + End If + + + If Not TieneError Then + + Dim RecurrenciaTipo = 0, Frecuencia = -1, DiasSemana = "-1", Dias = -1, Mes = -1, RecurrenciaFin = "-1" + Dim OIDescripcion As String = $"{DdlTecnicoAsignar.SelectedItem.Text} Orden de servicio {FolioAsignar} " + + Dim ObjEventos As New ClsOIEventos(ObjOS.IniciaTransacSQL()) + If Not ObjEventos.AddEventoAgenda(2, DdlTecnicoAsignar.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:=CveOSAsignar, CveSubProyecto:=CveSubProyectoAsignar) Then + TieneError = True + End If + + End If + + CorreoAsignado = GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero).Rows(0)("Correo").ToString + + End If + + + If Not TieneError Then + ObjOS.Commit() + Else + ObjOS.RollBack() + End If + + ObjOS.Dispose() + + If Not TieneError And CorreoAsignado.Trim.Length > 0 Then + MandaCorreOS(CveOSAsignar, CorreoAsignado) + End If + + If Not TieneError Then + ConsultaOrdenesServiciosNoAsignadas() + Alert("Orden asignada correctamente.") + RegistraScript("$('#DVModalOSAsginar').modal('hide');Calendario();") + + End If + + End Sub + + + Private Sub MandaCorreOS(CveOS As Integer, CorreoUsuarioAsignado As String) + + + + Dim ObjOS As New ClsOS() + Dim params As New List(Of ReportParameter) + Dim CveFolio = "" + + Dim TmpDTOS = New DataTable + TmpDTOS.Columns.Add("CveOSDetalle", GetType(Integer)) + + TmpDTOS.Columns.Add("CveClasificacion", GetType(Integer)) + TmpDTOS.Columns.Add("Clasificacion", GetType(String)) + TmpDTOS.Columns.Add("CvePS", GetType(Integer)) + TmpDTOS.Columns.Add("CveUM", GetType(Integer)) + TmpDTOS.Columns.Add("UM", GetType(String)) + TmpDTOS.Columns.Add("Cantidad", GetType(Integer)) + TmpDTOS.Columns.Add("PS", GetType(String)) + TmpDTOS.Columns.Add("Especificaciones", GetType(String)) + TmpDTOS.Columns.Add("Materiales", GetType(String)) + TmpDTOS.Columns.Add("CveCuentaEquipo", GetType(Integer)) + TmpDTOS.Columns.Add("Observaciones", GetType(String)) + TmpDTOS.Columns.Add("FechaAtencion", GetType(String)) + TmpDTOS.Columns.Add("CveUsuarioAtendio", GetType(Integer)) + TmpDTOS.Columns.Add("UsuarioAtendio", GetType(String)) + TmpDTOS.Columns.Add("FechaTermino", GetType(String)) + TmpDTOS.Columns.Add("FechaEntrega", GetType(String)) + TmpDTOS.Columns.Add("CveUsuarioEntrego", GetType(Integer)) + TmpDTOS.Columns.Add("UsuarioEntrego", GetType(String)) + TmpDTOS.Columns.Add("SeFacturara", GetType(String)) + TmpDTOS.Columns.Add("SeSuperviso", GetType(String)) + TmpDTOS.Columns.Add("Estatus", GetType(String)) + TmpDTOS.Columns.Add("Archivo", GetType(String)) + TmpDTOS.Columns.Add("ComentarioTecnico", GetType(String)) + + + Dim TmpDTMaterialesOS = New DataTable + TmpDTMaterialesOS.Columns.Add("CveOSDetalle", GetType(Integer)) + TmpDTMaterialesOS.Columns.Add("CveConsecutivo", GetType(Integer)) + TmpDTMaterialesOS.Columns.Add("CveConsecutivoDetalle", GetType(Integer)) + TmpDTMaterialesOS.Columns.Add("CveMaterial", GetType(Integer)) + TmpDTMaterialesOS.Columns.Add("Cantidad", GetType(Integer)) + TmpDTMaterialesOS.Columns.Add("CveClasificacion", GetType(Integer)) + TmpDTMaterialesOS.Columns.Add("CvePS", GetType(String)) + TmpDTMaterialesOS.Columns.Add("CveUM", GetType(String)) + TmpDTMaterialesOS.Columns.Add("Clasificacion", GetType(String)) + TmpDTMaterialesOS.Columns.Add("PS", GetType(String)) + TmpDTMaterialesOS.Columns.Add("UM", GetType(String)) + + Dim FolioOS As String = "" + + Dim RutaReporte As New System.IO.FileInfo(String.Format("{0}Formatos/OrdenServicio.rdlc", UsuarioActual.Empresa.Ruta)) + + If ObjOS.GetOrdenesServicios(CveOS, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then + If ObjOS.DtResultados.Rows.Count > 0 Then + + Dim dtOS As DataTable = ObjOS.DtResultados + Dim dr As DataRow = dtOS.Rows(0) + params.Add(New ReportParameter("Cliente", dr("Cliente").ToString)) + params.Add(New ReportParameter("Solicito", dr("PersonaSolicito").ToString)) + params.Add(New ReportParameter("Descripcion", dr("Descripcion").ToString)) + params.Add(New ReportParameter("Recibio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaRecibido", dr("FechaRecepcion").ToString)) + params.Add(New ReportParameter("FolioOS", dr("Folio").ToString)) + FolioOS = dr("Folio").ToString + params.Add(New ReportParameter("ClienteTelefono", dr("Telefono").ToString)) + params.Add(New ReportParameter("ClienteCalle", dr("Direccion").ToString)) + params.Add(New ReportParameter("ClienteColonia", dr("Colonia").ToString)) + params.Add(New ReportParameter("ClienteCiudad", dr("Ciudad").ToString)) + params.Add(New ReportParameter("ClienteEstado", dr("Estado").ToString)) + CveFolio = dr("Folio").ToString + + If RutaReporte.Exists Then + params.Add(New ReportParameter("NoDeCliente", dr("CveCliente").ToString)) + params.Add(New ReportParameter("RFC", dr("RFC").ToString)) + params.Add(New ReportParameter("Vendedor", " ")) + params.Add(New ReportParameter("Correo", dr("Correo").ToString)) + params.Add(New ReportParameter("CodigoDeServicio", dr("CveOS").ToString)) + params.Add(New ReportParameter("Sucursal", dr("SubProyecto").ToString)) + params.Add(New ReportParameter("TipoServicio", dr("TipoServicio").ToString)) + params.Add(New ReportParameter("TipoEquipo", dr("TipoEquipo").ToString)) + params.Add(New ReportParameter("Descripcion", dr("Descripcion").ToString)) + params.Add(New ReportParameter("Copia", "Copia: Original")) + params.Add(New ReportParameter("Equipo", dr("Equipo").ToString)) + End If + End If + End If + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + If Not RutaReporte.Exists Then + + RutaReporte = New System.IO.FileInfo(String.Format("{0}Empresas\Grales\Formatos\OrdenServicio.rdlc", ModExtensiones.DirectorioBaseEmpresas)) + + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + + End If + + If ObjOS.GetOrdenesServiciosDetalle(CveOS) Then + TmpDTOS = ObjOS.DtResultados + End If + + If ObjOS.GetDetalleMateriales(-1, CveOS) Then + TmpDTMaterialesOS = ObjOS.DtResultados + End If + 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} + + lrds.Add(rds) + lrds.Add(rds2) + ObjOS.Dispose() + + Dim ReporteByte As Byte() = StreamPDF(RutaReporte.FullName, lrds, params, NombreArchivo:=String.Format("OrdenServicio-{0}", CveFolio)) + + If ReporteByte IsNot Nothing Then + Try + ViewState("Para") = CorreoUsuarioAsignado + ViewState("ArrayCC") = "" + ViewState("Asunto") = "Asinación Orden de Servicio" + ViewState("FolioOSMail") = FolioOS + ViewState("Body") = "Asinación Orden de Servicio" + + + ViewState("bytesOS") = ReporteByte + Dim Hilo As New Threading.Thread(AddressOf SendmailOS) + Hilo.Start() + Catch ex As Exception + GuardaLogAD($"Error al enviar correo de OS {ex.StackTrace}") + End Try + + End If + + + + + End Sub + + Private Sub SendmailOS() + + Dim Asunto, Para, ArrayCC, Body As String + Asunto = If(IsNothing(ViewState("Asunto")), "", ViewState("Asunto").ToString) + Para = If(IsNothing(ViewState("Para")), "", ViewState("Para").ToString) + ArrayCC = If(IsNothing(ViewState("ArrayCC")), "", ViewState("ArrayCC").ToString) + + Body = If(IsNothing(ViewState("Body")), "", ViewState("Body").ToString) + + + Dim Mail As New ClsSisMail() + Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.NombreArchivo = $"OS_{ViewState("FolioOSMail") }.pdf", .ArchivoBinario = DirectCast(ViewState("bytesOS"), Byte())}) + Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC, LSRutasMail) + + + End Sub + End Class