FrmCkInventory.cs 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  1. using com.hnshituo.pur.vo;
  2. using Core.Mes.Client.Comm.Control;
  3. using Core.Mes.Client.Comm.Tool;
  4. using Infragistics.Win.UltraWinGrid;
  5. using Pur.Entity;
  6. using Pur.Entity.configureEntity;
  7. using Pur.PublicTools;
  8. using System;
  9. using System.Collections;
  10. using System.Collections.Generic;
  11. using System.ComponentModel;
  12. using System.Data;
  13. using System.Drawing;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Windows.Forms;
  17. namespace Pur.ck
  18. {
  19. public partial class FrmCkInventory : FrmPmsBase
  20. {
  21. public FrmCkInventory()
  22. {
  23. InitializeComponent();
  24. }
  25. protected override void OnLoad(EventArgs e)
  26. {
  27. base.OnLoad(e);
  28. //ultraGrid1.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  29. ultraGrid2.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  30. }
  31. private void FrmCkInventory_Load(object sender, EventArgs e)
  32. {
  33. dateStart.Value = dateEnd.DateTime.AddMonths(-1);
  34. InitColumns();
  35. ChangeStyle();
  36. SetSumCount();
  37. InitBindBox();
  38. }
  39. private void InitColumns()
  40. {
  41. //PUR_CK_STORAGE 库存表
  42. //INV_PHYSIC 物理库区
  43. //INV_POS 库位、库区储位
  44. //BATCH_NO 批次号
  45. //INV_QTY 库存数量
  46. string[] arrColumns = new string[] { "INV_PHYSIC", "INV_PHYSIC_NAME", "INV_POS", "INV_POS_NAME", "ITEM_CODE", "ITEM_DESC", "ITEM_DESC_E", "ITEM_NAME", "WEIGHT_UNIT", "INV_QTY", "INV_PRICE", "INV_AMT", "REAL_QTY", "REAL_AMT", "DIFF_QTY", "DIFF_AMT", "DEAL_WAY" };//"BATCH_NO",
  47. string[] arrColumnsCaption = new string[] { "库区", "库区", "库位", "库位", "物料编码", "物料描述", "物料英文名称", "物料名称", "库存单位", "数量", "实际价/平均价", "金额", "盘点数量", "盘点金额", "差异数量", "差异金额", "处理(盘亏/盘盈)" };//"批次号",
  48. PublicPur.InitColumns(arrColumns, arrColumnsCaption, dataTable1, ultraGrid1, new string[] { "INV_PHYSIC", "INV_POS", "ITEM_CODE", "ITEM_DESC", "ITEM_DESC_E", "INV_PRICE", "REAL_QTY", "REAL_AMT", "DIFF_QTY", "DIFF_AMT", "DEAL_WAY" }, false, null);
  49. //PublicPur.InitColumns(arrColumns, arrColumnsCaption, dataTable2, ultraGrid2, new string[] { "ITEM_CODE", "ITEM_DESC", "ITEM_DESC_E" }, false, null);
  50. //BUY_QTY 采购数量
  51. string[] arrColumnsDetail = new string[] { "CHK", "STATUS", "STATUS_DESC", "BATCH_NO", "INV_POS_ID", "INV_ID", "STOCK_NO", "ORDER_ID", "ORDER_LINE_SQE", "SUPP_CODE", "SUPP_NAME", "PUR_LINE_ID", "REFE_ID", "REF_TYPE", "INV_PHYSIC", "INV_POS", "ITEM_UNIQUE", "ITEM_CLASS", "ITEM_CODE", "ITEM_DESC", "ITEM_DESC_E", "ITEM_NAME", "START_QTY", "ITEM_UOM", "ITEM_UOM_CONEFFICIENT", "WEIGHT_UNIT", "INV_PRICE", "BUG_PRICE", "BUY_PRICE", "BUY_PRICE_TAX", "INV_AMT", "INV_QTY", "TOTAL_QTY", "DEAL_WAY", "DIFF_QTY", "DIFF_AMT", "DEAL_REMARK" };
  52. string[] arrColumnsCaptionDetail = new string[] { "选择", "状态", "状态", "批次号", "主键", "库存记录号", "单号", "合同号", "合同行号", "供应商代码", "供应商", "领用计划行号", "参考单号", "参考单类别", "库区", "库位", "物料唯一码", "物料大类", "物料编码", "物料描述", "物料英文名称", "物料名称", "原始量", "采购单位", "转换系数", "库存单位", "库存单价", "计划价", "采购单价", "含税采购单价", "金额", "库存数量", "盘库量", "处理(盘亏/盘盈)", "差异量", "差异金额", "盘库原因" };
  53. PublicPur.InitColumns(arrColumnsDetail, arrColumnsCaptionDetail, dataTable2, ultraGrid2, new string[] { "INV_POS_ID", "INV_ID", "STOCK_NO", "ORDER_ID", "SUPP_CODE", "STATUS", "PUR_LINE_ID", "REFE_ID", "REF_TYPE", "INV_PHYSIC", "INV_POS", "ITEM_UNIQUE", "ITEM_CLASS", "ITEM_CODE", "ITEM_DESC", "ITEM_DESC_E", "ITEM_NAME", "START_QTY", "ITEM_UOM", "ITEM_UOM_CONEFFICIENT", "WEIGHT_UNIT", "BUG_PRICE", "DIFF_AMT" }, false, new string[] { "CHK", "TOTAL_QTY", "DEAL_REMARK" });//"DEAL_WAY" ,"DIFF_QTY",
  54. ultraGrid2.DisplayLayout.Bands[0].Columns["DEAL_WAY"].EditorComponent = ultraDEAL_WAY;
  55. string[] arrColumnsRecord = new string[] { "STOCKTAKING_DOC", "STOCKTAKING_TYPE_NAME", "REAL_QTY", "DIFF_QTY", "INV_PHYSIC", "INV_PHYSIC_NAME", "INV_POS", "INV_POS_NAME", "ORDER_ID", "ORDER_LINE_SQE", "IN_STOCK_NO", "STOCK_NO", "SUPP_CODE", "SUPP_NAME", "ITEM_CLASS", "ITEM_CODE", "ITEM_NAME", "ITEM_UOM", "ITEM_UOM_CONEFFICIENT", "BUY_PRICE", "BUY_QTY", "WEIGHT_UNIT", "INV_PRICE", "INV_QTY", "INV_AMT", "DEAL_REMARK", "CREATE_NAME", "CREATE_TIME_" };//STOCKTAKING_RSN_NAME
  56. string[] arrColumnsCaptionRecord = new string[] { "盘库记录号", "盘库类型", "盘库量", "差异量", "库区", "库区", "库位", "库位", "合同号", "合同行号", "原入库单号", "新单号", "供应商", "供应商", "物料中类", "物料编码", "物料名称", "采购单位", "转换系数", "采购单价", "采购数量", "库存单位", "库存单价", "入库数量", "总价", "盘库原因", "盘库人", "盘库时间" };
  57. PublicPur.InitColumns(arrColumnsRecord, arrColumnsCaptionRecord, dataTable3, ultraGrid3, new string[] { "INV_PHYSIC", "INV_POS", "ORDER_ID", "SUPP_CODE", "ITEM_CLASS", "ITEM_CODE", "BUY_PRICE", "BUY_QTY", "INV_QTY", "INV_AMT" }, false, null);
  58. }
  59. //调整格式
  60. private void ChangeStyle()
  61. {
  62. PublicPur.InitCellPositionRight(ultraGrid1, new string[] { "INV_QTY", "INV_PRICE", "BUG_PRICE", "INV_AMT", "DIFF_QTY", "DIFF_AMT" });
  63. PublicPur.InitColumnShowLength(ultraGrid1, 0, new string[] { "INV_QTY", "DIFF_QTY" }, 4, false);//入库量保留4位
  64. PublicPur.InitColumnShowLength(ultraGrid1, 0, new string[] { "INV_PRICE", "BUG_PRICE", "INV_AMT", "DIFF_AMT" }, 2, false);//金额保留两位
  65. PublicPur.InitCellPositionRight(ultraGrid2, new string[] { "BUY_PRICE", "BUY_QTY", "INV_PRICE", "INV_QTY", "INV_AMT", "TOTAL_QTY", "DIFF_QTY", "DIFF_AMT" });
  66. PublicPur.InitColumnShowLength(ultraGrid2, 0, new string[] { "BUY_QTY", "INV_QTY", "TOTAL_QTY", "DIFF_QTY" }, 4, false);//入库量保留4位
  67. PublicPur.InitColumnShowLength(ultraGrid2, 0, new string[] { "BUY_PRICE", "INV_PRICE", "INV_AMT", "DIFF_AMT" }, 2, false);//金额保留两位
  68. PublicPur.InitCellPositionRight(ultraGrid3, new string[] { "REAL_QTY", "DIFF_QTY", "BUY_PRICE", "BUY_QTY", "INV_PRICE", "INV_QTY", "INV_AMT" });
  69. PublicPur.InitColumnShowLength(ultraGrid3, 0, new string[] { "REAL_QTY", "DIFF_QTY", "BUY_QTY", "INV_QTY" }, 4, false);//入库量保留4位
  70. PublicPur.InitColumnShowLength(ultraGrid3, 0, new string[] { "BUY_PRICE", "INV_PRICE", "INV_AMT" }, 2, false);//金额保留两位
  71. }
  72. //设置统计风格
  73. private void SetSumCount()
  74. {
  75. PublicPur.SetupSummaryHeade(new String[] { "Count", "Sum", "Sum" }, new String[] { "共{0}条", "{0}", "{0}" }, new string[] { "INV_PHYSIC_NAME", "INV_QTY", "INV_AMT" }, this.ultraGrid1.DisplayLayout.Bands[0], SummaryDisplayAreas.BottomFixed);
  76. PublicPur.SetupSummaryHeade(new String[] { "Count", "Sum", "Sum" }, new String[] { "共{0}条", "{0}", "{0}" }, new string[] { "STATUS_DESC", "INV_QTY", "INV_AMT" }, this.ultraGrid2.DisplayLayout.Bands[0], SummaryDisplayAreas.BottomFixed);
  77. }
  78. private void InitBindBox()
  79. {
  80. PurmatclassEntity mat = new PurmatclassEntity();
  81. mat.Validflag = "1";
  82. DataTable dtBaseName = this.execute<DataTable>("com.hnshituo.pur.configure.service.MatClassService", "getMatClass", new object[] { mat });
  83. publicPms.FilComboboxAdd(ultraQueryBASENAME, dtBaseName, "BASECODE", "BASENAME", "", true, "/", "");//绑定物料中类
  84. //"INV_PHYSIC", "INV_PHYSIC_NAME", "INV_POS", "INV_POS_NAME"
  85. PhysicSeatEntity Phouse = new PhysicSeatEntity();
  86. Phouse.Validflag = "1";
  87. DataTable dtINV_PHYSIC = this.execute<DataTable>("com.hnshituo.pur.configure.service.ActualSeatService", "getActualSeat", new object[] { Phouse, 0, 0 });
  88. publicPms.FilComboboxAdd(ultraINV_PHYSIC, dtINV_PHYSIC, "INVPHYSIC", "INVPHYSICNAME", "", false, "/", "");
  89. ActualSeatPosEntity Pos = new ActualSeatPosEntity();
  90. Pos.Validflag = "1";
  91. DataTable dtINV_POS = this.execute<DataTable>("com.hnshituo.pur.configure.service.ActualSeatPosService", "find", new object[] { Pos, 0, 0 });
  92. publicPms.FilComboboxAdd(ultraINV_POS, dtINV_POS, "INVPOS", "INVPOSNAME", "", false, "/", "");
  93. }
  94. //菜单按钮事件
  95. public override void ToolBar_Click(object sender, string ToolbarKey)
  96. {
  97. switch (ToolbarKey)
  98. {
  99. case "Query":
  100. if (ultraTabControl1.SelectedTab.Index == 0)
  101. {
  102. QueryCkInventory();
  103. }
  104. else if (ultraTabControl1.SelectedTab.Index == 1)
  105. {
  106. QueryCkInventory_Confirm();//查询库存
  107. }
  108. break;
  109. case "Carry"://确认
  110. ConfirmCkInventory();
  111. break;
  112. case "Cancel"://取消操作
  113. CancelCkInventory();
  114. break;
  115. case "Print"://打印
  116. PrintCkInventory();
  117. break;
  118. case "Export"://导出
  119. ExportCkInventory();
  120. break;
  121. case "Close":
  122. if (MessageUtil.ShowYesNoAndQuestion("是否确认关闭页面?") == DialogResult.Yes)
  123. {
  124. this.Close();
  125. }
  126. break;
  127. }
  128. }
  129. private void QueryCkInventory()
  130. {
  131. try
  132. {
  133. dataTable1.Rows.Clear();
  134. ArrayList arrayList = new ArrayList();//库区库位 物料中类,物料名称
  135. if (chkINV_PHYSIC.Checked && ultraINV_PHYSIC.Value != null)//库区
  136. {
  137. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  138. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  139. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  140. }
  141. else
  142. {
  143. arrayList.Add("");
  144. arrayList.Add("");
  145. arrayList.Add("");
  146. }
  147. if (chkINV_POS.Checked && ultraINV_POS.Value != null)//库位
  148. {
  149. arrayList.Add(ultraINV_POS.Value.ToString());
  150. arrayList.Add(ultraINV_POS.Value.ToString());
  151. arrayList.Add(ultraINV_POS.Value.ToString());
  152. }
  153. else
  154. {
  155. arrayList.Add("");
  156. arrayList.Add("");
  157. arrayList.Add("");
  158. }
  159. if (chkBASENAME.Checked && ultraQueryBASENAME.Value != null)//物料中类
  160. {
  161. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  162. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  163. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  164. }
  165. else
  166. {
  167. arrayList.Add("");
  168. arrayList.Add("");
  169. arrayList.Add("");
  170. }
  171. if (chkITEM_NAME.Checked)
  172. {
  173. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  174. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  175. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  176. }
  177. else
  178. {
  179. arrayList.Add("");
  180. arrayList.Add("");
  181. arrayList.Add("");
  182. }
  183. DataTable dt = PublicServer.GetData("com.hnshituo.pur.ck.service.impl.FrmCkInventory.QueryCkInventory",
  184. new Object[] { arrayList, chkNo.Checked ? "0" : "1" }, ob);//
  185. if (dt == null || dt.Rows.Count == 0)
  186. {
  187. dataTable2.Rows.Clear();
  188. return;
  189. }
  190. GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable1
  191. GridHelper.RefreshAndAutoSize(ultraGrid1);
  192. }
  193. catch (Exception e)
  194. {
  195. MessageUtil.ShowWarning(e.Message);
  196. return;
  197. }
  198. }
  199. private void QueryCkInventory_Confirm()
  200. {
  201. try
  202. {
  203. dataTable3.Rows.Clear();
  204. ArrayList arrayList = new ArrayList();
  205. if (chkINV_PHYSIC.Checked && ultraINV_PHYSIC.Value != null)//库区
  206. {
  207. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  208. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  209. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  210. }
  211. else
  212. {
  213. arrayList.Add("");
  214. arrayList.Add("");
  215. arrayList.Add("");
  216. }
  217. if (chkINV_POS.Checked && ultraINV_POS.Value != null)//库位
  218. {
  219. arrayList.Add(ultraINV_POS.Value.ToString());
  220. arrayList.Add(ultraINV_POS.Value.ToString());
  221. arrayList.Add(ultraINV_POS.Value.ToString());
  222. }
  223. else
  224. {
  225. arrayList.Add("");
  226. arrayList.Add("");
  227. arrayList.Add("");
  228. }
  229. if (chkBASENAME.Checked && ultraQueryBASENAME.Value != null)//物料中类
  230. {
  231. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  232. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  233. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  234. }
  235. else
  236. {
  237. arrayList.Add("");
  238. arrayList.Add("");
  239. arrayList.Add("");
  240. }
  241. if (chkITEM_NAME.Checked)
  242. {
  243. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  244. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  245. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  246. }
  247. else
  248. {
  249. arrayList.Add("");
  250. arrayList.Add("");
  251. arrayList.Add("");
  252. }
  253. if (chkDate.Checked && dateBegin.Value != null)
  254. {
  255. arrayList.Add(dateBegin.DateTime.ToString("yyyyMM"));
  256. }
  257. else
  258. {
  259. arrayList.Add("");
  260. }
  261. DataTable dt = PublicServer.GetData("com.hnshituo.pur.ck.service.impl.FrmCkInventory.QueryCkInventory_Confirm",
  262. new Object[] { arrayList }, ob);//
  263. if (dt == null || dt.Rows.Count == 0)
  264. {
  265. return;
  266. }
  267. GridHelper.CopyDataToDatatable(dt, dataTable3, true);//把dt复制给dataTable1
  268. GridHelper.RefreshAndAutoSize(ultraGrid3);
  269. }
  270. catch (Exception e)
  271. {
  272. MessageUtil.ShowWarning(e.Message);
  273. return;
  274. }
  275. }
  276. private void ConfirmCkInventory()
  277. {
  278. try
  279. {
  280. if (ultraTabControl1.SelectedTab.Index != 0)
  281. {
  282. MessageUtil.ShowTips("只有选择了库存信息页才能进行盘库操作!");
  283. return;
  284. }
  285. if (ultraGrid1.ActiveRow == null || dataTable1.Rows.Count == 0)
  286. {
  287. MessageUtil.ShowTips("请选择一条记录进行盘库操作!");
  288. return;
  289. }
  290. ultraGrid2.UpdateData();
  291. DataRow[] arr = dataTable2.Select("CHK = 'True'");
  292. if (arr.Length == 0)
  293. {
  294. MessageUtil.ShowTips("请至少勾选一条库存记录进行盘库操作!");
  295. return;
  296. }
  297. foreach (DataRow dr in arr)
  298. {
  299. if (dr["DIFF_QTY"].ToString() == "" || dr["DEAL_WAY"].ToString() == "" || Convert.ToDouble(dr["DIFF_QTY"].ToString()) == 0)
  300. {
  301. MessageUtil.ShowTips("盘库量不能等于库存量!");
  302. dr["TOTAL_QTY"] = "";
  303. return;
  304. }
  305. if (dr["DEAL_REMARK"].ToString() == "")
  306. {
  307. MessageUtil.ShowTips("盘库原因不能为空!");
  308. return;
  309. }
  310. }
  311. if (MessageUtil.ShowYesNoAndQuestion("是否确认对此记录进行盘库?") == DialogResult.Yes)
  312. {
  313. string userId = UserInfo.GetUserID();
  314. string user = UserInfo.GetUserName();
  315. string strDate = DateTime.Now.ToString();
  316. ArrayList all = new ArrayList();
  317. ArrayList alBase = new ArrayList();//盘盈盘亏记录表
  318. ArrayList alBaseParams = new ArrayList();
  319. ArrayList alCk = new ArrayList();//库存记录表
  320. ArrayList alCkParams = new ArrayList();
  321. ArrayList alCkInBill = new ArrayList();//入库记录表
  322. ArrayList alCkInBillParams = new ArrayList();
  323. ArrayList alCkInBillPos = new ArrayList();//入库记录表
  324. ArrayList alCkInBillPosParams = new ArrayList();
  325. ArrayList alCkOutBill = new ArrayList();//出库记录表
  326. ArrayList alCkOutBillParams = new ArrayList();
  327. ArrayList alCkOutBillPos = new ArrayList();//出库记录从表
  328. ArrayList alCkOutBillPosParams = new ArrayList();
  329. string strDIFF_QTY = "";
  330. foreach (DataRow dr in arr)
  331. {
  332. alBaseParams = new ArrayList();
  333. if (dr["DEAL_WAY"].ToString() == "盘盈")
  334. {
  335. alBaseParams.Add("1");//盘库类型代码
  336. }
  337. else
  338. {
  339. alBaseParams.Add("2");//盘亏
  340. }
  341. alBaseParams.Add(dr["DEAL_WAY"].ToString());//盘库类型名称
  342. alBaseParams.Add("");//盘库原因代码
  343. alBaseParams.Add(dr["DEAL_REMARK"].ToString());//盘库原因名称
  344. alBaseParams.Add(dr["INV_POS_ID"].ToString());
  345. alBaseParams.Add(dr["INV_ID"].ToString());//库存记录号
  346. alBaseParams.Add(dr["STOCK_NO"].ToString());//出库或入库单号
  347. alBaseParams.Add(dr["ORDER_ID"].ToString());
  348. alBaseParams.Add(dr["ORDER_LINE_SQE"].ToString());
  349. alBaseParams.Add(dr["SUPP_CODE"].ToString());
  350. alBaseParams.Add(dr["SUPP_NAME"].ToString());
  351. alBaseParams.Add(dr["INV_PHYSIC"].ToString());
  352. alBaseParams.Add(dr["INV_POS"].ToString());//库位
  353. alBaseParams.Add(dr["ITEM_UNIQUE"].ToString());
  354. alBaseParams.Add(dr["ITEM_CODE"].ToString());
  355. alBaseParams.Add(dr["ITEM_NAME"].ToString());
  356. alBaseParams.Add(dr["ITEM_UOM"].ToString());//采购单位
  357. alBaseParams.Add(dr["ITEM_UOM_CONEFFICIENT"].ToString());
  358. alBaseParams.Add(dr["WEIGHT_UNIT"].ToString());
  359. alBaseParams.Add(dr["BATCH_NO"].ToString());
  360. alBaseParams.Add(dr["START_QTY"].ToString());//数据库原始量
  361. alBaseParams.Add("");//采购量 BUY_QTY
  362. alBaseParams.Add("");//采购价格 BUY_PRICE
  363. alBaseParams.Add(dr["INV_QTY"].ToString());//库存数量
  364. alBaseParams.Add(dr["INV_PRICE"].ToString());//库存价格
  365. alBaseParams.Add(dr["INV_AMT"].ToString());
  366. alBaseParams.Add(dr["TOTAL_QTY"].ToString());//盘点量 REAL_QTY
  367. alBaseParams.Add(Convert.ToDouble(dr["INV_PRICE"].ToString()) * Convert.ToDouble(dr["TOTAL_QTY"].ToString()));//盘点金额 REAL_AMT
  368. alBaseParams.Add(dr["DIFF_QTY"].ToString());//差异量
  369. alBaseParams.Add(Convert.ToDouble(dr["INV_PRICE"].ToString()) * Convert.ToDouble(dr["DIFF_QTY"].ToString()));//差异金额dr["DIFF_AMT"].ToString()
  370. alBaseParams.Add("");//备注
  371. alBaseParams.Add(user);//创建人
  372. alBase.Add(alBaseParams);
  373. //改变库存量
  374. strDIFF_QTY = "";
  375. alCkParams = new ArrayList();
  376. if (dr["ITEM_UOM"].ToString() == "基吨")
  377. {
  378. strDIFF_QTY = dr["DIFF_QTY"].ToString();
  379. }
  380. else
  381. {
  382. strDIFF_QTY = Math.Round(Convert.ToDouble(dr["DIFF_QTY"].ToString()) / Convert.ToDouble(dr["ITEM_UOM_CONEFFICIENT"].ToString()), 4).ToString();
  383. }
  384. alCkParams.Add(strDIFF_QTY);
  385. alCkParams.Add(dr["INV_POS_ID"].ToString());
  386. alCk.Add(alCkParams);
  387. //盘亏盘盈都入库 盘亏为负的入库记录
  388. alCkInBillParams = new ArrayList();
  389. alCkInBillParams.Add(dr["INV_ID"].ToString());
  390. alCkInBillParams.Add(dr["STATUS"].ToString());//STATUS 3已结算 "3"
  391. alCkInBillParams.Add(dr["PUR_LINE_ID"].ToString());
  392. alCkInBillParams.Add(dr["REFE_ID"].ToString());
  393. alCkInBillParams.Add(dr["REF_TYPE"].ToString());
  394. alCkInBillParams.Add(dr["ORDER_ID"].ToString());
  395. alCkInBillParams.Add(dr["ORDER_LINE_SQE"].ToString());
  396. alCkInBillParams.Add(dr["SUPP_CODE"].ToString());
  397. alCkInBillParams.Add(dr["SUPP_NAME"].ToString());
  398. alCkInBillParams.Add(dr["INV_PHYSIC"].ToString());
  399. alCkInBillParams.Add(dr["INV_POS"].ToString());
  400. alCkInBillParams.Add(dr["ITEM_UNIQUE"].ToString());
  401. alCkInBillParams.Add("");//ITEM_UOM_ID
  402. alCkInBillParams.Add("");//ITEM_ATTR_ID
  403. alCkInBillParams.Add("");//ITEM_ATTR
  404. alCkInBillParams.Add("");//ITEM_STANDARDS_ID
  405. alCkInBillParams.Add("");//ITEM_STANDARDS_CODE
  406. alCkInBillParams.Add(dr["ITEM_CODE"].ToString());//ITEM_CODE
  407. alCkInBillParams.Add("");//ITEM_DESC
  408. alCkInBillParams.Add("");//ITEM_DESC_E
  409. alCkInBillParams.Add(dr["ITEM_NAME"].ToString());
  410. alCkInBillParams.Add("");//ITEM_SPEC
  411. alCkInBillParams.Add("");//ITEM_USE_UOM
  412. alCkInBillParams.Add(dr["BATCH_NO"].ToString());
  413. alCkInBillParams.Add(dr["ITEM_UOM"].ToString());
  414. alCkInBillParams.Add(dr["ITEM_UOM_CONEFFICIENT"].ToString());
  415. alCkInBillParams.Add(dr["WEIGHT_UNIT"].ToString());
  416. alCkInBillParams.Add("8");//RECEIVE_TYPE 入库类型 盘盈入库
  417. alCkInBillParams.Add(strDIFF_QTY);//入库数量
  418. alCkInBillParams.Add(Math.Round(Convert.ToDouble(dr["INV_PRICE"].ToString()) * Convert.ToDouble(dr["DIFF_QTY"].ToString()), 2));//入库金额
  419. alCkInBillParams.Add(dr["BUG_PRICE"].ToString());//计划价
  420. if (dr["DEAL_WAY"].ToString() == "盘盈")
  421. {
  422. alCkInBillParams.Add("盘盈入库");//备注
  423. }
  424. else
  425. {
  426. alCkInBillParams.Add("盘亏入库");
  427. }
  428. alCkInBillParams.Add("1");//VALIDFLAG
  429. alCkInBillParams.Add(dr["BUY_PRICE"].ToString());//入库单价
  430. alCkInBillParams.Add(dr["BUY_PRICE_TAX"].ToString());//含税入库单价
  431. alCkInBillParams.Add(dr["REFE_ID"].ToString().Trim() + "_pk");//盘库标识+财务标识
  432. alCkInBillParams.Add(userId);
  433. alCkInBillParams.Add(user);
  434. alCkInBill.Add(alCkInBillParams);
  435. alCkInBillPosParams = new ArrayList();
  436. alCkInBillPosParams.Add(dr["INV_ID"].ToString());
  437. alCkInBillPosParams.Add(dr["INV_PHYSIC"].ToString());
  438. alCkInBillPosParams.Add(dr["INV_POS"].ToString());
  439. alCkInBillPosParams.Add(strDIFF_QTY);//入库数量
  440. if (dr["DEAL_WAY"].ToString() == "盘盈")
  441. {
  442. alCkInBillPosParams.Add("盘盈入库");//备注
  443. }
  444. else
  445. {
  446. alCkInBillPosParams.Add("盘亏入库");
  447. }
  448. alCkInBillPosParams.Add("1");//VALIDFLAG
  449. alCkInBillPosParams.Add(userId);
  450. alCkInBillPosParams.Add(user);
  451. alCkInBillPos.Add(alCkInBillPosParams);
  452. }
  453. if (alBase.Count == 0)
  454. {
  455. MessageUtil.ShowTips("已勾选数据请填写正确!");
  456. return;
  457. }
  458. all.Add(alBase);
  459. all.Add(alCk);
  460. all.Add(alCkInBill);
  461. all.Add(alCkInBillPos);
  462. PublicServer.SetData("com.hnshituo.pur.ck.service.impl.FrmCkInventory.ConfirmCkInventory",
  463. new Object[] { all }, ob);
  464. QueryCkInventory();
  465. MessageUtil.ShowTips("盘库成功!");
  466. }
  467. }
  468. catch (Exception e)
  469. {
  470. //QueryCkOutInCarryRecord();
  471. MessageUtil.ShowWarning(e.Message);
  472. return;
  473. }
  474. }
  475. private void CancelCkInventory()
  476. {
  477. }
  478. private void PrintCkInventory()
  479. {
  480. try
  481. {
  482. if (ultraTabControl1.SelectedTab.Index != 0)
  483. {
  484. return;
  485. }
  486. if (ultraGrid1.Rows.Count == 0 || dataTable1.Rows.Count == 0)
  487. {
  488. return;
  489. }
  490. this.Cursor = Cursors.WaitCursor;
  491. //参数传递
  492. ArrayList arrayList = new ArrayList();
  493. if (chkINV_PHYSIC.Checked && ultraINV_PHYSIC.Value != null)//库区
  494. {
  495. arrayList.Add(ultraINV_PHYSIC.Value.ToString());
  496. }
  497. else
  498. {
  499. arrayList.Add("");
  500. }
  501. if (chkINV_POS.Checked && ultraINV_POS.Value != null)//库位
  502. {
  503. arrayList.Add(ultraINV_POS.Value.ToString());
  504. }
  505. else
  506. {
  507. arrayList.Add("");
  508. }
  509. if (chkBASENAME.Checked && ultraQueryBASENAME.Value != null)//物料中类
  510. {
  511. arrayList.Add(ultraQueryBASENAME.Value.ToString());
  512. }
  513. else
  514. {
  515. arrayList.Add("");
  516. }
  517. if (chkITEM_NAME.Checked)
  518. {
  519. arrayList.Add(ultraQueryITEM_NAME.Text.Trim());
  520. }
  521. else
  522. {
  523. arrayList.Add("");
  524. }
  525. if (chkNo.Checked)
  526. {
  527. arrayList.Add("");
  528. }
  529. else
  530. {
  531. arrayList.Add("1");
  532. }
  533. string strurl = "";
  534. //if (ob.MainUrl.StartsWith("http://127.0.0.1"))
  535. //{
  536. // strurl = "http://localhost:8075/webroot/decision/view/report?viewlet=RepPmsCkInventory.cpt&bypagesize=false&INV_PHYSIC=" + arrayList[0].ToString() + "&INV_POS=" + arrayList[1].ToString() + "&ITEM_CLASS=" + arrayList[2].ToString() + "&ITEM_NAME=" + arrayList[3].ToString() + "&SHOW_ZERO=" + arrayList[4].ToString();
  537. //}
  538. //else
  539. //{
  540. strurl = "http://172.54.10.42:8080/webroot/decision/view/report?viewlet=RepPmsCkInventory.cpt&bypagesize=false&INV_PHYSIC=" + arrayList[0].ToString() + "&INV_POS=" + arrayList[1].ToString() + "&ITEM_CLASS=" + arrayList[2].ToString() + "&ITEM_NAME=" + arrayList[3].ToString() + "&SHOW_ZERO=" + arrayList[4].ToString() + "&ID=" + 1232030;
  541. //}
  542. FrmRepExcel fBug = new FrmRepExcel(ob, strurl);
  543. fBug.AutoSize = true;
  544. fBug.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  545. fBug.WindowState = FormWindowState.Maximized;
  546. fBug.Text = "盘点单";
  547. fBug.Show();
  548. }
  549. finally
  550. {
  551. this.Cursor = Cursors.Default;
  552. }
  553. }
  554. //导出
  555. private void ExportCkInventory()
  556. {
  557. ArrayList alUltraGrid = new ArrayList();
  558. ArrayList alSheeft = new ArrayList();
  559. if (ultraTabControl1.SelectedTab.Index == 0)
  560. {
  561. alUltraGrid.Add(ultraGrid1);
  562. alSheeft.Add("库存记录");
  563. if (ultraGrid1.Rows.Count > 0)
  564. {
  565. GridHelper.ulGridToExcel(alUltraGrid, alSheeft, dateBegin.DateTime.ToString("yyyyMM") + "库存记录");//导出excel
  566. }
  567. }
  568. else if (ultraTabControl1.SelectedTab.Index == 1)
  569. {
  570. alUltraGrid.Add(ultraGrid3);
  571. alSheeft.Add("盘库记录");
  572. if (ultraGrid3.Rows.Count > 0)
  573. {
  574. GridHelper.ulGridToExcel(alUltraGrid, alSheeft, dateBegin.DateTime.ToString("yyyyMM") + "盘库记录");//导出excel
  575. }
  576. }
  577. }
  578. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  579. {
  580. QueryCkInventoryDetail();
  581. }
  582. private void QueryCkInventoryDetail()
  583. {
  584. try
  585. {
  586. dataTable2.Rows.Clear();
  587. ArrayList arrayList = new ArrayList();
  588. arrayList.Add(ultraGrid1.ActiveRow.Cells["INV_PHYSIC"].Text.Trim());
  589. arrayList.Add(ultraGrid1.ActiveRow.Cells["INV_POS"].Text.Trim());
  590. arrayList.Add(ultraGrid1.ActiveRow.Cells["INV_POS"].Text.Trim());
  591. arrayList.Add(ultraGrid1.ActiveRow.Cells["INV_POS"].Text.Trim());
  592. arrayList.Add(ultraGrid1.ActiveRow.Cells["ITEM_CODE"].Text.Trim());
  593. if (chkNo.Checked && chkTime.Checked)
  594. {
  595. arrayList.Add(dateStart.DateTime.ToShortDateString() + " 00:00:00");
  596. arrayList.Add(dateEnd.DateTime.ToShortDateString() + " 23:59:59");
  597. }
  598. else
  599. {
  600. //arrayList.Add("0001/01/01 00:00:00");
  601. //arrayList.Add("9999/12/31 23:59:59");
  602. }
  603. DataTable dt = PublicServer.GetData("com.hnshituo.pur.ck.service.impl.FrmCkInventory.QueryCkInventoryDetail",
  604. new Object[] { arrayList, chkNo.Checked ? "0" : "1" }, ob);//
  605. if (dt == null || dt.Rows.Count == 0)
  606. {
  607. return;
  608. }
  609. GridHelper.CopyDataToDatatable(dt, dataTable2, true);//把dt复制给dataTable1
  610. PublicPur.RefreshAndAutoSizeColumns(ultraGrid2, new string[] { "TOTAL_QTY", "DIFF_QTY", "DEAL_REMARK" }, false);//刷新Grid
  611. //GridHelper.RefreshAndAutoSize(ultraGrid2);
  612. }
  613. catch (Exception e)
  614. {
  615. MessageUtil.ShowWarning(e.Message);
  616. return;
  617. }
  618. }
  619. private void ultraGrid2_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  620. {
  621. ultraGrid2.UpdateData();
  622. if (e.Cell.Column.Key == "CHK")
  623. {
  624. if (e.Cell.Row.Cells["STATUS"].Value.ToString() == "0")
  625. {
  626. MessageUtil.ShowTips("待入库的库存不能进行盘库!");
  627. e.Cell.Value = "False";
  628. }
  629. else
  630. {
  631. PublicPur.GridEdite(ultraGrid2.ActiveRow);
  632. }
  633. }
  634. else if (e.Cell.Column.Key == "TOTAL_QTY")//判定盘库量
  635. {
  636. if (e.Cell.Value.ToString() != "")
  637. {
  638. if (!StringUtil.IsDouble(e.Cell.Value.ToString()))
  639. {
  640. MessageUtil.ShowTips("请输入数字类型!");
  641. e.Cell.Value = "";
  642. return;
  643. }
  644. if (Convert.ToDouble(e.Cell.Value.ToString()) < 0)
  645. {
  646. MessageUtil.ShowTips("盘库量不能小于0!");
  647. e.Cell.Value = "";
  648. return;
  649. }
  650. double diffNum = Convert.ToDouble(e.Cell.Row.Cells["TOTAL_QTY"].Value.ToString()) - Convert.ToDouble(e.Cell.Row.Cells["INV_QTY"].Text.Trim());
  651. //if (diffNum == 0)
  652. //{
  653. // MessageUtil.ShowTips("盘库量不能等于库存量!");
  654. // e.Cell.Value = "";
  655. // return;
  656. //}
  657. //else
  658. if (diffNum > 0)
  659. {
  660. e.Cell.Row.Cells["DEAL_WAY"].Value = "盘盈";
  661. e.Cell.Row.Cells["DIFF_QTY"].Value = diffNum;
  662. return;
  663. }
  664. else if (diffNum < 0)
  665. {
  666. e.Cell.Row.Cells["DEAL_WAY"].Value = "盘亏";
  667. e.Cell.Row.Cells["DIFF_QTY"].Value = diffNum;
  668. }
  669. else
  670. {
  671. e.Cell.Row.Cells["DEAL_WAY"].Value = "";
  672. e.Cell.Row.Cells["DIFF_QTY"].Value = "";
  673. }
  674. }
  675. else
  676. {
  677. e.Cell.Row.Cells["DEAL_WAY"].Value = "";
  678. e.Cell.Row.Cells["DIFF_QTY"].Value = "";
  679. }
  680. }
  681. //else if (e.Cell.Column.Key == "DIFF_QTY")//判定差异量
  682. //{
  683. // if (e.Cell.Value.ToString() != "")
  684. // {
  685. // if (!StringUtil.IsDouble(e.Cell.Value.ToString()))
  686. // {
  687. // MessageUtil.ShowTips("请输入数字类型!");
  688. // e.Cell.Value = "";
  689. // return;
  690. // }
  691. // if (e.Cell.Row.Cells["DEAL_WAY"].Text.Trim() == "")
  692. // {
  693. // MessageUtil.ShowTips("请选择处理类型!");
  694. // e.Cell.Value = "";
  695. // return;
  696. // }
  697. // if (e.Cell.Row.Cells["DEAL_WAY"].Text.Trim() == "盘亏" && Convert.ToDouble(e.Cell.Row.Cells["DIFF_QTY"].Value.ToString()) > Convert.ToDouble(e.Cell.Row.Cells["INV_QTY"].Text.Trim()))
  698. // {
  699. // MessageUtil.ShowTips("处理类型为盘亏差异量不能大于库存量!");
  700. // e.Cell.Value = "";
  701. // return;
  702. // }
  703. // }
  704. //}
  705. }
  706. private void ultraGrid2_AfterRowActivate(object sender, EventArgs e)
  707. {
  708. ultraGrid2.UpdateData();
  709. PublicPur.GridEdite(ultraGrid2.ActiveRow);
  710. }
  711. private void chkINV_PHYSIC_CheckedChanged(object sender, EventArgs e)
  712. {
  713. ultraINV_PHYSIC.Enabled = chkINV_PHYSIC.Checked;
  714. }
  715. private void chkINV_POS_CheckedChanged(object sender, EventArgs e)
  716. {
  717. ultraINV_POS.Enabled = chkINV_POS.Checked;
  718. }
  719. private void chkBASENAME_CheckedChanged(object sender, EventArgs e)
  720. {
  721. ultraQueryBASENAME.Enabled = chkBASENAME.Checked;
  722. }
  723. private void chkITEM_NAME_CheckedChanged(object sender, EventArgs e)
  724. {
  725. ultraQueryITEM_NAME.Enabled = chkITEM_NAME.Checked;
  726. }
  727. private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e)
  728. {
  729. if (ultraTabControl1.SelectedTab.Index == 0)
  730. {
  731. chkDate.Enabled = false;
  732. dateBegin.Enabled = false;
  733. }
  734. else if (ultraTabControl1.SelectedTab.Index == 1)
  735. {
  736. chkDate.Enabled = true;
  737. dateBegin.Enabled = true;
  738. }
  739. }
  740. }
  741. }