3.x¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[3.3.0] 22-03-2019¶
Added¶
- (#2377) Send SMS when a transaction is matched
- (#2384) [API][ADMIN] Added avatar for customers
- (#1252) [DEV] Asynchronous email sending using RabbitMQ and worker
- (#1253) [DEV] Asynchronous segments recalculation using RabbitMQ and worker
- (#1254) [DEV] Asynchronous levels recalculation using RabbitMQ and worker
- (#1684) [ADMIN] Added all Reward Campaign details to the view page
- (#2101) [DEV] Added RabbitMQ for asynchronous jobs
- (#2119) [DEV] Asynchronous points expiration using RabbitMQ and worker
- (#2120) [DEV] Asynchronous points activation using RabbitMQ and worker
- (#2121) [DEV] Asynchronous notification about expiring points using RabbitMQ and worker
- (#2122) [DEV] Asynchronous coupons activation using RabbitMQ and worker
- (#2123) [DEV] Asynchronous coupons expiration using RabbitMQ and worker
- (#2124) [DEV] Asynchronous notification about expiring coupons using RabbitMQ and worker
- (#2125) [DEV] Asynchronous notification about expiring levels using RabbitMQ and worker
- (#2158) [API] GET /api/campaign sorting by createdAt
- (#2158) [API] GET /api/customer/campaign/available by createdAt
Changed¶
- (#1886) [API][CC] Show Custom Campaigns in CC
- (#2134) [BC][API] GET /api/campaign/public/available changed SegmentNames type to object
- (#2180) [DEV] Optimized consumers architecture
- (#2386) [BC][API] GET /customer/{customerId}/status changed “pointsExpiringBreakdown” type to object
- (#2386) [BC][API] GET /admin/customer/{customerId}/status changed “pointsExpiringBreakdown” type to object
- (#2386) [BC][API] GET /seller/customer/{customerId}/status changed “pointsExpiringBreakdown” type to object
- (#2031) [API][ADMIN] Disabled changing Reward Campaign’s type after it’s created
- (#2036) [BC] Migrated Elastcisearch from 2.2 to 6.7
- (#2109) [ADMIN] Moved “Days inactive” and “Days valid” from “Campaigns details” section to the “Coupons”
- (#2116) [DEV] Upgraded to the latest Symfony version
- (#2427) [ADMIN] Removed counter in the level list
- (#2428) [ADMIN] Removed “no results” notification when permission denied as set in the ACL
Fixed¶
- (#2013) A customer can register a return transaction to the other customer transaction
- (#2153) [API] GET /api/customer/{customerId}/status wrong points expiration breakdown
- (#2147) [API] GET /api/customer/campaign/available doesn’t return all available campaigns
- (#2157) [API][ADMIN] An admin with View permissions for Reward Campaigns is able to change Delivery status of redeemed rewards
- (#2334) Point for referrer is released when the referred account is created, not when it’s activated
- (#2401) [API] POST /api/customer/campaign/coupons/mark_as_used misses “couponId” in the response
- (#2444) [DEV] Missing configuration for sending SMS notification other than account activation or password reminder
- (#2038) [API] POST /api/admin/campaign/cashback/redeem 500 Internal Server Error while calling
- (#2038) [API] POST /api/admin/campaign/cashback/simulate 500 Internal Server Error while calling
- (#2111) Customer’s level name doesn’t change after renaming
- (#2112) [ADMIN] Logo doesn’t scale in the left upper corner
- (#2141) [API] POST /api/transaction/simulate 500 Internal Server Error while calling
- (#2149) Fixed wrong round up transaction summary
- (#2175) [API] GET /api/customer/{customerId} wrong calculation of pointsExpiringNextMonth
- (#2178) [ADMIN] markdown for chinese language doesn’t show
- (#2183) [API] POST /api/customer/campaign/{campaign}/buy missing quantity in API DOC
- (#2183) [API] POST /api/seller/customer/{customer}/campaign/{campaign}/buy missing quantity in API DOC
- (#2198) [DEV] Segment with condition “Bought specific SKU” doesn’t work when SKU contains special characters
- (#2375) [DEV] Performance issue with a lot customers assigned to the segments
- (#2390) [CC] Summary of available points shows wrong value
- (#2412) [DEV] Losing connection between worker and RabbitMQ
- (#2414) [DEV] Invalid snapshotting in Event Sourcing
- (#2415) [DEV] 409 Conflict exception during many concurrent writes to the Elasticsearch
- (#2422) [ADMIN] No info while logging without data to the admin panel
- (#2434) [API] GET /api/admin/customer/{customer}/campaign/available wrong sorting
- (#2434) [API] POST /api/transaction triggers a webhook with wrongly rounded transaction’s total
- (#1637) [ADMIN] Missing validation for labels in Earning Rules
- (#2080) [API] GET GET /api/admin/customer/{customerId}/campaign/available?perPage=100&sort=campaignVisibility.visibleFrom&direction=desc wrong sorting
Note! In this version introduced a few features that breaks backward-compatibility. Note2! Check UPGRADE-3.3.md to see how to upgrade.
[3.2.0] 14-01-2019¶
Changed¶
- Setting “Downgrade every X number of days” is now mandatory
Fixed¶
- The last row in the menu was half cut when the expanded menu is longer than the height of browser
- Fixed editing merchants
[3.1.0] 14-01-2019¶
Note! In this version introduced a few features that breaks backward-compatibility. Note2! Check UPGRADE-3.1.md to see how to upgrade.
Added¶
- Added Snapshots for Event Sourcing to increase performance
- Added new options for expiring points in Settings -> Configuration (all time active / after x number of days / at the end of the month / at the end of the year) (new feature)
- Added User Guide at https://open-loyalty.readthedocs.io
- Added new ACL for administration panel (new feature) (BC break)
- Added return “Voucher” for a customer during registration a return transaction (new feature)
- Added information about active and used points to the export in levels
- GET /api/admin/customer/{customerId}/status added information about points going to expire in next month
- GET /api/seller/customer/{customerId}/status added information about points going to expire in next month
- GET /api/customer/{customerId}/status added information about points going to expire in next month
- Added option “Fulfillment Tracking Process” to the Reward Campaign so an administration is able to change reward status (ordered / delivered / canceled / shipped) (new feature)
- Added usage datetime of coupon in the GET /api/campaign/bought
- Added an option at Settings -> Configuration to disable edit customer profile by himself except password change (new feature)
- Added new filters “isFeatured”, “hasSegment”, “categoryId[]”, “format” to GET /api/campaign/public/available
- Added an integration with Pushy to send push notifications (new feature)
- Added missing configuration to notify a customer a X number of days before level expires using Webhooks
- GET /api/admin/customer/{customerId}/status added information about points expiration per day
- GET /api/seller/customer/{customerId}/status added information about points expiration per day
- GET /api/customer/{customerId}/status added information about points points expiration per day
- Added limitation by POS, segments and levels in the Earning Rule with type “Geolocation”
- Added sending information about rewards that became available for a customer using push notifications (new feature)
- Added new types of “Usage limit active” for “Custom event rule” in Earning rule
- Added an configuration (simple/advanced) in the app/config/parameters.yml to change password requirements
- Added an configuration in the app/config/parameters.yml to change the length of activation code sent using SMS activation method
- Added upload avatar for a customer profile (new feature)
- Added support for IE 11 for an administration panel
- Added POST /api/customer/earnRule/{eventName} to call “Custom event” Earning Rule with customer JWT Token
- Added migration mechanism using Doctrine Migrations (new feature)
Changed¶
- Prevent from registering a return transaction for non-existing transaction by documentNumber field
- Prevent marking coupon as Unused by a customer
- Changed Nginx version to 1.14.1
- PUT /api/customer/{customer} works now as a partial update instead of full update (BC break)
- Earning Rule with type “Geolocation” accepts now coordinates with five digits after decimal point
- Increased php-fpm start processes to 5, min processes to 3 and max processes to 20
- Increased php-fpm memory limit to 512MB
- PHP-FPM is now configurable using docker/prod/php/conf/php-fpm-pool.conf
- Changed translation in Settings - Notify user from “Days to level recalculation” to “Days before level recalculation to notify user”
- Updated the documentation how to add a new segment
- Disabled remove already redeemed coupons by a customer from Reward Campaign
- Renamed GET /api/campaign/public/featured to GET /api/campaign/public/available
- Removed filter “isPublic” from GET /api/campaign/public/available
- Changed how projections to the Elasticsearch works by making them independent of each other
- Changed ol__setings table by adding a unique constraint for setting_key column
- Changed invitation process when SMS activation method is enabled POST /api/invitations/invite (BC break)
- Changed crons by adding flock
- Changed default sorting to “order” for categories of Reward Campaign in the administration panel
- Removed “program_name” parameter from app/config/parameters.yml
Fixed¶
- Fixed calling API endpoints starting with /api/customer by an administrator using X-AUTH-TOKEN
- Fixed marking coupon as Used / Unused by an administrator
- Fixed calculating level based on “Active points”
- Fixed calculating level based on “Total points earned since last level recalculation”
- Fixed automatically assign a birth date to the customer during update
- Fixed PUT /api/customer/{customer} so it won’t remove labels accidentally
- Fixed translate level name on GET /api/customer/status?_locale={locale} according to the locale passed in the query parameter
- Fixed 500 error while registering a new transaction when at least one Earning Rule has set option “All time active”
- Fixed that an administrator see only “Example_coupon” on the Reward Campaign’s edit page
- Fixed adding points manually so it now has an impact on customer level
- Fixed 500 error when now level with condition value equal zero is defined
- Fixed activating and expiring coupons
- Fixed 500 error during creating Reward Campaign with type “Instant Reward”
- Fixed removing a language from the configuration
- Fixed logo size on the administration panel sites
- Fixed adding a new customer by an administrator in specific system configuration
- Fixed using Earning Rule with type “QR code”
- Fixed changing type of Earning Rule during creating a new one
- Fixed forgot password when customers phone number was changed
- Fixed usageLeftForCustomer value in GET /api/customer/campaign/available for single coupon
- Fixed filtering by date in redeemed rewards table
- Fixed remove field value while edit Reward Campaign in the administration panel
- Fixed sorting GET /api/admin/customer/{customer}/campaign/available using sort=campaignVisibility.visibleFrom
- Fixed GET /admin/analytics/points to show a correct number of spent points in loyalty program
- Fixed 500 error while buy reward campaign in POST /api/admin/customer/{customer}/campaign/{campaign}/buy
- Fixed crons for expire or activate coupons
- Fixed 500 error when a transaction missed a required documentNumber field POST /api/transaction
- Fixed supervisord in the production docker image
- Fixed edit customer profile automatically set a manual level and disabled level change
- Fixed selectbox shows only 10 segments while create Reward Campaign or Earning Rule
- Fixed missing markdown for shortDescription in the Reward Campaign
- Fixed unable to extend section with default language
- Fixed showing a customer in the more than one level list at the same time GET /api/level/{levelId}/customers
- Fixed import transaction using the same documentNumber more then once
- Fixed mark coupon as used by an administrator POST /api/admin/campaign/coupons/mark_as_used (BC break)
- Fixed 500 error while import transactions without or with invalid posId
- Fixed Earning Rule with type “Account created” that was never called
- Fixed “Timezone” setting at Settings -> Configuration
- Fixed value of “usageLeftForCustomer” in GET /api/customer/campaign/available when single coupon used
[3.0.0] 15-10-2018¶
Added¶
- multi photos for reward campaigns (new feature)
- segments, levels and POS limits now available in the Geolocation Earning Rule (new feature)
- Custom Reward Campaign that allows to link with Custom Earning Rule or QRCode Earning rule and reward customer with points (new feature)
- QRCode Earning Rule (new feature)
- new currency HDK to the settings
- multi language for Levels, Reward Campaigns, Reward Campaigns Category (new feature)
- new API endpoint /api/settings/css allowing to get custom CSS rules for Client Cockpit
Changed¶
- importing transaction with POS information is now simplified, you can define posIdentifier or posId
- size of textareas has been decreased
Fixed¶
- data in Elastic Search was not always up to date
- unable to add a points transfer when customer databases was large
- a phone number was not copied from customer to transaction while matching transaction with customer
- customer could register twice with the same phone number when activation method is SMS
- a negative radius value in Geolocation Earning Rule caused 500 error
- while creating Reward Campaign there was only first 10 reward categories to choose, now unlimited
- buying a campaign when a customer has no phone number caused 500 error
- fixed typos
- missing translations