private void savebtn_Click(object sender, EventArgs e) { if (trackserial.Checked && (SerialPrefix == "" || SerialPrefix == null)) MessageBox.Show("Cannot use null serial prefix. Set the prefix or uncheck 'Track Serial Number'", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); else { try { //Commit Part Changes Part Part = new Part(DataList.EpicConn); PartDataSet Pdata = new PartDataSet(); //Pdata = (PartDataSet)DL.PartSearchDataSet(""); string serialWarning; string questionString; bool multipleMatch; string PartNumber = Partnumber_txt.Text; DataViewRowState DRState; if (!DataList.PartExists(PartNumber)) { Part.GetPartXRefInfo(ref PartNumber, "", "", out serialWarning, out questionString, out multipleMatch); Part.GetNewPart(Pdata); Part.ChangePartNum(PartNumber, Pdata); DRState = DataViewRowState.Added; } else { Pdata = Part.GetByID(PartNumber); DRState = DataViewRowState.Unchanged; #region Clear Bflush/SN Settings try { DataList.UpdateDatum(Pdata, "Part", 0, "TrackSerialNum", false.ToString()); DataList.UpdateDatum(Pdata, "Part", 0, "UseMaskSeq", false.ToString()); DataList.UpdateDatum(Pdata, "PartPlant", 0, "PartTrackSerialNum", false.ToString()); DataList.UpdateDatum(Pdata, "PartPlant", 0, "BackFlush", false.ToString()); Part.Update(Pdata); Pdata = Part.GetByID(PartNumber); } catch (Exception ex) { System.Diagnostics.Debug.Print(ex.Message); } #endregion } Pdata = UpdateDataSet(Pdata, DRState); //Add data to allow BO to create plant tables try { Part.Update(Pdata); if (bflush_chk.Checked) { //try to eliminate backflush if necessary DataList.UpdateDatum(Pdata, "PartPlant", 0, "BackFlush", bflush_chk.Checked.ToString()); } Part.Update(Pdata); } catch (Exception ex) { System.Diagnostics.Debug.Print(ex.Message); } if (trackserial.Checked) { Pdata = Part.GetByID(PartNumber); try { Part.ChangePartTrackSerialNum(trackserial.Checked, Pdata); } catch { //If the neat process fails, do it the hard way. DataList.UpdateDatum(Pdata, "Part", 0, "TrackSerialNum", true.ToString()); DataList.UpdateDatum(Pdata, "Part", 0, "UseMaskSeq", true.ToString()); DataList.UpdateDatum(Pdata, "Part", 0, "SNLastUsedSeq", ""); Part.Update(Pdata); Pdata = Part.GetByID(PartNumber); DataList.UpdateDatum(Pdata, "PartPlant", 0, "EnableSerialNum", true.ToString()); DataList.UpdateDatum(Pdata, "PartPlant", 0, "PartTrackSerialNum", true.ToString()); try { DataList.UpdateDatum(Pdata, "PartPlant", 0, "PhantomBOM", false.ToString()); } catch { } Part.Update(Pdata); Pdata = Part.GetByID(PartNumber); } DataList.UpdateDatum(Pdata, "Part", 0, "UseMaskSeq", true.ToString()); } //retrieve the new copy of the data Pdata = Part.GetByID(PartNumber); if (whse_cbo.Items.Count > 0) { Part.Update(Pdata); for (int i = 0; i < whse_cbo.Items.Count; i++) { whse_cbo.SelectedIndex = i; DataList.UpdateDatum(Pdata, "PartPlant", 0, "PrimWhse", whse_cbo.SelectedValue.ToString()); DataList.UpdateDatum(Pdata, "PartPlant", 0, "PrimWhseDescription", whse_cbo.Text); DataList.UpdateDatum(Pdata, "PartPlant", 0, "DBRowIdent", null); //if (trackserial.Checked) DataList.UpdateDatum(Pdata, "PartPlant", 0, "PartTrackSerialNum", trackserial.Checked.ToString()); } if (trackserial.Checked) { Part.ChangePartSNBaseDataType("MASK", Pdata); Part.ChangeSNMask(SerialMask, Pdata); } Part.Update(Pdata); DataList.UpdateDatum(Pdata, "PartPlant", 0, "BackFlush", bflush_chk.Checked.ToString()); if (planner_cbo.Enabled) { DataList.UpdateDatum(Pdata, "PartPlant", 0, "PersonID", planner_cbo.Text); DataList.UpdateDatum(Pdata, "PartPlant", 0, "PersonName", planner_cbo.Text); } //Update with warehouse information Part.Update(Pdata); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } finally { DataList.EpicClose(); this.Close(); } } }