public async Task <GarmentFinanceLocalSalesListModel> GetDataShippingInvoiceNow(int month, int year) { GarmentFinanceLocalSalesListModel garmentShipping = new GarmentFinanceLocalSalesListModel(); var http = _serviceProvider.GetService <IHttpClientService>(); var uri = APIEndpoint.PackingInventory + $"garment-shipping/local-sales-notes/localSalesDebtorNow?month={month}&year={year}"; var response = await http.GetAsync(uri); var result = new BaseResponse <string>(); if (response.IsSuccessStatusCode) { if (response.Content != null) { var contentString = await response.Content.ReadAsStringAsync(); Dictionary <string, object> content = JsonConvert.DeserializeObject <Dictionary <string, object> >(contentString); var dataString = content.GetValueOrDefault("data").ToString(); var listData = JsonConvert.DeserializeObject <List <GarmentFinanceLocalSalesModel> >(dataString); garmentShipping.data = listData; } } else { var err = await response.Content.ReadAsStringAsync(); } return(garmentShipping); }
public async Task <List <GarmentFinanceLocalSalesOutstandingReportViewModel> > GetReportQuery(int month, int year, string buyer, int offset) { GarmentFinanceLocalSalesListModel invoicePackingListNow = await GetDataShippingInvoiceNow(month, year); DateTime date = new DateTime(year, month, 1); List <GarmentFinanceLocalSalesOutstandingReportViewModel> data = new List <GarmentFinanceLocalSalesOutstandingReportViewModel>(); var invoice = from a in invoicePackingListNow.data where (buyer == null || buyer == "undefined" || (buyer != null && buyer != "undefined" && buyer != "" && a.buyer.code == buyer)) select new GarmentFinanceLocalSalesOutstandingReportViewModel { Amount = Convert.ToDecimal(a.items.Sum(s => a.useVat ? (s.price * s.quantity) + (0.1 * (s.price * s.quantity)): s.price * s.quantity)), InvoiceId = Convert.ToInt32(a.id), InvoiceNo = a.noteNo, TruckingDate = a.date, BuyerName = a.buyer.name }; var memorial = from a in (from aa in _dbContext.GarmentFinanceMemorialDetailLocals where aa.MemorialDate.AddHours(7).Date.Month <= month && aa.MemorialDate.AddHours(7).Date.Year == year select new { aa.Id, aa.MemorialNo, aa.MemorialDate }) join c in _dbContext.GarmentFinanceMemorialDetailLocalItems on a.Id equals c.MemorialDetailLocalId where (buyer == null || (buyer != null && buyer != "" && c.BuyerCode == buyer)) select new GarmentFinanceLocalSalesOutstandingReportViewModel { Amount = Convert.ToDecimal(-c.Amount), InvoiceNo = c.LocalSalesNoteNo, InvoiceId = c.LocalSalesNoteId, TruckingDate = null, BuyerName = c.BuyerName }; var bankCashReceipt = from a in (from aa in _dbContext.GarmentFinanceBankCashReceiptDetailLocals where aa.BankCashReceiptDate.AddHours(7).Date.Month <= month && aa.BankCashReceiptDate.AddHours(7).Date.Year == year select new { aa.Id, aa.BankCashReceiptNo, aa.BankCashReceiptDate }) join b in _dbContext.GarmentFinanceBankCashReceiptDetailLocalItems on a.Id equals b.BankCashReceiptDetailLocalId where (buyer == null || (buyer != null && buyer != "" && b.BuyerCode == buyer)) select new GarmentFinanceLocalSalesOutstandingReportViewModel { Amount = Convert.ToDecimal(-b.Amount), InvoiceNo = b.LocalSalesNoteNo, InvoiceId = b.LocalSalesNoteId, TruckingDate = null, BuyerName = b.BuyerName }; var unionQuery = memorial.Union(bankCashReceipt).Union(invoice); if (buyer == null || buyer == "undefined" || buyer == "") { _buyerName = "ALL"; } else { _buyerName = (from a in unionQuery.ToList() select a.BuyerName).FirstOrDefault() + " >> " + buyer; } var querySum = unionQuery.ToList().GroupBy(a => new { a.InvoiceId }, (key, group) => new { invoiveId = key.InvoiceId, balance = group.Sum(s => s.Amount) }); decimal total = 0; int index = 1; foreach (var item in invoice) { GarmentFinanceLocalSalesOutstandingReportViewModel model = new GarmentFinanceLocalSalesOutstandingReportViewModel { Index = index, InvoiceNo = item.InvoiceNo, TruckingDate = item.TruckingDate, Amount = querySum.First(a => a.invoiveId == item.InvoiceId).balance }; data.Add(model); total += model.Amount; index++; } data = data.OrderBy(a => a.BuyerName).ToList(); index = 0; var lastRow = new GarmentFinanceLocalSalesOutstandingReportViewModel { InvoiceNo = "TOTAL", TruckingDate = null, Amount = total }; data.Add(lastRow); return(data); }