# May 2025

## Monthly summary / tl;dr

### 🚀 Added

* **Guest customers on orders**: Add/edit guests without creating a permanent customer. Some people just want to browse in peace.
* **Flow Gift Card**: Now shows the last 4 digits of the card number in settled order view.
* **Service order images**: Upload, view, and delete images directly on service orders. More clarity, less guessing.
* **Hidden retro theme**: Unlock old-school vibes with a “chunky” ElGuide-style UI in keyboard mode. It's nostalgic. It’s unnecessary. We love it.
* **PIN code change**: Users can now change their PIN from the app bar.
* **Device info view**: Know exactly what device you're logged into. Perfect for IT troubleshooting or just feeling important.
* **Support for compact 51x25 mm labels**: Because sometimes, size does matter.
* **New API endpoints**: Print receipts directly via API and fetch devices by Till ID.
* **Custom cost/name per order item**: More flexibility when products need specific treatment.
* **EHF improvements**: EHF address fields added to customer form + SWIFT/BIC now supported in export.

### 🛠️ Improved

* **Customer search from Omnium**: Pulls email and phone directly for faster lookups.
* **PDF receipts**: Better layout, better printing, happier accountants.
* **Total discounts**: Now shown on receipts, invoices, and offers – because every krone counts.
* **Verifone & Softpay error handling**: Improved diagnostics when terminals act up.
* **Package products**: Clearer display and correct stock logic, even when components are missing.
* **Order search filters**: Now includes orders reserved via purchase requests, not just from warehouses.
* **No more auto-updates**: Receiving stock won’t overwrite purchase prices.
* **Cash drawer flow**: Now opens instantly after entering amount – feels more responsive.
* **Backoffice access**: More precise user permissions to protect reports and data.
* **Touch UI**: Warning color on negative quantity in open sales. Visual cues FTW.

### 🧯 Fixed

* **Reserved stock math**: Works correctly across multiple warehouses (finally!).
* **Missing images on RMA PDFs**: Now included, so you won’t need to email extra documentation.
* **AUTO\_ADD products**: Now auto-deleted when parent product is removed.
* **Incorrect receipt headers**: Proper titles now shown – no more “Receipt #Generic”.
* **Label printing bugs**: Labels without prices now behave, and no crash when printer isn’t connected.
* **Package availability**: Now reflects correct quantities and reservations.
* **Incorrect settlement states**: Orders now marked properly after full receipt payments.
* **Omnium VAT & discounts**: Now handled correctly, even when quantity = 0.
* **Cashback logic**: Cash drawer and settlement flows now sync properly.
* **Softpay quirks**: Fixed resume handling and disabled buttons when returning store credit.

***

## 2025-05-26

### Added

* New device service and repo method: `GetDeviceByTillId`.
* New API endpoint for printing receipts:\
  `/tenants/{tenantUid}/stores/{storeUid}/receipts/{receiptUid}/print`

### Improved

* Added `SupplierReferenceNumber` field to RMA order items if exists, so that the supplier can "backtrack" the RMA all the way to the original purchase order.
* Receipts now include more delivery information, like address details, etc.
* Improved error handling for Verifone payment failures.

### Fixed

* Labels without prices now print correctly when using comparison pricelists.
* Softpay: `activityToResume` parameter is now included when `client appcode = assistant`.
* Pictures added to services now show up correctly on RMA order PDFs. No more missing evidence.
* Fixed language issues in service email templates.
* Orders are now set to the correct state when all lines are paid via receipts.
* Automatically delete `AUTO_ADD` products when their parent product is deleted.
* Service orders can now be modified even if the RMA item itself is unchanged.
* Total discount layout fixed on receipt PDFs. Looking better on paper.
* Correct receipt headers are now shown. No more generic titles.
* Package products now display the correct available quantity.

## 2025-05-20

### Added

