コード例 #1
0
ファイル: HomeController.cs プロジェクト: faizin87/FrontEnd
        public async Task <IActionResult> Index()
        {
            IEnumerable <CurrencyViewModel> currencies = await MasterHelpers.GetCurrency();

            IEnumerable <DestinationViewModel> destinations = await MasterHelpers.GetDestination();

            IEnumerable <LanguangeViewModel> languanges = await MasterHelpers.GetLanguange();

            IEnumerable <MeasurementViewModel> measurements = await MasterHelpers.GetMeasurements();

            IEnumerable <PurchaseViewModel> purchases = await MasterHelpers.GetPurchaseOrders();

            NumberViewModel numbers = await MasterHelpers.GetNumber();

            ViewBag.number = numbers.Number;
            BillAddModel model = new BillAddModel()
            {
                Currencies   = currencies,
                Destinations = destinations,
                Languanges   = languanges,
                Measurements = measurements,
                Purchases    = purchases,
                Number       = numbers.Number,
            };

            return(View(model));
        }
コード例 #2
0
        public static Bill Create(BillAddModel model, string userId, int count)
        {
            var bill = new Bill
            {
                VendorId = model.VendorId,
                //BillNumber = "B.NO" + "-" + model.BillDate.ToString("yy") + "-" + (count + 1).ToString("000"),
                BillNumber         = model.BillNumber,
                Tax                = model.Tax,
                Discount           = model.Discount,
                DueDate            = model.DueDate,
                TotalAmount        = model.TotalAmount,
                Remark             = model.Remark,
                RefrenceNumber     = model.RefrenceNumber,
                Status             = Constants.BillStatus.Pending,
                CreatedBy          = userId ?? "0",
                CreatedOn          = Utility.GetDateTime(),
                BillDate           = model.BillDate,
                StrBillDate        = model.BillDate.ToString("dd/MM/yyyy"),
                StrDueDate         = model.DueDate.Value.ToString("dd/MM/yyyy"),
                PoSoNumber         = model.PoSoNumber,
                Notes              = model.Notes,
                SubTotal           = model.SubTotal,
                LineAmountSubTotal = model.LineAmountSubTotal,
                Items              = model.Items.Select(x => new BillItem
                {
                    Id            = Guid.NewGuid(),
                    ItemId        = x.ItemId,
                    Rate          = x.Rate,
                    Price         = x.Price,
                    TaxId         = x.TaxId,
                    TaxPercentage = x.TaxPercentage,
                    Quantity      = x.Quantity,
                    TaxPrice      = x.TaxPrice,
                    LineAmount    = x.LineAmount
                }).ToList()
            };

            if (model.Attachments == null || !model.Attachments.Any())
            {
                return(bill);
            }

            //bill.Attachments = new List<BillAttachment>();

            bill.Attachments = model.Attachments.Select(x => new BillAttachment
            {
                Title            = x.Title,
                FileName         = x.FileName,
                OriginalFileName = x.OriginalFileName,
                CreatedBy        = userId ?? "0",
                CreatedOn        = Utility.GetDateTime()
            }).ToList();

            return(bill);
        }
コード例 #3
0
        public async Task <IActionResult> Add([FromBody] BillAddModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorList()));
            }

            if (!EnumerableExtensions.Any(model.Items))
            {
                return(BadRequest("Please select items to continue"));
            }

            try
            {
                await _manager.AddAsync(model);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            return(Ok());
        }
コード例 #4
0
        public async Task AddAsync(BillAddModel model)
        {
            //var items = (await _itemRepository.GetAsync(model.Items)).ToList();

            //model.TotalAmount = items.Sum(x => x.Rate);

            //model.Tax = items.Where(x => x.IsTaxable).Sum(x => x.Rate * x.SalesTax.TaxPercentage / 100);

            //var vendor = await _vendorRepository.GetAsync(model.VendorId);

            //if (vendor.Discount != null)
            //{
            //    model.Discount = model.TotalAmount * vendor.Discount / 100;
            //    model.TotalAmount = model.TotalAmount - (model.Discount ?? 0);
            //}

            //if (model.Tax != null)
            //{
            //    model.TotalAmount = model.TotalAmount + (model.Tax ?? 0);
            //}
            model.LineAmountSubTotal = model.Items.Sum(x => x.LineAmount);
            var count = await _repository.getCount();

            var bill = BillFactory.Create(model, _userId, count);
            await _repository.AddAsync(bill);

            await _unitOfWork.SaveChangesAsync();

            var transaction = TransactionFactory.CreateByBill(bill);
            await _transactionRepository.AddAsync(transaction);

            await _unitOfWork.SaveChangesAsync();

            var itemsList = (model.Items.GroupBy(l => l.BankAccountId, l => new { l.BankAccountId, l.LineAmount })
                             .Select(g => new { GroupId = g.Key, Values = g.ToList() })).ToList();

            foreach (var item in itemsList)
            {
                var id     = item.GroupId;
                var amount = item.Values.Sum(x => x.LineAmount);

                var itemsData = TransactionFactory.CreateByBillItemsAndTax(bill, id, amount);
                await _transactionRepository.AddAsync(itemsData);

                await _unitOfWork.SaveChangesAsync();
            }

            var taxlistList = (model.Items.GroupBy(l => l.TaxBankAccountId, l => new { l.TaxBankAccountId, l.TaxPrice })
                               .Select(g => new { GroupId = g.Key, Values = g.ToList() })).ToList();

            foreach (var tax in taxlistList)
            {
                if (tax.GroupId > 0)
                {
                    var id     = tax.GroupId;
                    var amount = tax.Values.Sum(x => x.TaxPrice);

                    var taxData = TransactionFactory.CreateByBillItemsAndTax(bill, id, amount);
                    await _transactionRepository.AddAsync(taxData);

                    await _unitOfWork.SaveChangesAsync();
                }
            }
        }