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; }
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); } }
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); }