Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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();
        }