using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LLNet.Tienda.MainForms.Forms.Express
{
    public partial class FrmImprGuia : Form
    {

        #region Variables

        string vOrden = String.Empty;
        string vGuia = String.Empty;

        short vCantidadImpresion = 0;

        #endregion

        public FrmImprGuia(string pGuia,string pOrden)
        {
            this.vOrden = pOrden;
            this.vGuia = pGuia;
            InitializeComponent();
        }

        private void FrmImprGuia_Load(object sender, EventArgs e)
        {
            Reporte_GenerarGuia();
            this.rv.RefreshReport();
        }

        #region mCod_Guia
        /// <summary>
        /// Obtiene la guía en formato code 39
        /// </summary>
        /// <param name="pGuia"></param>
        /// <returns></returns>
        private ds_CodigoBarras.dtCodigoBarrasDataTable mCod_Guia(string pGuia)
        {

            ds_CodigoBarras.dtCodigoBarrasDataTable vCodBarras = new ds_CodigoBarras.dtCodigoBarrasDataTable();
            ds_CodigoBarras.dtCodigoBarrasRow vFila = vCodBarras.NewdtCodigoBarrasRow();
            try
            {
                BarcodeLib.Barcode vCod39 = new BarcodeLib.Barcode();
                vCod39.IncludeLabel = true;
                vCod39.Encode(BarcodeLib.TYPE.CODE39, pGuia, Color.Black, Color.White, 500, 75);
                vFila.Guia = vCod39.Encoded_Image_Bytes;

                vCodBarras.Rows.Add(vFila);

                return vCodBarras;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return vCodBarras;
            }
        }
        #endregion

        #region Reporte_GenerarGuia
            
        private void Reporte_GenerarGuia()
        {
            try
            {
                //DetalleFactura vDetFactura = new DetalleFactura(Program.Ubicacion, Program.NombArchivoLog, Program.NombreBD);
                //DataSet ds_encabez = vDetFactura.mReporte(vDocumento);

                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("PORDEN", vOrden); //Usuario
                //Consulta cotizaciones
                DataSet ds_detalle = GUI.CApp.bll.getDataSet("PDV", "IMPGUIAEXP", qp);

                if (ds_detalle.Tables.Count > 0 && ds_detalle.Tables[0].Rows.Count > 0)
                {
                    ds_CodigoBarras.dtCodigoBarrasDataTable vCodBarras;

                    if (ds_detalle.Tables[0].Rows[0].ItemArray[5].ToString() != String.Empty)
                    {
                        vCodBarras = mCod_Guia(ds_detalle.Tables[0].Rows[0].ItemArray[6].ToString());
                    }
                    else
                    {
                        vCodBarras = new ds_CodigoBarras.dtCodigoBarrasDataTable();
                    }

                    String path = Application.StartupPath + @"\rep_guia_Express.rdlc";
                    this.rv.LocalReport.DataSources.Clear();
                    this.rv.LocalReport.ReportPath = path;                    
                    this.rv.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", ds_detalle.Tables[0]));
                    this.rv.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet3", (DataTable)vCodBarras));
                    this.rv.RefreshReport();

                }
                else
                {
                    MessageBox.Show("Datos insuficientes para generar el reporte de la guía", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        #endregion

    }
}
