* Rounding unit price - line discount before applying quantity
On some systems, the line total price is calculated based on the discount applied on the unit price first, giving a new rounded unit price, and then multiplied by the quantity. Whereas the current way Dolibarr acts is to apply the discount on the subtotal (unit price * quantity).
Using an extra OTHER SETUP constant 'MAIN_ROUND_UNIT_PRICE_BEFORE_QTY', we can choose between the two ways.
* Update price.lib.php
* Update price.lib.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* linking member subscription contribution <-> proposal, order and invoice
This can both be done manually from an existing proposal/order/invoice to a subscription created without creating an invoice. I use this when we sell memberships as part of registration for our membership classes.
The link will also be shown on the invoice that can be created as part of the subscription contribution creation.
These links show up in the json from the API on proposals, orders and invoices. The subscription does not show anything. It is currently unknown if the API can do this link or it will have to be done manually in the GUI.
* Update html.form.class.php
---------
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* Add Massaction Mo List
* add langs en_US
* fix for precommit
* langs
* langs+
* int param
* space
* Update mo_list.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* FIX#33424 Create cronjob security key not posible
FIX Create cronjob security key not posible because constant CRON_DISABLE_KEY_CHANGE does not exist
* Update cron.php
using getDolGlobalInt() is better than using getDolGlobalString because the default value is 0; then the refresh button works fine
* FIX#33424 Create cronjob security key not posible
FIX Create cronjob security key not posible because constant CRON_DISABLE_KEY_CHANGE does not exist
* Update cron.php
using getDolGlobalInt() is better than using getDolGlobalString because the default value is 0; then the refresh button works fine