nBill 2.3.0 is now available for download. This is a new minor release, meaning we do have a few new features, and it has been tested with the latest development version of Joomla so should work fine with Joomla 2.5 when that is released next month (as long as they don't introduce any major changes between now and then). The main thing I have been working on during the last few months though, has been writing some nBill extensions (and adapting nBill to better support extension development).
The full change log is pasted below (probably the largest one yet), which includes quite a few bug fixes and enhancements. The main new features are:
1) Supporting Documents. You can now upload and organise files which support your accounts (eg. invoices from your suppliers), and attach these to different types of record (eg. clients, quotes, invoices, income, expenditure, etc.) At present, only administrators can access the attached files (so if you attach a file to a client or order, the file will not be available for the client to view). This may change in a future release, but for now it is mainly designed to allow paperless accounting.
2) Record copying. In the previous version, only order forms could be copied. This has now been extended to allow copying of products, quote request forms, invoices, quotes, and credit notes.
3) Related records. You can now create a credit note based on an invoice (it will pre-populate the values for you to amend), and related items are linked to each other. For example, if you create a credit note based on an invoice, a link to the credit note will appear at the top of the invoice editor for that invoice (and a link to the invoice will appear on the credit note editor). The same applies to invoices generated from a quote, so you can link backwards and forwards between the quote and the invoice(s).
4) nBill Extension Upgrades. nBill extensions can now be upgraded by simply installing the new version over the top of the old one without needing to uninstall first.
There are also some nice little enhancements like:
1) Row highlighting. On lists in the back end, the rows are highlighted when you hover the mouse over them, and if you check a box next to an item, that row is highlighted in a different colour.
2) Tab memory. If you are on a tabbed dialog (eg. the order form editor), when you click 'Apply' on the toolbar, it will remember which tab(s) were selected and take you back where you were.
3) The HTML editor used in the CMS can now be used in nBill (except on form editor or when accessing admin features via front end in its own window, as Joomla does not initialise editors without a template - in those cases, the default nicEdit editor will continue to be used).
Over the next few days I will be publishing some new extensions. One is free (the VAT number checker), the others will be for sale. I haven't yet finalised the pricing or licensing:
1) A VAT number checker control for order forms - which will automatically lookup an EU VAT number on the VIES website to check whether it is valid.
2) An enhanced domain name lookup control for order forms (no need to install a 3rd party component like TPWhois). This will enable you to offer a dropdown list of TLDs, each of which can be associated with a different product so you can charge different amounts for different TLDs. It will also enable ANY TLD to be checked for availability as long as there is a functioning whois server for that TLD (you can add new whois servers to the extension, but there are about 60 supplied for the most common TLDs).
3) For hosting companies, an automation extension for automatically creating new hosting accounts in cPanel(R) when a client signs up using an nBill order form. This will work with WHM/cPanel ONLY (WHM and cPanel are registered trademarks of cPanel inc. which is not affiliated with nBill or Netshine Software Limited in any way).
4) The "pi ?ce de r ?sistance" in terms of nBill extensions is nTicket - a new helpdesk ticketing extension. Those of you who have raised support tickets with me for nBill support over the last few months will have had a preview of this, as I have been 'road testing' it. I intend to develop this extension further to allow the recording of time spent on a ticket and invoice generation, but for now it can be used as a standard helpdesk with the added benefit of supporting pre-requisite products in nBill (so you can optionally require purchase of a support subscription before allowing tickets to be raised). I also intend to develop this into a separate Joomla component independently of nBill.
Here is the full changelog for nBill 2.3.0:
- Fixed potential cross site scripting vulnerability when rendering fields on order forms or in the client profile.
- If a contact is associated with a client but does not have permission to update the client profile, only contact-mapped fields will be displayed when the contact tries to update their profile - thus avoiding an unwanted new client record being created.
- Fixed some problems with repeated text appearing in the language files.
- Fixed a problem loading the print.css stylesheet on invoice preview in Joomla 1.7
- Fixed a problem where if the wrong username/password is used to login to the front-end in Joomla 1.7 it would not always show an error message, just show a blank page.
- Fixed a problem where if no specific default user group had been set (ie. global configuration has not been saved), users were not assigned to any user group in Joomla 1.7
- Fixed logout link in Joomla 1.7 which was generated incorrectly immediately after logging in and therefore only functioned correctly if the user navigated to another page before coming back to the My Account page.
- Logout link is now shown by default on the My Account page (for new installations only, and can be switched on or off in the Display Options)
- Added a check for empty redirect parameters when logging in to prevent unnecessary error messages being e-mailed to the administrator
- Added static keyword to function declarations in front end page files to avoid strict PHP notices
- Fixed problem with entity values not being remembered on postback where an error occurs (eg. mandatory data not supplied) on profile update in the front end
- Added Itemid to payment link on invoice template (if applicable)
- Removed unnecessary closing javascript tag in invoice template
- Fixed link to menu item editor for Joomla 1.7 and above
- Added page suffix to redirect URL when showing thank you message on order forms so that Itemid is preserved (doesn't affect explicit thank you redirects)
- Fixed problem with Joom!Fish database object not being picked up in Joomla 1.5 if the user subscription plugin is enabled.
- When adding ledger codes to income or expenditure records, it no longer warns you about the totals not matching - the warning will only happen when you save or apply.
- Fixed javascript error when switching vendors in invoice list
- Fixed problem with email message when sending invoice as attachment and using a multibyte character set
- Invoice list now respects date range when showing unpaid invoices only
- Company name can now be edited in client profile
- Editor used in CMS can now be used in nBill (except on form editor or when accessing admin features via front end in its own window, as Joomla does not initialise editors without a template)
- New option to only create order records for a quote if the item has a recurring payment frequency (this option is also now selected by default for new quotes)
- Restored extension_form_events table which would have been missing on some installs of 2.2.0
- HTML attributes on client profile fields are no longer implemented in the back end, allowing administrators to amend data even if the field is marked as disabled
- When a primary contact is removed from a client or deleted, another contact is now made the primary (if there are any others)
- Added highlight to table rows in back end when hovered over or selected
- Fixed problem with calculating age of relational records when determining which records to delete for housekeeping feature
- All dependent records are now also updated or deleted as applicable when old records are cleared down with the housekeeping feature (was leaving a few orphan records behind in some cases)
- Quote request thank you message no longer requires login, and shows any warning messages above the thank you
- Username is now shown on quote e-mail templates, if known
- Now asks for confirmation before rejecting a quote if you don't select any items to accept but click on confirm
- New setting for allowing redirect on quote acceptance instead of just showing a generic thank you message
- If an administrator updates a contact name it now also updates the user record
- Fixed problem with client import where it failed to recognise an existing client with the same e-mail address
- If a user is associated with a Supplier as well as a Client, the supplier record is now ignored when placing an order
- If a user's session expires and they are no longer logged in, nBill will now deliberately forget which client they are (avoids allowing forms to be submitted without mandatory data)
- New display option added to allow quotes to be accepted or rejected without the client needing to login
- Show on summary option set on client profile fields is now respected by form editor when creating new forms
- Next and Previous buttons on order summary page now appear higher up the page, directly under the summary table
- When visiting the component in the front end without specifying an action, if there are no order forms or quote request forms, it will now show a login box instead of an error message
- Admin via front end now allows for website template to be loaded as originally intended
- Tabs on form editor are now disabled until the content has had time to load (to avoid javascript errors) - maximum delay is 5 seconds
- On pages with tabbed dialogs, the selected tab is now remembered when the the Apply toolbar button is clicked
- Where a client or supplier does not have an associated contact record, it is no longer shown with empty brackets following the entity name
- Next due date is now shown on the order list in the back end
- Backups taken with previous versions of nBill can now be restored (as long as the current version is able to upgrade the database from that version to the current version)
- Improved sanitisation of file names when allowing end users to upload files
- New 'supporting documents' feature - allowing files to be uploaded, organised, and attached to different nBill records
- Supporting Documents added to housekeeping feature so that old files can be cleared down easily
- Fixed a bug affecting orders and invoices where the vendor ID for an existing document is changed, but the change was not being reflected on the document items
- Fixed a problem where an error message was generated when creating new records in a multi-vendor environment without selecting a vendor first
- Fixed an erroneous result when testing for equality between 2 version numbers which are in fact equal
- Fixed error in path to images for calendar control on My Quotes page
- If a payment gateway is uninstalled, it can now still be 'remembered' as a payment method for past payments (but will only show up if the gateway is re-installed at a later date)
- Fixed transparency issues for icons on the invoice list in the back end
- Extensions can now include files in sub folders that don't already exist
- Client editor will now redirect to supplier editor if a supplier ID is passed in
- Quotes and Credit Notes can now contain tax abbreviation information
- Check for registered email address now only carried out if an attempt is made by the client to change the contact email (not on every update of the profile)
- Gaps in extension menu item ordering are now closed so that all extension menu items can be displayed correctly
- Cross reference loader will now load custom language files for nBill extensions
- Fixed a problem with remote http requests using sockets
- Fixed a bug with validation routines built-in to form field controls when updating client profile
- Modified error handlers so that error messages are only e-mailed to admin if the same error has not already occurred within the last minute (prevents multiple messages about the same error occurring within a loop)
- Updated nBill extension installer so that extensions can now be upgraded just by re-installing rather than having to uninstall first (also no longer rolls back database table creation on failure in case the extension is being upgraded so as to avoid the risk of data loss)
- Added better support for custom controls (allowing values to be registered based on a calculation rather than directly lifted from the posted values, and for a different value to be returned when checking for product assignment than for other purposes)
- Removed valign="top" from all front end pages (if vertical alignment is required it should be done using CSS)
- Added support for front-end links for nBill extensions
- Added support for copying quote request forms, products, invoices, credit notes, and quotes
- It is now possible to save line items on invoices, quotes, and credit notes without first selecting a client or entering a billing name
- You can now create a credit note based on an invoice, with the details pre-populated (enabling you to quickly refund an invoice) - this also automatically marks the invoice as refunded (or partially refunded if applicable) and records the link between the 2 records so you can quickly jump between them
- Where an invoice was generated from a quote, there is now a link to the related quote at the top of the invoice editor (and a link to the invoice(s) at the top of the quote editor)
- Link to client from quote list now correctly identifies whether the client is a potential client or a live one
- Fixed problem with date range display option for My Quotes page not being respected
- Fixed a problem with clients being invoiced twice for an item where mixed payment frequencies appear on the same quote and client selects to pay offline
- If a quote is awaiting payment and an administrator changes the status back to new or quoted, it no longer continues to be marked as awaiting payment
- Where default values are added to mandatory fields in the form editor, the next/previous buttons as well as any further fields on the same x co-ordinate as a summary control are moved down accordingly if close gaps is set to yes on that page
- Fixed a missing reference to the default value of a core profile field when submitting a quote request form
- Client dropdown now uses contact name if no company name present rather than just 'Client x' (unless there is more than one entry which would result in ambiguity)
- Client tabs on My Profile now also use contact name if no company name present and there is no ambiguity
- Corrected redirect link when client changes their username on My Profile - now preserves Itemid
- Information and warning messages are now shown on the main My Account page if applicable (they were previously being overwritten unnecessarily on that page)