public void Should_Success_Instantiate() { LocalSalesDebtorReportViewModel viewmodel = new LocalSalesDebtorReportViewModel() { beginingBalance = 1, buyerCode = "code", buyerName = "name", endBalance = 1, index = "1", moreThanNinety = 1, normal = 1, oneThirty = 1, receipt = 1, sales = 1, sixtyNinety = 1, thirtySixty = 1, timeSpan = TimeSpan.MinValue, total = "total", }; Assert.Equal(1, viewmodel.beginingBalance); Assert.Equal("code", viewmodel.buyerCode); Assert.Equal("name", viewmodel.buyerName); Assert.Equal(1, viewmodel.endBalance); Assert.Equal("1", viewmodel.index); Assert.Equal(1, viewmodel.moreThanNinety); Assert.Equal(1, viewmodel.normal); Assert.Equal(1, viewmodel.oneThirty); Assert.Equal(1, viewmodel.receipt); Assert.Equal(1, viewmodel.sales); Assert.Equal(1, viewmodel.sixtyNinety); Assert.Equal(1, viewmodel.thirtySixty); Assert.Equal(TimeSpan.MinValue, viewmodel.timeSpan); Assert.Equal("total", viewmodel.total); }
public async Task <List <LocalSalesDebtorReportViewModel> > GetReportQuery(int month, int year) { GarmentShippingLocalSalesNote salesBalanceNow = await GetDataLocalSalesNote("now", month, year); GarmentShippingLocalSalesNote salesBalance = await GetDataLocalSalesNote("balance", month, year); List <LocalSalesDebtorReportViewModel> data = new List <LocalSalesDebtorReportViewModel>(); var _sales = salesBalance.data.Union(salesBalanceNow.data); var querytimeSpan = from aa in _sales select new timeSpanInvoice { buyerCode = aa.buyer.Code, amount = Convert.ToDecimal(aa.amount), type = (aa.tempo <= 0) ? "normal" : (aa.tempo > 0 && aa.tempo < 31) ? "oneThirty" : (aa.tempo > 30 && aa.tempo < 61) ? "thirtySixty" : (aa.tempo > 60 && aa.tempo < 91) ? "sixtyNinety" : "moreThanNinety", localSalesNoteId = Convert.ToInt32(aa.Id) }; var querySumInvoice = querytimeSpan.ToList() .GroupBy(x => new { x.buyerCode, x.type }, (key, group) => new { buyerCode = key.buyerCode, type = key.type, amount = group.Sum(s => s.amount) }); var receiptBankCashReceiptDetailLocal = from a in (from aa in _dbContext.GarmentFinanceBankCashReceiptDetailLocals where aa.BankCashReceiptDate.AddHours(7).Month == month && aa.BankCashReceiptDate.AddHours(7).Year == year select new { aa.Id }) join b in _dbContext.GarmentFinanceBankCashReceiptDetailLocalItems on a.Id equals b.BankCashReceiptDetailLocalId select new LocalSalesDebtorReportViewModel { buyerCode = b.BuyerCode.TrimEnd(), buyerName = b.BuyerName.TrimEnd(), beginingBalance = 0, receipt = Convert.ToDouble(b.Amount), sales = 0, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var receiptMemorialDetailLocal = from a in (from aa in _dbContext.GarmentFinanceMemorialDetailLocals where aa.MemorialDate.AddHours(7).Month == month && aa.MemorialDate.AddHours(7).Year == year select new { aa.Id }) join c in _dbContext.GarmentFinanceMemorialDetailLocalItems on a.Id equals c.MemorialDetailLocalId select new LocalSalesDebtorReportViewModel { buyerCode = c.BuyerCode.TrimEnd(), buyerName = c.BuyerName.TrimEnd(), beginingBalance = 0, receipt = Convert.ToDouble(c.Amount), sales = 0, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var salesBalanceLocal = from a in salesBalanceNow.data select new LocalSalesDebtorReportViewModel { buyerCode = a.buyer.Code.TrimEnd(), buyerName = a.buyer.Name.TrimEnd(), beginingBalance = 0, receipt = 0, sales = a.amount, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var localDebtorBalance = from a in _dbContext.GarmentLocalDebiturBalances select new LocalSalesDebtorReportViewModel { buyerCode = a.BuyerCode.TrimEnd(), buyerName = a.BuyerName.TrimEnd(), beginingBalance = Convert.ToDecimal(a.BalanceAmount), receipt = 0, sales = 0, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var beginningBalanceSales = from a in salesBalance.data select new LocalSalesDebtorReportViewModel { buyerCode = a.buyer.Code.TrimEnd(), buyerName = a.buyer.Name.TrimEnd(), beginingBalance = Convert.ToDecimal(a.amount), receipt = 0, sales = 0, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var beginningBalanceReceiptBankCashReceiptDetailLocal = from a in (from aa in _dbContext.GarmentFinanceBankCashReceiptDetailLocals where aa.BankCashReceiptDate.AddHours(7).Month < month && aa.BankCashReceiptDate.AddHours(7).Year == year select new { aa.Id }) join b in _dbContext.GarmentFinanceBankCashReceiptDetailLocalItems on a.Id equals b.BankCashReceiptDetailLocalId select new LocalSalesDebtorReportViewModel { buyerCode = b.BuyerCode.TrimEnd(), buyerName = b.BuyerName.TrimEnd(), beginingBalance = -b.Amount, receipt = 0, sales = 0, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var beginningBalanceReceiptMemorialDetailLocal = from a in (from aa in _dbContext.GarmentFinanceMemorialDetailLocals where aa.MemorialDate.AddHours(7).Month < month && aa.MemorialDate.AddHours(7).Year == year select new { aa.Id }) join c in _dbContext.GarmentFinanceMemorialDetailLocalItems on a.Id equals c.MemorialDetailLocalId select new LocalSalesDebtorReportViewModel { buyerCode = c.BuyerCode.TrimEnd(), buyerName = c.BuyerName.TrimEnd(), beginingBalance = -c.Amount, receipt = 0, sales = 0, endBalance = 0, normal = 0, oneThirty = 0, thirtySixty = 0, sixtyNinety = 0, moreThanNinety = 0 }; var periodeMemoLocal = from a in (from aa in _dbContext.GarmentFinanceMemorialDetailLocals where aa.MemorialDate.AddHours(7).Month <= month && aa.MemorialDate.AddHours(7).Year == year select new { aa.Id }) join c in _dbContext.GarmentFinanceMemorialDetailLocalItems on a.Id equals c.MemorialDetailLocalId select new LocalSalesDebtorReportViewModel { buyerCode = c.BuyerCode.TrimEnd(), buyerName = c.BuyerName.TrimEnd(), beginingBalance = 0, receipt = 0, sales = 0, endBalance = 0, normal = (from aa in querytimeSpan where aa.localSalesNoteId == c.LocalSalesNoteId select aa.type).FirstOrDefault() == "normal" ? Convert.ToDouble(-c.Amount) : 0, oneThirty = (from aa in querytimeSpan where aa.localSalesNoteId == c.LocalSalesNoteId select aa.type).FirstOrDefault() == "oneThirty" ? Convert.ToDouble(-c.Amount) : 0, thirtySixty = (from aa in querytimeSpan where aa.localSalesNoteId == c.LocalSalesNoteId select aa.type).FirstOrDefault() == "thirtySixty" ? Convert.ToDouble(-c.Amount) : 0, sixtyNinety = (from aa in querytimeSpan where aa.localSalesNoteId == c.LocalSalesNoteId select aa.type).FirstOrDefault() == "sixtyNinety" ? Convert.ToDouble(-c.Amount) : 0, moreThanNinety = (from aa in querytimeSpan where aa.localSalesNoteId == c.LocalSalesNoteId select aa.type).FirstOrDefault() == "moreThanNinety" ? Convert.ToDouble(-c.Amount) : 0, }; var periodeBankCashReceiptLocal = from a in (from aa in _dbContext.GarmentFinanceBankCashReceiptDetailLocals where aa.BankCashReceiptDate.AddHours(7).Month <= month && aa.BankCashReceiptDate.AddHours(7).Year == year select new { aa.Id }) join b in _dbContext.GarmentFinanceBankCashReceiptDetailLocalItems on a.Id equals b.BankCashReceiptDetailLocalId select new LocalSalesDebtorReportViewModel { buyerCode = b.BuyerCode.TrimEnd(), buyerName = b.BuyerName.TrimEnd(), beginingBalance = 0, receipt = 0, sales = 0, endBalance = 0, normal = (from aa in querytimeSpan where aa.localSalesNoteId == b.LocalSalesNoteId select aa.type).FirstOrDefault() == "normal" ? Convert.ToDouble(-b.Amount) : 0, oneThirty = (from aa in querytimeSpan where aa.localSalesNoteId == b.LocalSalesNoteId select aa.type).FirstOrDefault() == "oneThirty" ? Convert.ToDouble(-b.Amount) : 0, thirtySixty = (from aa in querytimeSpan where aa.localSalesNoteId == b.LocalSalesNoteId select aa.type).FirstOrDefault() == "thirtySixty" ? Convert.ToDouble(-b.Amount) : 0, sixtyNinety = (from aa in querytimeSpan where aa.localSalesNoteId == b.LocalSalesNoteId select aa.type).FirstOrDefault() == "sixtyNinety" ? Convert.ToDouble(-b.Amount) : 0, moreThanNinety = (from aa in querytimeSpan where aa.localSalesNoteId == b.LocalSalesNoteId select aa.type).FirstOrDefault() == "moreThanNinety" ? Convert.ToDouble(-b.Amount) : 0, }; var queryUnion = localDebtorBalance .Union(salesBalanceLocal) .Union(receiptMemorialDetailLocal) .Union(receiptBankCashReceiptDetailLocal) .Union(beginningBalanceSales) .Union(beginningBalanceReceiptBankCashReceiptDetailLocal) .Union(beginningBalanceReceiptMemorialDetailLocal) .Union(periodeMemoLocal) .Union(periodeBankCashReceiptLocal); var querySum = queryUnion.ToList() .GroupBy(x => new { x.buyerCode, x.buyerName }, (key, group) => new { buyerCode = key.buyerCode, buyerName = key.buyerName, beginingBalance = group.Sum(s => s.beginingBalance), receipt = group.Sum(s => s.receipt), sales = group.Sum(s => s.sales), endBalance = group.Sum(s => s.endBalance), normal = group.Sum(s => s.normal), oneThirty = group.Sum(s => s.oneThirty), thirtySixty = group.Sum(s => s.thirtySixty), sixtyNinety = group.Sum(s => s.sixtyNinety), moreThanNinety = group.Sum(s => s.moreThanNinety) }).OrderByDescending(s => s.buyerName); int index = 1; foreach (var item in querySum.OrderBy(a => a.buyerName)) { LocalSalesDebtorReportViewModel model = new LocalSalesDebtorReportViewModel { index = index.ToString(), buyerCode = item.buyerCode, buyerName = item.buyerName, beginingBalance = item.beginingBalance, receipt = item.receipt, sales = item.sales, endBalance = Convert.ToDouble(item.beginingBalance) + item.sales - item.receipt, normal = item.normal + Convert.ToDouble((from aa in querySumInvoice where aa.buyerCode == item.buyerCode && aa.type == "normal" select aa.amount).FirstOrDefault()), oneThirty = item.oneThirty + Convert.ToDouble((from aa in querySumInvoice where aa.buyerCode == item.buyerCode && (aa.type == "oneThirty") select aa.amount).FirstOrDefault()), thirtySixty = item.thirtySixty + Convert.ToDouble((from aa in querySumInvoice where aa.buyerCode == item.buyerCode && (aa.type == "thirtySixty") select aa.amount).FirstOrDefault()), sixtyNinety = item.sixtyNinety + Convert.ToDouble((from aa in querySumInvoice where aa.buyerCode == item.buyerCode && (aa.type == "sixtyNinety") select aa.amount).FirstOrDefault()), moreThanNinety = item.moreThanNinety + Convert.ToDouble((from aa in querySumInvoice where aa.buyerCode == item.buyerCode && (aa.type == "moreThanNinety") select aa.amount).FirstOrDefault()), total = "TOTAL" }; data.Add(model); index++; } var queryTOTAL = data.ToList() .GroupBy(x => new { x.total }, (key, group) => new { beginingBalance = group.Sum(s => s.beginingBalance), receipt = group.Sum(s => s.receipt), sales = group.Sum(s => s.sales), endBalance = group.Sum(s => s.endBalance), normal = group.Sum(s => s.normal), oneThirty = group.Sum(s => s.oneThirty), thirtySixty = group.Sum(s => s.thirtySixty), sixtyNinety = group.Sum(s => s.sixtyNinety), moreThanNinety = group.Sum(s => s.moreThanNinety) }); foreach (var item in queryTOTAL) { LocalSalesDebtorReportViewModel model = new LocalSalesDebtorReportViewModel { index = "", buyerCode = "TOTAL", buyerName = "", beginingBalance = item.beginingBalance, receipt = item.receipt, sales = item.sales, endBalance = item.endBalance, normal = item.normal, oneThirty = item.oneThirty, thirtySixty = item.thirtySixty, sixtyNinety = item.sixtyNinety, moreThanNinety = item.moreThanNinety }; data.Add(model); } return(data); }