Пример #1
0
        private bool UpdateCoilBack(MaterialModel result, bool chk)
        {
            bool bolResult = false;
            if (chk)
            {
                #region Bind data.

                result.CBSelect = true;
                CoilBackModel CBack = new CoilBackModel();
                CBack.WorkOrderID = HeaderContent.WorkOrderID;
                CBack.TransactionLineID = result.TransactionLineID;
                CBack.CommodityCode = result.CommodityCode;
                CBack.SpecCode = result.SpecCode;
                CBack.CoatingCode = result.CoatingCode;
                CBack.Thick = result.Thick;
                CBack.Width = result.Width;
                CBack.Length = result.Length;
                CBack.Weight = result.RemainWeight;
                CBack.Qty = result.RemainQuantity;
                CBack.MCSSNo = result.MCSSNo;
                CBack.OldSerial = result.SerialNo;
                CBack.Gravity = result.Gravity;
                CBack.FrontPlate = result.FrontPlate;
                CBack.BackPlate = result.BackPlate;
                CBack.Status = result.Status;
                CBack.BussinessType = result.BussinessType;
                CBack.Possession = result.Possession;
                CBack.ProductStatus = Convert.ToInt32(result.ProductStatus);
                CBack.Note = "Add manual";

                #endregion Bind data.

                HeaderContent.CoilBacks = _repo.SaveCoilBack(epiSession, CBack).ToList();
                bolResult = true;
            }
            else if (!chk)
            {
                HeaderContent.CoilBacks = _repo.DeleteCoilBack(epiSession, HeaderContent.WorkOrderID, result.TransactionLineID).ToList();
                bolResult = false;
            }

            return bolResult;
        }
