Cyrious Estimates are numbered automatically by the system. However, the Estimate Number does not change with revisions. We have encountered instances where the client has selected the wrong estimate for the total price when crafting purchase orders or contracts and then pleaded confusion about which of the estimates submitted to choose from.
This page describes 2 approaches to creating a unique Estimate number when the Estimate is printed. The first uses the date and time and adds that to the Estimate number. This produces a long number - Ex: 112201_051020101630. The second uses the Sequence ID field of Cyrious which tracks every change to the estimate (including stages or non-numerical changes) which has the advantage of being a much shorter number - Ex: 112201_V4.
Approach number 1 uses the last modified date to indicate the “version” number of the Estimate. By concatenating or adding the Last Modified date in military time to the actual estimate number, we create a unique number to which we can refer when working with clients who have multiple estimates, even if created on the same day. To provide maximum flexbility to the User as to Estimate appearance and format, we use a Parameter to provide a choice whether to present the full number with the time or the “short version” of just the Estimate Number.
Approach number 2 also concatenates a number to the Estimate number but instead of the date uses the Sequence ID number which is a Cyrious internal tracking number showing the number of all changes to the Estimate (these may or may not be cost or formula based changes).
None
This will open an editing window which will look like the screen shot below (after you have pasted in the supplied code here, in this case the code for Approach 2).
IF Not {?Print Short Estimate No} THEN
"Estimate #: " & CSTR({TransHeader.EstimateNumber}, "####")
+ "_"+ CSTR(CDATE({TransHeader.ModifiedDate}),"MMddyy")
+ CSTR(CTIME({TransHeader.ModifiedDate}),"HHmm")
ELSE
"Estimate #: " & CSTR({TransHeader.EstimateNumber}, "####")
local datevar LastMod := DATE({TransHeader.ModifiedDate});
local timevar LastModTime := Time({TransHeader.ModifiedDate});
local booleanvar EditedEstimate := If {TransHeader.SeqID}>1 Then True Else False;
IF Not {?Print Short Estimate No} THEN
IF EditedEstimate Then
"Estimate #: " & CSTR({TransHeader.EstimateNumber}, "####")
+ "_V"+ CSTR({TransHeader.SeqID},0)
ELSE "Estimate #: " & CSTR({TransHeader.EstimateNumber}, "####")
ELSE
"Estimate #: " & CSTR({TransHeader.EstimateNumber}, "####")
Approach 2 Result
Contributor: Steve Gillispie, Acorn Sign Graphics
Date: 05/22/2010
Version: Control 04.40.1003.3102