RSS Feed c9 logo Australia's best motorcycle shop retail software
Release 4.784 June 25, 2019 barney

Single Touch Payroll now supported within C9

This version of c9 provides single touch paypal support and has been whitelisted by the ATO. The function is substantially automated. I will provide a followup post on a couple of things to get started with STP and c9.

  • Other Payroll tweaks
    • Tweaked STP transmission, on advise from ATO : make sure summary gross payment figure is inclusive of allowances (such as tool allowance).
    • Subtle bug with computation of leave benefits like holidays which span multiple pay periods. Normally these should be constrained to duration of pay period, but there are rules where it sometimes needs to consider outside period for 'backdated' activity. i.e. you run up sick leave for last pay but it wasn't record on last pay so it needs to be backdated. Normally c9 handles this correctly but there are some conditions, too complex to get into here, where this fails and c9 fails to correctly constrain leave to pay run period when it should. Substantially more likely to be an issue for salary only payrolls. Now fixed.
Release 4.783 June 25, 2019 barney

Bugfix with version 4.782 just released an hour ago: label printing would crash with a system error under following condition. Now repaired

  • Part label configured to print a location, but part in question doesn't have a location.
Release 4.782 June 20, 2019 barney
  • Tweaks and fixes
    • AusPOST API integration.  AusPOST require clients to transmit a product/app ID on all API calls. Now added.
    • Single Touch Payroll UI tweaks
      • Fine tune STP poll for replies logic. Ensure minimum wait for 30 seconds before poll
      • Configure messenger to do pro-active STP reply polls
      • Tweak authorization confirmation page to reference our actual ssp (OzEDI, not SingleTouch).
      • When logged in as a payroll user, provide screen alert if a async STP reply returned an error for any payrun in last 14 days
      • Tweak display of error replies to show staff code (if any) that triggered the error
    • Receive order bugfix : was possible to deselect either tax invoice or goods only resulting in an undefined receival been written to DB (was handled as tax invoice and ignored creditor selection). Now fixed
    • Fixed a long standing bug which I assumed only affected Barney (linux) computer but got a report of problem happening on a dealer (Win 10) machine. When printing landscape reports, printout looks completely messed up, but if you save as PDF and print PDF it is okay, also portrait reports work fine.  Root cause known Java bug (, which I've found a workaround for. Suspect issue only affects Open JDK, not oracle Java, and dealer in question might have OpenJDK installed on their computer.
    • QLD TMR rego details web scrape. Bring year into compliance plate field ( with month sent to Jan), not model year.
    • Added 2019-2020 Payroll tax rate stuff (only HELP rates have changed)
    • Mcleods Magician working again. (they moved their website).
    • Generic order file export. Include options to export retprice and costprice.  Put in play for Monza. Now monza tell me they ignore cost price but just to be thorough will include option to export in c9 all the same. (updated this page )
      • Monza suggested format.
        • Mask: FD""QC
        • Header: ItemNumber,Name,Description,OrderQty,Price
        • Separator: ,
        • Escape if needed
    • Generic file export format. Tweak UI design on basic screen so it is obvious if a custom format is in play
    • Tweak profit summary to also show gross revenue (price less discount)
    • Weekly planner.  Option to print planner output.
    • Add transaction: all txns to be forward dated. Warn operator if they have entered in a forward date
    • View invoice : show summary of parts on order. i.e. qty # active, sent, received, invoiced, cancelled etc.
    • Print Preview : memorize zoom setting. Memorize for either portrait or landscape based reports.
    • Browse rebates: show tally of uncollected rebates
    • View / Edit Contact. If contact has an alternate address then make the details/alt address tab stand out
    • Finance/Floorplan Settlement tool : was unable to cope with a sale involving multiple units. Now working.  Settlement screen provides a unit tab which breakdown costs and allow you to assign origination fees on a per unit basis etc.
    • New config option in setup units tab to suppress printing short notes for dealers that use this field mainly to help internally organise their deal list
    • Add/Modify Sublet. On setting cost price if sale price is $0 then default sale price to cost price.
    • Could not bank rec / cash rec web based Paypal payments : option to select for cash rec no there and bank reco would not merge in paypal instrument txns. Now fixed

Heavy reworking on label printing

This version of c9 is a deep rewrite of label printing subsystem.  Functionally visually changes are modest. Visual/functional changes:

  • Layout rules completely rewritten and should yield better looking labels, especially for labels which are space constrained : with improved logic to handle competition for layout space. So generally only changes behaviour at the margins as prior code was reasonably okay.
  • For parts based labels. A number of changes
    • You can now configure / preset multiple label formats. e.g. some with pricing, some without etc, with label config now accessed in print labels screen
    • Label based configuration allows for some power customization. For example, configure price to be bold and a larger font size, below example makes the price bold and the font size x1.3 (30%) larger

Comprehensive list of Label commands

Parameterized commands can take form of either <key>=<value> or <key>(<value>).  List below is written in <key>(<value>) format

Basic math operations are possible. e.g. 10+5/2. Mostly relevant for adjsize command

Strings must be wrapped in single quotes.

Command Description Example
font Font name font(‘Arial’)
size Font Size size(12)
adjsize And adjustment to apply to already set size. e.g. to make bigger or smaller adjsize(+2)
value Hard code what the value is to be. value(‘Test Motorcycles’)
row Row # to put item on row(4)
vertalign Vertical alignment. 1=top. 2=center. 3=bottom vertalign(2)
textblock Allow entry to word wrap textblock(1)
show Make visible
hide Make hidden
bold make bold
italic make italic
bolditalic make bold+italic
left left justify
center center text
right right justify
format Clarion Language reformat format(‘@n$12.2’)
col Justify column. 1= left. 2=middle. 3=right col(3)
style Clarion Language font style style(1)
splitmerge Forced gap close on word wrapping, in 1/1000th of inch. Used mainly for tall barcodes. splitmerge(40)
visible Make item visible/invisible visible(0)


bold adjsize=*1.3

Step 1. Make sure you have Lusty setup as a franchise in c9

Spares -> utilities -> add / Edit Franchise.

If you cannot see lusty in the list. Click on button 'Add New Franchise'.  Just two things to key in:

  1. The name
  2. Make sure 'use price file' is set to Yes

Step 2. Import price file for first time

Spares -> utilities -> import price file

Select Lusty from list of franchises in c9

Select 'C9 Central Repository Price files' from Source type

Pick Lusty in list of suppliers.

Click Okay a couple of times. Click 'Accept and continue' on disclaimer/ warning screen and you are done.

Release 4.781 June 12, 2019 barney
  • Minor tweaks and fixes
    • Website content slider widget. Increase URL field size from 100 to 250
    • Import parts images : Contains a bug where if image already exists (i.e. imported previously or parts which share same image), and reimport option is not selected then the image will not be imported/reused. Now fixed.
  • Previous changes to timeout aged connections with c9 would break when trying to download massive price files from c9 repo.  Adjusted code to not implement timeouts in this specific case.


Release 4.780 June 4, 2019 barney

Includes DB changes you need to log all terminals out during upgrade

This version delivers two very heavy changes.

#1 cash basis GST reporting has been completely reworked. C9 activity report now only reports accruals basis txns. But on BAS report c9 now computes cash basis position by looking at accruals position and factoring in status of open AR/AP transactions at the time. Significantly simpler way to compute cash basis GST reporting.

#2 open invoice accounting is now finally fully here.  Aged balances of debtors and creditors is now entirely computed based on open transaction status. This version will have some impacts on aged balances but final balances will still be the same.  Generally it may cause aging to change and will change it for the better. Aftefacts you see like this: 90days: -1300, 60days: +1300 will now generally disappear as the underlying mechanisms that trigger this when using brought forward do not but design apply with open invoice.  Manipulation of aging can now only happen by manipulating what transactions link to what. In new c9 the only way to influence aging is to change linking between txns.

Other changes

  • Workshop Staff report. Figures would top out at $99,999.99 in this report : now increased 2+ OOM.
  • Messenger. Tweak messenger comms to timeout unresponsive network checks for things like looking for new price file updates.  Network issues at critical times can cause messenger to permanently lockup. Hopefully these tweaks will lessen liklihood of this on flaky networks.
  • Bugfix : modifying a unit while simultaneously selling it on a different terminal can corrupt the sale if modifications are saved after sale is done.  Now fixed : modify screen will detect concurrent modification and not allow its changes to be applied.
  • BAS Summary: option to print summary
  • Payroll : make sure browse payrun screen sorts payruns based on date. Previously was sorting by an internal ID would usually is same as date order but not guaranteed to be, some usage patterns could result in pay runs seems to be in unintuitive orders on screen. Now fixed.
  • Unit Deposit tweaks
    • Disable old school mechanism for allowing deposit to be tracked on a unit sale without running deposit through cash till.
    • Disable deposit entry on finalize deal where deal has no deposit on it and a customer is selected without deposit on account



Release 4.779 May 28, 2019 barney

Includes database changes you need to log all terminals out during upgrade

Misc Changes

  • Magician check for Mojo : working again. (New version is heaps faster)
  • Added optional support for 2 factor login on c9 via SMS. On login, will send a verify code via SMS to mobile number linked to login which needs to be keyed into c9 to work.
  • Subtle bugfix with unit deals when you have multiple units on a deal and units have same part numbers on them, uninvoiced. Under some usage scenarios qtys for spares would double up when you go to modify one of the units on the deal. Should now be fixed.
  • This version includes a number of experimental simplified accounting period summary reports using data mostly derived from GL chart and activity report. Under business reports. Specifically:
    • P/L Statement
    • Trading Statement
    • Balance sheet

Payroll Changes

This version includes a wide number of payroll changes to better support single touch reporting requirements and scenarios. It includes a working implementation of STP that connects to ATO EVTE platform only and is able to meet ATO's conformance testing requirements. This version of STP is not yet production ready and functionality is disabled by default. Future versions will enable as soon as c9 passes their verification process, which is currently pending on the ATO to get back to us.

Specific Payroll changes:

  • New pay item type : lump sums to track lump sum payouts
  • New pay item type: ETP for employer termination payouts
  • Ne pay items to track FBT
  • Allowances : optional configuration of allowance type for standard allowances (car, travel etc)
  • Allow tracking of Fee deduction types (Fees or workplace giving)
  • Track TFN declarations more carefully
    • Tracking signing date and date the declaration was synced to ATO
    • Track Student financial supplement scheme on TFN form




Release 4.778 May 24, 2019 barney

Includes DB changes. You need to log all terminals out during upgrade

  • Fixes and tweaks
    • Payroll bugfix.  C9's payroll includes a facility to help amortize unexpected EOFY tax jumps caused by bracket jumps such as medicare levy surcharge and HELP brackets. It is possible with Oz tax to have your pay go up 1 dollar and then to end up having to pay hundreds of dollars extra because of this meaning you are overall worse off. Normal tax it doesn't happen but with things like Medicare levy it can. C9's payroll has a system in it to help detect if this is likely to happen and it will amortize the cost over remaining paydays until EOFY, increasing tax withheld slightly.  Problem is the code is buggy and can wig out, wanting to withold hundreds of dollars extra instead of a few dollars.  Fixed in this version. Generally only impacts high income salaries subject to MLS. Can also impact HELP/HECS debts.
    • Link transactions not working for contacts flagged with manual link setting. Now fixed
    • Vic Roads get rego details. Stopped working due to changes on their website. Now working again.
    • Fix with font sizes on Point of Sale now in this version (was promised last version).
    • Fixed EPC grab for KTM/Husky/WP
Single Touch Payroll May 24, 2019 barney

Single touch payroll is a requirement to send payroll information to ATO. It applies to everybody after July 1 so it applies to dealers who use c9's payroll module.

STP is a train-wreck.  C9 currently doesn't have a working STP solution. I am dedicating all my time to solving the problem. I am confident I will solve the problem and I have 3 possible solutions being developed in parallel. Whichever gets finished first will be the one c9 will intialy use. I currently do not have a timeline for delivery. Delivery by July 1 is possible but not certain.

Why doesn't c9 have a solution right now?

STP reporting is conceptually simple. It is essentially a payroll summary plus some other simple additional information that needs to be submitted with each payday. Collating this information is easy and the work to collate it took less than a day to engineer and the supporting code already exists in latest version of c9.

The problem is getting the data to the ATO. The ATO expect the data to be transported to them across a formidably complex technology stack typically used only by massive enterprises tamed by teams of dedicated computer programmers. In their own recognition of how impossible the task is for small operators the ATO developed a plan b) for people like c9. The problem is their plan b) is not working.

