RSS Feed c9 logo Australia's best motorcycle shop retail software
Release 4.856 October 14, 2020 barney

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

Visual design tweak to Select part.

New F2 pick parts will show the superceded part number and the final price /qty as a result of picking that part. Now this can create some visual confusion when the target part and supercession(s) that feed to that part are both visible at the same time.  You'll eyeball a heap of parts with qty, creating a misleading sense of lots of inventory when all records are pointing to same thing. To help minimise this SuperS parts show QoH in green. Like so:


Other tweaks and fixes

  • Accounting Profit / Loss report . Was not correctly filtering out Balance sheet records such as plant / capex stuff. Now fixed.
  • Uninvoiced Spare parts on deals involving multiple units being sold. If unit you where messing with was not the last one on the list and you tried to edit parts to invoice / order the system would lose all uninvoiced parts. Now fixed.
  • Regression bugfix : spares order merge onto existing invoice would fail with a journal entry error when there was additional deposit to collect. Now fixed. Caused by recent code restructure changes in preparation of v5.
  • Unit deals: show # of deals as well as deposit total.
  • Account balance calculation : some DB optimisation. In a couple of spots the query was slow.
  • C9 invoicing :  some internal tweaks with how we issue invoices to our clients. Wording on invoicing is tweaked to more clearly indicate period the invoice covers (we bill in arrears). Also some tweaks to itemize invoices, separating out web hosting fees for a start.


Release 4.855 October 9, 2020 barney

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

Important Change #1 : Payroll Tax Rates

This new version includes new Payroll rate tables.  Any 2020-2021 payrun created/modified will compute a different (lower) tax withholding for most employees

Important Change #2 : Honda Price files in c9 repo

For Honda dealers that carry multiple segments, e.g. Motorcycle + Power Equipment there is a complex subtle issue with smashing these price files together into a single franchise. The issue is that a given part was historically been in price files for 2 or more segments, but modern pricefiles the part only exists in one segment. For example the part 15410MFJD01 historically years ago Honda gave me price files where this part occurs in all 3 segments, but this part is only a Motorcycle part so modern pricefiles it is, correctly, only in the MC price file.  Now the issue is c9 repo has all parts, old and new.  So when smashing P/E and MC together, the old 'NLA' part in P/E is years old and doesn't capture supercession added to this part in M/C, but in the MC pricefile, as active it does in fact supercede.  Previously c9 would just smash these together and last over the line is the winner and lands in your master file, which in this example was always P/E when doing repo multi franchise import. So some dealers this part might be correct as a super, but others not so. It all depends on the order you do imports, delays between importing price files etc. Which record which wins and lands in your pricefile is indeterminate and these is a decent chance wrong one is installed.  This problem flows both ways too, there are parts in P/E that are active but are NLA in MC. So simply importing MC after P/E is not sufficient to fix this issue.

This version of c9 fixes this. The Repo now encodes information so that c9 can figure out whether or not a part should be brought in or ignored when dealing with multiple segments in franchises like Honda.

The version 'fences' c9 repo. In order to see future changes in repo you must update c9 first, as repo changes encodes new information that only this version of c9 knows how to correctly interprete. You will not see any new 'new pricefile' alerts in c9 until you apply this update.

Tweaks and fixes

  • Workshop subcontract. Modifying open sub contract price would reset price to $0 making it impossible to modify sale price on open items. Now fixed
  • Incorporated 2020-2021 tax bracket changes.
  • Payslips : print biz name instead of trading name if set
  • Suppress particular of discount scheme printed for ordered / reserved parts if that scheme matches current customers configured discount scheme.
  • Bugfix with print contract. if you select modify custom T/C and do not pick a valid file next time you open paperwork it will fail with an error. Now fixed
  • Polaris EPC import. Tweaked to cope with website changes and  hopefully working again
  • Very tiny V5 prelude tweak : forgot to de-globalise deposit processing.
Release 4.854 October 6, 2020 barney

Tweaks and fixes

  • Unit purchase
    • Fixed bug with setting payout figure when unit is encumbered. Goal seeking would consistently blow up and not get the right figure. Now fixed
    • Highlight the current pricing field that is fixed : goal : same as what unit sale screen has had for some time now.
  • Bug fix
    • Under some exotic circumstances looking at a printed out bank rec on one terminal would stop all other terminals from recording new sales / transactions etc until the rec was dropped off the screen. Now fixed (root cause, bank rec pulls a general ledger balance, which may require a GL cache rebuild. The cache rebuild could set on DB uncommitted, blocking other GL posting txns from completing. One way to trigger this would be to backdate a txn into a date before current calendar month, eyeball a bank rec that was created during current calendar month, c9 would then enter a lock state until bankrec screen was closed).
