public PartnerInvoiceSettlementViewModel GetPartnerByMainCodeSubCode(string mainCode, string subCode) { var result = new PartnerInvoiceSettlementViewModel(); var partner = _partnerRepository.Query(i => i.PartnerMainC == mainCode && i.PartnerSubC == subCode).FirstOrDefault(); if (partner != null) { var viewModel = Mapper.Map <Partner_M, PartnerViewModel>(partner); var index = FindIndex(partner.PartnerMainC, partner.PartnerSubC); viewModel.PartnerIndex = index; result.Partner = viewModel; if (!string.IsNullOrEmpty(viewModel.InvoiceMainC) && !string.IsNullOrEmpty(viewModel.InvoiceSubC)) { var invoice = _partnerRepository.Query(cus => cus.PartnerMainC == viewModel.InvoiceMainC && cus.PartnerSubC == viewModel.InvoiceSubC).FirstOrDefault(); var invoiceViewModel = Mapper.Map <Partner_M, PartnerInvoiceViewModel>(invoice); result.Invoice = invoiceViewModel; // get init partner payment var initPartnerPayment = _partnerBalanceRepository.Get( p => p.PartnerMainC == mainCode & p.PartnerSubC == "000" & p.PartnerBalanceD == new DateTime(1900, 1, 1)); if (initPartnerPayment != null) { result.Invoice.InitPartnerPayment = initPartnerPayment.TotalAmount; } // get settlement list var settlementList = _partnerSettlementRepository.Query(set => set.PartnerMainC == viewModel.InvoiceMainC && set.PartnerSubC == viewModel.InvoiceSubC).OrderBy(i => i.ApplyD).ToList(); result.SettlementList = Mapper.Map <List <PartnerSettlement_M>, List <PartnerSettlementViewModel> >(settlementList); } result.Status = Convert.ToInt32(PartnerStatus.Edit); } else { partner = _partnerRepository.Query(i => i.PartnerMainC == mainCode && i.PartnerSubC == "000").FirstOrDefault(); if (partner != null) { var viewModel = Mapper.Map <Partner_M, PartnerViewModel>(partner); result.Partner = viewModel; result.Partner.PartnerSubC = subCode; if (!string.IsNullOrEmpty(viewModel.InvoiceMainC) && !string.IsNullOrEmpty(viewModel.InvoiceSubC)) { var invoice = _partnerRepository.Query(cus => cus.PartnerMainC == viewModel.InvoiceMainC && cus.PartnerSubC == viewModel.InvoiceSubC).FirstOrDefault(); var invoiceViewModel = Mapper.Map <Partner_M, PartnerInvoiceViewModel>(invoice); result.Invoice = invoiceViewModel; // get init partner payment var initPartnerPayment = _partnerBalanceRepository.Get( p => p.PartnerMainC == mainCode & p.PartnerSubC == "000" & p.PartnerBalanceD == new DateTime(1900, 1, 1)); if (initPartnerPayment != null) { result.Invoice.InitPartnerPayment = initPartnerPayment.TotalAmount; } // get settlement list var settlementList = _partnerSettlementRepository.Query(set => set.PartnerMainC == viewModel.InvoiceMainC && set.PartnerSubC == viewModel.InvoiceSubC).OrderBy(i => i.ApplyD).ToList(); result.SettlementList = Mapper.Map <List <PartnerSettlement_M>, List <PartnerSettlementViewModel> >(settlementList); } result.Status = Convert.ToInt32(PartnerStatus.Add); } else { result.Status = Convert.ToInt32(PartnerStatus.Add); } } return(result); }
public InvoiceInfotViewModel GetLimitStartAndEndInvoiceDPartner(string invoiceMainC, string invoiceSubC, int invoiceMonth, int invoiceYear) { DateTime?startDate = null; DateTime?endDate = null; var settlement = new PartnerSettlement_M(); var result = new InvoiceInfotViewModel(); var partnerSettlement = _partnerSettlementRepository.Query(par => par.PartnerMainC == invoiceMainC && par.PartnerSubC == invoiceSubC && par.ApplyD.Year <= invoiceYear) .OrderBy("ApplyD desc"); if (partnerSettlement.Any()) { var partnerSettlementList = partnerSettlement.ToList(); if (partnerSettlementList[0].ApplyD.Year < invoiceYear) { settlement = partnerSettlementList[0]; } else { for (var iloop = 0; iloop < partnerSettlementList.Count; iloop++) { if (partnerSettlementList[iloop].ApplyD.Month <= invoiceMonth) { settlement = partnerSettlementList[iloop]; break; } settlement = null; } } // check settlement if (settlement != null) { // set start date if (settlement.ApplyD.Month == invoiceMonth && settlement.ApplyD.Year == invoiceYear) { startDate = settlement.ApplyD; } else { if (settlement.SettlementD == 31) { startDate = new DateTime(invoiceYear, invoiceMonth, 1); } else { startDate = new DateTime(invoiceYear, invoiceMonth, settlement.SettlementD + 1); } } // set end date if (settlement.SettlementD == 31) { endDate = new DateTime(invoiceYear, invoiceMonth, DateTime.DaysInMonth(invoiceYear, invoiceMonth)); } else { if (invoiceMonth == 12) { endDate = new DateTime(invoiceYear + 1, 1, settlement.SettlementD); } else { endDate = new DateTime(invoiceYear, invoiceMonth + 1, settlement.SettlementD); } } } } if (startDate == null) { startDate = new DateTime(invoiceYear, invoiceMonth, 1); endDate = new DateTime(invoiceYear, invoiceMonth, DateTime.DaysInMonth(invoiceYear, invoiceMonth)); } result.PartnerMainC = invoiceMainC; result.PartnerSubC = invoiceSubC; result.StartDate = (DateTime)startDate; result.EndDate = (DateTime)endDate; result.SettlementD = 31; result.TaxMethodI = "0"; result.TaxRate = 0; result.TaxRoundingI = "0"; result.RevenueRoundingI = "0"; if (settlement != null) { result.ApplyD = settlement.ApplyD; result.SettlementD = settlement.SettlementD; result.TaxMethodI = settlement.TaxMethodI; result.TaxRate = (settlement.TaxRate != null ? (decimal)settlement.TaxRate : 0); result.TaxRoundingI = settlement.TaxRoundingI; result.RevenueRoundingI = settlement.RevenueRoundingI; } return(result); }