Option Explicit On Option Strict On Imports System.Data Imports System.Data.SqlClient Imports System.IO Imports Extensiones Imports Microsoft.Reporting.WebForms Imports Modelos Partial Class RepContratoDetalle Inherits ClsPaginas #Region "Propiedades" Private Property CveContrato As Integer Get Return CType(ViewState("CveContrato"), Integer) End Get Set(value As Integer) ViewState("CveContrato") = value End Set End Property Private Property ArchivoUpdate As String Get Return ViewState("ArchivoUpdate").ToString End Get Set(value As String) ViewState("ArchivoUpdate") = value End Set End Property Private Property CveContratoTipo As Integer Get Return CType(ViewState("CveContratoTipo"), Integer) End Get Set(value As Integer) ViewState("CveContratoTipo") = value End Set End Property Private Property CveContratoEstatus As Integer Get Return CType(ViewState("CveContratoEstatus"), Integer) End Get Set(value As Integer) ViewState("CveContratoEstatus") = value End Set End Property Private Property CveMasivo As Integer Get Return CType(ViewState("CveMasivo"), Integer) End Get Set(value As Integer) ViewState("CveMasivo") = value End Set End Property Private Property CveViajePasajero As Integer Get Return CType(ViewState("CveViajePasajero"), Integer) End Get Set(value As Integer) ViewState("CveViajePasajero") = value End Set End Property Private Property Contrato As DataTable Get Return CType(ViewState("Contrato"), DataTable) End Get Set(value As DataTable) ViewState("Contrato") = value End Set End Property Private Property ViajeActual As DataTable Get Return CType(ViewState("ViajeActual"), DataTable) End Get Set(value As DataTable) ViewState("ViajeActual") = value End Set End Property Private Property SubProyecto As String Get Return CType(ViewState("SubProyecto"), String) End Get Set(value As String) ViewState("SubProyecto") = value End Set End Property Private Property AsientoSeleccionado As String Get Return ViewState("AsientoSeleccionado").ToString() End Get Set(value As String) ViewState("AsientoSeleccionado") = value End Set End Property Private Property TelefonoEmpresa As String Get Return ViewState("TelefonoEmpresa").ToString() End Get Set(value As String) ViewState("TelefonoEmpresa") = value End Set End Property Private Property CveVentaRemision As Integer Get If ViewState("CveVentaRemision") Is Nothing Then ViewState("CveVentaRemision") = -1 End If Return ViewState("CveVentaRemision").ToString.ToEntero End Get Set(value As Integer) ViewState("CveVentaRemision") = value End Set End Property Private Property CveSubProyectoOriginal As Integer Get If ViewState("CveSubProyectoOriginal") Is Nothing Then ViewState("CveSubProyectoOriginal") = -1 End If Return ViewState("CveSubProyectoOriginal").ToString.ToEntero End Get Set(value As Integer) ViewState("CveSubProyectoOriginal") = value End Set End Property Private Property CveMonedaOriginal As Integer Get If ViewState("CveMonedaOriginal") Is Nothing Then ViewState("CveMonedaOriginal") = -1 End If Return ViewState("CveMonedaOriginal").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMonedaOriginal") = value End Set End Property Private Property ImporteOrigial As Decimal Get If ViewState("ImporteOrigial") Is Nothing Then ViewState("ImporteOrigial") = 0D End If Return ViewState("ImporteOrigial").ToString.ToDecimal End Get Set(value As Decimal) ViewState("ImporteOrigial") = value End Set End Property Private Property DescripcionOriginal As String Get If ViewState("DescripcionOriginal") Is Nothing Then ViewState("DescripcionOriginal") = "" End If Return ViewState("DescripcionOriginal").ToString End Get Set(value As String) ViewState("DescripcionOriginal") = value End Set End Property Private Property TipoAFOriginal As String Get If ViewState("TipoAFOriginal") Is Nothing Then ViewState("TipoAFOriginal") = "" End If Return ViewState("TipoAFOriginal").ToString End Get Set(value As String) ViewState("TipoAFOriginal") = value End Set End Property Private Property FolioOriginal As String Get If ViewState("FolioOriginal") Is Nothing Then ViewState("FolioOriginal") = "" End If Return ViewState("FolioOriginal").ToString End Get Set(value As String) ViewState("FolioOriginal") = value End Set End Property Private Property TotalPagos As Decimal Get If ViewState("TotalPagos") Is Nothing Then ViewState("TotalPagos") = 0 End If Return ViewState("TotalPagos").ToString.ToDecimal End Get Set(value As Decimal) ViewState("TotalPagos") = value End Set End Property #End Region #Region "Carga Página" Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Request("CveContrato") Is Nothing Then Response.Redirect($"~/Transportes/RepContratos.aspx") End If CveContrato = Request("CveContrato").ToEntero If Not IsPostBack Then InicializaCombos() CargaDatos() CargaAuxiliarClienteCxC(DdlClientes.SelectedValue.ToEntero, CveVentaRemision) AsientoSeleccionado = "" CveViajePasajero = 0 Session("FileExtension") = "" ArchivoUpdate = "" CargaGvBitacora() If CveContrato > 0 Then HlEvento.Visible = True HlEvento.NavigateUrl = "/OI/PopUpAgenda.aspx?CveTipoEvento=2&CveContrato=" & CveContrato & "&TB_iframe=true&height=370&width=600;" ImgAddObs.Visible = True LtlTareaNueva.Text = String.Format(" Tarea", CveContrato) CargaEventoBitacora() End If If CveVentaRemision > 0 Then DVFactura.Visible = True End If End If End Sub Private Sub InicializaCombos() 'Lista Tipo AF DdlTipoAF.DataSource = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("MedidaVehicularClave IN (2,3)") DdlTipoAF.DataBind() DdlTipoAF.Items.Insert(0, New ListItem("Seleccione", "-1")) 'Lista de Monedas DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() CargarCentrosDeCosto(Nothing, Nothing, Nothing, LblSubProyectoModal) DdlSubProyecto.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione uno", "-1")) End Sub Private Sub CargaDatos() 'Información General Dim ObjContratos As New ClsContratos If ObjContratos.GetContratos(CveContrato, UsuarioActual.CveEmpresa) Then Contrato = ObjContratos.DtResultados If Contrato IsNot Nothing AndAlso Contrato.Rows.Count > 0 Then Dim Importe As Decimal = Contrato.Rows(0)("Importe").ToString.ToDecimal Dim Pesos As Decimal = Contrato.Rows(0)("ImporteMax").ToString.ToDecimal Dim Anticipo As Decimal = Contrato.Rows(0)("ImporteMin").ToString.ToDecimal CveContratoTipo = Contrato.Rows(0)("CveContratoTipo").ToString.ToEntero SubProyecto = Contrato.Rows(0)("SubProyecto").ToString CveMasivo = Contrato.Rows(0)("CveMasivo").ToString.ToEntero TxtFolio.Text = Contrato.Rows(0)("NumeroContrato").ToString DdlClientes.SelectedText = Contrato.Rows(0)("NombreComercial").ToString DdlClientes.SelectedValue = Contrato.Rows(0)("CveCliente").ToString DdlMoneda.SelectedValue = Contrato.Rows(0)("CveMoneda").ToString TxtDescripcion.Text = Contrato.Rows(0)("DescripcionContrato").ToString TxtObservaciones.Text = Contrato.Rows(0)("Observaciones").ToString TelefonoEmpresa = Contrato.Rows(0)("Telefono").ToString TxtUbicacion.Text = Contrato.Rows(0)("Ubicacion").ToString TxtFechaSalida.Text = Contrato.Rows(0)("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm:ss") TxtFechaRegreso.Text = Contrato.Rows(0)("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm:ss") TxtCantidadPasajeros.Text = Contrato.Rows(0)("CantidadPasajeros").ToString DdlTipoAF.SelectedValue = If(Contrato.Rows(0)("CveTipoAF") Is Nothing, "", Contrato.Rows(0)("CveTipoAF").ToString) TxtImporte.Text = Math.Round(Importe, 2).ToString TxtAnticipo.Text = Math.Round(Anticipo, 2).ToString CveContratoEstatus = Contrato.Rows(0)("CveContratosEstatus").ToString.ToEntero DdlSubProyecto.SelectedValueExist(Contrato.Rows(0)("CveSubProyecto").ToString) If Contrato.Rows(0)("CveAF").ToString <> "" Then divAF.Visible = True LblAF.Text = Contrato.Rows(0)("CodigoNombreAF").ToString End If CveSubProyectoOriginal = Contrato.Rows(0)("CveSubProyecto").ToString.ToEntero CveMonedaOriginal = Contrato.Rows(0)("CveMoneda").ToString.ToEntero ImporteOrigial = Importe DescripcionOriginal = Contrato.Rows(0)("DescripcionContrato").ToString TipoAFOriginal = DdlTipoAF.SelectedItem.Text FolioOriginal = TxtFolio.Text.Trim CveVentaRemision = Contrato.Rows(0)("CveVentaRemision").ToString.ToEntero HypRemision.Text = Contrato.Rows(0)("RemisionSerieFolio").ToString HypRemision.NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={ CveVentaRemision}" If Contrato.Rows(0)("RemisionSaldo").ToString.ToDecimal > 0 Then LblSaldo.Text = $"Saldo { Contrato.Rows(0)("RemisionSaldo").ToString.ToDecimal.ToString("###,###,###.00")}" Else LblSaldo.Text = "" End If If Not IsDBNull(ObjContratos.Archivo) AndAlso ObjContratos.Archivo <> "" AndAlso ObjContratos.Archivo <> "-1" AndAlso ObjContratos.Archivo <> $"{ObjContratos.CveContrato}." Then ViewState("FUrl") = Path.Combine(UsuarioActual.Empresa.Ruta, "CONTRATOS", ObjContratos.Archivo) BtnDescargar.Visible = True Dim File As New FileInfo(ViewState("FUrl").ToString) BtnDescargar.NavigateUrl = $"~/Compras/PopUpVerFactura.aspx?ArchivoContrato={Encripta(File.FullName)}" 'If File.Exists Then ' RegistraScript($"window.open({Url}, ""_blank"");") 'End If Else BtnDescargar.Visible = False A1.Visible = True End If 'Boletos Vendidos If Contrato.Rows(0)("CveContratoTipo").ToString() = "35" Then TabBoletos.Visible = True Dim ObjTransportes As New ClsTransportes If ObjTransportes.GetViajesPasajeros(CveContrato) Then GvViajesPasajeros.DataSource = ObjTransportes.DtResultados BusquedaSeleccionada(ObjTransportes.DtResultados) End If ObjTransportes.Dispose() GvViajesPasajeros.DataBind() End If ''Bitácora 'Dim ObjEventoBitacora As New ClsOIEventos 'If ObjEventoBitacora.GetEventos(-1, -1, -1, "-1", "-1", -1, -1, -1, -1, -1, -1, "-1", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then ' GvEB.DataSource = ObjEventoBitacora.DtResultados ' GvEB.DataBind() 'End If 'ObjEventoBitacora.Dispose() End If Else ObjContratos.Dispose() Response.Redirect($"~/Transportes/RepContratos.aspx") End If ObjContratos.Dispose() UpTabContainer.Update() End Sub #End Region #Region "Bitacora" Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.Cells(0).Width = Unit.Pixel(200) e.Row.Cells(1).Width = Unit.Pixel(200) e.Row.Cells(2).Width = Unit.Pixel(100) e.Row.Cells(3).Width = Unit.Pixel(500) End If If e.Row.DBCampo("Archivo").ToString <> "" Then e.Row.FCLinkButton("LinkArchivo").Visible = True e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString) ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione End If e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left End If End Sub Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click Dim ObjEventoBitacora As New ClsOIEventos Dim FileExtension As String = "-1" Dim Filesgral As List(Of Archivo) = AnexoBit.getfiles().Archivos Dim Filename As String = "" For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") Filename = fileItem.filename Next If ObjEventoBitacora.AddEventoBitacora(TxtEventoDescripcion.Text.Trim, String.Format(".{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then If Filename <> "" Then Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("{0}OI", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False) End If GvEB.DataSource = ObjEventoBitacora.DtResultados TxtEventoDescripcion.Text = "" AnexoBit.Text = "[]" Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") End If ObjEventoBitacora.Dispose() GvEB.DataBind() UPEventoBitacora.Update() CargaEventoBitacora() UPAddEventoBitacora.Update() End Sub Private Sub CargaEventoBitacora() If CveContrato > 0 Then Dim ObjEventoBitacora As New ClsOIEventos() If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento = 6 OR CveTipoEvento = 2") Else GvEB.DataSource = Nothing End If ObjEventoBitacora.Dispose() GvEB.DataBind() UPEventoBitacora.Update() End If End Sub 'Protected Sub CargarArchivo(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AFU.UploadedComplete ' If AFU.HasFile Then ' Dim UploadFolder As String = String.Format("{0}\Temp\", UsuarioActual.Empresa.Ruta) ' UploadFolder.DirectoryExistsCreate() ' Dim Extension As String = System.IO.Path.GetExtension(AFU.PostedFile.FileName) ' If File.Exists(String.Format("{0}{1}{2}", UploadFolder, UsuarioActual.CveUsuario.ToString, Extension)) Then File.Delete(String.Format("{0}{1}{2}", UploadFolder, UsuarioActual.CveUsuario.ToString, Extension)) ' AFU.SaveAs(UploadFolder & UsuarioActual.CveUsuario.ToString & Extension) ' Session("FileUpload") = UploadFolder & UsuarioActual.CveUsuario.ToString & Extension ' Session("FileExtension") = Extension ' Session("FileFolder") = UploadFolder ' End If 'End Sub Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) Dim Archivo As New System.IO.FileInfo(filePath) HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearContent() HttpContext.Current.Response.ContentType = "application/octet-stream" HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) HttpContext.Current.Response.TransmitFile(filePath) HttpContext.Current.Response.Flush() HttpContext.Current.Response.End() Archivo = Nothing End Sub #End Region #Region "Información General" Protected Sub BtnGuardarArchivo_Click1(sender As Object, e As EventArgs) Handles BtnGuardarArchivo.Click Dim FileExtension As String = "-1" Dim Filesgral As List(Of Extensiones.Archivo) = Anexo.getfiles().Archivos Dim Filename As String = "" Dim folderContratosPath As String = Path.Combine(UsuarioActual.Empresa.Ruta, "Contratos") If Not Directory.Exists(folderContratosPath) Then Directory.CreateDirectory(folderContratosPath) End If If Not Directory.Exists(Path.Combine(folderContratosPath, "Temp")) Then Directory.CreateDirectory(Path.Combine(folderContratosPath, "Temp")) End If For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") Session("FileExtension") = FileExtension Dim tempArray() As String tempArray = fileItem.filename.ToString().Split("-".ToCharArray()) ViewState("extencion") = FileExtension ViewState("FUrl") = Path.Combine(UsuarioActual.Empresa.Ruta, "Contratos", $"{CveContrato.ToString}.{ FileExtension}") If File.Exists(ViewState("FUrl").ToString) Then File.Delete(ViewState("FUrl").ToString) End If File.Move(fileItem.FileUrl, ViewState("FUrl").ToString) TxtArchivo.Text = tempArray(1) Next UPAFUL.Update() RegistraScript("$('#ModalUpload').modal('hide')", "hidemodal1") A1.Visible = True If Not FileExtension = "-1" Then BtnDescargar.Visible = True End If End Sub 'Private Sub BtnDescargar_Click(sender As Object, e As EventArgs) Handles BtnDescargar.Click ' Dim File As New FileInfo(ViewState("FUrl").ToString) ' Dim Url As String = $"{ObtenerUrlCompleta()}Compras/PopUpVerFactura.aspx?ArchivoContrato={Encripta(File.FullName)}" ' If File.Exists Then ' RegistraScript($"window.open({Url}, ""_blank"");") ' End If 'End Sub Public Function ObtenerUrlCompleta() As String Dim Solicitud As HttpRequest = HttpContext.Current.Request Dim url As String = Solicitud.Url.Scheme & "://" & Solicitud.Url.Host If (Solicitud.Url.Port <> 80 AndAlso Solicitud.Url.Port <> 443) Then url &= ":" & Solicitud.Url.Port End If url &= Solicitud.ApplicationPath If Not url.EndsWith("/") Then url &= "/" End If Return url End Function 'Private Sub DescargaArchivo(urlArchivo As String) ' Dim File As New FileInfo(urlArchivo) ' If File.Exists Then 'set appropriate headers ' Response.Clear() ' Response.ClearHeaders() ' Response.ClearContent() ' Response.AddHeader("Content-Disposition", "inline; filename=" & TxtFolio.Text & $"{File.Extension}") ' Response.AddHeader("Content-Length", File.Length.ToString()) ' 'Response.ContentType = "text/plain" ' Response.ContentType = "application/octet-stream" ' Response.Flush() ' ' Response.TransmitFile(File.FullName) ' Response.WriteFile(File.FullName) ' Response.End() ' Else ' Alert("Ocurrio un error al descargar el archivo", TipoMensaje.MsgAdvertencia, "window.close()") ' End If 'End Sub Protected Sub UpdateContrato(sender As Object, e As EventArgs) Dim ArchivoUpdate As String = "-1" Dim ErrorProceso As Boolean = False If Session("FileExtension").ToString <> "" Then 'ArchivoUpdate = $"{CveContrato.ToString}.{ Session("FileExtension")}" ArchivoUpdate = $".{Session("FileExtension").ToString}" Else End If Dim ObjContratos As New ClsContratos ObjContratos.IniciaTransacSQL() If Not ObjContratos.UpdateContratos(CveContrato, TxtFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, -1, ArchivoUpdate, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, -1, TxtImporte.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, 0, CveContratoTipo:=CveContratoTipo, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CveContratosEstatus:=CveContratoEstatus, Observaciones:=TxtObservaciones.Text) Then ErrorProceso = True End If If Not ErrorProceso Then If CveVentaRemision > 0 AndAlso (CveSubProyectoOriginal <> DdlSubProyecto.SelectedValue.ToEntero OrElse CveMonedaOriginal <> DdlMoneda.SelectedValue.ToEntero OrElse ImporteOrigial <> TxtImporte.Text.ToDecimal OrElse DescripcionOriginal <> TxtDescripcion.Text OrElse TipoAFOriginal <> DdlTipoAF.SelectedItem.Text OrElse FolioOriginal <> TxtFolio.Text.Trim) Then Dim ObsRemisionPartida As String = $"{DdlTipoAF.SelectedItem.Text}-{ TxtDescripcion.Text}-{TxtFolio.Text}" If Not UpdateRemision(ObjContratos.IniciaTransacSQL(), DdlSubProyecto.SelectedValue.ToEntero, DdlMoneda.SelectedValue.ToEntero, TxtImporte.Text.ToDecimal, ObsRemisionPartida) Then ErrorProceso = True End If End If End If If Not ErrorProceso Then ObjContratos.Commit() AgregarABitacora($"Actualización del contrato {CveContrato}") Alert("Contrato actualizado correctamente") Else Alert("Ocurrió un ocurrió un error al actualizar su boleto", TipoMensaje.MsgError) ObjContratos.RollBack() End If ObjContratos.Dispose() If Not ErrorProceso Then 'CargaDatos() End If End Sub Private Function UpdateRemision(ByRef transaccionSql As SqlTransaction, CveSubProyectoNew As Integer, CveMonedaNew As Integer, TotalNew As Decimal, DescripcionNew As String) As Boolean Dim Respuesta As Boolean = False Dim TmpDT As DataTable = New DataTable Dim OcurrioError As Boolean = False Dim ObjVentas As New ClsVentas(transaccionSql) Dim FechaVenta As Date = MinFecha Dim PorcentajeIVA As Decimal = 0D Dim IVANew As Decimal = 0D Dim SubTotalNew As Decimal = TotalNew Dim CvePrePoliza As Integer = -1 If ObjVentas.GetVenta(CveVentaRemision, UsuarioActual.CveEmpresa) Then FechaVenta = ObjVentas.DtResultados(0)("Fecha").ToString.ToDate CvePrePoliza = ObjVentas.DtResultados(0)("CvePrePoliza").ToString.ToEntero End If If ObjVentas.GetVentaDetalle(CveVentaRemision) Then TmpDT = ObjVentas.DtResultados PorcentajeIVA = ObjVentas.DtResultados.MAX("PorcentajeIVA").ToDecimal If PorcentajeIVA > 0 Then IVANew = (TotalNew * (PorcentajeIVA * 100)) / (100 + (PorcentajeIVA * 100)) SubTotalNew = TotalNew - IVANew End If End If If TmpDT Is Nothing OrElse TmpDT.Rows.Count = 0 Or FechaVenta = MinFecha Then Alert("Error al obtener los datos de la remisión.", TipoMensaje.MsgAdvertencia) Return False End If Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL()) Dim Moneda As Integer = DdlMoneda.SelectedValue.ToEntero() Dim TC As Decimal = If(CveMonedaNew = 2, GlobalTipoCambio(FechaVenta).ToDecimal, 1) Try If Not ObjVentas.UpdateVentas(SubTotalNew, 0, IVANew, 0, TotalNew, CveMonedaNew, TC, FechaVenta, DescripcionNew, UsuarioActual.CveEmpresa, CveVentaRemision, Vigencia:=FechaVenta, CondicionesPago:=-1, PedidoContrato:="-1", AtencionA:="-1", CveMetodoPago33:=-1, CveFormaPago33:=-1, TipoDocto:="Rem", CveCliente:=-1, CveClienteSucursal:=-1, OrdenCompra:="-1", RetIVA:=0, RetISR:=0, Kilometraje:=0D, CveUsoCFDi:=-1, CveVendedor:=-1, ServicioDomicilio:=False, CveMedico:=-1, CveProcedimiento:=-1, FechaParaSurtir:=MinFecha, Paciente:="-1", Episodio:="-1", CveCondicionEntrega:=-1, FolioRemision:="-1") Then OcurrioError = True End If 'Cargo de nueva cuenta el detalle de Ventas (Conceptos) If Not OcurrioError Then Dim index As Integer = 0 For Each Row As DataRow In TmpDT.Rows Dim CveVentaDetalle As Integer = Row("CveVentaDetalle").ToString().ToEntero() If CveVentaDetalle > 0 Then If Not ObjVentas.UpdateVentaDetalleRemision(Row("CveVentaDetalle").ToString().ToEntero(), Row("CvePS").ToString().ToEntero(), Row("Cantidad").ToString().ToDecimal, SubTotalNew, Row("ImporteIEPS").ToString().ToDecimal(), Row("PorcentajeIEPS").ToString().ToDecimal(), IVANew, PorcentajeIVA, 0, DescripcionNew, UsuarioActual.CveUsuario) Then OcurrioError = True End If End If Exit For ' solo debe de tener un detalle por eso se sale index = index + 1 Next End If If Not OcurrioError Then Dim DTPrePoliza As New DataTable If ObjConta.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then DTPrePoliza = ObjConta.DtResultados If DTPrePoliza.Rows.Count = 0 Then OcurrioError = True Alert("No se encontraron datos de prepoliza", TipoMensaje.MsgAdvertencia) End If Else OcurrioError = True End If For Each dRow As DataRow In DTPrePoliza.Rows If Not ObjConta.UpdatePrePolizasDetalle(dRow("CvePrePolizaDetalle").ToString.ToEntero, dRow("Concepto").ToString, dRow("CveSubProyecto").ToString.ToEntero, -1, Boolean.Parse(dRow("TipoMovto").ToString), ImporteMN:=(TotalNew * TC), Importe:=TotalNew, TipoCambio:=TC) Then OcurrioError = True Exit For End If Next End If If ObjConta.ValidacionesPrePoliza(-1, UsuarioActual, Opcion:=2, CveVenta:=CveVentaRemision) Then If ObjConta.ValorPolizaDescuadre > 0 Then If ObjConta.ValorPolizaDescuadre = 2 Then OcurrioError = True Alert(ObjConta.MensajePolizaDescuadre, TipoMensaje.MsgError) End If End If End If Catch ex As Exception OcurrioError = True OnError("Ocurrió un error al actualizar la remisión", ex) End Try If OcurrioError Then 'Alert("Ocurrió un error al guardar los cambios. Por favor intente de nuevo.", TipoMensaje.MsgError) Return False Else ' Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion, JSBtnAceptar:="BtnRefrescarPagina();") Return True End If End Function Protected Sub EliminarContrato(sender As Object, e As EventArgs) Dim ObjContratos As New ClsContratos If (CveContratoTipo = 35) Then If CveMasivo <> 0 Then If ObjContratos.RemoveContrato(CveContrato, UsuarioActual.CveEmpresa, CveMasivo:=CveMasivo) Then Alert("Viajes masivos eliminados correctamente") AgregarABitacora($"Eliminación del contrato {CveContrato}") ObjContratos.Dispose() Response.Redirect("RepViajes.aspx") End If Else If ObjContratos.RemoveContrato(CveContrato, UsuarioActual.CveEmpresa) Then Alert("Viaje eliminado correctamente") AgregarABitacora($"Eliminación de contratos masivos con clave {CveMasivo}") ObjContratos.Dispose() Response.Redirect("RepViajes.aspx") End If End If Else If ObjContratos.RemoveContrato(CveContrato, UsuarioActual.CveEmpresa) Then Alert("Contrato eliminado correctamente") ObjContratos.Dispose() Response.Redirect("RepContratos.aspx") End If End If End Sub Protected Sub ImprimirContrato(sender As Object, e As EventArgs) Dim dtResult As New DataTable() Dim params As New List(Of ReportParameter) From { New ReportParameter("Folio", TxtFolio.Text), New ReportParameter("Cliente", DdlClientes.SelectedText), New ReportParameter("Servicio", TxtDescripcion.Text), New ReportParameter("Observaciones", TxtObservaciones.Text), New ReportParameter("Ubicacion", TxtUbicacion.Text), New ReportParameter("FechaSalida", TxtFechaSalida.Text.ToDate.ToString("dd/MM/yyyy HH:mm tt")), New ReportParameter("FechaRegreso", TxtFechaRegreso.Text.ToDate.ToString("dd/MM/yyyy HH:mm tt")), New ReportParameter("CantidadPasajeros", TxtCantidadPasajeros.Text), New ReportParameter("TipoAF", DdlTipoAF.SelectedItem.ToString()), New ReportParameter("Pesos", TxtImporte.Text.ToDecimal.ToString("###,###,###.00")), New ReportParameter("Moneda", DdlMoneda.SelectedItem.ToString), New ReportParameter("Anticipo", TxtAnticipo.Text.ToDecimal.ToString("###,###,###.00")), New ReportParameter("Total", (TxtImporte.Text.ToDecimal - (TxtAnticipo.Text.ToDecimal)).ToString("###,###,###.00")), New ReportParameter("DiaSalida", TxtFechaSalida.Text.ToDate.ToString("HH:mm tt")), New ReportParameter("TelefonoEmpresa", TelefonoEmpresa), New ReportParameter("FechaImpresion", Date.Now.ToString("dd/MM/yyyy HH:mm:ss")), New ReportParameter("Usuario", UsuarioActual.Nombre) } 'New ReportParameter("Folio", TxtFolio.Text), ' New ReportParameter("Cliente", DdlClientes.SelectedText), ' New ReportParameter("Servicio", TxtDescripcion.Text), ' New ReportParameter("Observaciones", TxtObservaciones.Text), ' New ReportParameter("Ubicacion", TxtUbicacion.Text), ' New ReportParameter("FechaSalida", TxtFechaSalida.Text.ToDate.ToString("dd/MM/yyyy")), ' New ReportParameter("FechaRegreso", TxtFechaRegreso.Text.ToDate.ToString("dd/MM/yyyy")), ' New ReportParameter("CantidadPasajeros", TxtCantidadPasajeros.Text), ' New ReportParameter("TipoAF", DdlTipoAF.SelectedItem.ToString()), ' New ReportParameter("Pesos", Math.Round(TxtImporte.Text.ToDecimal, 2).ToString), ' New ReportParameter("Moneda", DdlMoneda.SelectedItem.ToString), ' New ReportParameter("Anticipo", Math.Round((TxtAnticipo.Text.ToDecimal * TxtImporte.Text.ToDecimal), 2).ToString), ' New ReportParameter("Total", Math.Round((TxtImporte.Text.ToDecimal - (TxtAnticipo.Text.ToDecimal * TxtImporte.Text.ToDecimal)), 2).ToString), ' New ReportParameter("DiaSalida", $"{TxtFechaSalida.Text.ToDate.Hour}:{TxtFechaSalida.Text.ToDate.Minute} "), ' New ReportParameter("TelefonoEmpresa", TelefonoEmpresa), ' New ReportParameter("FechaImpresion", Date.Now.ToString("dd/MM/yyyy HH:mm:ss")), ' New ReportParameter("Usuario", UsuarioActual.Nombre) ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos\Contrato.mrt", dtResult, params, NombreArchivo:=TxtFolio.Text) End Sub Protected Sub AgregarABitacora(Descripcion As String) Dim ObjEventoBitacora As New ClsOIEventos Dim FileExtension As String = "-1" If ObjEventoBitacora.AddEventoBitacora(Descripcion, FileExtension, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then 'Alert("Evento agregado a bitácora correctamente", TipoMensaje.MsgInformacion) End If ObjEventoBitacora.Dispose() End Sub #End Region #Region "Boletos" Protected Sub OnLinkButtonClick(sender As Object, e As EventArgs) 'Limpiamos la selección anterior If AsientoSeleccionado <> "" Then Dim cph As ContentPlaceHolder = CType(Me.Master.FindControl("C"), ContentPlaceHolder) Dim lnk As LinkButton = CType(cph.FindControl(AsientoSeleccionado), LinkButton) lnk.CssClass = "disponible" End If 'Seleccionamos un asiento Dim linkButton As LinkButton = DirectCast(sender, LinkButton) Dim buttonID As String = linkButton.ID linkButton.CssClass += " activo" AsientoSeleccionado = buttonID TxtAsiento.Text = buttonID.Substring(1) UpTabContainer.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "ModalEditar")) End Sub Protected Sub UpdateBoleto(sender As Object, e As EventArgs) If PnEditarViaje.Visible = True Then For Each boleto As DataRow In ViajeActual.Rows If (boleto.Item("Asiento").ToString = TxtAsiento.Text) Then Alert($"El asiento {boleto.Item("Asiento")} ya ha está ocupado", TipoMensaje.MsgAdvertencia) Exit Sub End If Next End If Dim ObjTransportes As New ClsTransportes Try ObjTransportes.IniciaTransacSQL() If ObjTransportes.UpdateViajesPasajeros(CveViajePasajero, DdlRuta.SelectedValue.ToEntero, UsuarioActual.CveVendedor, LbImporte.Text.ToDecimal, TxtAsiento.Text.ToEntero, TxtNombre.Text, TxtVisa.Text, TxtCelular.Text, TxtObservacion.Text, CBool(TxtEstatus.Text), UsuarioActual.CveUsuario, CBool(RblSexo.SelectedValue)) Then ObjTransportes.Commit() End If Catch ex As ArgumentException Alert($"Ocurrió un ocurrió un error al actualizar su boleto", TipoMensaje.MsgError) ObjTransportes.RollBack() Finally Alert("Su asiento fue actualizado correctamente") AgregarABitacora($"Cambio de asiento del pasajero {CveViajePasajero} del asiento al {TxtAsiento.Text} del contrato {CveContrato}") ObjTransportes.Dispose() End Try CargaDatos() RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalEditar")) End Sub Protected Sub OnChangeRuta(sender As Object, e As EventArgs) Dim ObjTransportes As New ClsTransportes If ObjTransportes.GetViajesPasajeros(DdlRuta.SelectedValue.ToEntero) Then BusquedaSeleccionada(ObjTransportes.DtResultados) End If ObjTransportes.Dispose() RegistraScript(String.Format("$('#{0}').modal('show');", "ModalEditar")) End Sub Protected Sub BusquedaSeleccionada(dt As DataTable) 'Limpiamos autobus Dim cph As ContentPlaceHolder = CType(Me.Master.FindControl("C"), ContentPlaceHolder) For i As Integer = 1 To 50 Dim lnk As LinkButton = CType(cph.FindControl($"A{i}"), LinkButton) If lnk IsNot Nothing Then lnk.Enabled = True lnk.CssClass = "disponible" End If Next 'Si la dt DataTable tiene algo llenamos los asientos If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then For Each dr As DataRow In dt.Rows Dim lnk As LinkButton = CType(cph.FindControl($"A{dr("Asiento")}"), LinkButton) If lnk IsNot Nothing Then lnk.Enabled = False lnk.CssClass = "nodisponible" lnk.ToolTip = dr("Nombre").ToString End If Next End If UpTabContainer.Update() ViajeActual = dt End Sub Protected Sub ImprimirBoleto(sender As Object, e As EventArgs) Dim dtResult As New DataTable() Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim Fecha As Date = GvRow.DataKey("FechaIng").ToDate Dim Importe As Decimal = GvRow.DataKey("Importe").ToDecimal Dim params As New List(Of ReportParameter) From { New ReportParameter("Ruta", SubProyecto), New ReportParameter("Origen", GvRow.DataKey("Partida")), New ReportParameter("Destino", GvRow.DataKey("Destino")), New ReportParameter("FechaSalida", Fecha.ToShortDateString()), New ReportParameter("HoraSalida", Fecha.ToString("HH:mm")), New ReportParameter("Nombre", GvRow.DataKey("Nombre")), New ReportParameter("Visa", GvRow.DataKey("Visa")), New ReportParameter("Celular", GvRow.DataKey("Celular")), New ReportParameter("Importe", Math.Round(Importe, 2).ToString), New ReportParameter("TipoBoleto", "Tipo Boleto"), New ReportParameter("Agencia", "Agencia"), New ReportParameter("TelefonoAgencia", "TelefonoAgencia"), New ReportParameter("Asiento", GvRow.DataKey("Asiento")) } ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos\Boleto.mrt", dtResult, params, NombreArchivo:="Boleto") End Sub Protected Sub GvViajesPasajeros_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("BtnImprimir")) End If End Sub Protected Sub EditarBoleto(sender As Object, e As EventArgs) PnEditarUsuario.Visible = True PnEditarViaje.Visible = False PnAsientos.Visible = False Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) CveViajePasajero = GvRow.DataKey("CveViajePasajero").ToEntero DdlRuta.SelectedValue = GvRow.DataKey("CveViaje") LbPartida.Text = GvRow.DataKey("Partida").ToString() LbDestino.Text = GvRow.DataKey("Destino").ToString() LbImporte.Text = Convert.ToDecimal(GvRow.DataKey("Importe")).ToString("C") TxtNombre.Text = GvRow.DataKey("Nombre").ToString() TxtVisa.Text = GvRow.DataKey("Visa").ToString() TxtCelular.Text = GvRow.DataKey("Celular").ToString() RblSexo.SelectedValue = If(CBool(GvRow.DataKey("Sexo").ToString), "1", "0") TxtObservacion.Text = GvRow.DataKey("Observacion").ToString() LbEstatus.Text = If(CBool(GvRow.DataKey("Estatus").ToString), "Activo", "Cancelado") TxtEstatus.Text = GvRow.DataKey("Estatus").ToString LbEstatus.CssClass = If(CBool(GvRow.DataKey("Estatus").ToString), "text-success bold", "text-danger bold") TxtAsiento.Text = GvRow.DataKey("Asiento").ToString() UpTabContainer.Update() UpModal.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "ModalEditar")) End Sub Protected Sub CambiarBoleto(sender As Object, e As EventArgs) PnEditarViaje.Visible = True PnEditarUsuario.Visible = False PnAsientos.Visible = True Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) CveViajePasajero = GvRow.DataKey("CveViajePasajero").ToEntero LbPartida.Text = GvRow.DataKey("Partida").ToString() LbDestino.Text = GvRow.DataKey("Destino").ToString() LbImporte.Text = Convert.ToDecimal(GvRow.DataKey("Importe")).ToString("C") TxtNombre.Text = GvRow.DataKey("Nombre").ToString() TxtVisa.Text = GvRow.DataKey("Visa").ToString() TxtCelular.Text = GvRow.DataKey("Celular").ToString() RblSexo.SelectedValue = If(CBool(GvRow.DataKey("Sexo").ToString), "1", "0") TxtObservacion.Text = GvRow.DataKey("Observacion").ToString() LbEstatus.Text = GvRow.DataKey("Estatus").ToString() LbCreado.Text = GvRow.DataKey("FechaIng").ToString() TxtAsiento.Text = GvRow.DataKey("Asiento").ToString() 'Seleccionamos la ruta que tiene el usuario actual DdlRuta.ClearSelection() Dim ObjContratos As New ClsContratos If ObjContratos.GetContratosReporte(UsuarioActual.CveEmpresa, MinFecha, MaxFecha, -1, CveEstatus:=-1, CveTipoContrato:=35) Then For Each row As DataRow In ObjContratos.DtResultados.Rows Dim fecha As DateTime = row("FechaInicial").ToString.ToDateTime 'Asigna los valores de la columna deseada al ListItem Dim listItem As New ListItem(row("SubProyecto").ToString() + " - " + fecha.ToShortDateString + " - " + fecha.ToShortTimeString, row("CveContrato").ToString()) 'Agrega el ListItem al DropDownList DdlRuta.Items.Add(listItem) Next End If DdlRuta.SelectedValue = GvRow.DataKey("CveViaje") ObjContratos.Dispose() UpTabContainer.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "ModalEditar")) End Sub Protected Sub BtnCancelar_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) CveViajePasajero = GvRow.DataKey("CveViajePasajero").ToEntero LbPartida.Text = GvRow.DataKey("Partida").ToString() LbDestino.Text = GvRow.DataKey("Destino").ToString() LbImporte.Text = Convert.ToDecimal(GvRow.DataKey("Importe")).ToString("C") TxtNombre.Text = GvRow.DataKey("Nombre").ToString() TxtVisa.Text = GvRow.DataKey("Visa").ToString() TxtCelular.Text = GvRow.DataKey("Celular").ToString() RblSexo.SelectedValue = If(CBool(GvRow.DataKey("Sexo").ToString), "1", "0") TxtObservacion.Text = GvRow.DataKey("Observacion").ToString() TxtEstatus.Text = GvRow.DataKey("Estatus").ToString() LbCreado.Text = GvRow.DataKey("FechaIng").ToString() TxtAsiento.Text = GvRow.DataKey("Asiento").ToString() Dim Estatus As Boolean = Not CBool(TxtEstatus.Text) Dim ObjTransportes As New ClsTransportes Try ObjTransportes.IniciaTransacSQL() If ObjTransportes.UpdateViajesPasajeros(CveViajePasajero, CveContrato, UsuarioActual.CveVendedor, LbImporte.Text.ToDecimal, TxtAsiento.Text.ToEntero, TxtNombre.Text, TxtVisa.Text, TxtCelular.Text, TxtObservacion.Text, Estatus, UsuarioActual.CveUsuario, CBool(RblSexo.SelectedValue)) Then Alert("Se ha modificado el estatus de su boleto correctamente.") ObjTransportes.Commit() End If Catch ex As Exception ObjTransportes.RollBack() Alert($"No se pudo cambiar el estatus del boleto", TipoMensaje.MsgError) Finally ObjTransportes.Dispose() Dim toggleEstatus As String If CBool(RblSexo.SelectedValue) Then toggleEstatus = "Cancelación" Else toggleEstatus = "Reactivación" End If AgregarABitacora($"{toggleEstatus} del asiento {TxtAsiento.Text} del viaje {CveContrato} con clave de pasajero {CveViajePasajero}") CargaDatos() End Try UpPasajeros.Update() End Sub #End Region #Region "Bitacora historial" Private Sub CargaGvBitacora() ' COMENTADO POR IPP PARA SUBIR 5 ABRIL 2017 If CveContrato > 0 Then Dim ObjGral As New ClsGenerales() If ObjGral.GetHistorialBitacora(-1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then GvBitacora.DataSource = ObjGral.DtResultados End If ObjGral.Dispose() End If GvBitacora.DataBind() End Sub #End Region #Region "PAGOS" Private Sub CargaAuxiliarClienteCxC(CveCliente As Integer, CveRemision As Integer) If CveRemision > 0 Then Dim ObjMovtos As New ClsMovimientos() If ObjMovtos.GetCxCClienteAuxiliar(CveCliente, CveRemision) Then Dim dtTemp As New DataTable dtTemp = ObjMovtos.DtResultados.FiltraParametros(" Conceptocontable = 'Pago del Cliente' ") TotalPagos = dtTemp.SUM("Abono") GVAuxiliar.DataSource = dtTemp Else GVAuxiliar.DataSource = Nothing End If ObjMovtos.Dispose() GVAuxiliar.DataBind() UpPagos.Update() End If End Sub Protected Sub GVAuxiliar_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DataKey("TipoReferencia").ToEntero = 1 Then e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Bancos/IE.aspx?CveIE={e.Row.DataKey("CveReferencia").ToEntero}" End If End If If e.Row.RowType = DataControlRowType.Footer Then e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Right e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Right e.Row.Cells(1).Text = "Total" e.Row.FCLabel("Lbltotal").Text = TotalPagos.ToString("###,###,###.00") End If End Sub #End Region End Class