Beispiel #1
0
        //public List<Stock> ValidarStockProductoMix(int productoID, int tipoDeUnidadID)
        //{

        //    var productosMix = GetListaProductosMixById(productoID);
        //    List<Stock> listaStockProdMix = new List<Stock>();

        //    foreach (var prodMix in productosMix)
        //    {
        //        Stock stockProd = StockRP
        //           .GetAll()
        //           .Include(p => p.Producto)
        //           .Include(t => t.TipoDeUnidad)
        //           .Where(p => p.ProductoID == prodMix.ProductoDelMix.ID)
        //           .Where(t => t.TipoDeUnidadID == tipoDeUnidadID)
        //           .SingleOrDefault();

        //        listaStockProdMix.Add(stockProd);
        //    }

        //    return listaStockProdMix;
        //}


        internal void UpdateStockAuxiliar()
        {
            var stock = StockRP.GetAll().ToList();

            foreach (var item in stock)
            {
                //Preparamos el Stock Auxiliar
                Producto     prod = ProductoRP.GetByID(item.ProductoID);
                TipoDeUnidad tu   = TipoDeUnidadRP.GetByID(item.TipoDeUnidadID);


                item.ProductoAuxiliar     = prod.NombreAuxiliar;
                item.TipoDeUnidadAuxiliar = tu.Nombre;

                StockRP.Update(item);
                StockRP.Save();
            }
        }
Beispiel #2
0
        public IHttpActionResult CreateStock(StockDTO stock)
        {
            if (!ModelState.IsValid)
            {
                log.Error("Formulario con datos inexistentes o incorrectos.");
                return(BadRequest());
            }


            Producto     producto = productoBL.GetProductoById(stock.ProductoID);
            TipoDeUnidad tunidad  = tipoDeUnidadBL.GetTipoDeUnidadById(stock.TipoDeUnidadID);

            Stock stockIngresado = stockBL.ValidarStockProducto(stock.ProductoID, stock.TipoDeUnidadID);

            if (stockIngresado != null)
            {
                stockIngresado.Cantidad = stockIngresado.Cantidad + stock.Cantidad;
                stockBL.UpdateStock(stockIngresado);

                log.Info("Stock Actualizado satisfactoriamente. ID: " + stockIngresado.ID);
            }
            else
            {
                Stock stockNuevo = new Stock();

                stockNuevo.ProductoID           = stock.ProductoID;
                stockNuevo.TipoDeUnidadID       = stock.TipoDeUnidadID;
                stockNuevo.Cantidad             = stock.Cantidad;
                stockNuevo.ProductoAuxiliar     = producto.NombreAuxiliar;
                stockNuevo.TipoDeUnidadAuxiliar = tunidad.Nombre;

                stockBL.AddStock(stockNuevo);

                log.Info("Stock Agregado satisfactoriamente");
            }



            return(Ok());
        }
Beispiel #3
0
 public void RemoveTipoDeUnidad(TipoDeUnidad tipoDeUnidad)
 {
     tipoDeUnidadRP.Delete(tipoDeUnidad);
     tipoDeUnidadRP.Save();
 }
Beispiel #4
0
 public void UpdateTipoDeUnidad(TipoDeUnidad tipoDeUnidad)
 {
     tipoDeUnidadRP.Update(tipoDeUnidad);
     tipoDeUnidadRP.Save();
 }
Beispiel #5
0
 public void AddTipoDeUnidad(TipoDeUnidad tipoDeUnidad)
 {
     tipoDeUnidadRP.Add(tipoDeUnidad);
     tipoDeUnidadRP.Save();
 }
Beispiel #6
0
        public IHttpActionResult Compra(CompraDTO compraDTO)
        {
            if (!ModelState.IsValid)
            {
                log.Error("Formulario con datos incorrectos o insuficientes.");
                return(BadRequest());
            }

            //Proveedor proveedor = proveedorBL.GetProveedorById(compraDTO.ProveedorID);
            Proveedor proveedor = _UOWCompra.ProveedorRepository.GetByID(compraDTO.ProveedorID);

            if (proveedor == null)
            {
                log.Error("No se ha encontrado Proveedor con el ID: " + compraDTO.ProveedorID);
                return(BadRequest());
            }


            var compra = Mapper.Map <CompraDTO, Compra>(compraDTO);

            //Verificamos si ya se cargó una compra con el mismo NumeroCompra
            var ultimaCompra = _UOWCompra.CompraRepository
                               .GetAll()
                               .Max(p => p.NumeroCompra);

            if (compra.NumeroCompra <= ultimaCompra)
            {
                compra.NumeroCompra = ultimaCompra + 1;
            }

            //compraBL.AddCompra(compra);
            _UOWCompra.CompraRepository.Add(compra);

            //log.Info("Compra. Viejo Saldo Proveedor: " + compraDTO.Debe);

            //Actualizamos el Saldo en base a la Entrega de Efectivo
            // proveedor.Debe = compraDTO.Debe;
            //proveedorBL.UpdateProveedor(proveedor);
            proveedor.Debe        = compraDTO.Debe;
            proveedor.SaldoAfavor = compraDTO.SaldoAfavor;
            _UOWCompra.ProveedorRepository.Update(proveedor);

            log.Info("Compra. Nuevo Saldo Proveedor: " + proveedor.Debe);



            if (compra.ProductosXCompra.Count != 0)
            {
                //Una vez cargada la venta, actualizamos Stock
                foreach (var item in compra.ProductosXCompra)
                {
                    // Producto producto = productoBL.GetProductoById(item.ProductoID);


                    //Stock stock = stockBL.ValidarStockProducto(item.ProductoID, item.TipoDeUnidadID);
                    Stock stock = _UOWCompra.StockRepository.GetAll().Where(s => s.ProductoID == item.ProductoID && s.TipoDeUnidadID == item.TipoDeUnidadID).SingleOrDefault();

                    if (stock != null)
                    {
                        stock.Cantidad = stock.Cantidad + item.Cantidad;
                        //stockBL.UpdateStock(stock);
                        _UOWCompra.StockRepository.Update(stock);

                        log.Info("Stock actualizado o creado para producto con ID: " + item.ProductoID + ". Nueva Cantidad: " + stock.Cantidad);
                    }
                    else
                    {
                        Stock stockNuevo = new Stock();

                        Producto     prod    = productoBL.GetProductoById(item.ProductoID);
                        TipoDeUnidad tunidad = clasificacionBL.GetTipoDeUnidadById(item.TipoDeUnidadID);

                        stockNuevo.ProductoID           = item.ProductoID;
                        stockNuevo.TipoDeUnidadID       = item.TipoDeUnidadID;
                        stockNuevo.Cantidad             = item.Cantidad;
                        stockNuevo.ProductoAuxiliar     = prod.NombreAuxiliar;
                        stockNuevo.TipoDeUnidadAuxiliar = tunidad.Nombre;

                        //stockBL.AddStock(stockNuevo);
                        _UOWCompra.StockRepository.Add(stockNuevo);

                        log.Info("Stock actualizado o creado para producto con ID: " + item.ProductoID + ". Nueva Cantidad: " + stockNuevo.Cantidad);
                    }
                }
            }

            //Actualizamos valores
            _UOWCompra.Save();

            log.Info("Compra generada satisfactoriamente.");

            return(Ok());
        }
