RSS Feed c9 logo Australia's best motorcycle shop retail software
Release 4.803 December 10, 2019 barney

Not yet released. In a week or so

  • Tweaks and fixes
    • Deals: on deals list show the first unit being sold if any. Show that units reference, description & the base sale price.
    • Dispatching : provide a find button.  Works similar to orderbook find.  Will also search details deep in AusPOST system not just what you see on screen. e.g. will match tracking ids (partial matching too so no need to key in entire ID).
    • Added import part images for Link Int. Grabs web descriptions and images for link parts
    • Website forms. Added long labels for option lists. So can create form elements like so:
    • Fiche utils - browse units. Was showing units sourced from remote dealerships. Now filters these out and only shows locally installed EPC.
Release 4.802 December 9, 2019 barney

Regression bugfix with prior version 4.801. On unit sale, printed invoice would include wording 'this is a deal in progress only'.  Reprints are okay, only print from sale does this incorrect behaviour. Now fixed in this version.



Released 4.801 November 26, 2019 barney

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

Supplier returns integrated into the order book

This version Includes a significant reworking of supplier returns handling.  Supplier returns flagged as bill later are now managed in the orderbook itself.  You 'receive' a return and indicate which parts are refunded and which are not. The new orderbook also allows mixing of parts, so a receival invoice can also include returns on the same receival.


  • Tweaks and tidies
    • Deals. Show invoice date vs deal date on finalized deals tab.
    • Part Buy Sell. Recently added button to print SS list would resize oddly on screens where window was not default size. Now fixed.
    • Point of Sale Complete : show total in bold red if it is a -ve value
    • Some subtle refinements and reorganising on how spares point of sale margin is computed and used. Specifics
      • On a refund, compute the margin is the difference between original sale price and refund price. So any actions that mess with this will show up as a margin issue. e.g. clearing invoice discount on refund means refund is greater than the original sale. Or manually messing with pricing data.
      • Refresh point of sale cost total screen After going past F10 complete as figures here can changed as a result of things done on the complete screen (e.g. changing discount rate) so when looking at Staff clerk key screen and it nags that there is a margin issue, on the screen behind it you can see the figures that triggered this
      • View price details on point of sale. Show computed margin value (as a unit value) on the list. Note that computed margin is margin + at cost markup (defaults to 17%) which may differ from min margin clerk key alert setting.
      • Min margin clerk key guard : only apply to sold parts, not refunded parts.
    • Spares on workshop. Now tag as 'WS:1234' instead of 'Workshop:1234'.  Space limitation for a c9 dealer recently converted to c9 whose prior DMS numbered job nos where 7 digit.
    • Profit summary report.  Grand total profit % change broken. Was showing % change from prior subtotal.
    • C9 Fitment will now show hardpart / aftermarket fitment for a given part #.  (Previously would only show OEM parts). Only works for locally installed fitment info.
    • Fox Racing
      • Added new parts magician slot for Fox Racing
      • Allow F12 magician work with Fox Racing
      • Allow 'cross pollination' between Monza and Fox Magician queries, just like KTM/Husky/WP, for slackers who haven't moved Fox parts into a new franchise yet.
    • Order book : button + hotkey to drop highlighted part number into clipboard
    • Website variations management. Added some helpers to make it easier to manage web content (images and text) on variations.
      • A visual indicator which parts do and do not have web content
      • Ability to access web content management from this screen
      • A button to bulk copy web content from highlighted part to all parts that currently do not have web content
    • Unit sale. A failed sale due to something like journal error (e.g. a deal with a deposit and operator tries to finalize it as a quote), operator immediately retries and it under some circumstances trigger a 'fetch error' and results in a crap txn being written into the DB.  Now added some guards to protect against this sort of thing.
    • Unit deal print : option on print to print as a pro forma invoice
    • Access add transaction from trial balance screen : to provide a place where you can add txns and eyeball contact balances in same place.
    • New GL Expense code : Staff training
    • Point of sale : edit discount. compute of discount from final $ plus parts on order hopelessly broken and has been for some time. Now fixed.
    • Magician Query : now queries Honda's public DeadStock database.

Honda Dead stock result: common part:

Honda Dead stock result: an uncommon part:

Release 4.800 November 18, 2019 barney

