Resolved Issues Fixed a bug reported where entering a numeric only value in the invoice line item Product field would cause a “Processing…” message that would not end. Fixed a bug related to a missing table relationship that could cause a never ending “Processing…” display upon deleting an invoice. New Features Major improvements to data importing and exporting o New Import Mappings allow for multiple, predefined file layouts to match your various CSV formats. o Improved validation and feedback for failures o Added on-screen documentation (see Important Details button) including required fields, and process explanations. o Added the ability to import data into your own defined custom fields as if they were part of the native tables. o Created Named Exports for all exportable tables as a means of pre-defining selected export fields. o Exports allow for use of your own custom fields as if they were part of the native tables. Added an option to define your own system limit to the maximum number of item lookups allowed. The default is 5,000 and can be set withing System Settings -> General. This was previously set to hard limit of 1,000 entries. Added the ability to run daily tasks (normally run as a CRON job) from a new menu option within Utilities and Logs. Added custom field support for the following tables: o Invoice Items o Quote Items o Item Lookups o Recurring Invoice Items Added table import support for the following tables: o Invoice Items o Quote Items o Item Lookups Added a new option to the Item Sales Report for ‘Exclude Unpaid Invoices Y/N’. Resolved Issues Fixed a bug where, if one or more add-ons were enabled, editing a standard user record could yield an error. Payment date issue - opening an invoice with an unpaid balance, then from the [Other] button, select Enter Payment. Entering a date earlier than today and saving would incorrectly save the date of today. Using a currency that required a comma for the decimal point and dot for the thousand separator, such as Euros, would display incorrectly when adding an invoice line item. It would show with a dot for the decimal point and comma for the thousands separator. Invoice totals would not refresh properly on save, if the system setting for number of tax fields to display was set to 1 instead of 2. Migrating from an older version that had database prefixes could cause an error when adding currency codes. When an Expense was edited and Category field was changed, the change would not persist on save. Timeline entries for full payments could sometimes display partial payments due to a rounding issue * DATABASE UPDATE PROCESS - PLEASE READ * We have added support for custom fields on a number of core tables. This can cause the database upgrade portion of this update to take a long time. Depending on the size of your database, it could take as long as one hour. Please be patient when updating. New Features Restructuring of currency formatting. Added support for Euros with the comma and decimal in either the thousands or decimal position. This holds true for all other supported currencies as well. You may now designate the currency selected for a payment. (Previously it would default to the currency of the invoice.) Added the ability to directly print invoices and quotes. Previously you were required to generate and download a PDF before you could print. Improvements to Save Item as Lookup on Invoices and Quotes. Options display more appropriate to the state of the invoice and line item. Removed the ability to change the currency and exchange rate on an invoice that already has a partial or full payment. Reduced timeline logging of completed tasks within the Dashboard Tasklist widget. Previously it would display an Edit entry followed by the Completed entry. These have both been combined in to one Completed entry now. Made the system menu / navbar submenus approximately 15% wider for improved responsiveness. Added a test after user login to ensure that all required writable folders exist and are in fact writable. If not, the appropriate warning(s) are displayed. Added a test for existence of email template files on post-login of admin users. Appropriate warning(s) are displayed if they are missing. Added a highly visible watermark on the Client view for Inactive clients. Added a new configuration item in System Settings -> General for Tax Fields, allowing for the selection of 1 field or 2 fields. The description of Tasks have been added to the Timeline entry display. Added the public invoice link to the default payment receipt email body. Added a new System Setting -> General option to Require Tag(s) on Client Notes, Yes/No. This can require that a tag is entered prior to saving a note for a client. When entering a new payment from the Payments module, the initially selected currency was the first in the list “Australian Dollars” and would change appropriately once the client was selected. It now initially displays the default system currency instead. On the main client view, improved the display of balance information to show Open Credit amounts as well as Unapplied Payment amounts. On the main client view, improved the display of balance information to handle clients that have used multiple currencies. The primary currency for the client is displayed/selected by default, and the other used currencies are selectable via a dropdown list. Improved the UI grouping of the System Settings -> Email page to group logically based on the function of the email (Ie. Quotes, Invoices, Payment Receipts, etc.) Added a new client setting for Automatically Email Recurring Invoices. When a recurring invoice is generated, if this option is selected, it will automatically email the client a copy of the invoice. Added the ability (and setting on System Settings -> Email) to Attach PDF for Payment Receipts, Overdue Invoices and Upcoming Payment Notice emails. Numerous Czech language file translation updates Added a utility file, ficheck.php, to the base installation to assist in identifying missing installation requirements. Resolved Issues Time Tracking add-on, Timesheet report could show time entries with dates outside of the selected date range. Data importers for invoices and payments have been updated to reference the new payment_invoices table. In the case of multiple partial payment being applied to multiple invoices for the same client, the payment balance could show the client’s outstanding invoice balance in error. In certain cases, deleting a note could cause the timeline view to display an error. The Payments Collected report would display an error when a specific Company Profile was selected. Clicking the Back button within a Task view from the Tasks module, could route to an incorrect page. The Dashboard’s Custom Date range was not respecting the selected system date format. It now does. The Timeline Event Types list display would cut off, with only 3 event types being displayed. Fixed. When selecting multiple Invoices or Quotes from the list and creating PDFs (contained in a zip file), in certain cases, the zip file creation could fail and display an error. Fixed. Hidden console errors related to apple touch icons have been fixed. Sometimes when paying an invoice in full, the text of the timeline event could incorrectly show as “partial payment”. Fixed. This was due to an occasional rounding error Deleting a Task that you created and assigned to another user would cause an error for that other user if you deleted the task. Fixed. Removed a migration that attempted to create Passport keys on the 2021-1.4 release. Not all hosts support the ability to run the exec command. For some shared hosting providers, the Check for Updates feature would fail because the PHP option allow_url_fopen is often disabled. Changed to use GuzzleHTTP library instead. Creating an Item Lookup entry that had the double quote character “ in the name or description could cause an incorrect display. The CSS styles assigned to the payment receipt email was being ignored. Tags for recurring invoices and invoices were independent of one another, so that assigning a recurring invoice with a specific tag would not guarantee that the invoice created by it would be assigned the same tag. This has been corrected and an update migration was created to align prior entries. Sometimes when saving changes to a client record, and the client had the setting enabled to Allow Client Center Login, it would incorrectly prompt to enter a password for the client, when it had been entered previously. Fixed. In certain instances it would allow entering and applying a payment in a currency other than the invoiced currency. Fixed. The Mollie payment gateway could record more than one payment in FusionInvoice if Mollie’s Webhook did not receive a proper 200 response. This would not charge the client twice, but could show in FusionInvoice as having multiple payments. New Features Added language support for Lithuanian, Danish and Czech. Minimum PHP version requirement has changed to 7.3. Improved tax handling with respect to Item Lookups. There is a new option for the dropdown fields Tax1 and Tax2 on Item Lookups, which is ‘System Default’. If this option is selected, when the item is used on an invoice, recurring invoice or quote, it will inherit the tax assigned at the system configuration level. Improved internal referencing of the greeting within the body of the invoice and quote emails. If a client record has a “Default To” contact(s) set to Yes, that contact(s) will be included for sending the email to. If there are multiple recipients of the email, the greeting will be “Hi there”. If there is only one recipient, it will use the company name or the contact name, (Ie, “Hi John”). Client deletion is no longer allowed if a client has associated transaction records (invoices, quotes, notes, payments, etc.) It is recommended that you instead set the client as Inactive. Several CSS improvements which improve mobile responsiveness. (Vielen dank, Falko) Added the ability to update a client contact’s Default To, CC, and BCC when in the contact’s modal edit view. Removed the validation for a client contact to require phone number. The client selection control now displays only active client records when creating an invoice or quote. Added the invoice date field to the payments list, for payments that have a 1-to-1 relationship to an invoice. If a payment was applied to more than one invoice, the word “multiple” will be shown. Removed the static column widths within the Invoices table display, which allows for improved readability, especially when some users do not populate all of the columns, as unpopulated columns now take up less space. Merchant payment processing safeguards added. This is related to clients paying invoices via the public invoice link, which in turn uses a merchant’s payment gateway. After the payment is processed the merchant’s network calls back to your FusionInvoice, notifying it that the payment was successful (or not), at which time a payment entry is generated in FusionInvoice. In the case of a network error, when the merchant network call-back could make several attempts, FusinInvoice will now accept only the first successful attempt, discarding all subsequent requests. In addition, when the client clicks the Pay Now button, it is immediately disabled to disallow the potential for multiple clicks. Added a “Searching. . .” animated graphic to Timeline searching and filtering, both on the dashboard timeline and client view timeline. Added a folding interface for long notes to be displayed within the Timeline and Notes lists. Now if the note is more than 5 lines long, it will show the first 5 lines and display a “Show more” link, allowing you to view the rest of the note, while conserving space. Added a Tax column to the Expense List report. In previous releases it was difficult to determine why the Expenses, totalled by category did not match the Profit and Loss Expense amounts. Taxes were not being displayed on either report, but were being deducted from the total on the P&L report. Added an option to “Deduct Taxes from Expenses” to the Profit and Loss report. Removed the deprecated .\api folder from the default distribution. The system setting for Invoices 'if_invoice_is_emailed_while_draft' has been deprecated and removed. The system setting for Invoices 'Allow entering payments without balance' has been deprecated and removed. Added the ability to see Note Tags within the header of the note of the Timeline view. Tasks created by another user and assigned to you now display the Created By User and Datetime at the bottom of the task view. From the Client’s Task page, the Options button would only display if you were the user that created the task. In addition, it now displays also if the task has been assigned to you. Added a thin border to the dropdown menu, to better distinguish it from the background, when using a theme with a white background. Improved multi-currency visibility on the Payments Collected report. There is a new option, “Currency Format” available that allows you to choose Base Currency or Invoiced Currency. When using Base Currency, all amounts are adjusted by the exchange rate established on the invoice. If using “Invoiced Currency”, the native currency of the invoice will be shown, but the totals will still be adjusted by each invoices exchange rate. The Payments list now displays payments in their actual currency. Previously they had been shown only in the system default currency. Resolved Issues Fixed a bug related to the new system email default, where it could be left empty on a brand new installation. Fixed a UI bug that would display “fi.” in the client contacts list Title column, in the case that the contact had no title assigned. Added a refresh of the invoice view after a draft invoice is emailed, as internally the status changes to Sent, but the view was not reflected the change until it was refreshed. System generated emails for upcoming payment notices, overdue notices, and new invoices generated from a recurring invoice run were not including client contacts that were marked as “Default To” = Yes. Fixed. When a live invoice is generated from a recurring invoice template, the email shown on the public invoice and PDF could display as “system”. Fixed. In addition use of the system email has been improved throughout. Default system tax rates were not being properly assigned when invoicing and adding a custom item code (not selected from an existing Item Lookup). Both tax entries were left blank in this case. Fixed. A browser syntax error was generated when sending a system test email with the system language set to French. Fixed. Pre-payments were not automatically sending payment receipt emails, despite the Email Payment Receipts option being set to Yes. Fixed. Searching the Timeline, within a specific Client view, would lose scope of the client and perform a global timeline search. Fixed. In some cases, within the Payment Entry window, if the Email Payment Receipt box was checked, the email could fail. The error could be seen in the mail log and was related to improper JSON formatting. Fixed. Contact titles in some languages (French reported) were not displaying with proper localization. Fixed. When entering a payment, the checkbox for Email Payment Receipt would not always check or uncheck itself based on the Email Payment Receipts setting on the client record. Fixed. Keyword searches within the payments module was not consistent. Fixed. If a client’s Name did not match their Unique Name value, when creating an invoice, recurring invoice or quote, the client name was not properly pre-selected and could result in a new client record being created. Fixed. Using a date selector of Last Month or Last Quarter, for dashboard views or reports, would yield incorrect results when used in the first month of the year. Fixed. Notes could display improperly in the timeline view if they had been pasted in from formatted HTML. Removed the timeline short description cut off to remedy this. Reported discrepancy between expenses shown on the Expense List report and the Profit and Loss Report. This was not a bug, per se, but the reports did not display the tax amounts in a way that was self-explanatory. This has been addressed in two reporting improvements. Attachment uploads were not being logged to the timeline. Fixed. When entering a payment through the invoice view, if the client had no email on file or they had the option to Send Payment Receipt Emails set to No, the checkbox would not display to “Send Payment Receipt Email”. It now displays, but is disabled, with a mouse-over tooltip, showing the reason for being disabled. If a new standard user was created, without the option to Allow Time Period Change within the Dashboards section of User Permissions, they could receive an error when trying to load their dashboard. Fixed. On a brand new installation, the default values for decimal and thousands separator where incorrect for Euros. Fixed. Reported that installations using an IP address as a base for their server URL could display an error when clicking the new Payment Applications button (or the “Multiple” link) from the Payments module. This was related to a relative pathing issue. Fixed. A testing value was improperly included in the Quote and Invoice Email subject blades and was distributed in the storage folder. This folder should not be imported as part of and upgrade, but was reported. Fixed. When using the Copy Expense feature, the original values for Vendor ID and Category ID were not persisted to the new entry. Fixed. It was discovered that a standard user, who did not have the permission set for Allow Time Period Change = “Yes”, could be unable to have their time period settings changed at all. To correct this, a new field was added to the System Settings Dashboard view, which allows the system setting to be changed for ”System Default Time Period for Invoice and Quote Summary”. (As part of last year’s release, all admin users (and standard users with this option enabled) were given the ability to change their own dashboard time periods independent of the system default.) Payment entry in Euros was not properly using the decimal and thousands separator. Fixed. Remaining balance on payment entry was not consistently updating. Fixed. New Features Dashboard Widgets Timeline and Task List now have a minimum column setting of 6 and maximum of 12. Documentation changes for the use of Payment Receipt Emails, as their use has changed with the 2021 release. CRUD operations for Recurring Invoices are new logged as Timline events. The Payment Receipt Email subject line now supports variable referencing. For example: “Thank you for your payment of: {{ payment->formatted_amount }}” Quotes and Recurring invoices view now highlight the Currency and Exchange Rate fields, if the currency used is not the default system currency. (This was implemented previously for Invoices.) Resolved Issues If a client record was deleted, and the client had payments on file that had been applied to invoices, opening the Payments view would yield a 500 error. Attempting to delete a paid invoice would display the processing image indefinitely. The calculation for the overdue invoice total, on the Dashboard Invoice Summary widget, was not always accurate for the selected time frame. Adding a file attachment that contained a comma in the filename would cause an error if using the Chrome browser. A minor bug in Timline filtering was fixed. When editing a Quote, the “Other” menu link for Quote to Invoice would display an error. Fixed. Currency editing and display. When a currency record had a Thousands Separator of a comma and a decimal point value of a Dot (full stop), such as is normal for Euros, it could display as &#39; in the Currency Edit form. In the above currency scenario (Ie. Euros), line items on Quotes and Invoices would display with their thousands and decimal notations reversed, causing an evaluation problem on document save, which would overstate the line item amount. Opening the Time Tracker add-on would display an error. When choosing to create an Invoice or Quote from within a Client record, the document details view which pops up would prompt to select the client. This is now defaulted to the current client. Converting a Quote to an invoice is now a timeline logged event. This can happen by clicking the Quote to Invoice link or, if the System Setting for Automatically Convert Quote to Invoice When Client Approves, is set to ‘Yes’. Payment Receipt Emails could allow an incorrect selection in the To Mail of the current logged in user’s email address. if the client record had no email address defined. Fixed. The default invoice template could display an out of place comma character if address information was only entered in the freeform address entry text area (and not in the individual address fields). Attempting to upload an .SVG file for use as a company logo would yield a 500 error. Attempts to upload .SVG files are now denied, as they are not supported by the graphics library FI uses. On System Settings update, added a check to see if the (hidden) System user email matched the System Settings -> Email -> Mail From Address. If not, the System user’s email is automatically updated to this value. Unchecking the Send Payment Receipt email box, could be overridden by the Client setting for Send Payment Receipts. Fixed. New Features Item import now allows the importing of item categories. All areas throughout FI, where client selection is an option, the new dropdown selector control is used. The Item Lookup list was previously limited to 100 entries. It has been expanded to 5,000. Emailing documents (Invoices, Quotes, Payment Receipts, etc.) has been improved to allow 3 options: o The main system email defined in System Settings o The email address of the user that created the document or entered the payment o The email address of the currently logged in user Resolved Issues Client Center logins were experiencing errors stating “BadMethodCallException”. Customers using Database Table Prefixes were experiencing errors in multiple modules. Using the Edit button for to client’s “To:” information on the Invoice edit view would yield a 500 error. Expense entry - attempting to remove a client from the expense, once added could not be removed. Export tool would display an error. Clicking the Delete button from the Client view, Task page was not actually executing the delete action. Currency Editing - Editing a Currency entry would display the HTML markup values for the decimal point and thousands separator after saving the entry. (Ie. a dot for Decimal Point would display &#46; and a comma for Thousands Separator would show &#44;) Payment Receipt Emails - The Send From email address was being improperly displayed. The Client Name column in the Invoices list has been widened. “System” would show as an (invalid) email Send From option when the invoice had been generated from a recurring invoice template. New Features Client Statements now include pre-payments The Current FI Version is now shown at the top of the main Setup page. Added ability to complete tasks and edit them from within the Client view. Resolved Issues Certain non-English language files were displaying graphic symbols in place of language specific characters. Removed php_value specific size limits on the distributed .htaccess file, as it was causing issues for some hosts. New Features Credit Memos o We have added the ability to create Credit Memos, sometimes called Credit Notes. o A Credit Memo is, for all intents and purposes, a negative invoice. Credit Memos are displayed in the same areas in which you would normally see invoices. o Credit Memos are distinguished from Invoices with a light red indicator. o To create a Credit Memo, begin in the same way that you would with an invoice, but select the Credit Memo option. o Credit Memos can be applied to one or more invoices through the new ‘Apply to Invoices’ option. Pre-Payments o Prepayments are now supported in FI. o Prepayments are recorded payments that remain open until they are applied to one or more invoices. o To create a prepayment, enter a new payment from the Payments module and select the option ‘Pre-payment for future invoices’. o Pre-payments can be displayed in two ways on the payments collected report, either by showing the entire pre- payment amount or by showing only the amount(s) of the pre-payment that has been applied to invoices. o The dashboard widget displaying payments collected includes only pre-payment amounts that have been applied to invoices. o To apply a pre-payment to an invoice, first select the invoice, then select Apply Prepayment. This can be done from the Invoices list or by editing the invoice. o Similar to Credit Memos, prepayments can be applied, but on an individual invoice-by-invoice basis. o Payments Covering Multiple Invoices. o Similar to pre-payments, FI now supports entering one payment that can be applied to multiple invoices. o This is done the Payments module, while entering a new payment. Task List Improvements o The dashboard widget Task List has a new filter, allowing you to show All tasks, tasks created yourself or tasks assigned from others. o Tasks relating to clients are now shown in a tab on the Clients view. o Task List now has it’s own module o Added a button on the Task List dashboad widget to sort by date or date/time. o Added the ability to customize the Task Title, when creating a task from a Note. o The Task List dashboard widget is now set to be enabled by default for upgrading users. o Within the Task edit view, clicking the Calendar icon now displays a calendar for selecting dates. Parent and Child Account Support o From any Client account, on the Settings page, you may assign a parent account, establishing a parent-child relationship. o Child accounts display a Link visual and the parent account name under the main client name area. o Parent accounts display a page/tab within the Client view called “Child Accounts” and lists all of the child accounts that belong to the parent account. A New Timeline View o A dashboard widget allows displaying a timeline of important FI events, such as: invoices created, clients being edited, payments received, notes created, recurring invoices generated, etc. o The timeline allows for quickly searching and filtering important events o In addition to the dashboard Timeline display, a client-specific Timeline is displayed below the Client record. For upgrading users that wish to populate their timeline from past events, there is a a new page within System Settings, labeled “TImeline History”. This page is shown only when your system has past timeline events to be generated. Improvements to the Clients View o A new tab showing Tasks assigned to the client. o A new tab showing Child accounts displays if the client has child accounts. o A new link showing the account’s Parent account is displayed if the client record has a parent account defined. o Count badges are displayed on client related tabs, for Contacts, Attachments, Notes and Tasks. o A new button was added to the Client view to Add Note o A new button was added to the Client view to Create Task o Reduced clutter on Client view by moving Create Invoice, Create Quote and Create Recurring Invoice to their respective tabs. o Added a new Client Type option for Affiliate. This is for clients that do business on your behalf, with your products. o Client searches now these fields in addition to the previous ones: Address, City and Zip/Postal code. o A red badge is shown in the header area for Client entries that are flagged as inactive. Client Contacts Improvements o Added 2 new fields to Contacts view - Primary and Alternate Phone o Added a Notes field o Added the ability to create, edit or delete contacts for a client while in View mode. Notes Improvements o Added WYSIWYG capabilities to Note entries. Currency and Exchange Rate Improvements o Added support for currency symbols requiring a space after the amount and before the symbol o When the currency used for an invoice differs from the base system’s currency, the exchange rate and currency fields display with a yellow background to call attention to the difference. o Redesigned the formatting capabilities of currency symbols to be much more flexible. o The currency options for thousands separator and decimal points have been changed from a free-form textbox to a dropdown list, allowing for all major world currency options. Invoice Improvements o Added a Client link to the “To” box containing the client name and address for Invoices, Recurring Invoices and Quotes. o Line item entry was improved with the use of the new Item Lookup control. Item Lookups Changes o Item Lookups will no longer allow entries with duplicate names o Added a new Category field to Item Lookups to improve sales reporting capabilities. o A new item entry control was created for item selection within invoice line items. The new control allows for and easier selection from a dropdown list of existing lookup items or enter a new one. Previously, to get a list of lookup items, you had to enter the first few letters of the item to get a matching list. Introduced the concept of a System Emails. o Within System Settings, there are new fields for Mail From Address and Mail From name. This serves as a System user to send mail from and is the new default when sending emails and quotes. It had previously used the email of the logged in user. You still have the option to chose to send from your user email account if you like. System Menu Improvements o Redesigned the System menu into more logical groupings. o Added a new view for System Log. o Added a new view for Mail Log. Reporting Improvements o The Client Statement report could be confusing when multiple currency types were used. It has been improved and now groups and totals by currency type. o The Client Statement report includes Credit Memos and displays their document numbers as a light red color. o Added date range selections of Last Month, Last Quarter, and Last Year to the options for all date range selections throughout the system, including most reports. o The Revenue by Client report now allows for custom dates. o Added Category selection to the Item Sales report. o Added new improved dropdown list selector for Clients on the Client Statement report. o Added a new report, Invoices by Client. General UX Improvements o Added more attention-grabbing warnings when deleting records. o Added a new status field of Inactive to the Users view. An inactive user has no login rights. o Improved handling of user deletions. It now prompts to change them to Inactive instead, but if deleted, it is a soft delete and all related information entered by the user remains in tact. o Changed default web session timeout from 2 hours to 1 week to minimize logins required for normal users. o Added a new setting for Company Profiles to designate the Default profile. o Added a Cancel button to the Expenses edit mode. o The new Item Lookup control is used for invoices, quotes and reports that prompt for item selection. o Added a visual enhancement of striped tables to all table displays throughout. o Delete buttons throughout are themed red. o Introduced a new “System” user that is used to mark timeline entries for automated entries, like recurring invoices being created or customers paying invoices from public invoice links. o Improved search capabilities within all the modules. It is now an AND search instead of OR for keyword matching. o Updated the control used to select Expense categories to a new selectable dropdown list, similar to the new Item Lookups control. o Previously, when within the Client view, when deleting a document, you would be returned to the individual document module’s list. You are new returned to the view of the client and specific module from the document that you deleted. o Improved the layout and improved functionality for Email testing within System Settings. o Added more information to the System tab within System Settings to display MySQL version, Webserver type and the most recent 300 lines of the system log. o Added the concept of user specific dashboards. A user can now define, within their user settings, their own dashboard display. If the user does not have a custom dashboard defined, the system dashboard is used for them. o Added the ability to create PDFs in bulk for Invoices or Quotes, by selecting the checkbox in the invoice list and clicking the PDF button. o Added a new setting for Tasklist items to show (or not show) a time value in the task’s due date. o Improved readability of all field labels on all module views, where the field’s label displays in bold and the data displayed is in standard type. o Added a new Tag field to the Invoices module for quick filtering of specific invoices. This has been added to normal invoices, as well as recurring invoice templates. The filtering capability was added to the header area of the Invoices list. o Added an automatic field selection of the search box when clicking any of the modules from the left navbar menu. Reduces the number of clicks needed to search within any module. o Added a dropdown list control for Country selection for the Client view, Company Profiles and System Setup. o Added a Copy Invoice feature to the Options button on the primary invoices list as well as the Client view invoices list. o Improvements to the System Settings, System page. It now shows all requirements in an easily identifiable pass/fail manner. o Moved the Notes area that could conditionally be displayed below the normal client view back to its own Notes tab. I In place of this, the new Timeline display, which includes Notes,is shown. as well as an Add Note button. o Improved UI when manually sending an overdue invoice notification. It is more evident now when sending has completed. o Set a limit of 8MB on file attachments to minimize DB impact. o Safeguards were added before an Admin type user can be deleted. There must be at least one other active Admin user and you cannot delete the user account if it is your currently active user. o When a recurring invoice is generated and the system setting is on to automatically send emails, the invoice status is now automatically changed to Sent. o Added an option within System Settings to require CAPTCHA on user login. This can be used if you have a problem with brute force login attempts. o Changed the order of tasks that are run within daily scheduled tasks. Recurring invoices is now run before the other tasks. Improvements to Custom Fields o The CustomField() helper function now supports returning raw values. This can be used in normal views, as well as Invoice, quote and email templates. Previously, using syntax like this: {{ $invoice->customField('ServiceInvoice') }} was the only option and would return fully formatted HTML, suitable for including on any view. A return value for a custom field based on a checkbox would display something similar to this: <input class="custom-form-field" disabled checked="checked" name="ServiceInvoice" type="checkbox" value="1"> You can now add a second parameter of ‘false’ to the function call and receive back only the raw value of “1”. The syntax is: {{ $invoice->customField('ServiceInvoice', false) }} o Changed underlying storage of custom fields of type Date. They are now stored internally as DateTime to mitigate potential display issues. Added a new PDF creation library, MPDF, as an alternative to DOMPDF. An all-new API o WARNING! This is a breaking change if you are using the API from prior versions. o Added custom API endpoints for sending invoices or quotes via email o Added support for custom fields o This release includes an entirely rewritten API, which is much more accessible from other applications and can easily be tested with common API testing tools like Postman, cURL, Fiddler, Insomnia, Swagger UI. etc. o We will be providing detailed information about using the new API in upcoming documentation, but in the mean time, if you are using and relying on the previously provided FusionInvoice API, this update will be a breaking change. Please do not update your live FusionInvoice installation until you have the new documentation and have recreated your endpoints using the new API. Improved Upgrade Migrations o Significantly redesigned the database migration strategy, which improves relational integrity during updates. New Notification System o A notification system was added that displays a badge with a number in it in the upper left portion of the header when a new notification comes in. Currently notifications are limited to tasks that have been assigned to you from others, but it will be used for additional purposes in future releases. Groups is now “Document Number Schemes” o The “Groups” table and associated UI labels to the more accurate “Document Number Schemes”. Language File Overides o You can now customize your own language file translations and place them in an overrides folder to ensure that they will be preserved through new version updates. This allows you to override system default translations as well as create new translations that you can use in your own customizations. o For reference, look in the <root>/resources/lang/<xx> folder (where ‘xx’ is your specific 2 character language code) to see your language specific translation files. Your override files will have to have the same names as the core files, but you will place them in the <root>/custom/overrides/lang/<xx> folder. You may create override files for as many of the core files as you like. o When creating your override files, keep in mind that you only need to enter values that you want to override. It’s not advisable to duplicate the same information that is in the core language translations. Due Date on Invoice Templates Supports Multiple Formats o We’ve expanded the options for Due Date to allow you to better call attention to it on your invoices. o A few of the potential options: {{ $invoice->getDueAt('F j, Y') }} returns January 29, 2020 {{ $invoice->getDueAt('m/d/Y') }} returns 01/29/2020 {{ $invoice->getDueAt('l jS \\of F Y h:i:s A') }} returns Wednesday 29th of January 2020 12:00:00 AM {{ $invoice->getDueAt('g:i a l jS F Y') }} returns 12:00 am Wednesday 29th January 2020 {{ $invoice->getDueAt('l jS F Y') }} returns Wednesday 29th January 2020 Laravel Update from 5.5 to 7.4 o Laravel, the underlying framework of FI, has been updated. o All third party libraries, including all payment gateways have been updated. Increased PHP Requirement o 7.25 minimum and 7.4 maximum Email Templating Change for Payment Receipt Emails o Due to core changes with the payments system, to support payments that can span multiple invoices, pre-payments and credit memos, there were changes also to the way that email templates work for payment receipts. If you are currently sending payment receipt emails, please pay special attention to this. o In previous versions there was a text area on the System Settings -> Email page that allowed for the definition of the body of your payment receipt emails. This has been replaced with a drop-down list that offers options for Default and Custom. o The new body for these default emails can be found here: .\app\Modules\Payments\Views\payments\paymentReceiptBody.blade.php. This file contains proper referencing for the new structure of the payments and related tables. o If you wish to use a customized version of this email, create a copy of this file here: .\custom\templates\email_templates\payment\paymentReceiptBody.blade.php. Any changes made to files in the .\custom\ folder will not be overwritten by updates. o Finally, to ensure your custom version is used, change the setting in System Settings -> Email -> Payment Receipt Emails from Default to Custom. Resolved Issues The Notes window, which is modal, would disappear if you clicked outside of the window, losing any note text you had just typed. A custom field of type Checkbox would change its value to checked after a record was saved. A bug when PDF-ing multiple invoice files from the invoice list. User deletion was a problem. The UI now explains that it is a bad idea and allows for making them inactive instead. Fixed a UI bug where a user could change the status of an invoice that had a non-zero balance to ‘Paid’, but upon save it would simply revert. Now the Paid option is not available, if the invoice has a non-zero balance. If you viewed the System Settings page and your system was unable to report the current MySQL version, the page load would fail. It now fails gracefully, showing that it could not be determined. Fixed occasional errors reported from the new Email Test feature added in the previous release. Expense copying - If you copy an expense that had already been billed, selecting a different client would not save. It would only be saved to the original client. Client’s contact set as default CC was being ignored when an invoice was created from a recurring invoice template. Deleting all invoice or quote line items and trying to save would generate an error. Fixed a bug where attempting to edit a note after it had been saved would not commit the changes. Corrected an error where, if the system date format was d-m-Y or d/m/Y, and you attempted to create a task, it would fail. Deleting an invoice when in edit mode would return control to a blank page. Fixed bug where, when updating from very old versions, and error would occur due to no associated company profile. Now, if no default is set, the update selects the first entry and uses that as the default. If a user added a logo image that was extremely large, it could cause invoice PDF generation to fail. An automatic resize was added to reduce the size of the image if needed. The max size is now 1000x1000 pixels. In some instances a notification for Support Expiring Soon would display for dates a year from today. Improved handling of special characters when using the Import process. Adding notes from an Invoice’s or Quote’s public view did not work. Custom fields of type Date would not always respect the system’s setting for date time. Attempting to save an invoice that has an empty line item on it would display an error “Name is a required field”. It will now simply discard the blank entry and save normally.
June 10, 2021
Release Notes
Version 2021-1.5
February 12, 2021
Release Notes
Version 2021-1.4
January 18, 2021
Release Notes
Version 2021-1.3
January 11, 2021
Release Notes
Version 2021-1.2
January 8, 2021
Release Notes
Version 2021-1.1
January 7, 2021
Release Notes
Version 2021-1.0
December 13, 2021
Release Notes
Version 2021-1.6
December 14, 2021
Release Notes
Version 2021-1.7
New Features Numerous improvements to importers related to custom fields and item lookups. Removed email greeting portion that was part of the templates email as it was not easily editable. All information is now accessible through the System Settings -> Email -> body sections. Added a safeguard to prevent situations where a payment gateway’s response to the FusionInvoice installation, for a completed payment transaction, was deemed incomplete by the payment gateway, however the payment had been applied in FusionInvoice. This could yield future attempts by the gateway to notify FusionInvoice of the payment, thereby creating additional payment posting emails. Added a new CSS class reference “custom-fields” to custom fields usage throughout. This will make it easier for users to add their own JS event handling for custom fields. Resolved Issues Entering a payment and automatically attempting to send the payment receipt could cause a 500 error if the system setting for Default Payment Receipt Body was set to Custom and there was no custom template on disk. Added an error message display for this situation. Resolved issues related to the system user not having a users_custom record. This entry is automatically added with this version. o Overdue invoice emails could error due to this o The payments eventsubscriber could fail after payment application with Error: [0] Trying to get property 'id' of non-object From the Payments Module, Payment record, selecting [Options] Send Payment Receipt - the modal window would not show the option for Attach Invoice PDF. It now does, and defaults to the System Setting, Email, Payment Receipts section. The System Settings dropdown list option for Invoices “If Invoice is Emailed While in Draft Status” had been accidentally removed in a prior release. It has been restored. Payments made from one of the three payment gateways by way of a public invoice link would not always fill in the appropriate currency_code value in the payments table. o A migration has been added to fill in any missing entries automatically upon this version update. Deleting a recurring invoice that had no quantity entries would cause an error. A small bug in attaching invoice PDFs to the payment receipt emails. The main setting is in System Settings->Email. Check the box for Attach Invoice PDF in the Payment Receipts section. Next, when entering a payment receipt, there is an option to Attach Invoice PDF, which it is checked by default, it works fine. The issue is when you go to the Payments module, select a payment record and choose [Options] Email Payment Receipt. The attach invoice option is not shown here and it does not attach it by default. The option is now shown and checked/unchecked based on the system settings value. Changing a quantity value during invoice or quote line item entry could cause a custom entered description to be reset to the default description. On a new installation (not update), editing an invoice, recurring invoice or quote could display an error “undefined index” related to the tax_id field. Invoice template alignment change for Product Name. Product name would justify in the middle of the row if there was a multi- line description or multiple custom fields. Changed to justify top and left. Emailing of a Credit Memo would yield an exception o Added Credit Memo section to the System Settings -> Email configuration Attempting to change a vendor on an existing expense entry would fail Attempting to generate PDF output from running the Revenue by Client report would yield an error.
March 4, 2022
Release Notes
Version 2021-1.8