Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class Compras_RepRembolsoComprobaciones Inherits ClsPaginas #Region "Propiedades" Private ReadOnly Property CveCajaChica As Integer Get Return ViewState("CveCajaChica").ToString.ToEntero End Get End Property Private ReadOnly Property CvePersonal As Integer Get Return ViewState("CvePersonal").ToString.ToEntero End Get End Property Private Property CveMoneda As Integer Get Return ViewState("CveMoneda").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMoneda") = value End Set End Property Private Property IdCuentaBancaria As Integer Get Return ViewState("IdCuentaBancaria").ToString.ToEntero End Get Set(value As Integer) ViewState("IdCuentaBancaria") = value End Set End Property Private Property NumeroReembolso As String Get NumeroReembolso = ViewState("NumeroReembolso").ToString End Get Set(value As String) ViewState("NumeroReembolso") = value End Set End Property Private Property DtDatos As DataTable Get DtDatos = DirectCast(ViewState("DtDatos"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtDatos") = value End Set End Property Private Property DtCheques As DataTable Get Return CType(ViewState("DtCheques"), DataTable) End Get Set(value As DataTable) ViewState("DtCheques") = value End Set End Property #End Region Private Sub Compras_RepRembolsoComprobaciones_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then ViewState("CveMoneda") = 1 'Cargar Filtros Dim dt As DataTable = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa) dt = dt.FiltraParametros(String.Format("CveTipoCuenta = 1")) 'caja chica = 1 DdlCajaChica.DataSource = dt DdlCajaChica.DataBind() Dim ObjPersonal As New ClsRH ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa) DdlPersonal.DataSource = ObjPersonal.DtResultados ObjPersonal.Dispose() DdlPersonal.DataBind() End If End Sub Protected Sub DdlTipoPago_SelectedIndexChanged(sender As Object, e As EventArgs) ViewState("CveCajaChica") = -1 ViewState("CvePersonal") = -1 LtTituloPago.Text = "" If DdlTipoPago.SelectedValue = "1" Then 'personal DdlPersonal.Visible = True DdlPersonal.SelectedValue = "-1" LtTituloPago.Text = "F / E:" DdlCajaChica.Visible = False DdlCajaChica.SelectedValue = "-1" 'Valida Proceso 120 para ROL Administrador de obra - para FyE solo puede ver los del UsuarioActual If UsuarioActual.TienePermisoProceso(120) Then If UsuarioActual.CvePersonal > 0 Then DdlPersonal.SelectedValue = UsuarioActual.CvePersonal.ToString ViewState("CvePersonal") = UsuarioActual.CvePersonal End If DdlPersonal.Enabled = False End If ElseIf DdlTipoPago.SelectedValue = "2" Then ' caja chica DdlCajaChica.Visible = True DdlCajaChica.SelectedValue = "-1" LtTituloPago.Text = "Caja Chica:" DdlPersonal.Visible = False DdlPersonal.SelectedValue = "-1" End If End Sub Protected Sub DdlPersonal_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonal.SelectedIndexChanged ViewState("CvePersonal") = DdlPersonal.SelectedValue End Sub Protected Sub DdlCajaChica_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCajaChica.SelectedIndexChanged ViewState("CveCajaChica") = DdlCajaChica.SelectedValue End Sub Protected Sub GvCxP_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCxP.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.BackColor = Drawing.Color.LightGray End If e.Row.Cells(5).HorizontalAlign = HorizontalAlign.Right e.Row.Cells(6).HorizontalAlign = HorizontalAlign.Right e.Row.Cells(7).HorizontalAlign = HorizontalAlign.Right If e.Row.DBCampo("Saldo").ToDouble < 0 Then e.Row.Cells(7).ForeColor = Drawing.Color.Red If e.Row.DBCampo("DiasVencidos").ToDouble > 0 AndAlso CType(sender, GridView).ID = "GvCxP" Then e.Row.Cells(5).ForeColor = Drawing.Color.Red If e.Row.DBCampo("Original").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlSaldoOriginal"), Literal).Text = "" If e.Row.DBCampo("Abonado").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlAbonado"), Literal).Text = "" If e.Row.DBCampo("Saldo").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlSaldo"), Literal).Text = "" If Not e.Row.DBCampo("IdPoliza").ToEntero > 0 Then e.Row.Cells(13).Text = "" End If End Sub Private Sub LbkUnificar_Click(sender As Object, e As EventArgs) Handles LbkUnificar.Click Dim ObjComp As New ClsCompras() Dim ObjMov As New ClsContabilidad(ObjComp.IniciaTransacSQL) Dim ObjAC As ClsContPAQi = Nothing Dim TieneError = False Dim CvePrePoliza As Integer = 0 Dim IdPoliza As Integer = 0 Dim Msg As New StringBuilder Try CvePrePoliza = ObjMov.AddPrePolizas("Compras/Registrar", 1, DtDatos(0)("Original").ToString.ToDecimal, DtDatos(0)("Original").ToString.ToDecimal, CveMoneda, TxtFechaUnificacion.Text.Trim.ToDate(), TxtConcepto.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) If CvePrePoliza > 0 AndAlso DdlPersonal.SelectedValue.ToEntero > 0 Then If Not ObjComp.UnificarComprasPersonal(CvePrePoliza, DdlPersonal.SelectedValue.ToEntero, -1, TxtNumeroReembolso.Text, UsuarioActual.CveEmpresa) Then TieneError = True End If Else If CvePrePoliza > 0 AndAlso DdlCajaChica.SelectedValue.ToEntero > 0 Then If Not ObjComp.UnificarComprasPersonal(CvePrePoliza, -1, DdlCajaChica.SelectedValue.ToEntero, TxtNumeroReembolso.Text, UsuarioActual.CveEmpresa) Then TieneError = True End If Else TieneError = True End If End If If ObjMov.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then If ObjMov.ValorPolizaDescuadre > 0 Then GuardaLogAD($"Compras/RepRembolsoComprobaciones - Unificar | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") Alert(ObjMov.MensajePolizaDescuadre, TipoMensaje.MsgError) TieneError = True End If End If If Not TieneError Then Msg.AppendFormat("Se unificaron todas las compras con éxito") End If If UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" AndAlso Not TieneError Then ObjAC = New ClsContPAQi(UsuarioActual.Empresa) ObjAC.IniciaTransacSQL() If Not TieneError Then If Not ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then TieneError = True Alert($"Ocurrio un error al contabilizar {ObjMov.AlertaMensaje}", TipoMensaje.MsgAdvertencia) Else IdPoliza = ObjMov.ContaIdPoliza End If End If If IdPoliza > 0 AndAlso Not TieneError Then Msg.AppendFormat("