Profit Summary Report Enhancements

  • Change %.  New report shows profit as a % change.  You can compare report period to same time last year (default), prior period, or any arbitrary date range. Sample output:

  • Profit summary explorer. Allows you to drill into profit data and see a running month to month plot for last 2 years for any given figure on profit summary report. i.e.:


Other changes

  • This version includes a heavily reworked F2 find part screen. Changes are low level, database layer only.  Previously crappy data in price file, e.g. part numbers with tab characters in them would cause F2 find part to permanently lock up.  New version is alot more robust.  There are some performance consequences of this change too but hard to assess. Might be some marginal performance change either way but should be undetectable I expect.  Change completely reworks how this screen grabs info from database (server side collation + full outer join instead of old code which did client side collation/merging).
  • AusPOST integration. New Option in setup, freight tab, to default Authority to Leave setting.
  • on debtor invoices, print remittance details.
  • Spares Point of Sale. Include a hotkey to do a quick sale. Skips over the pos complete screen and goes straight to payment methods. Cannot be used for pickups, orders or web order fulfillment.
  • View Part Buy Sell. Some tweaks to cope with parts with ridiculously long SS chains. e.g. Yam Part 1JN8355002.
    • Made SuperS window  bigger and allow horizontal scroller
    • Added a button to allow printing on the SuperS chain list
  • Stihl Warranty Export.  Under some windows machines the export file might end up with duplicated header records. Now fixed.
  • Modify  job screen. Include job# in window text at top so it is always visible no matter what tab you are on.
    • Same for view job & pickup job.
  • View Unit. Access view customer from this screen
  • Print Unit Label. Print sale price if set. Enabled via new config option in Setup -> main setup screen -> units tab.
Release 4.799 November 8, 2019 barney

This version includes a new feature to allow easy migration of parts from one franchise to another when the supplier of parts changes, but not necessarily all parts move. Two common scenarios:

  • A supplier like mojo, when dealers drop all parts into a single franchise but then want to break things into multiple franchises to separate the actual brands Mojo carry. This tool can help re-organise parts this way.
  • Fox/Shift moving from Monza to Fox Racing

Other changes

  • More file fetch error false positives: View part buy sell : print all
  • QLD TMR rego details fetch. Ignore year altogether, since TMR doesn't provide enough info as to what year links to (model or compliance plate)
  • Website assets (text/images etc) connected to parts. Assets normally connect to either pricefile part or masterfile part. As parts are added into stock or parts get superceded, the assets can become 'orphaned' from the actual part sold. Isn't an issue for v3 website code because the website code scan back through supercession chains to find content if the part contains no content. All good except this process is slow and inefficient and has to happen every time a part is displayed on website. This version of c9 adds code that moves website assets along, along supercession chains and to stock records. couple of design goals with this:
    • Make website faster. Current website will still use old system of scanning back so not a massive improvement yet, but in future versions of website in a few weeks it might add some performance gain, particularly for parts with no content. (Already website is quick. A page with 50 items loads in ~ 0.13 seconds)
    • Make managing asset easier. When a unstocked part follows a new supercession chain, the assets are moved to end of chain so they are viewable editable, unlike before where you'd see nothing in c9 looking at the end of the supercession chain, but  see content on the website.

How to move parts from Monza To Fox Racing

  1. Create a new franchise called fox racing. Make sure it has use price file set.
    • Spares -> Utilities -> Add Edit Franchise
  2. Import fox racing price file.
    • Spares -> utilities -> import price file
    • Select Fox Racing created above
    • Select 'from c9 central repo' as price file source
    • Select Fox Racing from list of suppliers
    • Click through to kick it off
  3. Migrate parts common to Fox Racing and Monza from Monza to Fox Raciing
    1. Spares ->utilities -> migrate
    2. Select Monza from 'From' supplier
    3. Select Fox Racing from 'To' supplier
    4. Select option 'delete parts' to force the migration so you don't have to trip over duplicated parts on part scan everytime
    5. Check that the list of parts that will move looks sane
    6. Click on continue to make it happen

Sample Screenshot:

Add comment


