public RetailPurchaseInvoice VIsConfirmableRetailPurchaseInvoiceDetails(RetailPurchaseInvoice retailPurchaseInvoice, IRetailPurchaseInvoiceDetailService _retailPurchaseInvoiceDetailService, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService, IWarehouseItemService _warehouseItemService) { IList <RetailPurchaseInvoiceDetail> retailPurchaseInvoiceDetails = _retailPurchaseInvoiceDetailService.GetObjectsByRetailPurchaseInvoiceId(retailPurchaseInvoice.Id); if (!retailPurchaseInvoiceDetails.Any()) { retailPurchaseInvoice.Errors.Add("Generic", "RetailPurchaseInvoiceDetails Tidak ada"); } else { IRetailPurchaseInvoiceDetailValidator validator = _retailPurchaseInvoiceDetailService.GetValidator(); foreach (var retailPurchaseInvoiceDetail in retailPurchaseInvoiceDetails) { retailPurchaseInvoiceDetail.Errors = new Dictionary <string, string>(); if (!validator.ValidConfirmObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _warehouseItemService)) { retailPurchaseInvoice.Errors.Add("Generic", "Harus confirmable semua"); return(retailPurchaseInvoice); } } } return(retailPurchaseInvoice); }
public RetailPurchaseInvoiceDetail ConfirmObject(RetailPurchaseInvoiceDetail retailPurchaseInvoiceDetail, IRetailPurchaseInvoiceService _retailPurchaseInvoiceService, IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService, IItemService _itemService, IBarringService _barringService, IStockMutationService _stockMutationService) { if (_validator.ValidConfirmObject(retailPurchaseInvoiceDetail, _retailPurchaseInvoiceService, _warehouseItemService)) { RetailPurchaseInvoice retailPurchaseInvoice = _retailPurchaseInvoiceService.GetObjectById(retailPurchaseInvoiceDetail.RetailPurchaseInvoiceId); WarehouseItem warehouseItem = _warehouseItemService.FindOrCreateObject(retailPurchaseInvoice.WarehouseId, retailPurchaseInvoiceDetail.ItemId); Item item = _itemService.GetObjectById(retailPurchaseInvoiceDetail.ItemId); StockMutation stockMutation = new StockMutation() { ItemId = retailPurchaseInvoiceDetail.ItemId, ItemCase = Core.Constants.Constant.ItemCase.Ready, Status = Core.Constants.Constant.MutationStatus.Addition, Quantity = retailPurchaseInvoiceDetail.Quantity, SourceDocumentCode = retailPurchaseInvoice.Code, SourceDocumentId = retailPurchaseInvoice.Id, SourceDocumentType = Core.Constants.Constant.SourceDocumentType.RetailPurchaseInvoice, SourceDocumentDetailCode = retailPurchaseInvoiceDetail.Code, SourceDocumentDetailId = retailPurchaseInvoiceDetail.Id, SourceDocumentDetailType = Core.Constants.Constant.SourceDocumentDetailType.RetailPurchaseInvoiceDetail, WarehouseId = retailPurchaseInvoice.WarehouseId, WarehouseItemId = warehouseItem.Id }; decimal itemPrice = retailPurchaseInvoiceDetail.Amount / retailPurchaseInvoiceDetail.Quantity; item.AvgPrice = _itemService.CalculateAndUpdateAvgPrice(item, retailPurchaseInvoiceDetail.Quantity, itemPrice); stockMutation = _stockMutationService.CreateObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService); stockMutation.CreatedAt = (DateTime)retailPurchaseInvoice.ConfirmationDate.GetValueOrDefault(); _stockMutationService.UpdateObject(stockMutation, _warehouseService, _warehouseItemService, _itemService, _barringService); _stockMutationService.StockMutateObject(stockMutation, _itemService, _barringService, _warehouseItemService); retailPurchaseInvoiceDetail.CoGS = retailPurchaseInvoiceDetail.Quantity * item.AvgPrice; retailPurchaseInvoiceDetail = _repository.ConfirmObject(retailPurchaseInvoiceDetail); } return(retailPurchaseInvoiceDetail); }