Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
            }
        }