Changelog
The format is based on Keep a Changelog and this project adheres to Semantic Versioning. Instead of change type headers, we use module names.
[2.11.0] - 2023-11-21
[AppleAppstoreModule]
  - Added ExternalIdAdminFilterFormDataProviderfor filtering payments byexternal_id, in payments admin form. remp/crm#2932
- Added ExternalIdUniversalSearchDataProviderfor filtering payments byexternal_id, in universal search form. remp/crm#2932
[ApplicationModule]
  - Added redaction of responseBodyin Hermes logger to avoid 10x increase of size of Hermes logs after adding the feature in the previous version. remp/crm#2992
- Added optimization to UserData cache generation, which skips the process if there are no tokens assigned to user.
[GooglePlayBillingModule]
  - Added handling of grace period designed to help reduce churn while Google tries to charge user after failed attempt. remp/crm#2963
    
      - Grace period has to be enabled for subscription type in Google Play Console.
- Docs: https://developer.android.com/google/play/billing/lifecycle/subscriptions#grace-period
 
- Added ExternalIdAdminFilterFormDataProviderfor filtering payments byexternal_id, in payments admin form. remp/crm#2932
- Added ExternalIdUniversalSearchDataProviderfor filtering payments byexternal_id, in universal search form. remp/crm#2932
[InvoicesModule]
  - Added paid_atdate anduseras template parameters inReceiptGenerator+ registereddatelatte filter. remp/novydenik#1084
- Added new scenario-related new-invoicetrigger which is available in Scenario builder. remp/crm#3003
[PaymentsModule]
  - Added external_idfield to payment admin filter form. remp/crm#2932
- Added ability to switch CSOB gateway to purchase mode (instead of checkout) using CsobOneClick#usePurchaseModemethod.
- Added payments:confirm_csob_paymentsto confirm unfishined online payments made through CSOB payment gateways.
[PrintModule]
  - BREAKING CHANGE: Changed the condition that decided whether the missing address should end the processing of subscription based on the type of export. remp/crm#3021
    
      - This is legacy thing. And it cannot be required to list every new export type/key here.
- After this change, if we are unable to find address for print subscription, we will not store it into print_subscriptions. (This is bugfix & breaking change.)
 
- Added subscription’s meta into print_subscriptions.metawhenExportEnginegenerates export. remp/crm#3021
- Added “delivering pcs” into the list of print exports with number of items to be delivered. remp/respekt#39
- Added ExportCriteriaparameter$backIssuesto export (only) new subscribers (“back issues” subscriptions). remp/crm#3021
      - Can be used to export only new print subscription for older issues (eg. when issue is purchased after initial report and it has to be exported outside of traditional (eg. weekly) export).
 
- Added ExportCriteriaparameter$allowedCountriesto export allowed countries only. remp/crm#3021
      - Datasource doesn’t handle addresses (search & decision which address to use is made in ExportEngine). This is the way how to restrict the creation ofprint_subscriptionsrecords for countries you are not delivering to.
 
- Added ExportCriteriaparameter$shouldDeliverCallbackto determine if subscription should be delivered. remp/crm#3021
      - Check is skipped for .Týždeň exports which do not require address.
 
- Added option to define custom file-name patterns to be recognized in PrintSubscriptionAdmin.
- Added ExportCriteriaparameter$changeStatusCallbackwhich is called afterprint_subscriptionsentries are ready, but export was not yet exported. remp/crm#3021
      - This should be used to update print_subscriptions.statusfromnewtorecurrent/removed/changed.
- If no callback is provided, default method PrintSubscriptionsRepository::setPrintExportStatus()is used.
 
[RempMailerModule]
  - Fixed bug causing “unsubscribe all” functionality to remove subscription to locked mail types. remp/helpdesk#2206
[ScenariosModule]
  - Set recurrent parent payment in notification template params as parent payment of recurrent payment if recurrent payment is available. remp/novydenik#1149
[SubscriptionsModule]
  - Removed high priority of RefreshUserDataTokenHandlerattached toNewSubscriptionEvent. remp/crm#3017
[UsersModule]
  - IMPORTANT: Fixed scenario which allowed valid n_tokenauth cookie to belong to different user than CRM’s session.
      - If this scenario occurs, user is now signed out (from CRM session) and logged in automatically based on the n_token.
- Previously the CRM session would remain untouched. We’re flagging this to make sure you verify that this change doesn’t affect you or your users.