frmCkInBillNew.cs 109 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397
  1. using System;
  2. using System.Collections.Generic;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Windows.Forms;
  11. using CoreFS.CA06;
  12. using Pur.Entity.configureEntity;
  13. using Core.Mes.Client.Comm.Control;
  14. using System.Collections;
  15. using com.hnshituo.pur.vo;
  16. using Infragistics.Win.UltraWinEditors;
  17. using Infragistics.Win;
  18. using Pur.Entity.ck;
  19. using Core.Mes.Client.Comm.Tool;
  20. using Pur.configure;
  21. using Pur.Pop_upWindow;
  22. using Infragistics.Win.UltraWinGrid;
  23. using Pur.require_plan;
  24. using Core.Mes.Client.Comm.Server;
  25. using Pur.Entity;
  26. using Pur.PublicTools;
  27. using com.hnshituo.ck;
  28. namespace Pur.ck
  29. {
  30. public partial class frmCkInBillNew : FrmPmsBase
  31. {
  32. Hashtable ht = new Hashtable();//存放库区对应的库位
  33. String strCoustomInfo = "";//若有值,则需单独配置物料接收界面
  34. public frmCkInBillNew()
  35. {
  36. InitializeComponent();
  37. }
  38. private void frmCkInBillNew_Shown(object sender, System.EventArgs e)
  39. {
  40. this.ToolBarItemEnable(this, "conFirmation", true);
  41. this.ToolBarItemEnable(this, "confirmation1", true);
  42. this.ToolBarItemEnable(this, "QuitCkRecBill", false);
  43. }
  44. private void frmCkInBillNew_Load(object sender, EventArgs e)
  45. {
  46. strCoustomInfo = this.CustomInfo == null ? "" : this.CustomInfo.ToString().Trim();
  47. if (String.IsNullOrEmpty(strCoustomInfo))
  48. {
  49. QcreateTime_BeginNoJL.Value = DateTime.Now.AddMonths(-1);
  50. QcreateTime_BeginJL.Value = DateTime.Now.AddMonths(-1);
  51. QcreateTime_BeginSJ.Value = DateTime.Now.AddMonths(-1);
  52. }
  53. else
  54. {
  55. QcreateTime_BeginNoJL.Value = DateTime.Now.AddDays(-3);
  56. QcreateTime_BeginJL.Value = DateTime.Now.AddDays(-3);
  57. QcreateTime_BeginSJ.Value = DateTime.Now.AddDays(-3);
  58. }
  59. QcreateTime_EndNoJL.Value = DateTime.Now.AddDays(2);
  60. QcreateTime_BeginNoJL.Enabled = true;
  61. QcreateTime_EndNoJL.Enabled = true;
  62. ck_createTimeNoJL.Checked = true;
  63. QcreateTime_EndJL.Value = DateTime.Now.AddDays(2);
  64. QcreateTime_BeginJL.Enabled = true;
  65. QcreateTime_EndJL.Enabled = true;
  66. ck_createtimeJL.Checked = true;
  67. QcreateTime_EndSJ.Value = DateTime.Now.AddDays(2);
  68. QcreateTime_BeginSJ.Enabled = true;
  69. QcreateTime_EndSJ.Enabled = true;
  70. ck_createtimeSJ.Checked = true;
  71. txt_shuttTimeStart_JL.Value = DateTime.Now.AddDays(-3);
  72. txt_shuttTimeEnd_JL.Value = DateTime.Now.AddDays(1);
  73. txt_shuttTimeStart_JL.Enabled = false;
  74. txt_shuttTimeEnd_JL.Enabled = false;
  75. ck_shutt_JL.Checked = false;
  76. PublicPur.InitCellEdit(new UltraGrid[] { GridSubDNoJL }, new string[] { "Check", "weightqTY", "INNUM", "INVPOS", "numException", "invPosException", "remarkException", "REC_ID", "CheckStatu", "KZQTY", "PACKAGEUNIT", "PACKAGEQTY", "ITEMUOMCONEFFICIENT", "JLQTY" });
  77. PublicPur.InitCellEdit(new UltraGrid[] { GridSubDJL }, new string[] { "Check", "INVPOS", "numException","invPosException", "remarkException","CheckStatu","CheckResult", "KZQTY", "PACKAGEUNIT", "PACKAGEQTY", "ITEMUOMCONEFFICIENT", "JLQTY" });
  78. QstatusJL.SelectedIndex = 0;
  79. QstatusNoJL.SelectedIndex = 0;
  80. QstatusSJ.SelectedIndex = 0;
  81. GridSubDJL.Cursor = Cursors.Default;
  82. GridSubDNoJL.Cursor = Cursors.Default;
  83. GridSubDSJ.Cursor = Cursors.Default;
  84. }
  85. #region toolbar工具栏
  86. public override void ToolBar_Click(object sender, string ToolbarKey)
  87. {
  88. switch (ToolbarKey)
  89. {
  90. case "Query":
  91. Get_PUR_EXC_DELIVERY_M("");
  92. break;
  93. case "conFirmation"://待检入库
  94. instock("1");
  95. break;
  96. case "confirmation1"://正式入库
  97. instock("2");
  98. break;
  99. case "QuitCkRecBill"://撤销入库
  100. QuitCkRecBill();
  101. break;
  102. case "doExcel"://导出excel
  103. doExcel();
  104. break;
  105. case "ESC":
  106. this.Close();
  107. break;
  108. }
  109. }
  110. /// <summary>
  111. /// 查询送货通知单主表
  112. /// </summary>
  113. private void Get_PUR_EXC_DELIVERY_M(String strsubId)
  114. {
  115. //清空数据
  116. try
  117. {
  118. this.Cursor=Cursors.WaitCursor;
  119. publicPms.clearOldData(panel_NOJL, new string[] { });
  120. publicPms.clearOldData(panel_JL, new string[] { });
  121. publicPms.clearOldData(panel_sj, new string[] { });
  122. JHY.Clear();
  123. JLdata.Clear();
  124. exception.Clear();
  125. inbill.Clear();
  126. if(ultraTabControl1.SelectedTab.Key=="1")
  127. {
  128. subMNoJL.Clear();
  129. subDNoJL.Clear();
  130. doQueryM("0", "1", strsubId);
  131. }
  132. else if(ultraTabControl1.SelectedTab.Key=="2")
  133. {
  134. subMJL.Clear();
  135. subDJL.Clear();
  136. doQueryM("1", "2", strsubId);
  137. }
  138. else if(ultraTabControl1.SelectedTab.Key=="3")
  139. {
  140. subMSJ.Clear();
  141. subDSJ.Clear();
  142. doQueryM("", "3", strsubId);
  143. }
  144. else{
  145. MessageUtil.ShowTips("未知参数");
  146. }
  147. }
  148. catch(Exception ex)
  149. {
  150. MessageUtil.ShowTips("加载数据失败:"+ex.Message);
  151. }
  152. finally
  153. {
  154. this.Cursor=Cursors.Default;
  155. }
  156. }
  157. /// <summary>
  158. /// 正式入库单
  159. /// </summary>
  160. private void setCkInBllList()
  161. {
  162. instock("1");
  163. }
  164. /// <summary>
  165. /// 待检入库
  166. /// </summary>
  167. private void setWaitChk_CkInBllList()
  168. {
  169. instock("2");
  170. }
  171. /// <summary>
  172. /// 撤销入库
  173. /// </summary>
  174. private void QuitCkRecBill()
  175. {
  176. UltraGrid ug = null;
  177. if (ultraTabControl1.SelectedTab.Key == "3")//计量
  178. {
  179. ug = GridSubDSJ;
  180. }
  181. else
  182. {
  183. MessageUtil.ShowTips("请选择需撤销入库的实绩");
  184. return;
  185. }
  186. ug.UpdateData();
  187. if (ug.Rows.Count <= 0)
  188. {
  189. MessageUtil.ShowTips("无可操作送货单行");
  190. return;
  191. }
  192. ArrayList aledsc = new ArrayList();
  193. ExcDeliverySubC edsc1 = new ExcDeliverySubC();
  194. ExcDeliverySubM edsM = new ExcDeliverySubM();
  195. foreach (UltraGridRow ugr in ug.Rows)
  196. {
  197. if (ugr.Hidden || !(bool)ugr.Cells["Check"].Value)
  198. { continue; }
  199. ExcDeliverySubC edsc = new ExcDeliverySubC();
  200. String strSubSqe = ugr.Cells["DeliverySubLineSqe"].Value.ToString().Trim();
  201. edsc.DeliverySubLineSqe = strSubSqe;
  202. if (!testDeliveryStatus(strSubSqe, 3, ref edsc1,ref edsM))
  203. {
  204. return;
  205. }
  206. edsc.UpdateName = UserInfo.GetUserName();
  207. edsc.UpdateUserid = UserInfo.GetUserID();
  208. edsc.UpdateTime = DateTime.Now;
  209. aledsc.Add(edsc);
  210. }
  211. if (aledsc.Count <= 0)
  212. {
  213. MessageUtil.ShowTips("请勾选送货单");
  214. return;
  215. }
  216. if (MessageUtil.ShowYesNoAndQuestion("确定撤销勾选的" + aledsc.Count + "条送货单行的入库记录?") == DialogResult.No)
  217. {
  218. return;
  219. }
  220. CoreResult crt = this.GetJsonService().execute<CoreResult>("com.hnshituo.pur.ck.service.CkInBillService", "QuitCkRecBill", new object[] { aledsc,strCoustomInfo});
  221. if (crt.Resultcode != 0)
  222. {
  223. MessageUtil.ShowTips("撤销入库失败 " + crt.Resultmsg);
  224. return;
  225. }
  226. MessageUtil.ShowTips("撤销入库成功");
  227. //循环判断此送货单是否全部收货,全部收货则关闭收货单
  228. Get_PUR_EXC_DELIVERY_M("");
  229. }
  230. /// <summary>
  231. /// 导出Excel
  232. /// </summary>
  233. private void doExcel()
  234. {
  235. try
  236. {
  237. this.Cursor = Cursors.Default;
  238. if (ultraTabControl1.SelectedTab.Key == "1")
  239. {
  240. if (GridSubDNoJL.Rows.Count <= 0)
  241. {
  242. MessageUtil.ShowTips("无可导出明细!");
  243. return;
  244. }
  245. ArrayList alUltraGrid = new ArrayList();
  246. alUltraGrid.Add(GridSubDNoJL);
  247. ArrayList alSheeft = new ArrayList();
  248. alSheeft.Add("非计量待入库明细");
  249. GridHelper.ulGridToExcel(alUltraGrid, alSheeft, "非计量待入库明细");
  250. }
  251. else if (ultraTabControl1.SelectedTab.Key == "2")
  252. {
  253. if (GridSubDJL.Rows.Count <= 0)
  254. {
  255. MessageUtil.ShowTips("无可导出明细!");
  256. return;
  257. }
  258. ArrayList alUltraGrid = new ArrayList();
  259. alUltraGrid.Add(GridSubDJL);
  260. ArrayList alSheeft = new ArrayList();
  261. alSheeft.Add("计量待入库明细");
  262. GridHelper.ulGridToExcel(alUltraGrid, alSheeft, "计量待入库明细");
  263. }
  264. else
  265. {
  266. if (GridSubDSJ.Rows.Count <= 0)
  267. {
  268. MessageUtil.ShowTips("无可导出明细!");
  269. return;
  270. }
  271. ArrayList alUltraGrid = new ArrayList();
  272. alUltraGrid.Add(GridSubDSJ);
  273. ArrayList alSheeft = new ArrayList();
  274. alSheeft.Add("已入库明细");
  275. GridHelper.ulGridToExcel(alUltraGrid, alSheeft, "已入库明细");
  276. }
  277. }
  278. catch (Exception e)
  279. {
  280. MessageUtil.ShowTips("导出失败" + e.Message);
  281. }
  282. finally
  283. {
  284. this.Cursor = Cursors.Default;
  285. }
  286. }
  287. private DateTime setCreateTimeEnd(Object value) {
  288. DateTime time = Convert.ToDateTime(value);
  289. DateTime endtime = new DateTime(time.Year, time.Month, time.Day,23,59,59);
  290. return endtime;
  291. }
  292. #endregion
  293. #region 界面事件
  294. private void GridSubMNOJL_CellChange(object sender, CellEventArgs e)
  295. {
  296. if (e.Cell.Column.Key == "CHK")
  297. {
  298. getCheckdSubMCol(GridSubMNOJL,"1");
  299. }
  300. }
  301. private void GridSubMJL_CellChange(object sender, CellEventArgs e)
  302. {
  303. if (e.Cell.Column.Key == "CHK")
  304. {
  305. getCheckdSubMCol(GridSubMJL, "2");
  306. }
  307. }
  308. private void GridSubMSJ_CellChange(object sender, CellEventArgs e)
  309. {
  310. if (e.Cell.Column.Key == "CHK")
  311. {
  312. getCheckdSubMCol(GridSubMSJ, "3");
  313. }
  314. }
  315. /// <summary>
  316. /// 非过磅操作
  317. /// </summary>
  318. /// <param name="sender"></param>
  319. /// <param name="e"></param>
  320. private void GridSubDNoJL_CellChange(object sender, CellEventArgs e)
  321. {
  322. UltraGridRow ugr = e.Cell.Row;
  323. object o = e.Cell.Value;
  324. GridSubDNoJL.UpdateData();
  325. //计算带处置量
  326. if (e.Cell.Column.Key.ToUpper() == "INNUM".ToUpper() || e.Cell.Column.Key.ToUpper() == "weightQty".ToUpper())
  327. {
  328. double b_INNUM = 0; //入库量
  329. double b_weightQty = 0; //库存量
  330. double b_non_Standard = 0;//待编制量
  331. double b_ReceivedQty = 0; //收货量
  332. double b_ITEMUOMCONEFFICIENT = 0;
  333. double.TryParse(ugr.Cells["ITEMUOMCONEFFICIENT"].Value.ToString(), out b_ITEMUOMCONEFFICIENT);//转换系数
  334. double.TryParse(e.Cell.Row.Cells["INNUM"].Value.ToString(), out b_INNUM);
  335. double.TryParse(e.Cell.Row.Cells["weightQty"].Value.ToString(), out b_weightQty);
  336. double.TryParse(e.Cell.Row.Cells["numException"].Value.ToString(), out b_non_Standard);
  337. double.TryParse(e.Cell.Row.Cells["SHIPQTY"].Value.ToString(), out b_ReceivedQty);
  338. if (e.Cell.Column.Key == "INNUM")
  339. {
  340. //if (b_INNUM > b_ReceivedQty*1.1)
  341. //{
  342. // MessageUtil.ShowTips("入库量【" + b_INNUM + "】不能大于收货量【" + b_ReceivedQty + "】的1.1倍,请重新输入");
  343. // e.Cell.Value = o;
  344. // return;
  345. //}
  346. getInNum(ugr, "1");
  347. }
  348. else
  349. {
  350. //if (b_weightQty > b_ReceivedQty)
  351. //{
  352. // MessageUtil.ShowTips("输入的库存数量【" + b_weightQty + "】不能大于收货量【" + b_ReceivedQty + "】,请重新输入");
  353. // e.Cell.Value = o;
  354. // return;
  355. //}
  356. getInNum(ugr, "2");
  357. }
  358. }
  359. else if (e.Cell.Column.Key == "CheckStatu")//选择判定结果
  360. {
  361. getInNum(ugr, "1");
  362. }
  363. if (e.Cell.Column.Key == "ITEMUOMCONEFFICIENT")
  364. {
  365. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//库存数量可输
  366. {
  367. getInNum(ugr, "2");
  368. }
  369. else
  370. {
  371. getInNum(ugr, "1");
  372. }
  373. }
  374. if (e.Cell.Column.Key == "PACKAGEQTY")
  375. {
  376. getInNum(ugr, "1");
  377. }
  378. if (e.Cell.Column.Key == "INVPOS")//选择储位
  379. {
  380. GridSubDNoJL.DisplayLayout.Bands[0].PerformAutoResizeColumns(true, PerformAutoSizeType.AllRowsInBand);
  381. }
  382. }
  383. /// <summary>
  384. /// 计量grid
  385. /// </summary>
  386. /// <param name="sender"></param>
  387. /// <param name="e"></param>
  388. private void GridSubDJL_CellChange(object sender, CellEventArgs e)
  389. {
  390. GridSubDJL.UpdateData();
  391. UltraGridRow ugr = e.Cell.Row;
  392. if (e.Cell.Column.Key == "CheckStatu")//选择判定结果
  393. {
  394. if (e.Cell.Value.ToString() == "0")
  395. {
  396. setCellColor(ugr, System.Drawing.Color.FromArgb(255, 255, 128), "InvPosException", "RemarkException", "CheckStatu", "KZQTY", "PACKAGEUNIT", "PACKAGEQTY", "ITEMUOMCONEFFICIENT", "JLQTY");
  397. //ugr.Cells["INNUM"].Value = 0;//入库量=收货量
  398. //ugr.Cells["numException"].Value = ugr.Cells["SHIPQTY"].Value;//待处置量
  399. getJlInNum(ugr);
  400. }
  401. else
  402. {
  403. setCellColor(ugr, System.Drawing.Color.FromArgb(255, 255, 128), "INVPOS", "CheckStatu", "KZQTY", "PACKAGEUNIT", "PACKAGEQTY", "ITEMUOMCONEFFICIENT", "JLQTY");
  404. //ugr.Cells["INNUM"].Value = ugr.Cells["SHIPQTY"].Value;//入库量=收货量
  405. //ugr.Cells["numException"].Value = 0;//待处置量
  406. getJlInNum(ugr);
  407. }
  408. }
  409. if (e.Cell.Column.Key == "KZQTY" || e.Cell.Column.Key == "ITEMUOMCONEFFICIENT" || e.Cell.Column.Key == "JLQTY")//口杂
  410. {
  411. if (e.Cell.Column.Key == "JLQTY")
  412. {
  413. ugr.Cells["SHIPQTY"].Value = ugr.Cells["JLQTY"].Value;
  414. }
  415. getJlInNum(ugr);
  416. }
  417. if (e.Cell.Column.Key == "PACKAGEQTY")
  418. {
  419. getInNum(ugr, "1");
  420. }
  421. if (e.Cell.Column.Key == "INVPOS")//选择储位
  422. {
  423. GridSubDJL.DisplayLayout.Bands[0].PerformAutoResizeColumns(true, PerformAutoSizeType.AllRowsInBand);
  424. //comm.RefreshAndAutoSizeExceptColumns(ultraGrid1);
  425. }
  426. }
  427. /// <summary>
  428. ///
  429. /// </summary>
  430. /// <param name="sender"></param>
  431. /// <param name="e"></param>
  432. private void GridJL_CellChange(object sender, CellEventArgs e)
  433. {
  434. //匹配的料型是否一致
  435. if (e.Cell.Column.Key == "Check")
  436. foreach (UltraGridRow ugr2 in GridJL_JL.Rows)
  437. {
  438. if ((bool)ugr2.Cells["Check"].Value)
  439. {
  440. if (e.Cell.Row.Cells["materielRule"].Value.ToString() == ugr2.Cells["materielRule"].Value.ToString() && e.Cell.Row != ugr2)
  441. {
  442. comm.ConfirmOption("勾选匹配的计量料型必须一致");
  443. e.Cell.Row.Cells["Check"].Value = false;
  444. return;
  445. }
  446. }
  447. }
  448. }
  449. /// <summary>
  450. /// checkBox
  451. /// </summary>
  452. /// <param name="sender"></param>
  453. /// <param name="e"></param>
  454. private void ck_createTimeNoJL_CheckedChanged(object sender, System.EventArgs e)
  455. {
  456. QcreateTime_BeginNoJL.Enabled = ck_createTimeNoJL.Checked;
  457. QcreateTime_EndNoJL.Enabled = ck_createTimeNoJL.Checked;
  458. }
  459. private void ck_createtimeJL_CheckedChanged(object sender, System.EventArgs e)
  460. {
  461. QcreateTime_BeginJL.Enabled = ck_createtimeJL.Checked;
  462. QcreateTime_EndJL.Enabled = ck_createtimeJL.Checked;
  463. }
  464. private void ck_createtimeSJ_CheckedChanged(object sender, System.EventArgs e)
  465. {
  466. QcreateTime_BeginSJ.Enabled = ck_createtimeSJ.Checked;
  467. QcreateTime_EndSJ.Enabled = ck_createtimeSJ.Checked;
  468. }
  469. private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e)
  470. {
  471. publicPms.clearOldData(panel_NOJL, new string[] { });
  472. publicPms.clearOldData(panel_sj, new string[] { });
  473. publicPms.clearOldData(panel_JL, new string[] { });
  474. JHY.Clear();
  475. JLdata.Clear();
  476. exception.Clear();
  477. if (ultraTabControl1.SelectedTab.Key == "1" || ultraTabControl1.SelectedTab.Key == "2")
  478. {
  479. this.ToolBarItemEnable(this, "conFirmation", true);
  480. this.ToolBarItemEnable(this, "confirmation1", true);
  481. this.ToolBarItemEnable(this, "QuitCkRecBill", false);
  482. }
  483. else
  484. {
  485. this.ToolBarItemEnable(this, "conFirmation", false);
  486. this.ToolBarItemEnable(this, "confirmation1", false);
  487. this.ToolBarItemEnable(this, "QuitCkRecBill", true);
  488. }
  489. }
  490. private void GridSubMSJ_AfterHeaderCheckStateChanged(object sender, AfterHeaderCheckStateChangedEventArgs e)
  491. {
  492. if (e.Column.Key == "CHK")
  493. {
  494. getCheckdSubMCol(GridSubMSJ, "3");
  495. }
  496. }
  497. private void GridSubMJL_AfterHeaderCheckStateChanged(object sender, AfterHeaderCheckStateChangedEventArgs e)
  498. {
  499. if (e.Column.Key == "CHK")
  500. {
  501. getCheckdSubMCol(GridSubMJL, "2");
  502. }
  503. }
  504. private void GridSubMNOJL_AfterHeaderCheckStateChanged(object sender, AfterHeaderCheckStateChangedEventArgs e)
  505. {
  506. if (e.Column.Key == "CHK")
  507. {
  508. getCheckdSubMCol(GridSubMNOJL, "1");
  509. }
  510. }
  511. #endregion
  512. #region 行按钮
  513. /// <summary>
  514. /// 计量信息筛选
  515. /// </summary>
  516. /// <param name="sender"></param>
  517. /// <param name="e"></param>
  518. private void btn_JL_select_Click(object sender, System.EventArgs e)
  519. {
  520. UltraGridRow ugr = GridSubDJL.ActiveRow;
  521. if (ugr == null)
  522. {
  523. MessageUtil.ShowTips("请选择一个送货单的物料");
  524. return;
  525. }
  526. DataTable dtjl = getJLData("");
  527. if (dtjl != null && dtjl.Rows.Count > 0)
  528. {
  529. GridHelper.CopyDataToDatatable(dtjl, DTJL, true);
  530. GridHelper.RefreshAndAutoSize(GridJHY_JL);
  531. }
  532. }
  533. /// <summary>
  534. /// 单个匹配送货单行
  535. /// </summary>
  536. /// <param name="sender"></param>
  537. /// <param name="e"></param>
  538. private void btn_JL_sure_Click(object sender, System.EventArgs e)
  539. {
  540. if (ultraTabControl1.SelectedTab.Key != "2")
  541. {
  542. MessageUtil.ShowTips("请选择计量入库界面");
  543. return;
  544. }
  545. UltraGridRow ugr1 = GridSubDJL.ActiveRow;
  546. if (ugr1 == null)
  547. {
  548. MessageUtil.ShowTips("请选择需匹配的送货单行");
  549. return;
  550. }
  551. UltraGridRow ugr2 = GridJL_JL.ActiveRow;
  552. if (ugr2 == null)
  553. {
  554. MessageUtil.ShowTips("请选择进行匹配的磅单");
  555. return;
  556. }
  557. String strSubSqe = ugr1.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim();
  558. double numJLQTY = 0;
  559. double numTARE = 0;//皮重
  560. double numGROSS = 0; //毛重
  561. string strSUTTLETIME = "";//计量时间
  562. String strMaterielRule = "";
  563. double numKZQTY = 0;
  564. double b_txt_deduction2 = 0.00;//扣机铁
  565. double b_txt_deduction3 = 0.00;//扣超长
  566. double b_txt_deduction4 = 0.00;//扣轻薄
  567. Double.TryParse(ugr2.Cells["suttle"].Value.ToString().Trim(), out numJLQTY);
  568. Double.TryParse(ugr2.Cells["deduction"].Value.ToString().Trim(), out numKZQTY);
  569. Double.TryParse(ugr2.Cells["deduction2"].Value.ToString().Trim(), out b_txt_deduction2);//扣机铁
  570. Double.TryParse(ugr2.Cells["deduction3"].Value.ToString().Trim(), out b_txt_deduction3);//扣超长
  571. Double.TryParse(ugr2.Cells["deduction4"].Value.ToString().Trim(), out b_txt_deduction4);//扣轻薄
  572. Double.TryParse(ugr2.Cells["TARE"].Value.ToString().Trim(), out numTARE);//皮重
  573. Double.TryParse(ugr2.Cells["GROSS"].Value.ToString().Trim(), out numGROSS);//毛重
  574. string strmatchid = ugr2.Cells["matchid"].Value.ToString().Trim();//绑单号
  575. strMaterielRule = ugr2.Cells["materielRule"].Value.ToString().Trim();//废钢料型
  576. strSUTTLETIME = ugr2.Cells["SUTTLETIME"].Value.ToString().Trim();//计量时间
  577. int i = 0;
  578. String strSubSqe2 = "";
  579. foreach (UltraGridRow row in GridSubDJL.Rows)
  580. {
  581. if (row.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim() != strSubSqe || row.GetCellValue("matchid").ToString().Trim() == "strmatchid")
  582. {
  583. strSubSqe2 = row.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim();
  584. i = i + 1;
  585. }
  586. }
  587. if (i >= 1)
  588. {
  589. if (MessageUtil.ShowYesNoAndQuestion("送货单行:" + strSubSqe2 + "已绑定该磅单,确定重复绑定?") != DialogResult.Yes)
  590. {
  591. return;
  592. }
  593. }
  594. ugr1.Cells["JLQTY"].Value = numJLQTY;//净重
  595. ugr1.Cells["KZQTY"].Value = numKZQTY;//净扣杂
  596. ugr1.Cells["deduction2"].Value = b_txt_deduction2;//扣机铁
  597. ugr1.Cells["deduction3"].Value = b_txt_deduction3;//扣超长
  598. ugr1.Cells["deduction4"].Value = b_txt_deduction4;//扣轻薄
  599. ugr1.Cells["TARE"].Value = numTARE;//皮重
  600. ugr1.Cells["GROSS"].Value = numGROSS;//毛重
  601. ugr1.Cells["SUTTLETIME"].Value = strSUTTLETIME;//计量时间
  602. ugr1.Cells["CheckResult"].Value = strMaterielRule;//废钢料型
  603. ugr1.Cells["matchid"].Value = strmatchid;//绑单号
  604. GridSubDJL.UpdateData();
  605. }
  606. /// <summary>
  607. /// 批量确定
  608. /// </summary>
  609. /// <param name="sender"></param>
  610. /// <param name="e"></param>
  611. private void btn_JL_sure_all_Click(object sender, System.EventArgs e)
  612. {
  613. bindJLItems();
  614. }
  615. private void ck_shutt_JL_CheckedChanged(object sender, System.EventArgs e)
  616. {
  617. txt_shuttTimeStart_JL.Enabled = ck_shutt_JL.Checked;
  618. txt_shuttTimeEnd_JL.Enabled = ck_shutt_JL.Checked;
  619. }
  620. #endregion
  621. #region 公共方法
  622. /// <summary>
  623. /// 查询方法
  624. /// </summary>
  625. /// <param name="strIsMeter">是否计量</param>
  626. /// <param name="tab">加载数据页面</param>
  627. /// <param name="subId">是否激活</param>
  628. private void doQueryM(String strIsMeter,String tab,String subId)
  629. {
  630. //ht.Clear();
  631. //ht_CheckStatu.Clear();
  632. Hashtable map = new Hashtable();
  633. if(tab=="1")
  634. {
  635. map.Clear();
  636. map.Add("deliverySubId", QsubIdNoJL.Text.Trim());
  637. map.Add("suppName", QsuppNameNoJL.Text.Trim());
  638. map.Add("orderId", QorderIdNoJL.Text.Trim());
  639. map.Add("invPhysicName", QInphysicNoJL.Text.Trim());
  640. map.Add("deliveryLocation", QLocationNoJL.Text.Trim());
  641. if (String.IsNullOrEmpty(strCoustomInfo))
  642. {
  643. map.Add("statusRK", QstatusNoJL.Value == null ? "" : QstatusNoJL.Value.ToString().Trim());
  644. }
  645. else {
  646. map.Add("statusEx", QstatusNoJL.Value == null ? "" : QstatusNoJL.Value.ToString().Trim());
  647. map.Add("itemCodeEx", strCoustomInfo);
  648. }
  649. if (ck_createTimeNoJL.Checked)
  650. {
  651. if (QcreateTime_BeginNoJL.Value!=null)//创建开始时间
  652. {
  653. map.Add("createTimeBegin", Convert.ToDateTime(QcreateTime_BeginNoJL.Value).ToString());
  654. }
  655. if (QcreateTime_EndNoJL.Value != null)//创建结束时间
  656. {
  657. map.Add("createTimeEnd", setCreateTimeEnd(QcreateTime_EndNoJL.Value));
  658. }
  659. }
  660. }
  661. else if (tab == "2")
  662. {
  663. map.Clear();
  664. map.Add("deliverySubId", QsubIdJL.Text.Trim());
  665. map.Add("suppName", QsuppNameJL.Text.Trim());
  666. map.Add("orderId", QorderIdJL.Text);
  667. map.Add("invPhysicName", QInphysicJL.Text.Trim());
  668. map.Add("deliveryLocation", QLocationJL.Text.Trim());
  669. if (String.IsNullOrEmpty(strCoustomInfo))
  670. {
  671. map.Add("statusRK", QstatusJL.Value == null ? "" : QstatusJL.Value.ToString().Trim());
  672. }
  673. else
  674. {
  675. map.Add("statusEx", QstatusJL.Value == null ? "" : QstatusJL.Value.ToString().Trim());
  676. map.Add("itemCodeEx", strCoustomInfo);
  677. }
  678. if (ck_createtimeJL.Checked)
  679. {
  680. if (QcreateTime_BeginJL.Value != null)//创建开始时间
  681. {
  682. map.Add("createTimeBegin", Convert.ToDateTime(QcreateTime_BeginJL.Value).ToString());
  683. }
  684. if (QcreateTime_EndJL.Value != null)//创建结束时间
  685. {
  686. map.Add("createTimeEnd", setCreateTimeEnd(QcreateTime_EndJL.Value));
  687. }
  688. }
  689. }
  690. else if (tab == "3")
  691. {
  692. map.Clear();
  693. map.Add("deliverySubId", QsubIdSJ.Text.Trim());
  694. map.Add("suppName", QsuppNameSJ.Text.Trim());
  695. map.Add("orderId", QorderIdSJ.Text);
  696. map.Add("invPhysicName", QInphysicSJ.Text.Trim());
  697. map.Add("deliveryLocation", QLocationSJ.Text.Trim());
  698. if (String.IsNullOrEmpty(strCoustomInfo))
  699. {
  700. map.Add("statusRK", QstatusSJ.Value == null ? "" : QstatusSJ.Value.ToString().Trim());
  701. }
  702. else
  703. {
  704. map.Add("statusEx", QstatusSJ.Value == null ? "" : QstatusSJ.Value.ToString().Trim());
  705. map.Add("itemCodeEx", strCoustomInfo);
  706. }
  707. if (ck_createtimeSJ.Checked)
  708. {
  709. if (QcreateTime_BeginSJ.Value != null)//创建开始时间
  710. {
  711. map.Add("createTimeBegin", Convert.ToDateTime(QcreateTime_BeginSJ.Value).ToString());
  712. }
  713. if (QcreateTime_EndSJ.Value != null)//创建结束时间
  714. {
  715. map.Add("createTimeEnd", setCreateTimeEnd(QcreateTime_EndSJ.Value));
  716. }
  717. }
  718. }
  719. else
  720. {
  721. MessageUtil.ShowTips("未知页面");
  722. }
  723. map.Add("meteringFlag", strIsMeter);
  724. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.ck.service.ExcDeliverySubMService", "doQueryDeliverySubMList", new object[] { map });
  725. if (dt != null && dt.Rows.Count > 0)
  726. {
  727. if (tab == "1")
  728. {
  729. GridHelper.CopyDataToDatatable(dt, DTSubMNojl, true);
  730. GridHelper.RefreshAndAutoSize(GridSubMNOJL);
  731. if (String.IsNullOrEmpty(subId))
  732. {
  733. publicPms.doActiveSelRow(GridSubMNOJL, "DELIVERYSUBID", subId);
  734. }
  735. }
  736. else if (tab == "2")
  737. {
  738. GridHelper.CopyDataToDatatable(dt, DTsubMJL, true);
  739. GridHelper.RefreshAndAutoSize(GridSubMJL);
  740. if (String.IsNullOrEmpty(subId))
  741. {
  742. publicPms.doActiveSelRow(GridSubMJL, "DELIVERYSUBID", subId);
  743. }
  744. }
  745. else if (tab == "3")
  746. {
  747. GridHelper.CopyDataToDatatable(dt, DTsubMSJ, true);
  748. GridHelper.RefreshAndAutoSize(GridSubMSJ);
  749. if (String.IsNullOrEmpty(subId))
  750. {
  751. publicPms.doActiveSelRow(GridSubMSJ, "DELIVERYSUBID", subId);
  752. }
  753. }
  754. else
  755. {
  756. MessageUtil.ShowTips("未知页面");
  757. }
  758. }
  759. }
  760. private List<UltraGridRow> UltraGridGetCHKRows(UltraGrid grid, string columnName = "CHK")
  761. {
  762. grid.UpdateData();
  763. List<UltraGridRow> list = new List<UltraGridRow>();
  764. RowsCollection rows = grid.Rows;
  765. foreach (var item in rows)
  766. {
  767. try
  768. {
  769. if (Convert.ToBoolean(item.Cells[columnName].Value) == true && item.Hidden == false && item.IsFilteredOut == false)
  770. {
  771. list.Add(item);
  772. }
  773. }
  774. catch { }
  775. }
  776. return list;
  777. }
  778. private void getCheckdSubMCol(UltraGrid grid, String tab)
  779. {
  780. try
  781. {
  782. this.Cursor = Cursors.WaitCursor;
  783. grid.UpdateData();
  784. ExcDeliverySubC edsc = new ExcDeliverySubC();
  785. List<string> l = new List<string>();
  786. List<UltraGridRow> rows = UltraGridGetCHKRows(grid);
  787. if (rows.Count == 0) {
  788. DTsubDNoJL.Clear();
  789. }
  790. //获取库区库位
  791. foreach (UltraGridRow ugr in rows)
  792. {
  793. if ((bool)ugr.Cells["CHK"].Value)
  794. {
  795. String strDeliverySubId = ugr.GetCellValue("DeliverySubId").ToString().Trim();
  796. if (tab != "3")
  797. {
  798. String strInvPhysic = ugr.GetCellValue("invPhysic").ToString().Trim();
  799. String strInvPhysicName = ugr.GetCellValue("InvPhysicName").ToString().Trim();
  800. if (String.IsNullOrEmpty(strInvPhysic) || String.IsNullOrEmpty(strInvPhysicName))
  801. {
  802. MessageUtil.ShowTips("送货单:" + strDeliverySubId + "交付地址未绑定库区,无法办理入库,请维护库区和地址挂接关系基础数据,请注意");
  803. ugr.Cells["CHK"].Value = false;
  804. ugr.Cells["CHK"].Activation = Activation.Disabled;
  805. ugr.Appearance.BackColor = Color.WhiteSmoke;
  806. continue;
  807. }
  808. if (!ht.ContainsKey(strInvPhysic))
  809. {
  810. DataTable tt = getInvPosdt(strInvPhysic);
  811. if (tt == null || tt.Rows.Count <= 0)
  812. {
  813. ugr.Cells["CHK"].Value = false;
  814. ugr.Cells["CHK"].Activation = Activation.Disabled;
  815. ugr.Appearance.BackColor = Color.WhiteSmoke;
  816. MessageUtil.ShowTips("送货单:" + strDeliverySubId + "对应的库区:" + strInvPhysicName + "无入库储位,无法办理入库,请维护库区和储位挂接关系基础数据,请注意");
  817. continue;
  818. }
  819. ht.Add(strInvPhysic, tt);
  820. }
  821. }
  822. l.Add(strDeliverySubId);
  823. }
  824. }
  825. if (l.Count >= 1)
  826. {
  827. edsc.Col = l.ToArray();
  828. Get_PUR_EXC_DELIVERY_C(edsc, tab);
  829. }
  830. }
  831. catch (Exception ex)
  832. {
  833. MessageUtil.ShowTips("加载送货单行失败:" + ex.Message);
  834. }
  835. finally
  836. {
  837. this.Cursor = Cursors.Default;
  838. }
  839. }
  840. /// <summary>
  841. /// 查询送货通知单行表
  842. /// </summary>
  843. private void Get_PUR_EXC_DELIVERY_C(ExcDeliverySubC EdC, string tab)
  844. {
  845. JHY.Clear();
  846. JLdata.Clear();
  847. exception.Clear();
  848. JHY.Clear();
  849. if (tab == "1")//非过磅
  850. {
  851. publicPms.clearOldData(panel_NOJL, new string[] { });
  852. DTsubDNoJL.Rows.Clear();
  853. EdC.MeteringFlag = "0";
  854. if (String.IsNullOrEmpty(strCoustomInfo))
  855. {
  856. EdC.Status = QstatusNoJL.Value == null ? "" : QstatusNoJL.Value.ToString().Trim();
  857. }
  858. else {
  859. EdC.UpdateUserid = QstatusNoJL.Value == null ? "" : QstatusNoJL.Value.ToString().Trim();
  860. EdC.ItemCode = strCoustomInfo;
  861. }
  862. }
  863. else if(tab=="2")//过磅
  864. {
  865. publicPms.clearOldData(panel_JL, new string[] { });
  866. DTsubDJL.Rows.Clear();
  867. JLdata.Clear();
  868. EdC.MeteringFlag = "1";
  869. if (String.IsNullOrEmpty(strCoustomInfo))
  870. {
  871. EdC.Status = QstatusJL.Value == null ? "" : QstatusJL.Value.ToString().Trim();
  872. }
  873. else
  874. {
  875. EdC.UpdateUserid = QstatusJL.Value == null ? "" : QstatusJL.Value.ToString().Trim();
  876. EdC.ItemCode = strCoustomInfo;
  877. }
  878. }
  879. else if (tab == "3")//实绩
  880. {
  881. publicPms.clearOldData(panel_sj, new string[] { });
  882. DTsubDSJ.Rows.Clear();
  883. if (String.IsNullOrEmpty(strCoustomInfo))
  884. {
  885. EdC.Status = QstatusSJ.Value == null ? "" : QstatusSJ.Value.ToString().Trim();
  886. }
  887. else
  888. {
  889. EdC.UpdateUserid = QstatusSJ.Value == null ? "" : QstatusSJ.Value.ToString().Trim();
  890. EdC.ItemCode = strCoustomInfo;
  891. }
  892. }
  893. else
  894. {
  895. MessageUtil.ShowTips("页面参数错误");
  896. return;
  897. }
  898. EdC.Validflag = "1";
  899. EdC.UpdateUserid = strCoustomInfo;
  900. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.ck.service.ExcDeliverySubCService", "Query_C", new object[] { EdC });
  901. if (tab == "2")//过磅
  902. {
  903. GridHelper.CopyDataToDatatable(dt, DTsubDJL, true);
  904. foreach (UltraGridRow ugr in GridSubDJL.Rows)//过磅
  905. {
  906. ugr.Cells["Check"].Value = true;
  907. ugr.Cells["CheckStatu"].Value = "1";//判定结果默认为合格
  908. bindDropDown(ugr);//绑定库位
  909. bindCheckItems(DTsubDJL);//绑定检化验结果
  910. bindJLItems();//绑定计量结果
  911. getJlInNum(ugr);//自动计算入库量
  912. }
  913. GridSubDJL.UpdateData();
  914. //设置可编辑的行
  915. GridHelper.RefreshAndAutoSize(GridSubDJL);
  916. }
  917. else if (tab == "1")//非过磅入库
  918. {
  919. GridHelper.CopyDataToDatatable(dt, DTsubDNoJL, true);
  920. //1、入库量默认=收货量;待处置量为0
  921. //2、判定结果默认为合格
  922. foreach (UltraGridRow ugr in GridSubDNoJL.Rows)//非过磅
  923. {
  924. //设置送货单行默认全选
  925. ugr.Cells["Check"].Value = true;
  926. double b_INNUM = 0; //入库量
  927. double b_ReceivedQty = 0; //收货量
  928. double b_ITEMUOMCONEFFICIENT = 0;//转化系数
  929. double.TryParse(ugr.Cells["RECEIVEDQTY"].Value.ToString(), out b_INNUM);//接收量--用于待检入库
  930. double.TryParse(ugr.Cells["SHIPQTY"].Value.ToString(), out b_ReceivedQty);//接收量--入库
  931. double.TryParse(ugr.Cells["ITEMUOMCONEFFICIENT"].Value.ToString(), out b_ITEMUOMCONEFFICIENT);//转换系数
  932. if (ugr.Cells["status"].Value.ToString() != "待检入库")
  933. {
  934. ugr.Cells["INNUM"].Value = b_ReceivedQty;//采购收货量=初检量
  935. ugr.Cells["numException"].Value = 0;//待处置量
  936. ugr.Cells["CheckStatu"].Value = "1";//判定结果默认为合格
  937. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//库存数量可输
  938. {
  939. ugr.Cells["weightqTY"].Value = b_ReceivedQty;//库存收货量=初检
  940. ugr.Cells["INNUM"].Value = Math.Round(b_ReceivedQty * b_ITEMUOMCONEFFICIENT,3);
  941. //ugr.Cells["INNUM"].Column.CellAppearance.BackColor = ugr.Cells["status"].Appearance.BackColor;
  942. //ugr.Cells["INNUM"].Column.CellActivation = Activation.ActivateOnly;
  943. getInNum(ugr, "2");
  944. }
  945. else
  946. {
  947. //ugr.Cells["weightqTY"].Column.CellAppearance.BackColor = ugr.Cells["status"].Appearance.BackColor;
  948. //ugr.Cells["weightqTY"].Column.CellActivation = Activation.ActivateOnly;
  949. getInNum(ugr, "1");
  950. }
  951. }
  952. else
  953. {
  954. ugr.Cells["INNUM"].Value = b_ReceivedQty;//入库量
  955. ugr.Cells["numException"].Value = 0;
  956. ugr.Cells["CheckStatu"].Value = "1";//判定结果默认为合格
  957. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//库存数量可输
  958. {
  959. ugr.Cells["INNUM"].Value = Math.Round(b_ReceivedQty * b_ITEMUOMCONEFFICIENT, 3);
  960. ugr.Cells["weightqTY"].Value = b_ReceivedQty;//入库量
  961. getInNum(ugr, "2");
  962. }
  963. else
  964. {
  965. //ugr.Cells["weightqTY"].Column.CellAppearance.BackColor = ugr.Cells["status"].Column.CellAppearance.BackColor;
  966. //ugr.Cells["weightqTY"].Column.CellActivation = Activation.ActivateOnly;
  967. getInNum(ugr, "1");
  968. }
  969. }
  970. bindDropDown(ugr);//绑定行所有的下拉框
  971. }
  972. bindCheckItems(DTsubDNoJL);//绑定检化验结果
  973. GridSubDNoJL.UpdateData();
  974. GridHelper.RefreshAndAutoSize(GridSubDNoJL);
  975. }
  976. else
  977. {
  978. GridHelper.CopyDataToDatatable(dt, DTsubDSJ, true);
  979. foreach (UltraGridRow ugr in GridSubDSJ.Rows)//实绩
  980. {
  981. getInNum(ugr, "1");
  982. }
  983. GridHelper.RefreshAndAutoSize(GridSubDSJ);
  984. }
  985. }
  986. /// <summary>
  987. /// 入库送货单行状态校验
  988. /// </summary>
  989. /// <param name="deliverySubId"></param>
  990. /// <param name="p"></param>
  991. /// <returns></returns>
  992. private bool testDeliveryStatus(String deliverySubId, int p, ref ExcDeliverySubC subc, ref ExcDeliverySubM subM)
  993. {
  994. if (String.IsNullOrEmpty(deliverySubId))
  995. {
  996. MessageUtil.ShowTips("送货单行号为空,无法校验数据有效性");
  997. return false;
  998. }
  999. subc = this.GetJsonService().execute<ExcDeliverySubC>("com.hnshituo.pur.ck.service.ExcDeliverySubCService", "findById", new object[] { deliverySubId });
  1000. if (subc == null)
  1001. {
  1002. MessageUtil.ShowTips("未发现送货单行:" + deliverySubId + " 信息记录,可能已作废,或请刷新界面重试");
  1003. return false;
  1004. }
  1005. if (subc.Validflag != "1")
  1006. {
  1007. MessageUtil.ShowTips("未发现送货单行:" + deliverySubId + " 信息记录,可能已作废,或请刷新界面重试");
  1008. return false;
  1009. }
  1010. String testStatus = subc.Status;
  1011. if (String.IsNullOrEmpty(subc.DeliverySubId))
  1012. {
  1013. MessageUtil.ShowTips("未找到送货单行的头信息");
  1014. return false;
  1015. }
  1016. subM = this.GetJsonService().execute<ExcDeliverySubM>("com.hnshituo.pur.ck.service.ExcDeliverySubMService", "findById", new object[] { subc.DeliverySubId });
  1017. if (subM == null)
  1018. {
  1019. MessageUtil.ShowTips("未发现送货单:" + subc.DeliverySubId + " 信息记录,可能已作废,或请刷新界面重试");
  1020. return false;
  1021. }
  1022. if (subM.Validflag != "1")
  1023. {
  1024. MessageUtil.ShowTips("未发现送货单:" + subc.DeliverySubId + " 信息记录,可能已作废,或请刷新界面重试");
  1025. return false;
  1026. }
  1027. //待检入库
  1028. if (p == 1)
  1029. {
  1030. if (subM.ReceiveType == "110107")//JIT
  1031. {
  1032. if (testStatus != "3")
  1033. {
  1034. MessageUtil.ShowTips("送货单行:" + deliverySubId + " 为JIT入库,可能还未完成复检,或请刷新界面重试");
  1035. return false;
  1036. }
  1037. }
  1038. else if (subM.ReceiveType == "110101")
  1039. {
  1040. if (testStatus != "2")
  1041. {
  1042. MessageUtil.ShowTips("送货单行:" + deliverySubId + " 为非JIT,可能还未完成初检,或请刷新界面重试");
  1043. return false;
  1044. }
  1045. }
  1046. if (subc.MeteringFlag == "1")
  1047. {
  1048. if (subc.Ismeter == "0")
  1049. {
  1050. MessageUtil.ShowTips("物料:" + subc.ItemName + " 为计重物料,请先计量");
  1051. return false;
  1052. }
  1053. }
  1054. if (subc.PcFlag == "1")
  1055. {
  1056. if (String.IsNullOrEmpty(subc.CheckNo))
  1057. {
  1058. MessageUtil.ShowTips("物料:" + subc.ItemName + " 为检化验物料,请生成检化验委托并做好取样和检验准备");
  1059. return false;
  1060. }
  1061. }
  1062. }
  1063. //正式入库
  1064. else if (p == 2)
  1065. {
  1066. if (subM.ReceiveType == "110107")//JIT
  1067. {
  1068. if (testStatus != "3"&&testStatus != "4")
  1069. {
  1070. MessageUtil.ShowTips("送货单行:" + deliverySubId + " 为JIT入库,还未复检或者待检,或请刷新界面重试");
  1071. return false;
  1072. }
  1073. }
  1074. else if (subM.ReceiveType == "110101")
  1075. {
  1076. if (testStatus != "2" && testStatus != "4")
  1077. {
  1078. MessageUtil.ShowTips("送货单行:" + deliverySubId + " 为非JIT,可能还未初检或待检,或请刷新界面重试");
  1079. return false;
  1080. }
  1081. }
  1082. if (subc.MeteringFlag == "1")
  1083. {
  1084. if (subc.Ismeter == "0")
  1085. {
  1086. MessageUtil.ShowTips("物料:" + subc.ItemName + " 为计重物料,请先计量");
  1087. return false;
  1088. }
  1089. }
  1090. if (subc.PcFlag == "1")
  1091. {
  1092. if (String.IsNullOrEmpty(subc.CheckNo))
  1093. {
  1094. MessageUtil.ShowTips("物料:" + subc.ItemName + " 为检化验物料,请生成检化验委托并做好取样和检验准备");
  1095. return false;
  1096. }
  1097. }
  1098. }
  1099. //正式入库(废钢)
  1100. else if (p == 4)
  1101. {
  1102. if (testStatus != "1" && testStatus != "2" && testStatus != "3" && testStatus != "4")
  1103. {
  1104. MessageUtil.ShowTips("送货单行:" + deliverySubId + " 已入库,或请刷新界面重试");
  1105. return false;
  1106. }
  1107. if (subc.MeteringFlag == "1")
  1108. {
  1109. if (subc.Ismeter == "0")
  1110. {
  1111. MessageUtil.ShowTips("物料:" + subc.ItemName + " 为计重物料,请先计量");
  1112. return false;
  1113. }
  1114. }
  1115. if (subc.PcFlag == "1")
  1116. {
  1117. if (String.IsNullOrEmpty(subc.CheckNo))
  1118. {
  1119. MessageUtil.ShowTips("物料:" + subc.ItemName + " 为检化验物料,请生成检化验委托并做好取样和检验准备");
  1120. return false;
  1121. }
  1122. }
  1123. }
  1124. //撤销入库
  1125. else if (p == 3)
  1126. {
  1127. if (testStatus != "5" && testStatus != "4")
  1128. {
  1129. MessageUtil.ShowTips("送货单行:" + deliverySubId + " 还未入库或者已结算,或请刷新界面重试");
  1130. return false;
  1131. }
  1132. }
  1133. else
  1134. {
  1135. MessageUtil.ShowTips("未知参数:" + p);
  1136. return false;
  1137. }
  1138. return true;
  1139. }
  1140. /// <summary>
  1141. /// 获取库区库库位数据
  1142. /// </summary>
  1143. /// <param name="strPhysic"></param>
  1144. /// <returns></returns>
  1145. private DataTable getInvPosdt(string strPhysic)
  1146. {
  1147. string strInvPhysic = strPhysic;
  1148. ActualSeatPosEntity PosEntity = new ActualSeatPosEntity();
  1149. PosEntity.Validflag = "1";
  1150. PosEntity.InvPhysic = strInvPhysic;
  1151. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.configure.service.ActualSeatPosService", "find", new object[] { PosEntity, 0, 0 });
  1152. return dt;
  1153. }
  1154. /// <summary>
  1155. /// 绑定当前行的库位,绑定判定结果下拉列表数据源(储位和判断等级)
  1156. /// </summary>
  1157. private void bindDropDown(UltraGridRow ugr)
  1158. {
  1159. try
  1160. {
  1161. //绑定储位
  1162. if (ugr.Cells["INVPOS"].EditorComponent == null || ugr.Cells["InvPosException"].EditorComponent == null)
  1163. {
  1164. String strInvphysic = ugr.Cells["DELETEUSERID"].Value.ToString().Trim();
  1165. if (!String.IsNullOrEmpty(strInvphysic))
  1166. {
  1167. DataTable dt = null;
  1168. if (ht[strInvphysic] != null)
  1169. {
  1170. dt = (DataTable)ht[strInvphysic];
  1171. }
  1172. if (ugr.Cells["INVPOS"].EditorComponent == null)
  1173. {
  1174. UltraComboEditor ucbe = getNewUltraComboEditor();
  1175. comm.setUltraComboEditorBind(ucbe, dt, "invPosName", "invPos");
  1176. ugr.Cells["INVPOS"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
  1177. ugr.Cells["INVPOS"].EditorComponent = ucbe;
  1178. if (dt.Rows.Count > 0 && ugr.Cells["INVPOS"].Value.ToString() == "")
  1179. {
  1180. ugr.Cells["INVPOS"].Value = dt.Rows[0]["invPos"].ToString();
  1181. }
  1182. }
  1183. if (ugr.Cells["InvPosException"].EditorComponent == null)
  1184. {
  1185. //待处置库位
  1186. UltraComboEditor ucbe1 = getNewUltraComboEditor();
  1187. comm.setUltraComboEditorBind(ucbe1, dt, "invPosName", "invPos");
  1188. ugr.Cells["InvPosException"].EditorComponent = ucbe1;
  1189. ugr.Cells["InvPosException"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
  1190. }
  1191. }
  1192. }
  1193. //绑定判定结果
  1194. ugr.Cells["CheckStatu"].EditorComponent = cmbCheck;
  1195. }
  1196. catch (System.Exception ex)
  1197. {
  1198. MessageUtil.ShowTips("加载送货单行:" + ugr.GetCellValue("DELIVERYSUBLINESQE") + "入库可选储位和可判定等级失败:" + ex.Message);
  1199. ugr.Cells["Check"].Value = false;
  1200. ugr.Cells["Check"].Activation = Activation.Disabled;
  1201. ugr.Appearance.BackColor = Color.WhiteSmoke;
  1202. }
  1203. }
  1204. /// <summary>
  1205. /// 批量绑定检化验结果
  1206. /// </summary>
  1207. private void bindCheckItems(DataTable dtsub)
  1208. {
  1209. ArrayList al = comm.getDtGroupBy_reAl(dtsub, "CHECKNO");
  1210. for (int i = 0; i < al.Count; )
  1211. {
  1212. if (al[i] == null)
  1213. {
  1214. al.RemoveAt(i);
  1215. }
  1216. else
  1217. {
  1218. i++;
  1219. }
  1220. }
  1221. if (al.Count == 0)
  1222. {
  1223. return;
  1224. }
  1225. CheckconsignBaseinfo cb = new CheckconsignBaseinfo();
  1226. cb.CheckNos = (string[])al.ToArray(typeof(string));
  1227. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.jhy.service.CheckconsignBaseinfo_jhyService", "doQuery_Baseinfo", new object[] { cb });
  1228. //DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.utils.service.UtilsService", "readData1", new object[] { cb });
  1229. if (dt == null || dt.Rows.Count <= 0)
  1230. {
  1231. return;
  1232. }
  1233. for (int i = 0; i < dtsub.Rows.Count; i++)
  1234. {
  1235. DataRow dr = dtsub.Rows[i];
  1236. foreach (DataRow dr1 in dt.Rows)
  1237. {
  1238. if (dr["CHECKNO"].ToString() == dr1["CHECKNO"].ToString())
  1239. {
  1240. dr["CHECKUSERNAME"] = dr1["JUDGENAME"];//判断人
  1241. dr["CHECKDATE"] = dr1["JUDGETIME"];//判断人
  1242. //判定结果
  1243. if (dr1["judgelevelcode"].ToString() == "" || dr1["judgelevelcode"].ToString() == "无")
  1244. {
  1245. if (dr1["judgelevelcode"].ToString() == "1")
  1246. {
  1247. dr["CheckStatu"] = "1";
  1248. }
  1249. else if (dr1["judgelevelcode"].ToString() == "0")
  1250. {
  1251. dr["CheckStatu"] = "0";
  1252. }
  1253. else
  1254. {
  1255. dr["CheckStatu"] = "1";
  1256. }
  1257. }
  1258. break;
  1259. }
  1260. }
  1261. }
  1262. }
  1263. /// <summary>
  1264. /// 批量绑定计量结果
  1265. /// </summary>
  1266. private void bindJLItems()
  1267. {
  1268. if (ultraTabControl1.SelectedTab.Key != "2")
  1269. {
  1270. MessageUtil.ShowTips("请选择计量入库界面");
  1271. return;
  1272. }
  1273. double numJLQTY = 0;
  1274. double numTARE = 0;//皮重
  1275. double numGROSS = 0; //毛重
  1276. string strSUTTLETIME = "";//计量时间
  1277. String strMaterielRule = "";
  1278. double numKZQTY = 0;
  1279. double b_txt_deduction2 = 0.00;//扣机铁
  1280. double b_txt_deduction3 = 0.00;//扣超长
  1281. double b_txt_deduction4 = 0.00;//扣轻薄
  1282. ArrayList al = comm.getDtGroupBy_reAl(DTsubDJL, "DELIVERYSUBLINESQE");
  1283. for (int i = 0; i < al.Count; )
  1284. {
  1285. if (al[i] == null)
  1286. {
  1287. al.RemoveAt(i);
  1288. }
  1289. else
  1290. {
  1291. i++;
  1292. }
  1293. }
  1294. if (al.Count == 0)
  1295. {
  1296. return;
  1297. }
  1298. Hashtable ht = new Hashtable();
  1299. ht.Add("ordernos", (string[])al.ToArray(typeof(string)));
  1300. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.utils.service.UtilsService", "readData", new object[] { ht });
  1301. if (dt == null || dt.Rows.Count <= 0)
  1302. {
  1303. return;
  1304. }
  1305. foreach (UltraGridRow row in GridSubDJL.Rows)
  1306. {
  1307. String strDELIVERYSUBLINESQE = row.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim();
  1308. foreach (DataRow dr1 in dt.Rows)
  1309. {
  1310. if (strDELIVERYSUBLINESQE == dr1["orderno"].ToString())
  1311. {
  1312. Double.TryParse(dr1["suttle"].ToString().Trim(), out numJLQTY);
  1313. Double.TryParse(dr1["deduction"].ToString().Trim(), out numKZQTY);
  1314. Double.TryParse(dr1["deduction2"].ToString().Trim(), out b_txt_deduction2);//扣机铁
  1315. Double.TryParse(dr1["deduction3"].ToString().Trim(), out b_txt_deduction3);//扣超长
  1316. Double.TryParse(dr1["deduction4"].ToString().Trim(), out b_txt_deduction4);//扣轻薄
  1317. Double.TryParse(dr1["TARE"].ToString().Trim(), out numTARE);//皮重
  1318. Double.TryParse(dr1["GROSS"].ToString().Trim(), out numGROSS);//毛重
  1319. string strmatchid = dr1["matchid"].ToString().Trim();//绑单号
  1320. strMaterielRule = dr1["materielRule"].ToString().Trim();//废钢料型
  1321. strSUTTLETIME = dr1["SUTTLETIME"].ToString().Trim();//计量时间
  1322. row.Cells["JLQTY"].Value = numJLQTY;//净重
  1323. row.Cells["KZQTY"].Value = numKZQTY;//净扣杂
  1324. row.Cells["deduction2"].Value = b_txt_deduction2;//扣机铁
  1325. row.Cells["deduction3"].Value = b_txt_deduction3;//扣超长
  1326. row.Cells["deduction4"].Value = b_txt_deduction4;//扣轻薄
  1327. row.Cells["TARE"].Value = numTARE;//皮重
  1328. row.Cells["GROSS"].Value = numGROSS;//毛重
  1329. row.Cells["SUTTLETIME"].Value = strSUTTLETIME;//计量时间
  1330. row.Cells["CheckResult"].Value = strMaterielRule;//废钢料型
  1331. row.Cells["matchid"].Value = strmatchid;//绑单号
  1332. }
  1333. }
  1334. }
  1335. GridSubDJL.UpdateData();
  1336. }
  1337. /// <summary>
  1338. /// 计算非计量入库量
  1339. /// </summary>
  1340. /// <param name="ugr"></param>
  1341. /// <param name="tips">1:修改采购,2修改库存</param>
  1342. private void getInNum(UltraGridRow ugr,String strTips)
  1343. {
  1344. if (ugr == null)
  1345. { return; }
  1346. double b_SHIPQTY = 0;//收货量
  1347. double b_ReceivedQty = 0;//入库量_实绩
  1348. double b_InNum = 0;//入库量_编制
  1349. double b_weightQty = 0;//库存数量
  1350. double b_ITEMUOMCONEFFICIENT = 0;
  1351. double.TryParse(ugr.Cells["SHIPQTY"].Value.ToString(), out b_SHIPQTY);//收获量
  1352. double.TryParse(ugr.Cells["INNUM"].Value.ToString(), out b_InNum);//入库量_编制
  1353. double.TryParse(ugr.Cells["RECEIVEDQTY"].Value.ToString(), out b_ReceivedQty);//入库量_实绩
  1354. double.TryParse(ugr.Cells["weightQty"].Value.ToString(), out b_weightQty);//库存数量
  1355. double.TryParse(ugr.Cells["ITEMUOMCONEFFICIENT"].Value.ToString(), out b_ITEMUOMCONEFFICIENT);//转换系数
  1356. double b_NumException = 0;//待入库量
  1357. if (ultraTabControl1.SelectedTab.Key != "3")
  1358. {
  1359. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//库存数量可输
  1360. {
  1361. //if (strTips == "2")
  1362. //{
  1363. // b_InNum = Math.Round(b_weightQty * b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1364. // b_NumException = b_SHIPQTY - b_weightQty;
  1365. // if (ugr.Cells["CheckStatu"].Value.ToString() == "0")//不合格
  1366. // {
  1367. // ugr.Cells["InNum"].Value = 0;
  1368. // ugr.Cells["weightQty"].Value = 0;
  1369. // //ugr.Cells["numException"].Value = Math.Round(b_SHIPQTY, 3, System.MidpointRounding.AwayFromZero);
  1370. // }
  1371. // else
  1372. // {
  1373. // ugr.Cells["InNum"].Value = b_InNum;
  1374. // //ugr.Cells["numException"].Value = b_NumException;
  1375. // }
  1376. //}
  1377. //else
  1378. //{
  1379. // b_weightQty = Math.Round(b_InNum / b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1380. // //b_NumException = b_SHIPQTY - b_weightQty;
  1381. // if (ugr.Cells["CheckStatu"].Value.ToString() == "0")//不合格
  1382. // {
  1383. // ugr.Cells["InNum"].Value = 0;
  1384. // ugr.Cells["weightQty"].Value = 0;
  1385. // // ugr.Cells["numException"].Value = Math.Round(b_SHIPQTY, 3, System.MidpointRounding.AwayFromZero);
  1386. // }
  1387. // else
  1388. // {
  1389. // ugr.Cells["weightQty"].Value = b_weightQty;
  1390. // // ugr.Cells["numException"].Value = b_NumException;
  1391. // }
  1392. //}
  1393. b_ITEMUOMCONEFFICIENT = Math.Round(b_InNum / b_weightQty, 12, System.MidpointRounding.AwayFromZero);
  1394. if (ugr.Cells["CheckStatu"].Value.ToString() == "0")//不合格
  1395. {
  1396. ugr.Cells["ITEMUOMCONEFFICIENT"].Value = 0;
  1397. }
  1398. else
  1399. {
  1400. ugr.Cells["ITEMUOMCONEFFICIENT"].Value = b_ITEMUOMCONEFFICIENT;
  1401. }
  1402. }
  1403. else
  1404. {
  1405. if (strTips == "2")//改库存量
  1406. {
  1407. //乘转换系数
  1408. b_InNum = Math.Round(b_weightQty / b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1409. // b_NumException = b_SHIPQTY - b_InNum;
  1410. if (ugr.Cells["CheckStatu"].Value.ToString() == "0")//不合格
  1411. {
  1412. ugr.Cells["InNum"].Value = 0;
  1413. ugr.Cells["weightQty"].Value = 0;
  1414. // ugr.Cells["numException"].Value = b_SHIPQTY;
  1415. }
  1416. else
  1417. {
  1418. ugr.Cells["InNum"].Value = b_InNum;
  1419. // ugr.Cells["numException"].Value = b_NumException;
  1420. }
  1421. }
  1422. else//该采购量
  1423. {
  1424. //乘转换系数
  1425. b_weightQty = Math.Round(b_InNum * b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1426. // b_NumException = b_SHIPQTY - b_InNum;
  1427. if (ugr.Cells["CheckStatu"].Value.ToString() == "0")//不合格
  1428. {
  1429. ugr.Cells["InNum"].Value = 0;
  1430. ugr.Cells["weightQty"].Value = 0;
  1431. // ugr.Cells["numException"].Value = b_SHIPQTY;
  1432. }
  1433. else
  1434. {
  1435. ugr.Cells["weightQty"].Value = b_weightQty;
  1436. // ugr.Cells["numException"].Value = b_NumException;
  1437. }
  1438. }
  1439. }
  1440. double bUNITWEIGHT = 0;//每袋重量
  1441. double bPACKAGEQTY = 0;//包装数量
  1442. double.TryParse(ugr.Cells["PACKAGEQTY"].Value.ToString().Trim(), out bPACKAGEQTY);
  1443. if (bPACKAGEQTY != 0)
  1444. {
  1445. bUNITWEIGHT = Math.Round(b_weightQty / bPACKAGEQTY, 3);
  1446. }
  1447. ugr.Cells["UNITWEIGHT"].Value = bUNITWEIGHT;
  1448. }
  1449. else
  1450. {
  1451. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//库存数量可输
  1452. {
  1453. b_InNum = Math.Round(b_ReceivedQty * b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1454. ugr.Cells["weightQty"].Value = b_ReceivedQty;
  1455. ugr.Cells["RECEIVEDQTY"].Value = b_InNum;
  1456. }
  1457. else
  1458. {
  1459. b_weightQty = Math.Round(b_ReceivedQty * b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1460. ugr.Cells["weightQty"].Value = b_weightQty;
  1461. }
  1462. }
  1463. }
  1464. /// <summary>
  1465. /// 计算计量之后的量
  1466. /// </summary>
  1467. /// <returns></returns>
  1468. private void getJlInNum(UltraGridRow ugr)
  1469. {
  1470. if (ugr == null)
  1471. { return; }
  1472. double b_JL_QTY = 0.00;
  1473. double b_KZ_QTY = 0.00;
  1474. double b_ITEMUOMCONEFFICIENT = 0;
  1475. double b_txt_deduction2 = 0.00;
  1476. double b_txt_deduction3 = 0.00;
  1477. double b_txt_deduction4 = 0.00;
  1478. double.TryParse(ugr.Cells["JLQTY"].Value.ToString(), out b_JL_QTY);//计量结果
  1479. double.TryParse(ugr.Cells["KZQTY"].Value.ToString(), out b_KZ_QTY);//扣杂量
  1480. double.TryParse(ugr.Cells["ITEMUOMCONEFFICIENT"].Value.ToString(), out b_ITEMUOMCONEFFICIENT);//转换系数
  1481. double.TryParse(ugr.Cells["deduction2"].Value.ToString(), out b_txt_deduction2);//扣杂量
  1482. double.TryParse(ugr.Cells["deduction3"].Value.ToString(), out b_txt_deduction3);//扣杂量
  1483. double.TryParse(ugr.Cells["deduction4"].Value.ToString(), out b_txt_deduction4);//扣杂量
  1484. double b_REC_QTY = 0.00;//可入库量..自动计算
  1485. double b_weightQty = 0;//库存数量
  1486. //b_REC_QTY = b_JL_QTY - b_KZ_QTY - b_txt_deduction2 - b_txt_deduction3 - b_txt_deduction4;//可入库量..自动计算
  1487. b_REC_QTY = b_JL_QTY - b_txt_deduction2 - b_txt_deduction3 - b_txt_deduction4;//可入库量..自动计算
  1488. //乘转换系数
  1489. if (ugr.Cells["CheckStatu"].Value.ToString() == "0")
  1490. {
  1491. ugr.Cells["InNum"].Value = 0;
  1492. ugr.Cells["weightQty"].Value = 0;
  1493. // ugr.Cells["numException"].Value = Math.Round(b_REC_QTY, 3, System.MidpointRounding.AwayFromZero);
  1494. }
  1495. else
  1496. {
  1497. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//库存数量可输
  1498. {
  1499. ugr.Cells["InNum"].Value = Math.Round(b_REC_QTY * b_ITEMUOMCONEFFICIENT, 3, System.MidpointRounding.AwayFromZero);
  1500. ugr.Cells["weightQty"].Value = b_REC_QTY;
  1501. }
  1502. else
  1503. {
  1504. b_weightQty = Math.Round(b_REC_QTY * b_ITEMUOMCONEFFICIENT, 3);
  1505. ugr.Cells["InNum"].Value = Math.Round(b_REC_QTY, 3, System.MidpointRounding.AwayFromZero);
  1506. ugr.Cells["weightQty"].Value = b_weightQty;
  1507. }
  1508. }
  1509. double bUNITWEIGHT = 0;//每袋重量
  1510. double bPACKAGEQTY = 0;//包装数量
  1511. double.TryParse(ugr.Cells["PACKAGEQTY"].Value.ToString().Trim(), out bPACKAGEQTY);
  1512. if (bPACKAGEQTY != 0)
  1513. {
  1514. bUNITWEIGHT = Math.Round(b_weightQty / bPACKAGEQTY, 3);
  1515. }
  1516. ugr.Cells["UNITWEIGHT"].Value = bUNITWEIGHT;
  1517. }
  1518. /// <summary>
  1519. /// 获取CMB
  1520. /// </summary>
  1521. /// <returns></returns>
  1522. private UltraComboEditor getNewUltraComboEditor()
  1523. {
  1524. UltraComboEditor cmb = new UltraComboEditor();
  1525. cmb.DropDownStyle = DropDownStyle.DropDownList;
  1526. cmb.Visible = false;
  1527. this.Controls.Add(cmb);
  1528. return cmb;
  1529. }
  1530. /// <summary>
  1531. /// 入库操作
  1532. /// </summary>
  1533. /// <param name="strTips">1:待检入库 2:正式入库</param>
  1534. private void instock(String strTips)
  1535. {
  1536. try
  1537. {
  1538. Hashtable htAttr = new Hashtable();
  1539. if (strTips != "1" && strTips != "2")
  1540. {
  1541. MessageUtil.ShowTips("入库类型参数错误 1:待检入库,2:正式入库");
  1542. return;
  1543. }
  1544. int tips = Int32.Parse(strTips);
  1545. UltraGrid ug = null;
  1546. DataTable dt_forUsePlan = new DataTable();
  1547. if (ultraTabControl1.SelectedTab.Key == "2")//计量
  1548. {
  1549. ug = GridSubDJL;
  1550. ug.UpdateData();
  1551. dt_forUsePlan = DTsubDJL;
  1552. }
  1553. else if (ultraTabControl1.SelectedTab.Key == "1")
  1554. {
  1555. ug = GridSubDNoJL;
  1556. ug.UpdateData();
  1557. dt_forUsePlan = DTsubDNoJL;
  1558. }
  1559. else
  1560. {
  1561. MessageUtil.ShowTips("请选择待入库数据");
  1562. return;
  1563. }
  1564. ArrayList al_CkInBillEntity = new ArrayList();//入库单表
  1565. ArrayList al_PurCkInbillPositionEntity = new ArrayList();//入库单储位明细表
  1566. ArrayList al_CkStorageEntity = new ArrayList();//库存
  1567. ArrayList al_CkStoragePosEntity = new ArrayList();//库存储位
  1568. ArrayList al_ExcDeliverySubC = new ArrayList();//送货单行
  1569. ArrayList al_ExcDeliveryException = new ArrayList();//送货单行---正式入库记录
  1570. Hashtable htusePlan = null;//领用单表---正式入库记录
  1571. foreach (UltraGridRow ugr in ug.Rows)
  1572. {
  1573. if (ugr.Hidden || !(bool)ugr.Cells["Check"].Value)
  1574. { continue; }
  1575. String strSubSqe = ugr.Cells["DELIVERYSUBLINESQE"].Value.ToString().Trim();
  1576. if (String.IsNullOrEmpty(strSubSqe))
  1577. {
  1578. MessageUtil.ShowTips("送货单行号为空");
  1579. return;
  1580. }
  1581. ExcDeliverySubC subCOld = new ExcDeliverySubC();
  1582. ExcDeliverySubM subMOld = new ExcDeliverySubM();
  1583. if (String.IsNullOrEmpty(strCoustomInfo))
  1584. {
  1585. if (testDeliveryStatus(strSubSqe, tips, ref subCOld, ref subMOld) == false)
  1586. {
  1587. return;
  1588. }
  1589. }
  1590. else
  1591. {
  1592. if (testDeliveryStatus(strSubSqe, 4, ref subCOld, ref subMOld) == false)
  1593. {
  1594. return;
  1595. }
  1596. }
  1597. //入库数据
  1598. double b_QTY = 0; //编制量
  1599. double b_INNUM = 0; //入库量
  1600. double b_ReceivedQty = 0; //收货量
  1601. double b_ITEMUOMCONEFFICIENT = 0;//转化系数
  1602. double b_KZQTY = 0;//扣杂
  1603. if (ugr.Cells["ITEMUOM"].Value.ToString() == "基吨")//入库量
  1604. {
  1605. double.TryParse(ugr.Cells["weightqTY"].Value.ToString().Trim(), out b_INNUM);
  1606. }
  1607. else
  1608. {
  1609. double.TryParse(ugr.Cells["INNUM"].Value.ToString().Trim(), out b_INNUM);
  1610. }
  1611. double.TryParse(ugr.Cells["KZQTY"].Value.ToString().Trim(), out b_KZQTY);//扣杂量
  1612. double.TryParse(ugr.Cells["SHIPQTY"].Value.ToString().Trim(), out b_ReceivedQty);//接收量
  1613. double.TryParse(ugr.Cells["ITEMUOMCONEFFICIENT"].Value.ToString().Trim(), out b_ITEMUOMCONEFFICIENT);//转换系数
  1614. double.TryParse(ugr.Cells["QTY"].Value.ToString().Trim(), out b_QTY);//编制量
  1615. //入库储位
  1616. String strInvPhysic = ugr.Cells["DELETEUSERID"].Value.ToString().Trim();
  1617. string strINVPOS = ugr.Cells["INVPOS"].Value.ToString().Trim();//入库储位
  1618. //待处置数据
  1619. String strRemarkException = ugr.Cells["RemarkException"].Value.ToString().Trim();//处置意见
  1620. string strInvPosException = ugr.Cells["InvPosException"].Value.ToString().Trim();//待处置储位
  1621. double b_non_Standard = 0;//待处置量
  1622. double.TryParse(ugr.Cells["numException"].Value.ToString().Trim(), out b_non_Standard);
  1623. //包装数据
  1624. double bUNITWEIGHT = 0;//每袋重量
  1625. double bPACKAGEQTY = 0;//包装数量
  1626. double.TryParse(ugr.Cells["PACKAGEQTY"].Value.ToString().Trim(), out bPACKAGEQTY);
  1627. if (bPACKAGEQTY != 0)
  1628. {
  1629. bUNITWEIGHT = Math.Round(b_INNUM / bPACKAGEQTY, 3);
  1630. }
  1631. String strPackUnit = ugr.Cells["PACKAGEUNIT"].Value.ToString().Trim();
  1632. //计量数据
  1633. double dbJLQty = ugr.Cells["JLQTY"].Value.ToString().Trim() == "" ? 0 : double.Parse(ugr.Cells["JLQTY"].Value.ToString());//净重
  1634. double dbDeduction2 = ugr.Cells["Deduction2"].Value.ToString().Trim() == "" ? 0 : double.Parse(ugr.Cells["Deduction2"].Value.ToString());//扣机铁
  1635. double dbDeduction3 = ugr.Cells["Deduction3"].Value.ToString().Trim() == "" ? 0 : double.Parse(ugr.Cells["Deduction3"].Value.ToString());//扣超长
  1636. double dbDeduction4 = ugr.Cells["Deduction4"].Value.ToString().Trim() == "" ? 0 : double.Parse(ugr.Cells["Deduction4"].Value.ToString());//扣轻薄
  1637. double dbGROSS = ugr.Cells["GROSS"].Value.ToString().Trim() == "" ? 0 : double.Parse(ugr.Cells["GROSS"].Value.ToString());//毛重
  1638. double dbTARE = ugr.Cells["TARE"].Value.ToString().Trim() == "" ? 0 : double.Parse(ugr.Cells["TARE"].Value.ToString());//皮重
  1639. string strmatchid = "";
  1640. string strCheckResult = "";
  1641. if (ultraTabControl1.SelectedTab.Key == "2")
  1642. {
  1643. strmatchid=ugr.Cells["matchid"].Value.ToString().Trim();//绑单号
  1644. if (String.IsNullOrEmpty(strmatchid))
  1645. {
  1646. MessageUtil.ShowTips("送货单行:" + subCOld.DeliverySubLineSqe + "未绑定磅单,无法入库");
  1647. return;
  1648. }
  1649. strCheckResult = ugr.Cells["CheckResult"].Value.ToString().Trim();//料型
  1650. if (!String.IsNullOrEmpty(strCheckResult))
  1651. {
  1652. String keys=strCheckResult + subCOld.ItemCode;
  1653. if (htAttr.ContainsKey(keys))
  1654. {
  1655. strCheckResult = (String)htAttr[keys];
  1656. }
  1657. else
  1658. {
  1659. PurClassMatAttrEntity MatAttr = new PurClassMatAttrEntity();
  1660. MatAttr.AttrName = strCheckResult;
  1661. MatAttr.ItemCode = subCOld.ItemCode;
  1662. List<PurClassMatAttrEntity> listMatAttr = this.GetJsonService().execute<List<PurClassMatAttrEntity>>("com.hnshituo.pur.configure.service.ClassMatAttrService", "find", new object[] { MatAttr,0,0});
  1663. if (listMatAttr != null && listMatAttr.Count >= 1)//此物料判定合格
  1664. {
  1665. htAttr.Add(keys, listMatAttr[0].AttrCode);
  1666. strCheckResult = listMatAttr[0].AttrCode;
  1667. }
  1668. else
  1669. {
  1670. MessageUtil.ShowTips("未发现物料:" + subCOld.ItemName + "存在料型:" + strCheckResult+",或请维护!");
  1671. return;
  1672. }
  1673. }
  1674. }
  1675. }
  1676. //质检数据
  1677. String strCheckStatu = ugr.Cells["CheckStatu"].Value.ToString().Trim();
  1678. String strCheckUser = String.IsNullOrEmpty(ugr.Cells["CHECKUSERNAME"].Value.ToString().Trim()) ? UserInfo.GetUserName() : ugr.Cells["CHECKUSERNAME"].Value.ToString().Trim();//判断人
  1679. DateTime DtCheck = DateTime.Now;
  1680. if (!String.IsNullOrEmpty(ugr.Cells["CHECKDATE"].Value.ToString().Trim()))
  1681. {
  1682. DtCheck=DateTime.Parse(ugr.Cells["CHECKDATE"].Value.ToString().Trim());
  1683. }
  1684. //校验数据--待检
  1685. if (tips == 1)
  1686. {
  1687. //入库量大于0
  1688. if (b_INNUM <= 0)
  1689. {
  1690. MessageUtil.ShowTips("请填写送货单行:" + strSubSqe + "的入库量");
  1691. return;
  1692. }
  1693. if (strINVPOS.Trim() == "")
  1694. {
  1695. MessageUtil.ShowTips("请填写送货单行:" + strSubSqe + "的入库储位");
  1696. return;
  1697. }
  1698. if (b_non_Standard > 0)
  1699. {
  1700. MessageUtil.ShowTips("送货单行:" + strSubSqe + "有待处置数量,不能做待检入库操作");
  1701. return;
  1702. }
  1703. }
  1704. //校验数据--正式
  1705. else
  1706. {
  1707. if (b_INNUM > 0 && strINVPOS.Trim() == "")
  1708. {
  1709. MessageUtil.ShowTips("请填写送货单行:" + strSubSqe + "的入库储位");
  1710. return;
  1711. }
  1712. if (strCheckStatu == "0")
  1713. {
  1714. if (b_non_Standard <= 0)
  1715. {
  1716. MessageUtil.ShowTips("送货单行:" + strSubSqe + "的综合判定结果为不合格,待处置量必须>0");
  1717. return;
  1718. }
  1719. }
  1720. else
  1721. {
  1722. if (b_INNUM <= 0)
  1723. {
  1724. MessageUtil.ShowTips("送货单行:" + strSubSqe + "的综合判定结果为合格,入库量必须>0");
  1725. return;
  1726. }
  1727. }
  1728. //交货量差控制
  1729. if (testDeliveryQtyCtrl(subMOld, subCOld,b_INNUM) == false)
  1730. {
  1731. return;
  1732. }
  1733. }
  1734. //包装单位校验
  1735. if (!String.IsNullOrEmpty(strPackUnit))
  1736. {
  1737. if (strPackUnit.Length >= 35)
  1738. {
  1739. MessageUtil.ShowTips("送货单行:" + strSubSqe + "的包装单位字符串多长,请控制在10个字以内");
  1740. return;
  1741. }
  1742. if (bPACKAGEQTY <= 0 || bUNITWEIGHT<=0)
  1743. {
  1744. MessageUtil.ShowTips("送货单行:" + strSubSqe + "的包装单位信息不全,包装数量和包装重量不能为空");
  1745. return;
  1746. }
  1747. }
  1748. if (bPACKAGEQTY>0)
  1749. {
  1750. if (String.IsNullOrEmpty(strPackUnit))
  1751. {
  1752. MessageUtil.ShowTips("送货单行:" + strSubSqe + "的包装单位信息不全,请填写包装单位");
  1753. return;
  1754. }
  1755. }
  1756. PurCkInBillEntity CkInBillEntity = new PurCkInBillEntity();//入库单表
  1757. CkStorage CkStorageEntity = new CkStorage();
  1758. PurCkStoragePosEntity CkStoragePosEntity = new PurCkStoragePosEntity();//库存收发存表
  1759. PurCkInbillPositionEntity CkInbillPositionEntity = new PurCkInbillPositionEntity();//入库单储位明细表
  1760. ExcDeliveryException edecp = new ExcDeliveryException();//异常处理信息
  1761. ExcDeliverySubC EdC = new ExcDeliverySubC();
  1762. EdC.Status = "5";//正式入库
  1763. if (tips == 1)
  1764. {
  1765. EdC.Status = "4";//待检入库
  1766. }
  1767. //正式入库---待处置入库
  1768. if (b_non_Standard > 0 && tips == 2)
  1769. {
  1770. //异常单
  1771. edecp.DeliverySubLineSqe = strSubSqe;
  1772. edecp.DeliverySubId = subMOld.DeliverySubId;
  1773. edecp.Qty = b_non_Standard;
  1774. if (String.IsNullOrEmpty(strRemarkException))
  1775. {
  1776. MessageUtil.ShowTips("送货单行:" + strSubSqe + "有待处置量,待处置原因或意见不能为空");
  1777. return;
  1778. }
  1779. if (String.IsNullOrEmpty(strInvPosException))
  1780. {
  1781. MessageUtil.ShowTips("送货单行:" + strSubSqe + "有待处置量,待检储位不能为空");
  1782. return;
  1783. }
  1784. edecp.Remark = strRemarkException;
  1785. edecp.InvPos = strInvPosException;
  1786. edecp.InvPhysic = strInvPhysic;
  1787. edecp.Ecptype = "3";
  1788. edecp.Validflag = "1";
  1789. edecp.Status = "1";
  1790. edecp.CreateName = UserInfo.GetUserName();
  1791. edecp.CreateUserid = UserInfo.GetUserID();
  1792. edecp.CreateTime = System.DateTime.Now;
  1793. al_ExcDeliveryException.Add(edecp);
  1794. }
  1795. if (strCheckStatu != "0")//合格入库
  1796. {
  1797. CkInBillEntity.RefeId = strSubSqe;//送货通知单行号
  1798. CkInBillEntity.RefType = "2";
  1799. CkInBillEntity.InvPhysic = strInvPhysic;
  1800. CkInBillEntity.ItemUomConefficient = b_ITEMUOMCONEFFICIENT;
  1801. CkInBillEntity.Status = tips == 2 ? "1" : "0";// 状态
  1802. CkInBillEntity.InNum = b_INNUM;//入库量
  1803. //读取计量结果
  1804. CkInBillEntity.JlQty = dbJLQty; //净重
  1805. CkInBillEntity.KzQty = b_KZQTY;//扣杂
  1806. CkInBillEntity.Deduction2 = dbDeduction2;//扣机铁
  1807. CkInBillEntity.Deduction3 = dbDeduction3;//扣超长
  1808. CkInBillEntity.Deduction4 = dbDeduction4;//扣轻薄
  1809. CkInBillEntity.Gross = dbGROSS;//毛重
  1810. CkInBillEntity.Tare = dbTARE;//皮重
  1811. CkInBillEntity.Matchid = strmatchid;
  1812. if (ugr.Cells["Suttletime"].Value.ToString().Trim() != "")
  1813. {
  1814. CkInBillEntity.Suttletime= DateTime.Parse(ugr.Cells["Suttletime"].Value.ToString().Trim());
  1815. }
  1816. CkInBillEntity.Result = strCheckResult;
  1817. //包装
  1818. if (!String.IsNullOrEmpty(strPackUnit))
  1819. {
  1820. CkInBillEntity.PackageQty = bPACKAGEQTY + "";//包装数
  1821. CkInBillEntity.UnitWeight = bUNITWEIGHT;//每包重量
  1822. CkInBillEntity.PackageUnit = strPackUnit + "";//包装单位
  1823. }
  1824. CkInBillEntity.CreateUserid = UserInfo.GetUserID();
  1825. CkInBillEntity.CreateName = UserInfo.GetUserName();
  1826. CkInBillEntity.CreateTime = DateTime.Now;
  1827. CkInBillEntity.InstockDate = DateTime.Now;
  1828. CkInBillEntity.OperateOrgId = UserInfo.GetDeptid();
  1829. CkInBillEntity.OperateOrgName = UserInfo.GetDepartment();
  1830. CkInBillEntity.UpdateName = null;
  1831. CkInBillEntity.UpdateUserid = null;
  1832. CkInBillEntity.UpdateTime = null;
  1833. //检化验数据
  1834. CkInBillEntity.Result = strCheckResult;//检验结果(料型或者等级)
  1835. CkInBillEntity.CheckResult = strCheckStatu;//判定是否合格
  1836. CkInBillEntity.CheckDate = DtCheck;//判定时间
  1837. CkInBillEntity.CheckUserName = strCheckUser;//判断人
  1838. CkInBillEntity.RecId = ugr.Cells["REC_ID"].Value.ToString(); // 说明
  1839. al_CkInBillEntity.Add(CkInBillEntity);
  1840. //-----------------------------------------------------------------------------库存单表
  1841. CkStorageEntity.RefeId = CkInBillEntity.RefeId;
  1842. CkStorageEntity.Status = tips == 2 ? "1" : "0";
  1843. CkStorageEntity.UseStatus = tips == 2 ? "1" : "0";
  1844. CkStorageEntity.Validflag = "1";
  1845. CkStorageEntity.InvPhysic = strInvPhysic;
  1846. CkStorageEntity.InvQty = b_INNUM;//库存数量
  1847. CkStorageEntity.InvOrigQty = b_INNUM;//期初库存数量
  1848. if (!String.IsNullOrEmpty(strPackUnit))
  1849. {
  1850. CkStorageEntity.PackageQty = bPACKAGEQTY + "";//包装数
  1851. CkStorageEntity.UnitWeight = bUNITWEIGHT + "";//每包重量
  1852. CkStorageEntity.PackageUnit = strPackUnit + "";//包装单位
  1853. }
  1854. CkStorageEntity.CreateUserid = UserInfo.GetUserID();
  1855. CkStorageEntity.CreateName = UserInfo.GetUserName();
  1856. CkStorageEntity.OperateOrgId = UserInfo.GetDeptid();
  1857. CkStorageEntity.OperateOrgName = UserInfo.GetDepartment();
  1858. CkStorageEntity.UpdateName = null;
  1859. CkStorageEntity.UpdateUserid = null;
  1860. CkStorageEntity.UpdateTime = null;
  1861. CkStorageEntity.ItemUomConefficient = b_ITEMUOMCONEFFICIENT;
  1862. //检化验数据
  1863. CkStorageEntity.Result = "";//检验结果(料型或者等级)
  1864. CkStorageEntity.CheckResult = strCheckStatu;//判定是否合格
  1865. CkStorageEntity.CheckDate = DtCheck;//判定时间
  1866. CkStorageEntity.CheckUsername = strCheckUser;//判断人
  1867. al_CkStorageEntity.Add(CkStorageEntity);
  1868. //-----------------------------------------------------------------------------------------------------------入库单储位明细表
  1869. CkInbillPositionEntity.InStockNo = CkInBillEntity.RefeId;// ultraGrid5.ActiveRow.Cells["DELIVERYSUBLINESQE"].Value.ToString();//入库单号记录送货通知单行号,方便在后台获取入库单号
  1870. CkInbillPositionEntity.Validflag = "1";
  1871. CkInbillPositionEntity.InNum = b_INNUM;//入库量
  1872. CkInbillPositionEntity.InvPhysic = CkInBillEntity.InvPhysic;//物理库区
  1873. CkInbillPositionEntity.InvPos = strINVPOS; ;//库位
  1874. CkInbillPositionEntity.CreateUserid = UserInfo.GetUserID();
  1875. if (!String.IsNullOrEmpty(strPackUnit))
  1876. {
  1877. CkInbillPositionEntity.PackageQty = bPACKAGEQTY + "";//包装数量
  1878. }
  1879. CkInbillPositionEntity.CreateUserid = UserInfo.GetUserID();
  1880. CkInbillPositionEntity.CreateName = UserInfo.GetUserName();
  1881. al_PurCkInbillPositionEntity.Add(CkInbillPositionEntity);//添加入库单储位明细表
  1882. //---------------------------------------------------------------------------------------------------------------------------------库存储位明细表
  1883. CkStoragePosEntity.InvId = CkInBillEntity.RefeId;//库存记录号记录发货通知单行号,方便在后台获取入库单号
  1884. CkStoragePosEntity.Validflag = "1";
  1885. CkStoragePosEntity.InvOrigQty = b_INNUM;//期初入库量
  1886. CkStoragePosEntity.InvQty = b_INNUM;//库存数量
  1887. CkStoragePosEntity.InvPhysic = CkInBillEntity.InvPhysic; //txt_INV_PHYSIC.Value == null ? null : txt_INV_PHYSIC.Value.ToString();//物理库区
  1888. CkStoragePosEntity.InvPos = strINVPOS;//ugr_5.Cells["INVPOS"].Value.ToString();//库位
  1889. if (!String.IsNullOrEmpty(strPackUnit))
  1890. {
  1891. CkStoragePosEntity.PackageQty = bPACKAGEQTY + "";//包装数量
  1892. CkStoragePosEntity.PackageUnit = strPackUnit + "";//包装单位
  1893. CkStoragePosEntity.UnitWeight = bUNITWEIGHT;//每袋重量
  1894. }
  1895. CkStoragePosEntity.InvQtyWeight = b_INNUM * b_ITEMUOMCONEFFICIENT;
  1896. CkStoragePosEntity.CreateUserid = UserInfo.GetUserID();
  1897. CkStoragePosEntity.CreateName = UserInfo.GetUserName();
  1898. al_CkStoragePosEntity.Add(CkStoragePosEntity);//添加库存单储位明细表
  1899. }
  1900. //送货单
  1901. EdC.DeliverySubLineSqe = strSubSqe;//送货通知单行号
  1902. //获取计量信息
  1903. EdC.JlQty = dbJLQty;//计量结果
  1904. EdC.ReceivedQty = b_INNUM;//实际入库量
  1905. EdC.KzQty = b_KZQTY;//扣杂量
  1906. EdC.ItemUomConefficient = b_ITEMUOMCONEFFICIENT;
  1907. EdC.Deduction2 = dbDeduction2;//扣机铁
  1908. EdC.Deduction3 = dbDeduction3;//扣超长
  1909. EdC.Deduction4 = dbDeduction4;//扣轻薄
  1910. EdC.Matchid = strmatchid;
  1911. EdC.PackageQty = bPACKAGEQTY + "";//包装数量
  1912. EdC.PackageUnit = strPackUnit + "";//包装单位
  1913. EdC.UnitWeight = bUNITWEIGHT;//每袋重量
  1914. EdC.RkName = UserInfo.GetUserName();
  1915. EdC.RkUserid = UserInfo.GetUserID();
  1916. EdC.RkTime = DateTime.Now;
  1917. al_ExcDeliverySubC.Add(EdC);
  1918. }
  1919. if (al_ExcDeliverySubC.Count < 1)
  1920. {
  1921. MessageUtil.ShowTips("请勾选送货单");
  1922. return;
  1923. }
  1924. CoreResult crt = new CoreResult();
  1925. if (tips == 1)
  1926. {
  1927. if (MessageUtil.ShowYesNoAndQuestion("确定待检入库?") != DialogResult.Yes)
  1928. {
  1929. return;
  1930. }
  1931. crt = this.GetJsonService().execute<CoreResult>("com.hnshituo.pur.ck.service.ExcDeliverySubMService", "doWaitInstock", new object[] { al_ExcDeliverySubC, al_CkInBillEntity, al_PurCkInbillPositionEntity, al_CkStorageEntity, al_CkStoragePosEntity,strCoustomInfo });
  1932. }
  1933. else if (tips == 2)
  1934. {
  1935. frmPopSetCkInBillOutNum frm = new frmPopSetCkInBillOutNum(this.ob, dt_forUsePlan, al_ExcDeliverySubC);
  1936. frm.ShowDialog();
  1937. htusePlan = frm.ht;
  1938. if (frm.strTips == "0")
  1939. {
  1940. return;
  1941. }
  1942. else
  1943. {
  1944. if (frm.strTips == "1")
  1945. {
  1946. if (MessageUtil.ShowYesNoAndQuestion("确定正式入库? 若存在异常单数量,请及时输入异常单数量并及时通知业务员进行异常单处置。") != DialogResult.Yes)
  1947. {
  1948. return;
  1949. }
  1950. }
  1951. }
  1952. crt = this.GetJsonService().execute<CoreResult>("com.hnshituo.pur.ck.service.CkInBillService", "doInstock", new object[] { al_CkInBillEntity, al_PurCkInbillPositionEntity, al_CkStorageEntity, al_CkStoragePosEntity, al_ExcDeliverySubC, al_ExcDeliveryException, htusePlan, strCoustomInfo});
  1953. }
  1954. else
  1955. {
  1956. MessageUtil.ShowTips("入库类型参数错误 1:待检入库,2:正式入库");
  1957. return;
  1958. }
  1959. if (crt.Resultcode != 0)
  1960. {
  1961. MessageUtil.ShowTips("操作失败 " + crt.Resultmsg);
  1962. return;
  1963. }
  1964. MessageUtil.ShowTips("操作成功");
  1965. Get_PUR_EXC_DELIVERY_M("");
  1966. }
  1967. catch (System.Exception ex)
  1968. {
  1969. MessageUtil.ShowTips("操作失败:" + ex.Message);
  1970. }
  1971. }
  1972. #endregion
  1973. #region 交货量差控制
  1974. private bool testDeliveryQtyCtrl(ExcDeliverySubM subMOld, ExcDeliverySubC subCOld, double b_INNUM)
  1975. {
  1976. String strSupp = subMOld.SuppCode;
  1977. String strItemCode = subCOld.ItemCode;
  1978. Entity_SuppGrade grade = new Entity_SuppGrade();
  1979. grade.SuppCode = strSupp;
  1980. grade.ItemCode = strItemCode;
  1981. double qty = (double)subCOld.ShipQty;
  1982. List<Entity_SuppGrade> listGrade = this.execute<List<Entity_SuppGrade>>("com.hnshituo.pur.configure.service.SuppGradeService", "find", new object[] { grade,0,0 });//添加操作
  1983. if (listGrade != null && listGrade.Count >= 1)
  1984. {
  1985. grade = listGrade[0];
  1986. if (grade.DelvryRangeTpe == "0")
  1987. {
  1988. return true;
  1989. }
  1990. else if (grade.DelvryRangeTpe == "1")//绝对值
  1991. {
  1992. double maxQty = (double)grade.DelvryRangeMax + qty;
  1993. double minQty = qty - (double)grade.DelvryRangeMin;
  1994. if (b_INNUM > maxQty)
  1995. {
  1996. MessageUtil.ShowTips("供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的入库量已经超出交货量上限为:" + maxQty);
  1997. return false;
  1998. }
  1999. if (b_INNUM < minQty)
  2000. {
  2001. MessageUtil.ShowTips("供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的入库量已经超出交货量下限为:" + minQty);
  2002. return false;
  2003. }
  2004. }
  2005. else if (grade.DelvryRangeTpe == "2")//百分比
  2006. {
  2007. double maxQty = Math.Round(qty * (1 + (double)grade.DelvryRangeMax / 100), 3);
  2008. double minQty = Math.Round(qty * (1 - (double)grade.DelvryRangeMax / 100), 3);
  2009. if (b_INNUM > maxQty)
  2010. {
  2011. MessageUtil.ShowTips("供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的入库量已经超出交货量上限为:" + maxQty);
  2012. return false;
  2013. }
  2014. if (b_INNUM < minQty)
  2015. {
  2016. MessageUtil.ShowTips("供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的入库量已经超出交货量下限为:" + minQty);
  2017. return false;
  2018. }
  2019. }
  2020. else if (grade.DelvryRangeTpe == "2") //不允许
  2021. {
  2022. if (b_INNUM != qty)
  2023. {
  2024. MessageUtil.ShowTips("供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的入库量不允许有交货量差,入库量和和要求送货量必须一致");
  2025. return false;
  2026. }
  2027. }
  2028. else
  2029. {
  2030. MessageUtil.ShowTips("请维护供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的交货量差方式");
  2031. return false;
  2032. }
  2033. }
  2034. else
  2035. {
  2036. MessageUtil.ShowTips("请维护供应商:" + subMOld.SuppName + "的物料:" + subCOld.ItemName + "的交货量差");
  2037. return false;
  2038. }
  2039. return true;
  2040. }
  2041. #endregion
  2042. #region 公共函数
  2043. /// <summary>
  2044. /// 设置可编辑的单元格及其颜色
  2045. /// </summary>
  2046. /// <param name="ugr"></param>
  2047. /// <param name="columnName"></param>
  2048. private void setCellColor(UltraGridRow ugr, Color color, params string[] columnName)
  2049. {
  2050. for (int i = 0; i < columnName.Length; i++)
  2051. {
  2052. columnName[i] = columnName[i].ToUpper();
  2053. }
  2054. foreach (UltraGridCell ugc in ugr.Cells)
  2055. {
  2056. if (columnName.Contains(ugc.Column.Key.ToString().ToUpper()))
  2057. {
  2058. ugc.Appearance.BackColor = color;
  2059. ugc.Activation = Activation.AllowEdit;
  2060. }
  2061. else
  2062. {
  2063. ugc.Appearance.BackColor = ugr.Cells["status"].Appearance.BackColor;
  2064. ugc.Activation = Activation.ActivateOnly;
  2065. }
  2066. if (ugc.Column.Key.ToString().ToUpper() == "CHECK")
  2067. {
  2068. ugc.Appearance.BackColor = color;
  2069. ugc.Activation = Activation.AllowEdit;
  2070. }
  2071. }
  2072. }
  2073. /// <summary>
  2074. /// 设置单元格颜色,和在可编辑状态
  2075. /// </summary>
  2076. /// <param name="ugr"></param>
  2077. /// <param name="columnName"></param>
  2078. private void setColumnColor(UltraGrid ug, Color color, params string[] columnName)
  2079. {
  2080. return;
  2081. for (int i = 0; i < columnName.Length; i++)
  2082. {
  2083. columnName[i] = columnName[i].ToUpper();
  2084. }
  2085. foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
  2086. {
  2087. if (columnName.Contains(ugc.Key.ToString().ToUpper()))
  2088. {
  2089. ugc.CellAppearance.BackColor = color;
  2090. ugc.CellActivation = Activation.AllowEdit;
  2091. }
  2092. else
  2093. {
  2094. ugc.CellAppearance.BackColor = ug.DisplayLayout.Bands[0].Columns["status"].CellAppearance.BackColor;
  2095. ugc.CellActivation = Activation.ActivateOnly;
  2096. }
  2097. }
  2098. }
  2099. #endregion
  2100. #region 计量-检化验-异常单 行信息
  2101. /// <summary>
  2102. /// 查询非计量入库单质检、异常单信息
  2103. /// </summary>
  2104. /// <param name="sender"></param>
  2105. /// <param name="e"></param>
  2106. private void GridSubDNoJL_ClickCell(object sender, ClickCellEventArgs e)
  2107. {
  2108. UltraGridRow row = e.Cell.Row;
  2109. String subSqe = row.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim();
  2110. getDetailForSubD(subSqe, "1");
  2111. }
  2112. /// <summary>
  2113. /// 查询计量入库单质检、异常单信息
  2114. /// </summary>
  2115. /// <param name="sender"></param>
  2116. /// <param name="e"></param>
  2117. private void GridSubDJL_ClickCell(object sender, ClickCellEventArgs e)
  2118. {
  2119. }
  2120. /// <summary>
  2121. /// 查询实绩入库单质检、异常单信息
  2122. /// </summary>
  2123. /// <param name="sender"></param>
  2124. /// <param name="e"></param>
  2125. private void GridSubDSJ_ClickCell(object sender, ClickCellEventArgs e)
  2126. {
  2127. UltraGridRow row = e.Cell.Row;
  2128. String subSqe = row.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim();
  2129. getDetailForSubD(subSqe, "3");
  2130. }
  2131. /// <summary>
  2132. /// 获取计量-检化验-异常单数据
  2133. /// </summary>
  2134. /// <param name="subSqe"></param>
  2135. /// <param name="p"></param>
  2136. private void getDetailForSubD(String subSqe, string p)
  2137. {
  2138. if ("1" == p)
  2139. {
  2140. publicPms.clearOldData(panel_NOJL, new string[] { });
  2141. }
  2142. else if ("2" == p)
  2143. {
  2144. publicPms.clearOldData(panel_JL, new string[] { });
  2145. }
  2146. else if ("3" == p)
  2147. {
  2148. publicPms.clearOldData(panel_sj, new string[] { });
  2149. }
  2150. JHY.Clear();
  2151. JLdata.Clear();
  2152. exception.Clear();
  2153. if (!String.IsNullOrEmpty(subSqe))
  2154. {
  2155. ExcDeliverySubC subc = this.GetJsonService().execute<ExcDeliverySubC>("com.hnshituo.pur.ck.service.ExcDeliverySubCService", "findById", new object[] { subSqe });
  2156. if (subc == null)
  2157. {
  2158. return;
  2159. }
  2160. String strCheckNo = subc.CheckNo;
  2161. //查询检化验
  2162. if (!String.IsNullOrEmpty(strCheckNo))
  2163. {
  2164. CheckconsignBaseinfo baseinfo = new CheckconsignBaseinfo();
  2165. baseinfo.CheckNo = strCheckNo;
  2166. List<CheckconsignBaseinfo> Listbaseinfo = this.GetJsonService().execute<List<CheckconsignBaseinfo>>("com.hnshituo.pur.jhy.service.CheckconsignBaseinfo_jhyService", "doQuery_Baseinfo", new object[] { baseinfo });
  2167. if (Listbaseinfo != null && Listbaseinfo.Count >= 1)
  2168. {
  2169. baseinfo = Listbaseinfo[0];
  2170. if ("1" == p)
  2171. {
  2172. JHY_check_no_NOJL.Text = baseinfo.CheckNo;
  2173. JHY_CHECK_COUNT_NOJL.Text = baseinfo.CheckCount;
  2174. JHY_CONSIGN_DEPT_NOJL.Text = baseinfo.ConsignDept;
  2175. JHY_CONSIGN_NAME_NOJL.Text = baseinfo.ConsignName;
  2176. JHY_CONSIGN_TIME_NOJL.Value = baseinfo.ConsignTime;
  2177. JHY_IS_JUDGE_NOJL.Text = baseinfo.IsJudge;
  2178. JHY_JUDGE_LEVEL_NOJL.Text = baseinfo.JudgeLevel;
  2179. JHY_PRODUCT_STD_NOJL.Text = baseinfo.ProductStd;
  2180. }
  2181. else if ("2" == p)
  2182. {
  2183. JHY_check_no_JL.Text = baseinfo.CheckNo;
  2184. JHY_CHECK_COUNT_JL.Text = baseinfo.CheckCount;
  2185. JHY_CONSIGN_DEPT_JL.Text = baseinfo.ConsignDept;
  2186. JHY_CONSIGN_NAME_JL.Text = baseinfo.ConsignName;
  2187. JHY_CONSIGN_TIME_JL.Value = baseinfo.ConsignTime;
  2188. JHY_IS_JUDGE_JL.Text = baseinfo.IsJudge;
  2189. JHY_JUDGE_LEVEL_JL.Text = baseinfo.JudgeLevel;
  2190. JHY_PRODUCT_STD_JL.Text = baseinfo.ProductStd;
  2191. }
  2192. else if ("3" == p)
  2193. {
  2194. JHY_check_no_SJ.Text = baseinfo.CheckNo;
  2195. JHY_CHECK_COUNT_SJ.Text = baseinfo.CheckCount;
  2196. JHY_CONSIGN_DEPT_SJ.Text = baseinfo.ConsignDept;
  2197. JHY_CONSIGN_NAME_SJ.Text = baseinfo.ConsignName;
  2198. JHY_CONSIGN_TIME_SJ.Value = baseinfo.ConsignTime;
  2199. JHY_IS_JUDGE_SJ.Text = baseinfo.IsJudge;
  2200. JHY_JUDGE_LEVEL_SJ.Text = baseinfo.JudgeLevel;
  2201. JHY_PRODUCT_STD_SJ.Text = baseinfo.ProductStd;
  2202. }
  2203. //加载行表
  2204. CheckconsignDetail detail = new CheckconsignDetail();
  2205. detail.CheckNo = strCheckNo;
  2206. DataTable dt = this.execute<DataTable>("com.hnshituo.pur.jhy.service.CheckconsignDetail_jhyService", "doQuery_Detail", new object[] { detail, 0, 0 });
  2207. GridHelper.CopyDataToDatatable(dt, DTJHY, true);
  2208. }
  2209. }
  2210. //加载异常单
  2211. ExcDeliveryException hand = new ExcDeliveryException();
  2212. hand.DeliverySubLineSqe = subSqe;
  2213. hand.Validflag = "1";
  2214. DataTable dte = this.execute<DataTable>("com.hnshituo.pur.ck.service.ExcDeliveryExceptionService", "doQuery_Exceptions", new object[] { hand });
  2215. GridHelper.CopyDataToDatatable(dte, DTHandle, true);
  2216. if ("1" == p)
  2217. {
  2218. GridHelper.RefreshAndAutoSize(GridJHY_NOJL);
  2219. GridHelper.RefreshAndAutoSize(GridHandleNoJL);
  2220. }
  2221. else if ("2" == p)
  2222. {
  2223. //加载计量数据
  2224. QSubSqe_JL.Text = subSqe;
  2225. DataTable dtjl = getJLData("");
  2226. GridHelper.CopyDataToDatatable(dtjl, DTJL, true);
  2227. GridHelper.RefreshAndAutoSize(GridJHY_JL);
  2228. GridHelper.RefreshAndAutoSize(GridHandleJL);
  2229. GridHelper.RefreshAndAutoSize(GridJL_JL);
  2230. }
  2231. else if ("3" == p)
  2232. {
  2233. if (!String.IsNullOrEmpty(subc.Matchid))
  2234. {
  2235. //加载计量数据
  2236. DataTable dtjl = getJLData(subc.Matchid);
  2237. if (dtjl != null && dtjl.Rows.Count> 0)
  2238. {
  2239. GridHelper.CopyDataToDatatable(dtjl, DTJL, true);
  2240. }
  2241. }
  2242. //加载入库数据
  2243. PurCkInBillEntity pcibEntity = new PurCkInBillEntity();
  2244. pcibEntity.RefeId = subSqe;
  2245. DataTable dtinbill = this.execute<DataTable>("com.hnshituo.pur.ck.service.CkInBillService", "GetCkInBill", new object[] { pcibEntity });
  2246. GridHelper.CopyDataToDatatable(dtinbill, DTinbill, true);
  2247. GridHelper.RefreshAndAutoSize(GridJHY_SJ);
  2248. GridHelper.RefreshAndAutoSize(GridHandleSJ);
  2249. GridHelper.RefreshAndAutoSize(GridJL_SJ);
  2250. GridHelper.RefreshAndAutoSize(GridInbill);
  2251. }
  2252. }
  2253. }
  2254. /// <summary>
  2255. /// 查询
  2256. /// </summary>
  2257. private DataTable getJLData(String strMatchId)
  2258. {
  2259. try
  2260. {
  2261. this.Cursor = Cursors.WaitCursor;//等待
  2262. Hashtable ht = new Hashtable();
  2263. if(String.IsNullOrEmpty(strMatchId))
  2264. {
  2265. ht.Add("materialcode", QitemCode_JL.Text.Trim());
  2266. ht.Add("materialname", QitemName_JL.Text.Trim());
  2267. ht.Add("sourcecode", QsuppCode_JL.Text.Trim());
  2268. ht.Add("sourcename", QSuppName_JL.Text);
  2269. if (ck_shutt_JL.Checked)
  2270. {
  2271. if (txt_shuttTimeStart_JL.Value != null)
  2272. {
  2273. ht.Add("suttletime", ((DateTime)txt_shuttTimeStart_JL.Value));//净重时间开始
  2274. }
  2275. if (txt_shuttTimeEnd_JL.Value != null)
  2276. {
  2277. ht.Add("taretime", ((DateTime)txt_shuttTimeEnd_JL.Value));//净重时间结束
  2278. }
  2279. }
  2280. ht.Add("matchid", Qmatchid_JL.Text.Trim());
  2281. ht.Add("carno", QCarNo_JL.Text.Trim());
  2282. ht.Add("orderno", QSubSqe_JL.Text.Trim());
  2283. }
  2284. else
  2285. {
  2286. ht.Add("matchid", strMatchId);
  2287. }
  2288. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.utils.service.UtilsService", "readData", new object[] { ht });
  2289. return dt;
  2290. }
  2291. catch (System.Exception e)
  2292. {
  2293. MessageUtil.ShowTips("加载计量数据异常:" + e.Message);
  2294. return null;
  2295. }
  2296. finally
  2297. {
  2298. this.Cursor = Cursors.Default;//鼠标状态恢复正常
  2299. }
  2300. }
  2301. #endregion
  2302. private void GridSubDJL_AfterRowActivate(object sender, System.EventArgs e)
  2303. {
  2304. if (GridSubDJL.ActiveRow == null)
  2305. return;
  2306. UltraGridRow row = GridSubDJL.ActiveRow;
  2307. String subSqe = row.GetCellValue("DELIVERYSUBLINESQE").ToString().Trim();
  2308. getDetailForSubD(subSqe, "2");
  2309. }
  2310. }
  2311. }