using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Data.OracleClient;
using LLNet.Utils;
using LLNet.GUI;
using Microsoft.Win32;

namespace LLNet.Tienda.MainForms.Reporte_Impreso___Retiros
{
    public partial class report_viewer : Form
    {
        string Retiro = "";
        string NombreImpresora = "";

        public report_viewer()
        {
            InitializeComponent();

            NombreImpresora = Helpers.Nvl(CApp.GetParam("NIR"), "").ToString();
        }

        public report_viewer(string retiro)
        {
            InitializeComponent();

            NombreImpresora = Helpers.Nvl(CApp.GetParam("NIR"), "").ToString();

            if (retiro == "0")//Retiro consolidado
            {
                this.Retiro = "0";
                //RetirosConsolidados();
            }
            else
            {
                this.Retiro = retiro;
                //RetiroCH();
            }
        }

        #region RetiroCH
        /// <summary>
        /// Carga el reporte con los datos del retiro de caja chica
        /// </summary>
        private void RetiroCH()
        {
            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("RETIRO", this.Retiro);
            DataSet ds = CApp.bll.getDataSet("PDV", "WMS_V_RETIROS_CAJACH", qp);

            ds_retiros_cajas dsr = new ds_retiros_cajas();
            ds_retiros_cajas.v_retiros_cajaRow row = dsr.v_retiros_caja.Newv_retiros_cajaRow();
            foreach (DataRow r in ds.Tables[0].Rows)
            {
                row.RETIRO = r.ItemArray[0].ToString();
                row.EMPRESA = r.ItemArray[1].ToString();
                row.CAJA = r.ItemArray[2].ToString();
                row.MONTO = r.ItemArray[3].ToString();
                row.BOLETA = r.ItemArray[4].ToString();
                row.JORNADA = r.ItemArray[5].ToString();
                row.USUARIO = r.ItemArray[6].ToString();
                if (r.ItemArray[8].ToString() == "")
                    row.PLANILLA = r.ItemArray[7].ToString();
                else
                    row.PLANILLA = r.ItemArray[7].ToString() + ", " + r.ItemArray[8].ToString();
                row.FECHA = r.ItemArray[9].ToString();
                row.HORA = r.ItemArray[10].ToString();
                row.CUENTA_CORRIENTE = r.ItemArray[11].ToString();
            }

            dsr.v_retiros_caja.Addv_retiros_cajaRow(row);

            ReportDocument rep = new ReportDocument();
            rep.Load(GUI.CApp.ExeDir + "retiros_cajach.rpt");
            rep.SetDataSource(dsr.Tables[0]);

            try
            {
                rep.PrintOptions.PrinterName = NombreImpresora;

                //Muestra el retiro
                crystalReportViewer1.ReportSource = rep;
                crystalReportViewer1.Refresh();
            }
            catch (System.Runtime.InteropServices.COMException ce)
            {
                CApp.ShowMessage(ce.Message, "Retiros", true);
                this.Dispose();
            }
        }
        #endregion

        #region RetirosConsolidados
        /// <summary>
        /// Reporte de todos los retiros de caja chica
        /// </summary>
        private void RetirosConsolidados()
        {
            Utils.QueryParams qp = new QueryParams();
            qp.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            DataSet ds = GUI.CApp.bll.getDataSet("PDV", "WMS_V_RETIROS_CAJACHJ", qp);

            ReportDocument rep = new ReportDocument();
            rep.Load(GUI.CApp.ExeDir + "retiros_consolidados.rpt");
            rep.SetDataSource(ds.Tables[0]);
            crystalReportViewer1.ReportSource = rep;
            crystalReportViewer1.Refresh();
        }
        #endregion

        #region report_viewer_Load
        private void report_viewer_Load(object sender, EventArgs e)
        {
            if (this.Retiro == "")
            {
                string conexion = CApp.bll.ConnectionString;
                string sql_query;

                OracleConnection cnc;
                cnc = new OracleConnection(conexion);
                cnc.Open();
                sql_query = string.Format("select * from v_retiros_caja where retiro = {0}", Convert.ToString(Forms.frmRetiros.id_retiro));
                OracleDataAdapter odp = new OracleDataAdapter(sql_query, cnc);

                ds_retiros_cajas ds = new ds_retiros_cajas();
                odp.Fill(ds, "v_retiros_caja");
                ReportDocument objRpt = new ReportDocument();
                objRpt.Load(GUI.CApp.ExeDir + "retiros_caja.rpt");
                objRpt.SetDataSource(ds.Tables[0]);

                try
                {
                    objRpt.PrintOptions.PrinterName = NombreImpresora;

                    //Muestra el retiro
                    crystalReportViewer1.ReportSource = objRpt;
                    crystalReportViewer1.Refresh();
                }
                catch (System.Runtime.InteropServices.COMException ce)
                {
                    CApp.ShowMessage(ce.Message, "Retiros", true);
                    this.Dispose();
                }
            }
            else
            {
                if (this.Retiro == "0")//Retiro consolidado
                {
                    RetirosConsolidados();
                }
                else
                {
                    RetiroCH();
                }
            }
        }
        #endregion

    }
}