Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class Compras_RepCompras Inherits ClsPaginas #Region "PROPIEDADES" Private Property Personalizo As Integer Get Return ViewState("Personalizo").ToString.ToEntero End Get Set(value As Integer) ViewState("Personalizo") = value End Set End Property Private Property TCEspecifico As Double Get If ViewState("TCEspecifico") Is Nothing Then Return -1 Else Return DirectCast(ViewState("TCEspecifico"), Double) End If End Get Set(value As Double) ViewState("TCEspecifico") = value End Set End Property Private Property DtCompras As DataTable Get Return DirectCast(ViewState("DtCompras"), DataTable) End Get Set(value As DataTable) ViewState("DtCompras") = value End Set End Property Private Property Agrupador As String Get Return ViewState("Agrupador").ToString End Get Set(value As String) ViewState("Agrupador") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Personalizo = 0 CargaCombos() End If End Sub #Region "CARGAS" Private Sub CargaGrupo() DdlGrupo.Items.Insert(0, New ListItem("Año", "1")) DdlGrupo.Items.Insert(1, New ListItem("Mes", "2")) DdlGrupo.Items.Insert(2, New ListItem("Año/Mes", "3")) DdlGrupo.Items.Insert(3, New ListItem("Fecha", "4")) DdlGrupo.Items.Insert(4, New ListItem("Fecha Captura", "9")) DdlGrupo.Items.Insert(5, New ListItem("Proveedor", "5")) DdlGrupo.Items.Insert(6, New ListItem("Tipo Documento", "6")) DdlGrupo.Items.Insert(7, New ListItem("Clasificación Prov.", "7")) DdlGrupo.Items.Insert(8, New ListItem("Responsable", "8")) DdlGrupo.Items.Insert(9, New ListItem("Remesa", "10")) If UsuarioActual.Empresa.Funcionalidad(307) <> "" Then DdlGrupo.Items.Insert(10, New ListItem(UsuarioActual.Empresa.Funcionalidad(307), "13")) DdlGrupo.DataBind() DdlGrupo.SelectedValueExist("3") End Sub Private Sub CargaCombos() txtFechaI.Text = $"01/01/{NowADS().Year}" 'Carga Tipo Centro de Costo CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto, VisualizacionReporte:=1) 'CargaProveedores DdlProveedores.setEsWebService(True) DdlProveedores.Attributes.Add("data-metodo", "getproveedores") DdlProveedores.SelectedText = "Todos" DdlProveedores.SelectedValue = "-1" 'Carga Tipo de Gasto DdlTipoGasto.DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa) DdlTipoGasto.DataBind() 'CargaUsuarios DdlUsuario.DataSource = GlobalDTUsuarioResponsable(UsuarioActual.CveEmpresa) DdlUsuario.DataBind() 'Carga Usuarios Captura DDlUsuarioCaptura.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) DDlUsuarioCaptura.DataBind() 'Carga Monedas DdlMonedas.DataSource = GlobalDTMonedas() DdlMonedas.DataBind() 'Carga Grupo CargaGrupo() End Sub Private Sub ConfiguraEmpresa() ChkIVA.Checked = True If Not UsuarioActual.Empresa.MostrarRetIVA Then GvDatos.Columns(7).Visible = False If Not UsuarioActual.Empresa.MostrarRetISR Then GvDatos.Columns(8).Visible = False End Sub #End Region #Region "SELECTED INDEX CHANGE" Protected Sub DdlProyecto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProyecto.SelectedIndexChanged CargarSubProyecto(DdlSubProyecto, DdlProyecto.SelectedValue) End Sub Private Sub RblTipoCambio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RblTipoCambio.SelectedIndexChanged If RblTipoCambio.SelectedValue.ToEntero = 3 Then Dim TipoCambio As Double LiEspecifico.Visible = True TipoCambio = GlobalTipoCambio(NowADS()) TxtEspecifico.Text = TipoCambio.ToString Else LiEspecifico.Visible = False End If UpBodyTipoCambio.Update() End Sub #End Region #Region "CONSULTAR" Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click CargaDatos() ConfiguraEmpresa() UPDatos.Update() UPPersonalizar.Update() End Sub Protected Sub BtnTipoCambio_Click(sender As Object, e As EventArgs) CargaDatos() ConfiguraEmpresa() UPDatos.Update() UPPersonalizar.Update() End Sub Private Sub CargaDatos() Dim ObjCompras As New ClsCompras() Dim FechaI, FechaF As String FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1") FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1") If RblTipoCambio.SelectedValue.ToEntero = 3 And TxtEspecifico.Text <> "" Then TCEspecifico = TxtEspecifico.Text.ToDouble Else TCEspecifico = -1 End If Dim FechaICaptura, FechaFCaptura As String FechaICaptura = If(IsDate(TxtFechaICaptura.Text.Trim()), TxtFechaICaptura.Text.Trim(), "-1") FechaFCaptura = If(IsDate(TxtFechaFCaptura.Text.Trim()), TxtFechaFCaptura.Text.Trim(), "-1") Dim SubProyectos As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString Dim TipoGasto As String = IIf(DdlTipoGasto.GetSelectedValuesM = "", "-1", DdlTipoGasto.GetSelectedValuesM).ToString If ObjCompras.GetRepCompras(FechaI, FechaF, DdlProveedores.SelectedValue.ToEntero, DdlUsuario.SelectedValue.ToEntero, DDlUsuarioCaptura.SelectedValue.ToEntero, FechaICaptura, FechaFCaptura, DdlMonedas.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, SubProyectos, RblTipoCambio.SelectedValue.ToEntero, TCEspecifico, TipoGasto, CveUsuarioConsulta:=UsuarioActual.CveUsuario, CveProyecto:=DdlProyecto.SelectedValue.ToEntero, CveTipoProveedor:=DdlTipoProveedor.SelectedValue.ToEntero, TipoDocto:=DdlTipoDocto.SelectedValue) Then GvDatos.DataSource = ObjCompras.DtResultados DtCompras = ObjCompras.DtResultados Else GvDatos.DataSource = Nothing End If ObjCompras.Dispose() GvDatos.DataBind() Agrupador = DdlGrupo.SelectedItem.Text End Sub #End Region #Region "GRIDVIEW" Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim Css As String = "Texto" If e.Row.RowIndex = 0 Then e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Center e.Row.Cells(0).Width = Unit.Pixel(200) e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Center e.Row.Cells(1).Width = Unit.Pixel(60) e.Row.Cells(2).Width = Unit.Pixel(90) e.Row.Cells(3).Width = Unit.Pixel(90) e.Row.Cells(4).Width = Unit.Pixel(90) e.Row.Cells(5).Width = Unit.Pixel(80) e.Row.Cells(8).Width = Unit.Pixel(100) End If If e.Row.DBCampo("Orden") = "" Then e.Row.CssClass = "Totales" e.Row.HorizontalAlign = HorizontalAlign.Center End If Dim FechaI, FechaF As String FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1") FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1") Dim Liga As String = String.Format("/Compras/RepComprasDetalle.aspx?GPO={0}&Anio={1}&Mes={2}&AnioMes={3}&Fecha={4}&CveProveedor={5}&CveUsuario={6}&FechaI={7}&FechaF={8}&CveMoneda={9}&CveUsuarioCaptura={10}&NumeroRemesa={11}&FechaICaptura={12}&FechaFCaptura={13}&FechaCaptura={14}&CveSubProyecto={15}&CveUsuarioRemesa={16}&TipoDocto={17}&CveTipoGasto={18}&CveProyecto={19}&CveTipoProveedor={20}&TipoCambio={21}", DdlGrupo.SelectedValue, e.Row.DBCampo("Anio"), e.Row.DBCampo("Mes"), e.Row.DBCampo("AnioMes"), e.Row.DBCampo("Fecha"), e.Row.DBCampo("CveProveedor"), e.Row.DBCampo("CveUsuario"), FechaI, FechaF, e.Row.DBCampo("CveMoneda"), e.Row.DBCampo("CveUsuarioCaptura"), e.Row.DBCampo("NumeroRemesa"), e.Row.DBCampo("FechaICaptura"), e.Row.DBCampo("FechaFCaptura"), e.Row.DBCampo("FechaCaptura"), e.Row.DBCampo("CveSubProyecto"), e.Row.DBCampo("CveUsuarioRemesa"), e.Row.DBCampo("TipoDocto"), e.Row.DBCampo("CveTipoGasto"), e.Row.DBCampo("CveProyecto"), e.Row.DBCampo("CveTipoProveedor"), e.Row.DBCampo("OpcionTipoCambio")) If e.Row.DBCampo("Orden") = "" Then e.Row.FCLiteral("LtlGrupo").Text = e.Row.FCLiteral("LtlGrupo").Text Else e.Row.FCLiteral("LtlGrupo").Text = String.Format("{2}", Css, Liga, e.Row.FCLiteral("LtlGrupo").Text) End If e.Row.FCLiteral("LtlCantidad").Text = String.Format("{2}", Css, Liga, e.Row.FCLiteral("LtlCantidad").Text) If e.Row.DBCampo("SubTotal").ToDouble = 0 Then e.Row.FCLiteral("LtlSubTotal").Text = "" If e.Row.DBCampo("Descuento").ToDouble = 0 Then e.Row.FCLiteral("LtlDescuento").Text = "" If e.Row.DBCampo("Amortizacion").ToDouble = 0 Then e.Row.FCLiteral("LtlAmortizacion").Text = "" If e.Row.DBCampo("IVA").ToDouble = 0 Then e.Row.FCLiteral("LtlIVA").Text = "" If e.Row.DBCampo("RetIVA").ToDouble = 0 Then e.Row.FCLiteral("LtlRetIVA").Text = "" If e.Row.DBCampo("RetISR").ToDouble = 0 Then e.Row.FCLiteral("LtlRetISR").Text = "" If e.Row.DBCampo("Total").ToDouble = 0 Then e.Row.FCLiteral("LtlTotal").Text = "" If e.Row.DBCampo("MAX_SubTotal").ToDouble = 0 Then e.Row.FCLiteral("LtlMaxSubTotal").Text = "" If e.Row.DBCampo("AVG_SubTotal").ToDouble = 0 Then e.Row.FCLiteral("LtlAVGSubTotal").Text = "" If e.Row.DBCampo("MIN_SubTotal").ToDouble = 0 Then e.Row.FCLiteral("LtlMinSubTotal").Text = "" If e.Row.DBCampo("MAX_Total").ToDouble = 0 Then e.Row.FCLiteral("LtlMaxTotal").Text = "" If e.Row.DBCampo("AVG_Total").ToDouble = 0 Then e.Row.FCLiteral("LtlAVGTotal").Text = "" If e.Row.DBCampo("MIN_Total").ToDouble = 0 Then e.Row.FCLiteral("LtlMinTotal").Text = "" End If End Sub #End Region #Region "PERSONALIZAR" Protected Sub BtnPersonalizar_Click(sender As Object, e As System.EventArgs) Handles BtnPersonalizar.Click If ChkIVA.Checked Then GvDatos.Columns(5).Visible = True Else GvDatos.Columns(5).Visible = False End If If ChkIEPS.Checked Then GvDatos.Columns(6).Visible = True Else GvDatos.Columns(6).Visible = False End If If ChkRetIVA.Checked Then GvDatos.Columns(7).Visible = True Else GvDatos.Columns(7).Visible = False End If If ChkRetISR.Checked Then GvDatos.Columns(8).Visible = True Else GvDatos.Columns(8).Visible = False End If If ChkMinSub.Checked Then GvDatos.Columns(10).Visible = True Else GvDatos.Columns(10).Visible = False End If If ChkAVGSub.Checked Then GvDatos.Columns(11).Visible = True Else GvDatos.Columns(11).Visible = False End If If ChkMaxSub.Checked Then GvDatos.Columns(12).Visible = True Else GvDatos.Columns(12).Visible = False End If If ChkMinTot.Checked Then GvDatos.Columns(13).Visible = True Else GvDatos.Columns(13).Visible = False End If If ChkAvgTot.Checked Then GvDatos.Columns(14).Visible = True Else GvDatos.Columns(14).Visible = False End If If ChkMaxTot.Checked Then GvDatos.Columns(15).Visible = True Else GvDatos.Columns(15).Visible = False End If Personalizo = 1 If Personalizo = 1 Then ImgExcelPersonalizado.Visible = True Else ImgExcelPersonalizado.Visible = False End If UppAcciones.Update() UPDatos.Update() End Sub #End Region #Region "I M P R I M I R" Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click GvDatos.ExportToExcel("ReporteCompras" & NowADS().ToShortDateString) End Sub Private Sub GenerarPDF() Dim FechaI = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", "-1", txtFechaI.Text) Dim FechaF = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", "-1", txtFechaF.Text) Dim Proveedor = If(DdlProveedores.SelectedValue = "-1", "", $" Proveedor: {DdlProveedores.SelectedText}") Dim Capturo = If(DDlUsuarioCaptura.SelectedValue = "-1", "", $" Capturó: {DDlUsuarioCaptura.SelectedItem.Text}") Dim Grupo = DdlGrupo.SelectedItem.Text Dim Moneda = If(DdlMonedas.SelectedValue = "-1", "", $" Monedas: {DdlMonedas.SelectedItem.Text}") Dim FechaIn As String = $" Fecha Inicio: {txtFechaI.Text}" Dim FechaFn As String = $" Fecha Fin: {txtFechaF.Text}" If txtFechaI.Text = "" Then FechaIn = "" If txtFechaF.Text = "" Then FechaFn = "" Dim Proyecto = If(DdlProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlProyecto.SelectedItem.Text}") Dim SubProyecto = If(DdlSubProyecto.GetSelectedText = "", "", $" SubProyecto: {DdlSubProyecto.GetSelectedText}") Dim FechaICaptura = If(TxtFechaICaptura.Text = "" Or TxtFechaICaptura.Text = "__/__/____", "", $" Fecha Inicio Captura: {TxtFechaICaptura.Text}") Dim FechaFCaptura = If(TxtFechaFCaptura.Text = "" Or TxtFechaFCaptura.Text = "__/__/____", "", $" Fecha Fin Captura: {TxtFechaFCaptura.Text}") Dim TipoGasto = If(DdlTipoGasto.GetSelectedText = "", "", $" Tipo Gasto: {DdlTipoGasto.GetSelectedText}") Dim TipoProveedor = If(DdlTipoProveedor.SelectedValue = "-1", "", $" Tipo de Proveedor: {DdlTipoProveedor.SelectedItem.Text}") Dim TipoDocto = If(DdlTipoDocto.SelectedValue = "-1", "", $" Tipo de Documento: {DdlTipoDocto.SelectedItem.Text}") If DtCompras IsNot Nothing AndAlso DtCompras.Rows.Count > 0 Then Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png") Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("FechaInicio", FechaI)) params.Add(New ReportParameter("FechaFin", FechaF)) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", NowADS().ToString)) params.Add(New ReportParameter("AgrupadoPor", $"Agrupado Por: {Grupo}{Proveedor}{Capturo}{Moneda}{FechaIn}{FechaFn}{Proyecto}{SubProyecto}{TipoGasto}{TipoProveedor}{FechaICaptura}{FechaFCaptura}{TipoDocto}")) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) ImprimirPDF("Empresas/Grales/Formatos/RepCompras.rdlc", DtCompras, params, "ReporteCompras") Else Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) End If End Sub Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click GenerarPDF() End Sub #End Region #Region "GRAFICA" Protected Sub LnkVerGrafica_Click(sender As Object, e As EventArgs) If Not DtCompras IsNot Nothing AndAlso DtCompras.Rows.Count > 0 Then Alert("No hay datos disponibles", TipoMensaje.MsgAdvertencia) Exit Sub End If LblTituloGrafica.Text = $"Agrupado por: {Agrupador}" RegistraScript("$('#DivModalGrafica').modal('show')") CambioGrafica() End Sub Private Sub CambioGrafica() Dim Dt As New DataTable() Dt.Columns.Add("Texto") Dt.Columns.Add("Valor") Dt.Columns.Add("Color") Dt.Columns.Add("Moneda") Dim RowColorIndex As Integer = 0 For Each Dr As DataRow In DtCompras.Rows If Not Dr("Orden").ToString = "" Then Dim Row As DataRow = Nothing Row = Dt.NewRow() Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" Select Case DdlVer.SelectedValue.ToEntero Case 1 Row("Valor") = Dr("Total").ToString.FormatoNumero Case 2 Row("Valor") = Dr("SubTotal").ToString.FormatoNumero Case 3 Row("Valor") = Dr("IVA").ToString.FormatoNumero End Select Row("Color") = Colors(RowColorIndex) Row("Moneda") = Dr("Moneda").ToString Dt.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex >= Colors.Length Then RowColorIndex = 0 End If Next Dim query = From s In Dt.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(query) Select Case DdlGrafica.SelectedValue.ToEntero Case 1 RegistraScript($"CargaGraficaBarras({json})", "22") Case 2 RegistraScript($"CargaGraficaPastel({json})", "22") End Select UPModalProd.Update() End Sub Protected Sub DdlGrafica_SelectedIndexChanged(sender As Object, e As EventArgs) CambioGrafica() End Sub Protected Sub DdlVer_SelectedIndexChanged(sender As Object, e As EventArgs) CambioGrafica() End Sub #End Region Protected Sub ImgExcelPersonalizado_Click(sender As Object, e As EventArgs) Handles ImgExcelPersonalizado.Click GvDatos.ExportToExcel("Compras_" & NowADS().ToShortDateString) 'GvDatos.ExportToExcelG("DetalleCompras_" & NowADS().ToShortDateString & ".xlsx") End Sub End Class