03-29-2019 10:46 AM
Great news, we got a new UCRM beta version for you.
We are happy to announce a new UCRM version with many new features and upgrades, which many of them comes from your feedback, your feature requests, and discussions in this community forum. Thanks a lot!
Use the in-app update button to switch to this beta version. (If you want to switch from the stable branch to the beta branch, go to System > Tools > Update)
- 2 months period are now enabled for Service Plans.
- Image thumbnails are now available for ticket attachments (supported formats are jpeg, png and gif).
- Editing of paid invoices or proformas is now enabled. All invoice attributes can be edited except the invoice items.
- PDF of Invoices and Proforma invoices can be now included in the UCRM backup file. Note that this can increase the backup file size significantly. UCRM can always recreate a missing PDF but the current client's and organization's attributes are used as well as the current invoice template.
- Better Google Calendar sync of the scheduling jobs. The job's GPS and other attributes (e.g. description, job's tasks) are now pushed to the user's calendar event.
- Client's custom attributes can be now configured as hidden from the client zone. You can use these attributes for sensitive data or technical data used by API or plugins.
- Automatic invoicing can be now turned ON/OFF in System > Billing.
- As an administrator you can create a new online payment on behalf of your client directly from the admin zone (you don't need to log in "as client" to the client zone).
- Admins without permission to view scheduling are now not included in the scheduling timeline.
- Improved logging of payment subscription errors.
- UI/UX Improvements and minor fixes (e.g. time zone of the system time shown on the dashboard, better invoicing preview when creating a new service).
- New "pay total amount" button added to the Client Zone, useful for clients having more than one unpaid invoice.
- "Suspension postpone" button added to the Client Zone. Besides the postponing enabled on the walled garden page, the postponing on the client profile page in the Client Zone can be used.
- Better UX for the payment subscription window. Clients now get all the info needed before they create a subscription. E.g. (whether the previous invoice is already paid or not and when is the next invoicing day)
- For plugin developers: now, it's possible to configure plugin's scripts hooked to common plugin actions - for plugin install, update, configure, enable, disable, remove.
- Plugins with incompatible max version are disabled automatically.
- Now, you can edit all the service's parameters using a single form. (also for already invoiced services)
- In-app guide helping WISP migrate UCRM to UNMS (will be enabled when UNMS v1.0 is released).
- Invoice number is not requested now when editing an invoice draft. It is automatically added when the draft is approved.
- The regenerate invoice PDF button now using the current client's and organization's data (like names, addresses, custom attributes) for recreating a new invoice. Same for quotes or proforma invoices.
- Changing of period length on service is not enabled to avoid invoicing issues of the given service.
- Fixed issues with tickets loaded for some IMAP emails in rare formats.
- Minor API fixes.
Full changelog here:
Note that this is the version, from which you will be able to upgrade to the new UNMS v1 comprising its integrated CRM module. Stay tuned!
|Hit Reply and let us know what do you think
Please let us know what you like or dislike about the latest improvements. Thank you for your feedback!
03-29-2019 01:49 PM
Are the files you need attached universal/global for all Clients?
I only ask, because I have been working on some improvements of my Notifications Plugin to bring some Client notifications in addition to the existing Admin notifications. This could probably be worked into the system.
03-29-2019 02:04 PM - edited 03-29-2019 02:05 PM
@rspaeth No that is not what I am referencing. These are ticket responses to individual clients. I have asked about it here and made a feature request as well and it does not look like they plan to implement this.
03-30-2019 08:08 PM
A couple notes so far regarding the new hooks...
1. The "hook_enable.php", "hook_disable.php" and "hook_configure.php" work exactly as expected and really shouldn't even need any explanation.
2. It might be worth noting in the docs that the "hook_update.php" script is NOT triggered if the version number has not changed in the manifest.json. And while this was easy enough to figure out, its a pain for rapid development/deployment when testing the update hook. This is likely the best solution long-term, but I'm curious then why even through the GUI that you can upload a plugin with the exact same version number and it simply "re-installs" the plugin. Thoughts?
3. I cannot for the life of me get the "hook_install.php" to run. I have not had a chance to dig into the UCRM code, but might there be a bug on this one? I have reverted my "hook_install.php" script down to a simple:
<?php // Output a message to a known good location, even outside of the "installed" plugin directory. file_put_contents("/data/ucrm/data/plugins/test.log", "Installed\n", LOCK_EX | FILE_APPEND);
If it is something I am missing, then maybe the docs should be updated for this one as well.
Other than that, thank you so VERY much for these. I am now able to trigger the composer and npm update commands from within the plugin and keep my package size to a minimum. Currently running these on "hook_enable.php", but I would obviously prefer them in "hook_install.php".
04-01-2019 03:28 PM
So scratch that last post...
I lied about my script, it was also trying to:
which apparently is not in context at the time the hook_install.php script is run.
Using the script above, as is, works perfectly.
To clarify, can I assume this script is run prior to anything else being done with the plugin files? And as such should be considered more of a "hook_before_install.php"? If that is the case, will any conflicts arise if the plugin folder and/or files are created before the actual installation happens?
Please let me know if this is incorrect or unintended.
04-02-2019 03:03 AM
1) We will update the docs regarding the update hook. We could probably introduce some "reinstall" hook if you really needed it, but I think current hooks are able to cover just about everything and this one would probably only help in development.
2) The install hook is working correctly for me, regardless if I use packages from composer or not. Perhaps there could be some problem if you don't yet have composer packages installed? Since you said you're now able to keep package size to minimum the obvious bug would be, that you did not yet run "composer install" and require would crash the hook execution.
Please find attached my test plugin and give that a try, you will see all actions logged on plugin's detail page:
Plugin hook "install" executed at "2019-04-02T09:50:05+00:00". Plugin hook "enable" executed at "2019-04-02T09:50:10+00:00". Plugin hook "disable" executed at "2019-04-02T09:50:13+00:00". Plugin hook "configure" executed at "2019-04-02T09:50:18+00:00". Plugin hook "enable" executed at "2019-04-02T09:50:18+00:00". Plugin hook "update" executed at "2019-04-02T09:50:40+00:00".
04-03-2019 12:13 PM
Sorry it took so long to reply...
The version I was testing already had the bundled vendor/ and composer dependencies, but my bootstrap code must have been throwing an Exception. With just plain PHP, the script works exactly as intended. And as such, can I assume the hook_install.php script is triggered AFTER the actual plugin is installed?
All the hooks work wonderfully. It would still be nice to include a hook for ucrm_update, as I now have some code that does checks on version change to perform tasks that could have likely been overwritten during the UCRM update. As an example...injecting a Twig snippet into the homepage component for a plugin's dashboard widget. Which obviously gets overwritten during an update and then the end-user has to toggle the widget off and back on again in the plugin to re-inject.
04-04-2019 12:14 AM
@rspaeth Yes, it's triggered after. It's already mentioned in the improved docs - https://github.com/Ubiquiti-App/UCRM-plugins/blob/master/docs/file-structure.md