public async Task <Dal.Entities.PurchaseOrder> AddPurchaseOrder(Dal.Entities.PurchaseOrder purchaseOrder) { Guard.Argument(purchaseOrder, nameof(purchaseOrder)).NotNull(); purchaseOrder.Status = PurchaseOrderStatus.Pending; await ValidatePurchaseOrder(purchaseOrder); purchaseOrder.Created = DateTimeOffset.UtcNow; purchaseOrder.Updated = DateTimeOffset.UtcNow; _unitOfWork.PurchaseOrdeRepository.Insert(purchaseOrder); await _unitOfWork.SaveChanges(); return(purchaseOrder); }
public async Task <Dal.Entities.PurchaseOrder> UpdatePurchaseOrder(Dal.Entities.PurchaseOrder purchaseOrder) { Guard.Argument(purchaseOrder, nameof(purchaseOrder)).NotNull(); await ValidatePurchaseOrder(purchaseOrder); var currentPurchaseOrder = await GetPurchaseOrderById(purchaseOrder.Id); var mapper = ServiceMapper.GetMapper(); mapper.Map(purchaseOrder, currentPurchaseOrder); currentPurchaseOrder.Updated = DateTimeOffset.UtcNow; await _unitOfWork.SaveChanges(); return(currentPurchaseOrder); }
public PurchaseOrderStatus GetPurchaseOrderStatus(Dal.Entities.PurchaseOrder purchaseOrder) { if (purchaseOrder == null) { throw new ArgumentNullException(nameof(purchaseOrder)); } if (purchaseOrder.PurchaseOrderItems.All(poi => poi.ReceivedQuantity >= poi.Quantity)) { return(PurchaseOrderStatus.Received); } if (purchaseOrder.PurchaseOrderItems.All(poi => poi.ReceivedQuantity == 0)) { return(PurchaseOrderStatus.Pending); } return(PurchaseOrderStatus.PartiallyReceived); }
private async Task ValidatePurchaseOrder(Dal.Entities.PurchaseOrder purchaseOrder) { var validator = new PurchaseOrderValidator(); var validateResult = await validator.ValidateAsync(purchaseOrder); if (validateResult.IsValid) { return; } throw new ServiceException(validateResult.Errors.Select(e => new ErrorMessage() { Code = ErrorCodes.Model_Validation_Error_Code, Meta = new { e.ErrorCode, e.ErrorMessage, e.PropertyName }, Message = e.ErrorMessage }).ToArray()); }
public async Task <GrnReport> GetGrnReport(long id) { var grn = await _grnService.GetByIdIncludeWithProduct(id); var supplier = await _supplierService.GetSupplierById(grn.SupplierId); var wareHouse = await _wareHouseService.GetWareHouseById(grn.WareHouseId); Dal.Entities.PurchaseOrder purchaseOrder = !grn.PurchaseOrderId.HasValue ? null : await _purchaseOrderService.GetPurchaseOrderById(grn.PurchaseOrderId.Value); return(new GrnReport() { GrnNo = grn.GrnNo, Date = grn.Created, GrnType = grn.Type.GetDescription(), PurchaseOrderNumber = purchaseOrder?.PoNumber, SupplierName = supplier.SupplierName, SupplierCode = supplier.Code, SupplierInvoiceNo = grn?.SupplierInvoiceNumber, WareHouse = wareHouse.Code, WareHouseName = wareHouse.Name, WareHouseAddressLine1 = wareHouse.Address.AddressLine1, WareHouseAddressLine2 = wareHouse.Address.AddressLine2, City = wareHouse.Address.City.CityName, Telephone = wareHouse?.Phone, GrnReportItems = grn.GoodReceivedNoteItems.Select(item => new GrnReportItem() { ExpiredDate = item.ExpiredDate, ProductId = item.Product.Code, ProductName = item.Product.Description, Quantity = item.Quantity, UnitCost = item.UnitCost, UnitOfMeasure = item.Product.MassUnit.ToString() }).ToList() }); }