📚 To view the Knowledge Base for support documents about Central-ops click here

Workshop > Xero Bills and Failed Exports
A part's category now decides which Xero account its bill lines are coded to, so a bill arrives in Xero already split the way your chart of accounts expects instead of landing wholly against the supplier's default account.
- Each part category’s GL Code now decides the Xero account its bill lines go to. Open a category on Workshop → Configuration → Part Categories and enter just the Xero account code (for example 62300) in GL Code.
- Every line on an exported bill takes the GL code of its part's category. The supplier's Xero purchase default is now only the fallback.
- A line whose GL code is not an active account in Xero falls back to the supplier default rather than failing the export, so one wrong code cannot hold up a bill.

The GL Code field on a part category
Xero exports that fail are now flagged on the record and can be sent again, so a missing bill is easy to find.
- A goods received record or returned part credit that failed to export carries an Export Failed badge.
- Workshop → Purchase Orders → Purchase Transactions has an Export Failed filter beside the existing Exported filter, so the failures can be listed on their own.
- The failure also raises a notification and an entry in the record's activity log, with Xero's reason for refusing it.
- Exporting again after fixing the cause creates the bill. A record that already produced a bill in Xero is still not exported twice.
❕Note: To use part category codes, add the accounting.settings.read permission to your Xero connection and re-authorise it. Until then, bill lines use the supplier’s default account as before.

The Export Failed badge on a goods received record
Sales > Revenue per Km Reports
Contract charter and rail revenue is now counted in the Revenue per Km reports when you filter to particular vehicles, so a report run for one bus shows that bus's share of the work it actually did.
- Previously a contract charter or rail booking counted only when every bus that ran it was selected, so filtering to a single bus left that revenue out of the report altogether. Charter quotes were never affected.
- A bus's row now reads the same whether you filter to it or run the whole fleet.
- Revenue follows the bus that was allocated to the job, so the figures match the roster rather than the vehicle type on the quote.
- Invoiced contract charter and rail bookings are now included even when one of their jobs is still open. The open job is left out of the split and named on the row, for example Job 1234: not completed, so left out of the revenue split.
- Rail bookings divide equally across their jobs.
- The (no vehicle allocated) row has been removed, as it could never hold any revenue.
- Historical runs may now include bookings that were previously left out, so a report you ran before this release can return a larger figure for the same period.
Both reports are reached from Generate Sales Reports on the Sales page's triple dot menu, and from Revenue Reports on Accounting → Reporting.

Vehicle Revenue per Km in the Sales Reports window, filtered to one vehicle

One bus’s row, filtered and unfiltered, with the same figures
Bug Fixes and Enhancements
Sales
- Fixed an issue where the Bookings and Quotes report failed to generate for a customer whose quote had a trip with no vehicles or facilities, or an option using a vehicle type that had since been deactivated. A deactivated type now prints its name, and a trip with neither vehicles nor facilities prints an empty cell.
- Fixed an issue where Generate Bookings and Quotes Report (PDF) appeared on the customer's triple dot menu for users who are not permitted to run it, so the report was filled in and then refused.
- Fixed an issue where Add Option on a saved quote left Customer Tier empty, so a Kilometers or Set Rate price was worked out without the customer's tier discount. The tier is now filled in from the quote's customer.
- Fixed an issue where the minimum-units note on a Set Rate option, and the note printed on the quote PDF, came from the pricing scheme's earliest rate row instead of the row in force on the trip's date. The price itself was always taken from the correct row.
- Fixed an issue where Merge Boarding Points failed with a server error when a large number of boarding points were ticked.
- Fixed an issue where the Bookings Today and Bookings Tomorrow tiles on the Sales dashboard counted bookings with no trip running that day. The number now matches the list the tile opens.
- Fixed an issue where Booking Revenue per Km left out a rail booking’s subcontractor charges, and subcontracted work was credited to your own buses on Vehicle Revenue per Km. That work now appears on its own (subcontracted) row, which is hidden when filtering by vehicle.
Accounting
- Fixed an issue where a failed customer invoice export to Xero gave no usable reason. The invoice's activity log and notification now show Xero’s reason.