private void miEditItem_Click(object sender, EventArgs e) { BOMNode activeNode = shtView.ActiveRow.Tag as BOMNode; BOMSetupViewDTO activeBOMDTO = activeNode.DTO; //if(activeBOMDTO.MRP_FLAG.Value.ToString().Length > 2) // activeBOMDTO.MRP_FLAG = ((Convert.ToString(activeBOMDTO.MRP_FLAG.StrongValue)).Substring(0, 2)).ToNZString(); MAS052_ChangeItem dialog = new MAS052_ChangeItem(activeBOMDTO); dialog.ShowDialog(); if (dialog.IsSelected) { BOMRegisterUIDM selectedItem = dialog.SelectedItem; //== Decision to use data from in-memory or database. List <BOMNode> listCopyNode = GetNodesOnLowerItem(selectedItem.ITEM_CD.StrongValue); BOMNode copyNode = null; if (listCopyNode != null && listCopyNode.Count > 0) { // Use explosion BOM from in-memory. copyNode = (BOMNode)listCopyNode[0].Clone(); } else { // Load Explosion BOM from database. List <BOMSetupViewDTO> dbListDTO = m_bomSetupController.LoadBOMSetup(selectedItem.ITEM_CD); copyNode = WriteToBOMNode(dbListDTO); } //== Create new DTO. //BOMSetupViewDTO dto = activeNode.DTO.Clone() as BOMSetupViewDTO; BOMSetupViewDTO dto = copyNode.DTO.Clone() as BOMSetupViewDTO; dto.UPPER_ITEM_CD.Value = activeBOMDTO.UPPER_ITEM_CD.Value; dto.UPPER_ITEM_CLS.Value = activeBOMDTO.UPPER_ITEM_CLS.Value; dto.UPPER_ITEM_DESC.Value = activeBOMDTO.UPPER_ITEM_DESC.Value; dto.UPPER_LOT_CONTROL_CLS.Value = activeBOMDTO.UPPER_LOT_CONTROL_CLS.Value; dto.LOWER_ITEM_CD.Value = selectedItem.ITEM_CD.Value; //dto.LOWER_ITEM_CLS.Value = selectedItem.ITEM_CLS.Value; dto.LOWER_ITEM_DESC.Value = selectedItem.ITEM_DESC.Value; //dto.LOWER_LOT_CONTROL_CLS.Value = selectedItem.LOT_CONTROL_CLS.Value; //dto.SEQ.Value = activeBOMDTO.SEQ.Value; dto.UPPER_QTY.Value = selectedItem.UPPER_QTY.Value; dto.LOWER_QTY.Value = selectedItem.LOWER_QTY.Value; //dto.CHILD_ORDER_LOC_CD.Value = selectedItem.CHILD_ORDER_LOC_CD.Value; //dto.MRP_FLAG.Value = selectedItem.MRP_FLAG.Value; copyNode.DTO = dto; List <BOMNode> listNodes = GetNodes(activeBOMDTO.UPPER_ITEM_CD.StrongValue, activeBOMDTO.LOWER_ITEM_CD.StrongValue); for (int i = 0; i < listNodes.Count; i++) { // Remove old node and replace with new node. BOMNode oldNode = listNodes[i]; int oldIndex = oldNode.Index; BOMNode parentNode = (BOMNode)oldNode.Parent; oldNode.Remove(); BOMNode newNode = (BOMNode)copyNode.Clone(); newNode.ExpandAll(); parentNode.Nodes.Insert(oldIndex, newNode); } shtView.RowCount = 0; FillBOMNodeToGrid(m_rootBOMNode); CollapseNode(m_rootBOMNode); ExpandNode(m_rootBOMNode); UpdateSqlExecute execute1 = new UpdateSqlExecute(dto, activeBOMDTO.UPPER_ITEM_CD, activeBOMDTO.LOWER_ITEM_CD); m_executeScript.Add(execute1); SetOrderLoactionandMRPFlag(); } }
private void MoveSequenceDown(int rowIndex) { BOMNode activeNode = shtView.Rows[rowIndex].Tag as BOMNode; BOMNode activeLowerNode = activeNode.Parent.Nodes[activeNode.Index + 1] as BOMNode; BOMSetupViewDTO currentBOM = activeNode.DTO; List <BOMNode> listNodes = GetNodes(currentBOM.UPPER_ITEM_CD.StrongValue, currentBOM.LOWER_ITEM_CD.StrongValue); for (int i = 0; i < listNodes.Count; i++) { BOMNode currentNode = listNodes[i]; BOMNode lowerNode = currentNode.Parent.Nodes[currentNode.Index + 1] as BOMNode; //== Update sequence in DTO object. //int currentSeq = currentNode.DTO.SEQ.NVL(1); //currentNode.DTO.SEQ.Value = lowerNode.DTO.SEQ.Value; //lowerNode.DTO.SEQ.Value = currentSeq; // swap position on node-list. BOMNode parentNode = currentNode.Parent as BOMNode; currentNode.Remove(); if (parentNode != null) { parentNode.Nodes.Insert(lowerNode.Index + 1, currentNode); } //== Save script Update. UpdateSqlExecute execute1 = new UpdateSqlExecute( (BOMDTO)currentNode.DTO.Clone(), currentNode.DTO.UPPER_ITEM_CD, currentNode.DTO.LOWER_ITEM_CD); UpdateSqlExecute execute2 = new UpdateSqlExecute( (BOMDTO)lowerNode.DTO.Clone(), lowerNode.DTO.UPPER_ITEM_CD, lowerNode.DTO.LOWER_ITEM_CD); m_executeScript.Add(execute1); m_executeScript.Add(execute2); } //TODO: ตอนที่ทำการย้าย Node ที่มีลูกหลายๆ ชั้น ยังแสดงไม่ถูกต้อง // Refill grid. shtView.RowCount = 0; FillBOMNodeToGrid(m_rootBOMNode); // Expand / collapse the last action. if (activeNode.IsExpanded) { ExpandNode(activeNode); } else { CollapseNode(activeNode); } if (activeLowerNode.IsExpanded) { ExpandNode(activeLowerNode); } else { CollapseNode(activeLowerNode); } // Hilight current row. int newRowIndex = SearchRowIndex(activeNode, eSearchType.Forward, 0); shtView.SetActiveCell(newRowIndex, 0); shtView.AddSelection(newRowIndex, 0, 1, 1); // Update button. UpdateUpDownButton(); }