Merge remote-tracking branch 'origin/3.7' into develop

Conflicts:
	htdocs/contrat/card.php
	htdocs/contrat/class/contrat.class.php
	htdocs/core/class/extrafields.class.php
	htdocs/core/modules/modAdherent.class.php
This commit is contained in:
Laurent Destailleur 2015-05-03 13:00:39 +02:00
commit 0479bd5a59
4 changed files with 57 additions and 32 deletions

View File

@ -37,8 +37,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/contract.lib.php';
require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/contract/modules_contract.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/contract/modules_contract.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
if (! empty($conf->produit->enabled) || ! empty($conf->service->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
if (! empty($conf->projet->enabled)) { if (! empty($conf->projet->enabled)) {
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
@ -1279,9 +1279,7 @@ else
* Lines of contracts * Lines of contracts
*/ */
if ($conf->product->enabled || $conf->service->enabled) { $productstatic=new Product($db);
$productstatic=new Product($db);
}
$usemargins=0; $usemargins=0;
if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1; if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1;
@ -1343,19 +1341,28 @@ else
$productstatic->id=$objp->fk_product; $productstatic->id=$objp->fk_product;
$productstatic->type=$objp->ptype; $productstatic->type=$objp->ptype;
$productstatic->ref=$objp->pref; $productstatic->ref=$objp->pref;
print $productstatic->getNomUrl(1,'',20); $text = $productstatic->getNomUrl(1,'',20);
if ($objp->label) if ($objp->label)
{ {
print ' - '; $text .= ' - ';
$productstatic->ref=$objp->label; $productstatic->ref=$objp->label;
print $productstatic->getNomUrl(0,'',16); $text .= $productstatic->getNomUrl(0,'',16);
} }
if (! empty($conf->global->PRODUIT_DESC_IN_FORM) && !empty($objp->description)) $description = $objp->description;
print '<br>'.dol_nl2br($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):'';
$description = ''; // Already added into main visible desc
}
echo $form->textwithtooltip($text,$description,3,'','',$cursorline,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
print '</td>'; print '</td>';
} }
else else
{ {
print '<td>'.dol_htmlentitiesbr($objp->description)."</td>\n"; print '<td>'.dol_htmlentitiesbr($objp->description)."</td>\n";
} }
// TVA // TVA

View File

@ -237,8 +237,8 @@ class Contrat extends CommonObject
/** /**
* Activate a contract line * Activate a contract line
* *
* @param User $user Objet User qui active le contrat * @param User $user Objet User who activate contract
* @param int $line_id Id de la ligne de detail a activer * @param int $line_id Id of line to activate
* @param int $date Date d'ouverture * @param int $date Date d'ouverture
* @param int|string $date_end Date fin prevue * @param int|string $date_end Date fin prevue
* @param string $comment A comment typed by user * @param string $comment A comment typed by user
@ -284,9 +284,9 @@ class Contrat extends CommonObject
/** /**
* Close a contract line * Close a contract line
* *
* @param User $user Objet User qui active le contrat * @param User $user Objet User who close contract
* @param int $line_id Id de la ligne de detail a activer * @param int $line_id Id of line to close
* @param int $date_end Date fin * @param int $date_end Date end
* @param string $comment A comment typed by user * @param string $comment A comment typed by user
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
@ -576,7 +576,7 @@ class Contrat extends CommonObject
$result=$this->fetch_lines(); $result=$this->fetch_lines();
if ($result < 0) if ($result < 0)
{ {
$this->error=$this->db->error(); $this->error=$this->db->lasterror();
return -3; return -3;
} }
@ -599,7 +599,7 @@ class Contrat extends CommonObject
} }
/** /**
* Load lignes array into this->lines * Load lines array into this->lines
* *
* @return ContratLigne[] Return array of contract lines * @return ContratLigne[] Return array of contract lines
*/ */
@ -624,7 +624,7 @@ class Contrat extends CommonObject
$this->lines=array(); $this->lines=array();
// Selectionne les lignes contrats liees a un produit // Selectionne les lignes contrats liees a un produit
$sql = "SELECT p.label, p.description as product_desc, p.ref,"; $sql = "SELECT p.label as product_label, p.description as product_desc, p.ref as product_ref,";
$sql.= " d.rowid, d.fk_contrat, d.statut, d.description, d.price_ht, d.tva_tx, d.localtax1_tx, d.localtax2_tx, d.qty, d.remise_percent, d.subprice, d.fk_product_fournisseur_price as fk_fournprice, d.buy_price_ht as pa_ht,"; $sql.= " d.rowid, d.fk_contrat, d.statut, d.description, d.price_ht, d.tva_tx, d.localtax1_tx, d.localtax2_tx, d.qty, d.remise_percent, d.subprice, d.fk_product_fournisseur_price as fk_fournprice, d.buy_price_ht as pa_ht,";
$sql.= " d.total_ht,"; $sql.= " d.total_ht,";
$sql.= " d.total_tva,"; $sql.= " d.total_tva,";
@ -684,10 +684,12 @@ class Contrat extends CommonObject
$line->fk_user_cloture = $objp->fk_user_cloture; $line->fk_user_cloture = $objp->fk_user_cloture;
$line->fk_unit = $objp->fk_unit; $line->fk_unit = $objp->fk_unit;
$line->ref = $objp->ref; $line->ref = $objp->product_ref; // deprecated
$line->libelle = $objp->label; // Label produit $line->label = $objp->product_label; // deprecated
$line->label = $objp->label; // For backward compatibility $line->libelle = $objp->product_label; // deprecated
$line->product_desc = $objp->product_desc; // Description produit $line->product_ref = $objp->product_ref; // Ref product
$line->product_desc = $objp->product_desc; // Description product
$line->product_label = $objp->product_label; // Label product
$line->description = $objp->description; $line->description = $objp->description;
@ -2339,7 +2341,10 @@ class ContratLigne extends CommonObjectLine
$sql.= " t.fk_contrat,"; $sql.= " t.fk_contrat,";
$sql.= " t.fk_product,"; $sql.= " t.fk_product,";
$sql.= " t.statut,"; $sql.= " t.statut,";
$sql.= " t.label,"; $sql.= " t.label,"; // This field is not used. Only label of product
$sql.= " p.ref as product_ref,";
$sql.= " p.label as product_label,";
$sql.= " p.description as product_desc,";
$sql.= " t.description,"; $sql.= " t.description,";
$sql.= " t.date_commande,"; $sql.= " t.date_commande,";
$sql.= " t.date_ouverture_prevue as date_ouverture_prevue,"; $sql.= " t.date_ouverture_prevue as date_ouverture_prevue,";
@ -2368,7 +2373,7 @@ class ContratLigne extends CommonObjectLine
$sql.= " t.fk_user_cloture,"; $sql.= " t.fk_user_cloture,";
$sql.= " t.commentaire,"; $sql.= " t.commentaire,";
$sql.= " t.fk_unit"; $sql.= " t.fk_unit";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as t"; $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as t LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = t.fk_product";
if ($id) $sql.= " WHERE t.rowid = ".$id; if ($id) $sql.= " WHERE t.rowid = ".$id;
if ($ref) $sql.= " WHERE t.rowid = '".$this->db->escape($ref)."'"; if ($ref) $sql.= " WHERE t.rowid = '".$this->db->escape($ref)."'";
@ -2387,7 +2392,10 @@ class ContratLigne extends CommonObjectLine
$this->fk_contrat = $obj->fk_contrat; $this->fk_contrat = $obj->fk_contrat;
$this->fk_product = $obj->fk_product; $this->fk_product = $obj->fk_product;
$this->statut = $obj->statut; $this->statut = $obj->statut;
$this->label = $obj->label; $this->product_ref = $obj->product_ref;
$this->product_label = $obj->product_label;
$this->product_description = $obj->product_description;
$this->label = $obj->label; // deprecated. We do not use this field. Only ref and label of product, and description of contract line
$this->description = $obj->description; $this->description = $obj->description;
$this->date_commande = $this->db->jdate($obj->date_commande); $this->date_commande = $this->db->jdate($obj->date_commande);
$this->date_ouverture_prevue = $this->db->jdate($obj->date_ouverture_prevue); $this->date_ouverture_prevue = $this->db->jdate($obj->date_ouverture_prevue);

View File

@ -107,7 +107,7 @@ class ExtraFields
* @param string $label label of attribute * @param string $label label of attribute
* @param int $type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour') * @param int $type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour')
* @param int $pos Position of attribute * @param int $pos Position of attribute
* @param int $size Size/length of attribute * @param string $size Size/length of attribute
* @param string $elementtype Element type ('member', 'product', 'thirdparty', ...) * @param string $elementtype Element type ('member', 'product', 'thirdparty', ...)
* @param int $unique Is field unique or not * @param int $unique Is field unique or not
* @param int $required Is field required or not * @param int $required Is field required or not
@ -128,7 +128,7 @@ class ExtraFields
// Create field into database except for separator type which is not stored in database // Create field into database except for separator type which is not stored in database
if ($type != 'separate') if ($type != 'separate')
{ {
$result=$this->create($attrname,$type,$size,$elementtype, $unique, $required, $default_value, $param, $perms, $list); $result=$this->create($attrname, $type, $size, $elementtype, $unique, $required, $default_value, $param, $perms, $list);
} }
$err1=$this->errno; $err1=$this->errno;
if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate') if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate')
@ -156,7 +156,7 @@ class ExtraFields
* *
* @param string $attrname code of attribute * @param string $attrname code of attribute
* @param int $type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour') * @param int $type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour')
* @param int $length Size/length of attribute * @param string $length Size/length of attribute ('5', '24,8', ...)
* @param string $elementtype Element type ('member', 'product', 'thirdparty', 'contact', ...) * @param string $elementtype Element type ('member', 'product', 'thirdparty', 'contact', ...)
* @param int $unique Is field unique or not * @param int $unique Is field unique or not
* @param int $required Is field required or not * @param int $required Is field required or not
@ -233,7 +233,7 @@ class ExtraFields
* @param string $label label of attribute * @param string $label label of attribute
* @param int $type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour', 'float') * @param int $type Type of attribute ('int', 'text', 'varchar', 'date', 'datehour', 'float')
* @param int $pos Position of attribute * @param int $pos Position of attribute
* @param int $size Size/length of attribute * @param string $size Size/length of attribute ('5', '24,8', ...)
* @param string $elementtype Element type ('member', 'product', 'thirdparty', ...) * @param string $elementtype Element type ('member', 'product', 'thirdparty', ...)
* @param int $unique Is field unique or not * @param int $unique Is field unique or not
* @param int $required Is field required or not * @param int $required Is field required or not

