';
print "\n";
diff --git a/htdocs/discount.class.php b/htdocs/discount.class.php
index f8365ae2aa6..2d2138fc49a 100644
--- a/htdocs/discount.class.php
+++ b/htdocs/discount.class.php
@@ -18,18 +18,17 @@
*/
/**
- \file htdocs/discount.class.php
- \ingroup propal facture commande
- \brief Fichier de la classe de gestion des remises
- \version $Id$
-*/
+ * \file htdocs/discount.class.php
+ * \ingroup propal facture commande
+ * \brief Fichier de la classe de gestion des remises
+ * \version $Id$
+ */
/**
- \class DiscountAbsolute
- \brief Classe permettant la gestion des remises fixes
-*/
-
+ * \class DiscountAbsolute
+ * \brief Classe permettant la gestion des remises fixes
+ */
class DiscountAbsolute
{
var $db;
@@ -145,8 +144,8 @@ class DiscountAbsolute
$sql.= " amount_ht, amount_tva, amount_ttc, tva_tx,";
$sql.= " fk_facture_source";
$sql.= ")";
- $sql.= " VALUES (now(),".$this->fk_soc.",".$user->id.",'".addslashes($this->desc)."',";
- $sql.= " '".$this->amount_ht."','".$this->amount_tva."','".$this->amount_ttc."','".$this->tva_tx."',";
+ $sql.= " VALUES (now(), ".$this->fk_soc.", ".$user->id.", '".addslashes($this->desc)."',";
+ $sql.= " ".$this->amount_ht.", ".$this->amount_tva.", ".$this->amount_ttc.", ".$this->tva_tx.",";
$sql.= " ".($this->fk_facture_source?"'".$this->fk_facture_source."'":"null");
$sql.= ")";
@@ -289,26 +288,34 @@ class DiscountAbsolute
/**
- * \brief Renvoie montant TTC des avoirs en cours disponibles
- * \param fk_soc Filtre sur une societe
+ * \brief Renvoie montant TTC des reductions/avoirs en cours disponibles
+ * \param company Object third party for filter
* \param user Filtre sur un user auteur des remises
* \param filter Filtre autre
- * \return int <0 si ko, montant avoir sinon
+ * \param maxvalue Filter on max value for discount
+ * \return int <0 si ko, montant avoir sinon
*/
- function getAvailableDiscounts($company='', $user='',$filter='')
+ function getAvailableDiscounts($company='', $user='',$filter='', $maxvalue=0)
{
$sql = "SELECT SUM(rc.amount_ttc) as amount";
- $sql.= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc";
+// $sql = "SELECT rc.amount_ttc as amount";
+ $sql.= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc";
$sql.= " WHERE (rc.fk_facture IS NULL AND rc.fk_facture_line IS NULL)"; // Available
if (is_object($company)) $sql.= " AND rc.fk_soc = ".$company->id;
if (is_object($user)) $sql.= " AND rc.fk_user = ".$user->id;
- if ($filter) $sql.=' AND '.$filter;
+ if ($filter) $sql.=' AND '.$filter;
+ if ($maxvalue) $sql.=' AND rc.amount_ttc <= '.price2num($maxvalue);
- dolibarr_syslog("Discount::getAvailableDiscounts sql=".$sql,LOG_DEBUG);
+ dolibarr_syslog("DiscountAbsolute::getAvailableDiscounts sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)
{
$obj = $this->db->fetch_object($resql);
+ //while ($obj)
+ //{
+ //print 'zz'.$obj->amount;
+ //$obj = $this->db->fetch_object($resql);
+ //}
return $obj->amount;
}
return -1;
@@ -325,7 +332,7 @@ class DiscountAbsolute
$sql.= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc';
$sql.= ' WHERE rc.fk_facture = '.$invoice->id;
- dolibarr_syslog("Discount::getSommeCreditNote sql=".$sql,LOG_DEBUG);
+ dolibarr_syslog("DiscountAbsolute::getSommeCreditNote sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)
{
diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php
index 5f226e9497b..fbd49e53189 100644
--- a/htdocs/html.form.class.php
+++ b/htdocs/html.form.class.php
@@ -748,12 +748,14 @@ class Form
/**
- * \brief Retourne la liste déroulante des remises fixes
- * \param selected Id remise fixe pré-sélectionnée
- * \param htmlname Nom champ formulaire
- * \param filter Criteres optionnels de filtre
+ * \brief Retourne la liste déroulante des remises fixes
+ * \param selected Id remise fixe pré-sélectionnée
+ * \param htmlname Nom champ formulaire
+ * \param filter Criteres optionnels de filtre
+ * \param maxvalue Max value for lines that can be selected
+ * \return int Return number of qualifed lines in list
*/
- function select_remises($selected='',$htmlname='remise_id',$filter='',$socid)
+ function select_remises($selected='',$htmlname='remise_id',$filter='',$socid, $maxvalue=0)
{
global $langs,$conf;
@@ -771,6 +773,9 @@ class Form
{
print '';
+ return $qualifiedlines;
}
- else {
+ else
+ {
dolibarr_print_error($this->db);
+ return -1;
}
}
@@ -2256,15 +2267,16 @@ class Form
/**
- * \brief Affiche formulaire de selection de la remise fixe
- * \param page Page
- * \param selected Valeur a appliquer
- * \param htmlname Nom du formulaire select. Si none, non modifiable
- * \param socid
- * \param amount
- * \param filter Filtre
+ * \brief Affiche formulaire de selection de la remise fixe
+ * \param page Page URL where form is shown
+ * \param selected Value pre-selected
+ * \param htmlname Nom du formulaire select. Si none, non modifiable
+ * \param socid Third party id
+ * \param amount Total amount available
+ * \param filter SQL filter on discounts
+ * \param maxvalue Max value for lines that can be selected
*/
- function form_remise_dispo($page, $selected='', $htmlname='remise_id',$socid, $amount, $filter='')
+ function form_remise_dispo($page, $selected='', $htmlname='remise_id',$socid, $amount, $filter='', $maxvalue=0)
{
global $conf,$langs;
if ($htmlname != "none")
@@ -2278,12 +2290,17 @@ class Form
// print $langs->trans("AvailableGlobalDiscounts").': ';
$newfilter='fk_facture IS NULL AND fk_facture_line IS NULL'; // Remises disponibles
if ($filter) $newfilter.=' AND '.$filter;
- print $this->select_remises('',$htmlname,$newfilter,$socid);
+ $nbqualifiedlines=$this->select_remises('',$htmlname,$newfilter,$socid,$maxvalue);
+ print '';
+ print '
';
print '';
}
else
diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php
index e43b04eb3d0..153991c8d6e 100644
--- a/htdocs/lib/functions.lib.php
+++ b/htdocs/lib/functions.lib.php
@@ -1955,14 +1955,14 @@ function vatrate($rate,$addpercent=false,$info_bits=0)
/**
- * \brief Fonction qui retourne un montant mon�taire format� pour visualisation
- * \remarks Fonction utilis�e dans les pdf et les pages html
+ * \brief Fonction qui formate un montant pour visualisation
+ * \remarks Fonction utilisee dans les pdf et les pages html
* \param amount Montant a formater
- * \param html Formatage html ou pas (0 par defaut)
+ * \param html Type de formatage, html ou pas (par defaut)
* \param outlangs Objet langs pour formatage text
- * \param trunc 1=Tronque affichage si trop de d�cimales,0=Force le non troncage
+ * \param trunc 1=Tronque affichage si trop de decimales,0=Force le non troncage
* \param nbdecimal Nbre decimals minimum.
- * \return string Chaine avec montant format�
+ * \return string Chaine avec montant formate
* \seealso price2num Fonction inverse de price
*/
function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
@@ -2021,7 +2021,7 @@ function price($amount, $html=0, $outlangs='', $trunc=1, $nbdecimal=2)
* \remarks Fonction a appeler sur montants saisis avant un insert en base
* \param amount Montant a formater
* \param rounding 'MU'=Round to Max unit price (MAIN_MAX_DECIMALS_UNIT)
- * 'MT'=Round to Max with Tax (MAIN_MAX_DECIMALS_TOT)
+ * 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT)
* 'MS'=Round to Max Shown (MAIN_MAX_DECIMALS_SHOWN)
* ''=No rounding
* \return string Montant au format num�rique PHP et SQL (Exemple: '99.99999')
diff --git a/htdocs/societe.class.php b/htdocs/societe.class.php
index a44d521a01c..a6de7b8718d 100644
--- a/htdocs/societe.class.php
+++ b/htdocs/societe.class.php
@@ -1024,17 +1024,18 @@ class Societe extends CommonObject
/**
- * \brief Renvoie montant TTC des avoirs en cours disponibles de la societe
+ * \brief Renvoie montant TTC des reductions/avoirs en cours disponibles de la societe
* \param user Filtre sur un user auteur des remises
* \param filter Filtre autre
+ * \param maxvalue Filter on max value for discount
* \return int <0 if KO, Credit note amount otherwise
*/
- function getAvailableDiscounts($user='',$filter='')
+ function getAvailableDiscounts($user='',$filter='',$maxvalue=0)
{
require_once(DOL_DOCUMENT_ROOT.'/discount.class.php');
$discountstatic=new DiscountAbsolute($this->db);
- $result=$discountstatic->getAvailableDiscounts($this,$user,$filter);
+ $result=$discountstatic->getAvailableDiscounts($this,$user,$filter,$maxvalue);
if ($result >= 0)
{
return $result;
@@ -1046,6 +1047,13 @@ class Societe extends CommonObject
}
}
+
+ /**
+ * Enter description here...
+ *
+ * @param unknown_type $price_level
+ * @param unknown_type $user
+ */
function set_price_level($price_level, $user)
{
if ($this->id)