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.Dialogs.ListaPrecios
{
    public partial class dlgEfectivoEmpresa : GUI.FormBases.frmBase
    {
        #region Constructores

        public string documento;

        public dlgEfectivoEmpresa()
        {
            InitializeComponent();


            GUI.CApp.TraducirForm(this);

            dsPDV2 = Program.FrmMainPos.DsPedido;
            dsPDV2.Clasificacion1.Clear();
            dsPDV2.Clasificacion2.Clear();
            dsPDV2.Clasificacion3.Clear();
            dsPDV2.Clasificacion4.Clear();
            dsPDV2.Clasificacion5.Clear();

            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV2.GetType(), new string[] {
                dsPDV2.Clasificacion1.TableName,
                dsPDV2.Clasificacion2.TableName,
                dsPDV2.Clasificacion3.TableName,
                dsPDV2.Clasificacion4.TableName,
                dsPDV2.Clasificacion5.TableName
            }), dsPDV2);

            cmdListaPrecios.Properties.DataSource = dsPDV2.Clasificacion1;
        }

        public dlgEfectivoEmpresa(string p_documento, bool p_hayProductos)
        {
            InitializeComponent();

            GUI.CApp.TraducirForm(this);

            documento = p_documento;

            dsPDV2 = Program.FrmMainPos.DsPedido;
            dsPDV2.Clasificacion1.Clear();
            dsPDV2.Clasificacion2.Clear();
            dsPDV2.Clasificacion3.Clear();
            dsPDV2.Clasificacion4.Clear();
            dsPDV2.Clasificacion5.Clear();

            Utils.Helpers.Merge(GUI.CApp.bll.getTypedDataSet(dsPDV2.GetType(), new string[] {
                dsPDV2.Clasificacion1.TableName,
                dsPDV2.Clasificacion2.TableName,
                dsPDV2.Clasificacion3.TableName,
                dsPDV2.Clasificacion4.TableName,
                dsPDV2.Clasificacion5.TableName
            }), dsPDV2);

            cmdListaPrecios.Properties.DataSource = dsPDV2.Clasificacion1;

            if (p_hayProductos)
            {
                GUI.CApp.ShowMessage("No se puede modificar la lista de precios, pues ya hay productos en el pedido", "Lista de Precios para la Factura", true);
                cmdListaPrecios.Enabled = false;
            }
            else {
                cmdListaPrecios.Enabled = true;
            }

            Utils.QueryParams qpLis = new LLNet.Utils.QueryParams();
            qpLis.AddReplaceParam("DOCUMENTO", documento);
            string listaPrecio = GUI.CApp.bll.GetSingleValue("ListaPrecioDocumento", qpLis, "PDV").ToString();

            cmdListaPrecios.EditValue = listaPrecio;            
        }

        #endregion

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (cmdListaPrecios.Text != ""){
                    Utils.QueryParams qpDoc = new LLNet.Utils.QueryParams();
                    qpDoc.AddReplaceParam("LISTAPRECIO", cmdListaPrecios.GetColumnValue("CLASIFICACION").ToString());
                    qpDoc.AddReplaceParam("DOCUMENTO", documento);
                    GUI.CApp.bll.ExecuteSql("ModificarListaPrecioDocumento", qpDoc, "PDV");

                    Program.FrmMainPos.agregaListaPrecioAlEncabezado(cmdListaPrecios.GetColumnValue("CLASIFICACION").ToString());
                    Program.FrmMainPos.listaPrecio = cmdListaPrecios.GetColumnValue("CLASIFICACION").ToString();
            }                
            //Program.FrmMainPos.RefreshData();

            DialogResult = DialogResult.OK;
        }

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

        private void dlgEfectivoEmpresa_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            { 
                case Keys.F12:
                    btnAceptar_Click(null, null);
                    break;
                case Keys.Escape:
                    btnCancelar_Click(null, null);
                    break;
            }
        }

        private void dlgEfectivoEmpresa_Load(object sender, EventArgs e)
        {
            //txtObservaciones.Focus();
        }

        private void txtObservaciones_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void cmdListaPrecios_EditValueChanged(object sender, EventArgs e)
        {

        }
    }
}