diff --git a/htdocs/core/boxes/box_factures_fourn.php b/htdocs/core/boxes/box_factures_fourn.php
index 2f31fa61f78..7c90bb69683 100644
--- a/htdocs/core/boxes/box_factures_fourn.php
+++ b/htdocs/core/boxes/box_factures_fourn.php
@@ -93,7 +93,6 @@ class box_factures_fourn extends ModeleBoxes
if ($result)
{
$num = $db->num_rows($result);
- $now=dol_now();
$line = 0;
$l_due_date = $langs->trans('Late').' ('.$langs->trans('DateEcheance').': %s)';
@@ -108,6 +107,8 @@ class box_factures_fourn extends ModeleBoxes
$facturestatic->total_ht = $objp->total_ht;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
+ $facturestatic->date_echeance = $datelimite;
+ $facturestatic->statut = $objp->fk_statut;
$thirdpartytmp->id = $objp->socid;
$thirdpartytmp->name = $objp->name;
$thirdpartytmp->fournisseur = 1;
@@ -115,7 +116,10 @@ class box_factures_fourn extends ModeleBoxes
$thirdpartytmp->logo = $objp->logo;
$late = '';
- if ($objp->paye == 0 && $datelimite && $datelimite < ($now - $conf->facture->fournisseur->warning_delay)) $late=img_warning(sprintf($l_due_date, dol_print_date($datelimite,'day')));
+
+ if ($facturestatic->hasDelay()) {
+ $late=img_warning(sprintf($l_due_date, dol_print_date($datelimite,'day')));
+ }
$this->info_box_contents[$line][] = array(
'td' => 'align="left"',
diff --git a/htdocs/core/boxes/box_factures_fourn_imp.php b/htdocs/core/boxes/box_factures_fourn_imp.php
index ecea4a27fd1..9bf302b2e18 100644
--- a/htdocs/core/boxes/box_factures_fourn_imp.php
+++ b/htdocs/core/boxes/box_factures_fourn_imp.php
@@ -86,11 +86,12 @@ class box_factures_fourn_imp extends ModeleBoxes
if ($result)
{
$num = $db->num_rows($result);
- $now=dol_now();
$line = 0;
$l_due_date = $langs->trans('Late').' ('.$langs->trans('DateEcheance').': %s)';
+ $facturestatic = new FactureFournisseur($db);
+
while ($line < $num)
{
$objp = $db->fetch_object($result);
@@ -99,9 +100,13 @@ class box_factures_fourn_imp extends ModeleBoxes
$thirdpartytmp->name = $objp->name;
$thirdpartytmp->code_client = $objp->code_client;
$thirdpartytmp->logo = $objp->logo;
+ $facturestatic->date_echeance = $datelimite;
+ $facturestatic->statut = $objp->fk_statut;
$late='';
- if ($datelimite && $datelimite < ($now - $conf->facture->fournisseur->warning_delay)) $late=img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day')));
+ if ($facturestatic->hasDelay()) {
+ $late=img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day')));
+ }
$tooltip = $langs->trans('SupplierInvoice') . ': ' . ($objp->ref?$objp->ref:$objp->facid) . '
' . $langs->trans('RefSupplier') . ': ' . $objp->ref_supplier;
$this->info_box_contents[$line][] = array(
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index 1bf286ff5aa..b6b844a2f8c 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -63,7 +63,12 @@ class FactureFournisseur extends CommonInvoice
* @see FactureFournisseur::STATUS_DRAFT, FactureFournisseur::STATUS_VALIDATED, FactureFournisseur::STATUS_PAID, FactureFournisseur::STATUS_ABANDONED
*/
var $statut;
- //! 1 si facture payee COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant)
+
+ /**
+ * Set to 1 if the invoice is completely paid, otherwise is 0
+ * @var int
+ * @deprecated Use statuses stored in self::statut
+ */
var $paye;
var $author;
@@ -1409,7 +1414,7 @@ class FactureFournisseur extends CommonInvoice
{
global $conf, $user, $langs;
- $sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin';
+ $sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin, ff.fk_statut';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as ff';
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= ' WHERE ff.paye=0';
@@ -1430,10 +1435,16 @@ class FactureFournisseur extends CommonInvoice
$response->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=paye:0';
$response->img=img_object($langs->trans("Bills"),"bill");
+ $facturestatic = new FactureFournisseur($this->db);
+
while ($obj=$this->db->fetch_object($resql))
{
$response->nbtodo++;
- if (! empty($obj->datefin) && $this->db->jdate($obj->datefin) < ($now - $conf->facture->fournisseur->warning_delay)) {
+
+ $facturestatic->date_echeance = $this->db->jdate($obj->datefin);
+ $facturestatic->statut = $obj->fk_statut;
+
+ if ($facturestatic->hasDelay()) {
$response->nbtodolate++;
}
}
@@ -1822,6 +1833,24 @@ class FactureFournisseur extends CommonInvoice
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables);
}
+
+ /**
+ * Is the payment of the supplier invoice having a delay?
+ *
+ * @return bool
+ */
+ public function hasDelay()
+ {
+ global $conf;
+
+ $now = dol_now();
+
+ if (!$this->date_echeance) {
+ return false;
+ }
+
+ return ($this->statut == self::STATUS_VALIDATED) && ($this->date_echeance < ($now - $conf->facture->fournisseur->warning_delay));
+ }
}
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 38d11843714..17cbe08d1ee 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1905,7 +1905,9 @@ else
// Due date
print '