View File

@ -30,6 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/contract/modules_contract.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
/** /**
@ -253,6 +254,7 @@ class pdf_strato extends ModelePDFContract
$objectligne = $object->lines[$i]; $objectligne = $object->lines[$i];
$valide = $objectligne->id ? $objectligne->fetch($objectligne->id) : 0; $valide = $objectligne->id ? $objectligne->fetch($objectligne->id) : 0;
if ($valide > 0 || $object->specimen) if ($valide > 0 || $object->specimen)
{ {
$curX = $this->posxdesc-1; $curX = $this->posxdesc-1;
@ -278,12 +280,20 @@ class pdf_strato extends ModelePDFContract
$durationi = $langs->trans("Unknown"); $durationi = $langs->trans("Unknown");
} }
$txtpredefinedservice='';
$txtpredefinedservice = $objectligne->product_ref;
if ($objectligne->product_label)
{
$txtpredefinedservice .= ' - ';
$txtpredefinedservice .= $objectligne->product_label;
}
$txt='<strong>'.dol_htmlentitiesbr($outputlangs->transnoentities("Date")." : ".$datei." - ".$outputlangs->transnoentities("Duration")." : ".$durationi,1,$outputlangs->charset_output).'</strong>'; $txt='<strong>'.dol_htmlentitiesbr($outputlangs->transnoentities("Date")." : ".$datei." - ".$outputlangs->transnoentities("Duration")." : ".$durationi,1,$outputlangs->charset_output).'</strong>';
$desc=dol_htmlentitiesbr($objectligne->desc,1); $desc=dol_htmlentitiesbr($objectligne->desc,1);
$pdf->writeHTMLCell(0, 0, $curX, $curY, dol_concatdesc($txt,$desc), 0, 1, 0); $pdf->writeHTMLCell(0, 0, $curX, $curY, dol_concatdesc($txt,dol_concatdesc($txtpredefinedservice,$desc)), 0, 1, 0);
$nexY = $pdf->GetY(); $nexY = $pdf->GetY() + 2;
$pageposafter=$pdf->getPage(); $pageposafter=$pdf->getPage();
$pdf->setPage($pageposbefore); $pdf->setPage($pageposbefore);
$pdf->setTopMargin($this->marge_haute); $pdf->setTopMargin($this->marge_haute);