Release 4.853 October 2, 2020 barney

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

  • Tweaks
    • Profit summary report : new option to filter/group results based on clerk key / staff
    • Bugffix: Spares invoices : under some setups (with tender option disabled mostly), the system would incorrectly report an amount is still to be tendered if customer deposit is eaten. Now fixed
  • Perma Delete NLA parts.
    • Spares -> utilities -> add edit franchise. Goto advanced 2 there is a new button which will kill any master file part which is NLA merch and unused in your c9 (never sold, never ordered etc)
    • Intention is to combine with NLAing all KTM parts with dots in them to clean up dotted parts in these franchises but useful for cleaning up any pricefile backed franchise with alot of useless NLAs.
  • V5 Prelude work : this version of c9 includes some low level changes to to how biz transactions, payment methods, general ledger postings etc are wrangled in the programming code.  These changes are entirely non-functional : is mostly groundwork changes to prepare for switching in V5 backoffice / general ledger components. ( remove global state for c8:biz activity management ). There may be similar modifications like this over next few versions of c9 as I prep to truck in the V5 based General Ledger.
Release 4.852 September 23, 2020 barney
  • Tweaks and fixes
    • Newly added is c9 up-to-date widget would not trigger a refresh on closing / reopening c9 ; resulting in possibly misleading / confusing status on reopen c9.  Tweaked to force a recheck on opening c9 again.
    • Memory leak issue : looking at EPC diagrams in c9 would slowly eat memory until c9 runs out and complains.  Now fixed.
    • Spares profit report : discount component was incorrectly being added, not subtracted for refunds in report output. Now fixed.
Release 4.851 September 21, 2020 barney

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

  • Tweaks and fixes
    • Import price file auto flag unimported parts as NLA : low level process for this was too slow/inefficient. Replaced with a different approach that is hopefully better/faster
    • Ancillary surcharge tax invoice for backdated surcharges : was not being written with backdate but resulting journals / activity records were fine. Now fixed
    • More Toro pricefile import dramas. Subtle issue where if part numbers previously imported + order of parts in pricefile + some non deterministic behaviour with postgres bulk insert order would, if lined up just so, result in Toro pricefile failing to import. Hopefully fixed now (too complex to document reasons but resolve_pricefile_dups proc which was responsible for wrangling dashes in toro file into something sane would misbehave and fail to de-duplicate these part numbers in some cases and would run into dup constraints on masterfile).
    • C9 Status bar.  Now shows update / upgrade status of c9 . So no longer rely on logout / login to receive alert of a new c9 pending.

  • Internal changes
    • SMS billing tweaks to help us speed up some administrative processes here. No functional changes.
Release 4.849 & 4.850 September 16, 2020 barney

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

Price File Changes

This version of c9 introduces a new concept for tracking NLA parts.  Price file importing and management will now explicitly track NLAs and you will be able to easily filter / hide / manage NLA parts in c9 so you will have a reasonably decent visual indicator on screen whether or not a part is likely to be supplyable and are not tripping over lists of long unsupplyable items such as seasonal race apparel.

NLA tracking recognises two types of NLA

  • OEM / Hardpart NLAS :  stuff the factory no longer produces but is still valuable / important. You generally need to be able to see it, be aware of it but be able to quickly see it might be a problem to source.
  • Accessories / Merchandise NLAs :  stuff that is NLA but generally is just accessories / merchant and / or stuff which substitutes easily exist.  Seasonal gear, apparel & protection, aftermarket hardparts etc etc

NLA stuff is best managed via c9 repo so it can only really work with suppliers that are in c9's repo. There is tooling in c9 to do it yourself from price files but it is a fiddly process that is easy to get wrong so we are not going to really press / document these minutiae of this.

Next few price files uploaded into c9 repo will be bigger than usual, as new NLA datasets propagate through into your running c9.

Screenshot of new F2 screen for KTM franchise, NLA parts are now in grey.

C9 repo has bee preloaded with NLA data for following suppliers: KTM, Husqvarna, Honda, Yamaha, Suzuki & Mcleods.  Other suppliers will be added incrementally as new price files are provided.

