Welcome to what’s new on Shopfront for September 2020! Whilst we’ve got no major features this release, we’ve got a large number of minor features!
Future prices now indicates when a product is inactive,
Advanced stocktake now indicates when a product is inactive,
Express promotions now shows a product information dialog when the product’s name is pressed,
Dialog boxes have been redesigned for smaller screen (such as mobile phones),
Public order notes now appear directly in the WYSIWYG editor rather than being embedded into the [order-table],
Filters on the index pages (e.g. customers, products) are now hidden by default for small screens (mobile phones),
Discounted and locked prices now show an unlocked price which is what the normal price would be had the price not been locked,
Discounts are now based off the “unlocked” price (normal sell price including promotions but excluding discounts),
Products on parked sales no longer send as discounts unless the “unlocked” price is different from the current, locked price,
Whenever a product’s inventory has changed and the product edit page is open, you’ll now be presented with a dialog asking to confirm the inventory of the product,
Revision history tables now highlight the differences between the “from” and “to” values (green is addition, red is removal and blue is modified),
You can now return a transfer the same way you can return an invoice,
The parked sales sell screen option now automatically refreshes when it receives a new parked sale,
All POS routes are now loaded from the local cache by default which has dramatically improved the speed of opening a page in a new tab which has an ID in the URL,
Price lists can now discount each item by a dollar amount,
Scan rebates are now shown on the promotion view page,
Cursor position now remains in the cash calculator after a routine sync when on the close register page,
Everyday tickets has been reworked for small (mobile phone) screens,
Refund reason is now available to be used in advanced reports,
Login attempts now automatically time out after three seconds,
Product import CSV will now be previewed before imported,
Multiple filters can now be selected for the slow moving stock miscellaneous report,
[Developer] Prices are now guaranteed to be ordered by quantity then price set
Price changes applied to a family now appears in the revision history for all products, not just the one which the change occurred on,
Discounts on the register closure view page are no longer being duplicated every time a discounted sale was parked,
WYSIWYG editors show left-justified image padding correctly,
Moving between two reports saved to the user quick menu now correctly loads the second report,
Sales sent via Vendor Connect now correctly send whether the product was a case or single sold,
Family pricing now checks if it should be recalculated after a promotion has been applied to part of the family,
Loading a saved sales report filtered by customer now shows the correct customer name instead of just “Customer”,
Prices updated from the stock list now appear in the revision history including all tax,
Products created from the Master Database without modification now appear in the everyday tickets,
Tax on freight and fees is now dependent upon supplier setting,
Prevented duplicate products from appearing on transfers and orders received via Vendor Connect,
Adjusting a price list override price by profit percentage now works as expected, previously it was overriding the price with the percentage specified,
[Linkly] (PC-EFTPOS) transactions for some banks were able to be cancelled in Shopfront between the card being presented and Shopfront being informed of the transaction resulting in Shopfront believing the transaction had been fully cancelled, Shopfront now handles this correctly and continues the transaction rather than cancelling it,
[MYOB] Prevented duplicate invoices being sent to MYOB due to MYOB’s API timing out but still processing the request
Welcome to what’s new on Shopfront for August 2020! This month is full of information display adjustments as well as some major performance improvements!
Performance and Memory Improvements
Over the course of this month we’ve had a focus on performance and memory related improvements and have made some significant gains.
First we looked at how our indexing works as we know that memory takes a large hit whenever that runs and it can run quite often (any modification to a product, customer, promotion or price list runs the reindexing process for the respective change). We keep an index to make searching fast and allows us to provide a dynamic search (such as searching from the middle of multiple different words).
To improve this we took a critical look at when we need to reindex our data and came up with a strategy to perform a “rolling” update which batches changes together.
After implementing the batched rolling update we then looked at which “browsing contexts” require the index and we’ve prevented a number of pages from performing a reindex until you’re back in a page which does require the index.
Both of these changes has lead to a large improvement in both memory usage and performance, but we’re not done yet.
Prior to this month our icons were loaded using a technology called SVG, this is a very common way to load icons and is great to do a number of transformations to the icons (such as masking and recolouring), however it comes at the cost of a small amount of memory per icon, when you have a small set of icons this memory usage is negligible, however Shopfront currently features over 350 icons so that memory usage stacked up. In order to combat this, we’ve moved our icons from SVG and instead made them into a “web font” which forces the icons to load like a normal font does. As soon as this was implemented we saw a huge reduction in memory usage.
Finally we looked at Shopfront as a whole, previously when you load Shopfront you load all of Shopfront, however you might just be in the register for the day so you don’t need the order modification or settings pages to be loaded in the background. Using a technique called “lazy loading” we have started moving a number of pages to load only when the page is visited. Now this is expected to come with a performance penalty of loading the page, however due to the way Shopfront was designed to work offline we precache all of the page data on your hard drive so you never see the page loading.
After finishing these performance and memory improvements we decided to measure them against some other popular applications and have found that our memory usage is now below Gmail, Jira, Zendesk and Facebook.
Whilst a major focus has been on overall Shopfront performance, we’ve made quite a few other minor adjustments, here are the key changes:
You can now optionally specify tags to show revenue of when closing the register (customise this in the Registers & Outlets settings page),
We’ve replaced the select dropdown component with a brand new lightweight version,
The price calculation is now quicker when product quantities are greater than 100,000 by swapping to an approximate method rather than an exact price calculation,
The product view page now shows the product’s status next to its name if it’s not active,
Duplicate product dialog for express & advanced stocktakes as well as the order edit screen now shows if an included product is inactive,
Sales history now defaults to the current Outlet you’re in if you’re a multi-store Vendor,
The roles & permissions page now shows how many users belong in each role,
A new permission to prevent users from clearing local data from within the POS was added,
Reduced maximum amount of products and customers to display in the sell screen search to 300 to improve memory usage and loading time,
The customer view page now shows the group it belongs to,
Inactive products have been removed from the promotions sale key,
More information has been added to the login news,
Order reference is now an available column for advanced reports,
The promotion view page now shows the Outlet(s) which the promotion is applied to,
Advanced stocktake now allows entry of “0” as a quantity,
When multiple of the same products are unconsolidated on the sell screen we now distribute the prices using the family price distribution rules,
The sync no longer paginates the parked sales and instead returns them all at once resulting in a large performance improvement on pages after the first,
Customer statements can now be run if you have the See Customers permission (previously you could only run them if you had the Modify Statements permission),
Transferees can now store contact details and automatically email transfers,
Vendor connections have gained the option to specify how the connection data should be received (either as an order / invoice or a transfer),
Details of a invoice return are now able to be modified,
[MYOB] The integration has been completely rewritten in TypeScript and now features better error recovery and a new validation system,
[Developer] Viewing application history is now significantly faster
Prevented multiple sell screens from being opened after removing a previous duplicate sell screen,
Stocktaked products report was previously showing the current date for products that have never been stocktaked instead of “Never”,
Fixed promotions endlessly reindexing resulting in a memory leak,
Lines on orders which contain a different case quantity between the Shopfront product file and the order now correctly adjust the quantity when changing case quantity to one,
Opening the browser when in global mode no longer forces register selection,
Prevented payment of a sale while a product is being added when both hard drive and CPU are at 100%,
Orders & Invoices now shows correct orders when navigated to when in global mode,
Gift cards can now be removed after they have been added to a parked sale,
Sales summary in product view now correctly shows all sales when in global mode,
Performing a customer payment with a large number of sales no longer results in the rate limiter being hit,
Logout is no longer forced after two hours from last login, instead it’s now two hours from last interaction with Shopfront
Welcome to what’s new on Shopfront for July 2020! It’s been a while since we’ve published one of these (November 2017 was the last time one was posted 😖).
So without further ado, here’s what has recently been released for all customers on Shopfront.
In-page help articles
You may have noticed this when we first appeared back in May, but it’s now been added to a large amount of screens throughout the POS – we’ve now embedded some of our support articles directly in to the page through the use of a help icon in the top right-hand corner.
Whenever you’re on a page which has a linked help article, you’ll be able to find out more information without even leaving the page. Clicking on the help article displays some relevant articles that might be of assistance to you.
We’ve also started to add more in-page help with any item that might need further explanation. We’ve started with the general settings page but we’re going to be adding them to more pages in the coming months.
Transfers and sales to other Shopfront Vendors
If you are transferring or selling stock to another store which also has Shopfront, you’re now able to connect the two Vendors together to automatically send and receive the stock without having to perform any manual entry.
To get started, both sides need to create a new “Vendor Connection”, the sender needs to provide the receiver with their displayed “Sender Code” which will be entered into the receivers “Receiving Code”. From there you can simply either sell stock to the connected customer or transfer stock from the Orders & Invoices page. Stock will be automatically matched between the two stores and the receiver will just have to verify the data is correct before accepting the order.
Our additional information has been redeveloped and redesigned with several new features being added including default values for fields and new field types (such as drop down lists) as well as a facelift.
This information can be accessed via the API, printed on tickets or displayed in several parts of Shopfront.
In the coming months we’ll also be adding several new features to the additional information such as being able to filter reports by additional fields and being able to use additional fields to search for products on the sell screen.
Media Centre Improvements
Whilst there is no visible change to the media centre, behind the scenes it has been significantly improved. Deleting and renaming both files and folders is now considerably faster as is moving between folders.
Along with the internal changes, we’ve also create a new “mini” Media Centre which is now available to use when editing anything with the WYSIWYG (what you see is what you get) text editor, such as editing the description of products.
The mini Media Centre allows you to quickly insert images into the WYSIWYG without having to worry about the image’s URL.
Shop MyLocal Integration
We’ve now released our Shop MyLocal integration as a beta version. Shop MyLocal allows IBA stores to sell popular products online with the prices coming directly from Shopfront and when a sale occurs, the sale automatically appears in Shopfront, preventing the need for data entry.
To find out more information about Shop MyLocal or to get started with it, contact your Business Development Manager.
Along with our major features, we also have made numerous improvements to Shopfront, we couldn’t list them all, but here are some of our favourites:
Promotions can now be applied to multiple customer groups,
New supplier option “Freight is included on supplier invoice” for use when receiving stock from a supplier that requires you to use an external freight company,
Promotion calculation speed has now significantly improved when cross promotion count is turned off and a large amount of products exist in an active express promotion (one real world use case saw a reduction from 5.8 seconds to 0.2 seconds),
Numerous information enhancements (e.g. more places now show the product’s status if it’s not active),
Inventory at Date reports can now be exported as a PDF and CSV file, it can be printed and it can be searched,
Many components on receipts can now have customisable padding,
Product scanning in express stocktakes is now faster,
You can now manually set a product to update it without using the future price time setting (go to the Utility Menu > Future Prices),
Subject lines can now be predefined for customer statements,
Orders sent via email to suppliers can now be sent as a PDF or CSV attachment (you can set this per supplier in the supplier’s edit page),
Selling a product within a basket now shows that it was sold from a basket in the inventory log,
We’ve replaced our code editor with a more lightweight version and a nicer colour scheme,
We’ve also reduced the size of colour selector component and given it a facelift,
[Developer] New Embedded API options to allow developers to plug into more of Shopfront’s user interface,
[Developer] Embedded applications can now send messages between their embedded pages directly through the Embedded API,
[Developer] All supplier details can be provided when creating a supplier instead of having to create and then edit the supplier,
[Developer] Some POS resources (products, payment methods) can now be locked which prevents anyone from deleting the resource except for your integration,
[Developer] Through the Embedded API you can now modify the current sale in process
Our release also comes with numerous bug fixes, some of which are:
Express stocktakes now show the inventory log history when a user that has been deleted previously changed the inventory,
Customer account payments that were made in the future compared to the current statement period no longer affect the current statement period,
Orders that have a decimal quantity for the received and sent quantities now save correctly instead of being rounded to the nearest whole number,
Orders now always force the products to be put into the next sync after they’ve been sent and received,
Fixed floating point calculation errors during promotion calculation when individual product quantities were above 150,
Promotion Calculation Manager now correctly updates the current time to expire promotions without leaving the sell screen,
Transfer history for products now shows transfers to transferees not just transfers to other Outlets
Refund reason now appears when sale total is equal to zero,
Push notifications are now more reliable,
Bulk deleting several hundred promotions at once now works as expected,
Promotions from banner groups now retain your changes instead of reverting when the promotions are updated,
[MYOB Integration] Sending invoices to suppliers that have names which contain special characters now works as expected,
[Linkly / PC-EFTPOS Integration] Prevented pressing cancel while terminal is performing a logon
That’s it for this month, we’ll be aiming to continue to release these “What’s new on Shopfront” articles on a month-by-month basis towards the end of each month. We’re also going to be changing the way which deployments are handled in Shopfront by introducing release channels. To start with we’ll be releasing three different versions called Canary, Beta and Release. Most customers will remain on the Release version which is roughly equivalent with how we currently release our updates, however a subset of customers who want access to features faster will be moved onto Canary or Beta.
We’re planning on releasing a Canary update every week, a Beta update every fortnight and a normal Release every four to six weeks. We’ll start our new release process at some point about half-way through August. If you’d like to be involved in the Canary or Beta channel, send an email to our support team.