public void Guardar(DynamicGrid almacenDG )
        {
            DBConexion db = new DBConexion();
            db.conn.Open();
            SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
            db.cmd.Transaction = trans;
            uSQL = new UbicacionSQL(db);
            DataTable temporal= uSQL.CrearUbicacionesDT();
            uSQL.AgregarFilasToUbicacionesDT(temporal, almacenDG.Ubicaciones, id);
            uSQL.AgregarMasivo(temporal, trans);
            int exito= uSQL.ActualizarUbicacionMasivo();
            if (exito > 0)
            {
                UtilesSQL util = new UtilesSQL(db);
                util.LimpiarTabla("TemporalUbicacion");
                trans.Commit();
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Se guardo el stock"));

            }
            else
            {
                trans.Rollback();
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Error: Revisar conexión al servidor"));
            }
        }
 public void Disminuir(DynamicGrid ubicacionCol, DynamicGrid almacen)
 {
     _windowManager.ShowDialog(new AlertViewModel(_windowManager, "funciono"));
 }
        public void GuardarMovimiento(DynamicGrid anaquel, DynamicGrid deposito)
        {
            int exito;

            /*Inicializacion de la transacción*/
            DBConexion db = new DBConexion();
            try
            {
                db.conn.Open();
                SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.ReadCommitted);

                db.cmd.Transaction = trans;

                SectorSQL sectorSQL = new SectorSQL(db);
                UbicacionSQL ubicacionSQL = new UbicacionSQL(db);

                /*Tablas temporales*/
                DataTable sectoresDT = sectorSQL.CrearSectoresDT();
                DataTable ubicacionesDT = ubicacionSQL.CrearUbicacionesDT();

                List<Sector> lstSectores = new List<Sector>();
                List<Ubicacion> ubicacionesModificadas = new List<Ubicacion>();

                /*Agrupo todos los sectores y ubicaciones modificadas*/
                for (int i = 0; i < anaquel.lstZonas.Count; i++)
                {
                    lstSectores.AddRange(anaquel.lstZonas[i].LstSectores);
                    for (int j = 0; j < anaquel.lstZonas[i].LstSectores.Count; j++)
                    {
                        ubicacionesModificadas.AddRange(anaquel.lstZonas[i].LstSectores[j].LstUbicaciones);
                    }

                }

                /*Agrego las filas a los DT*/
                sectorSQL.AgregarFilasToSectoresDT(sectoresDT, lstSectores);
                ubicacionSQL.AgregarFilasToUbicacionesDT(ubicacionesDT, ubicacionesModificadas);

                /*empieza el guardado en la bd*/
                exito = sectorSQL.AgregarMasivo(sectoresDT, trans); //insertados en TemporalSector
                if (exito > 0)
                {
                    exito = sectorSQL.ActualizarSectorMasivo(); //actualizados en tabla Sector
                    if (exito > 0)
                    {

                        exito = sectorSQL.ActualizarIdSector(); //actualizo idSector en tabla sector
                        if (exito > 0)
                        {
                            /*Agrego las ubicaciones de almacen de salida*/
                            ubicacionSQL.AgregarFilasToUbicacionesDT(ubicacionesDT, deposito.Ubicaciones, deposito.Ubicaciones[0][0][0].IdAlmacen);
                            exito = ubicacionSQL.AgregarMasivo(ubicacionesDT, trans);
                            if (exito > 0)
                            {
                                exito = ubicacionSQL.ActualizarIdSector();
                                if (exito > 0)
                                {
                                    exito = ubicacionSQL.ActualizarUbicacionMasivo();
                                    if (exito > 0)
                                    {
                                        /*Agrego el movimiento como un "todo" a la bd*/
                                        NotaISSQL notaSQL = new NotaISSQL(db);

                                        /*Salida para el depósito*/
                                        NotaIS nota = new NotaIS();
                                        nota.IdMotivo = 8;
                                        nota.Tipo = 2;
                                        nota.Observaciones = "";
                                        nota.IdDoc = 0;
                                        nota.IdAlmacen = idDeposito;
                                        nota.IdResponsable = idResponsable;

                                        /*Entrada para el anaquel*/
                                        NotaIS notaAn = new NotaIS();
                                        notaAn.IdMotivo = 8;
                                        notaAn.Tipo = 1;
                                        notaAn.Observaciones = "";
                                        notaAn.IdDoc = 0;
                                        notaAn.IdAlmacen = idAnaquel;
                                        notaAn.IdResponsable = idResponsable;

                                        int idNotaDeposito = notaSQL.AgregarNota(nota, 1);
                                        int idNotaAnaquel = notaSQL.AgregarNota(notaAn, 1);

                                        if (idNotaDeposito > 0 && idNotaAnaquel> 0)
                                        {
                                            exito = sectorSQL.ActualizarTemporalSector(idNotaDeposito);

                                            if (exito > 0)
                                            {
                                                exito = notaSQL.AgregarNotaxSector();

                                                if (exito > 0)
                                                {
                                                    exito = sectorSQL.ActualizarTemporalSector(idNotaAnaquel);

                                                    if (exito > 0)
                                                    {
                                                        exito = notaSQL.AgregarNotaxSector();
                                                        if (exito > 0)
                                                        {
                                                            UtilesSQL util = new UtilesSQL(db);
                                                            util.LimpiarTabla("TemporalUbicacion");
                                                            util.LimpiarTabla("TemporalSector");

                                                            trans.Commit();
                                                            _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Los productos fueron transferidos correctamente"));
                                                            return;
                                                        }

                                                    }

                                                }
                                            }

                                        }

                                    }
                                }
                            }
                        }
                    }
                }
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Lo sentimos , se produjo un error"));
                trans.Rollback();
            }
            catch (SqlException e)
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Se fue la conexión"));
            }
        }
        public void Agregar(DynamicGrid ubicacionCol , DynamicGrid almacen)
        {
            int exito=0;
            if (String.IsNullOrEmpty(CantIngresar))
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Debe ingresar una cantidad"));
                return;
            }
            else if (int.Parse(CantIngresar) <0)
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Debe ingresar una cantidad positiva"));
                return;
            }

            if (selectedProduct != null)
            {
                if (int.Parse(selectedProduct.CanAtender) < int.Parse(CantIngresar))
                {
                    if (accion == 1)
                        _windowManager.ShowDialog(new AlertViewModel(_windowManager, "La cantidad que se intenta ingresar es mayor a la cantidad pendiente"));
                    else
                        _windowManager.ShowDialog(new AlertViewModel(_windowManager, "La cantidad que se intenta retirar es mayor a la cantidad pendiente"));
                }

                else
                {
                    if (String.IsNullOrEmpty(VolIngresar)) VolIngresar = "0";
                    if (accion == 1) exito = ubicacionCol.AgregarProductos(int.Parse(CantIngresar), int.Parse(VolIngresar), SelectedProduct.IdProducto);
                    else exito=ubicacionCol.DisminuirProductos(int.Parse(CantIngresar), SelectedProduct.IdProducto);

                    if (exito > 0)
                        selectedProduct.CanAtender = (int.Parse(selectedProduct.CanAtender) - int.Parse(CantIngresar)).ToString();

                    LstProductos = new List<ProductoCant>(LstProductos);
                }
            }

            VolIngresar = "";
            CantIngresar = "";
        }
        public void Disminuir(DynamicGrid ubicacionCol, DynamicGrid almacen)
        {
            Evaluador eva = new Evaluador();

            int exito = 0;
            if (String.IsNullOrEmpty(TxtCantidad))
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Debe ingresar una cantidad"));
                return;
            }
            else if (!eva.esNumeroEntero(TxtCantidad))
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Debe ingresar un número"));
                return;
            }
            else if (int.Parse(TxtCantidad) < 0)
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Debe ingresar una cantidad mayor a cero"));
                return;
            }
            else if (ubicacionCol.SelectedProduct != null)
            {

                exito = ubicacionCol.DisminuirProductos(int.Parse(TxtCantidad), ubicacionCol.SelectedProduct.IdProducto);
                if (exito == 1)
                {
                    int index = LstProductos.FindIndex(x => x.IdProducto == ubicacionCol.SelectedProduct.IdProducto);
                    if (index >= 0)
                    {
                        LstProductos[index].CanAtender = "" + (int.Parse(LstProductos[index].CanAtender) + int.Parse(TxtCantidad));
                    }
                    else
                    {
                        ubicacionCol.SelectedProduct.CanAtender = TxtCantidad;
                        LstProductos.Add(ubicacionCol.SelectedProduct);
                    }
                    LstProductos = new List<ProductoCant>(LstProductos);

                }
            }
        }