Release 4.798 November 4, 2019 barney
  • Tweaks and fixes
    • Point of Sale complete. Move Freight sel button to list of buttons at bottom of screen since its selection will impact both tabs on newly designed complete screen. Move will also save a keypress for keyboard users where no freight is needed.
    • Various reports with date ranges. When clicking on 'daily' assume operator means today, not the first day of the currently setup reporting period.
    • copy Freight description from originating invoice if originating invoice is a reserve or if original invoice has a freight value of $0.Prior logic only copied description if originating invoice have a "freight to invoice later" value >0. The original rule doesn't work in many scenarios, e.g. when tracking free freight
    • Workshop planner, highlight notes lines by making the description text red.
    • Spares POS invoices : print cust email addr on invoice too if set. (Useful for workflows when doing AusPOST freight etc manually).
    • Record not found false positives removed
      • Cancel parts on order, via invoice
      • Part buy/sell history
    • Discounting on orders / laybys etc.
      • In point of sale Complete : Highlight in bold red discount line if a discount is in play
      • In view invoice. Show Discounting Particulars
    • Web order paypal processing.  Cancelling parts on order and return deposit would not connect to paypal correctly to refund deposit. Would generate an error on screen and would require manually processing on paypal site to finalize. Now fixed (caused by changes a couple of months ago to accommodate shopify integration)
    • Xero syncing on spares invoices due date tweaks
      • Added ability to configure as a date rule, instead of just ordinary x days since inv date. Some examples:
        • "date:1+2m-1d"  (last day of next month)
        • "20th of next month"
      • Added ability to configure a global rule for Xero which will apply and override all supplier specific rules.
Release 4.797 October 29, 2019 barney

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

Database error connectivity tests and alerts.

This version includes some changes to alerts and tests on database connectivity dropouts. A recent issue with respect to processing a job when database connection failed caused the job to be re-saved incorrectly into c9.  This version specifically fixes that scenario but it also includes further changes that make c9 more aggressive in reporting database connectivity errors. These changes might make c9 generate false alarms in obscure parts of c9. Will hose those out if any over next few versions of c9.

Website groupings and variations

This version rolls in a significant enhancement to how parts on c9 websites can group together and is intended to replace the prior mechanisms of enforced stock only merging based on part description and part grouping. Prior mechanism, 8 years old now, is pretty limiting and difficult to wrangle so this improvement is long overdue.

Features of new system:

  • Works on non stocked and stocked items
  • Mapping by description is optional/opt in. Not enforced.
  • Manually mapping is now alot more intuitive. Instead of defining a common 'group' you link two or more parts together.
  • Grouping allows multi dimensional grouping tests. by default colour and size on this initial release but more are possible. On website they appear as separate drop downs.
  • On website side of things, page gen / refresh is quicker and website UI is more intuitive.
  • Only works for v3 websites. There is a manual enablement / opt-in process. To make it happen. This will be documented in a separate post.


  • Other Bigger Changes
    • The Spares Point of Sale screen has been redesigned to break it up into two tabs and fit everything on screen for computers with 720p screens. For people who drive point of sale via keyboard this will add 1 or 2 more key strokes (F10 vs Enter key workflows). For mouse users, one more mouse click.
  • Smaller Tweaks and fixes
    • View Unit : would incorrectly show floorplan cost as $100 when unit cost is set to $0. Purely a screen bug. Was supposed to show 100% as ownership, but instead is showing $100 as floorplan cost. C9 was incorrectly displaying the 100%  as a $100 cost on screen. Now fixed
    • Payroll staff stats. Show -ve signs in order to distinguish entitlements like annual leave when they are under-water
    • Print label on unit purchase broken due to recent changes to c9 labels. Should now be working again.
    • Import Excel files. A couple of files would fail with old c9 (SCP and Bikes and Bits). Updated propitiatory library c9 uses to decode XLS files.  Modify c9 to provide more useful feedback on error. Results:
      • SCP Still broken, but c9 now provides more useful info for reason why. Result: "unsupport excel95 format"
      • Bikes and Bits.  Still broken. Appears to be something broken with their file. If you resave excel file seems to come good.
    • Select customer. Include a couple of tabs to filter down to either account customers only or trade customers.
    • Sales leads. Filter option will now also filter on unit type.
    • Receive Order labels. New configuration options ( in setup -> orders ) that allow fine tuning of labels. Specifically:
      • Option to print one label per part number line item or one label per individual part. (Default being one label per customer order)
      • Option to print part description on label if per line item or per individual part is selected
      • Option to filter out workshop and unit based orders from label printing : so only print labels for spares counter / on reserve sales.
    • Map parts to website category. Allow mapping based on meta data. This new mapping system provides a couple of functional and technical improvements. Main functional improvement is that it will allow non stocked parts to be mapped to multiple locations on a website based on master file meta data parameters.
      • Edit web group. New fields to mapping a web page to parts with matching attributes
      • Create structure from attributes. New option that will feed new fields too, removing need to manually refresh mapping
    • Website settings: add a button that tells webserver to drop and regenerate page caches. Needed for moment while all new changes to page mapping and variations cycle through.
    • View invoiced units.  Show the involved customer, not just the seller. Make the differences between brought, sold, consigned, traded sales more visually obvious (with color coding & additional fields).
    • Spares Point of Sale. New Button next to tallies. When clicked it opens a new window that provides breakdown on margins on each line.
    • Move part : allow moving of history when moving an individual part.

