From 7b5fdd9f74eda1e4ecb36c5ea0ab7b5623aa82a5 Mon Sep 17 00:00:00 2001 From: Rich Date: Mon, 5 Nov 2012 21:58:02 +0000 Subject: [PATCH] Use "GetItemAndChildren" to assure that the latest data is used. Fixed logic if trying to create a PDF while a previous PDF is open. --- .../DlgPrintProcedure.cs | 20 ++- .../dlgApproveProcedure.cs | 122 ++---------------- .../frmPDFStatusForm.cs | 6 +- 3 files changed, 29 insertions(+), 119 deletions(-) diff --git a/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs b/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs index 5c5e45eb..d19a16c3 100644 --- a/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs +++ b/PROMS/VEPROMS User Interface/DlgPrintProcedure.cs @@ -393,11 +393,14 @@ namespace VEPROMS pbPDFsStatus.Text = string.Format("Creating PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); pbPDFsStatus.Value = i; // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. - frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNum, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, PDFPath, cbd, txbPDFName.Text, new Point(Left,Bottom-50)); - frmStatus.CloseWhenDone = true; - frmStatus.CancelStop = true; - frmStatus.ShowDialog(); - if (frmStatus.CancelPrinting) break; + using (ProcedureInfo pi = ProcedureInfo.GetItemAndChildren(myProc.ItemID)) + { + frmPDFStatusForm frmStatus = new frmPDFStatusForm(pi, RevNum, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, PDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50)); + frmStatus.CloseWhenDone = true; + frmStatus.CancelStop = true; + frmStatus.ShowDialog(); + if (frmStatus.CancelPrinting) break; + } } } pbPDFsStatus.Visible = false; @@ -429,8 +432,11 @@ namespace VEPROMS // Also check that format allows override. ChangeBarDefinition cbd = DetermineChangeBarSettings(); // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. - frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNum, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, PDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50)); - frmStatus.ShowDialog(); + using (ProcedureInfo pi = ProcedureInfo.GetItemAndChildren(MyProcedure.ItemID)) + { + frmPDFStatusForm frmStatus = new frmPDFStatusForm(pi, RevNum, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, PDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50)); + frmStatus.ShowDialog(); + } this.Close(); ShowDebugFiles(); } diff --git a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs index e77b1f54..1429de4e 100644 --- a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs +++ b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs @@ -641,11 +641,11 @@ namespace VEPROMS RevNumber = proc.ProcedureConfig.Print_Rev == string.Empty ? "0" : proc.ProcedureConfig.Print_Rev; //AppRevDate Change //DateTime revdate; - //string print_revdate = proc.ProcedureConfig.Print_RevDate; + RevDate = proc.ProcedureConfig.Print_RevDate; //if (print_revdate == string.Empty && DateTime.TryParse(RevNumber, out revdate)) - // ; + // ; //else - // revdate = DateTime.TryParse(proc.ProcedureConfig.Print_RevDate.Replace("-","/").Replace("00/","01/"), out revdate) ? revdate : DateTime.Now; + // revdate = DateTime.TryParse(proc.ProcedureConfig.Print_RevDate.Replace("-", "/").Replace("00/", "01/"), out revdate) ? revdate : DateTime.Now; //RevDate = revdate; } } @@ -989,10 +989,13 @@ namespace VEPROMS // Moved to end so that Item and Content are saved at the same time //UpdateProcedureConfig(pi, ap.RevNumber, ap.RevDate, myDTS); string waterMark = Stage.Get(RevStage).IsApproved > 0 ? null : Stage.Get(RevStage).Name; - frmPDFStatusForm frm = new frmPDFStatusForm(pi, ap.RevNumber, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location); - frm.AllowAllWatermarks = true; - frm.CloseWhenDone = !ViewPDF; - frm.ShowDialog(); + using (ProcedureInfo myproc = ProcedureInfo.GetItemAndChildren(pi.ItemID)) + { + frmPDFStatusForm frm = new frmPDFStatusForm(myproc, ap.RevNumber, /* revdate change: ap.RevDate.ToString("MM/dd/yyyy") ,*/ waterMark, false, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(pi.MyDocVersion.MyConfig as DocVersionConfig, pi.ActiveFormat), pdfTmp, location); + frm.AllowAllWatermarks = true; + frm.CloseWhenDone = !ViewPDF; + frm.ShowDialog(); + } pdfFile = new FileInfo(pdfPath); fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); byte[] buf = new byte[pdfFile.Length]; @@ -1007,109 +1010,6 @@ namespace VEPROMS //UpdateProcedureDTS(pi, DateTime.Now); } return true; - #region old code - //if (MyProcedures.Count == 1) - //{ - // ApprovalProcedure ap = MyProcedures[0]; - // //string revnum = RevNumber == "*" ? pi.ProcedureConfig.Print_Rev : RevNumber == "+" ? (int.Parse(Regex.Replace(pi.ProcedureConfig.Print_Rev, "^ *([0-9]*)[^0-9]*$", "0$1")) + 1).ToString() : RevNumber; - // //if (FancyShmancyRevCompare(revnum, ric.RevisionNumber) < 0) - // //{ - // // MessageBox.Show("Revision Number must be greater than or equal to current revision","Revision Number Error",MessageBoxButtons.OK,MessageBoxIcon.Stop); - // // return false; - // //} - // //jcb add 20111029 chronology report - // //end jcb add 20111029 chronology report - //} - //else - //{ - // ViewPDF = false; - // if (RevNumber != "*" && RevNumber != "+") - // { - // //need to check all procedures for adequate rev number - // bool hdr = false; - // StringBuilder msg = new StringBuilder(); - // foreach (ApprovalProcedure ap in MyProcedures) - // { - // ProcedureInfo pi = ap.ProcInfo; - // RevisionInfo ri = RevisionInfo.GetCurrentByItemID(pi.ItemID); - // if (FancyShmancyRevCompare(RevNumber, ri.RevisionNumber) < 0) - // { - // if (!hdr) - // { - // msg.Append("Revision Number is not greater than or equal to the current revision for the following procedure(s):"); - // msg.AppendLine(); - // msg.AppendLine(); - // hdr = true; - // } - // msg.Append(string.Format("{0} Revision {1}", pi.DisplayNumber, pi.ProcedureConfig.Print_Rev)); - // msg.AppendLine(); - // } - // } - // if (msg.Length > 0) - // { - // MessageBox.Show(msg.ToString(), "Revision Number Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); - // return false; - // } - // } - // foreach (ApprovalProcedure ap in MyProcedures) - // { - // ProcedureInfo pi = ap.ProcInfo; - // OnStatusUpdated(this,new ApprovalMessageArgs(string.Format("Processing {0}", pi.DisplayNumber))); - // //jcb add 20111029 chronology report - // string summaryPDF = Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MySummary.pdf"; - // ContentAuditInfoList cail = ContentAuditInfoList.GetSummary(pi.ItemID, pi.ItemID, false); - // AnnotationAuditInfoList aail = AnnotationAuditInfoList.GetChronology(pi.ItemID, pi.ItemID); - // Volian.Print.Library.PDFChronologyReport myChronoRpt = new Volian.Print.Library.PDFChronologyReport(summaryPDF, pi, cail, aail); - // myChronoRpt.BuildSummary(ViewPDF); - // FileInfo pdfFile = new FileInfo(summaryPDF); - // FileStream fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - // byte[] summaryBuf = new byte[pdfFile.Length]; - // fs.Read(summaryBuf, 0, summaryBuf.Length); - // fs.Close(); - // //end jcb add 20111029 chronology report - // RevisionInfo ric = RevisionInfo.GetCurrentByItemID(pi.ItemID); - // RevisionInfo rip = RevisionInfo.GetPreviousByItemID(pi.ItemID); - // string revnum = RevNumber == "*" ? pi.ProcedureConfig.Print_Rev : RevNumber == "+" ? (int.Parse(Regex.Replace(pi.ProcedureConfig.Print_Rev, "^ *([0-9]*)[^0-9]*$", "0$1")) + 1).ToString() : RevNumber; - // DateTime myDTS = pi.DTS; - // if (ric != null && revnum == ric.RevisionNumber && ric.LatestVersion.MyStage.IsApproved == 1) - // { - // myDTS = rip.DTS; - // UpdateProcedureDTS(pi, myDTS); - // } - // DateTime dts = RevDate == null ? pi.ProcedureConfig.Print_RevDate == string.Empty ? DateTime.Now : DateTime.Parse(pi.ProcedureConfig.Print_RevDate) : RevDate.Value; - // Revision revision = Revision.GetByItemIDAndRevisionNumber(pi.ItemID, revnum); - // if(revision == null) - // revision = Revision.MakeRevision(pi.ItemID, RevType, revnum, dts, RevNote, "", DateTime.Now, Volian.Base.Library.VlnSettings.UserID); - // else if (revision.Notes != RevNote || revision.RevisionDate != dts) - // { - // revision.Notes = RevNote; - // revision.RevisionDate = dts; - // revision = revision.Save(); - // } - // Check check = Check.MakeCheck(revision, Stage.Get(RevStage), RevisionInfo.BuildRevisionChecks(pi)); - // string pdfTmp = string.Format(@"{0}.pdf", pi.DisplayNumber); - // string pdfPath = string.Format(@"{0}\{1}", VlnSettings.TemporaryFolder, pdfTmp); - // UpdateProcedureConfig(pi, revnum, dts, myDTS); - // string waterMark = Stage.Get(RevStage).Name == "Approved" ? "" : Stage.Get(RevStage).Name; - // frmPDFStatusForm frm = new frmPDFStatusForm(pi, ap.RevNumber, ap.RevDate.ToString(), waterMark, false, ViewPDF, true, VlnSettings.TemporaryFolder, new ChangeBarDefinition(), pdfTmp, location); - // frm.CloseWhenDone = !ViewPDF; - // frm.ShowDialog(); - // //PromsPrinter pp = new PromsPrinter(pi, revnum, dts.ToString(), "", false, "", false, true, new ChangeBarDefinition(), pdfTmp); - // //pp.Print(VlnSettings.TemporaryFolder); - // pdfFile = new FileInfo(pdfPath); - // fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - // byte[] buf = new byte[pdfFile.Length]; - // fs.Read(buf, 0, buf.Length); - // fs.Close(); - // VEPROMS.CSLA.Library.Version version = VEPROMS.CSLA.Library.Version.MakeVersion(revision, Stage.Get(RevStage), buf, summaryBuf, DateTime.Now, VlnSettings.UserID); - // StageInfo si = StageInfo.Get(RevStage); - // if(si.IsApproved == 1) - // UpdateProcedureDTS(pi, DateTime.Now); - // //pdfFile.Delete(); - // } - // return true; - //} - #endregion } private void UpdateProcedureDTS(ProcedureInfo pi, DateTime dts) @@ -1126,7 +1026,7 @@ namespace VEPROMS if (pc == null) return; pc.Print_Rev = revNumber; //AppRevDate Change - //pc.Print_RevDate = revDate.ToString(); + pc.Print_RevDate = revDate.ToString("MM/dd/yyyy"); using (Item itm = Item.Get(procedureInfo.ItemID)) { itm.MyContent.Config = pc.ToString(); diff --git a/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs b/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs index 7a999080..90c0e326 100644 --- a/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs +++ b/PROMS/VEPROMS User Interface/frmPDFStatusForm.cs @@ -113,7 +113,11 @@ namespace VEPROMS Application.DoEvents(); MyPromsPrinter.StatusChanged += new PromsPrinterStatusEvent(pp_StatusChanged); DateTime tStart = DateTime.Now; - _PdfFile = MyPromsPrinter.Print(PDFPath); + do + { + _PdfFile = MyPromsPrinter.Print(PDFPath); + } + while (_PdfFile == null && MessageBox.Show("Try Again?", "PDF Creation Failed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes); if (_PdfFile == null) { this.Close();