/// <summary> /// Converts to order invoice. /// </summary> /// <param name="addOrderInvoiceModel">The model.</param> /// <returns></returns> public static OrderInvoice BindOrderInvoice(AddOrderInvoiceModel addOrderInvoiceModel, List <string> invoiceIds, decimal discountAmount = 0, decimal percentage = 0) { OrderInvoice orderInvoiceModel = new OrderInvoice(); if (addOrderInvoiceModel != null) { orderInvoiceModel.OrderFK = DBHelper.ParseInt64(addOrderInvoiceModel.OrderId); orderInvoiceModel.CreatedOn = DateTime.Now; orderInvoiceModel.CreatedBy = DBHelper.ParseInt64(addOrderInvoiceModel.CreatedBy); orderInvoiceModel.UniqueInvoiceId = CheckInvoiceId(invoiceIds); orderInvoiceModel.InvoiceDate = DateTime.Now; orderInvoiceModel.UserFK = DBHelper.ParseInt64(addOrderInvoiceModel.UserId); orderInvoiceModel.SubTotalAmount = GetSubTotalAmount(addOrderInvoiceModel.productDetail); orderInvoiceModel.TotalGSTAmount = (orderInvoiceModel.SubTotalAmount * DBHelper.ParseDecimal(addOrderInvoiceModel.VatCharges)) / 100; orderInvoiceModel.DiscountAmount = 0; decimal total = orderInvoiceModel.SubTotalAmount + orderInvoiceModel.TotalGSTAmount + DBHelper.ParseDecimal(addOrderInvoiceModel.ShippingCharges); if (discountAmount > 0) { orderInvoiceModel.DiscountAmount = discountAmount; } else if (percentage > 0) { orderInvoiceModel.DiscountAmount = total * percentage / 100; } orderInvoiceModel.PayableAmount = total - orderInvoiceModel.DiscountAmount; orderInvoiceModel.ShippingCharges = DBHelper.ParseDecimal(addOrderInvoiceModel.ShippingCharges); orderInvoiceModel.IsInvoiceGenerated = true; orderInvoiceModel.OrderStatusFK = (long)OrderStatusEnum.ReadyforPayment; orderInvoiceModel.TrackingNumber = addOrderInvoiceModel.TrackingNumber; } return(orderInvoiceModel); }
public IActionResult AddOrderInvoice(AddOrderInvoiceModel orderInvoiceModel) { try { if (ModelState.IsValid) { decimal discountAmount = 0; decimal percentage = 0; long invoiceCount = iOrderInvoice.GetInvoiceCountByOrderId(DBHelper.ParseInt64(orderInvoiceModel.OrderId)); if (invoiceCount <= 0) { var orderModel = iOrder.GetOrderModelByOrderId(DBHelper.ParseInt64(orderInvoiceModel.OrderId)); if (orderModel != null && orderModel.PromocodeFK.HasValue) { var promoCodeModel = iPromoCode.GetPromocodeDetail(DBHelper.ParseInt64(orderModel.PromocodeFK)); if (promoCodeModel != null) { discountAmount = promoCodeModel.Amount; percentage = promoCodeModel.Percentage; } } } var uniqueInvoiceIds = iOrderInvoice.GetAllUniqueInvoiceIds(); OrderInvoice orderInvModel = OrderInvoiceHelper.BindOrderInvoice(orderInvoiceModel, uniqueInvoiceIds, discountAmount, percentage); List <OrderInvoiceDetail> invoiceDetailsList = OrderInvoiceHelper.BindOrderInvoiceDetailModel(orderInvoiceModel.productDetail); long orderInvoiceId = iOrderInvoice.AddOrderInvoice(orderInvModel, invoiceDetailsList, orderInvoiceModel.productDetail); if (orderInvoiceId > 0) { if (orderInvModel.OrderStatusFK == OrderStatusEnum.ReadyforPayment.GetHashCode()) { SendPaymentRelatedEmail(DBHelper.ParseInt32(orderInvoiceId)); } return(Ok(ResponseHelper.Success(MessageConstants.OrderInvoiceGenerated))); } else { return(Ok(ResponseHelper.Error(MessageConstants.OrderInvoiceNotGenerated))); } } else { return(Ok(ResponseHelper.Error(MessageConstants.CompulsoryData))); } } catch (Exception ex) { LogHelper.ExceptionLog(ex.Message + " ::::: " + ex.StackTrace); return(Ok(ResponseHelper.Error(ex.Message))); } }