Tutorial 29 - Creating a Consolidated Income Statement

During this Tutorial, you will create a Consolidated Income Statement Report consisting of several Print Templates and Report Procedures. The Report Procedures will again be configured as encapsulated Functions in order to keep them small enough for easy presentation. In this Tutorial series, you defined "The Tutorial Company" to consist of a Head Office and two operating Branches. In the Consolidated Income Statement you will produce a report that will merge (consolidate) all Revenue and Expense accounts and present them in a single Income Statement.

An Income Statement is a performance report that portrays the operating activities during part or all of a given fiscal year. The date prefix text is, therefore, not "As At" but signifies a time line such as "For The Year Ended" or "For Ten Months Ended."

The analytical detail can take many formats including Budget and Prior Year comparisons involving Money and percentage fields. STEP FORWARD enables you to do any of these plus anything your imagination can conceive. Likewise the presentation can be defined from the traditional formats (e.g. Description - Current Period - Year To Date) to the functional (Current Period - Description - Year To Date) or whatever is meaningful to you.

Features that you will encounter.
The concept of Simulate Posting - Yes or No that you learned about in Tutorial 28, applies here as well. However, the Function TotalSinceInception does not apply because the information you are seeking is a "time slice" (i.e. only a portion of all data since inception). The System Functions that you will encounter will be DateToPeriod, AccountingPeriod, DebitAmount, CreditAmount, and YearToDate:

Let us remind you that it is possible to define, in the Fiscal Periods editor, Accounting Periods that are irregular as far as the "Start date" and "End date" are concerned. The System Functions DateToPeriod, AccountingPeriod enable you to select the right period and its applicable "Start date" and "End date" automatically. Since you need to specify a "Start date" and "End date" when running an Income Statement, you have two options:
1. you can either insist on your own time-line precision:
provide the "Start date" and "End date" as two Parameters at run-time and use them to populate the applicable fields in the three Functions shown above;
2. or let STEP FORWARD interpret the proper time-line:
provide the "End date" (or any date that fits into the desired time-line) as a single Parameter at run-time and use the DateToPeriod and the AccountingPeriod Functions.

In this Tutorial, you will use the second option.

Exercise 29 - 1, Creating Three Account Lists
The Income Statement consists of three sections: Revenues, Cost of Sales, and Expenses. A convenient way of specifying the GL Accounts that belong to each grouping is to specify the applicable ranges as Account Lists. Launch the Account List editor and establish these lists:

Exercise 29 - 2, Creating Three Print Templates
The following three templates are used to create the single report "Consolidated Income Statement". Use the same Page Layout and the Grid Inspector as for the Balance Sheet (Tutorial 28).

The three Templates are identified as PLCHeader, PLCSegments, and PLCSub. The various Inspector settings are either explained right below each image, or if they apply to several of them as follows:

the Template view - Printing is Start on the next available line for all Templates except the PLCHeader which is set to Always start at the new page;
all Print fields are of Text type unless otherwise specified;
all Money fields (however described e.g. C$, C$Total, etc. - they are obvious) have
Switch If zero value, show as blank space set to Yes (checked)
Alignment |->|
Formatting settings:
Separate 000's by commas
Precision: 2 decimals
Show negatives as 123-
Sign: Keep
all Float fields (however described e.g. CP, CPTotal, etc. - they are obvious) which are used for percentage calculations have
Switch If zero value, show as blank space set to Yes (checked)
Alignment |->|
Formatting settings:
Precision: 2 decimals
Show negatives as 123-
Sign: Keep
Fonts are Helvetica 9 or Helvetica Bold 10.

All fields with a white background are Title fields (Static), fields with a gray background are Print fields (Dynamic):
Date Text - has a horizontal Adjustment of 50% and the Alignment is |->|.
Report Date - the Alignment is |<-| and the Formatting option is Month D, YYYY.
C$Total and Y$Total are of Money type.
CPTotal and YPTotal are of Float type.

