public async Task <IHttpActionResult> Post(SupplierTransactionDTO transactionDTO) { if (transactionDTO == null) { return(BadRequest("TransactionDTO cannot be null, on creating transaction for supplier")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (transactionDTO.IsCredit == true) { throw new Exception("Currently transaction of type credit is not supported through this API"); } try { var transaction = await transactionDTO.CreateNewTransactionAsync(db); await db.SaveChangesAsync(); return(Ok(transaction)); } catch (DbUpdateException) { throw; } }
public async Task <IHttpActionResult> Post(SupplierOrderDTO orderDetail) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (orderDetail == null) { throw new Exception("OrderDetails should not have been null while placing the supplier order"); } if (orderDetail.DueDate < DateTime.Now) { return(BadRequest(String.Format("DueDate {0} cannot be before current Date {1}", orderDetail.DueDate, DateTime.Now.Date))); } var payingAmount = orderDetail.PayingAmount; var billAmount = orderDetail.SupplierBillingSummary.BillAmount; if (payingAmount > billAmount) { return(BadRequest(String.Format("Paying Amount {0} should be less than Bill Amount {1}", payingAmount, billAmount))); } //TODO: Verify bill amount. try { var supplierOrder = await CreateNewSupplierOrderAsync(orderDetail); SupplierTransactionDTO transactionDTO = new SupplierTransactionDTO { IsCredit = true, SupplierId = orderDetail.SupplierId, TransactionAmount = billAmount - payingAmount, Description = supplierOrder.SupplierOrderNo, }; var transaction = await transactionDTO.CreateNewTransactionAsync(db); var supplierOrderTransaction = CreateNewSupplierOrderTransaction(supplierOrder, transaction); var products = await UpdateStockOfProductsAsync(orderDetail.ProductsPurchased); AddIntoSupplierOrderProduct(orderDetail.ProductsPurchased, supplierOrder.SupplierOrderId); await db.SaveChangesAsync(); return(Ok(transactionDTO.TransactionAmount)); } catch (DbUpdateException) { throw; } }