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
{
    public partial class frm_ligar_desligar_documentos : Form
    {
        public frm_ligar_desligar_documentos()
        {
            InitializeComponent();
        }

        #region ValidaDocumentos
        public int ValidaDocumentos(string pSERIE_DOC1, string pNO_DOCUMENTO1,string pSERIE_DOC2, string pNO_DOCUMENTO2)
        {

            try
            {
                int vResultado = 0;

                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                qp.AddReplaceParam("pSERIE_DOC1", pSERIE_DOC1);
                qp.AddReplaceParam("pNO_DOCUMENTO1", pNO_DOCUMENTO1);
                qp.AddReplaceParam("pSERIE_DOC2", pSERIE_DOC2);
                qp.AddReplaceParam("pNO_DOCUMENTO2", pNO_DOCUMENTO2);
                vResultado = Convert.ToInt32(GUI.CApp.bll.GetSingleValue("FE_F_VALIDAR_DOCUMENTOS", qp, "PDV"));

                return vResultado;
            }
            catch (Exception ex)
            {
                GUI.CApp.ShowMessage(ex.Message, "Ligar - Desligar Documentos", true);
                throw ex;
            }
        }
        #endregion

        #region btnAceptar_Click
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (GUI.CApp.ValidateAccess("LIGAR_DESLIGAR_DOCUMENTO", "Ligar - Desligar Documentos"))
                {

                    if (rbtn_Ligar.Checked == true)
                    {
                        int vPermitirLigue = ValidaDocumentos(merDocumento1.PropertiesCollection[0].Value.ToString(),
                                                              merDocumento1.PropertiesCollection[1].Value.ToString(),
                                                              merDocumento2.PropertiesCollection[0].Value.ToString(),
                                                              merDocumento2.PropertiesCollection[1].Value.ToString());
                        if (vPermitirLigue == 1)
                        {
                            if (GUI.CApp.ShowMessage("¿Está seguro que desea ligar los documentos?", "Ligar Documentos", true, true) == DialogResult.OK)
                            {
                                string supervisor = "";

                                if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                                {
                                    supervisor = GUI.CApp.Sup;
                                }
                                else
                                {
                                    supervisor = GUI.CApp.usuario;
                                }

                                Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                                qp.AddReplaceParam("pSERIE_DOC1", merDocumento1.PropertiesCollection[0].Value.ToString());
                                qp.AddReplaceParam("pNO_DOCUMENTO1", merDocumento1.PropertiesCollection[1].Value.ToString());
                                qp.AddReplaceParam("pSERIE_DOC2", merDocumento2.PropertiesCollection[0].Value.ToString());
                                qp.AddReplaceParam("pNO_DOCUMENTO2", merDocumento2.PropertiesCollection[1].Value.ToString());
                                qp.AddReplaceParam("pUSUARIO", supervisor);
                                qp.AddReplaceParam("pJORNADA", Program.Jornada.ToString());
                                //
                                GUI.CApp.bll.ExecuteSql("FE_P_LIGUE_DOCUMENTO", qp, "PDV");

                                if (this.chkPasarPagos.Checked)
                                {
                                    qp.AddReplaceParam("pREVERSAR", "0");
                                    //
                                    GUI.CApp.bll.ExecuteSql("FE_P_CAMBIO_FORMA_PAGO", qp, "PDV");
                                }

                                this.Close();


                            }
                            else
                            {
                                this.Close();
                            }
                        }
                        else
                        {
                            GUI.CApp.ShowMessage("El documento esta asociado a otro por lo que no puede realizarse la asociación", "Ligar Documentos", true, true);
                        }
                    } 
                    else if (rbtnDesligar.Checked == true)
                    {
                        if (GUI.CApp.ShowMessage("¿Está seguro que desea desligar los documentos?", "Desligar Documentos", true, true) == DialogResult.OK)
                        {
                            string supervisor = "";

                            if (GUI.CApp.Sup != null && GUI.CApp.Sup != "")
                            {
                                supervisor = GUI.CApp.Sup;
                            }
                            else
                            {
                                supervisor = GUI.CApp.usuario;
                            }

                            Utils.QueryParams qp = new LLNet.Utils.QueryParams();
                            qp.AddReplaceParam("pSERIE_DOC1", merDocumento1.PropertiesCollection[0].Value.ToString());
                            qp.AddReplaceParam("pNO_DOCUMENTO1", merDocumento1.PropertiesCollection[1].Value.ToString());
                            qp.AddReplaceParam("pSERIE_DOC2", merDocumento2.PropertiesCollection[0].Value.ToString());
                            qp.AddReplaceParam("pNO_DOCUMENTO2", merDocumento2.PropertiesCollection[1].Value.ToString());
                            qp.AddReplaceParam("pUSUARIO", supervisor);
                            qp.AddReplaceParam("pJORNADA", Program.Jornada.ToString());
                            //
                            GUI.CApp.bll.ExecuteSql("FE_P_ANUL_LIGUE_DOCUMENTO", qp, "PDV");

                            if (this.chkPasarPagos.Checked)
                            {
                                qp.AddReplaceParam("pREVERSAR", "1");
                                //
                                GUI.CApp.bll.ExecuteSql("FE_P_CAMBIO_FORMA_PAGO", qp, "PDV");
                            }

                           this.Close();

                        }
                    }
                    else 
                    {
                        this.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                GUI.CApp.ShowMessage(ex.Message, "Ligar - Desligar Documentos", true);
            }
        }
        #endregion 
                
        #region btnCancelar_Click
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion 

        #region frm_ligar_desligar_documentos_KeyDown
        private void frm_ligar_desligar_documentos_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.None)
            {
                // Verifica el shortcut que presiono el usuario
                switch (e.KeyCode)
                {
                    case Keys.Escape:
                        btnCancelar_Click(null, null);
                        break;

                    case Keys.F12:
                        btnAceptar_Click(null, null);
                        break;
                }
            }
        }
        #endregion

    }
}
