242.0 - Release Notes - Jumpmind Commerce¶
Announcing¶
Client Hardware Proxy¶
The goal is to allow for network based devices such as payment terminals to have their communication proxied through the client allowing for fail over to cloud scenarios
Commerce Extensibility Improvements¶
The goal here to is to make some changes to the flow engine to allow for customizations and extensions that still allow for an easy upgrade path.
Point Of Sale¶
242.0.20¶
Fixed¶
- Authentication | Wrong logger used in LdapStrategyHelper causing NPE when provider offline (JMC-5813)
- Promotions | Add logging for how long it takes to load active promotions (JMC-5860)
Security¶
- (CVE-2023-22102 for com.mysql_mysql-connector-java)
242.0.19¶
Fixed¶
- Application hangs indefinitely after selecting Email receipt option (JMC-4986, JMCH-301)
- PaymentConfig format change not supporting previous format (JMC-5051)
242.0.18¶
Fixed¶
- JMC hangs at promotion calculation when the reward is super small (in this case $0.01) (JMC-4820)
- PRICE_TOTAL rewards best deal can be inconsistent (JMC-4927)
- Symmetric | Registers fail to update due to 500 error (JMC-4505)
242.0.13¶
Fixed¶
- Clienteling Sequence Numbers are are being reused when multiple registers are used for store (JMC-4675)
242.0.12¶
Fixed¶
- Tax | Vertex integration sets effective start time to local system time instead of date in RTE file (JMC-4566)
- Transaction sequence numbers can jump around because the trans sequence number sync on a reconnect sends the initial value, not the latest value stored in local storage (JMC-4717)
242.0.11¶
Fixed¶
- Discount on non-receipted return item does not work (JMC-4735, JMCH-253)
242.0.10¶
Fixed¶
- Tiered promotions do not support single-use promo codes in the POS (JMC-4545, JMCH-239)
- Adding an item with a Minimum Buyer Age to a return causes shrug (JMC-4586, JMCH-242)
242.0.9¶
Fixed¶
- Performance | Performance issues with updating items on both the sale and customer display screens (JMC-4558)
242.0.8¶
Fixed¶
- Devices | POSPrinter instances hang around longer than they used to, possibly causing contention if there is shared code with synchronization blocks in a javapos driver (JMC-4471)
- Linked customer details screen on customer display does not go back to initial state even after transaction is completed (JMC-4033, JMCH-189)
- Non-Receipted Return for item with Manual Price Entry throws exception (JMC-4452)
- Performance | CX Connect gets out of sync when the customer closes the customer details dialog at the same time the cashier select PAY (JMC-4544)
242.0.7¶
Fixed¶
- Architecture | Fixed printers are being initialized by both the fixed device and the customer display which can cause failures (JMC-4419)
- Architecture | Rest API security filter is not applied to almost all endpoints (JMC-4302)
- Loyalty button on sale screen doesn't inform associate that customer is validating their address on customer display (JMC-4345, JMCH-216)
- Pricing | JMC is always using LIST price if it is set (JMC-4326)
242.0.6¶
New + Improved¶
- Use more standard date picker for picking dates for appointments (JMC-4065)
Fixed¶
- ClientelingLookupCustomerInfoFlow always creates a new transaction resulting in orphaned transactions/gaps (JMC-4301)
- Clienteling: Appointment Interests are always blank and unable to specify an interest when creating an appointment (JMC-4216)
- Clienteling: Checked In Status should be shown to associates when a client has arrived and begun their appointment (JMC-4263)
- Clienteling: Support retry logic for add customer being done asychronously (JMC-4237)
- Clienteling: When configuring days and times that are available for scheduling it is hard to tell which is selected/enabled. (JMC-4166)
- Clientelling | Add new
openpos.clienteling.appointments.allowCheckInForCompletedAppointmentconfig to disable Check In button for Completed appointments (JMC-4242) - Two prints happening at same time from different stores could print on same printer (ie wrong store for one) (JMC-4243, JMCH-208)
242.0.5¶
New + Improved¶
- Allow an appointment to be "Completed" (JMC-4064)
- Clienteling: Prevent Checkout from Appointment when no items are liked (JMC-4165)
Fixed¶
- Customer Display Customer Details Shrug Guys when register unlinks customer (JMC-4163)
- Returns | Receipted Return Items with price modifications cause multiple price modifications on return item to appear in final database records (JMC-4184)
242.0.3¶
New + Improved¶
- Provide the ability to turn off walk-in consultations (i.e. allow scheduled appointments only) (JMC-4063)
Fixed¶
- Customer Display Customer Details not opening when register opens Customer Details (JMC-4119)
- Return Cash Amount prefilled amount not including rolled up amounts for other tenders that are below min tender threshold (JMC-4096)
- SaleSession not always updated on SaleState.transactionUpdated causes basket to not reflect added promotions (JMC-4042)
- Voiding Transactions in Training Mode should not use live sequence numbers (JMC-4062)
242.0.2¶
Fixed¶
- Appointment availabilityunselect previously selected time slots when "x:xx pm or after" is selected (JMC-3990)
- AuthLineItemModel not storing referenced return status (JMC-4029)
- Clientelling | Appointment "Create Customer" stuck prompt (JMC-4027)
- CustomerDisplay stuck on HomeState when openpos.sell.endSessionAfterTransaction is true (JMC-4024)
- Customizable limit on scheduling on a day more than X days from today (JMC-4030)
- Don't allow appointments to be schedule in the past (JMC-3987)
- Fix Book Appointment screen to show configurable number of days (default 5) on screen (JMC-3985)
- Float Till for Foreign Currencies throws Shrug Guy (JMC-3975)
- Item Inquiry not correctly selecting options for scanned sku (JMC-4021)
- Safari/Ipad Child Tax Customer top right form field missing label (JMC-3968)
- Show toast message for appointment scheduled after appointment has been successfully scheduled (JMC-3988)
242.0.0¶
New + Improved¶
- Add an indicator on a line item when a tax override has occurred (JMC-2491)
- Add configuration for which countries are selectable for customer address forms (JMC-2681)
- Add Contact preferences support to Customer Add/Edit (JMC-2807)
- Add option to skip billing address collection for Repeat Delivery (JMC-3113)
- Add Otel JavAgent Capabilities to JMC SymDS container (JMC-3447)
- Add Points Available, Member Tier, and Contact Prefs on Customer Details screen (JMC-2810)
- Add postal code as one of the searched fields from the initial customer search box (JMC-2492)
- Add pre-sign up check for customer unique identifier (JMC-2652)
- Add the ability to verify/reject a customer is allowed to be linked to the transaction when selected from search results (JMC-2696)
- Adjust Mgr Override logic for price override parameters (JMC-3879)
- Adjust/Customizable currency display for tenders (JMC-2790)
- Align base configuration symmetricds channels with clearing of certain caches (JMC-3672)
- Customer Search No results found enhanced to show what the user searched with (JMC-3732)
- Deprecate @StateOverride classes and logic (JMC-3252)
- Do not prompt for "Pickup to Safe" when reconciling till if no store bank is configured (JMC-2969)
- Extract email validation for customer state to endpoint for ValidateCustomerEmailState (JMC-2664)
- For returns, when looking up transaction by loyalty order them from newest to oldest (JMC-3678)
- Foreign Currency Menu option (JMC-3176)
- Give cashier the option to skip anonymous email opt in prompt when paired with customer display (JMC-3850)
- If tax has been overridden, provide a visual indication of tax override on the item in the sell item screen (JMC-3485)
- Internationalization | Add config for custom printer initialization codes in support of the French-Canadian character set (JMC-3516)
- Internationalization | Add i18n support for Loyalty Terms and Conditions (JMC-3614)
- Keep track of how a customer was added to transaction (JMC-2682)
- Linked Customer Details configuration to use birthDateOfMonth and birthMonth over birthday field (JMC-2699)
- Make AppointmentAvailabilityModel a tagged model so appointment availability data can be set / configured at any tag level (JMC-3446)
- Migrate opt into email marketing behavior to new endpoint for OptIntoAnonymousEmailMarketingState.handleOptIn (JMC-2654)
- Migrate opt out email marketing behavior to new endpoint for OptIntoAnonymousEmailMarketingState.handleOptOut (JMC-2655)
- Misc. Open Telemetry updates including New Relic support (JMC-3442)
- Move all conditional flows in ScreenActionListener to individual ScreenActionInterceptors (JMC-3172)
- Personalizing does not respect BusinessUnit's STATE as it does for COUNTRY (JMC-3386)
- Prevent Non-Referenced Card Returns in TenderOptionsState (JMC-2711)
- Proxy Espon printer through client (JMC-3201)
- Put existing Aurus docs on docs website (JMC-3727)
- Receipted return suggested tender amounts not corresponding to basket items (JMC-3909)
- Reduce the number of archived promos on the dashboard (JMC-2816)
- Repeat DeliveryAdd RD details to transaction search, transaction details page (JMC-2641)
- Shopkeeper's Lane View needs a back button (JMC-2944)
- Show when device is locked on Shopkeeper (JMC-2933)
- State Relay should transmit additional sales data (JMC-2942)
- Static "Other Card" Card Tender Option (JMC-2712)
- Store customer name on transaction when adding tax exempt customer (JMC-2685)
- Stub out new endpoint in OptIntoAnonymousEmailMarketingState.arrive to pass email and update the transaction (JMC-2653)
- Support Adyen Cloud API (JMC-3200)
- Support configuration of a maximum Repeat Delivery quantity (JMC-3167)
- Support configuration to skip the Repeat Delivery terms and conditions prompting (JMC-3166)
- Suppress stacktraces for no resource found exceptions. No need to log the entire stacktrace in the log file. (JMC-3328)
- Sync Sequence Numbers during failover (JMC-3206)
- Test/fix adding email address capture to Repeat Delivery Shipping address screen (JMC-3203)
- Update Spring and Spring Boot for CVE-2024-22243, H2 for CVE-2022-45868 and Guava for CVE-2023-2976 (JMC-3334)
Fixed¶
- A Buy 5 Get 1 Promotion Does Not Update at 18 items (15Q/3R) but does at all other thresholds (JMC-3843)
- A promotion which rewards "all items" (*) and has a qualification reward preference of REQUIRE has a side effect of showing any item in the basket as having the promotion as pending (JMC-3819)
- A transaction (sequence) number is burned when adding the loyalty customer to the transaction and then completing the sale (JMC-3500)
- Address Line 2 of an existing customer is not pulled in / displayed properly in the orders flow (JMC-3782)
- Allow appointments scheduling button to be moved to Manage menu via ctx_button configuration (JMC-4028)
- Allow default country and state in customer add dialog to be turned on/off via configuration (JMC-3592)
- An even exchange of a non-receipted item in a bracket store is resulting in charging the customer $0.02 (JMC-3641)
- App-Instructions text has low contrast with background and is hard to read (JMC-3396)
- Appears that Auto Personalization from an iPad is not working properly (JMC-3467)
- Applying manual Item discount then Transaction discount results in java.lang.UnsupportedOperationException in PromoHelper.groupByCategories() (JMC-3332)
- Auto personalization from Electron does not work with passed deviceName and autoPersonalizeUrl parameters (JMC-3383)
- Buy X Items for $Y Promo Not Applying Correctly (JMC-3303)
- Cash Refund amount not presented to cashier on a split tender if Cash refunded first , CC 2nd (JMC-3536)
- Closing store appears to have changed register number (JMC-3209)
- Cross border return checks need restored (JMC-3195)
- DevTools (app-dev-menu) not available during Personalization (JMC-2660)
- Email receipt sometimes does not email receipt/gift receipt from a standalone installation (JMC-2874)
- Employee information on an employee sale should be shown on the customer facing display (JMC-3388)
- External Auth Line Items saving authTypeCode as null (JMC-3624)
- Fix current issues with open/close procedures when configuration storeBankEnabled = false (JMC-3464)
- Formatting on customer details dialog strange as form is in middle and title is at the top. See attached (JMC-3487)
- Gift card cash out implementation no longer works for Adyen/SVS (JMC-3791)
- Gift card cash out transactions aren't viewable in transaction search (JMC-3046)
- Home screen can be slow to render when there are many orders in the system (JMC-3217)
- Inaccurate tender totals in till reconciliation JSON (JMC-2880)
- Pricing API - null pointer exception 24.2 (JMC-3494, JMCH-113)
- openpos.promotions.useBusinessDateAsEffectiveDate does not work for item lookups, which means coupons don't work with this parameter (JMC-3548, JMCH-119)
- Double swiped prompted for a gift card tender (JMC-4215, JMCH-204)
- Order Bug - After attaching a customer, they are asked again for customer after adding item for pickup (JMC-3316, JMCH-91)
- NO_SALE reason code in Trans Publisher JSON is the Reason Code display text instead of the actual Reason Code value (JMC-3418)
- Non-receipted returnlowest price does not take tags into account (JMC-2769)
- Not able to print properly to ZebraZQ320 printerThrows NPE (JMC-3496)
- On delivery order, shipping address is pre-filled with billing address when "Use as Shipping Address" is not checked (JMC-3638)
- Payment Device | Aurus Pinpad Timeout/Cancel issue (JMC-4239)
- Price changes from Promotions are not taking effect for price total rewards with qualifying attributes (JMC-3424)
- Price override percent threshold (openpos.sell.priceOverridePercentThreshold) does not trigger manager override properly (JMC-3597)
- Price override percent threshold doesn't work properly when RAISING prices (JMC-3659)
- Print receipt button prints both receipt and gift receipt (JMC-1427)
- PromoBuy x for $y not firing properly when basket has x+1 items and basket has price override of one of the x+1 items (JMC-3848)
- Promo pending is showing on return items (JMC-2013)
- Repeat Delivery total is incorrect (JMC-4161)
- Return of transaction with original transaction containing split tender with one tender being external auth causes Shurg during return (JMC-3502)
- Return Tender Options are sorted by TenderPolicy EffectiveStartTime (JMC-3906)
- Returns | Return of an Age Required item causes /shrug/ and POS shuts down (JMC-3557)
- SLS_TENDER_SETTLEMENT_LINE_ITM starts line_sequnce_number for day at -2147483648 instead of 1 (JMC-3629)
- Split tender returns across multiple transactions do not track tenders used (JMC-3419)
- Store Order that suspended, when resumed was allowed to complete payment with no customer information attached. (JMC-2812)
- Suspend transaction fails to resume with a repeat delivery eligible item and show that item characteristic (JMC-2943)
- Tax Exempt cert card on POS & CD don't show tax exempt type (JMC-3596)
- Tracking number is not captured from Delivery Solutions response when creating an order (JMC-3379)
- Unexpected error when cancelling out of the terminal when issuing or loading a giftcard if needing to select payment device (JMC-3240)
Upgrade Considerations¶
- The commerce Helm chart now provides options for configuring the OpenTelemetry javaagent.Consider the following Helm Chart values when deploying SymmetricDS.
(JMC-3447)
symds: otelAgent: # -- The name of the service as it appears to OpenTelemetry. Default is `SymmetricDS`. serviceName: SymmetricDS # -- A key-value pair of OpenTelemetry resource values to be applied to telemetry. Note that resources will # automatically be populated with as much kubernetes information that can possibly be retrieved for this deployment. resources: { } exporter: # -- Configures the OpenTelemetry protocol. Can be one of `grpc` or `http/protobuf`. Default is `grpc`. protocol: grpc # -- The endpoint that the OpenTelemetry exporter will send its collected data to. Default is `http://localhost:4317`. endpoint: http://localhost:4317 # -- Headers applied to to OpenTelemetry requests to the exporter. headers: { } # exampleKey: exampleValue metrics: # -- Whether the exporting of metrics is enabled. Default is `false`. enabled: false traces: # -- Whether the exporting of tracing is enabled. Default is `false`. enabled: false logs: # -- Whether the exporting of logging is enabled. Default is `false`. enabled: false - --hash parameters still supported but deprecated. Go forward use --queryParameters. Eg:--queryParams=deviceName=myDeviceName&autoPersonalizeUrl=myUrl (JMC-3383)
- Start switching overridden state action handlers to @ActionHandler bean implementations. (JMC-3252)
- The openpos.ops.replenishUnderFundedTills config was replaced with openpos.ops.disableStoreSafe. The new flag controls whether the "pickup to safe" and "pickup from safe" prompts are shown during till reconciliation. (JMC-2969)
- An entry for the Orders button is now required in ctx-button:null"home","Orders","2018-12-27 13:43:09.000000000",,"20","key:order:orders","action","Orders",,"1","local_shipping",,,,,"1",,"","","","","","" (JMC-3217)
- Move logic from if blocks in the ScreenActionListener into individual IScreenActionInterceptor classes. (JMC-3172)
- added a configuration property openpos.returns.referencedReturns.preferReferencedReturn that will allow the card selection prompt to always appear when doing a referenced return instead of being bypassed when there is only one card available to return tender to. (JMC-2711)
- Printers and ConnectionFactories have been updated to be beans that are now grouped by a Protocol. So the printer configuration has been updated to be:
Where the protocol is a component that associates the printer implementation with the connection factory type
openpos: printers: EpsonPrinterEthernet: settings: protocol: EscpEthernet(JMC-3201)@Component("EscpEthernet") @RequiredArgsConstructor @Getter public class EscpEthernet implements IPrinterProtocol { private final EscpPOSPrinter printer; private final SocketConnectionFactory connectionFactory; } - added a configuration property openpos.returns.referencedReturns.allowNonReferencedReturns that will add a new option to the card selection list when doing a referenced return to allow the user to choose a new card instead of doing a referenced return. (JMC-2712)
- Prior to this change the FORM_IDs and FORM_GROUP_IDs "ordersBillingAdd" and "shippingAddress" were used for the address collection forms for both Repeat Delivery Orders and Delivery Orders. With this change: (JMC-3203)
- Any H2 database created with prior versions of the JMC platform will need to be dumped and reloaded in order to function with the new version of JMC. Unfortunately, H2 2.2 is not compatible with prior versions. (JMC-3334)
Promote¶
242.0.18¶
New + Improved¶
- Dismiss the campaign selection dialog on selection of a campaign (JMC-4902)
Fixed¶
- Editing a promotion with promo codes can cause the promotion to previous revision of the promotion to NOT be archived due to a race condition (JMC-4979)
- If the server dies while generating codes, then we need a way to recover that promotion. Allow the promotion to be recalled while in that status (JMC-4981)
- Promote allowed a promotion to be published without a RHS of an item attribute that was added and resulted in a null pointer exception during publishing (JMC-4861)
Upgrade Considerations¶
- Additional server-side validation rule added to commerce-central-server/src/main/resources/data/jmcc_svr/startup/post_01_jmcc-prm-validation-rule.csv (supplements new front-end validation):Same location as other promotion validation rules, such as "Rewards Misconfigured" and "No Qualifying Conditions". (JMC-4861)
242.0.17¶
Fixed¶
- When editing promotions with lots of promo codes the system hangs and if you refresh the screen while the promo codes are updating the promotion disappears. Changing the system to not hang and show a new status of GENERATING CODES (JMC-4922, JMCH-261)
- You can't use custom item groups right away in a promotion unless you refresh your browser (JMC-4903, JMCH-286)
- Promote TVS 13 | Enhance the 'End Date/Time' to actually end at the end of the day (JMC-3878)
242.0.13¶
Fixed¶
- Promote | Custom promotion templates are getting overwritten on re-build (JMC-4805)
- Promote | Editing a published promo with coupon codes sometimes fails to archive the old promo (JMC-4756)
- Promote | start date / release date is not reassigned on promo code reassign (JMC-4762)
242.0.10¶
Fixed¶
- Promo code publish batch size is too large (JMC-4637, JMCH-241)
242.0.0¶
New + Improved¶
- Add ability to download/export generated promo codes from Promote (JMC-3242)
- Coupon Code generation (JMC-2216)
- Near Miss Implementation (JMC-3353)
- Publish custom business unit groups to all test environments (JMC-3311)
- Publish custom item groups to all test environments (JMC-3309)
- Update activity panel to show publish to test environment steps (JMC-1981)
- Update config screen to allow publish to test environment step (JMC-1980)
Fixed¶
- Category reward goes missing after you edit a promotion that has been published (JMC-3310)
- Custom Item Groups Throw Error When Selected After Just Being Created (JMC-3509)
- Editing a published promo re-adds new entries in the promo code table (JMC-3219)
- Fix commerce query for promo codes to include null and empty string to find coupons which should apply to all customers (JMC-3499)
- Improve dashboard data api performance with large data sets (JMC-3168)
- In Promote, a qualification level of Transaction gets overwritten with value of Item during editing (JMC-3401)
- Lots of apparently unnecessary logging from the Central Promote Authoring tool (JMC-3465, JMCH-109)
- Promote doesn't seem to successfully save item group exclusions to itm_item_group_member table when there are item inclusions and excluded groups in the qualification (JMC-3594)
Upgrade Considerations¶
- New config to determine size of promotion list pages
Default is 25 (JMC-3168)
jmcc.promo.dashboard.pageSize
Retail Core (Shared core by store applications)¶
242.0.20¶
Security¶
- (CVE-2024-45491: libexpat: Integer Overflow or Wraparound)
- (CVE-2024-45492: libexpat: integer overflow)
- (CVE-2024-4590: libexpatNegative Length Parsing Vulnerability)
- (CVE-2024-7254StackOverflow vulnerability in Protocol Buffers)
242.0.18¶
New + Improved¶
- Turn off registration.auto.create.group.link in SymmetricDS's base configuration (JMC-4948)
242.0.16¶
Fixed¶
- When the Helm chart renders custom labels, it does not persist value types (JMC-4923)
242.0.15¶
New + Improved¶
- Provide additional helm chart capabilities for customers to be able to read certain values (JMC-4897, JMCH-278)
Upgrade Considerations¶
- New Helm chart values exist that allow you to set labels for the resulting Deployment or StatefulSet and in addition a separate value was added to allow you to set values on the resulting Deployment or StatefulSet's Pod Template. These labels are not included as the service select labels favoring the automatically generated labels for this task.nullnullLabels can be set on a per-application basis, or overall using the default values grouping. Note: labels from the default section are merged with the application specific labels when rendered. You may use this to override the values of labels specified in the default section, however, you cannot override the internal auto-generated labels for the application.null
(JMC-4897)
default: additionalDeploymentLabels: k8s.example.com/environment: prod additionalPodLabels: k8s.example.com/environment: prod pos: additionalDeploymentLabels: k8s.example.com/application: pos additionalPodLabels: k8s.example.com/application: pos
242.0.7¶
Fixed¶
- JMC is slow on under powered hardware. With each release of JMC, the performance of state transitions has gotten slow due to an increase of device scoped beans (JMC-4389)
242.0.0¶
New + Improved¶
- Add
typologySpreadConstraintsto the Helm chart (JMC-3699) - Add model name to DataModel.md (JMC-3412)
- Allow configuration of node group and external id in the JMC SymmetricDS container (JMC-3816)
- Allow endpoint specific implementation overrides (JMC-3444)
- Parse nested i18n keys within Abstracti18nMessagePropertyStrategy (JMC-3639)
- Symmetric configuration for JMC SymDS container is setting sync.url from the registration.url instead of the sync.url (JMC-3847)
- Upgrade SymmetricDS to 3.15.4 (JMC-3277)
Fixed¶
- Fix CVE-2024-1597 (upgrade the postgres driver) (JMC-3317)
- JMC won't auto-rotate and no scrolling on IPhone (JMC-3254)
- The trans publisher blindly marks all published items as published when it should really be checking the response of the publisher which returns the actual messages that were sent (JMC-3508)
- Update the base SymmetricDS profile with newer tables (JMC-3407)
- Upgrade H2 and SymmetricDS (to allow the upgrade of H2) to the latest version to fix a CVE (JMC-3280)
- Upgrade to SymmetricDS 3.15.6 (JMC-3827)
Upgrade Considerations¶
- Each application defined in the Helm chart now has its own field for topologySpreadConstraints. Refer to the official Kubernetes documentation for more information on how this field can be used. The Helm chart doesn't perform any validation of fields and instead just allows Kubernetes to perform the verification during apply. Additionally, for convenience, if the labelSelector field is omitted from a defined spread spread constraint, the Helm cart will automatically assume you would like to you the generated pod selector labels and populate it for you. Finally, for convenience, while each application can define its own topologySpreadConstraints, you may also define the default.pod.topologySpreadConstraints value. When set, for any application that does not have its topologySpreadConstraints explicitly defined, this default will be used instead. The same rule for the labelSelector convenience feature still applies. This is useful to reduce the amount of repetition incase you would like to blanket apply a policy to all or most applications. (JMC-3699)
Clientelling¶
242.0.13¶
Fixed¶
- Clienteling Sequence Numbers are are being reused when multiple registers are used for store (JMC-4675)
242.0.6¶
New + Improved¶
- Use more standard date picker for picking dates for appointments (JMC-4065)
Fixed¶
- ClientelingLookupCustomerInfoFlow always creates a new transaction resulting in orphaned transactions/gaps (JMC-4301)
- Clienteling: Appointment Interests are always blank and unable to specify an interest when creating an appointment (JMC-4216)
- Clienteling: Checked In Status should be shown to associates when a client has arrived and begun their appointment (JMC-4263)
- Clienteling: Support retry logic for add customer being done asychronously (JMC-4237)
- Clienteling: When configuring days and times that are available for scheduling it is hard to tell which is selected/enabled. (JMC-4166)
- Clientelling | Add new
openpos.clienteling.appointments.allowCheckInForCompletedAppointmentconfig to disable Check In button for Completed appointments (JMC-4242)
242.0.5¶
New + Improved¶
- Allow an appointment to be "Completed" (JMC-4064)
242.0.3¶
New + Improved¶
- Provide the ability to turn off walk-in consultations (i.e. allow scheduled appointments only) (JMC-4063)
242.0.2¶
Fixed¶
- Appointment availabilityunselect previously selected time slots when "x:xx pm or after" is selected (JMC-3990)
- Clientelling | Appointment "Create Customer" stuck prompt (JMC-4027)
- Customizable limit on scheduling on a day more than X days from today (JMC-4030)
- Don't allow appointments to be schedule in the past (JMC-3987)
- Fix Book Appointment screen to show configurable number of days (default 5) on screen (JMC-3985)
- Show toast message for appointment scheduled after appointment has been successfully scheduled (JMC-3988)
242.0.0¶
New + Improved¶
- Make AppointmentAvailabilityModel a tagged model so appointment availability data can be set / configured at any tag level (JMC-3446)
Fixed¶
- Allow appointments scheduling button to be moved to Manage menu via ctx_button configuration (JMC-4028)
Unified Promotion Engine¶
242.0.20¶
Fixed¶
- Unified Promotion Engine | UPE is finding expired coupon items when there are multiple rows in itm_assigned_item, some of which were expired (JMC-5775)
- Unified Promotion Engine | UPE is taking longer for some calculate calls because it is not hitting the cache when looking up promotions (JMC-5811)
242.0.15¶
Fixed¶
- Near miss does not work for any promo code based promotion (JMC-4901, JMCH-276)
242.0.14¶
New + Improved¶
- Add support for AMT_TOTAL qualification promotions with a QUAL_ITEMS_REWARD_PREFERENCE of REQUIRED to include all qualifying items as the REWARD (JMC-4860, JMCH-235)
242.0.13¶
Fixed¶
- Effective date is not being passed when doing the promo code lookup in the Unified Promotion Service (JMC-4761)
242.0.12¶
Fixed¶
- Promotion Id is missing from unused discount codes when an item attribute exists in the qualification (JMC-4715)
242.0.10¶
Fixed¶
- Mismatch Between discountedItemTotalAmount and discountedItemTotalAmountForDisplay (JMC-4346, JMCH-218)
- Promotion Id not getting populated in unused discount code for Item level coupon for expired promo (UPE). Promotion was expired. Should be marked with a status of PROMOTION_MISSING. (JMC-4587, JMCH-233)
242.0.6¶
Fixed¶
- Category Reward Coupon is not getting marked as applied (only Category Rewards with promo codes are) (JMC-4225, JMCH-162)
242.0.3¶
Fixed¶
- Application of "Close Ness" is qualifying on Original Amount Instead of Discounted Amount (JMC-4053, JMCH-192)
242.0.2¶
Fixed¶
- When a coupon is expired return a code that indicates so (JMC-4036, JMCH-155)
242.0.0¶
New + Improved¶
- Add near miss functionality to the unified promotion engine API (JMC-2428)
- Return the software version, build time and git hash in the response for the unified promotion engine (JMC-3325)
Fixed¶
- AMT_TOTAL qualification promo does not apply when another promo discounts the qualifying items first, even though it should (JMC-3318)
- Fix unified promotion service console logging to log to json format (JMC-3524, JMCH-108)
- NullPointerException happens in the price list endpoint when the selling price is not found (JMC-3522, JMCH-113)
- The unified promotion api returns back too many unused promotions today for the purposes of reporting promotions that are not applied, yet have an excluded item (JMC-3411, JMCH-96)
- The promotion details are not included when an unapplied discount codes that give category rewards is included in the request payload (JMC-3885)
- The promotion id is not being returned for unused coupons that are assigned to a specific store in the calculate response (JMC-3341)
- The promotion id lookup for coupons might fail when testing coupons in the future (JMC-3588)
- When using a UPC or alternate id (versus passing in the itemId) with the unified promotion engine, item exclusion are not working (JMC-3961)
Shopkeeper¶
242.0.0¶
New + Improved¶
- Shopkeeper's Lane View needs a back button (JMC-2944)
- Show when device is locked on Shopkeeper (JMC-2933)
- State Relay should transmit additional sales data (JMC-2942)