Actual Changes

  • NLA related Price file changes
    • track status field to track NLA.
    • track import processes that 1) initially create a price file record and 2) update it. No functional usage for this yet but will come later. e.g. will open up ability for c9 to nag you when other c9 dealers have updated their pricing if you are relying on their pricing data via import price file from other c9 dealers.
    • F2 select any part
      • NLA parts are colour coded grey
      • New option  to filter NLA parts on screen
    • Edit Franchise
      • New advanced option to perma filter out NLA parts for selected franchise
      • New website option to filter out NLA parts on website
    • Edit price file option
      • Ability to manually toggle price items status
    • Unrelated price file import changes
      • If c9 has has a packqty set do not overwrite it with 0 if new price file has pack of 0 or doesn't set pack at all
      • IF new price file's list price is $0 do not override existing list price in c9
    • C9 Repo
      • Option to ignore new NLA parts. If your c9 already knows about the part, bring it in anyway to update its details, but if it is brand new don't bother dropping it into your c9 at all
    • Import price file for generic, OPEA, C9 and Suzuki.  Access advanced options to fine tune NLA importing yourself.
    • add new barcode. Make sure status is flagged as manual
  • Web content / mapping changes
    • Webcontent is now linked to part number, not stock record, price file record. Means you can delete part from stock but webcontent is retained
    • Part mapping to website is now consolidated to map same for both stock and master file records. This allows unstocked parts to be individually mapped to multiple locations just like stocked parts.
    • Manage web items has had a bit of a refresh. Mapping parts from here is now straight forward.
  • Other changes in this version of c9
    • Stock take sheets : visual bug fix. When there are items on reserve would incorrectly print qoh # as reserve #. Now fixed
    • Regression fix on part buy sell. Was not displaying supplier receive inv no. Now working again (looks like this was broken back in December last year. Bug only noticed now)
    • Online backup.  A bug / issue when doing a restore from online backup.  Online backup restore does progressive restore : so it restores enough info to get back up and running as fast as possible then does progressive restore of less important / historical data afterwards. Recent backup changes impacted how this worked. For EPC data that is progressively restored, the restore would work but it would then try to then re-backup newly restored data . So it would unnecessarily try and loop this data back to cloud backup, causing cloud backup to be unnecessarily rewritten. Generally should but okay other than increases network traffic, but it does create an unacceptable risk touching up the online backup data. The less backup data is touched the better, especially during a restore operation.
    • Whites Powersports Magician. For some parts WPS system does not send back a reply. C9 was incorrectly just echoing the last WPS response instead of responding with blank data: which could mislead operator into thinking stock was available when it is not. Now fixed.
    • added HD into list of magician suppliers that can be used for website integrated HD queries.
    • Deal unit tweaks : changing model year on unit on floor was not updating model year in the deal.  Now fixed.
    • Bugfix with toro pricefile importing. De-duplication logic for part numbers was busted. Now fixed.
    • From view franch screen, if the franchise has a linked supplier have an option to access supplier details from here.
    • Typo fix on purchase unit screen.


Release 4.848 September 4, 2020 barney

Couple of tweaks with this one

  • Bank rec again : couple of ergonomic changes to deal with discordant delete txns
    • For cash till counts, default discordant deletes as already being dealt with. For bank rec/ cash rec old behaviour of defaulting to '-' unreconciled will remain. This will mean cash tills will generally push through alot easier for guys who don't really worry too much about formal reconciliation
    • On bank rec save error because of unreconciled discordant deletes  : warn  user exactly why the save failed, instead of vague 'verification error' message
  • New Harley EPC importer added for importing EPC stuff from h-dnet portal. At this stage it doesn't bring in hotspot data (there really isn't any but possibly in future we might be able to extract it from SVG images), also it only imports models from 2000 onwards. Since alot of mid 90s models and models before are not digitized.


Release 4.847 September 2, 2020 barney

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

Bank Rec / Cash Rec/Till tweaks and fixes

  • The bank rec screen would sometime show unexpected / random alt codes in the Src field. e.g. you expect to see Rebate Income, but it shows GST owing. Visual display bug only. Now fixed.
  • Removed some non functional / residual code linked to old bank rec mechanisms. Not impactful except maybe made new recs a tiny bit slower to save. More cleaning out unneeded junk

A new bank rec needs to cross check with prior bank rec to figure out what is held over, ignored etc to deal with in this new rec. The algorithm to figure out which rec to use is complicated by fact that recs can cover overlapping periods etc. Older versions of c9 simply grabbed the most recent rec that happened to start before period we are recing. But this was highly problematic because if you redid an ancient rec, this rec would become the latest, even if it was months/years prior to next period to rec.  A proper algorithm needs to consider the most recent rec only if it recs upto the last txn prior to new rec period, otherwise it needs to get the rec that comes closest to beginning of new rec period.

But an issue here: it is possible to do a bank rec where you set to date into the future. So this becomes a rec which is opinionated about closing balance it cannot possibly know.  Under some circumstances things could line up and these recs would get selected dropping in a massive tonne of discordant txns since every legit txn that happened after it was created would be from point of view of this rec, be a rec breaking txn. So tweaked algorithm a bit to generally ignore / distrust recs that claim to know more than a day into future except under some special/specific circumstances (e.g. when we are recing from a period we know happens to be on or before the recs creation date).


Websites have just had a big refresh applied targeting performance.  First big performance review since going to V3.

Design goal of c9 is for every page to load at 0.1 seconds or faster.  Some creeping performance losses over last 12 months have now been improved. Some pages, such as looking at a single part, were taking about 0.3 seconds, x3 what I'd normally like.

So comparison of website performance for a c9 website. Navigating from home page to an assembly. Comparing to a dealership with diagrams on their website but use a competitor product, not c9.

C9 website:  71ms (brand) + 77ms (year) + 85ms (model) + 151ms (assembly) = 0.384 seconds to get to the assembly

Non c9 website: 817ms (brand) + 659ms (year) + 2044ms(model) + 2140 (assembly) = 5.6 seconds to get to the assembly. Nearly x15 slower


Positive website experience relies on website feeling fast. Alot of things we do at c9 to help achieve this.

  • Host servers in Australia (in a data center in Sydney). Physically closer they are to you the better. That time to cross an ocean if hosted in US or Asia makes a big difference to website performance.
  • Dedicated Hardware hosting. Cheaper option is to use virtual hosting but generally is alot slower
  • Alot of work to make sure the database that powers the website is tuned and does its jobs very efficiently



« Previous PageNext Page »