diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 402c7712679..649c01c3d23 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -240,13 +240,21 @@ if ($_POST["action"] == 'add')
{
$liblignefac=($contrat->lignes[$i]->desc?$contrat->lignes[$i]->desc:$contrat->lignes[$i]->libelle);
+ // Plage de dates
+ $date_start=$contrat->lignes[$i]->date_debut_prevue;
+ if ($contrat->lignes[$i]->date_debut_reel) $date_start=$contrat->lignes[$i]->date_debut_reel;
+ $date_end=$contrat->lignes[$i]->date_fin_prevue;
+ if ($contrat->lignes[$i]->date_fin_reel) $date_end=$contrat->lignes[$i]->date_fin_reel;
+
$result = $facture->addline($facid,
addslashes($liblignefac),
$lines[$i]->subprice,
$lines[$i]->qty,
$lines[$i]->tva_tx,
$lines[$i]->product_id,
- $lines[$i]->remise_percent);
+ $lines[$i]->remise_percent,
+ $date_start,
+ $date_end);
}
}
else
@@ -539,6 +547,33 @@ if ($_GET["action"] == 'pdf')
}
+
+
+/*********************************************************************
+*
+* Fonctions internes
+*
+**********************************************************************/
+function print_date_range($date_start,$date_end)
+{
+ global $langs;
+
+ if ($date_start && $date_end)
+ {
+ print ' ('.$langs->trans("DateFromTo",dolibarr_print_date($date_start),dolibarr_print_date($date_end)).')';
+ }
+ if ($date_start && ! $date_end)
+ {
+ print ' ('.$langs->trans("DateFrom",dolibarr_print_date($date_start)).')';
+ }
+ if (! $date_start && $date_end)
+ {
+ print ' ('.$langs->trans("DateUntil",dolibarr_print_date($date_end)).')';
+ }
+}
+
+
+
llxHeader('',$langs->trans("Bill"),'Facture');
$html = new Form($db);
@@ -939,7 +974,10 @@ if ($_GET["action"] == 'create')
print '
'.$langs->trans("Qty").' | ';
print ''.$langs->trans("Discount").' | ';
+ // Lignes de contrat produits prédéfinis
$sql = "SELECT pt.rowid, pt.subprice, pt.tva_tx, pt.qty, pt.remise_percent, pt.description,";
+ $sql.= " pt.date_ouverture_prevue as date_debut_prevue, pt.date_ouverture as date_debut_reel,";
+ $sql.= " pt.date_fin_validite as date_fin_prevue, pt.date_cloture as date_fin_reel,";
$sql.= " p.label as product, p.ref, p.rowid as prodid";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as pt, ".MAIN_DB_PREFIX."product as p";
$sql.= " WHERE pt.fk_product = p.rowid AND pt.fk_contrat = ".$contrat->id;
@@ -957,6 +995,13 @@ if ($_GET["action"] == 'create')
$var=!$var;
print '| '.img_object($langs->trans(""),"service")." ".$objp->ref."";
print $objp->product?' - '.$objp->product:'';
+ // Plage de dates
+ $date_start=$objp->date_debut_prevue;
+ if ($objp->date_debut_reel) $date_start=$objp->date_debut_reel;
+ $date_end=$objp->date_fin_prevue;
+ if ($objp->date_fin_reel) $date_end=$objp->date_fin_reel;
+ print_date_range($date_start,$date_end);
+
print " | \n";
print '';
print dolibarr_trunc($objp->description,60);
@@ -974,11 +1019,13 @@ if ($_GET["action"] == 'create')
dolibarr_print_error($db);
}
// Lignes de contrat non produits prédéfinis
- $sql = "SELECT pt.rowid, pt.description as product, pt.tva_tx, pt.subprice, pt.qty, pt.remise_percent";
- $sql .= " FROM ".MAIN_DB_PREFIX."contratdet as pt";
- $sql .= " WHERE pt.fk_contrat = ".$contrat->id;
- $sql .= " AND (pt.fk_product = 0 or pt.fk_product is null)";
- $sql .= " ORDER BY pt.rowid ASC";
+ $sql = "SELECT pt.rowid, pt.description as product, pt.tva_tx, pt.subprice, pt.qty, pt.remise_percent,";
+ $sql.= " pt.date_ouverture_prevue as date_debut_prevue, pt.date_ouverture as date_debut_reel,";
+ $sql.= " pt.date_fin_validite as date_fin_prevue, pt.date_cloture as date_fin_reel";
+ $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as pt";
+ $sql.= " WHERE pt.fk_contrat = ".$contrat->id;
+ $sql.= " AND (pt.fk_product = 0 or pt.fk_product is null)";
+ $sql.= " ORDER BY pt.rowid ASC";
$result=$db->query($sql);
if ($result)
@@ -1306,36 +1353,14 @@ else
else print img_object($langs->trans('ShowProduct'),'product');
print ' '.$objp->ref.'';
print ' - '.nl2br(stripslashes($objp->product));
- if ($objp->date_start && $objp->date_end)
- {
- print ' (Du '.dolibarr_print_date($objp->date_start).' au '.dolibarr_print_date($objp->date_end).')';
- }
- if ($objp->date_start && ! $objp->date_end)
- {
- print ' (A partir du '.dolibarr_print_date($objp->date_start).')';
- }
- if (! $objp->date_start && $objp->date_end)
- {
- print " (Jusqu'au ".dolibarr_print_date($objp->date_end).')';
- }
+ print_date_range($objp->date_start,$objp->date_end);
print ($objp->description && $objp->description!=$objp->product)?' '.$objp->description:'';
print ' | ';
}
else
{
print ''.stripslashes(nl2br($objp->description));
- if ($objp->date_start && $objp->date_end)
- {
- print ' (Du '.dolibarr_print_date($objp->date_start).' au '.dolibarr_print_date($objp->date_end).')';
- }
- if ($objp->date_start && ! $objp->date_end)
- {
- print ' (A partir du '.dolibarr_print_date($objp->date_start).')';
- }
- if (! $objp->date_start && $objp->date_end)
- {
- print " (Jusqu'au ".dolibarr_print_date($objp->date_end).')';
- }
+ print_date_range($objp->date_start,$objp->date_end);
print " | \n";
}
print ''.$objp->tva_taux.'% | ';
diff --git a/htdocs/contrat/contrat.class.php b/htdocs/contrat/contrat.class.php
index 702b897c2a5..e8acbf06b23 100644
--- a/htdocs/contrat/contrat.class.php
+++ b/htdocs/contrat/contrat.class.php
@@ -279,8 +279,10 @@ class Contrat
/*
* Lignes contrats liées à un produit
*/
- $sql = "SELECT d.description, p.rowid, p.label, p.description as product_desc, p.ref,";
- $sql.= " d.price_ht, d.tva_tx, d.qty, d.remise_percent, d.subprice";
+ $sql = "SELECT p.rowid, p.label, p.description as product_desc, p.ref,";
+ $sql.= " d.description, d.price_ht, d.tva_tx, d.qty, d.remise_percent, d.subprice,";
+ $sql.= " d.date_ouverture_prevue, d.date_ouverture,";
+ $sql.= " d.date_fin_validite, d.date_cloture";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as d, ".MAIN_DB_PREFIX."product as p";
$sql.= " WHERE d.fk_contrat = ".$this->id ." AND d.fk_product = p.rowid";
$sql.= " ORDER by d.rowid ASC";
@@ -296,6 +298,7 @@ class Contrat
$objp = $this->db->fetch_object($result);
$ligne = new ContratLigne();
+ $ligne->id = $objp->rowid;
$ligne->desc = stripslashes($objp->description); // Description ligne
$ligne->libelle = stripslashes($objp->label); // Label produit
$ligne->product_desc = stripslashes($objp->product_desc); // Description produit
@@ -306,6 +309,11 @@ class Contrat
$ligne->remise_percent = $objp->remise_percent;
$ligne->price = $objp->price;
$ligne->product_id = $objp->rowid;
+
+ $ligne->date_debut_prevue = $objp->date_ouverture_prevue;
+ $ligne->date_debut_reel = $objp->date_ouverture;
+ $ligne->date_fin_prevue = $objp->date_fin_validite;
+ $ligne->date_fin_reel = $objp->date_cloture;
$this->lignes[$i] = $ligne;
//dolibarr_syslog("1 ".$ligne->desc);
@@ -323,9 +331,11 @@ class Contrat
/*
* Lignes contrat liées à aucun produit
*/
- $sql = "SELECT d.qty, d.description, d.price_ht, d.subprice, d.tva_tx, d.rowid, d.remise_percent";
- $sql .= " FROM ".MAIN_DB_PREFIX."contratdet as d";
- $sql .= " WHERE d.fk_contrat = ".$this->id ." AND d.fk_product = 0";
+ $sql = "SELECT d.qty, d.description, d.price_ht, d.subprice, d.tva_tx, d.rowid, d.remise_percent,";
+ $sql.= " d.date_ouverture_prevue, d.date_ouverture,";
+ $sql.= " d.date_fin_validite, d.date_cloture";
+ $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as d";
+ $sql.= " WHERE d.fk_contrat = ".$this->id ." AND d.fk_product = 0";
$result = $this->db->query($sql);
if ($result)
@@ -347,6 +357,11 @@ class Contrat
$ligne->price = $objp->price;
$ligne->product_id = 0;
+ $ligne->date_debut_prevue = $objp->date_ouverture_prevue;
+ $ligne->date_debut_reel = $objp->date_ouverture;
+ $ligne->date_fin_prevue = $objp->date_fin_validite;
+ $ligne->date_fin_reel = $objp->date_cloture;
+
$this->lignes[$i] = $ligne;
$i++;
$j++;
@@ -1072,6 +1087,23 @@ class Contrat
class ContratLigne
{
+ var $id;
+ var $desc;
+ var $libelle;
+ var $product_desc;
+ var $qty;
+ var $ref;
+ var $tva_tx;
+ var $subprice;
+ var $remise_percent;
+ var $price;
+ var $product_id;
+
+ var $date_debut_prevue;
+ var $date_debut_reel;
+ var $date_fin_prevue;
+ var $date_fin_reel;
+
function ContratLigne()
{
}
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 1fb561fa55f..7c151eb3993 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -272,6 +272,9 @@ NbOfObjects=Number of objects
NbOfReferers=Number of referers
Referers=Referers
TotalQuantity=Total quantity
+DateFromTo=From %s to %s
+DateFrom=From %s
+DateUntil=Until %s
# Countries
CountryFR=France
CountryBE=Belgium
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index 4d1ec648e23..54ee0de4d55 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -272,6 +272,9 @@ NbOfObjects=Nombre d'objets
NbOfReferers=Nombre de références
Referers=Référents
TotalQuantity=Quantité totale
+DateFromTo=Du %s au %s
+DateFrom=A partir du %s
+DateUntil=Jusqu'au %s
# Countries
CountryFR=France
CountryBE=Belgique