frmOrderReport.cs 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using CoreFS.CA06;
  10. using Core.Mes.Client.Comm.Server;
  11. using Core.Mes.Client.Comm.Control;
  12. using Infragistics.Win.UltraWinGrid;
  13. using Core.Mes.Client.Comm.Format;
  14. using System.Collections;
  15. using Core.Mes.Client.Comm.Tool;
  16. using Core.Mes.Client.Comm;
  17. using Infragistics.Win.UltraWinEditors;
  18. using System.Reflection;
  19. using Core.StlMes.Client.SaleOrder.Dialog;
  20. namespace Core.StlMes.Client.SaleOrder.ReviewForm
  21. {
  22. public partial class frmOrderReport : FrmBase
  23. {
  24. public frmOrderReport()
  25. {
  26. InitializeComponent();
  27. this.IsLoadUserView = true;
  28. }
  29. /// <summary>
  30. /// 用于查询利库数据的参数
  31. /// </summary>
  32. ArrayList listLiku = new ArrayList();
  33. /// <summary>
  34. /// 重写基类toolBar方法
  35. /// </summary>
  36. /// <param name="sender"></param>
  37. /// <param name="ToolbarKey"></param>
  38. public override void ToolBar_Click(object sender, string ToolbarKey)
  39. {
  40. switch (ToolbarKey)
  41. {
  42. case "doQuery":
  43. doQuery();
  44. break;
  45. case "doReport":
  46. doReport();
  47. break;
  48. case "doClearReport":
  49. doClearReport();
  50. break;
  51. case "Export":
  52. ExportData();
  53. break;
  54. case "LiKu":
  55. ReportLiKu();
  56. break;
  57. case "CheckNLK":
  58. CheckNLK();
  59. break;
  60. case "CheckLK":
  61. CheckLK();
  62. break;
  63. case "UpdatePresentStatus":
  64. UpdatePresentStatus();
  65. break;
  66. case "doClose":
  67. this.Close();
  68. break;
  69. }
  70. }
  71. private void UpdatePresentStatus()
  72. {
  73. ultraGridReport.UpdateData();
  74. UltraGridRow[] dr = GridHelper.GetRowsWithKey(ultraGridReport, new string[] { "CHK" }, new string[] { "True" });
  75. if (dr.Length <= 0)
  76. {
  77. MessageBox.Show("请先选择交货行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  78. return;
  79. }
  80. //这里只是先在界面判断一下状态,后台会实时查询状态的。
  81. foreach (UltraGridRow urow in ultraGridReport.Rows)
  82. {
  83. if (Convert.ToBoolean(urow.Cells["CHK"].Value))
  84. {
  85. if (urow.Cells["PORDERSTATUS"].Value.ToString() != "未提报")
  86. {
  87. MessageBox.Show("您选择的记录存在已经被处理的状态,不能修改提报状态,\r\n只有[未提报]可以修改提报状态!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  88. urow.Activate();
  89. return;
  90. }
  91. if (urow.Cells["ORDERFROMCODE"].Value.ToString() != "100102")
  92. {
  93. MessageBox.Show("只有[国际贸易部]可以修改提报状态!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  94. urow.Activate();
  95. return;
  96. }
  97. }
  98. }
  99. if (MessageBox.Show("是否确认修改提报状态选择的记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  100. {
  101. return;
  102. }
  103. ArrayList list = new ArrayList();
  104. foreach (UltraGridRow urow in ultraGridReport.Rows)
  105. {
  106. if (Convert.ToBoolean(urow.Cells["CHK"].Value))
  107. {
  108. ArrayList parm = new ArrayList();
  109. string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString();
  110. parm.Add(ordLnDlyPk);
  111. parm.Add(urow.Cells["PRESENT_STATUS"].Value.ToString());
  112. list.Add(parm);
  113. }
  114. }
  115. CoreClientParam ccp = new CoreClientParam();
  116. ccp.IfShowErrMsg = false;
  117. ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport";
  118. ccp.MethodName = "UpdatePresentStatus";
  119. ccp.ServerParams = new Object[] { list };
  120. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  121. if (ccp == null)
  122. return;
  123. else
  124. {
  125. if (ccp.ReturnCode == -1)
  126. {
  127. MessageBox.Show(ccp.ReturnObject.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  128. return;
  129. }
  130. }
  131. MessageBox.Show("修改完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  132. doQuery();
  133. }
  134. /// <summary>
  135. /// 评审不利库的原因
  136. /// </summary>
  137. private void CheckNLK()
  138. {
  139. ultraGridReport.UpdateData();
  140. UltraGridRow ugr = ultraGridReport.ActiveRow;
  141. if (ugr == null)
  142. {
  143. MessageUtil.ShowWarning("请选择您要审核不利库愿意的交货行!");
  144. return;
  145. }
  146. if (ugr.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕")
  147. {
  148. MessageUtil.ShowWarning("您选择的记录已经提报完毕,此功能只针对“生效状态”的交货行!");
  149. ugr.Activate();
  150. return;
  151. }
  152. string ordLnDlyPk = ugr.Cells["ORD_LN_DLY_PK"].Value.ToString();
  153. string str = "合同号:" + ugr.Cells["ORDER_NO"].Value.ToString() + "/" + ugr.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + ugr.Cells["DELIVERY_NO"].Value.ToString();
  154. DataTable lkDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryLKFlag", new object[] { ordLnDlyPk }, this.ob);
  155. if (lkDt != null && lkDt.Rows.Count > 0)
  156. {
  157. string lkFlag = lkDt.Rows[0]["IS_LIKU"].ToString2();
  158. string lkCheck = lkDt.Rows[0]["NLK_CHECK"].ToString2();
  159. if (lkFlag == "1")
  160. {
  161. if (lkCheck != "L")
  162. {
  163. MessageUtil.ShowWarning("您选择的交货行没有利库原因可审核!");
  164. return;
  165. }
  166. }
  167. else
  168. {
  169. MessageUtil.ShowWarning("您选择的交货行没有利库原因可审核!");
  170. return;
  171. }
  172. }
  173. else
  174. {
  175. MessageUtil.ShowWarning("交货行已不存在,请刷新数据!");
  176. return;
  177. }
  178. FrmCheckNLK fcn = new FrmCheckNLK(ordLnDlyPk, this.ob);
  179. fcn.TipStr = str;
  180. fcn.ShowDialog();
  181. }
  182. /// <summary>
  183. /// 对已经利库的数据进行评审
  184. /// </summary>
  185. private void CheckLK()
  186. {
  187. ultraGridReport.UpdateData();
  188. UltraGridRow ugr = ultraGridReport.ActiveRow;
  189. if (ugr == null)
  190. {
  191. MessageUtil.ShowWarning("请选择您要利库的交货行!");
  192. return;
  193. }
  194. if (ugr.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕")
  195. {
  196. MessageUtil.ShowWarning("您选择的记录已经提报完毕,此功能只能对“生效状态”的交货行利库!");
  197. ugr.Activate();
  198. return;
  199. }
  200. string ordLnDlyPk = ugr.Cells["ORD_LN_DLY_PK"].Value.ToString();
  201. string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString();
  202. if (!IsNeedCheckLK(ordLnDlyPk))
  203. {
  204. MessageUtil.ShowWarning("您选择的交货行没有利库记录需要审核!");
  205. ugr.Activate();
  206. return;
  207. }
  208. FrmReportLiKu frl = new FrmReportLiKu(this.ob, "2");
  209. frl.DataArr = this.ValidDataPurviewIds;
  210. frl.ListParm = listLiku;
  211. frl.OrdSaleOrg = saleOrg;
  212. frl.OrdLnDlyPk = ordLnDlyPk;
  213. frl.FormClosingQueryHandle += frl_FormClosingQueryHandle;
  214. frl.WindowState = FormWindowState.Maximized;
  215. frl.StartPosition = FormStartPosition.CenterScreen;
  216. frl.ShowDialog();
  217. }
  218. /// <summary>
  219. /// 导出
  220. /// </summary>
  221. private void ExportData()
  222. {
  223. GridHelper.ulGridToExcel(ultraGridReport, "提报数据");
  224. }
  225. /// <summary>
  226. /// 取消提报
  227. /// </summary>
  228. private void doClearReport()
  229. {
  230. ultraGridReport.UpdateData();
  231. UltraGridRow[] dr = GridHelper.GetRowsWithKey(ultraGridReport, new string[] { "CHK" }, new string[] { "True" });
  232. if (dr.Length <= 0)
  233. {
  234. MessageBox.Show("请先选择交货行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  235. return;
  236. }
  237. //这里只是先在界面判断一下状态,后台会实时查询状态的。
  238. foreach (UltraGridRow urow in ultraGridReport.Rows)
  239. {
  240. if (Convert.ToBoolean(urow.Cells["CHK"].Value))
  241. {
  242. if (urow.Cells["PORDERSTATUS"].Value.ToString() == "未提报")
  243. {
  244. MessageBox.Show("您选择的记录还没有提报,不能取消提报!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  245. urow.Activate();
  246. return;
  247. }
  248. else if (urow.Cells["PORDERSTATUS"].Value.ToString() != "待接收")
  249. {
  250. MessageBox.Show("您选择的记录存在已经被处理的状态,不能取消提报,\r\n只有[待接收]可以取消提报!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  251. urow.Activate();
  252. return;
  253. }
  254. }
  255. }
  256. if (MessageBox.Show("是否确认取消提报选择的记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  257. {
  258. return;
  259. }
  260. ArrayList list = new ArrayList();
  261. foreach (UltraGridRow urow in ultraGridReport.Rows)
  262. {
  263. if (Convert.ToBoolean(urow.Cells["CHK"].Value))
  264. {
  265. ArrayList parm = new ArrayList();
  266. string ordPk = urow.Cells["ORD_PK"].Value.ToString();
  267. string ordLnPk = urow.Cells["ORD_LN_PK"].Value.ToString();
  268. string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString();
  269. parm.Add(ordPk);
  270. parm.Add(ordLnPk);
  271. parm.Add(ordLnDlyPk);
  272. parm.Add(UserInfo.GetUserName());
  273. list.Add(parm);
  274. }
  275. }
  276. CoreClientParam ccp = new CoreClientParam();
  277. ccp.IfShowErrMsg = false;
  278. ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport";
  279. ccp.MethodName = "doClearReport";
  280. ccp.ServerParams = new Object[] { list };
  281. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  282. if (ccp == null)
  283. return;
  284. else
  285. {
  286. if (ccp.ReturnCode == -1)
  287. {
  288. MessageBox.Show(ccp.ReturnObject.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  289. return;
  290. }
  291. list = new ArrayList();
  292. foreach (UltraGridRow urow in ultraGridReport.Rows)
  293. {
  294. if (Convert.ToBoolean(urow.Cells["CHK"].Value))
  295. {
  296. if (urow.Cells["ORDERFROMCODE"].Value.ToString() != "100102")
  297. {
  298. continue;
  299. }
  300. ArrayList parm = new ArrayList();
  301. string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString();
  302. parm.Add(ordLnDlyPk);
  303. parm.Add(urow.Cells["PRESENT_STATUS"].Value.ToString());
  304. list.Add(parm);
  305. }
  306. }
  307. if (list.Count > 0)
  308. {
  309. ccp = new CoreClientParam();
  310. ccp.IfShowErrMsg = false;
  311. ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport";
  312. ccp.MethodName = "UpdatePresentStatus";
  313. ccp.ServerParams = new Object[] { list };
  314. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  315. }
  316. }
  317. MessageBox.Show("取消提报完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  318. doQuery();
  319. }
  320. /// <summary>
  321. /// 获取当前选中交货行数据库中的状态
  322. /// </summary>
  323. /// <param name="ordPk"></param>
  324. /// <param name="ordLnPk"></param>
  325. /// <param name="ordLnDlyPk"></param>
  326. /// <returns></returns>
  327. private string GetDeliverySts(string ordPk, string ordLnPk, string ordLnDlyPk)
  328. {
  329. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.GetDeliverySts", new Object[] { ordPk, ordLnPk, ordLnDlyPk }, this.ob);
  330. return dt.Rows[0]["DELIVERY_STATUS"].ToString();
  331. }
  332. /// <summary>
  333. /// 提报
  334. /// </summary>
  335. private void doReport()
  336. {
  337. ultraGridReport.UpdateData();
  338. ArrayList craft = new ArrayList();
  339. UltraGridRow[] dr = GridHelper.GetRowsWithKey(ultraGridReport, new string[] { "CHK" }, new string[] { "True" });
  340. if (dr.Length <= 0)
  341. {
  342. MessageBox.Show("请先选择交货行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  343. return;
  344. }
  345. DataTable timeDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getServerTime", null, this.ob);
  346. int mon = Convert.ToInt16(timeDt.Rows[0][0].ToString().Substring(5, 2));
  347. int year = Convert.ToDateTime(timeDt.Rows[0][0].ToString()).Year;
  348. ArrayList list = new ArrayList();
  349. UltraGridRow[] rows = ultraGridReport.Rows.AsQueryable().Where(a => a.Cells["CHK"].Value.ToString().ToUpper() == "TRUE").ToArray();
  350. foreach (UltraGridRow urow in rows)
  351. {
  352. string ordStr = "合同号:" + urow.Cells["ORDER_NO"].Value.ToString() + "/" + urow.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + urow.Cells["DELIVERY_NO"].Value.ToString();
  353. if (urow.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕")
  354. {
  355. MessageUtil.ShowWarning(ordStr + "已经提报完毕,不必重复提报!");
  356. urow.Activate();
  357. return;
  358. }
  359. //合同行被锁定的 交货行不能提报!
  360. DataTable lockDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getOrderLineLock", new object[] { urow.Cells["ORD_LN_PK"].Value.ToString() }, this.ob);
  361. if (lockDt != null && lockDt.Rows.Count > 0)
  362. {
  363. if (lockDt.Rows[0][0].ToString() == "1")
  364. {
  365. MessageUtil.ShowWarning(ordStr + "所在的合同行已被锁定,合同处于合同变更中,无法提报!");
  366. return;
  367. }
  368. }
  369. else
  370. {
  371. MessageUtil.ShowWarning(ordStr + "所在的合同行已不存在!");
  372. return;
  373. }
  374. //合同行提报锁定的!
  375. DataTable lockDt1 = ServerHelper.GetData("com.steering.pss.sale.order.DAL.SlmOrderLineLockDAL.getOrderLineLock", new object[] { urow.Cells["ORD_LN_PK"].Value.ToString() }, this.ob);
  376. if (lockDt1 != null && lockDt1.Rows.Count > 0)
  377. {
  378. if (lockDt1.Rows[0][0].ToString() == "1")
  379. {
  380. MessageUtil.ShowWarning(ordStr + "该合同行提报排产被锁定请重新审批合同价格!不允许提报排产! ");
  381. return;
  382. }
  383. }
  384. string ordPk = urow.Cells["ORD_PK"].Value.ToString();
  385. //现货合同不能提报
  386. string ordType = "";
  387. DataTable ordTypDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getOrderType", new object[] { ordPk }, this.ob);
  388. if (ordTypDt != null && ordTypDt.Rows.Count > 0)
  389. {
  390. ordType = ordTypDt.Rows[0][0].ToString();
  391. }
  392. if (ordType.Equals("120102") || ordType.Equals("120105"))
  393. {
  394. MessageUtil.ShowWarning(ordStr + "的合同类型是现货合同或者贸易合同,无法提报!");
  395. urow.Activate();
  396. return;
  397. }
  398. else if (ordType.Equals("120103")) //研发合同 所有生效方可提报
  399. {
  400. DataTable yfDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getAllEffect", new object[] { ordPk }, this.ob);
  401. if(yfDt!=null && yfDt.Rows.Count>0)
  402. {
  403. MessageUtil.ShowWarning(ordStr + "所在的合同下,存在尚未生效的合同行,只有整个合同都生效了,方可提报!");
  404. urow.Activate();
  405. return;
  406. }
  407. }
  408. if (urow.Cells["REVIEW_ASK_END"].Value == null || urow.Cells["REVIEW_ASK_END"].Value.ToString() == "")
  409. {
  410. MessageUtil.ShowWarning(ordStr + "轧制月份为空,不能提报,可以尝试退回交货期进行交货期分析\n或者进行交货行变更");
  411. return;
  412. }
  413. var DateSum = new List<string>();
  414. for (var date = Convert.ToDateTime(timeDt.Rows[0][0].ToString()); date < Convert.ToDateTime(timeDt.Rows[0][0].ToString()).AddMonths(12); date = date.AddMonths(1))
  415. {
  416. DateSum.Add(date.ToString("yyyy-MM"));
  417. }
  418. if (!DateSum.Contains(urow.Cells["REVIEW_ASK_END"].Value.ToString()))
  419. {
  420. MessageUtil.ShowWarning(ordStr + "的记录轧制月份不在(" + string.Join(",", DateSum) + ")月,不能提报!");
  421. urow.Activate();
  422. return;
  423. }
  424. //if (mon < 11)
  425. //{
  426. // if (Convert.ToInt16(urow.Cells["REVIEW_ASK_END"].Value.ToString().Substring(5, 2)) < mon
  427. // || Convert.ToInt16(urow.Cells["REVIEW_ASK_END"].Value.ToString().Substring(5, 2)) > mon + 2)
  428. // {
  429. // int mon1 = mon + 1;
  430. // int mon2 = mon + 2;
  431. // MessageUtil.ShowWarning(ordStr + "的记录轧制月份不在(" + mon + "," + mon1 + "," + mon2 + ")月,不能提报!");
  432. // urow.Activate();
  433. // return;
  434. // }
  435. //}
  436. //else
  437. //{
  438. // int cmon = Convert.ToDateTime(urow.Cells["REVIEW_ASK_END"].Value.ToString()).Month; //10 1月
  439. // int cyear = Convert.ToDateTime(urow.Cells["REVIEW_ASK_END"].Value.ToString()).Year; // 2015 2016年
  440. // DateTime time = new DateTime(cyear, cmon, 1);
  441. // DateTime time1 = new DateTime(year, mon, 1); //本月
  442. // DateTime time2 = new DateTime(); //下下月
  443. // int cmon1 = mon + 1;
  444. // int cmon2 = mon + 2;
  445. // string cmon1str = "";
  446. // string cmon2str = "";
  447. // if (cmon1 > 12)
  448. // {
  449. // cmon1str = (year + 1).ToString() + "年" + (cmon1 - 12).ToString();
  450. // }
  451. // else
  452. // {
  453. // cmon1str = (year).ToString() + "年" + (cmon1).ToString();
  454. // }
  455. // if (cmon2 > 12)
  456. // {
  457. // cmon2str = (year + 1).ToString() + "年" + (cmon2 - 12).ToString();
  458. // time2 = new DateTime(year + 1, cmon2 - 12, 1);
  459. // }
  460. // else
  461. // {
  462. // cmon2str = (year).ToString() + "年" + (cmon2).ToString();
  463. // time2 = new DateTime(year, cmon2, 1);
  464. // }
  465. // if (time < time1 || time > time2)
  466. // {
  467. // MessageUtil.ShowWarning(ordStr + "的记录轧制月份不在(" + year.ToString() + "年" + mon + "," + cmon1str + "," + cmon2str + ")月,不能提报!");
  468. // urow.Activate();
  469. // return;
  470. // }
  471. //}
  472. string ordLnDlyPk = urow.Cells["ORD_LN_DLY_PK"].Value.ToString();
  473. string ordLnPk = urow.Cells["ORD_LN_PK"].Value.ToString();
  474. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getPrdcrIsNull", new object[] { ordLnPk }, this.ob);
  475. if (dt != null && dt.Rows.Count > 0)
  476. {
  477. MessageUtil.ShowWarning(ordStr + "的合同没有维护监制要求!");
  478. urow.Activate();
  479. return;
  480. }
  481. DataTable dt1 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getPrdcrNotNull", new object[] { ordLnPk }, this.ob);
  482. if (dt1 != null && dt1.Rows.Count > 0)
  483. {
  484. MessageUtil.ShowWarning(ordStr + "的合同,维护的监制没有生效!");
  485. urow.Activate();
  486. return;
  487. }
  488. if (urow.Cells["ORDERFROMCODE"].Value.ToString() == "100102" && urow.Cells["PRESENT_STATUS"].Value.ToString() != "可提报")
  489. {
  490. MessageUtil.ShowWarning(ordStr + "的合同为不可提报状态,不能提报!");
  491. urow.Activate();
  492. return;
  493. }
  494. listLiku = new ArrayList();
  495. listLiku.Add(urow.Cells["PRODUCCODE"].Value.ToString());
  496. listLiku.Add(urow.Cells["STEELCODE"].Value.ToString());
  497. listLiku.Add(urow.Cells["SPEC_CODE"].Value.ToString());
  498. listLiku.Add(urow.Cells["MODEL_CODE"].Value.ToString());
  499. listLiku.Add(urow.Cells["STD_STYLE_DESC"].Value.ToString());
  500. listLiku.Add(urow.Cells["STD_STYLE_DESC"].Value.ToString());
  501. //判断是否已经选择是否利库
  502. bool isSelected = false;
  503. DataTable lkDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryLKFlag", new object[] { ordLnDlyPk }, this.ob);
  504. if (lkDt != null && lkDt.Rows.Count > 0)
  505. {
  506. string lkFlag = lkDt.Rows[0]["IS_LIKU"].ToString2();
  507. string lkCheck = lkDt.Rows[0]["NLK_CHECK"].ToString2();
  508. if (lkFlag == "1" && this.CustomInfo.Equals("120504"))
  509. {
  510. isSelected = true;
  511. if (lkCheck == "L")
  512. {
  513. MessageUtil.ShowWarning(ordStr + "请先审核放弃利库的原因!");
  514. return;
  515. }
  516. }
  517. }
  518. else
  519. {
  520. MessageUtil.ShowWarning(ordStr + "交货行已不存在,请刷新数据!");
  521. return;
  522. }
  523. //是否有成品库存
  524. bool hasMat = false;
  525. if (!isSelected && this.CustomInfo.Equals("120504"))
  526. {
  527. string saleOrg = urow.Cells["ORDERFROMCODE"].Value.ToString();
  528. //是否有利库的资源 然后判断交货行有没有利库
  529. DataTable matDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryIsExistsMat", new object[] { listLiku, saleOrg, urow.Cells["SUPPLY_UNIT_CODE"].Value.ToString() }, this.ob);
  530. if (matDt != null && matDt.Rows.Count > 0)
  531. {
  532. if (Convert.ToInt16(matDt.Rows[0][0].ToString3()) > 0)
  533. {
  534. hasMat = true;
  535. }
  536. }
  537. DataTable liKuDt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryIsLiKu", new object[] { ordLnDlyPk }, this.ob);
  538. if (liKuDt != null && liKuDt.Rows.Count > 0)
  539. {
  540. if (hasMat)
  541. {
  542. if (Convert.ToDecimal(liKuDt.Rows[0][0].ToString3()) < Convert.ToDecimal(urow.Cells["ORDERWEIGHT"].Value))
  543. {
  544. string str = ordStr + " 存在可利库的成品信息!\n请问是否利库?";
  545. if (MessageUtil.ShowYesNoAndQuestion(str) == DialogResult.No)
  546. {
  547. //更新交货行状态 同时保存原因
  548. dlgReviewMemo dlg = new dlgReviewMemo();
  549. dlg.ReviewSatus = "请输入有库存而不利库的原因";
  550. dlg.ReviewFlag = 4;
  551. dlg.ShowDialog();
  552. if (dlg.DialogResult == DialogResult.OK)
  553. {
  554. string reviewMemo = dlg.ReviewMemo;
  555. int count = ServerHelper.SetData("com.steering.pss.sale.order.CoreOrderReport.updateLKFlag", new object[] { ordLnDlyPk, reviewMemo }, this.ob);
  556. if (count > 0)
  557. {
  558. MessageUtil.ShowTips("请审核不利库的原因!");
  559. return;
  560. }
  561. }
  562. return;
  563. }
  564. else
  565. {
  566. MessageUtil.ShowTips("请点击利库按钮进行利库操作!");
  567. }
  568. return;
  569. }
  570. }
  571. }
  572. }
  573. //判断是否利库了 但利库数据尚未审核的
  574. if (IsNeedCheckLK(ordLnDlyPk) && this.CustomInfo.Equals("120504"))
  575. {
  576. MessageUtil.ShowWarning(ordStr + "存在没有审核的利库数据,请审核!");
  577. return;
  578. }
  579. DataRow row = null;
  580. DataRow[] dRow = SLM_ORDER_LINE_DELIVERY.Select("ORD_LN_DLY_PK = '" + ordLnDlyPk + "'");
  581. row = dRow[0];
  582. //for (int i = 0; i < SLM_ORDER_LINE_DELIVERY.Rows.Count; i++)
  583. //{
  584. // if (ordLnDlyPk.Equals(SLM_ORDER_LINE_DELIVERY.Rows[i]["ORD_LN_DLY_PK"].ToString()))
  585. // {
  586. // row = SLM_ORDER_LINE_DELIVERY.Rows[i];
  587. // break;
  588. // }
  589. //}
  590. ReportOrderLineDelivery reportModel = new ReportOrderLineDelivery();
  591. reportModel.OrdPk = row["ORD_PK"].ToString();
  592. reportModel.OrdLnPk = row["ORD_LN_PK"].ToString();
  593. // ORD_LN_DLY_PK VARCHAR2(40) NOT NULL,
  594. reportModel.OrdLnDlyPk = row["ORD_LN_DLY_PK"].ToString();
  595. // ORDER_NO VARCHAR2(20),
  596. reportModel.OrderNo = row["ORDER_NO"].ToString();
  597. // ORDER_SEQ VARCHAR2(3),
  598. reportModel.OrderSeq = row["ORDER_SEQ"].ToString();
  599. // DELIVERY_NO VARCHAR2(3),
  600. reportModel.DeliveryNo = row["DELIVERY_NO"].ToString();
  601. // PRD_CLS VARCHAR2(20),
  602. reportModel.PrdCls = row["PRD_CLS"].ToString();
  603. // PRODUCCODE VARCHAR2(20),
  604. reportModel.Produccode = row["PRODUCCODE"].ToString();
  605. // PRODUCNAME VARCHAR2(100),
  606. reportModel.Producname = row["PRODUCNAME"].ToString();
  607. // STD_CODE VARCHAR2(20),
  608. reportModel.StdCode = row["STD_CODE"].ToString();
  609. // STD_NAME VARCHAR2(200),
  610. reportModel.StdName = row["STD_NAME"].ToString();
  611. // STEELCODE VARCHAR2(10),
  612. reportModel.Steelcode = row["STEELCODE"].ToString();
  613. // STEELNAME VARCHAR2(100),
  614. reportModel.Steelname = row["STEELNAME"].ToString();
  615. // SPEC_CODE VARCHAR2(20),
  616. reportModel.SpecCode = row["SPEC_CODE"].ToString();
  617. string specCode = row["SPEC_CODE"].ToString();
  618. // SPEC_NAME VARCHAR2(100),
  619. reportModel.SpecName = row["SPEC_NAME"].ToString();
  620. // OUTDIAMETER外径
  621. reportModel.Outdiameter = row["OUTDIAMETER"].ToString();
  622. // WALLTHICK NUMBER(10,3),
  623. reportModel.Wallthick = row["WALLTHICK"].ToString();
  624. // LEN_NO VARCHAR2(20),
  625. reportModel.LenNo = row["LEN_NO"].ToString();
  626. // LENGTHMAX NUMBER(10,3),
  627. reportModel.Lengthmax = row["LENGTHMAX"].ToString();
  628. // LENGTHMIN NUMBER(10,3),
  629. reportModel.Lengthmin = row["LENGTHMIN"].ToString();
  630. // LENGTHDISC VARCHAR2(100),
  631. reportModel.Lengthdisc = row["LENGTHDISC"].ToString();
  632. // MODEL_CODE VARCHAR2(20),
  633. reportModel.ModelCode = row["MODEL_CODE"].ToString();
  634. // MODEL_DESC VARCHAR2(100),
  635. reportModel.ModelDesc = row["MODEL_DESC"].ToString();
  636. // ORDER_UNIT VARCHAR2(20),
  637. reportModel.OrderUnit = row["ORDER_UNIT"].ToString();
  638. string ordUnit = row["ORDER_UNIT"].ToString();
  639. string elimNum = ""; //脱单量
  640. string elimWgt = "";
  641. string elimLen = "";
  642. string chargeNum = ""; //利库量
  643. string chargeWgt = "";
  644. string chargeLen = "";
  645. decimal ordQty = Convert.ToDecimal(row["DELVRY_QTY"].ToString()); //交货行的交货量
  646. // reportModel.OrderQty = row["DELVRY_QTY"].ToString(); 以前的提报量
  647. //reportModel.Orderweight = row["ORDERWEIGHT"].ToString(); 估算重量
  648. //reportModel.Totlength = row["TOTLENGTH"].ToString(); 保总长
  649. decimal repQty = 0; //提报量 订单量-利库量+脱单量
  650. decimal estWgt = 0; //估算重量
  651. decimal sureLen = 0; //保总长
  652. if ("120504".Equals(this.CustomInfo.ToString()))
  653. {
  654. //新增 利库量 脱单量的处理逻辑
  655. DataTable dt2 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getProcessOrderInfo", new object[] { row["ORD_LN_DLY_PK"].ToString() }, ob);
  656. if (dt2 != null && dt2.Rows.Count > 0)
  657. {
  658. elimNum = dt2.Rows[0]["ELIM_NUM"].ToString();
  659. elimWgt = dt2.Rows[0]["ELIM_WGT"].ToString();
  660. elimLen = dt2.Rows[0]["ELIM_LEN"].ToString();
  661. chargeNum = dt2.Rows[0]["CHARGE_NUM"].ToString();
  662. chargeWgt = dt2.Rows[0]["CHARGE_WGT"].ToString();
  663. chargeLen = dt2.Rows[0]["CHARGE_LEN"].ToString();
  664. }
  665. }
  666. if (ordUnit == "吨")
  667. {
  668. repQty = ordQty - Convert.ToDecimal(chargeWgt == "" ? "0" : chargeWgt) + Convert.ToDecimal(elimWgt == "" ? "0" : elimWgt);
  669. estWgt = repQty;
  670. sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3());
  671. }
  672. else if (ordUnit == "支")
  673. {
  674. repQty = ordQty - Convert.ToDecimal(chargeNum == "" ? "0" : chargeNum) + Convert.ToDecimal(elimNum == "" ? "0" : elimNum);
  675. estWgt = repQty;
  676. sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3());
  677. }
  678. else if (ordUnit == "米")
  679. {
  680. repQty = ordQty - Convert.ToDecimal(chargeLen == "" ? "0" : chargeLen) + Convert.ToDecimal(elimLen == "" ? "0" : elimLen);
  681. estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob);
  682. sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3());
  683. }
  684. else if (ordUnit == "毫米")
  685. {
  686. repQty = ordQty - Convert.ToDecimal(chargeLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(chargeLen) * 1000)) + Convert.ToDecimal(elimLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(elimLen) * 1000));
  687. estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob);
  688. sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3());
  689. }
  690. else if (ordUnit == "英尺")
  691. {
  692. repQty = ordQty - Convert.ToDecimal(chargeLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(chargeLen) / Convert.ToDecimal(0.3048))) + Convert.ToDecimal(elimLen == "" ? "0" : Convert.ToString(Convert.ToDecimal(elimLen) / Convert.ToDecimal(0.3048)));
  693. estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob);
  694. sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3());
  695. }
  696. else if (ordUnit == "英镑")
  697. {
  698. repQty = ordQty - Convert.ToDecimal(chargeWgt == "" ? "0" : Convert.ToString(Convert.ToDecimal(chargeWgt) / Convert.ToDecimal(0.45359237))) + Convert.ToDecimal(elimWgt == "" ? "0" : Convert.ToString(Convert.ToDecimal(elimWgt) / Convert.ToDecimal(0.45359237)));
  699. estWgt = OrderFunction.GetPrdctWgtNew(repQty, ordUnit, specCode, ob);
  700. sureLen = repQty / Convert.ToDecimal(row["DELVRY_QTY"].ToString()) * Convert.ToDecimal(row["TOTLENGTH"].ToString3());
  701. }
  702. if (repQty <= 0)
  703. continue;
  704. reportModel.DelvryQty = ordQty.ToString();
  705. reportModel.ChargeNum = chargeNum;
  706. reportModel.ChargeWgt = chargeWgt;
  707. reportModel.ChargeLen = chargeLen;
  708. reportModel.ElimNum = elimNum;
  709. reportModel.ElimWgt = elimWgt;
  710. reportModel.ElimLen = elimLen;
  711. // ORDER_QTY NUMBER(8,3),
  712. reportModel.OrderQty = Convert.ToString(repQty);
  713. // ORDERWEIGHT NUMBER(16,3),重量估算
  714. reportModel.Orderweight = Convert.ToString(estWgt);
  715. // ORDERNUM NUMBER(10),合同支数,无。
  716. reportModel.Ordernum = row["ORDERNUM"].ToString();
  717. // TOTLENGTH NUMBER(16,3),OrdEnsuTotlLen,总保长
  718. reportModel.Totlength = Convert.ToString(sureLen);
  719. // DELVRY_RANGE_TPE VARCHAR2(20),
  720. reportModel.DelvryRangeTpe = row["DELVRY_RANGE_TPE"].ToString();
  721. // DELVRY_RANGE_MIN NUMBER(2),
  722. reportModel.DelvryRangeMin = row["DELVRY_RANGE_MIN"].ToString();
  723. // DELVRY_RANGE_MAX NUMBER(2),
  724. reportModel.DelvryRangeMax = row["DELVRY_RANGE_MAX"].ToString();
  725. // BUYER_ID VARCHAR2(20), 客户编码
  726. reportModel.BuyerId = row["BUYER_ID"].ToString();
  727. // BUYER_NAME VARCHAR2(100),客户名称
  728. reportModel.BuyerName = row["BUYER_NAME"].ToString();
  729. //CUST_ALPHA_NO VARCHAR2(20),客户AlphaNo
  730. reportModel.CustAlphaNo = row["CUST_ALPHA_NO"].ToString();
  731. // ORDER_SPECIAL_DESC VARCHAR2(200),产品特殊要求描述 \r\n 特殊字符 导致JSON转化异常。
  732. string specialDesc = row["ORDER_SPECIAL_DESC"].ToString().Trim();
  733. //specialDesc = specialDesc.Replace("\r", "");
  734. //specialDesc = specialDesc.Replace("\n", "");
  735. reportModel.OrderSpecialDesc = specialDesc.Trim();
  736. // ADD_ASK_NO VARCHAR2(16),
  737. reportModel.AddAskNo = row["ADD_ASK_NO"].ToString();
  738. // ORDER_ADD_DESC VARCHAR2(200), \r\n 特殊字符 导致JSON转化异常。
  739. string addDesc = row["ORDER_ADD_DESC"].ToString().Trim();
  740. //addDesc = addDesc.Replace("\r", "");
  741. // addDesc = addDesc.Replace("\n", "");
  742. reportModel.OrderAddDesc = addDesc.Trim();
  743. // ORDERFROM VARCHAR2(20),合同来源,无此字段--销售组织。
  744. reportModel.Orderfrom = row["ORDERFROMCODE"].ToString();
  745. // FINAL_USER VARCHAR2(20),
  746. reportModel.FinalUser = row["FINAL_USER"].ToString();
  747. // FINAL_USER_DESC VARCHAR2(100),
  748. reportModel.FinalUserDesc = row["FINAL_USER_DESC"].ToString();
  749. // UPPERLIMIT NUMBER(10,3),上限
  750. reportModel.Upperlimit = row["UPPERLIMIT"].ToString();
  751. // LOWERLIMT NUMBER(10,3),下限,
  752. reportModel.Lowerlimt = row["LOWERLIMT"].ToString();
  753. // DELVRY_BDATE DATE,
  754. reportModel.DelvryBdate = row["DELVRY_BDATE"].ToString() != "" ? Convert.ToDateTime(row["DELVRY_BDATE"].ToString()).ToString("yyyy-MM-dd") : row["DELVRY_BDATE"].ToString();
  755. // DELVRY_EDATE DATE,
  756. reportModel.DelvryEdate = row["DELVRY_EDATE"].ToString() != "" ? Convert.ToDateTime(row["DELVRY_EDATE"].ToString()).ToString("yyyy-MM-dd") : row["DELVRY_EDATE"].ToString();
  757. // LATEST_PROD_DATE最迟生产日期,无此字段,上面是最迟交货日期
  758. reportModel.LatestProdDate = row["LATEST_PROD_DATE"].ToString() != "" ? Convert.ToDateTime(row["LATEST_PROD_DATE"].ToString()).ToString("yyyy-MM-dd") : row["LATEST_PROD_DATE"].ToString();
  759. // ORDERCONTACT VARCHAR2(20),合同联系人,无此字段。
  760. reportModel.Ordercontact = row["ORDERCONTACT"].ToString();
  761. // MONITORDEMAND VARCHAR2(200),监制要求
  762. reportModel.Monitordemand = row["MONITORDEMAND"].ToString();
  763. // SPECSTANDARD VARCHAR2(20),公差标准
  764. //reportModel.SPECSTANDARD = row["ORD_LN_PK"].ToString();
  765. // PACKTYPE VARCHAR2(20),包装要求
  766. //reportModel.OrdLnPk = row["ORD_LN_PK"].ToString();
  767. // PSC
  768. reportModel.Psc = row["PSC"].ToString();
  769. // PRIORITY VARCHAR2(20),合同优先级
  770. //reportModel.OrdLnPk = row["ORD_LN_PK"].ToString();
  771. // msc
  772. reportModel.Msc = row["MSC"].ToString();
  773. //
  774. reportModel.CreateName = this.UserInfo.GetUserName();
  775. reportModel.JzFileIfAll = string.IsNullOrEmpty(row["PRDCR_NO"].ToString()) ? "0" : "1"; //row["JZ_FILE_IF_ALL"].ToString();
  776. //
  777. reportModel.PrdcrNo = row["PRDCR_NO"].ToString();
  778. reportModel.MaterialNo = row["MATERIAL_NO"].ToString();
  779. reportModel.MaterialDesc = row["MATERIAL_DESC"].ToString();
  780. reportModel.ShrtLenRato = row["SHRT_LEN_RATO"].ToString();
  781. reportModel.Shortest = row["SHORTEST"].ToString();
  782. reportModel.LongLenRato = row["LONG_LEN_RATO"].ToString();
  783. reportModel.Longest = row["LONGEST"].ToString();
  784. reportModel.SiglLen = row["SIGL_LEN"].ToString();
  785. reportModel.LenUnit = row["LEN_UNIT"].ToString();
  786. reportModel.PrdcrDesc = row["PRDCR_DESC"].ToString();
  787. reportModel.OutsBilletFl = row["OUTS_BILLET_FL_CODE"].ToString();
  788. reportModel.UseCode = row["USE_CODE"].ToString();
  789. reportModel.UseDesc = row["USE_DESC"].ToString();
  790. reportModel.EndLenSpecStd = row["ENDLEN_SPECSTD"].ToString();
  791. reportModel.AvgLenMin = row["AVG_LEN_MIN"].ToString();
  792. reportModel.ShrtStove = row["SHRT_STOVE"].ToString();
  793. reportModel.DifrncLenMax = row["DIFRNC_LEN_MAX"].ToString();
  794. reportModel.StdStyleDesc = row["STD_STYLE_DESC"].ToString();
  795. reportModel.OutsStlPipeFl = row["OUTS_STL_PIPE_FL_CODE"].ToString();
  796. reportModel.RollMonth = row["REVIEW_ASK_END"].ToString();
  797. reportModel.SupplyUnitCode = row["SUPPLY_UNIT_CODE"].ToString();
  798. reportModel.SupplyUnit = row["SUPPLY_UNIT"].ToString();
  799. reportModel.DelvryAddr = row["DELVRY_ADDR"].ToString();
  800. if (row["ORDER_TYP"].ToString().Equals("120108"))
  801. reportModel.TypeFlag = "1";
  802. else if (row["ORDER_TYP"].ToString().Equals("120109"))
  803. reportModel.TypeFlag = "2";
  804. else
  805. reportModel.TypeFlag = "0";
  806. list.Add(JSONFormat.Format(reportModel));
  807. if (!craft.Contains(ordLnPk))
  808. {
  809. craft.Add(ordLnPk);
  810. }
  811. }
  812. if (list.Count <= 0)
  813. {
  814. MessageUtil.ShowWarning("没有符合提报要求的数据!");
  815. return;
  816. }
  817. if (MessageUtil.ShowYesNoAndQuestion("是否确认提报所选记录?") == DialogResult.No) return;
  818. //执行数据库相关操作
  819. CoreClientParam ccp = new CoreClientParam();
  820. ccp.IfShowErrMsg = false;
  821. ccp.ServerName = "com.steering.pss.sale.order.CoreOrderReport";
  822. ccp.MethodName = "doReport";
  823. ccp.ServerParams = new object[] { list };
  824. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  825. if (ccp == null)
  826. return;
  827. else
  828. {
  829. if (ccp.ReturnCode == -1)
  830. {
  831. if (ccp.ReturnObject != null)
  832. {
  833. MessageUtil.ShowWarning(ccp.ReturnObject.ToString());
  834. return;
  835. }
  836. else
  837. {
  838. MessageUtil.ShowWarning(ccp.ReturnInfo);
  839. return;
  840. }
  841. }
  842. else
  843. {
  844. MessageBox.Show("提报完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  845. //工艺评审 2015-12-09新增
  846. frmCraftReviewTechnology crt = new frmCraftReviewTechnology();
  847. foreach (string pk in craft)
  848. {
  849. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.getCraftState",
  850. new string[] { pk }, ob);
  851. if (dt.Rows.Count > 0 && dt.Rows[0]["VALIDFLAG"].ToString() == "1" && dt.Rows[0]["CRAFT_SOURCE"].ToString() != "人工上传")
  852. {
  853. continue;
  854. }
  855. crt.CheckQuality(pk, true, this.ob);
  856. crt.Quality(pk, true, this.ob);
  857. }
  858. doQuery();
  859. }
  860. }
  861. }
  862. /// <summary>
  863. /// 查询
  864. /// </summary>
  865. private void doQuery()
  866. {
  867. string orderNo = "";
  868. string orderSts = cmbSts.Value.ToString().Trim();
  869. string orderStart = "";
  870. string orderEnd = "";
  871. string reportStartTime = "";
  872. string reportEndTime = "";
  873. if (uchkOrderNo.Checked)
  874. orderNo = utxtOrderNo.Text.Trim().ToLower();
  875. if (uchkDate.Checked)
  876. {
  877. orderStart = udtStart.DateTime.ToString("yyyy-MM-dd") + " 00:00:01";
  878. orderEnd = udtEnd.DateTime.ToString("yyyy-MM-dd") + " 23:59:59";
  879. }
  880. else
  881. {
  882. orderStart = "1000-01-01 00:00:01";
  883. orderEnd = "9999-12-31 23:59:59";
  884. }
  885. if (rchkDate.Checked)
  886. {
  887. reportStartTime = rdtStart.DateTime.ToString("yyyy-MM-dd") + " 00:00:01";
  888. reportEndTime = rdtEnd.DateTime.ToString("yyyy-MM-dd") + " 23:59:59";
  889. }
  890. string[] arr = this.ValidDataPurviewIds;
  891. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.doQuery", new Object[] { orderNo, orderSts, orderStart, orderEnd, arr, CustomInfo, reportStartTime, reportEndTime }, this.ob);
  892. string strSelect = "CREATE_TIME >= '" + orderStart + "' AND CREATE_TIME <= '" + orderEnd + "'";
  893. DataRow[] arrayDR = dt.Select(strSelect, "ORDER_NO,ORDER_SEQ,DELIVERY_NO ASC");
  894. DataTable dtNew = dt.Clone();
  895. ArrayList list = new ArrayList();
  896. for (int i = 0; i < arrayDR.Length; i++)
  897. {
  898. dtNew.ImportRow(arrayDR[i]);
  899. list.Add(arrayDR[i]["PRDCR_NO_GM"]);
  900. }
  901. GridHelper.CopyDataToDatatable(ref dtNew, ref this.SLM_ORDER_LINE_DELIVERY, true);
  902. foreach (UltraGridRow row in ultraGridReport.Rows)
  903. {
  904. if (list.Contains(row.Cells["PRDCR_NO"].Value.ToString()))
  905. {
  906. row.Appearance.BackColor = Color.Yellow;
  907. }
  908. }
  909. }
  910. /// <summary>
  911. /// 提报状态数据源绑定
  912. /// </summary>
  913. private void bindCmbSts()
  914. {
  915. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.GetSts", null, this.ob);
  916. //查询区域适用单位绑定,提供空值。
  917. ComboBoxHelper.FillUlcmItemsAddEmpty(cmbSts, dt);
  918. }
  919. private void frmOrderReport_Load(object sender, EventArgs e)
  920. {
  921. //提报状态数据源绑定。
  922. bindCmbSts();
  923. cmbSts.Value = "12020301";
  924. cmbSts.ReadOnly = false;
  925. ClsBaseInfo.SetComboItemHeight(cmbSts);
  926. udtStart.Value = DateTime.Now.AddDays(-31).ToShortDateString();
  927. udtEnd.Value = DateTime.Now.ToShortDateString();
  928. //加载库存信息数据
  929. InitMat();
  930. }
  931. /// <summary>
  932. /// 初始化库存信息
  933. /// </summary>
  934. private void InitMat()
  935. {
  936. EntityHelper.ShowGridCaption<MatZcMEntity>(gdMat.DisplayLayout.Bands[0]);
  937. UltraComboEditor uce = new UltraComboEditor();
  938. uce.Items.Add("1", "封锁");
  939. uce.Items.Add("0", "未封锁");
  940. gdMat.DisplayLayout.Bands[0].Columns["lockFlag"].EditorComponent = uce;
  941. gdMat.DisplayLayout.Bands[0].Columns["mngLockFlag"].EditorComponent = uce;
  942. }
  943. private void uchkOrderNo_CheckedChanged(object sender, EventArgs e)
  944. {
  945. if (uchkOrderNo.Checked)
  946. {
  947. utxtOrderNo.ReadOnly = false;
  948. string orderNo = utxtOrderNo.Text.Trim();
  949. if (orderNo != "")
  950. {
  951. uchkDate.Enabled = true;
  952. uchkDate.Checked = false;
  953. }
  954. else
  955. {
  956. uchkDate.Enabled = false;
  957. uchkDate.Checked = true;
  958. }
  959. }
  960. else
  961. {
  962. utxtOrderNo.ReadOnly = true;
  963. uchkDate.Enabled = false;
  964. uchkDate.Checked = true;
  965. }
  966. }
  967. private void uchkSts_CheckedChanged(object sender, EventArgs e)
  968. {
  969. if (uchkSts.Checked)
  970. {
  971. cmbSts.ReadOnly = false;
  972. }
  973. else
  974. {
  975. cmbSts.SelectedIndex = 0;
  976. cmbSts.ReadOnly = true;
  977. }
  978. }
  979. private void uchkDate_CheckedChanged(object sender, EventArgs e)
  980. {
  981. if (uchkDate.Checked)
  982. {
  983. udtStart.ReadOnly = false;
  984. udtEnd.ReadOnly = false;
  985. }
  986. else
  987. {
  988. udtStart.ReadOnly = true;
  989. udtEnd.ReadOnly = true;
  990. }
  991. }
  992. private void ultraGridReport_AfterRowActivate(object sender, EventArgs e)
  993. {
  994. ultraGridReport.UpdateData();
  995. UltraGridRow ugr = ultraGridReport.ActiveRow;
  996. if (ugr == null)
  997. return;
  998. for (int i = 0; i < ugr.Cells.Count; i++)
  999. {
  1000. if (!ugr.Cells[i].Column.Key.Equals("CHK"))
  1001. {
  1002. ugr.Cells[i].Activation = Activation.ActivateOnly;
  1003. }
  1004. else
  1005. ugr.Cells[i].Activation = Activation.AllowEdit;
  1006. }
  1007. // 查询库存信息 ORDERFROMCODE 考虑到效率问题 放在CellButton事件中查询
  1008. //string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString();
  1009. listLiku = new ArrayList();
  1010. listLiku.Add(ugr.Cells["PRODUCCODE"].Value.ToString());
  1011. listLiku.Add(ugr.Cells["STEELCODE"].Value.ToString());
  1012. listLiku.Add(ugr.Cells["SPEC_CODE"].Value.ToString());
  1013. listLiku.Add(ugr.Cells["MODEL_CODE"].Value.ToString());
  1014. listLiku.Add(ugr.Cells["STD_STYLE_DESC"].Value.ToString());
  1015. listLiku.Add(ugr.Cells["STD_STYLE_DESC"].Value.ToString());
  1016. //QueryMatInfo(list, saleOrg);
  1017. matZcMEntityBindingSource.Clear();
  1018. this.labTips.Text = "";
  1019. }
  1020. private void QueryMatInfo(ArrayList parm, string saleOrg, string suppUnit)
  1021. {
  1022. List<MatZcMEntity> listSource = EntityHelper.GetData<MatZcMEntity>(
  1023. "com.steering.pss.sale.order.CoreOrderReport.queryMatInfo", new object[] { parm, saleOrg, suppUnit }, this.ob);
  1024. matZcMEntityBindingSource.DataSource = listSource;
  1025. }
  1026. private void utxtOrderNo_KeyPress(object sender, KeyPressEventArgs e)
  1027. {
  1028. if (e.KeyChar == 13)
  1029. doQuery();
  1030. }
  1031. private void ultraGridReport_AfterSelectChange(object sender, AfterSelectChangeEventArgs e)
  1032. {
  1033. foreach (UltraGridRow uRow in ultraGridReport.Selected.Rows)
  1034. {
  1035. if (uRow.GetType() != typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow))
  1036. {
  1037. uRow.Cells["CHK"].Value = true;
  1038. }
  1039. }
  1040. }
  1041. private void btnReset_Click(object sender, EventArgs e)
  1042. {
  1043. ultraGridReport.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters();
  1044. }
  1045. private void utxtOrderNo_ValueChanged(object sender, EventArgs e)
  1046. {
  1047. string orderNo = utxtOrderNo.Text.Trim();
  1048. if (orderNo != "")
  1049. {
  1050. uchkDate.Enabled = true;
  1051. uchkDate.Checked = false;
  1052. }
  1053. else
  1054. {
  1055. uchkDate.Enabled = false;
  1056. uchkDate.Checked = true;
  1057. }
  1058. }
  1059. private void ultraGridReport_InitializeRow(object sender, InitializeRowEventArgs e)
  1060. {
  1061. if (e.Row.Cells["ORDER_TYP"].Value.ToString2() == "120103")
  1062. {
  1063. e.Row.Cells["REVIEW_ASK_END"].Value = DateTime.Now.ToString("yyyy-MM");
  1064. }
  1065. }
  1066. /// <summary>
  1067. /// cellButton
  1068. /// </summary>
  1069. /// <param name="sender"></param>
  1070. /// <param name="e"></param>
  1071. private void ultraGridReport_ClickCellButton(object sender, CellEventArgs e)
  1072. {
  1073. if (e.Cell.Column.Key.Equals("ORDER_SEQ"))
  1074. {
  1075. ultraGridReport.UpdateData();
  1076. UltraGridRow ugr = ultraGridReport.ActiveRow;
  1077. if (ugr == null)
  1078. return;
  1079. string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString();
  1080. string suppUnit = ugr.Cells["SUPPLY_UNIT_CODE"].Value.ToString();
  1081. QueryMatInfo(listLiku, saleOrg, suppUnit);
  1082. string str = "合同号:" + ugr.Cells["ORDER_NO"].Value.ToString() + "/" + ugr.Cells["ORDER_SEQ"].Value.ToString()
  1083. + " 交货行号:" + ugr.Cells["DELIVERY_NO"].Value.ToString() + " 的可利库的库存信息。";
  1084. this.labTips.Text = str;
  1085. this.labTips.AutoSize = true;
  1086. }
  1087. }
  1088. private void ReportLiKu()
  1089. {
  1090. ultraGridReport.UpdateData();
  1091. UltraGridRow ugr = ultraGridReport.ActiveRow;
  1092. if (ugr == null)
  1093. {
  1094. MessageUtil.ShowWarning("请选择您要利库的交货行!");
  1095. return;
  1096. }
  1097. if (ugr.Cells["ORDER_LN_STATUS_NM"].Value.ToString() == "提报完毕")
  1098. {
  1099. MessageUtil.ShowWarning("您选择的记录已经提报完毕,此功能只能对“生效状态”的交货行利库!");
  1100. ugr.Activate();
  1101. return;
  1102. }
  1103. string ordStr = "合同号:" + ugr.Cells["ORDER_NO"].Value.ToString() + "/" + ugr.Cells["ORDER_SEQ"].Value.ToString() + " 交货行号:" + ugr.Cells["DELIVERY_NO"].Value.ToString();
  1104. //合同行提报锁定的!
  1105. DataTable lockDt1 = ServerHelper.GetData("com.steering.pss.sale.order.DAL.SlmOrderLineLockDAL.getOrderLineLock", new object[] { ugr.Cells["ORD_LN_PK"].Value.ToString() }, this.ob);
  1106. if (lockDt1 != null && lockDt1.Rows.Count > 0)
  1107. {
  1108. if (lockDt1.Rows[0][0].ToString() == "1")
  1109. {
  1110. MessageUtil.ShowWarning(ordStr + "该合同行提报排产被锁定请重新审批合同价格!不允许利库! ");
  1111. return;
  1112. }
  1113. }
  1114. string ordLnDlyPk = ugr.Cells["ORD_LN_DLY_PK"].Value.ToString();
  1115. string saleOrg = ugr.Cells["ORDERFROMCODE"].Value.ToString();
  1116. FrmReportLiKu frl = new FrmReportLiKu(this.ob, "1",this.CustomInfo);
  1117. frl.DataArr = this.ValidDataPurviewIds;
  1118. frl.ListParm = listLiku;
  1119. frl.OrdSaleOrg = saleOrg;
  1120. frl.OrdLnDlyPk = ordLnDlyPk;
  1121. frl.FormClosingQueryHandle += frl_FormClosingQueryHandle;
  1122. frl.WindowState = FormWindowState.Maximized;
  1123. frl.StartPosition = FormStartPosition.CenterScreen;
  1124. frl.ShowDialog();
  1125. }
  1126. void frl_FormClosingQueryHandle(string ordLnDlyPk)
  1127. {
  1128. this.doQuery();
  1129. foreach (UltraGridRow row in ultraGridReport.Rows)
  1130. {
  1131. if (row.Cells["ORD_LN_DLY_PK"].Value.ToString() == ordLnDlyPk)
  1132. {
  1133. row.Activate();
  1134. break;
  1135. }
  1136. }
  1137. }
  1138. /// <summary>
  1139. /// 判断交货行是否具有需要审核的利库数据
  1140. /// </summary>
  1141. /// <param name="ordLnDlyPk"></param>
  1142. /// <returns>True 是 False 否 </returns>
  1143. private bool IsNeedCheckLK(string ordLnDlyPk)
  1144. {
  1145. DataTable dt = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryDlyLkTd", new object[] { ordLnDlyPk }, this.ob);
  1146. if (dt != null && dt.Rows.Count > 0)
  1147. {
  1148. string lkId = dt.Rows[0]["LK_ID"].ToString2();
  1149. string tdId = dt.Rows[0]["TD_ID"].ToString2();
  1150. string[] lk = lkId.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
  1151. string[] td = tdId.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
  1152. if (lk != null && lk.Length > 0)
  1153. {
  1154. List<string> lkList = new List<string>(lk);
  1155. List<string> tdList = null;
  1156. if (td != null && td.Length > 0)
  1157. {
  1158. tdList = new List<string>(td);
  1159. }
  1160. else
  1161. {
  1162. tdList = new List<string> { "1" }; //下面的差集函数不能跟NULL做差集,所以随便给一个值
  1163. }
  1164. var interList = lkList.Except(tdList).ToList();
  1165. for (int i = 0; i < interList.Count; i++)
  1166. {
  1167. DataTable dt1 = ServerHelper.GetData("com.steering.pss.sale.order.CoreOrderReport.queryMatCheck", new object[] { ordLnDlyPk, interList[i] }, this.ob);
  1168. if (dt1 != null && dt1.Rows.Count > 0)
  1169. {
  1170. if (dt1.Rows[0][0].ToString2().Contains("1"))
  1171. return true;
  1172. }
  1173. }
  1174. }
  1175. }
  1176. return false;
  1177. }
  1178. /* public void OpenOtherAssemblyForm(Form vParentFrm, string vKey, string vAssemblyName,
  1179. string vClassName, string vCaption, OpeBase _ob)
  1180. {
  1181. //检查窗体是否已经打开
  1182. foreach (Form mdiChild in vParentFrm.MdiChildren)
  1183. {
  1184. if ((mdiChild as FrmBase).Key == vKey)
  1185. {
  1186. mdiChild.Activate();
  1187. return;
  1188. }
  1189. }
  1190. FrmBase form = null;
  1191. //实例化窗体并打开
  1192. try
  1193. {
  1194. Assembly baseFormAssembly = Assembly.Load(vAssemblyName);
  1195. Type type = baseFormAssembly.GetType(vClassName);
  1196. System.Diagnostics.Debug.Assert(type.IsSubclassOf(typeof(FrmBase)));
  1197. form = Activator.CreateInstance(type, true) as FrmBase;
  1198. PropertyInfo info = type.GetProperty("MyValidDataPurviewIds");
  1199. info.SetValue(form, this.ValidDataPurviewIds, null);
  1200. form.MdiParent = vParentFrm;
  1201. form.Text = vCaption;
  1202. form.Key = vKey;
  1203. form.ob = _ob;
  1204. form.CustomInfo = "";
  1205. form.Show();
  1206. }
  1207. catch (Exception ex)
  1208. {
  1209. Console.WriteLine(ex.Message);
  1210. form.Dispose();
  1211. }
  1212. } */
  1213. }
  1214. }