Beispiel #7
0
        public IHttpActionResult UpdateCompra(CompraDTO compraDTO)
        {
            if (!ModelState.IsValid)
            {
                log.Error("Formulario con datos incorrectos o insuficientes.");
                return(BadRequest());
            }

            //var compraInDB = compraBL.GetCompraById(compraDTO.ID);
            var compraInDB = _UOWCompra.CompraRepository.GetByID(compraDTO.ID);

            if (compraInDB == null)
            {
                log.Error("No se encontró compra existente con el ID: " + compraDTO.ID);
                return(NotFound());
            }

            //Proveedor proveedor = proveedorBL.GetProveedorById(compraDTO.ProveedorID);
            Proveedor proveedor = _UOWCompra.ProveedorRepository.GetByID(compraDTO.ProveedorID);

            log.Info("Compra. Viejo Saldo Proveedor: " + compraDTO.Debe);

            //Actualizamos el Saldo en base a la Entrega de Efectivo
            proveedor.Debe        = compraDTO.Debe;
            proveedor.SaldoAfavor = compraDTO.SaldoAfavor;
            //proveedorBL.UpdateProveedor(proveedor);
            _UOWCompra.ProveedorRepository.Update(proveedor);

            log.Info("Compra. Nuevo Saldo Proveedor: " + proveedor.Debe);

            ////actualizo stock
            //if (compraDTO.ProductosXCompra != null)
            //{
            //    foreach (var item in compraDTO.ProductosXCompra)
            //    {

            //        var prdXcompra = productoXCompraBL.GetProductoXCompraById(item.ID);

            //        Stock stock = stockBL.ValidarStockProducto(item.ProductoID, item.TipoDeUnidadID);

            //        if (prdXcompra.Cantidad > item.Cantidad)
            //        {
            //            var cantidad = prdXcompra.Cantidad - item.Cantidad;
            //            stock.Cantidad = stock.Cantidad - cantidad;
            //            //stockBL.UpdateStock(stock);
            //            _UOWCompra.StockRepository.Update(stock);
            //        }

            //        if (item.Cantidad > prdXcompra.Cantidad)
            //        {
            //            var cantidad = item.Cantidad - prdXcompra.Cantidad;
            //            stock.Cantidad = stock.Cantidad + cantidad;
            //            //stockBL.UpdateStock(stock);
            //            _UOWCompra.StockRepository.Update(stock);
            //        }

            //        log.Info("Stock actualizado para producto con ID: " + item.ProductoID + ". Nueva Cantidad: " + stock.Cantidad);
            //    }

            //    foreach (var item in compraDTO.ProductosXCompra)
            //    {

            //        foreach (var item2 in compraInDB.ProductosXCompra)
            //        {
            //            if (item.ID == item2.ID)
            //            {
            //                ProductoXCompra prodAActualizar = _UOWCompra.ProductosXCompraRepository.GetByID(item.ID);

            //                prodAActualizar.Cantidad = item.Cantidad;
            //                prodAActualizar.Importe = item.Importe;
            //                prodAActualizar.Descuento = item.Descuento;
            //                prodAActualizar.ImporteDescuento = item.ImporteDescuento;
            //                prodAActualizar.Iibbbsas = item.Iibbbsas;
            //                prodAActualizar.Iibbcaba = item.Iibbcaba;
            //                prodAActualizar.Iva = item.Iva;
            //                prodAActualizar.PrecioUnitario = item.PrecioUnitario;
            //                prodAActualizar.Total = item.Total;
            //                prodAActualizar.ProductoID = item.ProductoID;
            //                prodAActualizar.CompraID = item.CompraID;
            //                prodAActualizar.TipoDeUnidadID = item.TipoDeUnidadID;

            //                _UOWCompra.ProductosXCompraRepository.Update(prodAActualizar);

            //                log.Info("Datos actualizados para producto con ID: " + item2.ProductoID);

            //                //item2.Cantidad = item.Cantidad;
            //                //item2.Importe = item.Importe;
            //                //item2.Descuento = item.Descuento;
            //                //item2.ImporteDescuento = item.ImporteDescuento;
            //                //item2.Iibbbsas = item.Iibbbsas;
            //                //item2.Iibbcaba = item.Iibbcaba;
            //                //item2.Iva = item.Iva;
            //                //item2.PrecioUnitario = item.PrecioUnitario;
            //                //item2.Total = item.Total;
            //                //item2.ProductoID = item.ProductoID;
            //                //item2.CompraID = item.CompraID;
            //                //item2.TipoDeUnidadID = item.TipoDeUnidadID;

            //            }
            //        }
            //    }
            //}

            Compra compraAActualizar = _UOWCompra.CompraRepository.GetByID(compraInDB.ID);

            compraAActualizar.Factura          = compraDTO.Factura;
            compraAActualizar.NoConcretado     = compraDTO.NoConcretado;
            compraAActualizar.TipoFactura      = compraDTO.TipoFactura;
            compraAActualizar.Local            = compraDTO.Local;
            compraAActualizar.SumaTotal        = compraDTO.SumaTotal;
            compraAActualizar.EntregaEfectivo  = compraDTO.EntregaEfectivo;
            compraAActualizar.DescuentoPorc    = compraDTO.DescuentoPorc;
            compraAActualizar.Descuento        = compraDTO.Descuento;
            compraAActualizar.Subtotal         = compraDTO.Subtotal;
            compraAActualizar.ImporteNoGravado = compraDTO.ImporteNoGravado;
            compraAActualizar.Iva             = compraDTO.Iva;
            compraAActualizar.ImporteIva      = compraDTO.ImporteIva;
            compraAActualizar.Iibbbsas        = compraDTO.Iibbbsas;
            compraAActualizar.ImporteIibbbsas = compraDTO.ImporteIibbbsas;
            compraAActualizar.Iibbcaba        = compraDTO.Iibbcaba;
            compraAActualizar.ImporteIibbcaba = compraDTO.ImporteIibbcaba;
            compraAActualizar.PercIva         = compraDTO.PercIva;
            compraAActualizar.ImportePercIva  = compraDTO.ImportePercIva;
            compraAActualizar.Total           = compraDTO.Total;
            compraAActualizar.TotalGastos     = compraDTO.TotalGastos;
            compraAActualizar.Fecha           = DateTime.Parse(compraDTO.Fecha);

            _UOWCompra.CompraRepository.Update(compraAActualizar);



            //Borramos todos los productos de la compra, para luego agregarlos nuevamente junto con sus actualizados
            bool borrado = false;

            borrado = DeleteProductosParaUpdate(compraInDB);

            if (!borrado)
            {
                log.Error("Se ha producido un error intentando borrar los productos de la venta al momento de actualizar. Venta ID: " + compraInDB.ID);
                return(BadRequest());
            }

            //Agregamos nuevamente los productos a la compra, actualizados

            if (compraDTO.ProductosXCompra != null)
            {
                foreach (var prodCompra in compraDTO.ProductosXCompra)
                {
                    //UPDATE PRODUCTOS DE VENTA MAYORISTA
                    _UOWCompra.ProductosXCompraRepository.Add(prodCompra);
                }

                //Una vez cargada la venta, actualizamos Stock
                foreach (var item in compraDTO.ProductosXCompra)
                {
                    //Producto producto = productoBL.GetProductoById(item.ProductoID);


                    //Stock stock = stockBL.ValidarStockProducto(item.ProductoID, item.TipoDeUnidadID);
                    Stock stock = _UOWCompra.StockRepository
                                  .GetAll()
                                  .Where(s => s.ProductoID == item.ProductoID && s.TipoDeUnidadID == item.TipoDeUnidadID)
                                  .SingleOrDefault();

                    if (stock != null)
                    {
                        stock.Cantidad = stock.Cantidad + item.Cantidad;
                        //stockBL.UpdateStock(stock);
                        _UOWCompra.StockRepository.Update(stock);

                        log.Info("Stock actualizado o creado para producto con ID: " + item.ProductoID + ". Nueva Cantidad: " + stock.Cantidad);
                    }
                    else
                    {
                        Stock stockNuevo = new Stock();

                        Producto     prod    = productoBL.GetProductoById(item.ProductoID);
                        TipoDeUnidad tunidad = clasificacionBL.GetTipoDeUnidadById(item.TipoDeUnidadID);

                        stockNuevo.ProductoID           = item.ProductoID;
                        stockNuevo.TipoDeUnidadID       = item.TipoDeUnidadID;
                        stockNuevo.Cantidad             = item.Cantidad;
                        stockNuevo.ProductoAuxiliar     = prod.NombreAuxiliar;
                        stockNuevo.TipoDeUnidadAuxiliar = tunidad.Nombre;

                        //stockBL.AddStock(stockNuevo);
                        _UOWCompra.StockRepository.Add(stockNuevo);

                        log.Info("Stock actualizado o creado para producto con ID: " + item.ProductoID + ". Nueva Cantidad: " + stockNuevo.Cantidad);
                    }
                }
            }



            //compraInDB.Factura = compraDTO.Factura;
            //compraInDB.NoConcretado = compraDTO.NoConcretado;
            //compraInDB.TipoFactura = compraDTO.TipoFactura;
            //compraInDB.SumaTotal = compraDTO.SumaTotal;
            //compraInDB.DescuentoPorc = compraDTO.DescuentoPorc;
            //compraInDB.Descuento = compraDTO.Descuento;
            //compraInDB.Subtotal = compraDTO.Subtotal;
            //compraInDB.ImporteNoGravado = compraDTO.ImporteNoGravado;
            //compraInDB.Iva = compraDTO.Iva;
            //compraInDB.ImporteIva = compraDTO.ImporteIva;
            //compraInDB.Iibbbsas = compraDTO.Iibbbsas;
            //compraInDB.ImporteIibbbsas = compraDTO.ImporteIibbbsas;
            //compraInDB.Iibbcaba = compraDTO.Iibbcaba;
            //compraInDB.ImporteIibbcaba = compraDTO.ImporteIibbcaba;
            //compraInDB.PercIva = compraDTO.PercIva;
            //compraInDB.ImportePercIva = compraDTO.ImportePercIva;
            //compraInDB.Total = compraDTO.Total;
            //compraInDB.TotalGastos = compraDTO.TotalGastos;

            //compraBL.UpdateCompra(compraInDB);

            //Actualizamos la operación
            _UOWCompra.Save();

            log.Info("Compra actualizada satisfactoriamente. ID: " + compraAActualizar.ID);

            return(Ok());
        }