[AdminModule]
- Added support for SQL syntax in CodeMirror code editor. remp/crm#2518
- Added the sanitization of content pasted into Trumbowyg editor. remp/crm#2994
- Added support for merging dropdown sections. remp/crm#3071
[AppleAppstoreModule]
- Fixed condition when looking for recurrent to stop while cancelling Apple in-app subscription. remp/crm#3080
[ApplicationModule]
- Added option to register custom callbacks when Hermes’s default
Crm\ApplicationModule\Hermes\RedisDriver waits for next tasks. remp/crm#3111
- You can register the callbacks in your
config.neon by calling setupWaitCallback within setup directive of hermesDriver service.
- Added
OriginalDataAwareInterface interface used for object/database row which have to remember its original values. remp/respekt#148
- You can now read
getOriginalData() from the ActiveRow instances (if they implement this interface) after the object was updated.
- Fixed
locale parameter for snippets with set parameters (locale was removed if any parameters were set). remp/crm#3113
[DashboardModule]
- Added default template and default title to
DashboardSegmentValueBaseWidget dashboard widget. remp/novydenik#1213
- When extending the widget class, only segment code is now required.
[FamilyModule]
- BREAKING: Added
provideSubscriptionTypeItemPriceOptions method to RequestFormDataProviderInterface. remp/crm#3028
- You need to add
provideSubscriptionTypeItemPriceOptions method, to all of your implementations of RequestFormDataProviderInterface. Method should return at least empty array. For more information on usage, consult: RequestFormDataProviderInterface->provideSubscriptionTypeItemPriceOptions phpdoc.
- Added new event
FamilyRequestAcceptedEvent emitted after the request donation. remp/respekt#133
[GiftsModule]
- Added
SubscriptionFormDataProvider to validate update of start time for gifted subscriptions. remp/crm#3076
- For accounting reasons, the subscription must not start before the payment confirmation date.
[GooglePlayBillingModule]
- Fixed condition when looking for recurrent to stop while cancelling Google in-app subscription. remp/crm#3080 remp/crm#1522
- Fixed introductory period handling when subscription was purchased without an introductory price. remp/crm#3045
[InvoicesModule]
- IMPORTANT: Changed crowdfunding project name in the receipt - subscription type’s description is replaced by user label. remp/helpdesk#2458
- Added dataprovider
UniversalSearchDataProvider to allow search by the invoice number. remp/respekt#137
- Added
ReceiptPreNotificationEventHandler which handles adding receipt pdf to new receiptable payment notifications. remp/novydenik#1175
- Added ability to merge dropdown menu sections. remp/crm#3071
[IssuesModule]
- Fixed missing
league/flysystem-ftp: ^3.0 dependency.
- Added audit log for issues entities changeable through admin (
IssuesRepository, MagazinesRepository, SubscriptionTypeMagazinesRepository). remp/crm#3114
[PaymentsModule]
- IMPORTANT: Method
PaymentsRepository::updateStatus now emits payment change status event only if the payment was actually changed. remp/respekt#130
- Previously, the event could be emitted even when the status didn’t change and caller requested change from
paid to paid. This is no longer true and such request won’t emit event anymore. Please verify that your code doesn’t rely on the previously-incorrect behavior.
- Added form to handle complex refund process. remp/crm#2960
- Added feature to stop subscription during refund.
- Added feature to stop recurrent payment during refund.
- Added visual progressbar to display current subscription progress.
- Added
PaymentStatusDropdownMenuWidget to unify selection of payment status in admin dropdowns. remp/crm#2960
- Added
PaymentRefundFormDataProviderInterface to extend PaymentRefundFormFactory via dataprovider. remp/crm#2960
- Updated
RecurrentPaymentsResolver::resolveSubscriptionType() to handle new subscription_type.trial_periods. remp/crm#2938
- Rules are described in PHPDoc of
RecurrentPaymentsResolver::resolveSubscriptionType().
- If
subscription_type.next_subscription_type is set, number of allowed trials is handled by subscription_type.trial_periods.
- This is not a breaking change. Trial period for existing subscription types with
next_subscription_type is set to 1.
- Added the change of payment gateway for payments confirmed from
MailProcessor if they are different from bank transfer. remp/respekt#130
- Fixed the possibility of lock timeout by the payment status change. Event emitting has been moved outside of lock. remp/respekt#130
- Fixed possible type error when editing payment containing
subscription_type item without subscription_type_item_id reference. remp/respekt#158
- Fixed slow payment filtering via variable symbol on payments admin page. remp/crm#3104
- Added option to select between week or month payments partitioning in retention analysis. remp/crm#3083
- Added new rules to ČSOB mail parser to improve variable symbol lookup. remp/respekt#106
- Updated regexp to recognize email statements for foreign payments (“zahraniční transakce”).
- Some foreign transactions contain variable symbol in payment purpose element which can be multiline. Added new rule.
- Added rule to search whole email statement for prefixed variable symbol. Customers tend to use prefixes
vs/VS/v.s./V.S..
- Added rule to search receiver message for variable symbol without any prefix.
- Customers often forget to add prefix.
- Some banks provide variable symbol within receiver message in “Creditor Reference Information - SEPA XML format”.
- Added rule to not use variable symbol set to 0.
- Foreign transfer from at least one bank comes with field “variable symbol” set to
0000000000. Correct variable symbol is in receiver message with VS prefix.
- Fixed empty ‘More actions’ dropdown. remp/crm#3071
- Fixed in user payments listing.
- Fixed in payments listing.
- Added new subscription type and subscription type tag filters in retention analysis. remp/crm#3082
- Added ability to merge dropdown menu sections. remp/crm#3071
[PrintModule]
- Added link to subscription to print export detail. remp/respekt#138
- Added widget placeholder into print export detail to allow show additional information. remp/respekt#138
[RempMailerModule]
- Added option to display only selected mail type categories on the
subscribeEmailSuccess page. remp/helpdesk#2533
- Method
render() within the MailSettings component is already prepared to accept an array of mail type category codes. Added argument to MailSettingsPresenter->renderSubscribeEmailSuccess() allows to preset these categories before the user is redirected.
- Fixed wrong link to filtered users list within mail logs. remp/crm#1892
[SalesFunnelModule]
- Refactored handling of sales funnel data provider validation to its own method
handleCantAccessFunnel. remp/crm#2941
- Changed UTM parameters handling in iframe sales funnel display. UTM parameters are preserved in URL for better tracking. remp/novydenik#1196
- Added option to add allowed sales funnels stat types to
SalesFunnelsStatsRepository. remp/novydenik#1197
- Fixed possibly incorrect amount of donations on sales funnel stats chart caused by counting in zero-amount donation payment items. remp/crm#3100
- Added new sales funnel tag filter in retention analysis. remp/crm#3082
[SegmentsModule]
- Added “nested segments” feature. remp/crm#2518
- Feature is turned off by default, since it’s only supported by our default implementation of
SegmentFactoryInterface.
- To turn on the feature, add
segment_nesting: true feature flag to NEON configuration (see README for details).
- Feature adds
SegmentCriteria to Segmenter interface - one can compose segment using other segments
- Feature also works for segments text editor, where special placeholder can be used (
%segment.SEGMENT_CODE%)
- Added API endpoint
/api/v1/segments/items (served by ItemsHandler) - returning list of segment items. remp/crm#2518
- Segmenter Vue library was also upgraded, now having ability to list segment items (even for unsaved segments).
- Fixed missing select labels for the payment amount parameter. remp/helpdesk#2540
[SubscriptionsModule]
- BREAKING: Added optional
address argument to ExtensionInterface::getStartTime method. remp/respekt#142
- In you implement your own implementation of
ExtensionInterface, just add new argument address to getStartTime method definition with no more changes required.
- IMPORTANT: Added
address_id to list of params which are firing subscription updated events. remp/respekt#148
- Fixed invalid use of internal seeder in tests.
- Added trial periods into subscription types. remp/crm#2938
- Subscription types now offer more than single trial period before “upgrading” subscriber to next subscription type.
- Default trial period is 0.
- Trial period for existing subscription types with next subscription type is set to 1. This will ensure existing subscription types behave same as before this change.
- Fixed premature form validation when added an item to the subscription type remp/crm#2174
- Fixed empty ‘More actions’ dropdown in user subscriptions listing. remp/crm#3071
- Added ability to merge dropdown menu sections. remp/crm#3071
[UpgradesModule]
- Added widget to subscription type’s detail with list of all subscription types to which upgrade is possible. remp/crm#3094
[UsersModule]
- Fixed wrong link to filtered users list within groups list. remp/crm#1892