private void AddStockAndMovement(CreateBoxVM entity, BoxType boxtype, int totalProductItems) { try { var stock = _unitOfWork.Repository <Stock>().Find(x => x.ProductID == entity.ProductID && x.ClientID == entity.ClientID); if (stock == null) { stock = Stock.FactoryCreate(entity.ClientID, entity.ProductID); stock.AddMovementInput(totalProductItems); _unitOfWork.Repository <Stock>().Add(stock); } else { stock.AddMovementInput(totalProductItems); _unitOfWork.Repository <Stock>().Update(stock); } } catch (CustomException exc) { throw exc; } catch (Exception ex) { throw CustomException.Create <BoxApplicationService>("Unexpected error fetching add boxes", nameof(this.Add), ex); } }
public void Add(CreateBoxVM entity) { try { _unitOfWork.SetTrackAll(); var boxtype = _unitOfWork.Repository <BoxType>().GetById(entity.BoxTypeID); int totalProductItemsToStock = 0; foreach (var barcode in entity.TagsBarcodes) { Box box = _unitOfWork.Repository <Box>().Find(b => b.GraphicCodes.BarcodeEAN13 == barcode) ?? Box.FactoryCreate(boxtype, barcode); if (entity.HasMovementStock) { int totalItemsByBox = SumTotalProductItemsForStock(entity, boxtype); totalProductItemsToStock += totalItemsByBox; box.StoreProductsItems(entity.ProductID, totalItemsByBox); } _unitOfWork.Repository <Box>().AddUpdate(box); } if (entity.HasMovementStock) { AddStockAndMovement(entity, boxtype, totalProductItemsToStock); } _unitOfWork.CommitSync(); } catch (CustomException exc) { throw exc; } catch (Exception ex) { throw CustomException.Create <BoxApplicationService>("Unexpected error fetching add boxes", nameof(this.Add), ex); } }
private int SumTotalProductItemsForStock(CreateBoxVM entity, BoxType boxtype) { var totalProductItems = entity.HasAutoCompleteItems ? boxtype.MaxProductsItems : entity.TotalItemsinBox; return(totalProductItems); }