diff --git a/class/actions_priseo.class.php b/class/actions_priseo.class.php new file mode 100644 index 0000000..109fdfe --- /dev/null +++ b/class/actions_priseo.class.php @@ -0,0 +1,110 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file class/actions_priseo.class.php + * \ingroup priseo + * \brief Priseo hook overload + */ + +// Load Dolibarr librairies +require_once DOL_DOCUMENT_ROOT . '/product/class/productbatch.class.php'; + +// Load Saturne libraries +require_once DOL_DOCUMENT_ROOT . '/custom/saturne/lib/object.lib.php'; + +require_once 'competitorprice.class.php'; + +/** + * Class ActionsPriseo + */ +class ActionsPriseo { + /** + * @var DoliDB Database handler + */ + public $db; + + /** + * @var string Error string + */ + public $error; + + /** + * @var string[] Array of error strings + */ + public $errors = []; + + /** + * @var array Hook results. Propagated to $hookmanager->resArray for later reuse + */ + public $results = []; + + /** + * @var string String displayed by executeHook() immediately after return + */ + public $resprints; + + /** + * @var string Module name + */ + public $moduleName = 'Priseo'; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + $this->db = $db; + } + + /** + * Overloading the printCommonFooter function : replacing the parent's function with the one below + * + * @param array $parameters Hook metadatas (context, etc...) + * @return int < 0 on error, 0 on success, 1 to replace standard code + */ + public function printCommonFooter($parameters) + { + global $db, $object; + + if ($parameters['currentcontext'] == 'productpricecard') { + $Priseo = new CompetitorPrice($db); + + $prices = $Priseo->fetchAll('DESC','amount_ht',0,0, ['customsql' => 't.status >= ' . $Priseo::STATUS_DRAFT . ' AND t.fk_product = ' . $object->id]); + if (is_array($prices) && !empty($prices)) { + $maxPrices = array_shift($prices); + $minPrices = end($prices); + + $out = ''; + $out .= $this->moduleName . ' (' . $object->date_creation . ') '; + $out .= $object->price < $minPrices->amount_ht ? price($object->price, 0, '', 1, -1, -1, 'auto') : price($minPrices->amount_ht, 0, '', 1, -1, -1, 'auto'); + $out .= ' <= ' . price($object->price, 0, '', 1, -1, -1, 'auto') . ' <= '; + $out .= $maxPrices->amount_ht < $object->price ? price($object->price, 0, '', 1, -1, -1, 'auto') : price($maxPrices->amount_ht, 0, '', 1, -1, -1, 'auto'); + $out .= ''; + ?> + + [], // Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context to 'all' 'hooks' => [ + 'productpricecard' // 'data' => array( // 'hookcontext1', // 'hookcontext2',