public MAS052_ChangeItem(BOMSetupViewDTO data) : base(data.UPPER_ITEM_CD.StrongValue) { InitializeComponent(); tsbAdd.Text = "Change"; m_data = data; }
/// <summary> /// ปรังปรุงการ เปิด/ปิดของปุ่มเลื่อนค่า Seq /// </summary> private void UpdateUpDownButton() { int rowIndex = shtView.ActiveRowIndex; if (shtView.RowCount == 0 || rowIndex < 0) { CtrlUtil.EnabledControl(false, btnMoveDown, btnMoveUp); return; } BOMSetupViewDTO dto = ((BOMNode)shtView.Rows[shtView.ActiveRowIndex].Tag).DTO; List <BOMNode> nodes = GetNodes(dto.UPPER_ITEM_CD.StrongValue, dto.LOWER_ITEM_CD.StrongValue); BOMNode node = null; if (nodes != null && nodes.Count > 0) { node = nodes[0]; } if (node == null) { CtrlUtil.EnabledControl(false, btnMoveDown, btnMoveUp); return; } if (node.Parent == null) { CtrlUtil.EnabledControl(false, btnMoveUp, btnMoveDown); return; } if (node.Equals(node.Parent.FirstNode)) { CtrlUtil.EnabledControl(false, btnMoveUp); } else { CtrlUtil.EnabledControl(true, btnMoveUp); } if (node.Equals(node.Parent.LastNode)) { CtrlUtil.EnabledControl(false, btnMoveDown); } else { CtrlUtil.EnabledControl(true, btnMoveDown); } }
private void miDeleteTree_Click(object sender, EventArgs e) { // Delete RawMaterial item Only!!!! BOMNode activeNode = shtView.ActiveRow.Tag as BOMNode; BOMSetupViewDTO activeBOMDTO = activeNode.DTO; List <BOMNode> listBuffer = new List <BOMNode>(); RetrieveListOfNodes(activeNode, listBuffer); if (IsTopItem(shtView.ActiveRowIndex)) { for (int i = 0; i < listBuffer.Count; i++) { listBuffer[i].Remove(); } } else { // ลบ Node ที่ถูกคลิก activeNode.Remove(); // Remove node that has same upper item code. List <BOMNode> listSameUpper = GetNodes(activeBOMDTO.UPPER_ITEM_CD.StrongValue, activeBOMDTO.LOWER_ITEM_CD.StrongValue); for (int i = 0; i < listSameUpper.Count; i++) { listSameUpper[i].Remove(); } // Remove node not same upper item code, but has same lower item code. List <BOMNode> listNotSameUpper = GetNodesOnLowerItem(activeBOMDTO.LOWER_ITEM_CD.StrongValue); for (int i = 0; i < listNotSameUpper.Count; i++) { BOMNode node = listNotSameUpper[i]; node.Nodes.Clear(); } } for (int i = 0; i < listBuffer.Count; i++) { DeleteSqlExecute execute1 = new DeleteSqlExecute(listBuffer[i].DTO); m_executeScript.Add(execute1); } shtView.RowCount = 0; FillBOMNodeToGrid(m_rootBOMNode); CollapseNode(m_rootBOMNode); ExpandNode(m_rootBOMNode); }
private void fpView_SelectionChanged(object sender, SelectionChangedEventArgs e) { // เมื่อมีการเปลี่ยนแถว จะโหลดข้อมูลของแถวที่เลือกแสดงบนหน้าจอ BOMSetupViewDTO dto = ((BOMNode)shtView.Rows[e.Range.Row].Tag).DTO; /* * if (dto == null) * ClearSection_2(); * else * LoadBOMDTOToScreen(dto); */ // ปรับปรุงสถานะของปุ่ม Up-Down สำหรับเปลี่ยน SeqNo UpdateUpDownButton(); }
/// <summary> /// Write list of BOM structure to root BOMNode. /// </summary> /// <param name="listData"></param> /// <returns></returns> private BOMNode WriteToBOMNode(List <BOMSetupViewDTO> listData) { //############## // Generate BOMNode Structure //############## BOMNode rootNode = null; BOMNode currentNode = null; for (int i = 0; i < listData.Count; i++) { BOMSetupViewDTO dto = listData[i]; BOMNode node = new BOMNode(dto); if (dto.LEVEL.StrongValue == 0) { rootNode = node; currentNode = rootNode; } else if (dto.LEVEL.StrongValue > currentNode.DTO.LEVEL.StrongValue) { currentNode.Nodes.Add(node); } else if (dto.LEVEL.StrongValue == currentNode.DTO.LEVEL.StrongValue) { currentNode.Parent.Nodes.Add(node); } else { // move back currentNode. int posBack = (currentNode.DTO.LEVEL.StrongValue - dto.LEVEL.StrongValue) + 1; for (int iMoveBack = 0; iMoveBack < posBack; iMoveBack++) { currentNode = (BOMNode)currentNode.Parent; } currentNode.Nodes.Add(node); } currentNode = node; } // end for-loop. return(rootNode); }
/// <summary> /// ตรวจสอบ Node ก่อนที่จะทำการเปลี่ยน LowerItem. /// </summary> private bool CheckBeforeChangeItem(BOMNode activeNode, BOMNode newNode) { //== Check Recursion Looping. List <BOMNode> listNewChild = new List <BOMNode>(); RetrieveListOfNodes(newNode, listNewChild); List <BOMNode> listTopNode = new List <BOMNode>(); RetrieveListOfTopNodes((BOMNode)activeNode.Parent, listTopNode); for (int i = 0; i < listTopNode.Count; i++) { for (int j = 0; j < listNewChild.Count; j++) { if (Equals(listTopNode[i].DTO.LOWER_ITEM_CD.Value, listNewChild[j].DTO.LOWER_ITEM_CD.Value)) { MessageDialog.ShowBusiness(this, null, "Recursive occurs."); return(false); } } } //== Check duplicate Node on same level. BOMNode parentNode = (BOMNode)activeNode.Parent; for (int i = 0; i < parentNode.Nodes.Count; i++) { BOMSetupViewDTO childDTO = ((BOMNode)parentNode.Nodes[i]).DTO; if (Equals(childDTO.LOWER_ITEM_CD.Value, newNode.DTO.LOWER_ITEM_CD.Value)) { MessageDialog.ShowBusiness(this, null, "Duplicate occurs."); return(false); } } return(true); }
/// <summary> /// Update การแสดงผลใน Grid ให้ตรงตาม DTO ที่เก็บไว้ใน Tag /// </summary> /// <param name="rowIndex"></param> private void UpdateRowGrid(int rowIndex) { try { int iRow = rowIndex; BOMNode node = shtView.Rows[iRow].Tag as BOMNode; BOMSetupViewDTO dto = node.DTO; int whiteSpaceNum = GetNumWhiteSpaceAtLevel(node.Level); string space = string.Empty.PadLeft(whiteSpaceNum, ' '); shtView.Cells[rowIndex, (int)eColView.ITEM_CD].Value = space + dto.LOWER_ITEM_CD.Value; shtView.Cells[rowIndex, (int)eColView.ITEM_DESC].Value = dto.LOWER_ITEM_DESC.Value; shtView.Cells[rowIndex, (int)eColView.ITEM_CLS].Value = dto.LOWER_ITEM_CLS.Value; shtView.Cells[rowIndex, (int)eColView.LOT_CONTROL_CLS].Value = dto.LOWER_LOT_CONTROL_CLS.Value; shtView.Cells[rowIndex, (int)eColView.CONSUMTION_CLS].Value = dto.LOWER_CONSUMTION_CLS.Value; //shtView.Cells[rowIndex, (int)eColView.SEQ].Value = dto.SEQ.Value; shtView.Cells[rowIndex, (int)eColView.CHILD_RATE].Value = dto.LOWER_QTY.Value; shtView.Cells[rowIndex, (int)eColView.PARENT_RATE].Value = dto.UPPER_QTY.Value; //shtView.Cells[rowIndex, (int)eColView.CHILD_ORDER_LOC].Value = dto.CHILD_ORDER_LOC_CD.Value; // edit by Chatas C. 13/6/2011 //if (dto.MRP_FLAG.StrongValue != string.Empty) //{ // BOMBIZ bizBom = new BOMBIZ(); // try // { // NZString str = ((Convert.ToString(dto.MRP_FLAG)).Substring(0, 2)).ToNZString(); // NZString strMRPFlag = bizBom.FindMRPFlag(str); // shtView.Cells[rowIndex, (int)eColView.MRP_FLAG].Value = str + " : " +strMRPFlag; // } // catch (Exception ex) // { } //} } catch (Exception err) { MessageDialog.ShowBusiness(this, null, err.Source); } }
private void miDeleteItem_Click(object sender, EventArgs e) { // Delete RawMaterial item Only!!!! BOMNode activeNode = shtView.ActiveRow.Tag as BOMNode; BOMSetupViewDTO activeBOMDTO = activeNode.DTO; List <BOMNode> listNodes = GetNodes(activeBOMDTO.UPPER_ITEM_CD.StrongValue, activeBOMDTO.LOWER_ITEM_CD.StrongValue); for (int i = 0; i < listNodes.Count; i++) { listNodes[i].Remove(); } shtView.RowCount = 0; FillBOMNodeToGrid(m_rootBOMNode); CollapseNode(m_rootBOMNode); ExpandNode(m_rootBOMNode); DeleteSqlExecute execute1 = new DeleteSqlExecute(activeBOMDTO); m_executeScript.Add(execute1); }
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 miAddChildItem_Click(object sender, EventArgs e) { BOMNode activeNode = shtView.ActiveRow.Tag as BOMNode; BOMSetupViewDTO activeBOMDTO = activeNode.DTO; MAS051_RegisterBOM dialog = new MAS051_RegisterBOM(activeBOMDTO.LOWER_ITEM_CD.StrongValue); 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) { //if (listCopyNode[0].Nodes.Count > 0) // has child. copyNode = (BOMNode)listCopyNode[0].Clone(); } else { List <BOMSetupViewDTO> dbListDTO = m_bomSetupController.LoadBOMSetup(selectedItem.ITEM_CD); copyNode = WriteToBOMNode(dbListDTO); } // == Validate before add child item. bool bCheck = CheckBeforeAddNewChildItem(activeNode, copyNode); if (bCheck == false) { return; } //=================== BOMNode lastChildNode = (BOMNode)activeNode.LastNode; int nextSeq = 1; if (lastChildNode != null) { //nextSeq = lastChildNode.DTO.SEQ.NVL(0) + 1; } //BOMBIZ biz = new BOMBIZ(); //int nextSeq = biz.GetNextSequenceOfUpperItem(activeBOMDTO.LOWER_ITEM_CD); // Create new BOMDTO BOMSetupViewDTO dto = new BOMSetupViewDTO(); dto.UPPER_ITEM_CD.Value = activeBOMDTO.LOWER_ITEM_CD.Value; dto.LOWER_ITEM_CD.Value = selectedItem.ITEM_CD.Value; //dto.SEQ.Value = nextSeq; dto.UPPER_QTY.Value = selectedItem.UPPER_QTY.Value; dto.LOWER_QTY.Value = selectedItem.LOWER_QTY.Value; dto.UPPER_ITEM_CLS.Value = activeBOMDTO.LOWER_ITEM_CLS.Value; dto.UPPER_ITEM_DESC.Value = activeBOMDTO.LOWER_ITEM_DESC.Value; dto.UPPER_LOT_CONTROL_CLS.Value = activeBOMDTO.LOWER_LOT_CONTROL_CLS.Value; dto.UPPER_CONSUMTION_CLS.Value = activeBOMDTO.LOWER_CONSUMTION_CLS.Value; dto.LOWER_ITEM_DESC.Value = selectedItem.ITEM_DESC.Value; //dto.LOWER_ITEM_CLS.Value = selectedItem.ITEM_CLS.Value; //dto.LOWER_LOT_CONTROL_CLS.Value = selectedItem.LOT_CONTROL_CLS.Value; //dto.LOWER_CONSUMTION_CLS.Value = selectedItem.CONSUMTION_CLS.Value; dto.PATH.Value = activeBOMDTO.PATH.StrongValue + "~" + selectedItem.ITEM_CD.StrongValue; //dto.CHILD_ORDER_LOC_CD.Value = selectedItem.CHILD_ORDER_LOC_CD.Value; //dto.MRP_FLAG.Value = selectedItem.MRP_FLAG.Value; // Insert new node. List <BOMNode> listNodes = GetNodesOnLowerItem(activeBOMDTO.LOWER_ITEM_CD.StrongValue); for (int i = 0; i < listNodes.Count; i++) { BOMSetupViewDTO newDTO = dto.Clone() as BOMSetupViewDTO; BOMNode newNode = null; if (copyNode == null) { newNode = (BOMNode)copyNode.Clone(); newNode.DTO = newDTO; } else { newNode = copyNode.Clone() as BOMNode; newNode.DTO = newDTO; newNode.ExpandAll(); } listNodes[i].Nodes.Add(newNode); } shtView.RowCount = 0; FillBOMNodeToGrid(m_rootBOMNode); activeNode.Expand(); CollapseNode(m_rootBOMNode); ExpandNode(m_rootBOMNode); InsertSqlExecute execute1 = new InsertSqlExecute(dto); 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(); }
public BOMNode(BOMSetupViewDTO dto) { this.m_dto = dto; Text = this.ToString(); }