public ActionResult DrawInvoice(InvoiceQueryViewModel viewModel) { //HtmlRender.RenderToImage //ViewBag.ViewModel = viewModel; //ViewResult result = (ViewResult)PrintInvoice(viewModel); //result.ViewName = "CanvasDrawInvoice"; //return result; String viewUrl = Settings.Default.HostDomain + VirtualPathUtility.ToAbsolute("~/Invoice/CanvasPrintInvoice") + "?" + Request.Params["QUERY_STRING"]; using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; String data = client.DownloadString(viewUrl); using (Image image = HtmlRender.RenderToImage(data)) { //using (Bitmap bmp = new Bitmap(image, new Size(image.Size.Width * 9 / 10, image.Size.Height * 9 / 10))) //{ Response.Clear(); Response.ContentType = "image/Png"; image.Save(Response.OutputStream, ImageFormat.Png); //} //Response.End(); } } return(new EmptyResult()); }
public ActionResult PrintInvoice(InvoiceQueryViewModel viewModel) { ViewBag.ViewModel = viewModel; var items = models.GetTable <InvoiceItem>().Where(i => false); if (viewModel.InvoiceID != null && viewModel.InvoiceID.Length > 0) { items = models.GetTable <InvoiceItem>().Where(i => viewModel.InvoiceID.Contains(i.InvoiceID)); } else if (viewModel.UID.HasValue) { var profile = models.GetTable <UserProfile>().Where(u => u.UID == viewModel.UID).FirstOrDefault(); if (profile != null) { items = models.GetTable <DocumentPrintQueue>().Where(d => d.UID == viewModel.UID) .Join(models.GetTable <InvoiceItem>(), d => d.DocID, i => i.InvoiceID, (d, i) => i); } } else { viewModel.InvoiceNo = viewModel.InvoiceNo.GetEfficientString(); if (viewModel.InvoiceNo != null) { if (Regex.IsMatch(viewModel.InvoiceNo, "[A-Za-z]{2}[0-9]{8}")) { String trackCode = viewModel.InvoiceNo.Substring(0, 2).ToUpper(); String no = viewModel.InvoiceNo.Substring(2); items = models.GetTable <InvoiceItem>().Where(c => c.TrackCode == trackCode && c.No == no); } } } return(View(items)); }
public ActionResult PrintAllowance(InvoiceQueryViewModel viewModel) { ViewBag.ViewModel = viewModel; var items = models.GetTable <InvoiceAllowance>().Where(i => false); if (viewModel.AllowanceID != null && viewModel.AllowanceID.Length > 0) { items = models.GetTable <InvoiceAllowance>().Where(i => viewModel.AllowanceID.Contains(i.AllowanceID)); } else if (viewModel.UID.HasValue) { var profile = models.GetTable <UserProfile>().Where(u => u.UID == viewModel.UID).FirstOrDefault(); if (profile != null) { items = models.GetTable <DocumentPrintQueue>().Where(d => d.UID == viewModel.UID) .Join(models.GetTable <InvoiceAllowance>(), d => d.DocID, i => i.AllowanceID, (d, i) => i); } } else { viewModel.InvoiceNo = viewModel.InvoiceNo.GetEfficientString(); if (viewModel.InvoiceNo != null) { items = models.GetTable <InvoiceAllowance>().Where(c => c.AllowanceNumber == viewModel.InvoiceNo); } } return(View(items)); }
public ActionResult CanvasPrintAllowance(InvoiceQueryViewModel viewModel) { ViewBag.ViewModel = viewModel; ViewResult result = (ViewResult)PrintAllowance(viewModel); result.ViewName = "CanvasPrintAllowance"; return(result); }
public ActionResult PrintAll(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult)InquireInvoice(viewModel); IQueryable <Payment> items = (IQueryable <Payment>)result.Model; string pdfFile = createInvoicePDF(items.Select(p => p.InvoiceItem)); return(File(pdfFile, "application/octet-stream", Path.GetFileName(pdfFile))); }
public ActionResult PrintAllInvoice(InvoiceQueryViewModel viewModel, String printerIP) { ViewResult result = (ViewResult)InquireInvoice(viewModel); IQueryable <Payment> items = (IQueryable <Payment>)result.Model; ViewBag.PrinterIP = printerIP; return(View("PrintInvoiceImage", items.Select(p => p.InvoiceItem))); }
public ActionResult PrintAllowanceImage(InvoiceQueryViewModel viewModel, String printerIP) { ViewBag.ViewModel = viewModel; ViewResult result = (ViewResult)PrintAllowance(viewModel); result.ViewName = "~/Views/Invoice/PrintAllowanceImage.cshtml"; ViewBag.PrinterIP = printerIP; return(result); }
public async Task <ActionResult> GetInvoicePDF(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult)PrintInvoice(viewModel); IQueryable <InvoiceItem> items = (IQueryable <InvoiceItem>)result.Model; string pdfFile = await createInvoicePDFAsync(items); return(new PhysicalFileResult(pdfFile, "application/pdf")); //return new PhysicalFileResult(pdfFile, "application/pdf", Path.GetFileName(pdfFile)); }
public async Task <ActionResult> PrintAll(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult) await InquireInvoiceAsync(viewModel); IQueryable <Payment> items = (IQueryable <Payment>)result.Model; string pdfFile = await createInvoicePDFAsync(items.Select(p => p.InvoiceItem)); return(new PhysicalFileResult(pdfFile, "application/octet-stream" /*, Path.GetFileName(pdfFile)*/)); }
public ActionResult InquireInvoiceByDispatch(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult)InquireInvoice(viewModel); if (result.Model is IQueryable <Payment> ) { result.ViewName = "~/Views/Invoice/Module/InvoiceItemSummary.ascx"; } return(result); }
public ActionResult GetAllowancePDF(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult)PrintAllowance(viewModel); IQueryable <InvoiceAllowance> items = (IQueryable <InvoiceAllowance>)result.Model; string pdfFile = createAllowancePDF(items); //return File(pdfFile, "application/pdf", Path.GetFileName(pdfFile)); return(File(pdfFile, "application/pdf")); }
public ActionResult InquireInvoiceToCommitAllowance(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult)InquireInvoice(viewModel); if (result.Model is IQueryable <Payment> ) { ViewBag.DataAction = "CommitAllowance"; result.ViewName = "~/Views/Invoice/Module/InvoiceItemList.ascx"; } return(result); }
public ActionResult PrintIndex(InvoiceQueryViewModel viewModel) { if (String.IsNullOrEmpty(viewModel.InvoiceNo) && viewModel.InvoiceID == null) { viewModel.HandlerID = -1; } ViewBag.ViewModel = viewModel; ViewResult result = (ViewResult)InquireInvoice(viewModel); return(View("PrintIndex", result.Model ?? models.GetTable <Payment>().Where(p => false))); }
public ActionResult PrintAllowanceImageByUID(InvoiceQueryViewModel viewModel, String printerIP) { var profile = HttpContext.GetUser(); if (profile == null) { profile = models.GetTable <UserProfile>().Where(u => u.UID == viewModel.UID).FirstOrDefault(); if (profile != null) { HttpContext.SignOn(profile); } } return(PrintAllowanceImage(viewModel, printerIP)); }
public async Task <ActionResult> LoadInvoiceImageByUID(InvoiceQueryViewModel viewModel, String printerIP) { var profile = await HttpContext.GetUserAsync(); if (profile == null) { profile = models.GetTable <UserProfile>().Where(u => u.UID == viewModel.UID).FirstOrDefault(); if (profile != null) { await HttpContext.SignOnAsync(profile); } } return(LoadInvoiceImage(viewModel, printerIP)); }
public ActionResult LoadInvoiceImage(InvoiceQueryViewModel viewModel, String printerIP) { ViewBag.ViewModel = viewModel; ViewResult result = (ViewResult)PrintInvoice(viewModel); //if (String.IsNullOrEmpty(printerIP)) //{ // result.ViewName = "LoadInvoiceImage"; //} //else { ViewBag.PrinterIP = printerIP; result.ViewName = "~/Views/Invoice/PrintInvoiceImage.cshtml"; } return(result); }
public async Task <ActionResult> DrawAllowanceAsync(InvoiceQueryViewModel viewModel) { String viewUrl = $"{Startup.Properties["HostDomain"]}{VirtualPathUtility.ToAbsolute("~/Invoice/CanvasPrintAllowance")}{Request.QueryString}"; var converter = new HtmlConverter(); var bytes = converter.FromUrl(viewUrl); Response.ContentType = "image/jpeg"; using (FileBufferingWriteStream output = new FileBufferingWriteStream()) { output.Write(bytes); //output.Seek(0, SeekOrigin.Begin); await output.DrainBufferAsync(Response.Body); } return(new EmptyResult()); }
public ActionResult DrawAllowance(InvoiceQueryViewModel viewModel) { String viewUrl = Settings.Default.HostDomain + VirtualPathUtility.ToAbsolute("~/Invoice/CanvasPrintAllowance") + "?" + Request.Params["QUERY_STRING"]; using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; String data = client.DownloadString(viewUrl); using (Image image = HtmlRender.RenderToImage(data)) { Response.Clear(); Response.ContentType = "image/Png"; image.Save(Response.OutputStream, ImageFormat.Png); //Response.End(); } } return(new EmptyResult()); }
public ActionResult VoidInvoice(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult)InquireInvoice(viewModel); IQueryable <Payment> items = (IQueryable <Payment>)result.Model; if (items.Count() > 0) { String C0701Outbound = Path.Combine(Settings.Default.EINVTurnKeyPath, "C0701", "SRC"); if (!Directory.Exists(C0701Outbound)) { Directory.CreateDirectory(C0701Outbound); } foreach (var item in items.Select(p => p.InvoiceItem).Where(i => i.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票).ToArray()) { String fileName = Path.Combine(C0701Outbound, item.TrackCode + item.No + ".xml"); item.CreateC0701().ConvertToXml().Save(fileName); } } return(Json(new { result = true }, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> VoidInvoice(InvoiceQueryViewModel viewModel) { ViewResult result = (ViewResult) await InquireInvoiceAsync(viewModel); IQueryable <Payment> items = (IQueryable <Payment>)result.Model; if (items.Count() > 0) { String C0701Outbound = Path.Combine(Startup.Properties["EINVTurnKeyPath"], "C0701", "SRC"); if (!Directory.Exists(C0701Outbound)) { Directory.CreateDirectory(C0701Outbound); } foreach (var item in items.Select(p => p.InvoiceItem).Where(i => i.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票).ToArray()) { String fileName = Path.Combine(C0701Outbound, item.TrackCode + item.No + ".xml"); item.CreateC0701().ConvertToXml().Save(fileName); } } return(Json(new { result = true })); }
// GET: InvoiceConsole public ActionResult DownloadInvoiceNoIntervalCsv(InvoiceQueryViewModel viewModel) { ViewBag.ViewModel = viewModel; if (viewModel.KeyID != null) { viewModel.TrackID = viewModel.DecryptKeyValue(); } IQueryable <InvoiceTrackCode> items = models.GetTable <InvoiceTrackCode>(); if (viewModel.TrackID.HasValue) { items = items.Where(t => t.TrackID == viewModel.TrackID); } else { if (!viewModel.DateFrom.HasValue) { viewModel.DateFrom = DateTime.Today.FirstDayOfMonth(); if (viewModel.DateFrom.Value.Month % 2 == 0) { viewModel.DateFrom = viewModel.DateFrom.Value.AddMonths(-1); } } items = items.Where(t => t.Year == viewModel.DateFrom.Value.Year) .Where(t => t.PeriodNo == viewModel.TrackPeriodNo); } viewModel.TrackCode = viewModel.TrackCode.GetEfficientString(); if (viewModel.TrackCode != null) { items = items.Where(t => t.TrackCode == viewModel.TrackCode); } return(View("~/Views/InvoiceConsole/Module/DownloadInvoiceNoIntervalCsv.cshtml", items)); }
public ActionResult CommitInvoiceTrackNoInterval(InvoiceQueryViewModel viewModel) { ViewBag.ViewModel = viewModel; var profile = HttpContext.GetUser(); if (viewModel.BookletBranchID == null || viewModel.BookletBranchID.Length == 0 || viewModel.BookletBranchID.Any(c => !c.HasValue)) { ModelState.AddModelError("BookletBranchID", "請選擇分店!!"); } if (viewModel.KeyID != null) { viewModel.TrackID = viewModel.DecryptKeyValue(); } var trackCode = models.GetTable <InvoiceTrackCode>() .Where(t => t.TrackID == viewModel.TrackID).FirstOrDefault(); if (trackCode == null) { viewModel.TrackCode = viewModel.TrackCode.GetEfficientString(); if (viewModel.TrackCode == null || !Regex.IsMatch(viewModel.TrackCode, "[A-Z]{2}")) { ModelState.AddModelError("TrackCode", "請輸入字軌"); } if (!viewModel.Year.HasValue) { ModelState.AddModelError("Year", "請選擇發票年度"); } if (!viewModel.PeriodNo.HasValue) { ModelState.AddModelError("PeriodNo", "請選擇期別"); } } int?range = 0, assignedBooklet = 0;; if (!viewModel.StartNo.HasValue || !(viewModel.StartNo >= 0 && viewModel.StartNo < 100000000)) { ModelState.AddModelError("StartNo", "請輸入起號"); } else if (!viewModel.EndNo.HasValue || !(viewModel.EndNo >= 0 && viewModel.EndNo < 100000000)) { ModelState.AddModelError("EndNo", "請輸入迄號"); } else if (viewModel.EndNo <= viewModel.StartNo || (((range = viewModel.EndNo - viewModel.StartNo + 1)) % 50 != 0)) { ModelState.AddModelError("StartNo", "不符號碼大小順序與差距為50之倍數原則"); } else if ((assignedBooklet = viewModel.BookletCount.Where(c => c.HasValue && c > 0).Sum(c => c)) > (range / 50)) { ModelState.AddModelError("BookletCount", "輸入總本數超過配號區間"); } if (!ModelState.IsValid) { ViewBag.ModelState = ModelState; return(View(ConsoleHomeController.InputErrorView)); } if (trackCode == null) { trackCode = models.GetTable <InvoiceTrackCode>() .Where(t => t.TrackCode == viewModel.TrackCode && t.Year == viewModel.Year && t.PeriodNo == viewModel.PeriodNo).FirstOrDefault(); } if (trackCode == null) { trackCode = new InvoiceTrackCode { TrackCode = viewModel.TrackCode, Year = viewModel.Year.Value, PeriodNo = viewModel.PeriodNo.Value, }; models.GetTable <InvoiceTrackCode>().InsertOnSubmit(trackCode); } int?startNo = trackCode.StartNo = viewModel.StartNo; trackCode.EndNo = viewModel.EndNo; foreach (var b in viewModel.BookletBranchID) { if (!trackCode.InvoiceTrackCodeAssignment.Any(t => t.SellerID == b)) { trackCode.InvoiceTrackCodeAssignment.Add(new InvoiceTrackCodeAssignment { SellerID = b.Value }); } } models.SubmitChanges(); for (int idx = 0; idx < viewModel.BookletBranchID.Length; idx++) { var interval = models.GetTable <InvoiceNoInterval>() .Where(i => i.SellerID == viewModel.BookletBranchID[idx]) .Where(i => i.TrackID == trackCode.TrackID).FirstOrDefault(); if (interval == null) { if (!viewModel.BookletCount[idx].HasValue || viewModel.BookletCount[idx] <= 0) { continue; } interval = new InvoiceNoInterval { TrackID = trackCode.TrackID, SellerID = viewModel.BookletBranchID[idx].Value, }; models.GetTable <InvoiceNoInterval>().InsertOnSubmit(interval); } else { if (interval.InvoiceNoAssignment.Any()) { if (interval.StartNo != startNo || !viewModel.BookletCount[idx].HasValue || viewModel.BookletCount[idx] <= 0) { ModelState.AddModelError($"BranchID_{viewModel.BookletBranchID[idx]}", "字軌配號已使用,無法修改"); continue; } else if ((startNo + viewModel.BookletCount[idx] * 50 - 1) < interval.EndNo) { ModelState.AddModelError($"BranchID_{viewModel.BookletBranchID[idx]}", "字軌配號已使用本組數,只允許增加"); continue; } } else if (!viewModel.BookletCount[idx].HasValue || viewModel.BookletCount[idx] <= 0) { models.GetTable <InvoiceNoInterval>().DeleteOnSubmit(interval); continue; } } interval.StartNo = startNo.Value; startNo += viewModel.BookletCount[idx] * 50; interval.EndNo = startNo.Value - 1; } if (!ModelState.IsValid) { ViewBag.ModelState = ModelState; return(View(ConsoleHomeController.InputErrorView)); } try { models.SubmitChanges(); if (assignedBooklet > 0) { return(Json(new { result = true, message = $"總本數:{range / 50},已配置本數:{assignedBooklet}" })); } else { models.ExecuteCommand("delete InvoiceTrackCode where TrackID = {0}", trackCode.TrackID); return(Json(new { result = true, message = "未配置本組數。" })); } } catch (Exception ex) { Logger.Error(ex); return(Json(new { result = false, message = ex.Message })); } }
public ActionResult CheckTurnkeyLogs(InvoiceQueryViewModel viewModel) { if (viewModel.Year.HasValue && viewModel.Month.HasValue) { viewModel.DateFrom = new DateTime(viewModel.Year.Value, viewModel.Month.Value, 1); if (viewModel.DateFrom.Value.Month % 2 == 0) { viewModel.DateFrom = viewModel.DateFrom.Value.AddMonths(-1); } viewModel.DateTo = viewModel.DateFrom.Value.AddMonths(2); } else { if (!viewModel.DateFrom.HasValue) { viewModel.DateFrom = DateTime.Today.FirstDayOfMonth(); if (viewModel.DateFrom.Value.Month % 2 == 0) { viewModel.DateFrom = viewModel.DateFrom.Value.AddMonths(-1); } } if (!viewModel.DateTo.HasValue) { viewModel.DateTo = viewModel.DateFrom.Value.AddMonths(2); } } var items = models.GetTable <InvoiceItem>() .Where(i => i.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票) .Where(i => i.InvoiceDate >= viewModel.DateFrom && i.InvoiceDate < viewModel.DateTo); ViewBag.ViewModel = viewModel; ViewBag.DataItems = items; var cancellationItems = models.GetTable <InvoiceCancellation>().Where(i => i.CancelDate >= viewModel.DateFrom && i.CancelDate < viewModel.DateTo); ViewBag.CancellationItems = cancellationItems; var allowanceItems = models.GetTable <InvoiceAllowance>().Where(a => a.AllowanceDate >= viewModel.DateFrom && a.AllowanceDate < viewModel.DateTo); ViewBag.AllowanceItems = allowanceItems; void buildInvoiceLogs(DataSet ds) { var logItems = items.Where(i => i.InvoiceItemDispatchLog == null || !i.InvoiceItemDispatchLog.Status.HasValue || i.InvoiceItemDispatchLog.Status == (int)Naming.GeneralStatus.Failed); var details = logItems .OrderBy(i => i.SellerID) .ThenBy(i => i.InvoiceID) .ToArray() .Select(i => new { 發票號碼 = $"{i.TrackCode}{i.No}", 發票日期 = i.InvoiceDate, 開立人統編 = i.Organization.ReceiptNo, }); DataTable table = details.ToDataTable(); table.TableName = "發票未傳送"; ds.Tables.Add(table); } void buildInvoiceCancellationLogs(DataSet ds) { var calcCancellation = models.GetTable <InvoiceItem>() .Where(i => i.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票) .Join(models.GetTable <Payment>() .Join(models.GetTable <VoidPayment>().Where(v => v.Status == (int)Naming.CourseContractStatus.已生效), p => p.PaymentID, v => v.VoidID, (p, v) => p), i => i.InvoiceID, p => p.InvoiceID, (i, p) => i) .Join(cancellationItems, i => i.InvoiceID, c => c.InvoiceID, (i, c) => c); var logItems = calcCancellation.Where(i => i.InvoiceCancellationDispatchLog == null || !i.InvoiceCancellationDispatchLog.Status.HasValue || i.InvoiceCancellationDispatchLog.Status == (int)Naming.GeneralStatus.Failed); var details = logItems .OrderBy(i => i.InvoiceItem.SellerID) .ThenBy(i => i.InvoiceID) .ToArray() .Select(i => new { 作廢發票號碼 = $"{i.CancellationNo}", 作廢日期 = i.CancelDate, 開立人統編 = i.InvoiceItem.Organization.ReceiptNo, }); DataTable table = details.ToDataTable(); table.TableName = "作廢發票未傳送"; ds.Tables.Add(table); } void buildAllowanceLogs(DataSet ds) { var calcAllowance = models.GetTable <InvoiceItem>() .Where(i => i.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票) .Join(allowanceItems, i => i.InvoiceID, c => c.InvoiceID, (i, c) => c); var logItems = calcAllowance.Where(i => i.InvoiceAllowanceDispatchLog == null || !i.InvoiceAllowanceDispatchLog.Status.HasValue || i.InvoiceAllowanceDispatchLog.Status == (int)Naming.GeneralStatus.Failed); var details = logItems .OrderBy(i => i.InvoiceAllowanceSeller.SellerID) .ThenBy(i => i.AllowanceID) .ToArray() .Select(i => new { 折讓單號碼 = i.AllowanceNumber, 發票號碼 = $"{i.InvoiceItem?.TrackCode}{i.InvoiceItem?.No}", 折讓日期 = i.AllowanceDate, 開立人統編 = i.InvoiceAllowanceSeller.ReceiptNo, }); DataTable table = details.ToDataTable(); table.TableName = "折讓單未傳送"; ds.Tables.Add(table); } Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AppendCookie(new HttpCookie("fileDownloadToken", viewModel.FileDownloadToken)); Response.AddHeader("Cache-control", "max-age=1"); Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}({1:yyyy-MM-dd HH-mm-ss}).xlsx", HttpUtility.UrlEncode("IncompleteTurnkeyLogs"), DateTime.Now)); using (DataSet ds = new DataSet()) { buildInvoiceLogs(ds); buildInvoiceCancellationLogs(ds); buildAllowanceLogs(ds); using (var xls = ds.ConvertToExcel()) { xls.SaveAs(Response.OutputStream); } } return(new EmptyResult()); }
public ActionResult InquireInvoiceDispatchLog(InvoiceQueryViewModel viewModel) { return(View("~/Views/Invoice/Module/InvoiceDispatchLogSummary.cshtml", viewModel)); }
public ActionResult InquireInvoice(InvoiceQueryViewModel viewModel) { IQueryable <InvoiceItem> items = models.GetTable <InvoiceItem>().Where(i => i.InvoiceType == (int)Naming.InvoiceTypeDefinition.一般稅額計算之電子發票); IQueryable <Payment> paymentItems = models.GetTable <Payment>(); var profile = HttpContext.GetUser(); bool hasConditon = false; if (viewModel.InvoiceID != null && viewModel.InvoiceID.Length > 0) { items = items.Where(i => viewModel.InvoiceID.Contains(i.InvoiceID)); } viewModel.InvoiceNo = viewModel.InvoiceNo.GetEfficientString(); if (viewModel.InvoiceNo != null) { if (Regex.IsMatch(viewModel.InvoiceNo, "[A-Za-z]{2}[0-9]{8}")) { String trackCode = viewModel.InvoiceNo.Substring(0, 2).ToUpper(); String no = viewModel.InvoiceNo.Substring(2); items = items.Where(c => c.TrackCode == trackCode && c.No == no); hasConditon = true; } else { ModelState.AddModelError("InvoiceNo", "請輸入正確發票號碼!!"); } } if (viewModel.DispatchStatus.HasValue) { items = items .Join(models.GetTable <InvoiceItemDispatchLog>().Where(d => d.Status == viewModel.DispatchStatus), i => i.InvoiceID, d => d.InvoiceID, (i, d) => i); } if (!hasConditon) { if (viewModel.BranchID.HasValue) { hasConditon = true; paymentItems = paymentItems.Where(c => c.PaymentTransaction.BranchID == viewModel.BranchID); } } if (!hasConditon) { if (viewModel.HandlerID.HasValue) { hasConditon = true; paymentItems = paymentItems.Where(c => c.HandlerID == viewModel.HandlerID); } } if (!hasConditon) { if (profile.IsAssistant() || profile.IsAccounting() || profile.IsOfficer()) { } else if (profile.IsManager() || profile.IsViceManager()) { var branches = models.GetTable <BranchStore>().Where(b => b.ManagerID == profile.UID || b.ViceManagerID == profile.UID); paymentItems = paymentItems .Join(models.GetTable <PaymentTransaction>() .Join(branches, p => p.BranchID, b => b.BranchID, (p, b) => p), c => c.PaymentID, h => h.PaymentID, (c, h) => c); } else if (profile.IsCoach()) { paymentItems = paymentItems.Where(c => c.HandlerID == profile.UID); } else { items = items.Where(p => false); } } if (viewModel.IsPrinted.HasValue) { if (viewModel.IsPrinted == true) { items = items.Where(i => i.Document.DocumentPrintLog.Count > 0); } else if (viewModel.IsPrinted == false) { items = items.Where(i => i.Document.DocumentPrintLog.Count == 0); } } if (viewModel.InvoiceType.HasValue) { items = items.Where(c => c.InvoiceType == (byte)viewModel.InvoiceType); } if (viewModel.DateFrom.HasValue && viewModel.DocType == Naming.DocumentTypeDefinition.E_Invoice) { items = items.Where(c => c.InvoiceDate >= viewModel.DateFrom); } if (viewModel.DateTo.HasValue && viewModel.DocType == Naming.DocumentTypeDefinition.E_Invoice) { items = items.Where(c => c.InvoiceDate < viewModel.DateTo.Value.AddDays(1)); } if (!ModelState.IsValid) { ViewBag.ModelState = this.ModelState; return(View("~/Views/Shared/ReportInputError.ascx")); } if (viewModel.DocType == Naming.DocumentTypeDefinition.E_Allowance) { IQueryable <InvoiceAllowance> allowanceItems = models.GetTable <InvoiceAllowance>(); if (viewModel.DateFrom.HasValue) { allowanceItems = allowanceItems.Where(c => c.AllowanceDate >= viewModel.DateFrom); } if (viewModel.DateTo.HasValue) { allowanceItems = allowanceItems.Where(c => c.AllowanceDate < viewModel.DateTo.Value.AddDays(1)); } items = items.Join(allowanceItems, i => i.InvoiceID, a => a.InvoiceID, (i, a) => i); paymentItems = paymentItems.Join(items, p => p.InvoiceID, i => i.InvoiceID, (p, i) => p); return(View("~/Views/Invoice/Module/AllowanceItemList.ascx", paymentItems)); } else { paymentItems = paymentItems.Join(items, p => p.InvoiceID, i => i.InvoiceID, (p, i) => p); return(View("~/Views/Invoice/Module/InvoiceItemList.ascx", paymentItems)); } }
public ActionResult AllowanceIndex(InvoiceQueryViewModel viewModel) { return(View("AllowanceIndex", models.GetTable <Payment>().Where(p => false))); }
public ActionResult TurnkeyIndex(InvoiceQueryViewModel viewModel) { ViewBag.ViewModel = viewModel; return(View(viewModel)); }