POS Brazil Version 4.17.0

February 9, 2022


  • Weighted barcode implementation
  • Printing coupons automatically if such a rule exists
  • Default coupon template added
  • New setting in Configuration/General. Sort products in products group by: 'name', 'code', 'productID', 'price', 'changed' or 'added' - uses 'changed' by default. Allows the user to select how the products should be ordered in the product group view.
  • support for config parameter 'numberformat'
  • Commission can be assigned to a sale (full sale or per item)
  • Czech translations added
  • Added new readonly field Price + Tax to Create Product Form. It is calculated based on the price field(net price) and the selected vat rate.
  • Allow download of all the languages the POS is using (previously would only allow downloading English translations)
  • Choosing employee manually to current sale implementation
  • External Device Customer Display now shows an idle message if shopping cart is empty
  • Network activity indicator now visualizes number of parallel network requests
  • login.erply.com now integrated into login screen
  • Setting to customize discount percentages added to POS.
  • Enable all types of payments to save correctly when used to purchase store credit
  • Prevent crash from invalid value of 'touchpos_ui_configuration' parameter
  • Added brazil_disable_create_company checkbox to POS configs (POS respected the conf, but you couldn't change it from POS)


Fixed MS parsing (Microservice print no longer throws an 'Error printing straight patchscript' message every time)

Added a new rounding case where during a return toPay % cashRounding === cashRounding/2

Correctly search for payments, already applied to the return on a return salesdocument

Opening day multiple times fixed

Only send minimal data about the shopping cart to the API (only modified values). Prevents placeholder values like 'loading...' as the name of the product from ending up on the sales document

Deselect already returned items that got selected via "select all" button on return modal

Adding 100% cash payment with multicurrency amount fixed

X-Report with get x-report only for last shift setting fixed

End of the day tenders are autopopulated with the totals from that day

If maximum allowed discount is negative and the manager override is closed, the discount is set to 0 instead of maximum allowed discount

Maximum allowed discount works both ways (discount, overcharge) - assigned discount is capped for the maximum allowed discount if the manager popup is closed

When picking up the layaway, dates are no longer generated anew, but rather taken from the current sales doc.

Fixed crash on logging out

Fixed issue with change getting saved to sale documents in BO as rounding

ProductOrderEdit form now updates its price and name when new customer has been selected or name has been changed outside the form

When offline mode is detected POS disables some features and fields.

  • The following buttons - Pending Sales, Pickup Orders, Layaways, X-Report, Cash In/Out, Stock & Price, Clock In & Out, Check Gift Card Balance, Coupons, Offers, Pay an Invoice, Save sale, Save as layaway, Save as waybill, Discount, Notes, Last receipt, Cash drawer.
  • Customer Search input

Shopping cart total, net total and tax total selectors are now updated and calculate crrectly in offline mode as well.

Fix issue with denominations not rendering properly in Payment modal

Product buttons are no longer showing matrix and variation products

Fixed conditional logic for returns for Transaction Junction Payment Integration

When adding products to shopping cart, amount input field on the last shopping cart item gets focused. This leads to issues when adding products with a scanner. The scanned code populates the amount field instead of searching for another product. I added a new option in Settings/Configurations/ShoppingCart - focus amount input for last item added to shopping cart. When it is enabled, the amount input for the latest product in the shopping cart will be focused. The setting is disabled by default.

New search input will not mess with vatrates & works correctly with weighted barcodes

Fixed issue with scanning products with Product input field focused.

Scanning now works even if more than one code has been added to a field(comma separated codes).

When making unfocused scan, the customer is searched via direct api call (previously was searched in redux)

Setting exact code match adds product to ticket has been removed as it's no longer used and replaced by Add product to shopping cart when search finds single result

Products stock levels now get updated after every sale

When paying with custom payment type, the code entry modal gets correctly displayed (previously would not get displayed)

Opening stock transfer no longer crashes the POS

Picked up orders/offers, that had promotions active at the point of creation, respect those promos and dont get new promos added to them.

Fixed bug where you could still assign a discount to a referenced return even tho POS was displaying a warning "cannot edit cart during referenced return"

Filter out empty products from productComponents to avoid crash via n.localeCompare

Weighted barcode product gets correctly added to the cart (product is added with the embedded amount + no weight popup shows up)

Product information now shows product price without tax in regions where TAX should not be included in the price preview(USA)


  • Removed customer display from plugins. POS redirects to the separate app. POS sends out channel name with POST request to prefill the channel name in CD configs.
  • cayanCustomerDisplay plugin now also supports wrappers

Plugin fixes

  • Prevent clear sale popup from appearing on removing adm tax on returns; prevent the popup from showing on not entering a return tag
  • Return quantity not counting previous returns with p**-exchange plugin


Reduced lag caused by lots of small network requests trying to update the network activity indicator

Attribute formats are now converted by ErplyAPI2 class

More debug information added for handling printing errors

New util method {isRowFullyReturned} to do exactly what the name implies + some doc for it

Corrected typos within pceftpos void code

Function to convert dates to follow the format specified in the BO

Fix incorrect attribute in getSalesDocument (worked by coincidence since always ran after saving, but wastes cycles fetching multiple documents)

Refactored autiImport func in constants/modalPages to take a forceAll {Boolean} argument and moved its execution to POS.tsx. It now fetches all lazy imported modal pages, when forceAll is true, so POS would be able to use them in the offline mode even if they were not opened during online mode. The func is called in POS.tsx so that the loading won't slow down the user experience.


  • Fixed issue where formatting prices would cause NaNs to appear when using different BO price formats.
  • Fixed an issue where instead of a product discount being empty it would show a "-"
  • Schema now uses payment.paid instead of payment.total to represent cash payment
  • Instead of payments being passed down explicitly, they are now received from the salesDoc
  • Reprint count now uses new API endpoint getPrintsForOneReceipt, which is much faster to perform, since it doesn't depend on how many previous prints you have on your account