Packing_PackageCollection.cs 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159
  1. using LabelManager2;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.Threading;
  8. using System.Windows.Forms;
  9. using UAS_MES_NEW.DataOperate;
  10. using UAS_MES_NEW.Entity;
  11. using UAS_MES_NEW.PublicForm;
  12. using UAS_MES_NEW.PublicMethod;
  13. namespace UAS_MES_NEW.Packing
  14. {
  15. public partial class Packing_PackageCollection : Form
  16. {
  17. public BarTender.Application engine;
  18. DataHelper dh;
  19. DataTable dt;
  20. LogStringBuilder sql = new LogStringBuilder();
  21. AutoSizeFormClass asc = new AutoSizeFormClass();
  22. ApplicationClass lbl;
  23. Thread thread;
  24. Document doc;
  25. DataTable Dbfind;
  26. string ErrorMessage = "";
  27. string oMakeCode = "";
  28. string oMsID = "";
  29. string oMsStatus = "";
  30. string oOutBoxCode = "";
  31. decimal StandardQTY = 0;
  32. string LastSncode;
  33. string PR_CHECKCARTONW = "0";
  34. ModeBusTCPServer md;
  35. public Packing_PackageCollection()
  36. {
  37. InitializeComponent();
  38. }
  39. //创建打印进程
  40. private void NewPrint()
  41. {
  42. try
  43. {
  44. try
  45. {
  46. engine = new BarTender.Application();
  47. }
  48. catch
  49. {
  50. }
  51. try
  52. {
  53. lbl = new ApplicationClass();
  54. }
  55. catch { }
  56. }
  57. catch (Exception ex)
  58. {
  59. OperateResult.AppendText("未正确安装CodeSoft软件\n" + ex.Message, Color.Red);
  60. }
  61. }
  62. private void PackCollection_Load(object sender, EventArgs e)
  63. {
  64. // 杀死之前全部未关闭的进程
  65. Process[] processes = System.Diagnostics.Process.GetProcessesByName("lppa");
  66. Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("bartend");
  67. for (int i = 0; i < processes1.Length; i++)
  68. {
  69. processes1[i].Kill();
  70. }
  71. for (int i = 0; i < processes.Length; i++)
  72. {
  73. processes[i].Kill();
  74. }
  75. IP.Text = BaseUtil.GetCacheData("IP").ToString();
  76. Port.Text = BaseUtil.GetCacheData("IPPort").ToString();
  77. //设置DbFind的必须的数据
  78. PrintNum.Text = "1";
  79. thread = new Thread(NewPrint);
  80. SetLoadingWindow stw = new SetLoadingWindow(thread, "初始化打印程序");
  81. BaseUtil.SetFormCenter(stw);
  82. md = new ModeBusTCPServer();
  83. stw.ShowDialog();
  84. try
  85. {
  86. OutBoxLength.Text = BaseUtil.GetCacheData("OutBoxLength").ToString();
  87. PreFix.Text = BaseUtil.GetCacheData("PreFix").ToString();
  88. Remark_PreFix.Text = BaseUtil.GetCacheData("Remark_PreFix").ToString();
  89. }
  90. catch (Exception) { }
  91. sn_code.Focus();
  92. dh = SystemInf.dh;
  93. StepCount.StepCode = User.CurrentStepCode;
  94. StepCount.Source = User.UserSourceCode;
  95. StepCount.LineCode = User.UserLineCode;
  96. StepCount.Dh = dh;
  97. StepCount.Start();
  98. //if (dh.getFieldDataByCondition("employee", "em_type", "em_code = '" + User.UserCode + "'").ToString() != "admin")
  99. //{
  100. // pa_outboxcode.ReadOnly = true;
  101. //}
  102. asc.controllInitializeSize(this);
  103. }
  104. private void PackCollection_SizeChanged(object sender, EventArgs e)
  105. {
  106. asc.controlAutoSize(this);
  107. }
  108. private void PackCollection_Activated(object sender, EventArgs e)
  109. {
  110. pa_outboxcode.Focus();
  111. }
  112. //刷新表单的数据的数据
  113. private void LoadData()
  114. {
  115. //加载表单数据
  116. sql.Clear();
  117. /*sql.Append("select pr_code,nvl(pr_sendchecktype,'LineCode')pr_sendchecktype,pa_remark,pa_outboxcode,pa_prodcode,pa_salecode,pa_makecode,pa_sccode,nvl(pa_downstatus,0) pa_downstatus,pa_checkno,pa_status,pr_packrule,nvl(PR_CHECKCARTONW,'0') PR_CHECKCARTONW,pr_detail,pa_packageqty,nvl(pa_standardqty,0) pa_standardqty,nvl(pr_outboxinnerqty,0)pr_outboxinnerqty,pa_currentqty,pa_colorcode,pa_sku,pa_productcolor,pa_softversion,pa_upc,pa_location,pa_fba,pa_xm from package left join product on pa_prodcode=");
  118. sql.Append("pr_code where pa_outboxcode='" + pa_outboxcode.Text + "'");*/
  119. sql.Append($@"SELECT pr_code, nvl(pr_sendchecktype, 'LineCode') pr_sendchecktype, pa_remark, pa_outboxcode, pa_prodcode, pa_salecode, pa_makecode,
  120. pa_sccode, nvl(pa_downstatus, 0) pa_downstatus, pa_checkno, pa_status, pr_packrule, nvl(ma_checkcartonw, '0') pr_checkcartonw,
  121. nvl(ma_outboxinnerqty, 0) pr_outboxinnerqty, pa_packageqty, nvl(pa_standardqty, 0) pa_standardqty, pa_currentqty, pa_colorcode,
  122. pa_sku, pa_productcolor, pa_softversion, pa_upc, pa_location, pa_fba, pa_xm FROM package LEFT JOIN product ON pa_prodcode = pr_code
  123. LEFT JOIN make ON pa_makecode = ma_code WHERE pa_outboxcode = '{pa_outboxcode.Text }'");
  124. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  125. if (dt.Rows.Count > 0)
  126. {
  127. //记录该数据保证在修改不被允许的前提下能偶回复之前的值
  128. StandardQTY = decimal.Parse(dt.Rows[0]["pr_outboxinnerqty"].ToString());
  129. if (dt.Rows[0]["pa_salecode"].ToString() != "")
  130. {
  131. ms_salecode.Text = dt.Rows[0]["pa_salecode"].ToString();
  132. }
  133. BaseUtil.SetFormValue(this.Controls, dt);
  134. if (pa_standardqty.Text != "0")
  135. {
  136. pr_outboxinnerqty.Text = pa_standardqty.Text;
  137. }
  138. }
  139. else
  140. {
  141. pa_makecode.Text = "";
  142. }
  143. LoadCollectedNum();
  144. LoadCheckQTY();
  145. }
  146. private void LoadGridData()
  147. {
  148. //加载Grid数据
  149. dt = (DataTable)dh.ExecuteSql("select pa_outboxcode,pa_prodcode,pd_barcode,pd_innerqty,pd_makecode,pa_indate from packageDetail left join package on pa_id=pd_paid where pa_outboxcode='" + pa_outboxcode.Text + "'", "select");
  150. BaseUtil.FillDgvWithDataTable(PackageDetail, dt);
  151. if (dt.Rows.Count > 0)
  152. {
  153. string choose_pd_barcode = dt.Rows[0]["pd_barcode"].ToString();
  154. string choose_pd_makecode = dt.Rows[0]["pd_makecode"].ToString();
  155. //PR_CHECKCARTONW = dh.getFieldDataByCondition("craftdetail left join craft on cr_id=cd_crid left join makeserial on ms_craftcode =cr_code and cr_prodcode = ms_prodcode", "nvl(cd_ifweigh,'0') cd_ifweigh", "ms_sncode='" + choose_pd_barcode + "' and ms_makecode='" + choose_pd_makecode + "' and cd_stepcode = '" + User.CurrentStepCode + "'").ToString();
  156. }
  157. //更新界面的采集数量
  158. pa_currentqty.Text = dh.getFieldDataByCondition("package", "pa_currentqty", "pa_outboxcode='" + pa_outboxcode.Text + "'").ToString();
  159. }
  160. private void Print_Click(object sender, EventArgs e)
  161. {
  162. if (PrintLabel.Items.Count != 0)
  163. {
  164. if (dh.getFieldDataByCondition("package", "pa_status", "pa_outboxcode='" + pa_outboxcode.Text + "'").ToString() == "1")
  165. {
  166. dh.ExecuteSql("update package set pa_printcount=pa_printcount+1 where pa_outboxcode='" + pa_outboxcode.Text + "'", "update");
  167. //doc = lbl.Documents.Open(PrintLabel.Text);
  168. if (PrintLabel.Text.ToUpper().Contains(".BTW"))
  169. {
  170. if (Print.SinglePrint(Tag.ToString(), engine, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), PrintList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text), oMakeCode == "" ? pa_makecode.Text : oMakeCode, pr_code.Text, "卡通箱标", "0", out ErrorMessage))
  171. {
  172. OperateResult.AppendText(">>开始打印箱号" + pa_outboxcode.Text + "\n", Color.Black);
  173. }
  174. else
  175. {
  176. OperateResult.AppendText(ErrorMessage + "\n", Color.Red);
  177. }
  178. }
  179. else
  180. {
  181. if (Print.CodeSoft(Tag.ToString(), ref lbl, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), PrintList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text), oMakeCode == "" ? pa_makecode.Text : oMakeCode, pr_code.Text, "卡通箱标", "0", out ErrorMessage))
  182. {
  183. OperateResult.AppendText(">>开始打印箱号" + pa_outboxcode.Text + "\n", Color.Black);
  184. }
  185. else
  186. {
  187. OperateResult.AppendText(ErrorMessage + "\n", Color.Red);
  188. }
  189. }
  190. if (!AutoGenBoxCode.Checked)
  191. {
  192. pa_outboxcode.SelectAll();
  193. pa_outboxcode.Focus();
  194. }
  195. else
  196. {
  197. sn_code.Focus();
  198. sn_code.SelectAll();
  199. }
  200. }
  201. else OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "尚未封箱,请封箱后执行打印\n", Color.Red);
  202. }
  203. else OperateResult.AppendText(">>产品" + pr_code.Text + "未维护打印标签\n", Color.Red);
  204. }
  205. //加载工单信息和装箱明细信息
  206. private void pa_code_KeyDown(object sender, KeyEventArgs e)
  207. {
  208. try
  209. {
  210. if (e.KeyCode == Keys.Enter)
  211. {
  212. LoadData();
  213. LoadGridData();
  214. if (CheckOutBoxLength())
  215. {
  216. sn_code.Focus();
  217. }
  218. }
  219. }
  220. catch (Exception ex)
  221. {
  222. MessageBox.Show(ex.Message);
  223. }
  224. }
  225. //输入序列号的回车事件
  226. private void barcode_KeyDown(object sender, KeyEventArgs e)
  227. {
  228. //当用户输入回车键的时候
  229. if (e.KeyCode == Keys.Enter)
  230. {
  231. if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
  232. {
  233. dt = (DataTable)dh.ExecuteSql("select ms_status,ms_id,ms_makecode,ms_nextstepcode,ms_craftcode,ms_prodcode from makeserial where ms_sncode ='" + sn_code.Text + "' order by ms_id desc", "select");
  234. if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, sn_code.Text, User.UserCode, out oMakeCode, out oMsID, out ErrorMessage) || (dt.Rows.Count > 0 && dt.Rows[0]["ms_status"].ToString() == "2"))
  235. {
  236. if (oMsID == "" || oMsID == "null" || oMsID == "0")
  237. {
  238. oMsID = dt.Rows[0]["ms_id"].ToString();
  239. oMsStatus = dt.Rows[0]["ms_status"].ToString();
  240. oMakeCode = dt.Rows[0]["ms_makecode"].ToString();
  241. }
  242. //如果是已完工序列号验证装箱工序是否存在于途程中
  243. if (oMsStatus == "2")
  244. {
  245. string prodcode = dt.Rows[0]["ms_prodcode"].ToString();
  246. string craftcode = dt.Rows[0]["ms_craftcode"].ToString();
  247. string craftstepcode = dh.getFieldDataByCondition("craft left join craftdetail on cr_id =cd_crid", "(cd_stepcode)", "cr_prodcode='" + prodcode + "' and cr_code='" + craftcode + "' and cd_stepcode='" + User.CurrentStepCode + "'").ToString();
  248. if (craftstepcode == "")
  249. {
  250. OperateResult.AppendText("工序" + User.CurrentStepCode + "不在途程" + craftcode + "内,不允许采集\n", Color.Red);
  251. return;
  252. }
  253. }
  254. string nextstepcode = dh.getFieldDataByCondition("makeserial", "ms_nextstepcode", "ms_id='" + oMsID + "'").ToString();
  255. if (nextstepcode != "" && nextstepcode != User.CurrentStepCode)
  256. {
  257. OperateResult.AppendText("当前序列号下一道工序" + nextstepcode + ",当前资源不允许采集\n", Color.Red);
  258. if (md.IsOpen)
  259. {
  260. md.SendOrder("M502_ON");
  261. }
  262. return;
  263. }
  264. //PR_CHECKCARTONW = dh.getFieldDataByCondition("craftdetail left join craft on cr_id=cd_crid left join makeserial on ms_craftcode =cr_code and cr_prodcode = ms_prodcode", "nvl(cd_ifweigh,'0') cd_ifweigh", "ms_sncode='" + sn_code.Text + "' and ms_makecode='" + oMakeCode + "' and cd_stepcode = '" + User.CurrentStepCode + "'").ToString();
  265. //获取序列号信息
  266. sql.Clear();
  267. /*sql.Append("select nvl(ms_iostatus,0) ms_iostatus,nvl(ms_netcode,' ') ms_netcode,pa_salecode,ms_salecode,ms_outno,ms_makecode,ms_prodcode,nvl(pa_downstatus,0) pa_downstatus,pa_sccode,pa_checkno,pr_packrule,");
  268. sql.Append("nvl(pr_outboxinnerqty,0)pr_outboxinnerqty,nvl(pr_sendchecktype,'LineCode')pr_sendchecktype from makeserial left join product on ms_prodcode=pr_code left join packagedetail ");
  269. sql.Append("on pd_barcode=ms_sncode left join package on pa_id =pd_paid where ms_id='" + oMsID + "'");*/
  270. sql.Append($@"SELECT nvl(ms_iostatus, 0) ms_iostatus, nvl(ms_netcode, ' ') ms_netcode, pa_salecode, ms_salecode, ms_outno,
  271. ms_makecode, ms_prodcode, nvl(pa_downstatus, 0) pa_downstatus, pa_sccode, pa_checkno, pr_packrule,
  272. nvl(ma_outboxinnerqty, 0) pr_outboxinnerqty, nvl(pr_sendchecktype, 'LineCode') pr_sendchecktype
  273. FROM makeserial LEFT JOIN product ON ms_prodcode = pr_code LEFT JOIN packagedetail ON pd_barcode = ms_sncode
  274. LEFT JOIN package ON pa_id = pd_paid LEFT JOIN make ON ma_code = ms_makecode WHERE ms_id = '{oMsID}'");
  275. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  276. string ms_makecode = "";
  277. string ms_prodcode = "";
  278. string ms_iostatus = "";
  279. string ms_outno = "";
  280. string ms_salecode_text = "";
  281. string ms_netcode = "";
  282. if (dt.Rows.Count > 0)
  283. {
  284. StandardQTY = decimal.Parse(dt.Rows[0]["pr_outboxinnerqty"].ToString());
  285. ms_makecode = dt.Rows[0]["ms_makecode"].ToString();
  286. ms_prodcode = dt.Rows[0]["ms_prodcode"].ToString();
  287. ms_iostatus = dt.Rows[0]["ms_iostatus"].ToString();
  288. ms_netcode = dt.Rows[0]["ms_netcode"].ToString();
  289. ms_outno = dt.Rows[0]["ms_outno"].ToString();
  290. ms_salecode_text = dt.Rows[0]["ms_salecode"].ToString();
  291. if (locksalecode.Checked && ms_salecode.Text != "" && ms_salecode.Text != ms_salecode_text)
  292. {
  293. OperateResult.AppendText(">>序列号" + sn_code.Text + "所属订单号" + ms_salecode_text + "与界面订单号" + ms_salecode.Text + "不同,无法采集\n", Color.Red, sn_code);
  294. if (md.IsOpen)
  295. {
  296. md.SendOrder("M502_ON");
  297. }
  298. return;
  299. }
  300. //if (ms_netcode == " ")
  301. //{
  302. // OperateResult.AppendText(">>序列号" + sn_code.Text + "WIFIBOX为空,无法采集,请检查\n", Color.Red, sn_code);
  303. // if (md.IsOpen)
  304. // {
  305. // md.SendOrder("M502_ON");
  306. // }
  307. // return;
  308. //}
  309. //if (dh.getFieldDataByCondition("stepproduct left join makeserial on sp_mothercode = ms_prodcode and sp_craftcode = ms_craftcode", "count(*)", "ms_sncode = '"+ sn_code.Text + "'").ToString() != dh.getFieldDataByCondition("craftmaterial", "count(*)", "cm_sncode = '" + sn_code.Text + "' and cm_status = 0").ToString())
  310. //{
  311. // OperateResult.AppendText(">>序列号" + sn_code.Text + "上料信息不完整,无法采集,请检查\n", Color.Red, sn_code);
  312. // if (md.IsOpen)
  313. // {
  314. // md.SendOrder("M502_ON");
  315. // }
  316. // return;
  317. //}
  318. BaseUtil.SetFormValue(this.Controls, dt);
  319. }
  320. if (dt.Rows[0]["ms_outno"].ToString() != "")
  321. {
  322. OperateResult.AppendText(">>序列号" + sn_code.Text + "已被出货单" + dt.Rows[0]["ms_outno"].ToString() + "采集,不允许操作\n", Color.Red, sn_code);
  323. if (md.IsOpen)
  324. {
  325. md.SendOrder("M502_ON");
  326. }
  327. return;
  328. }
  329. if (dt.Rows[0]["ms_iostatus"].ToString() != "0")
  330. {
  331. OperateResult.AppendText(">>序列号" + sn_code.Text + "已入库不允许采集\n", Color.Red, sn_code);
  332. if (md.IsOpen)
  333. {
  334. md.SendOrder("M502_ON");
  335. }
  336. return;
  337. }
  338. //保证箱内容量不会被重置
  339. if (pa_standardqty.Text != "0" && pa_standardqty.Text != "")
  340. {
  341. pr_outboxinnerqty.Text = pa_standardqty.Text;
  342. }
  343. if (pa_outboxcode.Text == "")
  344. {
  345. string boxcode = dh.getFieldDataByCondition("makeserial", "ms_outboxcode", "ms_id='" + oMsID + "'").ToString();
  346. //序列号存在箱号的情况下获取所有的装箱数据
  347. if (boxcode != "")
  348. {
  349. pa_outboxcode.Text = boxcode;
  350. pa_makecode.Text = "";
  351. LoadGridData();
  352. }
  353. else
  354. {
  355. //如果勾选了自动生成箱号,在封箱或者首次
  356. if (AutoGenBoxCode.Checked && (pa_status.Text == "1" || pa_status.Text == "" || pa_status.Text == "0"))
  357. {
  358. string maxbox = dh.getFieldDataByCondition("package", "min(pa_outboxcode)", "pa_makecode='"+ms_makecode+ "' and PA_PACKAGEQTY<PA_STANDARDQTY").ToString();
  359. if (maxbox != "")
  360. {
  361. pa_outboxcode.Text = maxbox;
  362. }
  363. else {
  364. pa_outboxcode.Text = LogicHandler.GetOutBoxCode("PACKAGE", ms_makecode, pr_code.Text, User.UserCode);
  365. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "卡通箱采集", "卡通箱" + pa_outboxcode.Text + "自动生成", sn_code.Text, PreFix.Text + ":" + OutBoxLength.Text);
  366. }
  367. }
  368. }
  369. }
  370. if (pa_outboxcode.Text == "")
  371. {
  372. OperateResult.AppendText(">>箱号不能为空\n", Color.Red, sn_code);
  373. return;
  374. }
  375. //判断箱内总数必须大于0
  376. if (pr_outboxinnerqty.Text == "" || pr_outboxinnerqty.Text == "0")
  377. {
  378. OperateResult.AppendText(">>箱内容量必须大于0\n", Color.Red);
  379. return;
  380. }
  381. sql.Clear();
  382. sql.Append("select nvl(pa_iostatus,0)pa_iostatus,pa_outno,pa_mothercode,pa_type from package where pa_outboxcode='" + pa_outboxcode.Text + "'");
  383. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  384. string MotherBoxCode = "";
  385. if (dt.Rows.Count > 0)
  386. {
  387. if (dt.Rows[0]["pa_mothercode"].ToString() != "")
  388. {
  389. MotherBoxCode = dt.Rows[0]["pa_mothercode"].ToString();
  390. }
  391. if (dt.Rows[0]["pa_outno"].ToString() != "")
  392. {
  393. OperateResult.AppendText(">>卡通箱" + pa_outboxcode.Text + "已被出货单" + dt.Rows[0]["pa_outno"].ToString() + "采集,不允许操作\n", Color.Red, sn_code);
  394. if (md.IsOpen)
  395. {
  396. md.SendOrder("M502_ON");
  397. }
  398. return;
  399. }
  400. if (dt.Rows[0]["pa_iostatus"].ToString() != "0")
  401. {
  402. OperateResult.AppendText(">>卡通箱" + pa_outboxcode.Text + "处于入库状态,不允许操作\n", Color.Red, sn_code);
  403. if (md.IsOpen)
  404. {
  405. md.SendOrder("M502_ON");
  406. }
  407. return;
  408. }
  409. }
  410. //如果未勾选了取消录入
  411. if (!Cancel.Checked)
  412. {
  413. //判断序列号是否已经装箱
  414. string ms_outboxcode = dh.getFieldDataByCondition("makeserial", "ms_outboxcode", "ms_id='" + oMsID + "'").ToString();
  415. if (ms_outboxcode != "")
  416. {
  417. if (ms_outboxcode == pa_outboxcode.Text)
  418. {
  419. if (md.IsOpen)
  420. {
  421. md.SendOrder("M501_ON");
  422. }
  423. OperateResult.AppendText(">>序列号" + sn_code.Text + "已在本箱内\n", Color.Red, sn_code);
  424. }
  425. else
  426. {
  427. if (md.IsOpen)
  428. {
  429. md.SendOrder("M502_ON");
  430. }
  431. OperateResult.AppendText(">>序列号" + sn_code.Text + "已采集至箱" + ms_outboxcode + "\n", Color.Red, sn_code);
  432. }
  433. LoadData();
  434. }
  435. else
  436. {
  437. //满箱之后采集下一个之前自动清除内容,生成新的箱号
  438. if ((AutoGenBoxCode.Checked && pa_currentqty.Text != "" && pr_outboxinnerqty.Text == pa_currentqty.Text) || (AutoGenBoxCode.Checked && pa_status.Text == "1"))
  439. {
  440. pa_currentqty.Text = "";
  441. pa_outboxcode.Text = "";
  442. pa_status.Text = "0";
  443. BaseUtil.CleanDGVData(PackageDetail);
  444. pa_outboxcode.Text = LogicHandler.GetOutBoxCode("PACKAGE", ms_makecode, pr_code.Text, User.UserCode);
  445. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "卡通箱采集", "卡通箱" + pa_outboxcode.Text + "自动生成", sn_code.Text, PreFix.Text + ":" + OutBoxLength.Text);
  446. }
  447. if (!CheckOutBoxLength(ms_salecode_text))
  448. {
  449. return;
  450. }
  451. ////箱号不存在的情况
  452. if (LogicHandler.Packing(sn_code.Text, pa_outboxcode.Text, AutoGenBoxCode.Checked, "标准", User.UserSourceCode, User.UserCode, pr_outboxinnerqty.Text, Cancel.Checked, out oOutBoxCode, out ErrorMessage))
  453. {
  454. if (md.IsOpen)
  455. {
  456. md.SendOrder("M501_ON");
  457. }
  458. //提示正确返回时传递的信息
  459. if (ErrorMessage.Contains("AFTERSUCCESS"))
  460. OperateResult.AppendText(">>" + ErrorMessage + "\n");
  461. LastSncode = sn_code.Text;
  462. OperateResult.AppendText(">>序列号" + sn_code.Text + "采集成功!\n", Color.Green);
  463. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "卡通箱采集", "卡通箱" + pa_outboxcode.Text + "采集成功", sn_code.Text, "");
  464. //满箱更新状态为1
  465. LoadData();
  466. LoadGridData();
  467. LoadCheckQTY();
  468. dh.ExecuteSql("update packagedetail set pd_innerqty=(select pa_packageqty from package where pa_outboxcode='" + pa_outboxcode.Text + "') where pd_innerboxcode='" + pa_outboxcode.Text + "'", "update");
  469. if (MotherBoxCode != "")
  470. {
  471. dt = (DataTable)dh.ExecuteSql("select pa_mothercode,pa_type from package where pa_outboxcode='" + MotherBoxCode + "'", "select");
  472. //如果母箱号不为空,需要更新总数
  473. if (dt.Rows.Count > 0)
  474. {
  475. if (dt.Rows[0]["pa_type"].ToString() == "2")
  476. {
  477. string MotherCode2 = dt.Rows[0]["pa_mothercode"].ToString();
  478. //更新大箱数量
  479. dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
  480. //外层有栈板则更新栈板数量
  481. if (MotherCode2 != "")
  482. {
  483. dh.ExecuteSql("update packagedetail set pd_innerqty=(select sum(pd_innerqty) from packagedetail where pd_outboxcode='" + MotherBoxCode + "') where pd_innerboxcode='" + MotherBoxCode + "'", "update");
  484. dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherCode2 + "') where pa_outboxcode='" + MotherCode2 + "'", "update");
  485. }
  486. }
  487. if (dt.Rows[0]["pa_type"].ToString() == "3")
  488. {
  489. dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
  490. }
  491. }
  492. }
  493. //采集完后如果是第一个装的序列号,把序列号的NextStepCode赋值给箱号
  494. if (pa_currentqty.Text == "1")
  495. {
  496. dh.UpdateByCondition("package", "pa_nextstep='" + User.CurrentStepCode + "', PA_CURRENTSTEP = '" + User.CurrentStepCode + "'", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  497. }
  498. if (int.Parse(pa_currentqty.Text == "" ? "0" : pa_currentqty.Text) == int.Parse(pr_outboxinnerqty.Text))
  499. {
  500. dh.UpdateByCondition("package", "pa_status=1,pa_packageqty=pa_currentqty,pa_totalqty=pa_currentqty", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  501. OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "满箱采集完成,封箱成功\n", Color.Green);
  502. pa_status.Text = "1";
  503. pa_standardqty.Text = "";
  504. if (LogicHandler.OutBoxStepPass(pa_outboxcode.Text, ms_makecode, User.UserSourceCode, User.UserCode, "卡通箱:" + pa_outboxcode.Text + "整箱过站", "卡通箱整箱过站", out ErrorMessage))
  505. {
  506. dh.UpdateByCondition("package", "pa_nextstep='" + dh.getFieldDataByCondition("packagedetail left join makeserial on ms_sncode=pd_barcode and ms_makecode=pd_makecode", "max(ms_nextstepcode)", "pd_outboxcode='" + pa_outboxcode.Text + "'").ToString() + "', PA_CURRENTSTEP = '' ", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  507. }
  508. else
  509. {
  510. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
  511. }
  512. if (AutoPrint.Checked)
  513. Print_Click(new object(), new EventArgs());
  514. if (!CollecRemark.Checked)
  515. {
  516. if (!AutoGenBoxCode.Checked)
  517. {
  518. pa_outboxcode.SelectAll();
  519. pa_outboxcode.Focus();
  520. }
  521. else
  522. {
  523. sn_code.Focus();
  524. sn_code.SelectAll();
  525. }
  526. }
  527. else
  528. {
  529. pa_remark.SelectAll();
  530. pa_remark.Focus();
  531. }
  532. LoadCollectedNum();
  533. LoadCheckQTY();
  534. }
  535. sn_code.Clear();
  536. }
  537. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, sn_code);
  538. }
  539. }
  540. //勾选了取消箱号先验证箱号存不存在,存在的话移除掉,重新加载一次数据
  541. else
  542. {
  543. if (LogicHandler.Packing(sn_code.Text, pa_outboxcode.Text, AutoGenBoxCode.Checked, "标准", User.UserSourceCode, User.UserCode, pr_outboxinnerqty.Text, Cancel.Checked, out oOutBoxCode, out ErrorMessage))
  544. {
  545. dh.UpdateByCondition("makeserial", "ms_outboxcode=''", "ms_id='" + oMsID + "'");
  546. dh.ExecuteSql("update packagedetail set pd_innerqty=(select pa_packageqty from package where pa_outboxcode='" + pa_outboxcode.Text + "') where pd_innerboxcode='" + pa_outboxcode.Text + "'", "update");
  547. //如果母箱号不为空,需要更新总数
  548. if (MotherBoxCode != "")
  549. {
  550. DataTable dt = (DataTable)dh.ExecuteSql("select pa_mothercode,pa_type from package where pa_outboxcode='" + MotherBoxCode + "'", "select");
  551. if (dt.Rows.Count > 0)
  552. {
  553. if (dt.Rows[0]["pa_type"].ToString() == "2")
  554. {
  555. string MotherCode2 = dt.Rows[0]["pa_mothercode"].ToString();
  556. //更新大箱数量
  557. dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
  558. //外层有栈板则更新栈板数量
  559. if (MotherCode2 != "")
  560. {
  561. dh.ExecuteSql("update packagedetail set pd_innerqty=(select sum(pd_innerqty) from packagedetail where pd_outboxcode='" + MotherBoxCode + "') where pd_innerboxcode='" + MotherBoxCode + "'", "update");
  562. dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherCode2 + "') where pa_outboxcode='" + MotherCode2 + "'", "update");
  563. }
  564. }
  565. if (dt.Rows[0]["pa_type"].ToString() == "3")
  566. {
  567. dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
  568. }
  569. }
  570. }
  571. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "卡通箱采集", "卡通箱" + pa_outboxcode.Text + "取消采集成功", sn_code.Text, "");
  572. LoadGridData();
  573. pa_status.Text = "0";
  574. OperateResult.AppendText(">>已从该箱中移除序列号" + sn_code.Text + "\n", Color.Green, sn_code);
  575. }
  576. else
  577. {
  578. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, sn_code);
  579. if (md.IsOpen)
  580. {
  581. md.SendOrder("M502_ON");
  582. }
  583. }
  584. }
  585. }
  586. else
  587. {
  588. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, sn_code);
  589. if (md.IsOpen)
  590. {
  591. md.SendOrder("M502_ON");
  592. }
  593. }
  594. }
  595. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, sn_code);
  596. }
  597. }
  598. private void Clean_Click(object sender, EventArgs e)
  599. {
  600. OperateResult.Clear();
  601. }
  602. private void pr_code_TextChanged(object sender, EventArgs e)
  603. {
  604. LoadCheckQTY();
  605. dt = (DataTable)dh.ExecuteSql("select la_id,la_url,la_isdefault from label where la_prodcode='" + pr_code.Text + "' and la_templatetype='卡通箱标' and la_statuscode='AUDITED' order by la_isdefault", "select");
  606. PrintLabel.DataSource = dt;
  607. PrintLabel.DisplayMember = "la_url";
  608. PrintLabel.ValueMember = "la_id";
  609. }
  610. private void PackCollection_FormClosing(object sender, FormClosingEventArgs e)
  611. {
  612. //if (engine != null)
  613. // engine.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
  614. dh.Dispose();
  615. }
  616. private void Packing_Click(object sender, EventArgs e)
  617. {
  618. if (dh.CheckExist("package", "pa_outboxcode='" + pa_outboxcode.Text + "' and nvl(pa_status,0)=0"))
  619. {
  620. string Seal = MessageBox.Show(this.ParentForm, "是否确认封箱?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
  621. if (Seal == "Yes")
  622. {
  623. OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "采集完成,手动封箱成功\n", Color.Green);
  624. dh.UpdateByCondition("package", "pa_status=1,pa_totalqty=pa_currentqty,pa_packageqty=pa_currentqty", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  625. pa_status.Text = "1";
  626. pa_standardqty.Text = "";
  627. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, pa_makecode.Text, User.UserLineCode, User.UserSourceCode, "装箱采集", "卡通箱" + pa_outboxcode.Text + "封箱成功", pa_outboxcode.Text, "");
  628. if (!CollecRemark.Checked)
  629. {
  630. if (!AutoGenBoxCode.Checked)
  631. {
  632. pa_outboxcode.SelectAll();
  633. pa_outboxcode.Focus();
  634. }
  635. else
  636. {
  637. sn_code.Focus();
  638. sn_code.SelectAll();
  639. }
  640. }
  641. else
  642. {
  643. pa_remark.SelectAll();
  644. pa_remark.Focus();
  645. }
  646. string ms_makecode = dh.getFieldDataByCondition("packagedetail", "pd_makecode", "pd_outboxcode = '" + pa_outboxcode.Text + "'").ToString();
  647. if (LogicHandler.OutBoxStepPass(pa_outboxcode.Text, ms_makecode, User.UserSourceCode, User.UserCode, "卡通箱:" + pa_outboxcode.Text + "整箱过站", "卡通箱整箱过站", out ErrorMessage))
  648. {
  649. dh.UpdateByCondition("package", "pa_nextstep='" + dh.getFieldDataByCondition("packagedetail left join makeserial on ms_sncode=pd_barcode and ms_makecode=pd_makecode", "max(ms_nextstepcode)", "pd_outboxcode='" + pa_outboxcode.Text + "'").ToString() + "', PA_CURRENTSTEP = '' ", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  650. }
  651. else
  652. {
  653. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
  654. }
  655. LoadCheckQTY();
  656. }
  657. }
  658. else OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "错误或者已封箱\n", Color.Red);
  659. }
  660. private void SendCheck_Click(object sender, EventArgs e)
  661. {
  662. if (dh.getFieldDataByCondition("package", "pa_status", "pa_outboxcode='" + pa_outboxcode.Text + "'").ToString() == "1")
  663. {
  664. DataTable dt = (DataTable)dh.ExecuteSql("select wm_concat(pa_outboxcode) pa_outboxcode from package where pa_checkno='" + ob_checkno.Text + "' and pa_status=0 ", "select");
  665. if (dt.Rows[0][0].ToString() != "")
  666. {
  667. OperateResult.AppendText(">>批次" + ob_checkno.Text + "存在箱号" + dt.Rows[0][0].ToString() + "未封箱,请先进行封箱\n", Color.Red);
  668. return;
  669. }
  670. sql.Clear();
  671. sql.Append("update oqcbatch set ob_status='UNCHECK',ob_breakingdate=sysdate where ob_checkno ='" + ob_checkno.Text + "'");
  672. dh.ExecuteSql(sql.GetString(), "select");
  673. ob_nowcheckqty.Text = "";
  674. ob_batchqty.Text = "";
  675. ob_nowcheckqty.ForeColor = Color.Black;
  676. SendCheck.Enabled = false;
  677. OperateResult.AppendText(">>批次" + ob_checkno.Text + "送检成功\n", Color.Green);
  678. LogicHandler.InsertMakeProcess(LastSncode, oMakeCode, User.UserSourceCode, "手动送检", "手动送检成功", User.UserCode);
  679. //记录操作日志
  680. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, pa_makecode.Text, User.UserLineCode, User.UserSourceCode, "手动送检", "手动送检成功", "", ob_checkno.Text);
  681. ob_checkno.Text = "";
  682. }
  683. else OperateResult.AppendText(">>必须封箱才能送检\n", Color.Red);
  684. }
  685. bool AutoCut;
  686. private void LoadCheckQTY()
  687. {
  688. sql.Clear();
  689. string condition = "";
  690. int nowcheckqty = int.Parse(ob_nowcheckqty.Text == "" ? "0" : ob_nowcheckqty.Text);
  691. int batchqty = int.Parse(ob_batchqty.Text == "" ? "0" : ob_batchqty.Text);
  692. if (nowcheckqty + 1 == batchqty && AutoCut)
  693. {
  694. condition = "and ob_status='UNCHECK' and ob_checkno='" + ob_checkno.Text + "'";
  695. }
  696. else
  697. {
  698. condition = "and ob_status='ENTERING' ";
  699. }
  700. if (pr_sendchecktype.Text == "SaleCode")
  701. {
  702. condition += " and ob_salecode='" + ms_salecode.Text + "'";
  703. }
  704. sql.Append("select ob_batchqty,ob_nowcheckqty,ob_checkno from oqcbatch where ");
  705. sql.Append("ob_linecode='" + User.UserLineCode + "' and ob_prodcode='" + pr_code.Text + "' and ");
  706. sql.Append("ob_stepcode='" + User.CurrentStepCode + "' " + condition);
  707. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  708. if (dt.Rows.Count > 0)
  709. {
  710. ob_batchqty.Text = dt.Rows[0]["ob_batchqty"].ToString();
  711. ob_nowcheckqty.Text = dt.Rows[0]["ob_nowcheckqty"].ToString();
  712. ob_checkno.Text = dt.Rows[0]["ob_checkno"].ToString();
  713. nowcheckqty = int.Parse(ob_nowcheckqty.Text == "" ? "0" : ob_nowcheckqty.Text);
  714. batchqty = int.Parse(ob_batchqty.Text == "" ? "0" : ob_batchqty.Text);
  715. if (nowcheckqty >= batchqty)
  716. {
  717. ob_nowcheckqty.ForeColor = Color.Red;
  718. OperateResult.AppendText(">>当前采集数量已达到送检数量\n", Color.Red);
  719. if (AutoCut)
  720. {
  721. OperateResult.AppendText(">>批次" + ob_checkno.Text + "自动断批\n", Color.Green);
  722. }
  723. }
  724. }
  725. else
  726. {
  727. ob_batchqty.Text = "";
  728. ob_nowcheckqty.Text = "";
  729. ob_checkno.Text = "";
  730. SendCheck.Enabled = false;
  731. }
  732. if (ob_batchqty.Text != "" && PR_CHECKCARTONW == "0")
  733. {
  734. SendCheck.Enabled = true;
  735. }
  736. else
  737. {
  738. SendCheck.Enabled = false;
  739. }
  740. }
  741. private void ob_checkno_TextChanged(object sender, EventArgs e)
  742. {
  743. if (ob_checkno.Text != "")
  744. {
  745. string Cut = dh.getFieldDataByCondition("product left join oqcbatch on ob_prodcode=pr_code", "pr_ifautocutcheckno", "ob_checkno='" + ob_checkno.Text + "'").ToString();
  746. if (Cut == "" || Cut == "0")
  747. AutoCut = false;
  748. else
  749. AutoCut = true;
  750. SendCheck.Enabled = true;
  751. }
  752. }
  753. private void PrintLabel_SelectedValueChanged(object sender, EventArgs e)
  754. {
  755. if (PrintLabel.SelectedValue != null && PrintLabel.SelectedValue.ToString() != "System.Data.DataRowView")
  756. {
  757. string PrintNums = dh.getFieldDataByCondition("label", "la_printnos", "la_id='" + PrintLabel.SelectedValue.ToString() + "'").ToString();
  758. PrintNum.Text = (PrintNums == "" ? "1" : PrintNums);
  759. }
  760. }
  761. private void DeleteAll_Click(object sender, EventArgs e)
  762. {
  763. if (pa_outboxcode.Text == "")
  764. {
  765. OperateResult.AppendText(">>箱号不能为空\n", Color.Red);
  766. return;
  767. }
  768. string Delete = MessageBox.Show(this.ParentForm, "是否确认拆箱?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
  769. if (Delete == "Yes")
  770. {
  771. DataTable dt = (DataTable)dh.ExecuteSql("select nvl(pa_iostatus,0)pa_iostatus,pa_outno,pa_status,pa_checkno,ob_status,pa_mothercode,nvl(pa_downstatus,0)pa_downstatus from package left join oqcbatch on pa_checkno=ob_checkno where pa_outboxcode='" + pa_outboxcode.Text + "'", "select");
  772. if (dt.Rows.Count > 0)
  773. {
  774. if (dt.Rows[0]["pa_outno"].ToString() != "")
  775. {
  776. OperateResult.AppendText(">>卡通箱" + pa_outboxcode.Text + "已被出货单" + dt.Rows[0]["pa_outno"].ToString() + "采集,不允许操作\n", Color.Red);
  777. return;
  778. }
  779. if (dt.Rows[0]["pa_iostatus"].ToString() != "0")
  780. {
  781. OperateResult.AppendText(">>卡通箱" + pa_outboxcode.Text + "处于入库状态,不允许操作\n", Color.Red);
  782. return;
  783. }
  784. if (dt.Rows[0]["pa_status"].ToString() != "1")
  785. {
  786. OperateResult.AppendText(">>卡通箱" + pa_outboxcode.Text + "未封箱,不允许操作\n", Color.Red);
  787. return;
  788. }
  789. if (dt.Rows[0]["pa_mothercode"].ToString() == "")
  790. {
  791. if (dt.Rows[0]["pa_downstatus"].ToString() == "0")
  792. {
  793. string ob_status = dt.Rows[0]["ob_status"].ToString();
  794. string pa_checkno = dt.Rows[0]["pa_checkno"].ToString();
  795. ////不存在抽检批次或者还未检验可以拆解
  796. //if (ob_status == "" || ob_status == "ENTERING" || ob_status == "UNCHECK")
  797. //{
  798. sql.Clear();
  799. sql.Append("select pd_makecode,count(1) num from packagedetail left join makeserial ");
  800. sql.Append("on ms_sncode=pd_barcode and ms_makecode=pd_makecode where pd_outboxcode='" + pa_outboxcode.Text + "' group by pd_makecode");
  801. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  802. List<string> SQLS1 = new List<string>();
  803. for (int i = 0; i < dt.Rows.Count; i++)
  804. {
  805. string ma_code = dt.Rows[i]["pd_makecode"].ToString();
  806. string num = dt.Rows[i]["num"].ToString();
  807. // SQLS1.Add("delete from makeprocess where mp_sncode in (select ms_sncode from makeserial where ms_outboxcode='" + pa_outboxcode.Text + "' and ms_makecode='" + ma_code + "') and mp_makecode='" + ma_code + "' and mp_stepcode='" + User.CurrentStepCode + "'");
  808. // SQLS1.Add("delete from steppassed where sp_sncode in (select ms_sncode from makeserial where ms_outboxcode='" + pa_outboxcode.Text + "' and ms_makecode='" + ma_code + "') and sp_makecode='" + ma_code + "' and sp_stepcode='" + User.CurrentStepCode + "'");
  809. SQLS1.Add("update makecraftdetail set mcd_inqty=mcd_inqty-" + num + ",mcd_outqty=mcd_outqty-" + num + ",mcd_okqty=mcd_okqty-" + num + " where mcd_macode='" + ma_code + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
  810. //扣减已完工数
  811. SQLS1.Add("update make set ma_madeqty=ma_madeqty-(select count(1) from makeserial where ms_outboxcode='" + pa_outboxcode.Text + "' and ms_makecode='" + ma_code + "' and ms_status=2) where ma_code='" + ma_code + "'");
  812. }
  813. if (pa_checkno != "")
  814. {
  815. SQLS1.Add("update makeserial set ms_checkno='' where ms_outboxcode='" + pa_outboxcode.Text + "'");
  816. SQLS1.Add("update oqcbatch set ob_nowcheckqty=ob_nowcheckqty-(select count(1) from oqcbatchdetail where obd_outboxcode='" + pa_outboxcode.Text + "') where ob_checkno='" + pa_checkno + "'");
  817. SQLS1.Add("delete from oqcbatchdetail where obd_outboxcode='" + pa_outboxcode.Text + "'");
  818. }
  819. //更新序列号状态
  820. SQLS1.Add("update makeserial set ms_status=1,ms_outboxcode='',ms_nextstepcode= (case when ms_nextstepcode='" + User.CurrentStepCode + "' then ms_nextstepcode else '" + User.CurrentStepCode + "' end ),ms_paststep=replace(ms_paststep,'," + User.CurrentStepCode + "','') where ms_outboxcode='" + pa_outboxcode.Text + "'");
  821. //抽检批次不为空的时候进行移除
  822. dh.ExecuteSQLTran(SQLS1.ToArray());
  823. /*string prcode = dh.getFieldDataByCondition("packagedetail", "pd_prodcode", "pd_outboxcode = '" + pa_outboxcode.Text + "'").ToString();
  824. string standqty = dh.getFieldDataByCondition("product", "pr_outboxinnerqty", "pr_code = '" + prcode + "'").ToString();*/
  825. string prcode = dh.getFieldDataByCondition("packagedetail", "PD_MAKECODE", "pd_outboxcode = '" + pa_outboxcode.Text + "'").ToString();
  826. string standqty = dh.getFieldDataByCondition("make", "ma_outboxinnerqty", "ma_code = '" + prcode + "'").ToString();
  827. //if (standqty != "")
  828. //{
  829. // //置空原箱
  830. // dh.ExecuteSql("update package set pa_checkno='',pa_prodcode='',pa_packtype='',pa_salecode='',pa_packageqty=0,pa_totalqty=0,pa_currentqty=0,pa_status=0,PA_STANDARDQTY = '" + standqty + "' where pa_outboxcode='" + pa_outboxcode.Text + "'", "update");
  831. //}
  832. //else
  833. // //置空原箱
  834. // dh.ExecuteSql("update package set pa_checkno='',pa_prodcode='',pa_packtype='',pa_salecode='',pa_packageqty=0,pa_totalqty=0,pa_currentqty=0,pa_status=0 where pa_outboxcode='" + pa_outboxcode.Text + "'", "update");
  835. dh.ExecuteSql("insert into PACKAGEBACKUP select * from package where pa_outboxcode='" + pa_outboxcode.Text + "'", "insert");
  836. dh.ExecuteSql("insert into PACKAGEBACKUPDETAIL select * from packagedetail where pd_outboxcode='" + pa_outboxcode.Text + "'", "insert");
  837. dh.ExecuteSql("delete from package where pa_outboxcode = '" + pa_outboxcode.Text + "'", "delete");
  838. pa_status.Text = "0";
  839. //删除箱的明细
  840. dh.ExecuteSql("delete from packagedetail where pd_outboxcode='" + pa_outboxcode.Text + "'", "delete");
  841. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, pa_makecode.Text, User.UserLineCode, User.UserSourceCode, "卡通箱拆解", "成功", pa_outboxcode.Text, ob_checkno.Text);
  842. OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "成功拆解!\n", Color.Green);
  843. LoadGridData();
  844. LoadCheckQTY();
  845. //}
  846. //else OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "已送检,不允许解除\n", Color.Red);
  847. }
  848. else OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "已下地,不允许解除\n", Color.Red);
  849. }
  850. else OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "已装箱" + dt.Rows[0]["pa_mothercode"].ToString() + ",不允许解除\n", Color.Red);
  851. }
  852. else OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "不存在\n", Color.Red);
  853. }
  854. }
  855. private void OutBoxLength_KeyDown(object sender, KeyEventArgs e)
  856. {
  857. if (e.KeyCode == Keys.Enter)
  858. {
  859. try
  860. {
  861. if (OutBoxLength.Text != "")
  862. {
  863. int.Parse(OutBoxLength.Text);
  864. }
  865. BaseUtil.SetCacheData("OutBoxLength", OutBoxLength.Text);
  866. if (!AutoGenBoxCode.Checked)
  867. {
  868. pa_outboxcode.SelectAll();
  869. pa_outboxcode.Focus();
  870. }
  871. else
  872. {
  873. sn_code.Focus();
  874. }
  875. }
  876. catch (Exception)
  877. {
  878. OutBoxLength.Clear();
  879. MessageBox.Show("请输入正确的长度");
  880. }
  881. }
  882. }
  883. private bool CheckOutBoxLength()
  884. {
  885. //勾选了检验长度进行校验
  886. if (OutBoxLength.Text != "")
  887. {
  888. try
  889. {
  890. int.Parse(OutBoxLength.Text);
  891. }
  892. catch (Exception)
  893. {
  894. MessageBox.Show("请填写正确的箱号长度");
  895. return false;
  896. }
  897. if (pa_outboxcode.Text.Length != int.Parse(OutBoxLength.Text))
  898. {
  899. OperateResult.AppendText(">>箱号长度错误,请重新输入箱号\n", Color.Red);
  900. return false;
  901. }
  902. }
  903. if (PreFix.Text != "")
  904. {
  905. try
  906. {
  907. if (pa_outboxcode.Text.Substring(0, PreFix.Text.Length) != PreFix.Text)
  908. {
  909. OperateResult.AppendText(">>箱号前缀不匹配,请重新输入箱号\n", Color.Red);
  910. return false;
  911. }
  912. }
  913. catch (Exception)
  914. {
  915. OperateResult.AppendText(">>箱号前缀不匹配,请重新输入箱号\n", Color.Red);
  916. return false;
  917. }
  918. }
  919. return true;
  920. }
  921. private void LoadCollectedNum()
  922. {
  923. dt = (DataTable)dh.ExecuteSql("select mcd_inqty,ma_qty-mcd_inqty mcd_remainqty from make left join makecraftdetail on mcd_macode=ma_code where ma_code='" + ms_makecode.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'", "select");
  924. BaseUtil.SetFormValue(Controls, dt);
  925. }
  926. private void pa_remark_KeyDown(object sender, KeyEventArgs e)
  927. {
  928. if (Keys.Enter == e.KeyCode)
  929. {
  930. if (dh.CheckExist("package", "pa_outboxcode='" + pa_outboxcode.Text + "'"))
  931. {
  932. if (Remark_PreFix.Text != "")
  933. {
  934. try
  935. {
  936. if (pa_remark.Text.Substring(0, Remark_PreFix.Text.Length) != Remark_PreFix.Text)
  937. {
  938. OperateResult.AppendText(">>备注前缀不匹配,请重新输入备注信息\n", Color.Red);
  939. return;
  940. }
  941. }
  942. catch (Exception)
  943. {
  944. OperateResult.AppendText(">>备注前缀不匹配,请重新输入备注信息\n", Color.Red);
  945. return;
  946. }
  947. }
  948. if (!AllowRepeat.Checked)
  949. {
  950. DataTable dt = (DataTable)dh.ExecuteSql("select pa_outboxcode from package where pa_remark='" + pa_remark.Text.ToUpper() + "'", "select");
  951. if (dt.Rows.Count > 0)
  952. {
  953. OperateResult.AppendText(">>箱号" + dt.Rows[0][0].ToString() + "已采集关联信息" + pa_remark.Text + "\n", Color.Red);
  954. return;
  955. }
  956. }
  957. dh.UpdateByCondition("package", "pa_remark='" + pa_remark.Text.ToUpper() + "'", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  958. OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "关联信息" + pa_remark.Text + "采集成功\n", Color.Green);
  959. pa_remark.Text = "";
  960. if (!AutoGenBoxCode.Checked)
  961. {
  962. pa_outboxcode.SelectAll();
  963. pa_outboxcode.Focus();
  964. }
  965. else
  966. {
  967. sn_code.Focus();
  968. }
  969. }
  970. else OperateResult.AppendText(">>请先采集箱内数据\n", Color.Red);
  971. }
  972. }
  973. private void PreFix_KeyDown(object sender, KeyEventArgs e)
  974. {
  975. if (e.KeyCode == Keys.Enter)
  976. {
  977. BaseUtil.SetCacheData("PreFix", PreFix.Text);
  978. if (!AutoGenBoxCode.Checked)
  979. {
  980. pa_outboxcode.SelectAll();
  981. pa_outboxcode.Focus();
  982. }
  983. else
  984. {
  985. sn_code.Focus();
  986. sn_code.SelectAll();
  987. }
  988. }
  989. }
  990. private void BuildServer_Click(object sender, EventArgs e)
  991. {
  992. if (!md.IsOpen)
  993. {
  994. md.IP = IP.Text;
  995. md.Port = Port.Text;
  996. if (md.Open())
  997. {
  998. BaseUtil.SetCacheData("IP", IP.Text);
  999. BaseUtil.SetCacheData("IPPort", Port.Text);
  1000. OperateResult.AppendText(">>服务开启成功\n");
  1001. }
  1002. }
  1003. else
  1004. OperateResult.AppendText(">>服务已经开启\n");
  1005. }
  1006. private void CloseServer_Click(object sender, EventArgs e)
  1007. {
  1008. if (md.IsOpen)
  1009. {
  1010. md.Close();
  1011. OperateResult.AppendText(">>服务关闭成功\n");
  1012. }
  1013. else
  1014. OperateResult.AppendText(">>服务尚未开启\n");
  1015. }
  1016. private void Remark_PreFix_KeyDown(object sender, KeyEventArgs e)
  1017. {
  1018. if (e.KeyCode == Keys.Enter)
  1019. {
  1020. BaseUtil.SetCacheData("Remark_PreFix", Remark_PreFix.Text);
  1021. if (CollecRemark.Checked)
  1022. {
  1023. pa_remark.SelectAll();
  1024. pa_remark.Focus();
  1025. }
  1026. }
  1027. }
  1028. private bool CheckOutBoxLength(string ms_salecode_text)
  1029. {
  1030. if (AutoGenBoxCode.Checked)
  1031. {
  1032. if (ms_salecode_text != "")
  1033. {
  1034. DataTable dt = (DataTable)dh.ExecuteSql(" select pn_number,pn_id,pn_caller,pn_numberlength,pn_leadcode from PACKAGENUMBER where pn_caller='" + pr_code.Text + "'", "select");
  1035. if (dt.Rows.Count > 0)
  1036. {
  1037. string pn_leadcode = dt.Rows[0]["pn_leadcode"].ToString();
  1038. int pn_numberlength = int.Parse(dt.Rows[0]["pn_numberlength"].ToString());
  1039. if (OutBoxLength.Text != (pn_leadcode.Length + pn_numberlength).ToString())
  1040. {
  1041. OutBoxLength.Text = (pn_leadcode.Length + pn_numberlength).ToString();
  1042. BaseUtil.SetCacheData("OutBoxLength", OutBoxLength.Text);
  1043. }
  1044. if (PreFix.Text != pn_leadcode)
  1045. {
  1046. PreFix.Text = pn_leadcode;
  1047. BaseUtil.SetCacheData("PreFix", PreFix.Text);
  1048. }
  1049. }
  1050. else
  1051. {
  1052. OperateResult.AppendText(">>产品" + pr_code.Text + "未维护箱号规则\n", Color.Black);
  1053. }
  1054. }
  1055. return true;
  1056. }
  1057. return CheckOutBoxLength();
  1058. }
  1059. private void AutoGenBoxCode_CheckedChanged(object sender, EventArgs e)
  1060. {
  1061. if (AutoGenBoxCode.Checked)
  1062. {
  1063. OutBoxLength.Enabled = false;
  1064. PreFix.Enabled = false;
  1065. }
  1066. else
  1067. {
  1068. OutBoxLength.Enabled = true;
  1069. PreFix.Enabled = true;
  1070. }
  1071. }
  1072. private void pa_fba_KeyDown(object sender, KeyEventArgs e)
  1073. {
  1074. if (Keys.Enter == e.KeyCode)
  1075. {
  1076. if (dh.CheckExist("package", "pa_outboxcode='" + pa_outboxcode.Text + "'"))
  1077. {
  1078. dh.UpdateByCondition("package", "pa_fba='" + pa_fba.Text.ToUpper() + "'", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  1079. OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "采集FBA:" + pa_fba.Text + "采集成功\n", Color.Green);
  1080. if (pa_xm.Text == "")
  1081. {
  1082. pa_xm.SelectAll();
  1083. pa_xm.Focus();
  1084. }
  1085. else
  1086. {
  1087. sn_code.Focus();
  1088. }
  1089. }
  1090. else OperateResult.AppendText(">>请先采集箱内数据\n", Color.Red);
  1091. }
  1092. }
  1093. private void pa_xm_KeyDown(object sender, KeyEventArgs e)
  1094. {
  1095. if (Keys.Enter == e.KeyCode)
  1096. {
  1097. if (dh.CheckExist("package", "pa_outboxcode='" + pa_outboxcode.Text + "'"))
  1098. {
  1099. dh.UpdateByCondition("package", "pa_xm='" + pa_xm.Text.ToUpper() + "'", "pa_outboxcode='" + pa_outboxcode.Text + "'");
  1100. OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "采集箱唛:" + pa_xm.Text + "采集成功\n", Color.Green);
  1101. if (pa_fba.Text == "")
  1102. {
  1103. pa_fba.SelectAll();
  1104. pa_fba.Focus();
  1105. }
  1106. else
  1107. {
  1108. sn_code.Focus();
  1109. }
  1110. }
  1111. else OperateResult.AppendText(">>请先采集箱内数据\n", Color.Red);
  1112. }
  1113. }
  1114. }
  1115. }