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

namespace LLNet.Tienda.MainForms.Forms
{
    public partial class frmConsultaFacturas : LLNet.GUI.FormBases.frmBase
    {
        public frmConsultaFacturas()
        {
            InitializeComponent();

            GUI.CApp.TraducirForm(this);
        }

        public string Documento;
        public string Linea;
        public string EsquemaC;
        public string FechaE;

        public override void Init(object[] pArgs)
        {
            #region Limpiando el dataset
            dsPDV1.TDA_V_FACTURAS.Clear();
            dsPDV1.TDA_DETALLE_PEDIDO.Clear();            
            #endregion

            base.Init(pArgs);

            EsquemaC = Utils.Helpers.ObjToStr(GUI.CApp.GetParam("NDEC"));
        }


        private void frmConsultaFacturas_Load(object sender, EventArgs e)
        {
            vGridControl1.FocusedRow = merFactura;
            vGridControl1.Focus();

        }

        private void frmConsultaFacturas_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Enter:
                    btnConsultar_Click(null, null);
                    break;

                case Keys.F2:
                    vGridControl1.FocusedRow = merFactura;
                    vGridControl1.ShowEditor();
                    vGridControl1.Focus();
                    if (vGridControl1.ActiveEditor.Text  == Utils.Helpers.ObjToStr(merFactura.PropertiesCollection[1].Value) )
                    {
                        SendKeys.Send("{LEFT}");
                    }
                    break;

                case Keys.F3:
                    xtraTabControl1.SelectedTabPage = pgDetalle;
                    gridControl1.Focus();
                    break;

                case Keys.F4:
                    xtraTabControl1.SelectedTabPage = pgSeries;
                    gridControl2.Focus();
                    break;

