[AppleAppstoreModule]
- IMPORTANT: Fixed possible inconsistency in payment notifications to scenarios, events are now emitted with
sendEmail: true flag. remp/novydenik#1385
- Payments confirmed via VerifyPurchase API emitted subscription-related triggers with
sendEmail: false flag.
- Renewals in most cases emitted the events with
sendEmail: true flag.
- You can prevent scenarios to handle these triggers by adding condition check against specific subscription types or “has enabled notifications” condition.
- Added the handling of notification types:
REFUND and REFUND_REVERSED. remp/crm#3162
[ApplicationModule]
- BREAKING: Refactored
SnippetRenderer with nullable return type and active snippet check. remp/crm#3475
- Changed return type from
false|string to ?string for better type safety.
- Updated
Snippet control to check for null instead of false.
- Added
string|array type declarations for $key parameters.
- Fixed snippet renderer rendering inactive snippets. remp/crm#3475
- Added
getDefaultCountryIsoPair method to CountriesSelectItemsBuilder. remp/crm#3292
- Added
FormPatterns class with list of generalized validation regular expressions for form elements. remp/crm#3292
- Added space as allowed character in
FormPatterns::STREET_NAME pattern. remp/helpdesk#3587
- Fixed possible issue if invalid locale was provided for router. remp/crm#3498
[GiftsModule]
- Added new event
GiftCouponActivatedEvent and his emitting after the coupon’s activation. remp/respekt#361
[GooglePlayBillingModule]
- IMPORTANT: Fixed possible inconsistency in payment notifications to scenarios, events are now emitted with
sendEmail: true flag. remp/novydenik#1385
- Payments confirmed via VerifyPurchase API emitted subscription-related triggers with
sendEmail: false flag.
- Renewals in most cases emitted the events with
sendEmail: true flag.
- You can prevent scenarios to handle these triggers by adding condition check against specific subscription types or “has enabled notifications” condition.
[InvoicesModule]
- BREAKING: Refactored country form fields to use iso_code as key because of a11y. remp/crm#3292
- Renamed
country_id form field to country in ChangeInvoiceDetailsFormFactory.
- Added
autocomplete and pattern attributes to user facing forms. remp/crm#3292
- Fixed
ChangeInvoiceFormFactory form to use country input instead of country_id. remp/helpdesk#3576
- Added
FamilyRequestFormDataProvider which handles automatic VAT resolution in RequestFormFactory. remp/crm#3462
- Fixed
FamilyRequestFormDataProvider issue where disabled select did not show the correct pre-selected value. remp/helpdesk#3655
[PaymentsModule]
- Added
payments:fix_payment_method_recurrent_inconsistency command to fix that payment method used in recurrent payment can belong to a different user than the recurrent payment. remp/crm#3440
- This inconsistency could have been created when transferring subscriptions between users, when the recurring payment was transferred but the payment method was not.
- Added payment method transfer between users when using subscription transfer feature. remp/crm#3440
- Added
PaymentMethodCopiedEvent event to emit after payment method copied to another user. remp/crm#3440
- Added support for displaying the renewal amount for active recurrent payments in user payments listing. remp/respekt#389
- Upgraded package
singpolyma/openpgp-php from v0.6 to v0.7 (which fixed PHP 8.2 deprecation errors).
[PrintModule]
- BREAKING: Refactored country form fields to use iso_code as key because of a11y. remp/crm#3292
- Renamed
country_id form field to country in ChangeAddressRequestFormFactory and UserPrintAddressFormFactory.
- Fixed export engine shared meta issue causing non-shared meta to be included in following print subscription records. remp/respekt#417
- Removed option
copy print address from subscription transfer form. remp/respekt#409
- Now print address will be copied by default to prevent missing address in the print exports.
[ProductsModule]
- BREAKING: Refactored country form fields to use iso_code as key because of a11y. remp/crm#3292
- Renamed
shipping_country_id form field to shipping_country in CheckoutFormFactory.
- Renamed
country_id form field to country in CheckoutFormFactory.
- Renamed
shipping_country_id form field to shipping_country in ShopPresenter.
- Added
findAllAvailableCountryIsoPairs method to CountryPostalFeesRepository. remp/crm#3292
- Added support for Trustpay modal to shop checkout template. remp/crm#3454
- Refactored CheckoutFormFactory to use payment gateway code instead of id. remp/crm#3454
- Added ability to skip product stock decrease for specific postal fee codes. remp/novydenik#1391
- Configurable via
config.dennikn_cz.neon using setSkippedPostalFees() method.
- Fixed incorrect selection of country in billing address of checkout form if the billing address already exists. remp/helpdesk#3634
[RempMailerModule]
- Fixed PHP warning in
ChangeNewsletterSubscriptionsGenericEvent by adding null check for mailTypesRepository->all() method. remp/crm#3473
[SalesFunnelModule]
- Fixed API definition of listing public payment meta params. remp/helpdesk#3635
[ScenariosModule]
- BREAKING: Changed format of returned array from
BeforeEventGenerator#generate(). remp/respekt#390
- (Log) output of
EventGeneratorCommand (scenarios:event_generator) was beautified.
- Added option to unregister scenario generic event registered in another module. remp/respekt#332
- Added context menu to nodes in scenario builder. remp/crm#1274
- Added
renewal_subscription_type notification parameter for scenarios where renewal_payment_id is set. remp/respekt#332
- Added before event trigger “after last subscription ended”. remp/respekt#390
- Event
AfterLastSubscriptionEndedEvent is triggered after set period of time elapsed from last subscription of user. Time is set by scenario. Event is generated by scenarios:event_generator.
- Renamed scenarios’ before event node to before/after event node (now it includes also one after event). remp/respekt#390
[SegmentModule]
- Fixed memory issue when using API to list users of a segment (
/api/v1/user-segments/users). API is not affected by the size of segment anymore. remp/helpdesk#3567
- Optimized check if record (e.g. user) is member of a segment by utilizing
%WHERE% placeholder within the segment query. remp/crm#3478
- Added segment query validation. remp/remp#1791
- Disallowed INSERT, UPDATE, DELETE operations in segment queries.
- Added configuration option to specify forbidden tables for use in segment queries.
[SubscriptionsModule]
- Fixed a memory issue when generating a large number of subscriptions. remp/crm#3443
- Added event
AfterLastSubscriptionEndedEvent which is triggered by scenarios’ before event generator AfterLastSubscriptionEndedEventGenerator. remp/respekt#390
- Optimized
SubscriptionsPresenter::renderMy() remp/novydenik#1356
- Subscriptions are now eager-loaded with
fetchAll() and passed to the Latte view as a plain array.
- The template was updated to use
count($subscriptions) / count($subscriptions) === 0.
[UpgradesModule]
- Fixed TrialUpgrade not resolving default subscription if
omit_content config was expected to be used. remp/crm#3489
- Fixed TrialUpgrade not moving recurrent payment charge time during upgrade finalization.
[UsersModule]
- Refactored
AdminFilterFormData to use regex instead of like while searching user addresses. remp/crm#3311
- Fixed
AddressFormFactory form to use country input instead of country_id. remp/helpdesk#3576
- Fixed
subscriptions.active_paid_accesses measurement calculation. remp/crm#3464
- Fixed possible address-related warning on user listing. remp/crm#3497