Пример #2
0
        private void dgvMaterial_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //if (OrderCompleted()) return;
            string risk = string.Empty;
            string msg = string.Empty;
            bool changeState = false;
            string colHeadName = dgvMaterial.Columns[e.ColumnIndex].HeaderText;
            string colName = dgvMaterial.Columns[e.ColumnIndex].Name;
            string strVal = dgvMaterial.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.GetString();
            string weight = dgvMaterial.Rows[e.RowIndex].Cells["weight"].Value.GetString();
            string qtyPack = dgvMaterial.Rows[e.RowIndex].Cells["qtyPack"].Value.GetString();
            string transId = dgvMaterial.Rows[e.RowIndex].Cells["transactionlineid"].Value.GetString();
            decimal parseDec = 0M;

            //Abort validation if cell is not in the column.
            if (colName == "usingweight" || colName == "quantity" || colName == "RemQuantity" || colName == "qtyPack")
            {
                if (!Decimal.TryParse(strVal, out parseDec))
                {
                    dgvMaterial.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0M;
                    dgvMaterial.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = string.Format(@"{0} must be format valid.", colHeadName);
                    return;
                }
                else
                {
                    dgvMaterial.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = string.Empty;
                }
            }

            var result = (from item in HeaderContent.Materials
                          where item.TransactionLineID == Convert.ToInt32(transId)
                          select item).FirstOrDefault();

            switch (colName)
            {
                case "usingweight":
                    changeState = (result.UsingWeight != Convert.ToDecimal(strVal));
                    if (changeState)
                    {
                        HeaderContent.Materials.Where(p => p.TransactionLineID.ToString().Equals(transId)).ToList()
                                                            .ForEach(i => i.UsingWeight = Convert.ToDecimal(strVal));

                        var coilExist = HeaderContent.CoilBacks.Where(p => p.TransactionLineID.ToString().Equals(transId)).ToList();

                        if (result.ValidateToCoilBackAuto(HeaderContent.CoilBackRoles, out risk, out msg) || coilExist.Count > 0)
                        {
                            MessageBox.Show("The remain weight to matched the coil back rule, and then we will Create/Update coil back.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            #region Bind data.

                            result.CBSelect = true;
                            CoilBackModel CBack = new CoilBackModel();
                            CBack.WorkOrderID = HeaderContent.WorkOrderID;
                            CBack.TransactionLineID = result.TransactionLineID;
                            CBack.CommodityCode = result.CommodityCode;
                            CBack.SpecCode = result.SpecCode;
                            CBack.CoatingCode = result.CoatingCode;
                            CBack.Thick = result.Thick;
                            CBack.Width = result.Width;
                            CBack.Length = result.Length;
                            CBack.Weight = result.RemainWeight;
                            CBack.Qty = result.RemainQuantity;
                            CBack.MCSSNo = result.MCSSNo;
                            CBack.OldSerial = result.SerialNo;
                            CBack.Gravity = result.Gravity;
                            CBack.FrontPlate = result.FrontPlate;
                            CBack.BackPlate = result.BackPlate;
                            CBack.Status = result.Status;
                            CBack.BussinessType = result.BussinessType;
                            CBack.Possession = result.Possession;
                            CBack.ProductStatus = Convert.ToInt32(result.ProductStatus);
                            CBack.Note = msg;

                            #endregion Bind data.

                            HeaderContent.CoilBacks = _repo.SaveCoilBack(epiSession, CBack).ToList();
                            result.CBSelect = true;
                        }
                        else if (coilExist.Count > 0 && result.RemainWeight == 0)
                        {
                            MessageBox.Show("The RemainWeight = 0 still have CoilBack then system will delete coil-back!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            HeaderContent.CoilBacks = _repo.DeleteCoilBack(epiSession, HeaderContent.WorkOrderID, result.TransactionLineID).ToList();
                            result.CBSelect = false;
                        }
                        result.CalculateUsingLength();
                    }
                    break;

                case "usingLengthM":
                    changeState = (result.UsingLengthM != Convert.ToDecimal(strVal));
                    string usingLengthM = dgvMaterial.Rows[e.RowIndex].Cells["usingLengthM"].Value.GetString();
                    string LengthM = dgvMaterial.Rows[e.RowIndex].Cells["LengthM"].Value.GetString();
                    decimal val = (Convert.ToDecimal(weight) * Convert.ToDecimal(usingLengthM)) / Convert.ToDecimal(LengthM);

                    result.UsingWeight = val;
                    result.UsingLengthM = Convert.ToDecimal(usingLengthM);
                    break;

                case "SelectCB":
                    bool chk = (bool)dgvMaterial.Rows[e.RowIndex].Cells["SelectCB"].Value;
                    changeState = (result.CBSelect != chk);

                    //When was value change.
                    if (changeState)
                    {
                        if (CheckCoilBackState(result) && chk)     //Insert/Update coil-back
                        {
                            DialogResult diaResulta = MessageBox.Show("Are you sure to add coil back.", "Row validate.", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                            if (diaResulta == DialogResult.Yes)
                            {
                                result.CBSelect = UpdateCoilBack(result, true);
                            }
                        }
                        else if (!chk)    //Delete coil-back
                        {
                            DialogResult diaResult = MessageBox.Show("Are you sure to delete coil-back.", "Row validate error!.", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                            if (diaResult == DialogResult.Yes)
                            {
                                result.CBSelect = UpdateCoilBack(result, false);
                            }
                        }
                    }

                    break;
            }

            if (changeState)
            {
                dgvMaterial.Rows[e.RowIndex].Cells["usingweight"].Value = result.UsingWeight;
                dgvMaterial.Rows[e.RowIndex].Cells["remainWeight"].Value = result.RemainWeight;
                dgvMaterial.Rows[e.RowIndex].Cells["RemQuantity"].Value = result.RemainQuantity;
                dgvMaterial.Rows[e.RowIndex].Cells["SelectCB"].Value = result.CBSelect;
                dgvMaterial.Rows[e.RowIndex].Cells["LengthM"].Value = result.LengthM;
                dgvMaterial.Rows[e.RowIndex].Cells["usingLengthM"].Value = result.UsingLengthM;
                dgvMaterial.Rows[e.RowIndex].Cells["remainLengthM"].Value = result.RemainLengthM;
                result.WorkDate = dptIssueDate.Value;
                var res = _repo.SaveMaterial(epiSession, result);
                HeaderContent.SumUsingWeight(HeaderContent.Materials);
                HeaderContent.CuttingDesign = HeaderContent.ReCalculateCuttingLine();
                ListCuttingGrid(HeaderContent.CuttingDesign);
                SetHeadContent(HeaderContent);
                ListCoilBackGrid(HeaderContent.CoilBacks);
            }
        }
Пример #3
0
        public IEnumerable<CoilBackModel> SaveCoilBack(SessionInfo _session, CoilBackModel data)
        {
            data.BackStep = GetCoilBackStep(data.OldSerial) + 1;
            data.Serial = data.OldSerial + Enum.GetName(typeof(CoilStep), Convert.ToInt32(data.BackStep));

            string sql = string.Format(@"IF NOT EXISTS
									    (
										    SELECT * FROM ucc_pln_CoilBack (NOLOCK)
										    WHERE TransactionLineID = {1}
									    )
                                        BEGIN
                                            INSERT INTO ucc_pln_CoilBack
                                                       (WorkOrderID
                                                       ,TransactionLineID
                                                       ,SeqID
                                                       ,Serial
                                                       ,Cmdty
                                                       ,Spec
                                                       ,Coating
                                                       ,Thick
                                                       ,Width
                                                       ,Length
                                                       ,Weight
                                                       ,Qty
                                                       ,LengthM
                                                       ,MCSSNo
                                                       ,OldSerial
                                                       ,BackStep
                                                       ,Status
                                                       ,BT
                                                       ,Possession
                                                       ,ProductStatus
                                                       ,Description
                                                       ,Note
                                                       ,CoilBackState
                                                       ,CreationDate
                                                       ,LastUpdateDate
                                                       ,CreatedBy
                                                       ,UpdatedBy)
                                                 VALUES
                                                       ({0}  --<WorkOrderID, bigint,>
                                                       ,{1}  --<TransactionLineID, bigint,>
                                                       ,{2}  --<SeqID, int,>
                                                       ,N'{3}'  --<Serial, nvarchar(18),>
                                                       ,N'{4}'  --<Cmdty, nvarchar(10),>
                                                       ,N'{5}'  --<Spec, nvarchar(10),>
                                                       ,N'{6}'  --<Coating, nvarchar(10),>
                                                       ,{7}  --<Thick, decimal(20,9),>
                                                       ,{8}  --<Widht, decimal(20,9),>
                                                       ,{9}  --<Length, decimal(20,9),>
                                                       ,{10}  --<Weight, decimal(20,9),>
                                                       ,{11}  --<Qty, decimal(20,9),>
                                                       ,{12}  --<LengthM, decimal(20,9),>
                                                       ,N'{13}'  --<MCSSNo, nvarchar(18),>
                                                       ,N'{14}'  --<OldSerial, nvarchar(18),>
                                                       ,{15}  --<BackStep, int,>
                                                       ,N'{16}'  --<Status, nvarchar(10),>
                                                       ,N'{17}'  --<BT, nvarchar(10),>
                                                       ,{18}  --<Possession, int,>
                                                       ,{19}  --<ProductStatus, int,>
                                                       ,N'{20}'  --<Description, varchar(500),>
                                                       ,N'{21}'  --<Note, varchar(500),>
                                                       ,{22}  --<CoilBackState, int,>
                                                       ,GETDATE()  --<CreationDate, datetime,>
                                                       ,GETDATE()  --<LastUpdateDate, datetime,>
                                                       ,N'{23}'  --<CreatedBy, varchar(45),>
                                                       ,N'{23}'  --<UpdatedBy, varchar(45),>
		                                               )
                                            END
                                        ELSE
                                            BEGIN
                                                UPDATE ucc_pln_CoilBack
                                                   SET WorkOrderID = {0}  --<WorkOrderID, bigint,>
                                                      ,TransactionLineID = {1}  --<TransactionLineID, bigint,>
                                                      ,SeqID = {2}  --<SeqID, int,>
                                                      ,Serial = N'{3}'  --<Serial, nvarchar(18),>
                                                      ,Cmdty = N'{4}'  --<Cmdty, nvarchar(10),>
                                                      ,Spec = N'{5}' --<Spec, nvarchar(10),>
                                                      ,Coating = N'{6}'  --<Coating, nvarchar(10),>
                                                      ,Thick = {7} --<Thick, decimal(20,9),>
                                                      ,Width = {8}  --<Widht, decimal(20,9),>
                                                      ,Length = {9}  --<Length, decimal(20,9),>
                                                      ,Weight = {10}  --<Weight, decimal(20,9),>
                                                      ,Qty = {11}  --<Qty, decimal(20,9),>
                                                      ,LengthM = {12}  --<LengthM, decimal(20,9),>
                                                      ,MCSSNo =  N'{13}' --<MCSSNo, nvarchar(18),>
                                                      ,OldSerial = N'{14}'  --<OldSerial, nvarchar(18),>
                                                      ,BackStep = {15}  --<BackStep, int,>
                                                      ,Status = N'{16}'  --<Status, nvarchar(10),>
                                                      ,BT = N'{17}'  --<BT, nvarchar(10),>
                                                      ,Possession = {18}  --<Possession, int,>
                                                      ,ProductStatus = {19}  --<ProductStatus, int,>
                                                      ,Description = N'{20}'  --<Description, varchar(500),>
                                                      ,Note = N'{21}'  --<Note, varchar(500),>
                                                      ,CoilBackState = {22}  --<CoilBackState, int,>
                                                      ,LastUpdateDate = GETDATE()  --<LastUpdateDate, datetime,>
                                                      ,UpdatedBy = N'{23}'  --<UpdatedBy, varchar(45),>
                                                 WHERE TransactionLineID = {1}
                                            END" + Environment.NewLine
                                  , data.WorkOrderID
                                  , data.TransactionLineID
                                  , data.SeqID
                                  , data.Serial
                                  , data.CommodityCode
                                  , data.SpecCode       //{5}
                                  , data.CoatingCode
                                  , data.Thick
                                  , data.Width
                                  , data.Length
                                  , data.Weight         //{10}
                                  , data.Qty
                                  , (data.Length == 0) ? data.CBLengthMeter(data.Weight, data.Width, data.Thick, data.Gravity, data.FrontPlate, data.BackPlate) : Math.Round((data.Length / 1000), 2)
                                  , data.MCSSNo
                                  , data.OldSerial
                                  , data.BackStep.GetInt()       //{15}
                                  , data.Status
                                  , data.BussinessType
                                  , data.Possession
                                  , data.ProductStatus
                                  , data.Description        //{20}
                                  , data.Note
                                  , data.CoilBackState.GetInt()
                                  , _session.UserID
                                  );
            Repository.Instance.ExecuteWithTransaction(sql, "Update Cutting");

            return GetCoilBackAll(data.WorkOrderID);
        }