public ItemOutputStockApp(IFactoryConnection efc) { _epr = new ItemOutputStockRepo(efc); _stockManagement = new StockManagement(efc); _stockItemApp = new StockItemApp(efc); _unitMeasureConversionApp = new UnitMeasureConversionApp(efc); Logs = new List <Log>(); }
/// <summary> /// Verifica as configurações do item para Saída. /// </summary> /// <param name="stockItemId">ID item de estoque.</param> /// <param name="localStockId">ID do local de estoque.</param> /// <param name="Qtd">Quantidade que saiara do estoque.</param> /// <param name="itemOutputStockId">ID do item do movimento de estoque, calculo do estoque irá desconsiderar saída existente no saldo. Parametro não obrigatório.</param> /// <returns></returns> public bool ValidItem(int stockItemId, int localStockId, int unitMeasurId, decimal qtd, int itemOutputStockId = 0) { _itemInputStockApp = new ItemInputStockApp(connection); _itemOutputStockApp = new ItemOutputStockApp(connection); _unitMeasureConversionApp = new UnitMeasureConversionApp(connection); _stockItemApp = new StockItemApp(connection); _localStockApp = new LocalStockApp(connection); var stockItem = _stockItemApp.FindId(stockItemId); var localStock = _localStockApp.FindId(localStockId); var qtdOldOutput = _unitMeasureConversionApp .Convert( stockItem.UnitMeasureId, unitMeasurId, stockItemId, stockItem.FamilyId, _itemOutputStockApp .FindId(itemOutputStockId)?.StandardQuantity ?? 0); if (stockItem.AllowsUnavaliableMovement) { return(true); } var balance = BalanceAvailable(stockItemId, localStockId, unitMeasurId) + qtdOldOutput; if (stockItem.EvaluateAvailability) { if (balance < qtd) { Logs.Add(new Log { Description = "Não é permitido movimentar item sem disponibilidade.", ProcessStatus = ProcessStatus.Alert, Identification = stockItem.Code + " - " + stockItem.Description }); return(false); } } if (stockItem.NotNegativeBalance && balance < 0) { Logs.Add(new Log { Description = "Não é permitido movimentar item com saldo negativo.", ProcessStatus = ProcessStatus.Alert, Identification = stockItem.Code + " - " + stockItem.Description }); return(false); } return(true); }
/// <summary> /// Saldo Disponível /// </summary> /// <param name="stockItemId">ID do item de estoque.</param> /// <param name="localStockId">ID do local de estoque.</param> /// <returns></returns> public decimal BalanceAvailable(int stockItemId, int localStockId, int unitMeasurId) { _itemInputStockApp = new ItemInputStockApp(connection); _itemOutputStockApp = new ItemOutputStockApp(connection); _stockItemApp = new StockItemApp(connection); _localStockApp = new LocalStockApp(connection); _unitMeasureConversionApp = new UnitMeasureConversionApp(connection); var qtdInput = _itemInputStockApp.GetQuantityTotal(stockItemId, localStockId); var qtdOutput = _itemOutputStockApp.GetQuantityTotal(stockItemId, localStockId); var stockItem = _stockItemApp.FindId(stockItemId); return(_unitMeasureConversionApp.Convert(stockItem.UnitMeasureId, unitMeasurId, stockItemId, stockItem.FamilyId, qtdInput - qtdOutput)); }
public UnitMeasureConversionController(IFactoryConnection connection) { _connection = connection; _UnitMeasureConversionApp = new UnitMeasureConversionApp(connection); }
public ItemInputStockApp(IFactoryConnection efc) { _epr = new ItemInputStockRepo(efc); _stockItemApp = new StockItemApp(efc); _unitMeasureConversionApp = new UnitMeasureConversionApp(efc); }