using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Mvc; using Abp.Application.Services.Dto; using Abp.Domain.Repositories; using Abp.Extensions; using Abp.UI; using Abp.Web.Mvc.Authorization; using IwbZero.Auditing; using ShwasherSys.Authorization.Permissions; using ShwasherSys.BaseSysInfo.States; using ShwasherSys.CustomerInfo; using ShwasherSys.Invoice; using ShwasherSys.OrderSendInfo; using ShwasherSys.OrderSendInfo.Dto; namespace ShwasherSys.Controllers { [AbpMvcAuthorize, AuditLog("发票管理")] public class InvoiceInfoController : ShwasherControllerBase { protected IOrderSendBillAppService OrderSendBillAppService; public IRepository OrderSendBillRepository { get; set; } protected IRepository OrderSendRepository; protected IRepository ViewOrderSendRepository; protected IRepository ViewOrderSendStickBillRepository; protected IRepository CustomerRepository; protected IStatementBillAppService StatementBillAppService; protected IRepository StatementBillRepository; protected IRepository OrderStickBillRepository; public InvoiceInfoController(IStatesAppService statesAppService, IOrderSendBillAppService orderSendBillAppService, IRepository orderSendRepository, IRepository customerRepository, IRepository viewOrderSendRepository, IRepository viewOrderSendStickBillRepository, IRepository orderSendBillRepository, IStatementBillAppService statementBillAppService, IRepository statementBillRepository,IRepository orderStickBillRepository) { OrderSendBillAppService = orderSendBillAppService; OrderSendRepository = orderSendRepository; CustomerRepository = customerRepository; ViewOrderSendRepository = viewOrderSendRepository; ViewOrderSendStickBillRepository = viewOrderSendStickBillRepository; OrderSendBillRepository = orderSendBillRepository; StatementBillAppService = statementBillAppService; StatesAppService = statesAppService; StatementBillRepository = statementBillRepository; OrderStickBillRepository = orderStickBillRepository; } [AbpMvcAuthorize(PermissionNames.PagesInvoiceInfoInvoiceCreate), AuditLog("发票创建页面")] public ActionResult InvoiceCreate() { ViewBag.InitStickMan = AbpSession.UserName; return View(); } [AbpMvcAuthorize(PermissionNames.PagesInvoiceInfoInvoiceMgShowStickBill), AuditLog("发票详情页面")] public async Task InvoiceDetail(string id) { if (id.IsNullOrEmpty()) { throw new UserFriendlyException("未传入对应编号!"); } ViewBag.SendStickBillNo = id; var viewOrderSendStickBills =await ViewOrderSendStickBillRepository.GetAll().Where(i => i.OrderStickBillNo == id).OrderBy(i=>i.SendDate).ToListAsync(); ViewBag.OrderSends = viewOrderSendStickBills; //var bill = await OrderSendBillAppService.Get(new EntityDto(viewOrderSendStickBills.First().OrderSendBillNo)); if (viewOrderSendStickBills.Any()) { var bill = ObjectMapper.Map( OrderSendBillRepository.Get(viewOrderSendStickBills.First().OrderSendBillNo)); ViewBag.SendBill = bill; ViewBag.CustomerInfo = CustomerRepository.Get(bill.CustomerId); } else { ViewBag.CustomerInfo = CustomerRepository.Get(OrderStickBillRepository.FirstOrDefault(i => i.Id == id)?.CustomerId); } return View(); } [AbpMvcAuthorize(PermissionNames.PagesInvoiceInfoInvoiceMg), AuditLog("发票管理页面")] public ActionResult InvoiceMg() { ViewBag.InvoiceState = StatesAppService.GetSelectLists("Invoice", "State"); return View(); } [AbpMvcAuthorize(PermissionNames.PagesInvoiceInfoStatementBill), AuditLog("对账单管理页面")] public ActionResult StatementBill() { ViewBag.CustomerList = StatementBillAppService.GetHasSendOrderCustomer(); return View(); } [AbpMvcAuthorize(PermissionNames.PagesInvoiceInfoStatementBillShowStickBill), AuditLog("对账单详情页面")] public async Task StatementBillDetail(string id) { if (id.IsNullOrEmpty()) { throw new UserFriendlyException("未传入对应编号!"); } ViewBag.SendStickBillNo = id; var viewOrderSendStickBills =await ViewOrderSendStickBillRepository.GetAll().Where(i => i.StatementBillNo == id).OrderBy(i => i.SendDate).ThenBy((i => i.StatementBillSort)).ThenBy(i=>i.ProductName).ToListAsync(); ViewBag.OrderSends = viewOrderSendStickBills; //var bill = await OrderSendBillAppService.Get(new EntityDto(viewOrderSendStickBills.First().OrderSendBillNo)); if (viewOrderSendStickBills.Any()) { var bill = ObjectMapper.Map( OrderSendBillRepository.Get(viewOrderSendStickBills.First().OrderSendBillNo)); ViewBag.SendBill = bill; ViewBag.CustomerInfo = CustomerRepository.Get(bill.CustomerId); } else { ViewBag.CustomerInfo = CustomerRepository.Get(StatementBillRepository.FirstOrDefault(i=>i.StatementBillNo==id)?.CustomerId); } return View(); } } }