Releases: remp2020/crm-invoices-module
Releases · remp2020/crm-invoices-module
2.9.0
2.7.0
- BREAKING: Changed
InvoicesRepository::paymentInInvoiceablePeriod
from static to instance method. remp/crm#2799 - Added option to configure how long after purchase (or end of the month) should be generation of payment's invoice allowed. remp/crm#2799
- Until now invoice could be generated 15 days after purchase date. This behavior is kept (no breaking change) by presetting this config to "15 days after purchase date".
- See CRM Admin -> Settings -> Invoices; option "Invoice generation - limit related to" (
generate_invoice_limit_from
) and "Invoice generation - time restriction (in days)" (generate_invoice_limit_from_days
). - IMPORTANT: This config is restricted: If number of days is bigger than 15, system requires you to enable config "Generate an invoice number for every paid payment" (
generate_invoice_number_for_paid_payment
).
2.6.0
2.5.0
- IMPORTANT: Fixed invoice's issued date (column
invoice.created_date
) to delivery date of pre-generated invoice number. remp/crm#2836- This change doesn't affect instances with disabled config
generate_invoice_number_for_paid_payment
(default state).
- This change doesn't affect instances with disabled config
- DEPRECATED: Parameter
$invoiceNumber
of methodInvoicesRepository::add()
is deprecated. remp/crm#2775 & remp/crm#2804- Set invoice number to payment before adding invoice (property
$payment->invoice_number_id
).
- Set invoice number to payment before adding invoice (property
- Added automatic invoice generation for all invoiceable payments of user after invoicing settings of user were changed. remp/crm#2774
- Triggered when admin or user change user's invoice flags (either sets
user.invoice = 1
and/ordisable_auto_invoice = 0
).
- Triggered when admin or user change user's invoice flags (either sets
2.4.0
- BREAKING: Changed
AddressChangedHandler
to handle onlyAddressChangedEvent
instead of all events ofIAddressEvent
interface. remp/crm#2448- If you have event which implements
IAddressEvent
and depends on processing byAddressChangedHandler
, you need to change event (let it extend (override)AddressChangedEvent
) or make new handler which will handle your event.
- If you have event which implements
- IMPORTANT: Added column
payments.invoice_number_id
. remp/crm#2448- This migration could take a long time, depending on the size of your
payments
table. It took ~10 minutes to migrate 800MB table. Consider to run it at off-peak times.
- This migration could take a long time, depending on the size of your
- Added (optional) generation of the invoice number for all paid payments ignoring missing invoice address and setting to disable invoicing (user or admin). remp/crm#2448
- This is non breaking change. Config
generate_invoice_number_for_paid_payment
is disabled by default. - If invoice cannot be generated, invoice number is generated and connected to payment. When user fulfills conditions to generate invoice (adds invoice address or enables invoicing), an invoice is generated with this invoice number. This is practical if accounting requires to have invoices in order of the purchase dates.
- This is non breaking change. Config
- Added tests for invoice generation, updated few thrown messages & cleaned handlers. remp/crm#2448
- Added column
invoices.updated_date
&InvoicesRepository->update()
. remp/crm#2448 - Changed column
invoices.buyer_country_id
to nullable. remp/crm#2448 - Moved responsibility to check address into
InvoicesRepository->isPaymentInvoiceable()
. remp/crm#2448- We will need to rely on
isPaymentInvoiceable()
as "all knowing". No need to duplicate address check outside of it.
- We will need to rely on
- Removed duplicate check
isPaymentInvoiceable()
beforeInvoiceGenerator->generate()
. remp/crm#2448InvoiceGenerator->generate()
has to performisPaymentInvoiceable()
before generating invoice (we cannot rely on caller in this case). No need to call it twice.
2.2.0: Add zero fallback to sum() calls
- Added user friendly error to
UserInvoiceFormFactory
(used on success pages) if invoice address contains foreign country (instead of useless application error). CRM does not allow invoicing to foreign countries at this moment. remp/helpdesk#/1593 - Fixed PHP 8.1 deprecation issues. remp/crm#2706
2.1.0
2.0.2
- BREAKING: Changed PHP version requirement to 8.0. remp/crm#2519
- BREAKING: Changed Latte version from v2 to v3. remp/crm#2519
- BREAKING: Changed the signature of method
InvoiceItemsRepository::add()
- added argumentpriceWithoutVat
. remp/crm#1323- Added new column
price_without_vat
intoinvoice_items
table. - Changed invoice template. Price without vat is now not calculated but loaded from item.
- Existing columns
price
&vat
are not removed (yet), so you don't need to change template. But we advice using new column.
- Existing columns
- Invoice item price without vat is stored from payment item when adding invoice (by
InvoicesRepository::add()
).
- Added new column
- Fixed condition that blocked invoice generation by admins if the invoice address was missing optional
company_tax_id
. remp/crm#2560
1.1.0
- Fixed translations for form field used for the "street" part of address. Using address is legacy thing. remp/helpdesk#1201
- Added checkbox to invoices export to select only B2B invoices. B2B invoice has filled in either buyer's company ID, VAT ID or TAX ID. remp/crm#2447
1.0.0
Changelog
- Changed translation files. remp/crm#2276
- Fix EOF newlines.
- Switch tabs to 4 spaces. Weblate can parse only YAML format (doesn't support tabs).
- Change extension from NEON to YML.
- Fixed not generating invoices after adding new invoice address, because
NewAddressEvent
fired before changing$user->invoice
switch. remp/helpdesk#1147
Nette 3.0
- Changed
Compiler::loadDefinitions()
(deprecated) toCompilerExtension->loadDefinitionsFromConfig()
. remp/crm#1979 - Changed
nette/forms
method fromsetAttribute()
tosetHtmlAttribute()
. remp/crm#1979 - Updated conditions expecting false from
Selection::fetch()
. Null is returned instead of false after update to Nette 3.0. remp/crm#2142
Nette 3.1
- Changed deprecated
Nette\Database\Context
toNette\Database\Explorer
. remp/crm#1979 - Changed deprecated
Nette\Database
classes.Nette\Database\IRow
andNette\Database\Table\IRow
are deprecated. UsingNette\Database\Table\ActiveRow
instead. remp/crm#1979 - Changed deprecated
Nette\Localization\ITranslator
toNette\Localization\Translator
. remp/crm#1979