Ejemplo n.º 1
0
        public MAS052_ChangeItem(BOMSetupViewDTO data) : base(data.UPPER_ITEM_CD.StrongValue)
        {
            InitializeComponent();

            tsbAdd.Text = "Change";

            m_data = data;
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        /// <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);
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
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.º 10
0
        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();
            }
        }
Ejemplo n.º 11
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();
        }
Ejemplo n.º 12
0
 public BOMNode(BOMSetupViewDTO dto)
 {
     this.m_dto = dto;
     Text       = this.ToString();
 }