diff --git a/htdocs/core/class/discount.class.php b/htdocs/core/class/discount.class.php index 3058ceb20ca..2c37973aace 100644 --- a/htdocs/core/class/discount.class.php +++ b/htdocs/core/class/discount.class.php @@ -614,30 +614,44 @@ class DiscountAbsolute extends CommonObject */ public function getAvailableDiscounts($company = null, $user = null, $filter = '', $maxvalue = 0, $discount_type = 0, $multicurrency = 0) { - global $conf; + global $conf, $hookmanager; dol_syslog(get_class($this)."::getAvailableDiscounts discount_type=".$discount_type, LOG_DEBUG); - $sql = "SELECT SUM(rc.amount_ttc) as amount, SUM(rc.multicurrency_amount_ttc) as multicurrency_amount"; - $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc"; - $sql .= " WHERE rc.entity = ".$conf->entity; - $sql .= " AND rc.discount_type=".((int) $discount_type); - if (!empty($discount_type)) { - $sql .= " AND (rc.fk_invoice_supplier IS NULL AND rc.fk_invoice_supplier_line IS NULL)"; // Available from supplier + $parameters = array( + 'company' => $company, + 'user' => $user, + 'filter' => $filter, + 'maxvalue' => $maxvalue, + 'discount_type' => $discount_type, + 'multicurrency' => $multicurrency + ); + + $reshook = $hookmanager->executeHooks('getAvailableDiscounts', $parameters); + if (empty($reshook)) { + $sql = "SELECT SUM(rc.amount_ttc) as amount, SUM(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc"; + $sql .= " WHERE rc.entity = ".$conf->entity; + $sql .= " AND rc.discount_type=".((int) $discount_type); + if (!empty($discount_type)) { + $sql .= " AND (rc.fk_invoice_supplier IS NULL AND rc.fk_invoice_supplier_line IS NULL)"; // Available from supplier + } else { + $sql .= " AND (rc.fk_facture IS NULL AND rc.fk_facture_line IS NULL)"; // Available to customer + } + if (is_object($company)) { + $sql .= " AND rc.fk_soc = ".((int) $company->id); + } + if (is_object($user)) { + $sql .= " AND rc.fk_user = ".((int) $user->id); + } + if ($filter) { + $sql .= " AND (".$filter.")"; + } + if ($maxvalue) { + $sql .= ' AND rc.amount_ttc <= '.((float) price2num($maxvalue)); + } } else { - $sql .= " AND (rc.fk_facture IS NULL AND rc.fk_facture_line IS NULL)"; // Available to customer - } - if (is_object($company)) { - $sql .= " AND rc.fk_soc = ".((int) $company->id); - } - if (is_object($user)) { - $sql .= " AND rc.fk_user = ".((int) $user->id); - } - if ($filter) { - $sql .= " AND (".$filter.")"; - } - if ($maxvalue) { - $sql .= ' AND rc.amount_ttc <= '.((float) price2num($maxvalue)); + $sql = $hookmanager->resArray['sql']; } $resql = $this->db->query($sql);