using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;

using System.Collections.Generic;
using System.Linq;
using BE;
using BL;
using Utilitaria;

using System.Data.SqlClient;
using Telerik.Web.UI;
using System.Data.OleDb;

public partial class EstadoCuentaProveedor : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Usuario"] == null)
        {
            Response.Redirect(Utilitaria.Cls_Enums.CerrarSesion.Salir);
        }

        if (!Page.IsPostBack)
        {

            ViewState["FecDesde"] = Session["Desde"];
            ViewState["FecHasta"] = Session["Hasta"];

            tk_Grid.Columns[3].CurrentFilterFunction = Telerik.Web.UI.GridKnownFunction.StartsWith;

            if (ViewState["FecDesde"] != "" && ViewState["FecDesde"] != null)
            {
                txtDesde.DbSelectedDate = ViewState["FecDesde"].ToString();
            }
            if (ViewState["FecHasta"] != "" && ViewState["FecHasta"] != null)
            {
                txtHasta.DbSelectedDate = ViewState["FecHasta"].ToString();
            }

            txtPlanCuenta.Text = Session["CuentaInicio"].ToString();
            txtPlanCuentaFin.Text = Session["CuentaFin"].ToString();
            ListarProveedore();
        }
    }

    protected void tk_Grid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        //Listar();
    }

    private void Listar()
    {
        //if (txtPlanCuentaFin.Text == "") txtPlanCuentaFin.Text = txtPlanCuenta.Text;


        BLEstadoCuenta oBLEstadoCuenta = new BLEstadoCuenta();
        //List<BEEstadoCuenta> loEstadoCuenta = null;

        BEEstadoCuenta oBEEstadoCuenta = new BEEstadoCuenta();
        oBEEstadoCuenta.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
        oBEEstadoCuenta.Ejercicio = Session["txtPeriodo"].ToString();

        String WhereCondition = "";
        String OrderByExpression = " ORDER BY PlanDeCuentas.CodigoPlanCuenta, ACD.EmpresaID, ACD.TipoDocumentoID, ACD.NumeroDocumento";

        if(txtDesde.DbSelectedDate != null && txtHasta.DbSelectedDate == null)
        {
            txtDesde.DbSelectedDate = txtHasta.DbSelectedDate;
        }        
        if (txtDesde.DbSelectedDate != null && txtHasta.DbSelectedDate != null)
        {
            WhereCondition = " (ACD.Dia BETWEEN '" + txtDesde.DbSelectedDate.ToString().Substring(0, 10).Trim() + "' AND '" + txtHasta.DbSelectedDate.ToString().Substring(0, 10).Trim() + "')";
        }
        
        if (txtPlanCuenta.Text != "" && txtPlanCuentaFin.Text == "")
        {
            txtPlanCuentaFin.Text = txtPlanCuenta.Text;
        }

        if (txtPlanCuenta.Text != "" && txtPlanCuentaFin.Text != null)
        {
            if (WhereCondition != "" && rlbProveedores.SelectedValue.ToString().Trim() != "")
            {
                WhereCondition += " AND (CodigoPlanCuenta BETWEEN '" + txtPlanCuenta.Text.Trim() + "' AND '" + txtPlanCuentaFin.Text.Trim() + "')  and empresas.empresaid=" + rlbProveedores.SelectedValue.ToString().Trim();
            }
            else
            {
                WhereCondition += " AND (CodigoPlanCuenta BETWEEN '" + txtPlanCuenta.Text.Trim() + "' AND '" + txtPlanCuentaFin.Text.Trim() + "') ";
            }
            tk_Grid.DataSource = oBLEstadoCuenta.fnSelEstadoCuentaProveedor(oBEEstadoCuenta, WhereCondition, OrderByExpression);
            tk_Grid.Rebind();
            oBLEstadoCuenta = null;
       }
        //WhereCondition += "'";
        //loEstadoCuenta = oBLEstadoCuenta.fnSelEstadoCuentaProveedor(oBEEstadoCuenta, WhereCondition, OrderByExpression);

    }
    private void ListarProveedore()
    {
        BLEstadoCuenta oBLEstadoCuenta = new BLEstadoCuenta();
        BEEstadoCuenta oBEEstadoCuenta = new BEEstadoCuenta();
        oBEEstadoCuenta.EstablecimientoID = Convert.ToInt32(Session["EmpresaID"]);
        oBEEstadoCuenta.Ejercicio = Session["txtPeriodo"].ToString();


        rlbProveedores.DataSource = oBLEstadoCuenta.fnSelProveedores(oBEEstadoCuenta, 0);
        rlbProveedores.DataBind();

        oBLEstadoCuenta = null;
        oBEEstadoCuenta = null;
    }

    

    protected void showMessage(string strMessage)
    {
        RadScriptManager.RegisterStartupScript(this, this.GetType(), "Application", "alert('" + strMessage + "');", true);
    }

    protected void tk_Grid_ItemCommand(object source, GridCommandEventArgs e)
    {
        tk_Grid.ExportSettings.ExportOnlyData = true;
        tk_Grid.ExportSettings.IgnorePaging = true;
        tk_Grid.ExportSettings.OpenInNewWindow = false;

        switch (e.CommandName)
        {
            case "ExportExcel":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    //tk_Grid.MasterTableView.PrepareExport

                    tk_Grid.ExportSettings.Excel.Format = Telerik.Web.UI.GridExcelExportFormat.Html;
                    tk_Grid.ExportSettings.ExportOnlyData = true; 

                    tk_Grid.MasterTableView.ExportToExcel();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportPDF":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToPdf();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportWord":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToWord();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "ExportCSV":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Exporta == 1)
                {
                    tk_Grid.MasterTableView.ExportToCSV();
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
            case "Print":
                if (Cls_Propiedades.PrivilegiosUsuario[0].Imprime == 1)
                {
                    Response.Write(Cls_Utilitaria.f_Imprime());
                }
                else
                {
                    showMessage("No posee los privilegios necesario para completar la operación");
                }
                break;
        }
        //tk_Grid.Rebind();


        Listar();
    }

    String CurrUrl = "";
    String headertext;

    protected void tk_Grid_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridGroupHeaderItem)
        {
            GridGroupHeaderItem item = (GridGroupHeaderItem)e.Item;

            HyperLink hyperlnk = new HyperLink();
            System.Data.DataRowView groupDataRow = (System.Data.DataRowView)e.Item.DataItem;
            //hyperlnk.NavigateUrl = "#";
            headertext = item.DataCell.Text.Substring(7, item.DataCell.Text.Length - 7);
            hyperlnk.Text = headertext;
            if (headertext == "")
            {
                hyperlnk.Text = "Otros";
            }
            hyperlnk.CssClass = "gridtextbold";
            //CurrUrl = "frmListaAsientos.aspx?ID=" + groupDataRow["SubDiarioID"].ToString().Trim() + "&HTL=" + ViewState["HotelID"].ToString().Trim() + "&UNG=" + ViewState["UnidadNegocioID"].ToString().Trim() + "&ARA=" + ViewState["AreaID"].ToString().Trim() + "&FD=" + ViewState["FecDesde"].ToString() + "&FH=" + ViewState["FecHasta"].ToString();
            //hyperlnk.Attributes.Add("OnClick", "return AbreVentana('" + CurrUrl + "','DetalleAsientos');");
            item.DataCell.Controls.Clear();
            item.DataCell.Controls.Add(hyperlnk);

            headertext = item.DataCell.Text.Substring(item.DataCell.Text.IndexOf(':') + 1);

        }
    }

    public void ConvertorExcel(object sender, EventArgs e)
    {

        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        Page pagina = new Page();
        HtmlForm forma = new HtmlForm();

        pagina.Controls.Add(forma);
        forma.Controls.Add(tk_Grid);
        pagina.RenderControl(htw);
        Response.Clear();
        Response.Buffer = true;
        //Response.ContentType = "application/vnd.ms-excel";
        Response.ContentType = "text/plain";
        Response.AddHeader("Content-Disposition", "attachment;filename=data.xls");
        Response.Charset = "UTF-8";
        Response.ContentEncoding = Encoding.Default;
        Response.Write(sb.ToString());
        Response.End();

    }


    protected void Btn_ExportClick(object sender, EventArgs e)
    {
        string style = @"<style> .text { mso-number-format:\@; } </script> "; 

        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment;filename=MyExcelFile.xls");
        Response.ContentType = "application/excel";

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        tk_Grid.RenderControl(htw);
        // Style is added dynamically
        Response.Write(style); 
        Response.Write(sw.ToString());
        Response.End();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {

    }


    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        //String Codigo = rlbProveedores.SelectedValue;
        //showMessage(Codigo);
        Listar();
    }
}
