';
print '| ';
@@ -647,7 +650,9 @@ if (($action != 'create' && $action != 'add') || ($action == 'create' && $error)
print ' | ';
print '';
- if (($objp->fk_statut > 0) && ($objp->fk_statut < 3) && $db->jdate($objp->date_valid) < ($now - $conf->commande->client->warning_delay)) print img_picto($langs->trans("Late"),"warning");
+ if ($generic_commande->hasDelay()) {
+ print img_picto($langs->trans("Late"),"warning");
+ }
print ' | ';
print '';
diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php
index 887fc57f089..8c5a2a727b2 100644
--- a/htdocs/compta/bank/class/account.class.php
+++ b/htdocs/compta/bank/class/account.class.php
@@ -1148,6 +1148,10 @@ class AccountLine extends CommonObject
var $ref;
var $datec;
var $dateo;
+
+ /**
+ * Value date
+ */
var $datev;
var $amount;
var $label;
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index a4a3c8a1e83..72583386d80 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -3223,8 +3223,9 @@ else if ($id > 0 || ! empty($ref))
$form->form_date($_SERVER['PHP_SELF'] . '?facid=' . $object->id, $object->date_lim_reglement, 'paymentterm');
} else {
print dol_print_date($object->date_lim_reglement, 'daytext');
- if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == 1 && ! isset($object->am))
+ if ($object->hasDelay()) {
print img_warning($langs->trans('Late'));
+ }
}
} else {
print ' ';
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 2d70166a49f..98afb750fd6 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -3246,11 +3246,15 @@ class Facture extends CommonInvoice
$response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1';
$response->img=img_object($langs->trans("Bills"),"bill");
+ $generic_facture = new Facture($this->db);
+
while ($obj=$this->db->fetch_object($resql))
{
+ $generic_facture->date_lim_reglement = $this->db->jdate($obj->datefin);
+
$response->nbtodo++;
- if ($this->db->jdate($obj->datefin) < ($now - $conf->facture->client->warning_delay)) {
+ if ($generic_facture->hasDelay()) {
$response->nbtodolate++;
}
}
@@ -3707,6 +3711,25 @@ class Facture extends CommonInvoice
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables);
}
+
+ /**
+ * Is the customer invoice delayed?
+ *
+ * @return bool
+ */
+ public function hasDelay()
+ {
+ global $conf;
+
+ $now = dol_now();
+
+ //Paid invoices have status STATUS_CLOSED
+ if (!$this->statut != Facture::STATUS_VALIDATED) {
+ return false;
+ }
+
+ return $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay);
+ }
}
/**
diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index d88f72f171e..6a1e7894701 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -379,6 +379,8 @@ if ($resql)
$facturestatic->id=$objp->facid;
$facturestatic->ref=$objp->facnumber;
$facturestatic->type=$objp->type;
+ $facturestatic->statut = $objp->fk_statut;
+ $facturestatic->date_lim_reglement = $db->jdate($objp->datelimite);
$notetoshow=dol_string_nohtmltag(($user->societe_id>0?$objp->note_public:$objp->note),1);
$paiement = $facturestatic->getSommePaiement();
@@ -418,7 +420,7 @@ if ($resql)
// Date limit
print ' | '.dol_print_date($datelimit,'day');
- if ($datelimit < ($now - $conf->facture->client->warning_delay) && ! $objp->paye && $objp->fk_statut == 1 && ! $paiement)
+ if ($facturestatic->hasDelay())
{
print img_warning($langs->trans('Late'));
}
diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php
index 5acca49d1b1..498d6051f97 100644
--- a/htdocs/compta/facture/mergepdftool.php
+++ b/htdocs/compta/facture/mergepdftool.php
@@ -734,6 +734,8 @@ if ($resql)
$facturestatic->id=$objp->facid;
$facturestatic->ref=$objp->facnumber;
$facturestatic->type=$objp->type;
+ $facturestatic->statut=$objp->fk_statut;
+ $facturestatic->date_lim_reglement= $db->jdate($objp->datelimite);
print '';
@@ -744,7 +746,9 @@ if ($resql)
// Warning picto
print '| ';
- if ($date_limit < ($now - $conf->facture->client->warning_delay) && ! $objp->paye && $objp->fk_statut == 1) print img_warning($langs->trans("Late"));
+ if ($facturestatic->hasDelay()) {
+ print img_warning($langs->trans("Late"));
+ }
print ' | ';
// PDF Picto
diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php
index be78b422fe6..78a93d7da0d 100644
--- a/htdocs/compta/facture/prelevement.php
+++ b/htdocs/compta/facture/prelevement.php
@@ -356,7 +356,9 @@ if ($object->id > 0)
else
{
print dol_print_date($object->date_lim_reglement,'daytext');
- if ($object->date_lim_reglement < ($now - $conf->facture->client->warning_delay) && ! $object->paye && $object->statut == Facture::STATUS_VALIDATED && ! isset($object->am)) print img_warning($langs->trans('Late'));
+ if ($object->hasDelay()) {
+ print img_warning($langs->trans('Late'));
+ }
}
}
else
diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php
index 5fb1d638a88..5b0e8ec288d 100644
--- a/htdocs/compta/index.php
+++ b/htdocs/compta/index.php
@@ -359,11 +359,15 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$facturestatic->total_ht=$obj->total_ht;
$facturestatic->total_tva=$obj->total_tva;
$facturestatic->total_ttc=$obj->total_ttc;
+ $facturestatic->statut = $obj->fk_statut;
+ $facturestatic->date_lim_reglement = $db->jdate($obj->datelimite);
$facturestatic->type=$obj->type;
print $facturestatic->getNomUrl(1,'');
print '';
print '';
- if ($obj->fk_statut == 1 && ! $obj->paye && $db->jdate($obj->datelimite) < ($now - $conf->facture->client->warning_delay)) print img_warning($langs->trans("Late"));
+ if ($facturestatic->hasDelay()) {
+ print img_warning($langs->trans("Late"));
+ }
print ' | ';
print '';
$filename=dol_sanitizeFileName($obj->facnumber);
@@ -801,10 +805,14 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$facturestatic->total_tva=$obj->total_tva;
$facturestatic->total_ttc=$obj->total_ttc;
$facturestatic->type=$obj->type;
+ $facturestatic->statut = $obj->fk_statut;
+ $facturestatic->date_lim_reglement = $db->jdate($obj->datelimite);
print $facturestatic->getNomUrl(1,'');
print ' | ';
print '';
- if ($db->jdate($obj->datelimite) < ($now - $conf->facture->client->warning_delay)) print img_warning($langs->trans("Late"));
+ if ($facturestatic->hasDelay()) {
+ print img_warning($langs->trans("Late"));
+ }
print ' | ';
print '';
$filename=dol_sanitizeFileName($obj->facnumber);
diff --git a/htdocs/compta/paiement/cheque/class/remisecheque.class.php b/htdocs/compta/paiement/cheque/class/remisecheque.class.php
index df401f4c35d..3ed2ad7711c 100644
--- a/htdocs/compta/paiement/cheque/class/remisecheque.class.php
+++ b/htdocs/compta/paiement/cheque/class/remisecheque.class.php
@@ -44,6 +44,13 @@ class RemiseCheque extends CommonObject
var $errno;
public $statut;
+ public $amount;
+ public $date_bordereau;
+ public $account_id;
+ public $account_label;
+ public $author_id;
+ public $nbcheque;
+ public $number;
/**
* Constructor
diff --git a/htdocs/core/boxes/box_factures.php b/htdocs/core/boxes/box_factures.php
index d04c3e48a3b..f50bff34a86 100644
--- a/htdocs/core/boxes/box_factures.php
+++ b/htdocs/core/boxes/box_factures.php
@@ -108,12 +108,18 @@ class box_factures extends ModeleBoxes
$facturestatic->total_ht = $objp->total_ht;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
+ $facturestatic->statut = $objp->fk_statut;
+ $facturestatic->date_lim_reglement = $db->jdate($objp->datelimite);
+
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->code_client = $objp->code_client;
+
$late = '';
- if ($objp->paye == 0 && ($objp->fk_statut != 2 && $objp->fk_statut != 3) && $datelimite < ($now - $conf->facture->client->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.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/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php
index 42e889138cc..63ce986e181 100644
--- a/htdocs/core/boxes/box_factures_imp.php
+++ b/htdocs/core/boxes/box_factures_imp.php
@@ -108,6 +108,8 @@ class box_factures_imp extends ModeleBoxes
$facturestatic->total_ht = $objp->total_ht;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
+ $facturestatic->statut = $objp->fk_statut;
+ $facturestatic->date_lim_reglement = $db->jdate($objp->datelimite);
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->client = 1;
@@ -115,7 +117,9 @@ class box_factures_imp extends ModeleBoxes
$societestatic->logo = $objp->logo;
$late='';
- if ($datelimite < ($now - $conf->facture->client->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/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index 9bd341e357c..5e207f0b4b6 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -72,7 +72,11 @@ class CommandeFournisseur extends CommonOrder
var $date_approve;
var $date_approve2; // Used when SUPPLIER_ORDER_DOUBLE_APPROVAL is set
var $date_commande;
- var $date_livraison; // Date livraison souhaitee
+
+ /**
+ * Delivery date
+ */
+ var $date_livraison;
var $total_ht;
var $total_tva;
var $total_localtax1; // Total Local tax 1
@@ -2292,7 +2296,7 @@ class CommandeFournisseur extends CommonOrder
$resql=$this->db->query($sql);
if ($resql)
{
- $now=dol_now();
+ $commandestatic = new CommandeFournisseur($this->db);
$response = new WorkboardResponse();
$response->warning_delay=$conf->commande->fournisseur->warning_delay/60/60/24;
@@ -2304,8 +2308,11 @@ class CommandeFournisseur extends CommonOrder
{
$response->nbtodo++;
- $date_to_test = empty($obj->delivery_date) ? $obj->datec : $obj->delivery_date;
- if ($obj->fk_statut != 3 && $this->db->jdate($date_to_test) < ($now - $conf->commande->fournisseur->warning_delay)) {
+ $commandestatic->date_livraison = $this->db->jdate($obj->delivery_date);
+ $commandestatic->date_commande = $this->db->jdate($obj->datec);
+ $commandestatic->statut = $obj->fk_statut;
+
+ if ($commandestatic->hasDelay()) {
$response->nbtodolate++;
}
}
@@ -2447,6 +2454,21 @@ class CommandeFournisseur extends CommonOrder
return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables);
}
+
+ /**
+ * Is the supplier order delayed?
+ *
+ * @return bool
+ */
+ public function hasDelay()
+ {
+ global $conf;
+
+ $now = dol_now();
+ $date_to_test = empty($this->date_livraison) ? $this->date_commande : $this->date_livraison;
+
+ return ($this->statut != 3) && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay);
+ }
}
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index 5e24417f618..c82f3c01941 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 6032a7a5036..b0629909ac0 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1905,7 +1905,9 @@ else
// Due date
print ' | | '.$form->editfieldkey("DateMaxPayment",'date_lim_reglement',$object->date_echeance,$object,$form_permission,'datepicker').' | ';
print $form->editfieldval("DateMaxPayment",'date_lim_reglement',$object->date_echeance,$object,$form_permission,'datepicker');
- if ($action != 'editdate_lim_reglement' && $object->statut < FactureFournisseur::STATUS_CLOSED && $object->date_echeance && $object->date_echeance < ($now - $conf->facture->fournisseur->warning_delay)) print img_warning($langs->trans('Late'));
+ if ($action != 'editdate_lim_reglement' && $object->hasDelay()) {
+ print img_warning($langs->trans('Late'));
+ }
print ' | ';
// Conditions de reglement par defaut
diff --git a/htdocs/fourn/facture/impayees.php b/htdocs/fourn/facture/impayees.php
index 83d4b830c5f..dbe235cdebc 100644
--- a/htdocs/fourn/facture/impayees.php
+++ b/htdocs/fourn/facture/impayees.php
@@ -230,6 +230,9 @@ if ($user->rights->fournisseur->facture->lire)
{
$objp = $db->fetch_object($resql);
+ $facturestatic->statut = $objp->fk_statut;
+ $facturestatic->date_echeance = $db->jdate($objp->datelimite);
+
$var=!$var;
print " ";
@@ -245,7 +248,9 @@ if ($user->rights->fournisseur->facture->lire)
print '| '.dol_print_date($db->jdate($objp->df),'day')." | \n";
print ''.dol_print_date($db->jdate($objp->datelimite),'day');
- if ($objp->datelimite && $db->jdate($objp->datelimite) < ($now - $conf->facture->fournisseur->warning_delay) && ! $objp->paye && $objp->fk_statut == 1) print img_warning($langs->trans("Late"));
+ if ($facturestatic->hasDelay()) {
+ print img_warning($langs->trans("Late"));
+ }
print " | \n";
print '';
diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php
index dc8adddec39..f5ed63108a6 100644
--- a/htdocs/fourn/facture/list.php
+++ b/htdocs/fourn/facture/list.php
@@ -323,6 +323,10 @@ if ($resql)
while ($i < min($num,$limit))
{
$obj = $db->fetch_object($resql);
+
+ $facturestatic->date_echeance = $db->jdate($obj->date_echeance);
+ $facturestatic->statut = $obj->fk_statut;
+
$var=!$var;
print " | ";
@@ -342,7 +346,9 @@ if ($resql)
print '| '.dol_print_date($db->jdate($obj->datef),'day').' | ';
print ''.dol_print_date($db->jdate($obj->date_echeance),'day');
- if (($obj->paye == 0) && ($obj->fk_statut > 0) && $obj->date_echeance && $db->jdate($obj->date_echeance) < ($now - $conf->facture->fournisseur->warning_delay)) print img_picto($langs->trans("Late"),"warning");
+ if ($facturestatic->hasDelay()) {
+ print img_picto($langs->trans("Late"),"warning");
+ }
print ' | ';
print ''.dol_trunc($obj->libelle,36).' | ';
print '';
diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php
index 928424b1d8b..4d2382e6eee 100644
--- a/htdocs/societe/societecontact.php
+++ b/htdocs/societe/societecontact.php
@@ -246,6 +246,8 @@ if ($id > 0 || ! empty($ref))
$memberstatic->ref=$objp->rowid;
$memberstatic->lastname=$objp->lastname;
$memberstatic->firstname=$objp->firstname;
+ $memberstatic->statut=$objp->statut;
+ $memberstatic->datefin=$db->jdate($objp->datefin);
$companyname=$objp->company;
@@ -290,7 +292,9 @@ if ($id > 0 || ! empty($ref))
{
print ' | ';
print dol_print_date($datefin,'day');
- if ($datefin < ($now - $conf->adherent->cotisation->warning_delay) && $objp->statut > 0) print " ".img_warning($langs->trans("SubscriptionLate"));
+ if ($memberstatic->hasDelay()) {
+ print " ".img_warning($langs->trans("SubscriptionLate"));
+ }
print ' | ';
}
else
|