protected CheckResult CheckVendorInfo(GRDiagData grData) { var grVendor = new List<string[]>(); if (grData.IsNewIV) { var grVC = new Dictionary<String, List<String>>(); var vcs = new Dictionary<String, List<String>>(); var objsNewIv = from gr in _dbContext.ABi_GR join pg in _dbContext.ABi_PO_GR on gr.ABi_GR_ID equals pg.ABi_GR_ID join po in _dbContext.ABi_PO on pg.ABi_PO_ID equals po.ABi_PO_ID join c in _dbContext.ABi_Company on gr.ABi_Company_ID equals c.ABi_Company_ID join v in _dbContext.ABi_Vendor on gr.ABi_Vendor_ID equals v.ABi_Vendor_ID where ((String.IsNullOrEmpty(grData.GRNumber) || (gr.GRNumber == grData.GRNumber && gr.GRItemNumber.Contains(grData.GRItemNumber)))) && ((String.IsNullOrEmpty(grData.RefGRNumber) || (gr.RefGRNumber == grData.RefGRNumber && gr.RefGRItemNumber.Contains(grData.RefGRItemNumber)))) select new { gr.GRNumber, gr.GRItemNumber, po.PONumber, po.POItemNumber, c.CompanyCode, v.ABi_Vendor_ID, v.VendorCode}; if (objsNewIv != null && objsNewIv.Count() > 0) { foreach(var obj in objsNewIv) { if (!grVC.ContainsKey(obj.VendorCode)) { grVC[obj.VendorCode] = new List<string>(); } if (!grVC[obj.VendorCode].Contains(obj.CompanyCode)) { grVC[obj.VendorCode].Add(obj.CompanyCode); } } } var vcObjs = from gr in _dbContext.ABi_GR join v in _dbContext.ABi_Vendor on gr.ABi_Vendor_ID equals v.ABi_Vendor_ID join vc in _dbContext.ABi_Vendor_Company on v.ABi_Vendor_ID equals vc.ABi_Vendor_ID join c in _dbContext.ABi_Company on vc.ABi_Company_ID equals c.ABi_Company_ID where ((String.IsNullOrEmpty(grData.GRNumber) || (gr.GRNumber == grData.GRNumber && gr.GRItemNumber.Contains(grData.GRItemNumber)))) && ((String.IsNullOrEmpty(grData.RefGRNumber) || (gr.RefGRNumber == grData.RefGRNumber && gr.RefGRItemNumber.Contains(grData.RefGRItemNumber)))) select new { c.CompanyCode, v.ABi_Vendor_ID, v.VendorCode }; if (vcObjs != null && vcObjs.Count() > 0) { foreach (var obj in vcObjs) { if (!vcs.ContainsKey(obj.VendorCode)) { vcs[obj.VendorCode] = new List<string>(); } if (!vcs[obj.VendorCode].Contains(obj.CompanyCode)) { vcs[obj.VendorCode].Add(obj.CompanyCode); } } } foreach (var key in grVC.Keys) { if (vcs.ContainsKey(key)) { foreach (var c in grVC[key]) { if (!vcs[key].Contains(c)) { grVendor.Add(new string[] { key, c }); } } } else { foreach (var c in grVC[key]) { grVendor.Add(new string[] { key, c }); } } } } var sbMsg = new System.Text.StringBuilder(); if (grVendor.Count > 0) { sbMsg.AppendLine("以下公司没有与供应商关联,导致订单不能显示在开票页面:"); foreach (var m in grVendor) { sbMsg.AppendFormat("\t供应商({0})未与公司({1})关联\n", m[0], m[1]); } } if (sbMsg.Length > 0) return new CheckResult(1, sbMsg.ToString()); else return new CheckResult(0, "Success"); }
protected CheckResult CheckHasInvoiced(GRDiagData grData) { var grInvoiced = new List<string[]>(); if (grData.IsNewIV) { var objsNewIV = from gr in _dbContext.ABi_GR join gi in _dbContext.ABi_GR_Invoice on gr.ABi_GR_ID equals gi.ABi_GR_ID join iv in _dbContext.ABi_Invoice on gi.ABi_Invoice_ID equals iv.ABi_Invoice_ID join pg in _dbContext.ABi_PO_GR on gr.ABi_GR_ID equals pg.ABi_GR_ID join po in _dbContext.ABi_PO on pg.ABi_PO_ID equals po.ABi_PO_ID where ((String.IsNullOrEmpty(grData.GRNumber) || (gr.GRNumber == grData.GRNumber && gr.GRItemNumber.Contains(grData.GRItemNumber)))) && ((String.IsNullOrEmpty(grData.RefGRNumber) || (gr.RefGRNumber == grData.RefGRNumber && gr.RefGRItemNumber.Contains(grData.RefGRItemNumber)))) select new { gr.GRNumber, gr.GRItemNumber, po.PONumber, po.POItemNumber, iv.InvoiceNumber }; if (objsNewIV != null && objsNewIV.Count() > 0) { foreach (var oni in objsNewIV) { grInvoiced.Add(new string[] { oni.GRNumber, oni.GRItemNumber, oni.PONumber, oni.POItemNumber, oni.InvoiceNumber }); } } } var sbMsg = new System.Text.StringBuilder(); if (grData.IsNewIV && grInvoiced.Count > 0) { sbMsg.AppendLine("以下收货已经开票,请确认:"); foreach (var gi in grInvoiced) { sbMsg.AppendFormat("\t收货({0}, {1}) -- 订单({2},{3})-- 发票({4})\n", gi[0], gi[1], gi[2], gi[3], gi[4]); } } if (sbMsg.Length > 0) return new CheckResult(1, sbMsg.ToString()); else return new CheckResult(0, "Success"); }
protected CheckResult CheckGRMissed(GRDiagData grData) { var grMissed = new List<String[]>(); var objs = from o in _dbContext.yb_gr_report_swap where (o.belnr == grData.GRNumber && (String.IsNullOrEmpty(grData.GRItemNumber) || o.buzei == grData.GRItemNumber)) || (o.lfbnr == grData.RefGRNumber && (String.IsNullOrEmpty(grData.RefGRItemNumber) || o.lfpos == grData.RefGRItemNumber)) orderby o.id descending select o; foreach (var obj in objs) { if (obj.status == false) { var poObjs = from po in _dbContext.ABi_PO where po.PONumber == obj.ebeln && po.POItemNumber == obj.ebelp select po; if (poObjs == null || poObjs.Count() == 0) { grMissed.Add(new string[] { obj.belnr, obj.buzei, obj.ebeln, obj.ebelp }); } } } var sbMsg = new System.Text.StringBuilder(); if (grMissed.Count > 0) { sbMsg.AppendLine("以下收货对应订单没有从SAP发送到VP中来,请先发送订单到VP:"); foreach (var gm in grMissed) { sbMsg.AppendFormat("\t收货({0}, {1}) -- 订单({2},{3})\n", gm[0], gm[1], gm[2], gm[3]); } } if (sbMsg.Length > 0) return new CheckResult(1, sbMsg.ToString()); else return new CheckResult(0, "Success"); }
protected CheckResult CheckGRReportSwap(GRDiagData grData) { var objs = from o in _dbContext.yb_gr_report_swap where (o.belnr == grData.GRNumber && (String.IsNullOrEmpty(grData.GRItemNumber) || o.buzei == grData.GRItemNumber)) || (o.lfbnr == grData.RefGRNumber && (String.IsNullOrEmpty(grData.RefGRItemNumber) || o.lfpos == grData.RefGRItemNumber)) orderby o.id descending select o; if (objs == null || objs.Count() == 0) { var grObjs = from o in _dbContext.ABi_GR where (o.GRNumber == grData.GRNumber && (String.IsNullOrEmpty(grData.GRItemNumber) || o.GRItemNumber == grData.GRItemNumber)) || (o.RefGRNumber == grData.RefGRNumber && (String.IsNullOrEmpty(grData.RefGRItemNumber) || o.RefGRItemNumber == grData.RefGRItemNumber)) select o; if (grObjs == null || grObjs.Count() == 0) { if (!String.IsNullOrEmpty(grData.GRNumber)) return new CheckResult(-1, String.Format("收货({0},{1})没有发送到VP,请检查SAP相关数据或逻辑!", grData.GRNumber, grData.GRItemNumber)); else return new CheckResult(-1, String.Format("收货(参考凭证:{0},{1})没有发送到VP,请检查SAP相关数据或逻辑!", grData.RefGRNumber, grData.RefGRItemNumber)); } } return new CheckResult(0, "Success"); }
protected CheckResult CheckGRDeleted(GRDiagData grData) { var grDel = new List<String[]>(); var grVendorNoCompany = new List<string[]>(); var grInVP = from gr in _dbContext.ABi_GR join pg in _dbContext.ABi_PO_GR on gr.ABi_GR_ID equals pg.ABi_GR_ID join po in _dbContext.ABi_PO on pg.ABi_PO_ID equals po.ABi_PO_ID where ((String.IsNullOrEmpty(grData.GRNumber) || (gr.GRNumber == grData.GRNumber && gr.GRItemNumber.Contains(grData.GRItemNumber)))) && ((String.IsNullOrEmpty(grData.RefGRNumber) || (gr.RefGRNumber == grData.RefGRNumber && gr.RefGRItemNumber.Contains(grData.RefGRItemNumber)))) select new { gr.GRNumber, gr.GRItemNumber, po.PONumber, po.POItemNumber, gr.Deleted, gr.ABi_Vendor_ID, gr.ABi_Company_ID }; foreach (var gr in grInVP) { if (gr.Deleted == true) { grDel.Add(new String[] { gr.GRNumber, gr.GRItemNumber, gr.PONumber, gr.POItemNumber }); } var vcObjs = (from o in _dbContext.ABi_Vendor_Company where o.ABi_Vendor_ID == gr.ABi_Vendor_ID select o.ABi_Company_ID).ToList(); if (!vcObjs.Contains(gr.ABi_Company_ID.Value)) { var vendorCode = (from o in _dbContext.ABi_Vendor where o.ABi_Vendor_ID == gr.ABi_Vendor_ID select o.VendorCode).First(); var companyCode = (from o in _dbContext.ABi_Company where o.ABi_Company_ID == gr.ABi_Company_ID select o.CompanyCode).First(); grVendorNoCompany.Add(new String[] { gr.GRNumber, gr.GRItemNumber, gr.PONumber, gr.POItemNumber, vendorCode, companyCode }); } } var sbMsg = new System.Text.StringBuilder(); if (grDel.Count > 0) { sbMsg.AppendLine("以下收货已经被删除,请到\"日志管理\"查看详细信息:"); foreach (var gi in grDel) { sbMsg.AppendFormat("\t收货({0}, {1}) -- 订单({2},{3})\n", gi[0], gi[1], gi[2], gi[3]); } } if (grVendorNoCompany.Count > 0) { sbMsg.AppendLine("以下收货对应的供应商没有开通相关公司:"); foreach (var gi in grVendorNoCompany) { sbMsg.AppendFormat("\t收货({0}, {1}) -- 订单({2},{3})-- 供应商代码{4} -- 公司代码{5}\n", gi[0], gi[1], gi[2], gi[3], gi[4], gi[5]); } } if (sbMsg.Length > 0) return new CheckResult(1, sbMsg.ToString()); else return new CheckResult(0, "Success"); }