private void btnAceptar_Click(object sender, EventArgs e)
        {
            int nLineas = dgvSolRecep.Rows.Count;
            bool ok = true;
            int nError = 0;//0=vacio
            int nMod=0;//CantidadModificada
            List<TransferenciaLinea> lineas = new List<TransferenciaLinea>();
            for (int i = 0; i < nLineas; i++)
            {
                dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.White;
            }

            for (int i = 0; i < nLineas; i++)
            {
                //verificar todo lleno
                string sCantAceptada = dgvSolRecep.Rows[i].Cells[5].FormattedValue.ToString();
                string sIdSolicitudLinea = dgvSolRecep.Rows[i].Cells[0].FormattedValue.ToString();
                string sCantSolicitada = dgvSolRecep.Rows[i].Cells[4].FormattedValue.ToString();
                if (String.IsNullOrEmpty(sCantAceptada))
                {
                    dgvSolRecep.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;
                        dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                        nError = 1;//NUMERO NO VALIDO
                    }
                    else
                    {
                        int cantSolicitada; int.TryParse(sCantSolicitada, out cantSolicitada);
                        if (cantSolicitada < cantidadAceptada) //VALIDAR CANTIDAD ACEPTADA MENOR A SOLICITADA
                        {
                            ok = false;
                            dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                            nError = 2;//CANTIDAD MAYOR
                        }
                        else
                        {
                            SolicitudTransferenciaLinea auxSol = new SolicitudTransferenciaLinea();
                            TransferenciaLinea aux = new TransferenciaLinea();
                            int id; int.TryParse(sIdSolicitudLinea, out id);
                            auxSol = new SolicitudTransferenciaLineaBL().findSolicitudTransferenciaLineaxId(id);
                            aux.ArticuloXLocal = auxSol.ArticuloXLocal;
                            aux.CantidadArticulosAprob = cantidadAceptada;
                            if (cantSolicitada != cantidadAceptada) { nMod++; }
                            lineas.Add(aux);
                        }
                    }
                }
            }
            if (ok)
            {
                Movimiento mov = new Movimiento();
                mov.Local = solicitud.LocalOrigen;
                mov.Fecha = DateTime.Now.Date;
                Transferencia Trans = new Transferencia();
                Trans.LocalOrigen = solicitud.LocalOrigen;
                Trans.LocalDestino =solicitud.LocalDestino;
                Trans.Movimiento=solicitud.Movimiento;
                Trans.NroMovimiento = mov;
                Trans.NroSolicitudTransferencia=solicitud;
                Trans.Estado="Emitido";
                Trans.FechaConfirmacion=DateTime.Now.Date;
                new MovimientoBL().Grabar(mov);
                new TransferenciaBL().Grabar(Trans);
                new TransferenciaLineaBL().AsignarSolicitudesLineas(lineas, Trans);
                if (nMod > 0)
                    solicitud.Estado = "Parcialmente Aceptado";
                else
                    solicitud.Estado = "Aceptado";
                new SolicitudTransferenciaBL().Grabar(solicitud);
                Utils.Utils.OK(IND_MENSAJE);
                this.Dispose();
            }
            else
                switch (nError)
                {
                    case 0: { Utils.Utils.Error(this,"Cantidad Aceptada se encuentra vacia"); break; }
                    case 1: { Utils.Utils.Error(this, "Cantidad Aceptada no es un número válido"); break; }
                    case 2: { Utils.Utils.Error(this, "Cantidad Aceptada es mayor a la Cantidad Solicitada"); break; }

                }
        }
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            int nLineas = dgvSolRecep.Rows.Count;
            bool ok = true;
            string msjError = "";
            int nMod=0;//CantidadModificada
            List<TransferenciaLinea> lineas = new List<TransferenciaLinea>();

            //LIMPIAR CELDAS
            for (int i = 0; i < nLineas; i++)
            {
                dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.White;
            }

            for (int i = 0; i < nLineas; i++)
            {
                //verificar todo lleno
                string sCantAceptada = dgvSolRecep.Rows[i].Cells[5].FormattedValue.ToString();
                string sIdSolicitudLinea = dgvSolRecep.Rows[i].Cells[0].FormattedValue.ToString();
                string sCantSolicitada = dgvSolRecep.Rows[i].Cells[4].FormattedValue.ToString();
                if (String.IsNullOrEmpty(sCantAceptada))
                {
                    dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                    ok = false;
                    msjError = "Cantidad vacía.\n";
                }
                else
                {
                    int cantidadAceptada;
                    //verificar numero valido
                    if ((!int.TryParse(sCantAceptada, out cantidadAceptada)) || (cantidadAceptada < 0))
                    {
                        ok = false;
                        dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                        msjError = "Número de cantidad no válido.\n";
                    }
                    else
                    {
                        int cantSolicitada; int.TryParse(sCantSolicitada, out cantSolicitada);
                        if (cantSolicitada < cantidadAceptada) //VALIDAR CANTIDAD ACEPTADA MENOR A SOLICITADA
                        {
                            ok = false;
                            dgvSolRecep.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                            msjError = "Cantidad mayor a la cantidad Solicitada.\n";
                        }
                        else
                        {
                            SolicitudTransferenciaLinea auxSol = new SolicitudTransferenciaLinea();
                            TransferenciaLinea aux = new TransferenciaLinea();
                            int id; int.TryParse(sIdSolicitudLinea, out id);
                            auxSol = new SolicitudTransferenciaLineaBL().findSolicitudTransferenciaLineaxId(id);
                            aux.ArticuloXLocal = auxSol.ArticuloXLocal;
                            aux.CantidadArticulosAprob = cantidadAceptada;
                            if (cantSolicitada != cantidadAceptada) { nMod++; }
                            lineas.Add(aux);
                        }
                    }
                    }
            }
            if (ok)
            {
                //CREAR MOVIMIENTO
                BE.Movimiento mov = new BE.Movimiento();
                mov.Local = solicitud.LocalOrigen;
                mov.Fecha = DateTime.Now.Date;
                mov.TipoMovimiento = "Transferencia";

                //CREAR TRANSFERENCIA
                Transferencia Trans = new Transferencia();
                Trans.LocalOrigen = solicitud.LocalOrigen;
                Trans.LocalDestino = solicitud.LocalDestino;
                Trans.Movimiento = solicitud.Movimiento;
                Trans.NroMovimiento = mov;
                Trans.NroSolicitudTransferencia = solicitud;
                Trans.Estado = "Emitido";
                Trans.FechaConfirmacion = DateTime.Now.Date;

                //GRABAR MOVIMIENTO Y TRANSFERENCIA
                new MovimientoBL().Grabar(mov);
                new TransferenciaBL().Grabar(Trans);
                new TransferenciaLineaBL().AsignarSolicitudesLineas(lineas, Trans);

                //MODIFICAR SOLICITUD
                if (nMod > 0)
                    solicitud.Estado = "Parcialmente Aceptado";
                else
                    solicitud.Estado = "Aceptado";
                new SolicitudTransferenciaBL().Grabar(solicitud);
                Utils.Utils.OK(IND_MENSAJE);
                this.Dispose();
            }
            else
                Utils.Utils.Error(this, msjError);
        }