Skip to content

Releases: remp2020/crm-invoices-module

2.9.0

24 Aug 15:30
Compare
Choose a tag to compare
  • Removed restriction for administrators to generate invoice only if invoice address has company ID (IČO). remp/crm#2560
    • Customer can generate invoice without company ID. There is no reason to restrict admins/helpdesk.

2.7.0

28 Jun 09:03
Compare
Choose a tag to compare
  • 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

25 May 08:33
Compare
Choose a tag to compare
  • Fixed missing setNullable for company details in ChangeInvoiceFormFactory. remp/helpdesk#1882

2.5.0

21 Apr 12:26
Compare
Choose a tag to compare
  • 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).
  • DEPRECATED: Parameter $invoiceNumber of method InvoicesRepository::add() is deprecated. remp/crm#2775 & remp/crm#2804
    • Set invoice number to payment before adding invoice (property $payment->invoice_number_id).
  • 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/or disable_auto_invoice = 0 ).

2.4.0

24 Mar 07:52
Compare
Choose a tag to compare
  • BREAKING: Changed AddressChangedHandler to handle only AddressChangedEvent instead of all events of IAddressEvent interface. remp/crm#2448
    • If you have event which implements 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.
  • 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.
  • 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.
  • 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.
  • Removed duplicate check 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.

2.2.0: Add zero fallback to sum() calls

27 Jan 12:35
Compare
Choose a tag to compare
  • 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

25 Nov 14:06
Compare
Choose a tag to compare
  • Changed the registration of widgets - module now uses improved LazyWidgetManager and all widgets extend BaseLazyWidget class. remp/crm#2075
  • Fixed "empty string" fields in addresses, making them nulls. remp/crm#2513

2.0.2

01 Sep 08:06
Compare
Choose a tag to compare
  • 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 argument priceWithoutVat. remp/crm#1323
    • Added new column price_without_vat into invoice_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.
    • Invoice item price without vat is stored from payment item when adding invoice (by InvoicesRepository::add()).
  • Fixed condition that blocked invoice generation by admins if the invoice address was missing optional company_tax_id. remp/crm#2560

1.1.0

02 Jun 06:42
Compare
Choose a tag to compare
  • 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

31 Mar 08:41
Compare
Choose a tag to compare

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) to CompilerExtension->loadDefinitionsFromConfig(). remp/crm#1979
  • Changed nette/forms method from setAttribute() to setHtmlAttribute(). 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 to Nette\Database\Explorer. remp/crm#1979
  • Changed deprecated Nette\Database classes. Nette\Database\IRow and Nette\Database\Table\IRow are deprecated. Using Nette\Database\Table\ActiveRow instead. remp/crm#1979
  • Changed deprecated Nette\Localization\ITranslator to Nette\Localization\Translator. remp/crm#1979