- DATE:
- AUTHOR:
- Ezzan
WebApp Version 25.37 Changelog
This update includes new features, essential performance improvements, and usability enhancements, ensuring your daily operations run smoothly. We've also addressed several bug fixes to enhance stability and reliability. Thank you for your continued trust and feedback, which help us deliver the best possible service.
New Feature:
[Products] Variant Display Name Formula
In this update, we have introduced a new setting called "Variant Display Name Formula". By default, the system used to generate variant names in the format {ProductName} ({VariantName}). With this new feature, users can now fully customize the formula according to their own preferences. In the formula, both {Product} and {Variant} are mandatory variables, while users can freely define separators or other formatting details. This gives more flexibility and consistency in how product variants are displayed across the system.
When importing products through the Import Product module, if users do not declare the DisplayName column, the system will automatically generate the variant display name using the formula defined in the settings. This ensures that even during bulk imports, variant names follow the chosen format without requiring additional manual edits.
The new formula setting also applies when creating products in the Product Form. If a product has more than one variant, the system will generate the variant names based on the formula set by the user. However, users still retain the option to manually adjust the display name if they want to make exceptions for specific variants. This balances automation with flexibility.
Lastly, the formula is implemented in the Variant Form as well. When users are creating or editing a variant, the default display name will be generated automatically using the configured formula. Still, just like in the Product Form, users can override it with a custom display name if needed. This consistency across modules ensures a smooth and predictable workflow while keeping customization open to the user.
[Inventory] Inventory by Category
We have introduced a new menu called Inventory by Category, which allows users to view inventory based on product categories. Since the category structure in the system supports a tree (branching) hierarchy, this view also provides the ability to navigate through child categories. Users can expand categories using a dropdown, making it easier to explore inventory details not only at the parent category level but also at each child category level in a clear and organized way.
This feature was developed based on customer request #6123
[Adjustment] Merge Adjustments
In the Adjustment menu, users will now see a new Merge button that allows them to combine multiple adjustment records into one. This feature was introduced because in real scenarios, some businesses have multiple users performing a stock take at the same time. Each user can create a separate adjustment record. Instead of manually editing each record, this feature enables them to merge all adjustments into a single record, making the process more efficient and practical.
When the Merge Adjustment modal is opened, users can select which adjustments to merge and decide the final record they want to keep. All selected adjustments will be summed up — for example, if Adjustment-001 contains +3 qty for Item A and Adjustment-002 contains +7 qty, the merged record will display +10 qty for Item A. The conditions for merging are: the adjustments must be in draft status (enabled only if using the “with approval” workflow), must have the same adjustment type, and must belong to the same outlet. Once merged, the chosen adjustment record remains while the others are deleted automatically.
This feature was developed based on customer request #4854
Minor Improvements:
[Products] Improve Release Date Column Format in CSV Export
This improvement was developed based on customer request #6197
[Shift] Redirect Voided Badge to Shift Recycle Bin
[Orders - Customer Invoice]
Provide Filter to Display Voided Invoice in Invoice List
Redirect Voided Badge to Invoice Recycle Bin
[Orders - Supplier Bill]
New Configuration to Display Bill Status
We’ve introduced a new feature that allows users to display approval status when printing purchase orders. In the setup menu, users can configure whether their purchase order workflow follows the Instant flow or the With Approval flow. When the With Approval option is enabled, an additional setting is available to include approval status in the printed purchase order. This gives businesses more flexibility to align their purchase documents with internal approval processes.
When printing a purchase order under the With Approval flow, the document will now clearly show the approval status. This ensures that all stakeholders can easily verify whether the order has already gone through the required approval steps, providing better transparency and reducing the risk of confusion or miscommunication during procurement.
This improvement was developed based on customer request #5398
Redirect Voided Badge to Bill Recycle Bin
[Orders] Refactor Modified Trigger in Customer Invoice & Supplier Bill
In this update, we have refined how the Modified Information is triggered in the Customer Invoice and Supplier Bill modules. Previously, there was an inconsistency — for example, adding or editing a payment would trigger Modified, adding fulfillment would trigger Modified, but editing fulfillment would not. Since these actions (payment, fulfillment, write-off, or join invoice/bill) are not direct edits to the transaction itself, they should not update the Modified timestamp. To ensure consistency, we have removed the modified trigger from the following actions :
Add/Edit/Delete Payment,
Add/Edit/Delete Write-Off,
Add/Edit/Delete Fulfillment
Collection / Join Invoice or Join Bill.
As a replacement, we now provide better visibility through the Log Update History. Specifically for Payment, Write-Off, and Fulfillment actions, the system will log Add and Delete activities in the history, so users can still track changes clearly without affecting the Modified timestamp. This ensures that Modified reflects only actual edits to the transaction, while operational activities are correctly recorded in the history log for complete transparency.
This improvement was developed based on customer request #6103
[Logistics - Transfer Order] Redirect Voided Badge to Transfer Order Recycle Bin
[Users] Improve Buttons Position in User Info
[Developer - Webhook] Provide Export Feature
[Setup - Apps] Provide Tab Grouping for Apps Service
Bug Fixes:
[Sell] Fix External Coupon Not Removed When Replacing Eligible Cart Item with Ineligible One
[Contacts - Point History] Remove Returned Point History from Sales Return Transaction
[Orders - Customer Invoice] Fix Timezone for Payment Modified Time
[Developer - Webhook] Fix Infinite Running Time for Webhook Records
Patch [25.37.1]:
[Products]
Prevent Updating Variant Display Name via CSV Import with "Default" Label
Fix Incorrect Import Parsing for Released Date Column from CSV Export
Fix Missing TinyMCE Component on Variant Description in Products Form
Fix Selected Product Field Displays Both Name and Code Instead of Name Only
[Sell]
Fix Coupon Application Incorrectly Updates All Row Quantities for Same Item
Remove Amount Fraction Configuration from Item Quantity
Fix Sales Order Allocated Validation Config Not Working for Composite Products
[Shift - Previous Shift] Fix Sales Tax N Surcharge Always Display Zero Amount
[Reports - Compare] Fix Incorrect Sales Calculation When Filtering by Category
[Contacts - Customer] Tidy Up Loyalty Expiration Modal
[Payment - Write Off] Remove Decimal from Percentage Column in CSV Export
[Debt - Join Invoice] Allow Users to Submit Payment with Negative Amount
[Inventory - Composite] Improve Quantity Available Calculation
[Logistics - Transfer Order] Fix Edit Data Allows Item Quantity Exceeds Serial Numbers
[Logistics - Outbound] Tidy Up Choose Order Option Column
[API - Sales Order] Fix Users Can Create Sales Order with Discontinued Variant
[Setup - Apps] Fix Non-System Users Cannot Save Data
Patch [25.37.2]:
[Products - Variants]
Remove Currency Field from Outlet Price Modal in Variant Form
Restrict Outlet Price Tab in Variant Form with Product Price Role
[Sell] Align Creation Timestamp for Sales Order, Invoice, and Immediate Payment
[Orders - Customer Invoice]
Restrict Discount Button with Sell Discount Role
[Orders - Supplier Bill] Hide Print Button for Proposed Bill in Bill List
[Payment - Daily] Implement Amount Fraction Configuration for Payment Amount
[Adjustment] Fix Merged Adjustment Quantity Not Updated in Adjustment List
[Buy] Show Indicator When Order Outlet Differs from Fulfillment Outlet
[Fulfillment - Unfulfilled Products] Display Invoice Time Column
[Setup - Module] Remove Default View Configuration from Debt Setup
[Setup - IP Restriction] Fix IP Restriction Configuration Does Not Work Properly
[Webhook]
Fix Editing Sales Order & Re-Park Product Not Triggering Webhook
Fix Deleting Inbound Logistic Not Triggering Webhook
Fix Voding Transfer Order Not Triggering Webhook
Add New Created Property in All Invoice Event
New Webhook Input Field (Update Sales Order, Delete Inbound, Void Transfer Order)
[API - Invoice] Add Created Property in Get Invoice by ID API Response
Patch [25.37.3]:
[Adjustment] Fix Import of Serialized Items to Adjustment Form Blocked by Unnecessary Existing-Serial Check
[Adjustment - CSV] Fix Export Option XLSX Still Outputs CSV Data
[Buy] Fix Import of Serialized Items Blocked by Unnecessary Existing-Serial Check
Stay tuned for more updates, and don't hesitate to reach out if you have any questions or need support.