Ver Póliza", IdPoliza) End If End If Catch ex As Exception TieneError = True OnError("Ocurrió un error al unificar las compras", ex) End Try If Not TieneError Then ObjComp.Commit() If ObjAC IsNot Nothing Then ObjAC.Commit() Alert(Msg.ToString, TipoMensaje.MsgInformacion) Else ObjComp.RollBack() If ObjAC IsNot Nothing Then ObjAC.RollBack() Alert("Ocurrió un error al unificar las compras", TipoMensaje.MsgAdvertencia) End If ObjComp.Dispose() ObjMov.Dispose() If ObjAC IsNot Nothing Then ObjAC.Dispose() End Sub #Region " CARGA DATOS " Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click CargaDatos() UPFiltros.Update() End Sub Protected Sub CargaDatos() Dim ObjMovtos As New ClsMovimientos GvCxP.Visible = True Dim FechaI As DateTime = If(String.IsNullOrEmpty(txtFechaI.Text.Trim()), ModExtensiones.MinFecha, txtFechaI.Text.ToDateTime()) Dim FechaF As DateTime = If(String.IsNullOrEmpty(txtFechaF.Text.Trim()), ModExtensiones.MaxFecha, txtFechaF.Text.ToDateTime()) If DdlTipoPago.SelectedValue = "1" Then ViewState("CveCajaChica") = -2 If DdlTipoPago.SelectedValue = "2" Then ViewState("CvePersonal") = -2 ObjMovtos.GetCxPPersonalCajaChica(UsuarioActual.CveEmpresa, CvePersonal, CveCajaChica, If(TxtNumeroReembolso.Text.Trim = "", "-1", TxtNumeroReembolso.Text.Trim), FechaI:=FechaI, FechaF:=FechaF, OpcionSaldo:=-1) DtDatos = ObjMovtos.DtResultados GvCxP.DataSource = DtDatos 'cargo si tiene cheques pendientes sin amortizar If CvePersonal > 0 Then If DtDatos.Rows.Count > 0 AndAlso TxtNumeroReembolso.Text.Trim <> "" Then TxtConcepto.Text = $"{DdlPersonal.SelectedItem} R#{TxtNumeroReembolso.Text} ${DtDatos(0)("Original").ToString.FormatoNumero}" If UsuarioActual.CveEmpresa = 119 Then divUnificar.Visible = True If DtDatos.Rows.Count > 1 Then TxtFechaUnificacion.Text = DtDatos(1)("FechaCompra").ToString.ToDate.ToShortDateString End If CargaEgresosSinComprobar() Else If UsuarioActual.CveEmpresa = 119 Then divUnificar.Visible = False End If 'ObjMovtos.GetEgresosSinComprobarPersonalDetalle(CvePersonal, UsuarioActual.CveEmpresa) Else If UsuarioActual.CveEmpresa = 119 Then divUnificar.Visible = True If DtDatos.Rows.Count > 1 Then TxtFechaUnificacion.Text = DtDatos(1)("FechaCompra").ToString.ToDate.ToShortDateString End If If UsuarioActual.CveEmpresa = 119 AndAlso CveCajaChica > 0 AndAlso DtDatos.Rows.Count > 0 AndAlso TxtNumeroReembolso.Text.Trim <> "" Then TxtConcepto.Text = $"{DdlCajaChica.SelectedItem} R#{TxtNumeroReembolso.Text} ${DtDatos(0)("Original").ToString.FormatoNumero}" divUnificar.Visible = True End If End If ObjMovtos.Dispose() GvCxP.DataBind() LnkImprimir.Visible = True NumeroReembolso = TxtNumeroReembolso.Text If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then If NumeroReembolso <> "" AndAlso CvePersonal > 0 AndAlso DtDatos.MAX("CvePrePolizaComprobacionSinBancos").ToEntero > 0 Then DivVincularEgreso.Visible = True Else DivVincularEgreso.Visible = False End If If DtDatos.MAX("IdPoliza").ToEntero > 0 Then LbkUnificar.Visible = False Else LbkUnificar.Visible = True End If End If UpAcciones.Update() UPCompras.Update() End Sub #End Region #Region "PDF" Protected Sub LnkImprimir_Click(sender As Object, e As EventArgs) Handles LnkImprimir.Click Imprimir("PDF") End Sub Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click Imprimir("EXCEL") End Sub Private Sub Imprimir(Formato As String) Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos\Reembolso.rdlc", UsuarioActual.Empresa.Ruta)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}Logo.png", UsuarioActual.Empresa.Ruta)) Dim params As New List(Of ReportParameter) If Archivo.Exists Then params.Add(New ReportParameter("Numero", NumeroReembolso)) params.Add(New ReportParameter("Anio", DtDatos.FiltraParametros("CveCompra > 0").MAX("Fecha").ToDate.Year.ToString)) params.Add(New ReportParameter("Nombre", DtDatos.MAX("SubProyecto"))) params.Add(New ReportParameter("Fecha", Now.Date.ToString)) params.Add(New ReportParameter("Elaboro", "")) params.Add(New ReportParameter("Autorizo", "")) params.Add(New ReportParameter("ElaboroPuesto", "")) params.Add(New ReportParameter("AutorizoPuesto", "")) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToString)) params.Add(New ReportParameter("CveCajaChica", DtDatos.Rows(0)("CveCajaChica").ToString)) params.Add(New ReportParameter("CveFyE", "0")) ' params.Add(New ReportParameter("cuentaRetiro", "Cuenta retiro: " & "")) params.Add(New ReportParameter("CajaChica", "Caja chica: " & "")) params.Add(New ReportParameter("observaciones", "Observaciones: " & "")) params.Add(New ReportParameter("folio", DtDatos.Rows(0)("Folio").ToString)) params.Add(New ReportParameter("fecha", "")) params.Add(New ReportParameter("importe", "")) params.Add(New ReportParameter("TotAbono", DtDatos.SUM("Abonado").ToString)) ImprimirPDF(String.Format("{0}Formatos\Reembolso.rdlc", UsuarioActual.Empresa.Ruta), DtDatos.FiltraParametros("CveCompra > 0"), params, "Reembolso", RDSName:="DsCompras") Else params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToString)) params.Add(New ReportParameter("FechaInicio", txtFechaI.Text)) params.Add(New ReportParameter("FechaFin", txtFechaF.Text)) params.Add(New ReportParameter("CajaChica", If(DdlCajaChica.SelectedValue.ToEntero > 0, "Caja chica: " & DdlCajaChica.SelectedItem.Text, "Funcionario/Empleado: " & DdlPersonal.SelectedItem.Text))) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) ImprimirPDF("Empresas/Grales/Formatos/RepRembolsosComprobaciones.rdlc", DtDatos, params, "RepRembolsosComprobaciones", Formato:=Formato) End If End Sub #End Region Private Sub CargaEgresosSinComprobar() If CvePersonal > 0 Then DdlCheque.Items.Clear() Dim ObjMov As New ClsMovimientos If ObjMov.GetEgresosSinComprobarPersonalDetalle(CvePersonal, UsuarioActual.CveEmpresa) Then DdlCheque.DataSource = ObjMov.DtResultados.FiltraParametros("CveIE > 0", "FechaDocumento, FolioFecha") DdlCheque.Items.Insert(0, New ListItem("Seleccione", "-1")) End If ObjMov.Dispose() DdlCheque.DataBind() UPCompras.Update() End If End Sub Protected Sub BtnVincularEgreso_Click(sender As Object, e As EventArgs) If Not DdlCheque.SelectedValue.ToEntero > 0 Then Alert("Tiene que tener seleccionado un egreso sin comprobar", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjIE As New ClsBancos If ObjIE.UpdateComprobacionSinBancos(DdlCheque.SelectedValue.ToEntero, DtDatos.MAX("CvePrePolizaComprobacionSinBancos").ToEntero, CvePersonal, UsuarioActual.CveEmpresa) Then Alert("Vinculado correctamente") DdlCheque.SelectedIndex = 0 CargaEgresosSinComprobar() End If ObjIE.Dispose() End Sub End Class