diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php
index 7cf7b372a53..376745c3d55 100644
--- a/htdocs/comm/card.php
+++ b/htdocs/comm/card.php
@@ -964,16 +964,19 @@ if ($id > 0)
$sql.= ', f.tva as total_tva';
$sql.= ', f.total_ttc';
$sql.= ', f.datec as dc';
- $sql.= ', f.status as status';
+ $sql.= ', f.date_last_gen';
+ $sql.= ', f.frequency';
+ $sql.= ', f.unit_frequency';
+ $sql.= ', f.suspended as suspended';
$sql.= ', s.nom, s.rowid as socid';
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture_rec as f";
$sql.= " WHERE f.fk_soc = s.rowid AND s.rowid = ".$object->id;
$sql.= " AND f.entity = ".$conf->entity;
$sql.= ' GROUP BY f.rowid, f.titre, f.amount, f.total, f.tva, f.total_ttc,';
- $sql.= ' f.datec,';
- $sql.= ' f.status,';
+ $sql.= ' f.date_last_gen, f.datec, f.frequency, f.unit_frequency,';
+ $sql.= ' f.suspended,';
$sql.= ' s.nom, s.rowid';
- $sql.= " ORDER BY f.datec DESC";
+ $sql.= " ORDER BY f.date_last_gen, f.datec DESC";
$resql=$db->query($sql);
if ($resql)
@@ -999,19 +1002,28 @@ if ($id > 0)
print '
';
$invoicetemplate->id = $objp->id;
$invoicetemplate->ref = $objp->ref;
- $invoicetemplate->statut = $objp->status;
+ $invoicetemplate->suspended = $objp->suspended;
+ $invoicetemplate->frequency = $objp->frequency;
+ $invoicetemplate->unit_frequency = $objp->unit_frequency;
$invoicetemplate->total_ht = $objp->total_ht;
$invoicetemplate->total_tva = $objp->total_tva;
$invoicetemplate->total_ttc = $objp->total_ttc;
print $invoicetemplate->getNomUrl(1);
print ' | ';
- if ($objp->dc > 0)
+ if ($objp->frequency && $objp->date_last_gen > 0)
{
- print ''.dol_print_date($db->jdate($objp->dc),'day').' | ';
+ print ''.dol_print_date($db->jdate($objp->date_last_gen),'day').' | ';
}
else
{
- print '!!! | ';
+ if ($objp->dc > 0)
+ {
+ print ''.dol_print_date($db->jdate($objp->dc),'day').' | ';
+ }
+ else
+ {
+ print '!!! | ';
+ }
}
print '';
print price($objp->total_ht);
@@ -1025,7 +1037,8 @@ if ($id > 0)
}
print ' | ';
- print ($invoicetemplate->LibStatut(0,$invoicetemplate->statut,5,0));
+ print $langs->trans('FrequencyPer_'.$invoicetemplate->unit_frequency, $invoicetemplate->frequency).' - ';
+ print ($invoicetemplate->LibStatut($invoicetemplate->frequency,$invoicetemplate->suspended,5,0));
print ' | ';
print "\n";
$i++;
diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php
index f6c2fe7ef2e..e4c1a7d4280 100644
--- a/htdocs/compta/facture/class/facture-rec.class.php
+++ b/htdocs/compta/facture/class/facture-rec.class.php
@@ -248,7 +248,7 @@ class FactureRec extends CommonInvoice
*/
function fetch($rowid, $ref='', $ref_ext='', $ref_int='')
{
- $sql = 'SELECT f.rowid, f.entity, f.titre, f.status, f.fk_soc, f.amount, f.tva, f.localtax1, f.localtax2, f.total, f.total_ttc';
+ $sql = 'SELECT f.rowid, f.entity, f.titre, f.suspended, f.fk_soc, f.amount, f.tva, f.localtax1, f.localtax2, f.total, f.total_ttc';
$sql.= ', f.remise_percent, f.remise_absolue, f.remise';
$sql.= ', f.date_lim_reglement as dlr';
$sql.= ', f.note_private, f.note_public, f.fk_user_author';
@@ -281,7 +281,7 @@ class FactureRec extends CommonInvoice
$this->titre = $obj->titre;
$this->ref = $obj->titre;
$this->ref_client = $obj->ref_client;
- $this->statut = $obj->status;
+ $this->suspended = $obj->suspended;
$this->type = $obj->type;
$this->datep = $obj->dp;
$this->date = $obj->df;
@@ -879,6 +879,7 @@ class FactureRec extends CommonInvoice
$facture->brouillon = 1;
$facture->date = $facturerec->date_when; // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later.
$facture->socid = $facturerec->socid;
+ $facture->suspended = 0;
$invoiceidgenerated = $facture->create($user);
if ($invoiceidgenerated <= 0)
@@ -956,57 +957,93 @@ class FactureRec extends CommonInvoice
return $result;
}
+ /**
+ * Return label of object status
+ *
+ * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=short label + picto, 6=Long label + picto
+ * @param integer $alreadypaid Not used
+ * @return string Label
+ */
+ function getLibStatut($mode=0,$alreadypaid=-1)
+ {
+ return $this->LibStatut($this->frequency?1:0, $this->suspended, $mode, $alreadypaid, $this->type);
+ }
+
/**
* Renvoi le libelle d'un statut donne
*
- * @param int $paye Status field paye
- * @param int $status Id status
+ * @param int $recur Is it a recurring invoice ?
+ * @param int $status Id status (suspended or not)
* @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=short label + picto, 6=long label + picto
- * @param integer $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise)
+ * @param int $alreadypaid Not used
* @param int $type Type invoice
* @return string Libelle du statut
*/
- function LibStatut($paye,$status,$mode=0,$alreadypaid=-1,$type=0)
+ function LibStatut($recur,$status,$mode=0,$alreadypaid=-1,$type=0)
{
global $langs;
$langs->load('bills');
- //print "$paye,$status,$mode,$alreadypaid,$type";
+ //print "$recur,$status,$mode,$alreadypaid,$type";
if ($mode == 0)
{
$prefix='';
- if ($type == -1) return $langs->trans('Suspended'); // credit note
- else return $langs->trans('Active');
+ if ($recur)
+ {
+ if ($status == 1) return $langs->trans('Suspended'); // credit note
+ else return $langs->trans('Active');
+ }
+ else return $langs->trans("Draft");
}
if ($mode == 1)
{
$prefix='Short';
- if ($status == -1) return $langs->trans('Suspended');
- else return $langs->trans('Active');
+ if ($recur)
+ {
+ if ($status == 1) return $langs->trans('Suspended');
+ else return $langs->trans('Active');
+ }
+ else return $langs->trans("Draft");
}
if ($mode == 2)
{
- if ($status == -1) return img_picto($langs->trans('Suspended'),'statut6').' '.$langs->trans('Suspended');
- else return img_picto($langs->trans('Active'),'statut4').' '.$langs->trans('Active');
+ if ($recur)
+ {
+ if ($status == 1) return img_picto($langs->trans('Suspended'),'statut6').' '.$langs->trans('Suspended');
+ else return img_picto($langs->trans('Active'),'statut4').' '.$langs->trans('Active');
+ }
+ else return img_picto($langs->trans('Draft'),'statut0').' '.$langs->trans('Draft');
}
if ($mode == 3)
{
- $prefix='Short';
- if ($type == -1) return img_picto($langs->trans('Suspended'),'statut6');
- else return img_picto($langs->trans('Active'),'statut4');
+ if ($recur)
+ {
+ $prefix='Short';
+ if ($status == 1) return img_picto($langs->trans('Suspended'),'statut6');
+ else return img_picto($langs->trans('Active'),'statut4');
+ }
+ else return img_picto($langs->trans('Draft'),'statut0');
}
if ($mode == 4)
{
$prefix='';
- if ($type == -1) return img_picto($langs->trans('Suspended'),'statut6').' '.$langs->trans('Suspended');
- else return img_picto($langs->trans('Active'),'statut4').' '.$langs->trans('Active');
+ if ($recur)
+ {
+ if ($type == 1) return img_picto($langs->trans('Suspended'),'statut6').' '.$langs->trans('Suspended');
+ else return img_picto($langs->trans('Active'),'statut4').' '.$langs->trans('Active');
+ }
+ else return img_picto($langs->trans('Draft'),'statut0').' '.$langs->trans('Draft');
}
if ($mode == 5 || $mode == 6)
{
$prefix='';
if ($mode == 5) $prefix='Short';
- if ($type == -1) return ''.$langs->trans('Suspended').' '.img_picto($langs->trans('Suspended'),'statut6');
- else return ''.$langs->trans('Active').' '.img_picto($langs->trans('Active'),'statut4');
+ if ($recur)
+ {
+ if ($status == 1) return ''.$langs->trans('Suspended').' '.img_picto($langs->trans('Suspended'),'statut6');
+ else return ''.$langs->trans('Active').' '.img_picto($langs->trans('Active'),'statut4');
+ }
+ else return $langs->trans('Draft').' '.img_picto($langs->trans('Active'),'statut0');
}
}
diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php
index 5c1d33e7808..9c95d25ceaa 100644
--- a/htdocs/compta/facture/fiche-rec.php
+++ b/htdocs/compta/facture/fiche-rec.php
@@ -121,7 +121,8 @@ $arrayfields=array(
'f.nb_gen_done'=>array('label'=>$langs->trans("NbOfGenerationDone"), 'checked'=>1),
'f.date_last_gen'=>array('label'=>$langs->trans("DateLastGeneration"), 'checked'=>1),
'f.date_when'=>array('label'=>$langs->trans("NextDateToExecution"), 'checked'=>1),
- 'f.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500),
+ 'status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>100),
+ 'f.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500),
'f.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500),
);
// Extra fields
@@ -934,6 +935,7 @@ $form = new Form($db);
$formother = new FormOther($db);
if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
$companystatic = new Societe($db);
+$invoicerectmp = new FactureRec($db);
$now = dol_now();
$tmparray=dol_getdate($now);
@@ -1409,7 +1411,7 @@ else
{
if ($object->frequency > 0)
{
- print $langs->trans('FrequencyPer_'.$object->unit_frequency, $object->frequency);
+ print $langs->trans('FrequencyPer_'.$object->unit_frequency, $object->frequency);
}
else
{
@@ -1617,7 +1619,7 @@ else
/*
* List mode
*/
- $sql = "SELECT s.nom as name, s.rowid as socid, f.rowid as facid, f.titre, f.total, f.tva as total_vat, f.total_ttc, f.frequency,";
+ $sql = "SELECT s.nom as name, s.rowid as socid, f.rowid as facid, f.titre, f.total, f.tva as total_vat, f.total_ttc, f.frequency, f.unit_frequency,";
$sql.= " f.nb_gen_done, f.nb_gen_max, f.date_last_gen, f.date_when,";
$sql.= " f.datec, f.tms";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture_rec as f";
@@ -1625,7 +1627,7 @@ else
$sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
}
$sql.= " WHERE f.fk_soc = s.rowid";
- $sql.= " AND f.entity = ".$conf->entity;
+ $sql.= ' AND f.entity IN ('.getEntity('facture').')';
if (! $user->rights->societe->client->voir && ! $socid) {
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
}
@@ -1837,6 +1839,12 @@ else
print '';
print ' | ';
}
+ // Status
+ if (! empty($arrayfields['status']['checked']))
+ {
+ print '';
+ print ' | ';
+ }
// Action column
print '';
$searchpicto=$form->showFilterAndCheckAddButtons(0, 'checkforselect', 1);
@@ -1855,8 +1863,9 @@ else
if (! empty($arrayfields['f.nb_gen_done']['checked'])) print_liste_field_titre($arrayfields['f.nb_gen_done']['label'],$_SERVER['PHP_SELF'],"f.nb_gen_done","",$param,'align="center"',$sortfield,$sortorder);
if (! empty($arrayfields['f.date_last_gen']['checked'])) print_liste_field_titre($arrayfields['f.date_last_gen']['label'],$_SERVER['PHP_SELF'],"f.date_last_gen","",$param,'align="center"',$sortfield,$sortorder);
if (! empty($arrayfields['f.date_when']['checked'])) print_liste_field_titre($arrayfields['f.date_when']['label'],$_SERVER['PHP_SELF'],"f.date_when","",$param,'align="center"',$sortfield,$sortorder);
- if (! empty($arrayfields['f.datec']['checked'])) print_liste_field_titre($arrayfields['f.datec']['label'],$_SERVER['PHP_SELF'],"f.date_when","",$param,'align="center"',$sortfield,$sortorder);
- if (! empty($arrayfields['f.tms']['checked'])) print_liste_field_titre($arrayfields['f.tms']['label'],$_SERVER['PHP_SELF'],"f.date_when","",$param,'align="center"',$sortfield,$sortorder);
+ if (! empty($arrayfields['f.datec']['checked'])) print_liste_field_titre($arrayfields['f.datec']['label'],$_SERVER['PHP_SELF'],"f.datec","",$param,'align="center"',$sortfield,$sortorder);
+ if (! empty($arrayfields['f.tms']['checked'])) print_liste_field_titre($arrayfields['f.tms']['label'],$_SERVER['PHP_SELF'],"f.tms","",$param,'align="center"',$sortfield,$sortorder);
+ if (! empty($arrayfields['status']['checked'])) print_liste_field_titre($arrayfields['status']['label'],$_SERVER['PHP_SELF'],"","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n";
print "\n";
@@ -1871,6 +1880,11 @@ else
$companystatic->id=$objp->socid;
$companystatic->name=$objp->name;
+ $invoicerectmp->id=$objp->id;
+ $invoicerectmp->frequency=$objp->frequency;
+ $invoicerectmp->suspend=$objp->suspend;
+ $invoicerectmp->unit_frequency=$objp->unit_frequency;
+
print ' | ';
if (! empty($arrayfields['f.titre']['checked']))
@@ -1928,6 +1942,12 @@ else
print dol_print_date($db->jdate($objp->tms),'dayhour');
print '';
}
+ if (! empty($arrayfields['status']['checked']))
+ {
+ print '| ';
+ print $invoicerectmp->getLibStatut(3,0);
+ print ' | ';
+ }
// Action column
print '';
if ($user->rights->facture->creer)
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index f5049ab8482..99ad792c217 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -1347,6 +1347,11 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
if ($object->statut==0) $morehtmlstatus.=$object->getLibStatut(2);
else $morehtmlstatus.=$object->getLibStatut(4);
}
+ elseif ($object->element == 'facturerec')
+ {
+ if ($object->frequency==0) $morehtmlstatus.=$object->getLibStatut(2);
+ else $morehtmlstatus.=$object->getLibStatut(4);
+ }
else { // Generic case
$tmptxt=$object->getLibStatut(6);
if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5);
diff --git a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql
index 0b67bf4b369..419681c28ec 100644
--- a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql
+++ b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql
@@ -38,7 +38,8 @@ ALTER TABLE llx_website_page ADD COLUMN fk_user_modif integer;
-- For 7.0
-ALTER TABLE llx_facture_rec ADD COLUMN status integer DEFAULT 1;
+ALTER TABLE llx_facture_rec ADD COLUMN suspended integer DEFAULT 0;
+
UPDATE llx_c_email_templates SET position = 0 WHERE position IS NULL;
diff --git a/htdocs/install/mysql/tables/llx_facture_rec.sql b/htdocs/install/mysql/tables/llx_facture_rec.sql
index 9258634a1de..1a0c08ca334 100644
--- a/htdocs/install/mysql/tables/llx_facture_rec.sql
+++ b/htdocs/install/mysql/tables/llx_facture_rec.sql
@@ -28,7 +28,7 @@ create table llx_facture_rec
datec datetime, -- date de creation
tms timestamp, -- date creation/modification
- status integer DEFAULT 1, -- 1=active, 0=suspended
+ suspended integer DEFAULT 0, -- 1=suspended
amount double(24,8) DEFAULT 0 NOT NULL,
remise real DEFAULT 0,
|