internal List<ProductoCant> ListaProductos(string idSolicitudAB)
        {
            List<ProductoCant> productos = new List<ProductoCant>();
            ProductoSQL pGw = new ProductoSQL();

            string where = "WHERE idSolicitudAB=@idSolicitudAB";

            db.cmd.Parameters.AddWithValue("@idSolicitudAB", idSolicitudAB);

            db.cmd.CommandText = "SELECT * FROM ProductoxSolicitudAb " + where;

            try
            {
                db.conn.Open();
                SqlDataReader reader = db.cmd.ExecuteReader();

                Producto p = new Producto();
                while (reader.Read())
                {
                    ProductoCant pa = new ProductoCant();
                    pa.IdProducto= reader.IsDBNull(reader.GetOrdinal("idProducto")) ? -1 : int.Parse(reader["idProducto"].ToString());
                    p = pGw.Buscar_por_CodigoProducto(pa.IdProducto);
                    pa.CodigoProd = p.CodigoProd.ToString();
                    pa.Nombre = p.Nombre;
                    pa.Can = reader.IsDBNull(reader.GetOrdinal("cantidad")) ? null : reader["cantidad"].ToString();
                    pa.CanAtend = reader.IsDBNull(reader.GetOrdinal("cantidadAtendida")) ? null : reader["cantidadAtendida"].ToString();

                    productos.Add(pa);

                }
                db.cmd.Parameters.Clear();
                db.conn.Close();
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }

            return productos;
        }
