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 frmCalcQty : LLNet.GUI.FormBases.frmBase
    {
        public frmCalcQty()
        {
            InitializeComponent();

            GUI.CApp.TraducirForm(this);
        }

        private string skuAlterno;
        private decimal? cantidad = null;
        private decimal? monto = null;
        private decimal? montoUnitario = null;
        public bool isValid = false;

        public override void Init(object[] pArgs)
        {
            base.Init(pArgs);

            skuAlterno = Utils.Helpers.ObjToStr(pArgs[0]);
            cantidad = Convert.ToDecimal(pArgs[1]);

            if (Program.FrmMainPos.pos.ctlAddSkus1.DataSource.WMS_DOCUMENTOS.Rows.Count == 0)
            {
                if (Program.FrmMainPos.pos.ctlAddSkus1.CreateOrder(null) == -1)
                {
                    isValid = false;
                    return;
                }
            }

            if (Program.FrmMainPos.pos.ctlAddSkus1.FindSku(skuAlterno, Program.FrmMainPos.pos.ctlAddSkus1.DataSource.WMS_DOCUMENTOS[0].SOCIO, (Program.FrmMainPos.pos.ctlAddSkus1.Usuario ?? GUI.CApp.usuario)))
            {
                if (Utils.Helpers.Nvl(Program.FrmMainPos.pos.ctlAddSkus1.DataSource.WMS_SKUS[0]["TIPO_INVENTARIO"],"D") == "D")
                {
                    GUI.CApp.ShowMessage("El producto solamente puede venderse en cantidades enteras", "Cálculo de Venta", true);
                    isValid = false;
                }
                else
                {
                    isValid = true;
                    initializeValues();
                }
            }
        }

        private void initializeValues()
        {
            Producto.Text = Utils.Helpers.ObjToStr(Program.FrmMainPos.pos.ctlAddSkus1.DataSource.WMS_SKUS[0]["DESCRIPCION"]);
            monto = Convert.ToDecimal(Program.FrmMainPos.pos.ctlAddSkus1.DataSource.WMS_SKUS[0]["PRECIO_BASE"]);
            montoUnitario = monto;
            calcCantidad.EditValue = cantidad;
            calcMonto.EditValue = monto;
        }

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

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.OK;
        }

        private void calcCantidad_EditValueChanged(object sender, EventArgs e)
        {
            decimal newCantidad = ((DevExpress.XtraEditors.CalcEdit)sender).Value;
            monto = newCantidad * montoUnitario;        
            calcMonto.Value = (decimal)monto;
        }

        private void calcMonto_EditValueChanged(object sender, EventArgs e)
        {
            decimal newMonto = ((DevExpress.XtraEditors.CalcEdit)sender).Value;
            cantidad = newMonto / montoUnitario;
            calcCantidad.Value = (decimal)cantidad;

        }

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