I occasionally receive requests to integrate into Buy Now Pay Later (BNPL) services like AfterPay and ZipPay.

I have for the most part up until very recently strongly pushed back on these requests. I believe these services are predatory and harmful, and in particular predatory and harmful to our industry. I suspect that rollout of such services can, if circumstances are right, actually cause dealerships to become less profitable. That such a scenario is not just mathematically possible but quite likely to occur and eventually an inevitable outcome if BNPL services become a dominant method of payment. The exact rationale for my views here are covered in this document which I have shared with a few dealers to date and I am now making available on the c9 website.

Afterpay and other fintech solutions – impacts on retailers and ways to mitigate [PDF]

The core issue is excessive merchant fees for these services which can reduce effective profit on an individual sale by almost 40%. With sufficient channel cannibalization, (described in linked document above), your reported profit on your financial statements will be in total, actually drop by offering such services. You could install AfterPay into your business, increase your sales but actually, unintuitively, make less money as a result had you not done this.

These services may work well in high margin businesses but are risky and potentially harmful in low margin industries such as the motorcycle industry.

The mitigation strategy I proscribe involves adding surcharges to pass on fee costs to consumers. On assumption this was possible my position on integrating into AfterPay and ZipPay had softened in recent months and I was planning on integrating early 2020.

Except that Merchant Agreement all these services provide explicitly prohibit passing on surcharges. My willingness to integrate these technologies into c9 were contingent on being able to provide you with tooling to facilitate surcharging. Integration from c9 to any given BNPL service will not happen until that service permits surcharging.

There are many media reports over the last few days regarding Reserve Bank of Australia reviewing this as a matter of policy action. [Link from AFR]. I believe it is inevitable that relevant government bodies in Australia will compel AfterPay and others to permit surcharging for reasons I won't go into here as this blog post is already long enough.

The question is how quickly will Australian regulatory bodies move on this. Once this happens c9 will onboard with BNPL integration with AfterPay and ZipPay. Until this happens there will be no development effort committed to making integration happen. I am not prepared to lend my expertise and skill to aid an enterprise I believe is predatory and harmful, not without being able to add mechanisms that will help mitigate the elements I consider to be most egregiously predatory.

-- Barney

Relesae 4.796 October 2, 2019 barney

Regresson bugfix with  prior version of c9. Translist report was broken : was not paying attention to date range and instead would print all txn history. Now fixed.

Release 4.795 September 12, 2019 barney
  • Tweaks and new features
    • Import lusty images + text for website. Requires a lusty metadata file web address reference to work. To be provided by Lusty.
    • C9 Website availability check. Added ability to allow checking for Mojo now mojo magician works really fast
    • Kawasaki Magician : working again. EPC import working too.
    • View txn repair
      • Fixed filters for debtor and creditor txn types. Was incorrectly filtering out some txn types, e.g. bill money txns for creditors
      • Added a subset of txn filters for creditor txn types. e.g. Bills and Bill Pays
      • Improved report output a bit for identifying inv types.
    • Deals.
      • Highlight spares discount if set
      • Fix A bug with some rounding errors on unit sale prices inc.  Some Inc prices cannot be easily arrived at when broken into ex and GST.  e.g. 2860.05.  Base=2600.05.  GST of this is 260.01 with rounding.  Readds to 2860.06.  Added some smarts to deal with this
Next Page »