From 7ba5cf59581e316fd595df8ddb74dbf8c14f7c5b Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Mon, 31 Jul 2017 13:48:00 +0200
Subject: [PATCH] Debug view of services lines

---
 htdocs/contrat/card.php                      | 18 ++++----
 htdocs/contrat/class/contrat.class.php       | 10 ++---
 htdocs/core/boxes/box_services_contracts.php | 44 ++++++++++++++++++--
 3 files changed, 55 insertions(+), 17 deletions(-)

diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index c13571dd6cb..90ec4c7edba 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -1482,7 +1482,7 @@ else
             $sql.= " cd.date_fin_validite as date_fin, cd.date_cloture as date_fin_reelle,";
             $sql.= " cd.commentaire as comment, cd.fk_product_fournisseur_price as fk_fournprice, cd.buy_price_ht as pa_ht,";
 	        $sql.= " cd.fk_unit,";
-            $sql.= " p.rowid as pid, p.ref as pref, p.label as label, p.fk_product_type as ptype, p.entity as pentity";
+            $sql.= " p.rowid as pid, p.ref as pref, p.label as plabel, p.fk_product_type as ptype, p.entity as pentity";
             $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd";
             $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid";
             $sql.= " WHERE cd.rowid = ".$object->lines[$cursorline-1]->id;
@@ -1513,7 +1513,7 @@ else
                 if ($action != 'editline' || GETPOST('rowid') != $objp->rowid)
                 {
                     print '<tr '.$bcnd[$var].' valign="top">';
-                    // Libelle
+                    // Label
                     if ($objp->fk_product > 0)
                     {
                         print '<td>';
@@ -1521,19 +1521,21 @@ else
                         $productstatic->type=$objp->ptype;
                         $productstatic->ref=$objp->pref;
 						$productstatic->entity=$objp->pentity;
-                        $text = $productstatic->getNomUrl(1,'',20);
-                        if ($objp->label)
+						$productstatic->label=$objp->plabel;
+						$text = $productstatic->getNomUrl(1,'',20);
+                        if ($objp->plabel)
                         {
                         	$text .= ' - ';
-                        	$productstatic->ref=$objp->label;
-                        	$text .= $productstatic->getNomUrl(0,'',16);
+                        	//$productstatic->ref=$objp->label;
+                        	//$text .= $productstatic->getNomUrl(0,'',16);
+                        	$text .= $objp->plabel;
                         }
                         $description = $objp->description;
 
 	                    // Add description in form
 						if (! empty($conf->global->PRODUIT_DESC_IN_FORM))
 						{
-							$text .= (! empty($objp->description) && $objp->description!=$objp->product_label)?'<br>'.dol_htmlentitiesbr($objp->description):'';
+							$text .= (! empty($objp->description) && $objp->description!=$objp->plabel)?'<br>'.dol_htmlentitiesbr($objp->description):'';
 							$description = '';	// Already added into main visible desc
 						}
 
@@ -1543,7 +1545,7 @@ else
                     }
                     else
 					{
-                        print '<td>'.dol_htmlentitiesbr($objp->description)."</td>\n";
+                        print '<td>'.img_object($langs->trans("ShowProductOrService"), ($objp->product_type ? 'service' : 'product')).' '.dol_htmlentitiesbr($objp->description)."</td>\n";
                     }
                     // TVA
                     print '<td align="center">';
diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php
index 0c3ee14666a..bf31ef4070c 100644
--- a/htdocs/contrat/class/contrat.class.php
+++ b/htdocs/contrat/class/contrat.class.php
@@ -1278,7 +1278,7 @@ class Contrat extends CommonObject
 				//// End call triggers
 				}
 			}
-			
+
 			if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) // For avoid conflicts if trigger used
 			{
 				$result=$this->insertExtraFields();
@@ -1831,13 +1831,13 @@ class Contrat extends CommonObject
 				$text.=': &nbsp; &nbsp; ';
 			}
 			$text.=($mode == 7?'<div class="inline-block">':'');
-			$text.=($mode != 7 || $this->nbofserviceswait > 0) ? $this->nbofserviceswait.' '.$line->LibStatut(0,3).(($this->nbofservicesopened || $this->nbofservicesexpired || $this->nbofservicesclosed)?' &nbsp; ':'') : '';
+			$text.=($mode != 7 || $this->nbofserviceswait > 0) ? ($this->nbofserviceswait.$line->LibStatut(0,3)).(($mode != 7 || $this->nbofservicesopened || $this->nbofservicesexpired || $this->nbofservicesclosed)?' &nbsp; ':'') : '';
 			$text.=($mode == 7?'</div><div class="inline-block">':'');