* <kbd>Flow Gift card</kbd> After selling a Flow Giftcard, the *last 4 digits* of the card number will now appear in the *settled order view*.
* **Visual warning for returns / refunds:** Order lines with *negative quantity* now show a warning indication color in *touch mode open sale*.
* <kbd>Flow Service</kbd> **Service order images:** You can now *view, upload, and delete images* attached to a service order.
* **New theme:** Hidden retro mode unlocked 🕹️: A *new “secret” theme* can now be activated in *keyboard mode* – bringing back that old-school Elguide vibe. It’s nostalgic. It’s chunky. It’s glorious'ish.
* **Change your PIN:** Users can now *change their PIN code* by clicking their name in the app bar.
* **EHF support:** Added EHF *address field* to *business customer* form.
* [**RMA**](#user-content-fn-1)[^1] **from service order:** You can now *create an RMA order directly* from a service order.
* **New price label format:** Support for new label size: **51x25 mm**.
* **Sort receivements:** Tap the *SKU or product name header* in a purchase receivement to sort products *alphabetically* (both directions).
* **Purchase request orders:** Added a *dedicated view* for orders that include a purchase request.
* **Know thy device 🔍:** Device info now shows up on *login*, in *settings*, and right there in the *app bar*. Perfect for the IT heroes among us – no more guessing which mystery box is acting up.
* **Notification list filters:** Filter the notification list report by *customer* and *store*.
* **Payment descriptions:** *Payment parameter descriptions* are now visible in the payment view. No more guessing what that payment method with the weird name is.
* **Guest customers on orders:** It’s now possible to add and edit a *guest customer* on an order without creating a permanent customer record. Not everyone wants to be a 'real' customer afterall.
* **Display guest customer info:** Orders with guest customers now display *customer details*, even if no customer record was created.
* **Expected delivery info:** The *expected delivery date* from purchase orders is now shown on order items with reservation type ‘Purchase Order’.
* **Total discount shown:** *Total discount across all products* on an order is now displayed on:
  * Till receipts
  * PDFs: receipt, invoice, and offer
* **Purchase price in currency:** New product field: currencyPurchasePrice
  * Allows submitting a purchase price in a specific *currency code*
  * Automatically updates the regular purchasePrice based on *current exchange rates*
* **Product API:**
  * New fields: allowOrderSpecificCost, allowOrderSpecificName

    → Enables products to have custom cost or name per order
* **OrderItem API:**
  * New fields: itemCostPrice, productName

    → Override cost price and name *directly on the order item*

### Improved

* **Softpay improvements:** activityToResume and switchBackTimeout fields added to the startTransaction handler for better control over Softpay transactions.
* **No auto-update on receivement:** A product’s purchasePrice is *no longer updated* when the product is received into inventory

### Fixed

* Restricted warehouse access: The warehouse dropdown in *stock transfer* no longer shows locations the store doesn’t have ‘move’ access to.
* Label printing fix: Prevent crash when clicking *print label* on a device without a Flowbox connected.
* Quantity reset bug: Fixed issue where product quantity was not reset to 1 after adding an item in *keyboard mode*.
* Return with store credit: Fixed issue where the *payment button appeared disabled* when returning an order with *store credit*.

## 2025-05-15

### **Added**

* New field on products, **`allowNegativePrice`** , that lets you allow **negative prices** on specific products (e.g. for returns or compensation logic).
  * <kbd>Backoffice</kbd> New option under **Advanced** to enable this on a per-product basis
* You can now add a **custom footer text for invoice PDFs** on a per-store basis
  * <kbd>Backoffice</kbd> New field under Payment methods to add the text

### **Improved**

* **Order search (`deliverForStoreUid`)** now includes orders where order lines are reserved from purchase orders or requests for purchase. This means orders that are not yet reserved from a warehouse will also be shown in order management functions, like **Customer Orders**.

### **Fixed**

* **Discount calculation** is now handled correctly when quantity is zero in orders from Omnium.
* **Dintero VAT handling** – VAT is now correctly divided by 100. Not easy these divisions&#x20;
* **Dintero ExternalId check** – if `ExternalId` is missing in the store, an error is now returned.&#x20;
* **Package product components** now switch to reservation type `WAREHOUSE` when there is insufficient stock.
* **EHF export** – VAT amount on each order line is now correctly included in the tax calculation.
* **Store dropdown** in user would sometimes not show currently selected store

## 2025-05-14

### Added

* **Customer info now printed** on standard **receipts** (ESCPOS thermal printers).

### **Improved**

* **Cash drawer** now opens **immediately after entering the amount** on a cash sale, instead of at the very end of the process (after payment).
* **SWIFT/BIC is now included** in the EHF export **if defined on the store**, improving compliance for international payments.
* <kbd>Backoffice</kbd> **Restrictions** to various sections if user is not admin, as this was previously too open. To be able to see and fetch reports from a specific store, you either need to have Administrator role, or to have the relevant store(s) added to your user profile.

### Fixed

* **Cash drawer opens correctly** when cashback is given.
* **Settlement validation now respects configuration** on the tenant’s payment method – ensures correct handling of **cashback, sales, and refunds**.
* **Smarter Verifone fallback handling** – if `paymentBrand` is missing in `CardData`, we now extract it from `SalesToPOIData` instead. If that sentence made no sense to you, don’t worry — it’s our job to understand this stuff so you don’t have to.
* **Accounting report now includes Verifone INIT-only transactions**, ensuring full financial traceability.

## 2025-05-13

### Added

* You can now optionally **set time-limited prices** in price lists by also defining an **end date** — in addition to the already existing **from date**.
* You can now **create an** [**RMA**](#user-content-fn-2)[^2] **(return to supplier) directly from a service order** — streamlining the process of handling and tracking claims for defective products.
* It's now possible to **activate price list campaigns by applying a pre-defined campaign code** to the order.
* Support for a **new compact label format** (**51x25 mm**), perfect for smaller products or space-constrained displays.

### **Improved**

* **Receipts now clearly show when a product is part of a package,** helping both customers and staff understand what’s included.
* A new filter to easier **find** **customer reservation orders**.
* The sort order of items on printed receipts now matches the way they were entered — more logical and easier to verify!
* **PDF receipts** have been **streamlined** for **better readability** and **printing efficiency**.
* If you **manually set or change a price on a product** on an order, it will now **remain untouched**, even if you add a customer to the order afterwards.
* You can now **remove a discount code from an order through the API**, making it easier to fix mistakes or adjust discounts after the fact.

### Fixed

* Batch update errors are now correctly reported, so you’ll get accurate feedback when something goes wrong, even though it never should fail of course 🤞

## 2025-05-08

### Added

* Implemented **Softpay** as a new payment method 🥳
  * New endpoint: **POST /tenants/{tenantUid}/callbacks/softpay**
  * New **Tenant/Store extension**: `SOFTPAY`
  * New **payment method**: `SOFTPAY_CARD`
  * New **Till setting**: `SOFTPAY_APP_ID`
  * New **Store extension parameters**: `SOFTPAY_MERCHANT_REFERENCE`, `SOFTPAY_SIGNATURE_KEY`
* New **customer field** for EHF endpoint using `EhfAddress` from both **Customer** and **StoreExtension**
* Added **delivery address** on customer receipt.

### Improved

* **Price list name search** is now case-insensitive
* Empty `gtins` sent in a product are now ignored.
* **Order API**: Added new field in order response – `AllowedActions`.

### Fixed

* `setAsBusy` method on `OrderSettlementChangeRequest` now correctly sets state to **IN\_PROGRESS**.
* Fixed issue with **outstanding balance** calculation on B2B customers.

### Deprecated

* The field **`ehfEnabled`** in the Customer API is now deprecated.\
  Use the new field **`enabled`** inside the `ehf` section instead.

## 2025-05-06

### Added

* **Invoice PDF** now includes **price excluding VAT**.
* <kbd>Backoffice</kbd> **Sales voucher report** with all sales transactions, in both XLSX and on screen

### Improved

* **Custom parameters** are now displayed on the **invoice PDF**.
* **Adyen transaction ID** is now formatted as `<tenantid>-<order_number>-<settlementId>`.
* **Device link code** more visible when active on device.

### Fixed

* `qtyDelivered` is no longer set on refunds if the original order line wasn't delivered.
* **OrderAddress** `CompanyName` now updates correctly.
* **Dintero Payment Link integration**: `settlementChange` is now correctly marked as failed when cancel session fails.
* **Removed double calculation** of package products from the posting list.
* **Duplicate check** on **email** is now **fixed**.

## 2025-05-02

### Added

* New command-line command to sync warehouse data from Flow to Omnium.

### Improved

* Invoice PDF now includes price excluding VAT.
* Posting list now uses `findAndProcessReceipts` for improved reliability and performance.\
  (Out with the old, in with the slightly more clever.)

### Fixed

* BATCH customer update is now working as expected.\
  (Yes, finally.)
* Correct codepage is now used for Finland, ensuring the € symbol displays properly.\
  (Because Euros deserve respect too.)

[^1]: Returns Merchandize Authorization, meaning returning goods back to the supplier.

[^2]: RMA (Return Merchandise Authorization): A reference used to manage and track products that are returned by customers for repair, replacement, or refund.
