[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