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

namespace Siegfried.UserControls
{
  public partial class DetalleSalidaCapturaUC : UserControl
  {

    Entities.DetalleSalidaRuta detalleUC;
    decimal decCantidadEntregada = 0;
    decimal decCantidadDevuelta = 0;
    decimal decCantidadVendida = 0;
    decimal decMerma = 0;

    public DetalleSalidaCapturaUC()
    {
      InitializeComponent();
    }

    private void RefreshCalculations(object sender, EventArgs e)
    {
      GetLastValuesFromControls();
    }

    void GetLastValuesFromControls()
    {
      if (Decimal.TryParse(txtCantidadEntregada.Text, out decCantidadEntregada)) { }
      if (Decimal.TryParse(txtCantidadDevuelta.Text, out decCantidadDevuelta)) { }
      if (Decimal.TryParse(txtCantidadVendida.Text, out decCantidadVendida)) { }
      if (Decimal.TryParse(txtMerma.Text, out decMerma)) { }
    }

    internal void CurrentChanged(Entities.DetalleSalidaRuta detalle)
    {
      if (detalle.ID > 0) {
        this.txtCantidadDevuelta.Text = (detalle.CantidadDevuelta ?? 0).ToString();
        this.txtCantidadEntregada.Text = detalle.CantidadEntregada.ToString();
        this.txtCantidadVendida.Text = detalle.CantidadVendida.ToString();
        this.txtMerma.Text = (detalle.Merma ?? 0).ToString();
        cbxProducto.SelectedValue = detalle.ProductoID;
      } else {
        this.txtCantidadDevuelta.Text = String.Empty;
        this.txtCantidadEntregada.Text = String.Empty;
        this.txtCantidadVendida.Text = String.Empty;
        this.txtMerma.Text = String.Empty;
      }
      if (detalle == null)
        MessageBox.Show("Se ha detectado que no hay registros previos, una vez que presione Guardar se creara el primer registro de esta tabla.");
      this.detalleUC = detalle ?? new Entities.DetalleSalidaRuta();
    }

    private void DetalleSalidaCapturaUC_Load(object sender, EventArgs e)
    {

      var productos = Globals.ctx.Producto.All();
      BindingSource source= new BindingSource();
      source.DataSource = productos;
      cbxProducto.DataSource = source;
      cbxProducto.ValueMember = "ID";
      cbxProducto.DisplayMember = "Nombre";

    }

    internal Entities.DetalleSalidaRuta GetChanges()
    {
      if (detalleUC == null)
        MessageBox.Show("Se ha detectado que no hay registros previos, una vez que presione Guardar se creara el primer registro de esta tabla.");
      this.detalleUC = detalleUC ?? new Entities.DetalleSalidaRuta();

      GetLastValuesFromControls();

      detalleUC.CantidadDevuelta = decCantidadDevuelta;
      detalleUC.ProductoID = System.Convert.ToInt32(cbxProducto.SelectedValue);
      detalleUC.CantidadEntregada = decCantidadEntregada;
      detalleUC.CantidadVendida = decCantidadVendida;
      detalleUC.Merma = decMerma;
      detalleUC.SalidaRutaID = Globals.Salida.ID;

      return this.detalleUC;
    }
  }
}
