ERPLY Back Office versions 4.5.0, 4.5.1

New features

1. “Store Regions” module

  • This feature allows to group stores into “regions”, and set up price lists that apply to an entire group of stores.
  • Please contact customer support to enable it on your account.
  • Store Regions can be managed in Retail Chain → Store regions. On location form, you can specify which region the store belongs to. Locations can also be filtered by region.
  • A region can be associated with an unlimited number of price lists, and you can change the order in which the price lists will apply. These price lists will apply to all stores in the region.
  • It is also possible to define store region and customer group-specific price lists: price lists that apply only in the specified region, and to customers belonging to the specified group.
  • Price lists will be applied in the following order (and each successive price list overrides a previous one if they contain the same products):
    1. Region price lists;
    2. Region and customer group-specific price lists;
    3. Location price lists.
  • A region cannot be deleted if there is at least one store that belongs to that region.
  • On User form and Employee form, the lists of locations additionally show region name for each location. Similarly, the “Locations and tax rates” block on Product Group form, too, has been augmented with region names.
  • In Inventory → Locations, a new button has been added: “Reorder by Region”. Clicking it will reorder the list of locations by region name, in alphabetical order. (Within each region, the previous ordering of locations will be preserved.) The same rearrangement can just as well be done manually, but on an account with tens of locations, this could be time-consuming.
  • For region-related API calls, see the release notes for API version 1.13.0, or the documentation of API call “getStoreRegions”. This page also contains links to all other related API calls.

2. Restricting promotion to certain regions and/or customer groups

  • This feature allows to specify that a promotion should apply only in certain regions, and/or only to specific customer groups.
  • Please contact customer support to enable it on your account. It also requires the “Store Regions” module that is mentioned above.
  • Enabling the module adds two new fields to promotion form:
    1. [Promotion only takes place] … in these store regions:
    2. Promotion only applies to these customer groups:
  • It is possible to select multiple regions, as well as multiple customer groups.

3. Receipt printout configuration

  • On the Settings → Configuration page, receipt-related settings have been reorganized into a separate section, “Receipt printouts”.
  • Several options which formerly were only editable with a hidden configuration parameter, are now listed:
    • “Redeemed coupons”;
    • “Card payments, detailed” / “Card payments, shortened”. (These two options are not available on US and Canadian accounts: in those countries, the layout of card payment information on receipt is predefined. But these options might be useful in other countries.)
    • “Customer card code”;
    • “Return or discount reason code”;
    • “Attendant’s name”;
    • “Customer’s address”;
    • “Original price”.
  • Additionally, a number of new options have been added. These did not formerly exist at all:
    • Option to remove customer name. (Eg. in case it is desirable to only show the loyalty card number.)
    • “Tax Exempt Number”;
    • “Currency rate for foreign-currency payments”.
    • Additionally, the label for “Total Discount” on receipts can now be set separately for each language.

4. Displaying discounts on receipt

  • Receipts can be configured to display line-by-line detailed information about which discounts were applied to each item. A new group of check boxes in Settings → Configuration → Receipt printouts lets you select which discounts the receipts should show:
    • Promotion discounts;
    • Price list discounts;
    • Manual discounts.
  • For each individual discount, the receipt will display:
    • 1) Discount’s name. This would be the price list name; or promotion name; or manual discount’s reason code, or if there is no reason code, just the text “Manual discount”;
    • 2) How many units the discount applied to; and
    • 3) discount amount per unit.
  • For the “Manual discounts” and “Price list discounts” options to appear, please contact customer support. For either of these options, an extra module needs to be activated on your account.
  • Or, if the option for promotion discounts is not listed, either, there is a module that needs to be activated for that, too.
  • It might be useful to just have the extra modules activated, even if there is no need to have this information on receipt printouts. When the extra modules are activated, cashiers, too, will start seeing the detailed discount information in Berlin POS: all the cumulative discounts and promotions that have been applied to each line.
    • This may, for example, help to track down why POS is offering an item at such a price, or to analyze how a combination of promotions would work in reality.
  • Detailed information of discounts may also be needed in third-party integrations. For retrieving that information over API, please see the documentation of API call “getAppliedPromotionRecords”.