Esempio n. 2
0
        public List<ProductoCant> BuscarNotas(int p)
        {
            DBConexion db1 = new DBConexion();
            List<ProductoCant> lstProCant = new List<ProductoCant>();

            db1.cmd.CommandText = "SELECT idProducto,idNota,sum(cantidad) AS cantidad ,idAlmacen FROM ProductoxNotaIS WHERE idNota=@idNota GROUP BY idProducto, idNota, idAlmacen";
            db1.cmd.Parameters.AddWithValue("@idNota", p);

            try
            {
                db1.conn.Open();
                SqlDataReader reader = db1.cmd.ExecuteReader();

                while (reader.Read())
                {
                    ProductoSQL psql = new ProductoSQL();
                    ProductoCant procan = new ProductoCant();
                    procan.CanAtender = reader.IsDBNull(reader.GetOrdinal("cantidad")) ? null : reader["cantidad"].ToString();
                    procan.IdProducto = reader.IsDBNull(reader.GetOrdinal("idProducto")) ? -1 : int.Parse(reader["idProducto"].ToString());
                    Producto pr = psql.Buscar_por_CodigoProducto(procan.IdProducto);
                    procan.Nombre = pr.Nombre;
                    procan.CodigoProd = pr.CodigoProd;
                    lstProCant.Add(procan);

                }
                db1.cmd.Parameters.Clear();
                db1.conn.Close();

            }
            catch (SqlException e)
            {
                Console.WriteLine(e);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }

            return lstProCant;
        }
        //Botones:
        public void CargarProductos()
        {
            string referencia = TxtDoc;
            if (string.IsNullOrWhiteSpace(referencia))
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "No se ha ingresado ningun Documento de Referencia"));
                return;
            }
            string mot = this.selectedMotivo;
            if (string.Compare(mot, "Orden de Compra", true) == 0)
            {
                List<ProductoxOrdenCompra> poc = new List<ProductoxOrdenCompra>();
                poc = SelectedOrden.LstProducto;
                List<ProductoCant> lpcan = new List<ProductoCant>();
                for (int i = 0; i < poc.Count; i++)
                {
                    ProductoCant pcan = new ProductoCant();
                    pcan.IdProducto = poc.ElementAt(i).Producto.IdProducto;
                    pcan.Can = poc.ElementAt(i).Cantidad;
                    pcan.CodigoProd = poc.ElementAt(i).Producto.CodigoProd;
                    pcan.Nombre = poc.ElementAt(i).Producto.Nombre;
                    pcan.CanAtend = poc.ElementAt(i).CantAtendida.ToString();
                    pcan.CanAtender = poc.ElementAt(i).CantidadAtender;
                    pcan.Ubicaciones = new List<Ubicacion>();
                    lpcan.Add(pcan);
                }
                LstProductos = new List<ProductoCant>(lpcan);

            }
            else
            {
                if (string.Compare(mot, "Traslado Externo", true) == 0)
                {
                    if (selectedGuia == null)
                    {
                        _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Ingrese un código de guía de remisión valido"));
                    }
                    else
                    {
                        LstProductos = selectedGuia.Nota.LstProducto;
                    }
                }
                else
                {
                    if (string.Compare(mot, "Devolucion", true) == 0)
                    {
                        List<DevolucionProducto> dv = new List<DevolucionProducto>();
                        DevolucionSQL dsql = new DevolucionSQL();

                        dv = dsql.BuscarProductos(-1, -1, null, SelectedDevolucion.IdDevolucion);
                        List<ProductoCant> lpcan = new List<ProductoCant>();
                        for (int i = 0; i < dv.Count; i++)
                        {
                            ProductoCant pcan = new ProductoCant();
                            Producto p = new Producto();
                            ProductoSQL pgw = new ProductoSQL();
                            p = pgw.Buscar_por_CodigoProducto(dv.ElementAt(i).IdProducto);
                            pcan.IdProducto = p.IdProducto;
                            pcan.Nombre = p.Nombre;
                            pcan.Can = "0";
                            pcan.CanAtend = "0";
                            pcan.CanAtender = dv.ElementAt(i).Devuelto.ToString();
                            pcan.Ubicaciones = new List<Ubicacion>();
                            pcan.CodigoProd = p.CodigoProd;
                            lpcan.Add(pcan);
                        }
                        LstProductos = new List<ProductoCant>(lpcan);
                    }
                    else
                    {

                        if (string.Compare(mot, "Abastecimiento", true) == 0)
                        {

                            List<ProductoCant> psa = new List<ProductoCant>();
                            ProductoxSolicitudAbSQL pasql = new ProductoxSolicitudAbSQL();

                            psa = pasql.ListaProductos(SelectedSolicitud.idSolicitudAB.ToString());

                            List<ProductoCant> lpcan = new List<ProductoCant>();
                            for (int i = 0; i < psa.Count; i++)
                            {
                                ProductoCant pcan = new ProductoCant();
                                pcan.IdProducto = psa.ElementAt(i).IdProducto;
                                pcan.Can = psa.ElementAt(i).Can;
                                pcan.CodigoProd = psa.ElementAt(i).CodigoProd;
                                pcan.Nombre = psa.ElementAt(i).Nombre;
                                pcan.CanAtend = "0";
                                pcan.CanAtender = psa.ElementAt(i).CanAtend;
                                pcan.Ubicaciones = new List<Ubicacion>();
                                lpcan.Add(pcan);
                            }

                            LstProductos = new List<ProductoCant>(lpcan);

                        }
                    }
                }
            }

            NotifyOfPropertyChange(() => LstProductos);
            if (LstProductos != null)
            {
                EstadoMot = false;
                Estado = false;
            }
        }
        public void AgregarProducto()
        {
            if (SelectedProducto == null)
            {
                return;
            }

            Validacion.Evaluador eval = new Validacion.Evaluador();
            if (SelectedProducto.CodigoProd == null || TxtCantPro == null || !eval.esNumeroEntero(TxtCantPro) || Convert.ToInt64(TxtCantPro) <= 0)
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Debe completar todos los campos y la cantidad debe ser mayor a 0"));
            }
            else
            {
                ProductoCant pxa;
                Producto lstAux = null;
                lstAux = pxaSQL.Buscar_por_CodigoProducto(SelectedProducto.CodigoProd);

                if ((lstAux != null))
                {
                    if (LstProductos != null)
                    {
                        if ((pxa = LstProductos.Find(x => x.CodigoProd == lstAux.CodigoProd)) == null)
                        {
                            pxa = new ProductoCant();
                            pxa.CanAtender = TxtCantPro;
                            pxa.CanAtend = "0";
                            pxa.Can = "0";
                            pxa.IdProducto = lstAux.IdProducto;
                            pxa.CodigoProd = lstAux.CodigoProd.ToString();
                            pxa.Nombre = lstAux.Nombre;
                            pxa.Ubicaciones = new List<Ubicacion>();
                            LstProductos.Add(pxa);
                            LstProductos = new List<ProductoCant>(LstProductos);
                        }
                        else
                        {
                            _windowManager.ShowDialog(new AlertViewModel(_windowManager, "El producto que se quiere registrar ya esta siendo ingresado"));
                        }
                    }
                    else
                    {
                        pxa = new ProductoCant();
                        pxa.CanAtender = TxtCantPro;
                        pxa.CanAtend = "0";
                        pxa.Can = "0";
                        pxa.CodigoProd = lstAux.CodigoProd.ToString();
                        pxa.Nombre = lstAux.Nombre;
                        pxa.IdProducto = lstAux.IdProducto;
                        pxa.Ubicaciones = new List<Ubicacion>();
                        LstProductos = new List<ProductoCant>();
                        LstProductos.Add(pxa);
                        LstProductos = new List<ProductoCant>(LstProductos);
                    }
                }
                else
                {
                    _windowManager.ShowDialog(new AlertViewModel(_windowManager, "El código proporcionado no existe"));
                }
            }
        }
        //Botones:
        public void CargarProductos()
        {
            string referencia = TxtDoc;
            if (string.IsNullOrWhiteSpace(referencia))
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "No se ha ingresado ningun Documento de Referencia"));
                return;
            }
            string mot = this.selectedMotivo;
            if (string.Compare(mot, "Orden de Despacho", true) == 0)
            {

                List<DetalleVenta> l = new DetalleVentaSQL().BuscarTodos();
                List<ProductoCant> lpcan = new List<ProductoCant>();
                for (int i = 0; i < l.Count; i++)
                    if (l[i].IdDetalleV == SelectedDespacho.Venta.IdVenta)
                    {
                        Producto p = new ProductoSQL().Buscar_por_CodigoProducto(l[i].IdProducto);
                        ProductoCant pcan = new ProductoCant();
                        pcan.IdProducto = p.IdProducto;
                        pcan.CodigoProd = p.CodigoProd;
                        pcan.Nombre = p.Nombre;
                        pcan.CanAtender = l.ElementAt(i).Cantidad.ToString();
                        lpcan.Add(pcan);
                    }

                LstProductos = new List<ProductoCant>(lpcan);

            }
            else
            {
                if (string.Compare(mot, "Abastecimiento", true) == 0)
                {

                    List<ProductoCant> psa = new List<ProductoCant>();
                    ProductoxSolicitudAbSQL pasql = new ProductoxSolicitudAbSQL();

                    psa = pasql.ListaProductos(SelectedSolicitud.idSolicitudAB.ToString());

                    List<ProductoCant> lpcan = new List<ProductoCant>();
                    for (int i = 0; i < psa.Count; i++)
                    {
                        ProductoCant pcan = new ProductoCant();
                        pcan.IdProducto = psa.ElementAt(i).IdProducto;
                        pcan.Can = psa.ElementAt(i).Can;
                        pcan.CodigoProd = psa.ElementAt(i).CodigoProd;
                        pcan.Nombre = psa.ElementAt(i).Nombre;
                        pcan.CanAtend = "0";
                        pcan.CanAtender = psa.ElementAt(i).CanAtend;
                        pcan.Ubicaciones = new List<Ubicacion>();
                        lpcan.Add(pcan);
                    }

                    LstProductos = new List<ProductoCant>(lpcan);

                }
            }

            NotifyOfPropertyChange(() => LstProductos);
            EstadoMot = false;
            Estado = false;
        }
        public void GuardarVenta(string cmbTipoVenta)
        {
            int numFilas = LstVenta.Count();
            if (numFilas > 0)
            {
                Venta v = new Venta();
                v.LstDetalle = new List<DetalleVenta>();
                v.LstPagos = new List<VentaPago>();
                v.LstDetalleServicio = new List<DetalleVentaServicio>();
                //guardar datos de la venta
                //completar
                if (tipoVenta[cmbTipoVenta] == 0)
                    v.TipoDocPago = "Boleta";
                else
                {
                    v.TipoDocPago = "Factura";
                    //validar que los datos de ruc y razon social
                    if (!string.IsNullOrEmpty(TxtRuc) && !string.IsNullOrEmpty(TxtRazonSocial))
                    {
                        v.Ruc = TxtRuc;
                        v.RazonSocial = TxtRazonSocial;
                    }
                    else
                    {
                        MessageBox.Show("Falta ingresar Ruc o Razón Social", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                }

                v.NumDocPago = null;
                v.TipoVenta = "Tienda";
                v.Estado = 1;
                v.FechaReg = System.DateTime.Now;
                v.IdUsuario = Convert.ToInt32(Thread.CurrentPrincipal.Identity.Name);
                //idCliente desde la tarjeta de este si es que hay
                if (!string.IsNullOrEmpty(TxtCliente))
                {
                    v.IdCliente = Convert.ToInt32(cliente.Id);
                    v.CodTarjeta = Convert.ToInt32(TxtCliente);
                }
                else
                {
                    v.IdCliente = -1;
                    v.CodTarjeta = -1;
                }

                //guardar detalle de la venta
                foreach (DetalleVenta dv in lstVenta)
                {
                    v.LstDetalle.Add(dv);
                }
                v.Monto = total;
                v.Descuento = desc;
                v.Igv = igv_total;

                v.PtosGanados = Convert.ToInt32(v.Monto / PUNTO);

                foreach (VentaPago vp in lstPagos)
                {
                    if (vp.Nombre.Equals("Efectivo"))
                    {
                        vp.Monto -= Double.Parse(txtVuelto);
                    }
                    v.LstPagos.Add(vp);
                }

                //guardar detalle de servicios de la venta, si es que hay
                if (LstVentaServicios.Count() > 0)
                {
                    foreach (DetalleVentaServicio dvs in LstVentaServicios)
                    {
                        v.LstDetalleServicio.Add(dvs);
                    }
                }

                //insertar en la base de datos
                DBConexion db = new DBConexion();
                db.conn.Open();
                SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
                db.cmd.Transaction = trans;
                VentaSQL vsql = new VentaSQL(db);
                if (v.IdCliente == -1)
                {
                    int k = vsql.AgregarSinCliente(v);
                    if (k != 0)
                    {

                        NotaISSQL ntgw = new NotaISSQL();
                        NotaIS nota = new NotaIS();
                        AlmacenSQL asql = new AlmacenSQL();
                        nota.IdAlmacen = asql.BuscarAlmacen(-1, idTienda, 2).IdAlmacen;
                        // Logica de  Referencia de documento

                        //Si existe documento de referencia colocar el ID
                        nota.IdDoc = v.IdVenta;

                        nota.IdMotivo = 9;
                        nota.IdResponsable = v.IdUsuario;
                        nota.Observaciones = "Venta en Cajero";
                        nota.Tipo = 2;
                        List<ProductoCant> LstProductos = new List<ProductoCant>();
                        List<ProductoCant> lpcan = new List<ProductoCant>();

                        for (int i = 0; i < v.LstDetalle.Count; i++)
                        {
                            Producto p = new ProductoSQL().Buscar_por_CodigoProducto(v.LstDetalle.ElementAt(i).IdProducto);
                            ProductoCant pcan = new ProductoCant();
                            pcan.IdProducto = p.IdProducto;
                            pcan.CodigoProd = p.CodigoProd;
                            pcan.Nombre = p.Nombre;
                            pcan.CanAtender = v.LstDetalle.ElementAt(i).Cantidad.ToString();
                            lpcan.Add(pcan);

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

                        nota.LstProducto = LstProductos;

                        nota.IdNota = ntgw.AgregarNota(nota);

                        trans.Commit();
                        ntgw.AgregarNotaxSector(nota);
                        MessageBox.Show("Venta Realizada con Exito");
                        Limpiar();
                    }
                    else
                    {
                        trans.Rollback();
                        MessageBox.Show("Ocurrio un Error en el proceso");
                    }
                }
                else
                {
                    int k = vsql.Agregar(v);
                    if (k != 0)
                    {

                        NotaISSQL ntgw = new NotaISSQL();
                        NotaIS nota = new NotaIS();
                        AlmacenSQL asql = new AlmacenSQL();
                        nota.IdAlmacen = asql.BuscarAlmacen(-1, idTienda, 2).IdAlmacen;
                        // Logica de  Referencia de documento

                        //Si existe documento de referencia colocar el ID
                        nota.IdDoc = v.IdVenta;

                        nota.IdMotivo = 9;
                        nota.IdResponsable = v.IdUsuario;
                        nota.Observaciones = "Venta en Cajero";
                        nota.Tipo = 2;
                        List<ProductoCant> LstProductos = new List<ProductoCant>();
                        List<ProductoCant> lpcan = new List<ProductoCant>();

                        for (int i = 0; i < v.LstDetalle.Count; i++)
                        {
                            Producto p = new ProductoSQL().Buscar_por_CodigoProducto(v.LstDetalle.ElementAt(i).IdProducto);
                            ProductoCant pcan = new ProductoCant();
                            pcan.IdProducto = p.IdProducto;
                            pcan.CodigoProd = p.CodigoProd;
                            pcan.Nombre = p.Nombre;
                            pcan.CanAtender = v.LstDetalle.ElementAt(i).Cantidad.ToString();
                            lpcan.Add(pcan);

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

                        nota.LstProducto = LstProductos;

                        nota.IdNota = ntgw.AgregarNota(nota);

                        trans.Commit();

                        ntgw.AgregarNotaxSector(nota);
                        MessageBox.Show("Venta Realizada con Exito");
                        Limpiar();
                    }
                    else
                    {
                        trans.Rollback();
                        MessageBox.Show("Ocurrio un Error en el proceso");
                    }
                }

                if (v.TipoDocPago.Equals("Boleta"))
                {
                    GenerarPDFBoletaProductos(v);
                    if (v.LstDetalleServicio.Count() > 0)
                        GenerarPDFBoletaServicios(v);
                }
                else
                {
                    GenerarPDFFacturaProductos(v);
                    if (v.LstDetalleServicio.Count() > 0)
                        GenerarPDFFacturaServicios(v);
                }

            }
            else
            {
                MessageBox.Show("Debe ingreasar datos de la venta");
                return;
            }
        }
        public void SelectedItemChanged(object sender, MadeInHouse.Dictionary.DynamicGrid anaquel)
        {
            SelectedProduct = ((sender as DataGrid).SelectedItem as ProductoxTienda);

            if (SelectedProduct != null)
            {
                ProductoCant pc = new ProductoCant();
                pc.IdProducto = SelectedProduct.IdProducto;
                anaquel.SelectedProduct = pc;
                anaquel.UbicarSector(SelectedProduct.IdProducto, 4);
                TxtStockActual =  anaquel.StockActual.ToString();
                TxtCapacidad = anaquel.CapacidadActual.ToString();
                //(sender as DataGrid).SelectedItem = null;

            }
        }
        public void BuscarProductos(MadeInHouse.Dictionary.DynamicGrid almacen, MadeInHouse.Dictionary.DynamicGrid ubicacionCol)
        {
            if (TxtProducto == null || TxtProducto == "")
            {
                _windowManager.ShowWindow(new ProductoBuscarViewModel(_windowManager, this, 7, idTienda));
            }

            else
            {

                ProductoCant pc = new ProductoCant();
                //Buscar producto del textBox Inicial:
                if (productoSeleccionado == null)
                {
                    ProductoSQL prodSQL = new ProductoSQL();
                    List<Producto> lstProd;
                    lstProd = prodSQL.BuscarProducto(TxtProducto);
                    if (lstProd == null)
                        _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Producto no existente con ese código"));
                    else
                    {
                        pc.Nombre = lstProd[0].Nombre;
                        pc.IdProducto = lstProd[0].IdProducto;
                        pc.CodigoProd = TxtProducto;
                        productoSeleccionado = null;
                    }
                }
                else
                {
                    pc.Nombre = ProductoSeleccionado.Nombre;
                    pc.IdProducto = ProductoSeleccionado.IdProducto;
                    pc.CodigoProd = ProductoSeleccionado.CodigoProd;
                    productoSeleccionado = null;
                }

                ubicacionCol.SelectedProduct = pc;
                almacen.UbicarProducto(pc.IdProducto);
                pc = null;
            }
        }