Update #1: just made contact with a new possible vendor and looks really promising. Putting option 1) back on the table for completion prior to July 1.


Release 4.777 May 13, 2019 barney

Includes database changes. You need to log terminals out during upgrade

  • Trivial Tweaks
    • Edit clock type screen. billable checkbox text partially obscured fixed
    • Spares fine print in combo with remit details where remit address is 2 lines : text overlaps.  Fixed
    • Newly added point of sale freight type screen. Window says 'website settings', renamed to something more sensible.
  • Minor tweaks and fixes
    • Deposits on jobs fixes
      • Deposits left on internal dealer jobs would get silently eaten and disappear due to very old pre general ledger code. Now fixed
      • When user tries to modify a dealer job with deposits c9 will not allow them to go ahead. (makes no sense to leave money on an internal job).
    • (did not make this version. next one) Font sizing on main spares point of sale screen : a very specific combination of certain screen resizing + invoice manipulation events done in right order can mess up font sizes on screen making fonts progressively smaller until the screen becomes unusable. Now fixed.
    • Purchase unit from another : default ABN to use supplier ABN if they have one
    • Web order based emails would keep sending email alerts on backorder parts every time unrelated backorder items would trickle in. Fixed so it only sends one email first time parts go onto backorder for the weborder.  (Existing non web sales sms/email already behave this way, this change only impacts the combo of backorders on parts ordered via c9 based websites).

Single Touch Payroll

This version includes first iteration of single touch payroll export. The implementation is untested (test lifecycle painfully slow). C9 implements STP via a 3rd party:  C9 will emit a CSV file you import into single touch in order to meet your reporting requirements.

Specific changes:

  • Option in modify payrun to export a STP file
  • Some new settings on staff to capture more info specifically.
    • State (defaults to dealership state if not set)
    • Basis (full time, part time, casual)
    • Whether or not TFN declaration was been signed
    • Added new clerk permission to capture payroll declaration permission. Implement this on export ABA too.
  • Longer term, looking to do a more seamless / electronic integration. Dependent on single touch responsiveness who are probably flat out ATM helping lots of people get STP compliant. Work in progress.
« Previous PageNext Page »