5. “Assortments” module

  • This back office version adds preliminary support for “assortments”, ie. ability to specify different selections of products for different stores.
  • Please contact customer support to enable it on your account.
  • This feature is not functional yet. It is only possible to define the assortments and modify their contents, but they are not being enforced yet. All products can be sold and purchased as usual in POS and in back office, regardless of whether they belong to the particular store’s assortment or not.
  • The following notes only describe how the assortments are going to work; this might be useful information for third-party integrations.
  • In assortments, each product has a status. This is one of the same 4 statuses that can be set on product card:
    • Active
    • No longer ordered
    • Not for sale
    • Archived
  • Product’s status on product card, and product’s status in assortment, will combine to apply the widest possible restriction. For instance, if a product is set as “No longer ordered” on product card, this means that no store will be able to order the item, regardless of what has been set as the product’s status in any particular assortment.
  • This way, it will still be possible to apply centralized restrictions from product card.
  • For assortment-related API calls, see the documentation of API call “getAssortments”. This page also contains links to all other assortment-related API calls.

6. New promotion type

  • New promotion type has been added: “Buy at least x pcs of a product (or from a set of products, or from a product group) and get $ / % off of all those items”.
  • For example: “Buy 3 soups or more and get $2 off each”. If customer buys 3, 4, 5, 6, … soups, all the items (the first three, as well as all subsequent ones) will get the discount.

7. Store prices on product card

  • By setting configuration parameter "show_sales_price_per_store_on_product_card" = 1, an additional block of information can be enabled on product card: a list of stores, and the “Regular Price” and “Current Price” in each store. This might be useful for verifying the combined result of all price lists that have been applied to a store.
    • “Regular Price”, in most cases, will be product card price – or, if product card price is zero (not defined), the price from the store’s first price list.
    • “Current Price” is the actual price that currently applies: when selecting this product in POS (without specifying a customer), this is the price that should be shown on the screen. It is the result of applying all store and region price lists.
  • The table will show net prices in United States and Canada, prices with VAT in other countries.

8. “POS multicurrency” module

  • This is an extra feature which allows to count the register in Berlin POS in multiple currencies.
  • Please contact customer support to enable it on your account.
  • It also requires Berlin POS version 3.25 or newer, and customer support must apply configuration parameter "touchpos_sale_additional_currencies" to define which currencies need to be counted in POS.
  • In back office, when this module has been enabled, field “Currency” will appear on the “Day opening and closing” form.

9. “Price list types” module

  • This is an extra feature for classifying price lists into store price lists and retail chain-wide price lists, and applying different user rights to different types.
  • Please contact customer support to enable it on your account.
  • After this module is enabled, a new, required, drop-down field will appear on price list form: “Type”. The options will be “Base Price List” and “Store Sale Price List”.
  • On user group form, there is a new check box for specifying rights: “Create and edit price lists with other types besides “Store Sale Price List””. Users without that right can only create, edit or delete Store Sale Price Lists. Users WITH that right can create and edit all kinds of price lists.
  • Functionally, there is no other difference between a “Store Sale Price List” and “Base Price List”. (The price lists apply and override each other in the usual manner, regardless of their type.)

10. Actual Reports labels and printouts

  • Tax rate names have been added to Actual Reports sales document printouts (into the "vatTotalsByRate" and "advancePaymentVatTotalsByRate" blocks) and purchase document printouts (into the "vatTotalsByRate" block).
  • On product labels printed with Actual Reports, new fields "basePriceListPrice" and "basePriceListPriceWithCurrency" are available. These contain the product’s “base price”. “Base price” is either product card price – or if product card price is zero, then the price from location’s first price list.
    • In contrast, fields "price" and "priceWithCurrency" show the item’s price as per all price lists that currently apply, and fields "originalPrice" and "originalPriceWithCurrency always show product card price (without the fallback to location’s first price list).

