private void btnGenerar_Click(object sender, EventArgs e)
        {
            DateTime inicio =  dtpFechaInicio.Value;
            DateTime fin = dtpFechaFin.Value;

            IList<BE.Movimiento> movimientos = new MovimientoBL().findByFechas(inicio.Date, fin.Date);
            if (movimientos != null)
            {
                if (movimientos.Count != 0)
                {
                    BL.Movimiento dsMov = new BL.Movimiento();
                    dsMov.Reporte.AddReporteRow(inicio.ToShortDateString(), fin.ToShortDateString());

                    foreach (BE.Movimiento movimiento in movimientos)
                    {
                        dsMov._Movimiento.AddMovimientoRow(movimiento.Id.ToString(), movimiento.TipoMovimiento, movimiento.Fecha.Value.ToShortDateString(), movimiento.Local.Nombre);
                    }

                    new frmVistaReporteMovimiento(dsMov).ShowDialog(this);
                }
                else
                {
                    Utils.Utils.Error(null, "No se encontraron movimientos entre esas fechas");
                }
            }
            else {
                Utils.Utils.Error(null, "No se encontraron movimientos entre esas fechas");

            }

            //this.Dispose();
        }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            int nLineas = lineas.Count;
            bool ok = true;
            int nError = 0;//0=vacio
            for (int i = 0; i < nLineas; i++)
            {
                dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.White;
            }
            rtbMotivo.BackColor = Color.White;
            txbNroDoc.BackColor = Color.White;

            if (cmbTipoIncidencia.Text == "DEVOLUCION" && txbNroDoc.Text == "")
            {
                ok = false;
                txbNroDoc.BackColor = Color.RosyBrown;
                nError = 2;//NO ESCRIBIO NROOC
            }
            else
                if (rtbMotivo.Text == "")
                {
                    ok = false;
                    rtbMotivo.BackColor = Color.RosyBrown;
                    nError = 4;//NO ESCRIBIO RAZON
                }
                else
                    for (int i = 0; i < nLineas; i++)
                    {
                        //verificar todo lleno
                        string sCantAceptada = dgvArticulos.Rows[i].Cells[2].FormattedValue.ToString();
                        if (String.IsNullOrEmpty(sCantAceptada))
                        {
                            dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                            ok = false;
                            nError = 0;//VACIO
                        }
                        else
                        {
                            int cantidadAceptada;
                            //verificar numero valido
                            if (!int.TryParse(sCantAceptada, out cantidadAceptada))
                            {
                                ok = false;
                                dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                                nError = 1;//NUMERO NO VALIDO
                            }
                            else
                                if (!validaCantidad(cantidadAceptada, i))
                                {
                                    ok = false;
                                    dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                                    nError = 3;//NUMERO MAYOR A STOCK
                                }
                                else
                                {
                                    String cant = cantidadAceptada.ToString();
                                    cantidades.Add(cant);
                                }

                        }
                    }
            if (ok)
            {
                //crear objeto movimiento
                Movimiento mov = new Movimiento();
                if (cmbTipoIncidencia.Text == "DEVOLUCION")
                    mov = new MovimientoBL().GetByOC(Convert.ToInt32(txbNroDoc.Text));
                else
                {
                    mov.Local = (Local)cmbLocal.SelectedItem;
                    mov.Fecha = dtpFecha.Value.Date;
                    new MovimientoBL().Grabar(mov);
                }

                //Crear objeto incidencia
                Incidencia incid = new Incidencia();
                String descAd="";
                for (int i=0;i<lineas.Count;i++)
                {
                    descAd += lineas[i];
                    descAd += " ";
                    descAd += cantidades[i];
                    descAd += " ";
                }
                descAd += rtbMotivo.Text;
                incid.DescripcionAdicional = descAd;
                incid.Estado = "CREADA";
                incid.Fecha = dtpFecha.Value.Date;
                incid.Local = (Local)cmbLocal.SelectedItem;
                incid.TipoIncidencia = cmbTipoIncidencia.Text;
                incid.NroMovimiento = mov;
                new IncidenciaBL().Grabar(incid);

                //creacion de objetos incidencialinea
                IncidenciaLinea incidlinea1 = new IncidenciaLinea();
                IncidenciaLinea incidlinea2 = new IncidenciaLinea();
                //Cantidad de articulos diferentes
                incidlinea1.Cantidad = lineas.Count;
                incidlinea1.NroIncidencia = incid;
                //cantidad total de arituclos dañados
                incidlinea2.Cantidad = Convert.ToInt32(txbCantidadTotal.Text);
                incidlinea2.NroIncidencia = incid;
                new IncidenciaLineaBL().Grabar(incidlinea1);
                new IncidenciaLineaBL().Grabar(incidlinea2);

                Utils.Utils.OK(IND_MENSAJE);
                this.Dispose();
            }
            else
                switch (nError)
                {
                    case 0: { Utils.Utils.Error(this, "Cantidad se encuentra vacia"); break; }
                    case 1: { Utils.Utils.Error(this, "Cantidad no es un número válido"); break; }
                    case 2: { Utils.Utils.Error(this, "No ha indicado el Nro de Orden de Compra para la Devolucion"); break; }
                    case 3: { Utils.Utils.Error(this, "Cantidad mayor a la permitida"); break; }
                    case 4: { Utils.Utils.Error(this, "Motivo no especificado"); break; }
                }
        }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            int nLineas = lineas.Count;
            bool ok = true;
            string msjError = "";

            //LIMPIRAR CELDAS
            for (int i = 0; i < nLineas; i++)
            {
                dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.White;
            }
            rtbMotivo.BackColor = Color.White;
            txbNroDoc.BackColor = Color.White;

            //CANTIDADES LLENAS
            for (int i = 0; i < nLineas; i++)
            {
                //verificar todo lleno
                string sCantAceptada = dgvArticulos.Rows[i].Cells[2].FormattedValue.ToString();
                if (String.IsNullOrEmpty(sCantAceptada))
                {
                    dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                    ok = false;
                    msjError = "No especificó ninguna cantidad asociada.\n";
                }
                else
                {
                    int cantidadAceptada;
                    //verificar numero valido
                    if ((!int.TryParse(sCantAceptada, out cantidadAceptada)))
                        if(cantidadAceptada<0)
                        {
                            ok = false;
                            dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                            msjError = "No especificó un número de cantidad válido.\n";
                        }
                        else
                            //verificar cantidaad menor a la permitida
                            if (!validaCantidad(cantidadAceptada, i))
                            {
                                ok = false;
                                dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                                msjError = "Cantidad Mayor a la permitida.\n";
                            }
                            else
                            {
                                String cant = cantidadAceptada.ToString();
                                cantidades.Add(cant);
                            }
                }

                //NO ARTICULOS
                if (nLineas <= 0)
                {
                    ok = false;
                    msjError += "No especificó ningun artículo involucrado.\n";
                }

                //DEVOLUCION Y NRODOC
                if (cmbTipoIncidencia.Text == "DEVOLUCION" && txbNroDoc.Text == "")
                {
                    ok = false;
                    txbNroDoc.BackColor = Color.RosyBrown;
                    msjError += "No especificó Nro de Orden de Compra.\n";
                }

                //MOTIVO LLENO
                if (rtbMotivo.Text == "")
                {
                    ok = false;
                    rtbMotivo.BackColor = Color.RosyBrown;
                    msjError += "No especificó Motivo.\n";
                }
            }
            if (ok)
            {
                //crear objeto movimiento
                Movimiento mov = new Movimiento();
                if (cmbTipoIncidencia.Text == "DEVOLUCION")
                    mov = new MovimientoBL().GetByOC(Convert.ToInt32(txbNroDoc.Text));
                else
                {
                    mov.Local = (Local)cmbLocal.SelectedItem;
                    mov.Fecha = dtpFecha.Value.Date;
                }

                //Crear objeto incidencia
                Incidencia incid = new Incidencia();
                String descAd = "";
                int cantTotal = 0;
                for (int i = 0; i < lineas.Count; i++)
                {
                    descAd += lineas[i];
                    descAd += " ";
                    descAd += cantidades[i];
                    descAd += " ";
                    cantTotal += Convert.ToInt32(cantidades[i]);
                }
                descAd += rtbMotivo.Text;
                incid.DescripcionAdicional = descAd;
                incid.Estado = "Creada";
                incid.Fecha = dtpFecha.Value.Date;
                incid.Local = (Local)cmbLocal.SelectedItem;
                incid.TipoIncidencia = cmbTipoIncidencia.Text;
                incid.NroMovimiento = mov;

                //creacion de objetos incidencialinea
                IncidenciaLinea incidlinea1 = new IncidenciaLinea();
                IncidenciaLinea incidlinea2 = new IncidenciaLinea();
                //Cantidad de articulos diferentes
                incidlinea1.Cantidad = lineas.Count;
                incidlinea1.NroIncidencia = incid;
                //cantidad total de arituclos dañados
                incidlinea2.Cantidad = cantTotal;
                incidlinea2.NroIncidencia = incid;

                //GRABAR MOVIMIENTO E INCIDENCIA
                new MovimientoBL().Grabar(mov);
                new IncidenciaBL().Grabar(incid);
                new IncidenciaLineaBL().Grabar(incidlinea1);
                new IncidenciaLineaBL().Grabar(incidlinea2);

                Utils.Utils.OK(IND_MENSAJE);
                this.Dispose();
            }
            else
                Utils.Utils.Error(this, msjError);
        }