Extraprice
Presentation
Extraprice is a module for calculating the prices of a product based on a set of customizable parameters and a calculation formula
Installation Prerequisites
The Extraprice module works with Dolibarr from version 3.5.x and a minimum php version of 5.3.
It is installed like any Dolibarr module by unzipping the zip file into the /htdocs/custom folder.
Preamble – Before you begin
Before starting to create an Extraprice formula, you should have some knowledge of PHP and be familiar with Dolibarr's table structure. If you don't have this type of expertise, you can contact us on our website ([www.patas-monkey.fr](http://www.patas-monkey.fr/)) so that we can offer you a service to integrate this module according to your specifications.
Configuration of the Extraprice module
The configuration of the Extraprice module is done from the administration screen accessible from the list of modules.
La première zone de saisie permet de paramétrer la formule de calcul qui sera utilisée pour déterminer les prix de vente unitaires.
Autre fonctionnalité du module, il est possible de définir un ou plusieurs produit/service pour saisir la TVA pour les société de transport |}
How dynamic price calculation works
It is not possible in Dolibarr to have a price conditioned by anything other than the quantity of the product sold.
Extraprice allows you to modify the unit sales price when creating the part lines (order, invoice and commercial proposal).
For this, Extraprice uses:
- values present in the various records (customer, product, parts, etc.) - values present in additional fields ("extrafields"), particularly those present on the part lines. - a calculation formula written in PHP in the module's settings.
Note
The premium version of extraprice allows you to add variables to calculation formulas based on customer or product category.
Ex: it is possible to create a discount coefficient per customer category which will be used for the final calculation of the unit sales price. To do this, you must create product categories, assign a value to a variable on the extraprice tab of the category (e.g. $coef=0.55) and then use this in the final calculation.
Entering a calculation formula
Definition of variables that can be used in the extraprice formula.
| $newprice | Price calculated by the formula |
| $origineprice | Original price of the product. NOTE: If the product or service is a free product, this value will be zero (the base price must be entered elsewhere for calculation). |
| $objectvalue | Object containing the additional fields associated with the part line.
Example: To access the value defined in the 'length' field, use the variable $objectvalue['options_allonge'] |
| $product | Object containing the values associated with the product (reference, description, etc.)
Example values:
Note: This object is only present if the price is defined from a product (not a free entry). |
| $mainelement | Object containing the values associated with the document (invoice, order, proposal) |
| $company | Object containing the values associated with the document's company (the invoice recipient) |
| $object | Object containing the values associated with the document line (invoice, order, or proposal) |
| $elementextravalue | Object containing the additional fields associated with the document (invoice, order, proposal) |
| $societeextravalue | Object containing the additional fields associated with the company.
Example: To access a value defined in the "coeff" field, use the variable $societeextravalue['options_coeff'] |
| $productextravalue | Object containing the additional fields associated with the product.
Example: To access a value defined in the "coeff" field, use the variable $productextravalue['options_coeff'] |
| $categsocieteid | Contains the identifier of the company category to which the company belongs. |
| $categproductid | Contains the identifier of the product category to which the product belongs. |
It is possible to create constants by going through Dolibarr's configuration/Miscellaneous. To do this, simply define a variable and its value. The entered value can be retrieved with $conf->global->LA_VARIABLE_DIVERSE.
Example: Determining the price of a product based on the surface area sold
A product has a fixed price per square meter.
We add 2 additional fields (extrafields) named “length” and “width” corresponding to the dimensions of the surface sold.
In this case, the selling price of the product corresponds to the price per m² multiplied by the length and width
For a product at €100 per square meter, if we sell a surface 50 cm long by 25 cm wide, the price will be €12.50 per unit (100 x 0.25 x 0.50)
It is possible to add a specific cutting cost per product depending, for example, on its material: plastic, glass, etc.
In this case, it will be necessary to add an “extrafield” on the product to store the data of the unit cost of the cut which will be added to the unit sales price in the formula.
For a product at €100 per square meter, and a cut at €20, if we sell a surface 50 cm long by 25 cm wide, the price will be €32.50 per unit (20 + 100 x 0.25 x 0.50)
