Crm\ApiModule\Authorization\CsrfAuthorization API authorization without a replacement. remp/crm#2761
Crm\ApplicationModule\Events\ConfigCreatedEvent and Crm\ApplicationModule\Events\ConfigUpdatedEvent emitted every time the config’s is created or its value gets updated. remp/crm#2768--populator (short -p) to application:populate command to execute only selected populators. remp/crm#2798deleted_at column to audit_logs table.application:audit_logs_cleanup command which hard deletes soft deleted audit logs. We recommend adding it to your scheduled tasks.AddressChangedHandler to handle only AddressChangedEvent instead of all events of IAddressEvent interface. remp/crm#2448
IAddressEvent and depends on processing by AddressChangedHandler, you need to change event (let it extend (override) AddressChangedEvent) or make new handler which will handle your event.payments.invoice_number_id. remp/crm#2448
payments table. It took ~10 minutes to migrate 800MB table. Consider to run it at off-peak times.generate_invoice_number_for_paid_payment is disabled by default.invoices.updated_date & InvoicesRepository->update(). remp/crm#2448invoices.buyer_country_id to nullable. remp/crm#2448InvoicesRepository->isPaymentInvoiceable(). remp/crm#2448
isPaymentInvoiceable() as “all knowing”. No need to duplicate address check outside of it.isPaymentInvoiceable() before InvoiceGenerator->generate(). remp/crm#2448
InvoiceGenerator->generate() has to perform isPaymentInvoiceable() before generating invoice (we cannot rely on caller in this case). No need to call it twice.ParsedMailLogsRepository::formPaymentsWithWrongAmount. remp/crm#2790
ParsedMailLogsRepository::getDifferentAmountPaymentLogs.payId) also for the recurrent charges. remp/novydenik#961rootpd/openpgp-php dependency in the open source module. remp/crm#2773PaymentItemsRepository::copyPaymentItem() to prevent copying payments with unequal total prices of payment and related subscription type. remp/helpdesk#1780PaymentItemsRepository::copyPaymentItem method to define the source of payment items to copy. remp/helpdesk#1780products.code to URL friendly string before storing it into database. remp/crm#2628
code property will result in URL friendly string. It won’t be transformed if code is not changed while updating product.code for all products. You’ll have to manually redirect old URLs which do not fulfill these conditions to new URLs.
// example route for redirection of old canonical URL to new canonical URL
// (see all supported routes in ProductsModule.php)
$router->prepend(new Route($shopHost . '/<action show>/1234/mäkčene-a-dĺžne-ľščťžýáíé', [
'module' => 'Products',
'presenter' => 'Shop',
'action' => 'show',
'id' => 1234,
'code' => 'makcene-a-dlzne-lsctzyaie',
], Route::ONE_WAY));
ProductBuilder to use Repository::insert() instead of Builder::store().Crm\SubscriptionsModule\Extension\ExtensionInterface::getStartTime(). remp/crm#94ExtendLastExtension which can be used to extend last subscription of user. remp/novydenik#1061
require_content. remp/crm#2776