Invoicing - Collection process
The collection process is the first step in the Invoicing workflow. It gathers billable transactions from various sources into the Invoicing Journal for further processing.
Collection methods
Manual collection
To manually collect entries from the Invoicing Journal:
- Choose the
icon, type Invoicing Journal, and then choose the related link. - Choose the Collect Entries action in the ribbon.
- A filter page will appear where you can:
- Apply specific filters (by source, customer, date range, etc.)
- Or leave all filters empty to collect all available entries
- Choose OK to start the collection process.
- The system collects all entries matching your filter criteria and adds them to the journal.
Scheduled collection (COLLECT INV.ENTRIES)
The COLLECT INV.ENTRIES job queue function automates the collection process. You can schedule this function to run at regular intervals, collecting billable entries without manual intervention.
Parameters
| Parameter | Type | Description |
|---|---|---|
| TABLE FILTER | Text | Collect entries within this filter. Apply table filters on the Invoicing Journal Line table to restrict which entries are collected. |
| JNL. TEMPLATE | Code | Optional: journal template name. Leave empty to use the default template. |
| JNL. BATCH | Code | Optional: journal batch name. Leave empty to use the default batch. |
| AUTO POST | Integer | Post collected journal lines automatically (0 = No, 1 = Yes). When set to 1, collected entries are posted to the ledger immediately after collection. |
| YIELD AFTER | Duration | Yield the task after this duration (for example, 120s). The task is automatically rescheduled to continue where it left off. Use this to prevent long-running collections from blocking the job queue. |
Tip
Set AUTO POST to 1 to combine collection and posting into a single automated step. This is especially useful in combination with the PARALLEL SCHEDULER to process multiple customers simultaneously.
Adding manual journal lines
You can also manually add lines directly to the Invoicing Journal:
- Choose the
icon, type Invoicing Journal, and then choose the related link. - On a new line, select the appropriate Source for the manual entry.
- Fill in the required fields:
- Sell-to/Buy-from No. — the customer or vendor
- No. — the service
- Quantity and Unit Price
- Description
- Manual journal lines are processed alongside collected entries when you post the journal.
Collection sources
The Invoicing module uses an interface-based architecture that supports multiple collection sources. Each source implements the collection logic for its specific domain.
Agreement source
Collects charges based on service agreements and contracts, including:
- Recurring services — periodic charges defined on agreement detail lines
- Storage costs — warehouse storage charges calculated from agreement terms
- Period-based billing — charges generated for defined invoice periods
The Agreement source uses a multi-level priority system when resolving services and pricing:
- Customer — specific agreement for the individual customer
- Customer Price Group — agreement shared across a customer price group
- All Customers — global agreements applicable to all customers
Note
Storage costs are always collected through the Agreement source, not through WMS. The WMS source handles document-based warehousing activities only.
WMS source
Collects billable activities from the Warehouse Management System based on processed WMS documents, including:
- Handling charges (receipt, shipment, crossdock, transfer, and other document-based operations)
- Labor operations
- Value-added services
The WMS source supports 16 document types (Receipt, Shipment, Transfer, Crossdock, and others) and captures up to 32 information types per entry for detailed invoice reporting.
FMS source
Collects billable activities from the Forwarding Management System (Freight Forwarding), including:
- Cost and revenue lines from FMS shipments
- Freight charges, carrier costs, and forwarding fees
- Vessel, voyage, and equipment-related charges
The FMS source captures up to 42 information types per entry, covering ports, vessel/voyage data, incoterms, cargo and equipment details, and container information.
TMS source (planned)
The Transportation Management System source is registered as a collection source but is not yet active. TMS collection functionality is planned for a future release.
Customs source (planned)
The Customs source is registered as a collection source but is not yet active. Customs collection functionality is planned for a future release.
Parallel scheduling (PARALLEL SCHEDULER)
For high-volume environments, the PARALLEL SCHEDULER job queue function enables parallel processing of collection (or invoice creation) across multiple customers simultaneously. Instead of processing all customers sequentially in a single task, it creates a separate worker task per customer, running them concurrently.
How it works
- The scheduler iterates over records in a configurable source table (typically the Customer table).
- For each record, it creates a worker job queue entry that executes a macro — a predefined sequence of job queue functions.
- Multiple workers run in parallel, up to a configurable maximum.
- The scheduler monitors active workers and waits when the maximum number of parallel tasks is reached.
- If the scheduler exceeds its YIELD AFTER duration, it saves its progress and reschedules itself. On the next run, it resumes from where it left off.
- After all records are processed, the saved progress is cleared automatically.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| TABLE NO. | Integer | — | The source table to iterate. Use the Customer table number to process per customer. |
| TABLE FILTER | Text | — | Filter on the source table. For example, filter to specific customers or customer groups. |
| MACRO CODE | Code | — | The function set macro to execute for each record. This macro should contain the COLLECT INV.ENTRIES or CREATE INVOICES function. |
| PARALLEL TASKS | Integer | 8 | Maximum number of worker tasks to run simultaneously. |
| YIELD AFTER | Duration | 120s | Yield the scheduler after this duration. It automatically reschedules and resumes from the last processed record. |
| MONITOR INTERVAL | Duration | 5s | How often the scheduler checks the status of running worker tasks. |
Example: parallel collection per customer
To collect invoicing entries for each customer in parallel:
- Create a function set macro that runs the COLLECT INV.ENTRIES function with the desired parameters (template, batch, auto-post, etc.).
- Configure a PARALLEL SCHEDULER job queue entry with:
- TABLE NO. = Customer table
- MACRO CODE = the macro created in step 1
- PARALLEL TASKS = the desired number of concurrent workers (for example,
8)
- Schedule the PARALLEL SCHEDULER to run at regular intervals.
When the scheduler runs, it creates one worker job queue entry per customer. Each worker collects entries for that single customer only. Up to 8 workers run simultaneously, and once a worker finishes, the next customer is picked up.
Tip
The same approach works for invoice creation. Create a macro that runs CREATE INVOICES and use the PARALLEL SCHEDULER to create invoices per customer in parallel.
After collection
Once entries are collected:
- They appear in the Invoicing Journal.
- Each entry contains a reference to its source document.
- Entries can be reviewed, modified, or rejected before posting.
- Entries are ready for further processing according to your workflow.
Troubleshooting collection issues
If entries are not collecting as expected:
- Verify the source document is properly marked for collection.
- Check that the customer is properly configured in the source document.
- Ensure date filters are set correctly.
- Confirm the user has permissions for both source and target modules.
- For Agreement source: verify that agreement periods have been created (use the CREATE AGRMT PERIODS function).
- For scheduled collection: check the job queue entry status and any error messages in the job queue log.
Next steps
After collection is complete, proceed to:
- Journal Management to process the collected entries
- Invoice Generation to create invoices from approved entries