                case Keys.Escape:
                    btnCancelar_Click(null, null);
                    break;

            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        public bool FindFactura(string pSerie, string pFactura)
        {
            #region Asignando parametros para busqueda del documento
            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
            qp.AddReplaceParam("SERIE", pSerie);
            qp.AddReplaceParam("NO_DOCUMENTO", pFactura);

            #endregion
            dsPDV1.TDA_V_FACTURAS.Clear();
            if (pSerie != "")
            {
                Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_FACTURAS.TableName, qp, "Facturae"), dsPDV1);
                if (dsPDV1.TDA_V_FACTURAS.Rows.Count == 0)
                {
                    try
                    {
                        if (EsquemaC != string.Empty)
                        {
                            Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_FACTURAS.TableName, EsquemaC, qp, "Facturae"), dsPDV1);
                        }
                    }
                    catch (Exception ex)
                    {
                        GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                    }
                }
            }
            else
            {
                Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_FACTURAS.TableName, qp, "FacturaSse"), dsPDV1);
                if (dsPDV1.TDA_V_FACTURAS.Rows.Count == 0)
                {
                    try
                    {
                        if (EsquemaC != string.Empty)
                        {
                            Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_FACTURAS.TableName, EsquemaC, qp, "FacturaSse"), dsPDV1);
                        }
                    }
                    catch (Exception ex)
                    {
                        GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                    }

                }
            }
            if (dsPDV1.TDA_V_FACTURAS.Rows.Count > 0)
            {
                #region Obteniendo detalles del producto

                qp.Clear();
                qp.AddReplaceParam("DOCUMENTO", dsPDV1.TDA_V_FACTURAS[0].DOCUMENTO.ToString());
                this.Documento = dsPDV1.TDA_V_FACTURAS[0].DOCUMENTO.ToString();
                this.FechaE = dsPDV1.TDA_V_FACTURAS[0].FECHA_EMISION.ToShortDateString();

                dsPDV1.TDA_DETALLE_PEDIDO.Clear();
                Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_DETALLE_PEDIDO.TableName, qp), dsPDV1);
                if (dsPDV1.TDA_DETALLE_PEDIDO.Rows.Count > 0)
                {
                    this.Linea = dsPDV1.TDA_DETALLE_PEDIDO[0].LINEA.ToString();
                }
                else
                {
                    try
                    {
                        if (EsquemaC != string.Empty)
                        {
                            Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_DETALLE_PEDIDO.TableName, EsquemaC, qp), dsPDV1);
                        }
                    }
                    catch (Exception ex)
                    {
                        GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                    }

                }
                #endregion
            }
            else
            {
                if (pSerie != "")
                {
                    try
                    {
                        if (EsquemaC != string.Empty)
                        {
                            Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_FACTURAS.TableName, EsquemaC, qp, "Facturae"), dsPDV1);
                        }
                    }
                    catch (Exception ex)
                    {
                        GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                    }

                }
                else
                {
                    try
                    {
                        if (EsquemaC != string.Empty)
                        {
                            Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_V_FACTURAS.TableName, EsquemaC, qp, "FacturaSse"), dsPDV1);
                        }
                    }
                    catch (Exception ex)
                    {
                        GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                    }
                }
                if (dsPDV1.TDA_V_FACTURAS.Rows.Count > 0)
                {
                    #region Obteniendo detalles del producto

                    qp.Clear();
                    qp.AddReplaceParam("DOCUMENTO", dsPDV1.TDA_V_FACTURAS[0].DOCUMENTO.ToString());
                    this.Documento = dsPDV1.TDA_V_FACTURAS[0].DOCUMENTO.ToString();
                    this.FechaE = dsPDV1.TDA_V_FACTURAS[0].FECHA_EMISION.ToShortDateString();

                    dsPDV1.TDA_DETALLE_PEDIDO.Clear();

                    try
                    {
                        if (EsquemaC != string.Empty)
                        {
                            Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.TDA_DETALLE_PEDIDO.TableName, EsquemaC, qp), dsPDV1);
                        }
                    }
                    catch (Exception ex)
                    {
                        GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                    }

                    if (dsPDV1.TDA_DETALLE_PEDIDO.Rows.Count > 0)
                    {
                        this.Linea = dsPDV1.TDA_DETALLE_PEDIDO[0].LINEA.ToString();
                    }
                    #endregion
                }
            }
            return (dsPDV1.TDA_V_FACTURAS.Rows.Count > 0);
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            GetInvoiceData(Utils.Helpers.ObjToStr(merFactura.PropertiesCollection[0].Value), Utils.Helpers.ObjToStr(merFactura.PropertiesCollection[1].Value));
        }

        private void txtFactura_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                GetInvoiceData(Utils.Helpers.ObjToStr(merFactura.PropertiesCollection[0].Value), Utils.Helpers.ObjToStr(((DevExpress.XtraEditors.TextEdit)sender).EditValue));
            }
        }

        private void GetInvoiceData(string serie, string factura)
        {
            if (FindFactura(serie, factura))
            {
                rowCliente.Properties.Value = dsPDV1.TDA_V_FACTURAS[0]["NOMBRE"];
                rowNit.Properties.Value = dsPDV1.TDA_V_FACTURAS[0]["NIT"];
                rowTotal.Properties.Value = dsPDV1.TDA_V_FACTURAS[0]["TOTAL"];
                rowBodega.Properties.Value = dsPDV1.TDA_V_FACTURAS[0]["NOMBRE_BODEGA"];
                merFactura.PropertiesCollection[1].Value = dsPDV1.TDA_V_FACTURAS[0]["NO_DOCUMENTO"];
                Documento = dsPDV1.TDA_V_FACTURAS[0]["DOCUMENTO"].ToString();
            }
            else
            {
                rowCliente.Properties.Value = null;
                rowNit.Properties.Value = null;
                rowTotal.Properties.Value = null;
                rowBodega.Properties.Value = null;
                Documento = null;
            }
        }

        private void ConsultarSeries(String pLinea)
        {
            dsPDV1.WMS_SERIES_X_DOCUMENTO.Clear();

            if (Documento != null && pLinea != null)
            {
                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("DOCUMENTO", Documento);
                qp.AddReplaceParam("LINEA", pLinea);

                Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV1.GetType(), dsPDV1.WMS_SERIES_X_DOCUMENTO.TableName, qp), dsPDV1);

                try
                {
                    if (EsquemaC != string.Empty)
                    {
                        Utils.Helpers.Merge(GUI.CApp.bll.getConnTypedDataSet(dsPDV1.GetType(), dsPDV1.WMS_SERIES_X_DOCUMENTO.TableName, EsquemaC, qp, "SeriesConsolidado"), dsPDV1);
                    }
                }
                catch (Exception ex)
                {
                    GUI.CApp.ShowMessage(ex.Message, "Consulta de Facturas", true);
                }
            }

        }

        private void xtraTabControl1_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
        {
            if (e.Page == pgSeries)
            {
                ConsultarSeries( Utils.Helpers.ObjToStr( gridView1.GetFocusedRowCellValue(colLINEA) ) );
            }
        }

    }
}

