public IActionResult PurchaseOrder(int id) { var purchaseOrder = _purchasingService.GetPurchaseOrderById(id); Dto.Purchasing.PurchaseOrder purchaseOrderDto = new Dto.Purchasing.PurchaseOrder(); purchaseOrderDto = new Dto.Purchasing.PurchaseOrder() { Id = purchaseOrder.Id, VendorId = purchaseOrder.VendorId.Value, VendorName = purchaseOrder.Vendor.Party.Name, OrderDate = purchaseOrder.Date, PaymentTermId = purchaseOrder.PaymentTermId, ReferenceNo = purchaseOrder.ReferenceNo, Status = (int)purchaseOrder.Status.GetValueOrDefault() }; foreach (var item in purchaseOrder.PurchaseOrderLines) { var line = new Dto.Purchasing.PurchaseOrderLine() { Id = item.Id, ItemId = item.ItemId, MeasurementId = item.MeasurementId, Quantity = item.Quantity, Amount = item.Amount, Discount = item.Discount, RemainingQtyToInvoice = item.GetRemainingQtyToInvoice(), }; purchaseOrderDto.PurchaseOrderLines.Add(line); } return(new ObjectResult(purchaseOrderDto)); }
public IActionResult PurchaseOrders() { var purchaseOrders = _purchasingService.GetPurchaseOrders(); IList <Dto.Purchasing.PurchaseOrder> purchaseOrdersDto = new List <Dto.Purchasing.PurchaseOrder>(); foreach (var purchaseOrder in purchaseOrders) { var purchaseOrderDto = new Dto.Purchasing.PurchaseOrder() { Id = purchaseOrder.Id, No = purchaseOrder.No, VendorId = purchaseOrder.VendorId.Value, VendorName = purchaseOrder.Vendor.Party.Name, OrderDate = purchaseOrder.Date, ReferenceNo = purchaseOrder.ReferenceNo, Status = (int)purchaseOrder.Status.GetValueOrDefault() }; foreach (var line in purchaseOrder.PurchaseOrderLines) { var lineDto = new Dto.Purchasing.PurchaseOrderLine() { ItemId = line.ItemId, MeasurementId = line.MeasurementId, Quantity = line.Quantity, Amount = line.Amount, Discount = line.Discount, RemainingQtyToInvoice = line.GetRemainingQtyToInvoice(), }; purchaseOrderDto.PurchaseOrderLines.Add(lineDto); } purchaseOrdersDto.Add(purchaseOrderDto); } return(new ObjectResult(purchaseOrdersDto)); }
public IActionResult SavePurchaseOrder([FromBody] Dto.Purchasing.PurchaseOrder purchaseOrderDto) { string[] errors = null; if (!ModelState.IsValid) { errors = new string[ModelState.ErrorCount]; foreach (var val in ModelState.Values) { for (int i = 0; i < ModelState.ErrorCount; i++) { errors[i] = val.Errors[i].ErrorMessage; } } return(new BadRequestObjectResult(errors)); } try { bool isNew = purchaseOrderDto.Id == 0; Core.Domain.Purchases.PurchaseOrderHeader purchaseOrder = null; if (isNew) { purchaseOrder = new Core.Domain.Purchases.PurchaseOrderHeader(); } else { purchaseOrder = _purchasingService.GetPurchaseOrderById(purchaseOrderDto.Id); } purchaseOrder.ReferenceNo = purchaseOrderDto.ReferenceNo; purchaseOrder.PaymentTermId = purchaseOrderDto.PaymentTermId; purchaseOrder.VendorId = purchaseOrderDto.VendorId; purchaseOrder.Date = purchaseOrderDto.OrderDate; foreach (var line in purchaseOrderDto.PurchaseOrderLines) { if (!isNew) { var existingLine = purchaseOrder.PurchaseOrderLines.Where(id => id.Id == line.Id).FirstOrDefault(); if (purchaseOrder.PurchaseOrderLines.Where(id => id.Id == line.Id).FirstOrDefault() != null) { existingLine.Amount = line.Amount.GetValueOrDefault(); existingLine.Discount = line.Discount.GetValueOrDefault(); existingLine.Quantity = line.Quantity.GetValueOrDefault(); existingLine.ItemId = line.ItemId.GetValueOrDefault(); existingLine.MeasurementId = line.MeasurementId.GetValueOrDefault(); } else { var purchaseOrderLine = new Core.Domain.Purchases.PurchaseOrderLine(); purchaseOrderLine.Amount = line.Amount.GetValueOrDefault(); purchaseOrderLine.Discount = line.Discount.GetValueOrDefault(); purchaseOrderLine.Quantity = line.Quantity.GetValueOrDefault(); purchaseOrderLine.ItemId = line.ItemId.GetValueOrDefault(); purchaseOrderLine.MeasurementId = line.MeasurementId.GetValueOrDefault(); purchaseOrder.PurchaseOrderLines.Add(purchaseOrderLine); } } else { var purchaseOrderLine = new Core.Domain.Purchases.PurchaseOrderLine(); purchaseOrderLine.Amount = line.Amount.GetValueOrDefault(); purchaseOrderLine.Discount = line.Discount.GetValueOrDefault(); purchaseOrderLine.Quantity = line.Quantity.GetValueOrDefault(); purchaseOrderLine.ItemId = line.ItemId.GetValueOrDefault(); purchaseOrderLine.MeasurementId = line.MeasurementId.GetValueOrDefault(); purchaseOrder.PurchaseOrderLines.Add(purchaseOrderLine); } } if (isNew) { _purchasingService.AddPurchaseOrder(purchaseOrder, true); } else { var deleted = (from line in purchaseOrder.PurchaseOrderLines where !purchaseOrderDto.PurchaseOrderLines.Any(x => x.Id == line.Id) select line).ToList(); foreach (var line in deleted) { if (line.PurchaseInvoiceLines.Count() > 0) { throw new Exception("The line cannot be deleted. An invoice line is created from the item."); } } foreach (var line in deleted) { purchaseOrder.PurchaseOrderLines.Remove(line); } _purchasingService.UpdatePurchaseOrder(purchaseOrder); } return(new OkObjectResult(Ok())); } catch (Exception ex) { errors = new string[1] { ex.InnerException != null ? ex.InnerException.Message : ex.Message }; return(new BadRequestObjectResult(errors)); } }