Created FactureFournisseur::hasDelay function

This commit is contained in:
Marcos García de La Fuente 2015-09-06 18:47:26 +02:00
parent f1ea19e09b
commit 47e62f2270
6 changed files with 61 additions and 10 deletions

View File

@ -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"',

View File

@ -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) . '<br>' . $langs->trans('RefSupplier') . ': ' . $objp->ref_supplier;
$this->info_box_contents[$line][] = array(

View File

@ -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));
}
}

View File

@ -1905,7 +1905,9 @@ else
// Due date
print '<tr><td>'.$form->editfieldkey("DateMaxPayment",'date_lim_reglement',$object->date_echeance,$object,$form_permission,'datepicker').'</td><td colspan="3">';
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 '</td>';
// Conditions de reglement par defaut

View File

@ -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 "<tr ".$bc[$var].">";
@ -245,7 +248,9 @@ if ($user->rights->fournisseur->facture->lire)
print '<td class="nowrap" align="center">'.dol_print_date($db->jdate($objp->df),'day')."</td>\n";
print '<td class="nowrap" align="center">'.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 "</td>\n";
print '<td>';

View File

@ -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 "<tr ".$bc[$var].">";
@ -342,7 +346,9 @@ if ($resql)
print '<td align="center" class="nowrap">'.dol_print_date($db->jdate($obj->datef),'day').'</td>';
print '<td align="center" class="nowrap">'.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 '</td>';
print '<td>'.dol_trunc($obj->libelle,36).'</td>';
print '<td>';