Segment view:
Header is Print in both cases; insert 2 blank lines before printing the fields and insert 1 blank line after printing the fields;
Footer is Print when Template ends; insert 2 blank lines before printing the fields;

All fields are Print fields (Dynamic):
C$, Y$, C$Sub, and Y$Sub are of Money type.
CP, YP, CPSub, and YPSub are of Float type.

Segment view:
Header is Print when Template starts; insert 1 blank line before printing the fields;
Body is Print on every call to Template;
Footer is Print when Template ends.

Gross Profit is a Title field (Static), all other fields are Print fields (Dynamic):
C$Total and Y$Total are of Money type.
CPTotal and YPTotal are of Float type.

Segment view:
Body is Print on every call to Template; insert 1 blank line before printing the fields and insert 1 blank line after printing the fields;

Exercise 29 - 3, Creating Four Report Procedures
Three of these Procedures deal with different features of the Income Statement:
ISRevTotal = sums up the total Revenue for the Current Period and Year To Date as the Percentage basis.
ISDetail = handles section headers, individual print lines, and section subtotals.
ISNet = generates the Net Text line based upon these Current Period - Year To Date possibilities:
(credit/credit), (credit/debit), (debit/debit), or (debit/credit).
The fourth Procedure, IncomeStatementCons, is the only one marked as Selectable as a Report in the Inspector's Legend view because it uses the first three Procedures as Functions (encapsulated Procedures). The reasons for structuring this Tutorial in this manner are the same as we expressed for the Balance Sheet in Tutorial 28.

As part of this exercise, create the four Report Procedures. Most of the Procedures can be configured by you by following the examples. However, the Inspector settings for Retrievals are not obvious and we have numbered the Retrieval objects in each Procedure and listed the settings immediately below each image. In regards to the Print objects, all mapping is automatic with one exception - PLCHeader: the template field Report Date obtains its date from the local variable (Local vars) Ending Date. All Retrievals use the Query return: Multiple rows (distinct only).

All Retrievals (1, 2, and 3) use these Search and Sort Settings:
Search: GL Prefix Between 2 and 3
GL Number Between 510 and 520
Sort: GL Number ASC
We could have specified GL Number List Rev instead of GL Number Between 510 and 520, we will do that in the IncomeStatementCons Procedure - we just wanted you to see different ways of doing things. Using the Between option is ok when the GL Numbers are contiguous; the Account List option allows you to specify GL Numbers that are disjointed. The disjointed option comes in handy when you want to sum accounts that are not contiguous or when you want to print individual account information in a specified sequence other than account number order.

You next combine these three Procedures (which have the Selectable as a Report switch set to No) in the IncomeStatementCons Procedure (only this one Procedure name of the four Procedures created will be visible in the Select Report panel of the Run Reports function).

Retrieval Inspector Settings:
1. Search: GL Number List REV
Sort: GL Prefix ASC
2. Search: GL Number List COS
Sort: GL Prefix ASC
3. Search: GL Number List EXP
Sort: GL Prefix ASC

You are now ready to test this Procedure and, based on the Opening Journal Entry entered as part of Tutorial 27, the Report should look like this:

Please Note:
In this report we had specified (in the Print Templates) that zero values (Amount and Float fields) be suppressed from printing (Switch If zero value, show as blank space set to Yes (checked)). You can see this happening in the percentage field of the "Bank Charges & Interest" print line. However, this accounts only on the specified fields; it does not suppress printing of the line when all fields are of zero value as happened in the "Discount Earned" print line. To suppress printing of an account with zero values which is called as part of a range or part of an AcctList (as was done in this case i.e. EXP), the Procedure has to be enhanced through the inclusion of a Condition that tests for zero values. The following partial Procedure shows how this is done (we have incorporated this concept in the Tutorial 30 - Creating a Branch Income Statement):

Go To
  Tutorial 30 - Creating a Branch Income Statement