-			$text.=($mode != 7 || $this->nbofservicesopened > 0) ? $this->nbofservicesopened.' '.$line->LibStatut(4,3,0).(($this->nbofservicesexpired || $this->nbofservicesclosed)?' &nbsp; ':'') : '';
+			$text.=($mode != 7 || $this->nbofservicesopened > 0) ? ($this->nbofservicesopened.$line->LibStatut(4,3,0)).(($mode != 7 || $this->nbofservicesexpired || $this->nbofservicesclosed)?' &nbsp; ':'') : '';
 			$text.=($mode == 7?'</div><div class="inline-block">':'');
-			$text.=($mode != 7 || $this->nbofservicesexpired > 0) ? $this->nbofservicesexpired.' '.$line->LibStatut(4,3,1).(($this->nbofservicesclosed)?' &nbsp; ':'') : '';
+			$text.=($mode != 7 || $this->nbofservicesexpired > 0) ? ($this->nbofservicesexpired.$line->LibStatut(4,3,1)).(($mode != 7 || $this->nbofservicesclosed)?' &nbsp; ':'') : '';
 			$text.=($mode == 7?'</div><div class="inline-block">':'');
-			$text.=($mode != 7 || $this->nbofservicesclosed > 0) ? $this->nbofservicesclosed.' '.$line->LibStatut(5,3) : '';
+			$text.=($mode != 7 || $this->nbofservicesclosed > 0) ? ($this->nbofservicesclosed.$line->LibStatut(5,3)) : '';
 			$text.=($mode == 7?'</div>':'');
 			return $text;
 		}
diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php
index ccdcfbdbe5a..1795f7c6f2f 100644
--- a/htdocs/core/boxes/box_services_contracts.php
+++ b/htdocs/core/boxes/box_services_contracts.php
@@ -27,7 +27,7 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
 
 
 /**
- * Class to manage the box to show last services lines
+ * Class to manage the box to show last contracted products/services lines
  */
 class box_services_contracts extends ModeleBoxes
 {
@@ -72,6 +72,8 @@ class box_services_contracts extends ModeleBoxes
 
 		include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
 
+		$form = new Form($db);
+
 		$this->info_box_head = array('text' => $langs->trans("BoxLastProductsInContract",$max));
 
 		if ($user->rights->service->lire && $user->rights->contrat->lire)
@@ -79,11 +81,12 @@ class box_services_contracts extends ModeleBoxes
 		    $contractstatic=new Contrat($db);
 		    $contratlignestatic=new ContratLigne($db);
 		    $thirdpartytmp = new Societe($db);
+		    $productstatic = new Product($db);
 
 			$sql = "SELECT s.nom as name, s.rowid as socid,";
 			$sql.= " c.rowid, c.ref, c.statut as contract_status,";
-			$sql.= " cd.rowid as cdid, cd.tms as datem, cd.statut, cd.label, cd.description, cd.product_type as type,";
-			$sql.= " p.rowid as product_id, p.ref as product_ref";
+			$sql.= " cd.rowid as cdid, cd.label, cd.description, cd.tms as datem, cd.statut, cd.product_type as type,";
+			$sql.= " p.rowid as product_id, p.ref as product_ref, p.label as plabel, p.fk_product_type as ptype, p.entity";
 			$sql.= " FROM (".MAIN_DB_PREFIX."societe as s";
 			$sql.= " INNER JOIN ".MAIN_DB_PREFIX."contrat as c ON s.rowid = c.fk_soc";
 			$sql.= " INNER JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
@@ -140,8 +143,41 @@ class box_services_contracts extends ModeleBoxes
 						}
 					}
 
+					// Label
+					if ($objp->product_id > 0)
+					{
+						$productstatic->id=$objp->product_id;
+						$productstatic->type=$objp->ptype;
+						$productstatic->ref=$objp->product_ref;
+						$productstatic->entity=$objp->pentity;
+						$productstatic->label=$objp->plabel;
+						$text = $productstatic->getNomUrl(1,'',20);
+						if ($objp->plabel)
+						{
+							$text .= ' - ';
+							//$productstatic->ref=$objp->label;
+							//$text .= $productstatic->getNomUrl(0,'',16);
+							$text .= $objp->plabel;
+						}
+						$description = $objp->description;
+
+						// Add description in form
+						if (! empty($conf->global->PRODUIT_DESC_IN_FORM))
+						{
+							//$text .= (! empty($objp->description) && $objp->description!=$objp->plabel)?'<br>'.dol_htmlentitiesbr($objp->description):'';
+							$description = '';	// Already added into main visible desc
+						}
+
+						$s = $form->textwithtooltip($text,$description,3,'','',$cursorline,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
+					}
+					else
+					{
+						$s = img_object($langs->trans("ShowProductOrService"), ($objp->product_type ? 'service' : 'product')).' '.dol_htmlentitiesbr($objp->description);
+					}
+
+
 					$this->info_box_contents[$i][] = array('td' => 'class="tdoverflowmax100 maxwidth100onsmartphone"',
-                    'text' => $contratlignestatic->getNomUrl(1),
+                    'text' => $s,
 					'asis' => 1
                     );
 
-- 
GitLab