Example #1
0
        public async Task <IList <BillLineItem> > Generate(BillRequest request)
        {
            var result = new List <BillLineItem>();

            if ((request.Type == BillType.Stage1 && request.RequestType == BillRequestType.New) ||
                (request.Type == BillType.Stage2 && request.RequestType == BillRequestType.Renewal))
            {
                var code = await(request.Expedite
          ? _context.GetTransactionCode(TransactionCodes.ApplicationFeeExpress, request.ReferenceDate)
          : _context.GetTransactionCode(TransactionCodes.ApplicationFeeNormal, request.ReferenceDate));

                var gst = await _context.GST();

                var amount    = BillingUtils.CalculateAmount(code, 1M);
                var gstAmount = amount * gst;
                var section   = BillingUtils.LineItemSection(request.Type);

                result.Add(new BillLineItem
                {
                    SectionIndex = section.Item1,
                    Section      = section.Item2,
                    Qty          = 1M,
                    CodeID       = code.ID,
                    Code         = code.Code,
                    Descr        = code.Text,
                    UnitPrice    = code.GetLatestPriceAmount(),
                    Amount       = decimal.Round(amount, 2),
                    GSTAmount    = decimal.Round(gstAmount, 2),
                    GST          = gst,
                    WillRecord   = true
                });
            }

            return(result);
        }
Example #2
0
        async Task <TransactionCode> GetTransactionCode(DateTimeOffset refDate, Scheme scheme,
                                                        SubScheme?subScheme)
        {
            string code = "";

            if (scheme == Scheme.Endorsement)
            {
                code = TransactionCodes.EndoresementHalalCertMark;
            }
            else if (subScheme == SubScheme.Product)
            {
                code = TransactionCodes.ProductHalalCertMark;
            }
            else if (subScheme == SubScheme.WholePlant)
            {
                code = TransactionCodes.WholePlantHalalCertMark;
            }

            return(await _context.GetTransactionCode(code, refDate));
        }