11. Other new features

  • On Canadian accounts, it is now possible to specify “Corresponding GST-exempt tax rate” on tax rate form. For each province’s tax, you need to specify which other tax should apply if GST exemption were activated in POS. This setup will be necessary for using the “Partial Tax Exempt” feature that was introduced in Berlin POS version 3.25.
    • The point is that GST-exempt taxes (First Nations taxes) must be defined in ERPLY as separate tax rates.
    • GST exemption should not affect items that are already tax free anyway, or have only PST. You must define that all these rates get replaced with a First Nations 0% tax.
    • For every other tax rate, you must define that these will get replaced with a First Nations 5% tax.
    • If the option Settings → Configuration → Receipt printouts → Tax Exempt Number has been enabled, the receipts on Canadian accounts will show not only the tax exemption certificate ID, but also the amount of reduced tax.
  • Option “Except lines to which a manual discount or any other price list or promotion discount has already applied” has been added to promotions that give a percentage discount from the whole transaction.
    • Setting this restriction will prevent that promotion for applying double discounts.
    • This feature requires the “Applied Price Lists” and “Applied Manual Discounts” extra modules. (These are the same modules that are needed for showing detailed discounts on receipt printouts.) Please contact customer support to have these modules activated on your account.
  • Fourth option for generating sales document reference numbers: “Invoice-based, with company prefix” — has been added. In this scheme, each invoice gets a unique reference number, but it will also have a fixed, unchanging, numeric prefix. To enable this scheme, go to Settings → Configuration → Sales document printouts and pick the new option from the drop-down field titled “Reference numbers on invoices”.
    • When enabled, a new field will appear on company card: Settings → My company information → “Prefix for invoice reference numbers”. This is where you can define the prefix.
  • Check box “Cashier must enter price in POS” has been added to product card. When selling any of these flagged products via POS, cashier will be required to override the price every time – a corresponding prompt will appear. This feature is supported by Berlin POS version 3.26 and newer.
  • On Quotes, the column “Supplier quoted delivery date” has been added. The same column has formerly been present on Sales Orders.


  • French language option, and French translation has been added. It can be enabled on French accounts by customer support.
  • Canadian French language option, and Canadian French translation has been added. It can be enabled on Canadian accounts by customer support.
  • Turkish language option, and Turkish translation has been added. It can be enabled on Turkish accounts by customer support.
  • Russian translations have been updated.
  • Arabic translations have been updated.
  • Latvian translations have been updated.
  • Finnish translations have been updated.
  • On Canadian accounts, if user interface is in French, currency symbol will be displayed after the amount (“123 $”, instead of “$123”)
  • The link to Help Center is now country-specific.


  • Both “location in warehouse” fields on product card (the drop-down, and the text field) can now be exported and imported with product export and product import modules.
  • Field “Location” has been added to “Recurring billing” form. If you specify the location, all invoices created from that recurring billing will be issued from that location.
  • A new option has been added: sales document numbers can also be configured to be 11…18 digits in length, not only limited to 7 digits and less.
    • Please contact customer support to enable that option. The starting numbers for sales documents can be configured, as usual, from Settings → Configuration → Starting numbers for sales documents.
    • Invoice numbers that are 8…10 digits in length are always reserved for receipts made from POS. This is why these cannot be used for back office sales documents.
  • Links “Select all” and “Select none” have been added to user form, next to the “Locations” heading, to check or uncheck all locations at once.
  • In the Users list, if the list of locations (to which the user has access) is longer than 15, just a total number of locations will be displayed, instead of the name of each. (Eg. “20/25”, meaning that user has access to 20 locations out of 25 total)
  • It is now possible to set up a new franchise chain so that the HQ account will see all locations (warehouses), but each franchisee account will see only its own locations.
  • Column “Code” and filters “Name” and “Code” have been added to Retail Chain → Locations.
  • Support for the “getTaxExemptions” API call has been added. (This is a mostly Canada-specific reporting feature, and needs to be enabled by customer support.)
  • In Settings → Reason Codes, each reason code can now additionally have a “Code”. This would most likely be some alphanumeric identifier, and the field can be useful for third-party integrations. Reasons are searchable by code.
  • It is possible to assign a reason code to a promotion. On promotion form, there is a new drop-down field, titled “Reason code”.
    • This, too, is primarily meant for third-party integrations.
    • The drop-down will only list reasons whose type is “Promotion”.
  • Promotion and price list names can now be specified in multiple languages.
    • If you need this feature, please contact customer support to have it enabled on your account.
  • Field “privateNotes” is now available on Actual Reports sales document printouts.
  • A configuration setting has been added: Settings → Configuration → Customer → “Registry Code / ID Code must be unique”
  • Field “Ship-to address” or “Payer address” on invoices (depending on account setup) has been added to report generator.


  • Fixed: On Canadian accounts, tax is now referred to with the generic term “tax”, instead of “HST”. “HST” is just one variation of a sales tax.
  • Fixed: If the price precision on invoice printouts had been customized (using configuration parameter "invoice_printout_price_decimals"), it did not work when printing out multiple documents.
  • Fixed: When an unconfirmed Quote’s type is changed to something else (eg. to a Sales order or an Invoice), it will now also get a new number, because quote numbering is different from the numbering of sales orders or invoices.
  • Fixed: when it has been specified that a matrix variation product should inherit its Code 3, Manufacturer Code, Code 5, Code 6, Code 7, and/or Code 8 fields from the matrix parent, deleting the respective code from the parent will now delete the code from the variations, too.
  • Fixed: it was not possible to change customer reward points amount on Customer form, if the check box “Use POS with touchscreen interface” in Settings → Configuration was unchecked.
  • Fixed: when a bundle product was sold through recurring billing, bundle components were not subtracted from inventory.
  • Fixed: “Quantity price lists” now also apply to negative quantities. For instance, if it has been specified that a price list price applies to quantities 5 and up, the same price will apply when doing a return (credit invoice) for quantity 5 and up.
  • Fixed: on Customer form, the “Home Store” and “Sign-up Store” drop-downs now display “(Unknown store)”, if there is a store assigned to that customer, but cannot be identified. This may be the case in certain franchise setups.
  • One discrepancy fixed in QuickBooks export.
  • Fixed: information about detailed promotions and other discounts that applied to each receipt row was lost when the receipt was re-saved in back office.
  • Fixed: When printing a Purchase Invoice or Purchase Order in a foreign language, “free-text items” did not have a name. The “Product” column was blank.
  • Fixed: on receipt printouts, payments in foreign currencies are no longer converted to receipt currency. For example, on Canadian accounts, a payment of US$200 will be now shown as “Paid (USD): 200.00”, not as “Paid: 248.00” (which was the equivalent value in Canadian dollars).
  • Fixed: importing products no longer resets products VAT rate (in cases where VAT rate is not even being imported).
  • When opening a product card from Supplier Price List or Price List, it will now be opened in a new window.
  • Fixed: when a sales document contained predominantly free-text rows, changing the customer sometimes did not trigger the “Do you want to reload item prices?” dialog.
  • Fixed: When printing out multiple sales documents, they were occasionally printed on top of each other.
  • Fixed: saving or re-saving purchase documents, Inventory Registrations, Inventory Write-Offs and Inventory Transfers will no longer fail if the operation takes more than 30 seconds. (The time limit has been raised to 5 minutes.)
  • Fixed: Deleting a sales document will now also delete links between the deleted document, and any recurring billings and meter readings. (Previously, issues occurred when trying to re-create another invoice from the same recurring billing or reading.)
  • Fixed: on some Latvian sales invoice printouts, the “Payer” and “Recipient” fields appeared switched.
Sign Up

Similar posts that might interest you

Learn about the ways how retailers use Erply

Manage products, fulfill orders and control sales with Erply

erply PIM