Macros are available for two purposes:
1.To customise the default billing job fault description (within the stock grid) and invoice description. The macro can be specified at a global level, or can be overridden for a particular machine.
2.To customise the stock description at a job level. Macros with Meter as part are available. The macros are stock-specific and can be edited via View Stock > Machines > Macro Desc.
There are three areas where macros can be edited:
On the ribbon, go to Tools > Options > Machine > Machines
3.Within this area of Options, any macro with Meter in it is unavailable.
You can change the default Fault Desc. and Invoice Desc. by adding macros to the descriptions.
The available macro options are shown below.
Project > View/Edit Machine
Stock > View/Edit Stock
There are default macros set for the Meter Type and Billing Type drop-down lists on the Machines tab already.
The list of macros is available either by right clicking on the field, or by clicking the + button attached to the field.
Macros
Having some text before the macro is optional, as well as text after the actual macro:
{{"Text before="Project.Meter.Counter.Name}} is valid
Example: {"Last Read="Project.Meter.Job.Previous Job.Meter Read" "}}
As well as:
{{"Some text before="Project.Meter.Min - Base TF" Some text after"}}
And:
{{Project.Meter.Min - Base TF" This only has additional text after"}}
The ? Operator
This has two forms:
One where there is a true part and a false part:
{{<Macro to test>?<Value if true>:<Value if false}}
And another that just has a true part:
{{<Macro to test>?<Value if true>}}
The macro to test is evaluated and has a value. The macro will be set to the value of the value if true part. If the macro to test evaluates to nothing, the macro will be set to the value of the value if false part, if it exists, eg.
{{Project.Meter.Min - Base TF?"There is a min charge!":"There is no min charge for this one"}}
The macro Project.Meter.Min - Base TF is evaluated. If it has a value, the macro result will be:
There is a minimum charge.
If it does not have a value, the macro result will be:
There is no min charge for this one
The macro result can itself also contain a macro:
{{Project.Meter.Min - Base TF?Project.Meter.Counter.Name" charges a minimum charge"}}
If the Project.Meter.Min - Base TF isn’t empty then the above macro might evaluate to:
Min Charge charges a minimum charge
Note: All macros begin with {{ and end with }}
Macros in Options (also in Meter Specific Macros)
Macro |
Description |
Project.Card.Name |
The name of the card file attached to the machine. |
Project.Project # |
The Machine number. |
Project.Serial # |
The machine serial number. |
Project.Missed Cycles |
The number of times the machine has had its billing skipped. |
Project.Item.Code |
The machine Item code. |
Project.Item.Make |
The machine Item make. |
Project.Item.Model |
The machine Item model. |
Project.Item.Description |
The machine Item description. |
Project.Job.Bill Date |
For non-manual machines copier billing, this is the same as the Next Bill Date, otherwise it is the submission date, if supplied. There are sub-categories under this and following Project.Job entries in this table.. |
Project.Job.Date In |
The date the job was created. |
Project.Job.Date Due |
The date due on the job that was created. For copier billing jobs, this normally relates to the Next Bill Date on the machine. |
Project.Job.Read Date |
When manually entering a read, this date corresponds to the Date field in the Billing Meter Read screen. When a meter read job is generated via an MPS feed, this date will contain a value if it is supplied as part of the feed. |
Project.Job.Previous Job.Bill Date |
This corresponds to the Bill Date value for the previous job of the same type for the machine when ordered by Date Due. |
Project.Job.Previous Job.Date In |
The date in of the previous job on the machine. |
Project.Job.Previous Job.Date Due |
The date due of the previous job on the machine. |
Project.Job.Previous Job.Read Date |
The read date of the previous job on the machine. |
Project.Job.Previous Job.Date Out |
This is the date out value for the previous job of the same type for the machine when ordered by Date Due. This is typically the invoice date of the previous job. |
Project.Job.Next Job.Bill Date |
This is the calculated Next Bill Date for the machine. It takes into account the current Next Bill Date and Billed frequency. |
Meter Specific Macros (including the above macros)
Macro |
Description |
Project.Meter.Counter.Name |
The Meter Name as per the meter setup. |
Project.Meter.Rate TF |
The Rate Ex as per the meter setup. |
Project.Meter.Rate TP |
The Rate Inc as per the meter setup |
Project.Meter.Base TF |
For a Base Charge meter type, this is the Rate Ex, otherwise this is an empty value. |
Project.Meter.Base TP |
For a Base Charge meter type, this is the Rate Inc, otherwise this is an empty value. |
Project.Meter.Min TF |
For a Min Charge meter type, this is the Rate Ex, otherwise this is an empty value. |
Project.Meter.Min TP |
For a Min Charge meter type, this is the Rate Inc, otherwise this is an empty value. |
Project.Meter.Min – Base TF |
For v3.2 style machines, this is the minimum charge excluding tax, minus the base charge excluding tax. For post v3.2 machines this is the same as Rate TF, as minimum charges already exclude any base charge amounts. This macro is only supported for legacy reasons, and should not be used if there are no v3.2 style machines. |
Project.Meter.Min – Base TP |
For v3.2 style machines, this is the minimum charge including tax, minus the base charge including tax. For post v3.2 machines, this is the same as Rate TP, as minimum charges already exclude any base charge amounts. This macro is only supported for legacy reasons, and should not be used if there are no v3.2 style machines. |
Project.Meter.Effective Periods |
Returns the number of billing periods of the machine this particular meter is being billed for. For a quarterly billed meter on a monthly billed machine, this value will normally be 3. This calculation also takes into account the number of billing periods skipped. For the machine above, if the machine's billing had been skipped 4 months previously, this value would be 6 as it is now billing two quarters. |
Project.Meter.Missed Cycles |
This displays the number of missed cycles. If no cycles have been missed, this is an empty value. |
Project.Meter.Min Charge Pages |
This evaluates as the number of pages that would be required to make up the minimum charge. It considers who the meter is being billed to when performing the calculation. For example, a machine that has a Finance Black Meter and a Service Black Meter, as well as a minim charge. A similar effect can be achieved by using a Minimum Volume on a Black, Colour or Scan meter. |
Project.Meter.Job.Expire Date |
If a prepaid meter generates a purchase of a prepaid block of pages, this macro evaluates to the date that the pages expire. It is based on the Next Bill Date at the time the prepaid block is purchased. |
Project.Meter.Job.Expire Meter Read |
For a prepaid meter, this evaluates to the meter read on the linked meter when any purchased pages will expire. |
Project.Meter.Over Rate TF |
The Overs Rate Ex as per the meter setup. This evaluates to nothing for non rate based meter types. |
Project.Meter.Over Rate TP |
The Overs Rate Inc as per the meter setup. This evaluates to nothing for non rate based meter types. |
Project Meter.Job.Over Total |
The dollar amount of the total overs charged. |
Project.Meter.Minimum Volume |
The minimum volume as per the meter setup. |
Project.Meter.Job.Meter Read |
The new count of the meter ignoring the effect of any estimates. |
Project.Meter.Job.Effective Meter Read |
The new count of the meter including any estimated amounts. |
Project.Meter.Job.Estimated Meter Read |
The new count of the meter if the read is an estimate. This evaluates to nothing for a real read. |
Project.Meter.Job.Previous Job.Meter Read |
This corresponds to the meter read value for the same meter on the previous job of the same type for the machine when ordered by Date Due. |
Project.Meter.Job.Previous Job.Effective Meter Read |
Meter read on previous machine job. |
Project.Meter.Job.Previous Job.Estimated Meter Read |
Estimated meter read on previous machine job. |
Project.Meter.Job.Qty |
The total quantity billed for the particular meter including standard, unders and overs billing, but excluding estimated amounts. |
Project.Meter.Job.Estimated Qty |
The total quantity billed for the particular meter including standard, unders and overs billing, only including estimated amounts. |
Project.Meter.Job.Pages |
The total quantity billed for the particular meter including standard, unders and overs billing, but excluding any estimated amounts. This evaluates to nothing for non rate based meters. |
Project.Meter.Job.Effective Pages |
The total quantity billed for the particular meter, regardless of whether it is an actual or estimated amount. |
Project.Meter.Job.Standard Qty |
The standard quantity billed for the meter |
Project.Meter.Job.Under Qty |
The under quantity billed for the meter. |
Project.Meter.Job.Over Qty |
The over quantity billed for the meter. |
Project.Meter.Job.Purchases Prepaid Blocks |
The number of prepaid blocks purchased. |
Project.Meter.Job.Purchased Prepaid Pages |
The total number of pages (blocks X block size) of prepaid pages purchased. |
Project.Meter.Job.Previous Job.Prepaid Count |
The number of prepaid pages available after the previous meter read. |
Project.Meter.Job.Prepaid Count |
The number of prepaid pages available after the current meter read. |
Project.Meter.Prepaid Block Size |
The Prepaid Bulk Pages as per the meter setup for a prepaid meter. |
Project.Meter.Job.Bill Date |
This is the Next Bill Date when a machine is being billed. Exactly the same as Project.Job.Bill Date. Kept separate for symmetry. |
Project.Meter.Job,Date In |
The date the meter read job was created. Exactly the same as Project.Job.Date In. |
Project.Meter.Job.Date Due |
The date the meter read job is due. Exactly the same as Project.Job.Date Due. |
Project.Meter.Job.Read Date |
When manually entering a read, this date corresponds to the Date field in the Billing Meter Read screen. When a meter read job is generated via an MPS feed, this date will contain a value if it is supplied as part of the feed. Exactly the same as Project.Job.Read Date. |
Project.Meter.Job.Previous Job.Bill Date |
The bill date of the job the last time this meter was billed. May be different to Project.Job.Previous Job.Bill Date if the meter is billed at a different periodicity to the machine. |
Project.Meter.Job.Previous Job.Date In |
The date in of the job the last time this meter was billed. May be different to Project.Job.Previous Job.Date In if the meter is billed at a different periodicity to the machine. |
Project.Meter.Job.Previous Job.Date Due |
The date due of the job the last time this meter was billed. May be different to Project.Job.Previous Job.Date Due if the meter is billed at a different periodicity to the machine. |
Project.Meter.Job.Previous Job.Date Out |
The date out (effectively the invoice date) the last time this meter was billed. May be different to Project.Job.Previous Job.Date Out if the meter is billed at a different periodicity to the machine. |
Project.Meter.Job.Previous Job.Read Date |
The read date the last time this meter was billed. May be different from Project.Job.Previous Job.Read Date if the meter is billed at a different periodicity to the machine. |
Project.Meter.Job.Next Job.Bill Date |
The Next Bill date the next time this meter is due to be billed. This is calculated using the current Date due, and either the periodicity of the meter or the periodicity of the machine. |
There are also a corresponding set of macros for a linked meter, if available. They can be formed by adding Linked Meter after the Meter part of the macro, ie. Project.Meter.Linked Meter.Counter Name. There is also some special handling of macros when they are for meter billing kits.
Meter Kit Macro Handling
Macro |
Description |
Project.Meter.Rate TF |
The sum of all Rate Ex for included stock where the stock relates to a Rate Based meter type, and it is not a third party PO meter. |
Project.Meter.Rate TP |
The sum of all Rate Inc for included stock where the stock relates to a Rate Based meter type, and it is not a third party PO meter. |
Project.Meter.Base TF |
The sum of all Rate Ex for included stock where the stock relates to a Base Charge meter type. |
Project.Meter.Base TP |
The sum of all Rate Inc for included stock where the stock relates to a Base Charge meter type. |
Project.Meter.Min TF |
The sum of all Rate Ex for included stock where the stock relates to a Min Charge meter type. |
Project.Meter.Min TP |
The sum of all Rate Inc for included stock where the stock relates to a Min Charge meter type. |
Date Macros
Each date has a corresponding set of sub macros attached to it. The first two are each dates. They are:
▪Previous Month
▪Next Month
For each individual date macro (including Previous and Next Month) there are the following sub macros:
▪Day
▪Month
▪Year
▪LongDateFormat
For example, if the machine's Bill Date was 30th May 2017, the following macros would evaluate:
Project.Job.Bill Date |
30/05/2019 |
Project.Job.Bill Date.Previous Month |
30/04/2019 |
Project.Job.Bill Date.Month |
May |
Project.Job.Bill Date.Next Month.LongDateFormat |
Sunday, 30th June, 2019 |
Project.Job.Bill Date.Next Month.Month |
June |
Suggested Macros
All of the above macros can be used in any combination to suit your specific needs. As a starting point, you may consider the following macros as this works nicely with estimates, and the clawing back of estimates.
The suggested macro for PO stock is very similar, except that it includes the additional information about the client (which would be redundant for meter billing stock) and serial number.
The Suggested Macro to Use For Billing Stock is:
{{Project.Meter.Counter Name}}{{"Last Read="Project.Meter.Job.Previous Job.Meter Read" "}}{{"Last Estimated Read="Project.Meter.Job.Previous Job.Estimated Meter Read" "}}{{Project.Meter.Job.Previous Job.Date Due}}{{"Current Read="Project.Meter.Job.Meter Read" "}}{{"Estimated Read="Project.Meter.Job.Estimated Meter Read" "}}{{"Prints="Project.Meter.Job.Qty" "}}{{"Estimated Prints="Project.Meter.Job.Estimated Qty" "}}
For example, below image shows the stock description using only the macros that are fired:
In this case macros fired are:
{{Project.Meter.Counter Name}}{{"Last Read="Project.Meter.Job.Previous Job.Meter Read" "}} – Black Last Read=12,000
{{Project.Meter.Job.Previous Job.Date Due}} – 15/03/2019
{{"Current Read="Project.Meter.Job.Meter Read" "}} – Current Read = 16,000
{{"Prints="Project.Meter.Job.Qty" "}} – Prints=4,000
For 3rd Party POs the Suggested Macro is:
{{Project.Card.Name}}{{"Serial No="Project.Serial #" "}}{{Project.Meter.Counter Name}}{{"Last Read="Project.Meter.Job.Previous Job.Meter Read" "}}{{"Last Estimated Read="Project.Meter.Job.Previous Job.Estimated Meter Read" "}}{{Project.Meter.Job.Previous Job.Date Due}}{{"Current Read="Project.Meter.Job.Meter Read" "}}{{"Estimated Read="Project.Meter.Job.Estimated Meter Read" "}}{{"Prints="Project.Meter.Job.Qty" "}}{{"Estimated Prints="Project.Meter.Job.Estimated Qty" "}}
For Service Reads:
{{Project.Meter.Counter Name}}{{"Current Read="Project.Meter.Job.Meter Read" "}}{{Project.Meter.Job.Read Date}}
Further information: