From 788cbf9a01198eccb58e1da6f91d8840ed5441cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Sun, 4 Dec 2016 13:30:17 +0100 Subject: [PATCH] Complete work on dol_banner on contracts --- htdocs/contrat/card.php | 158 +++++++++--------- htdocs/contrat/class/contrat.class.php | 3 +- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/html.form.class.php | 5 +- htdocs/core/lib/functions.lib.php | 5 +- htdocs/core/tpl/objectline_create.tpl.php | 2 +- .../install/mysql/migration/4.0.0-5.0.0.sql | 3 + htdocs/install/mysql/tables/llx_contrat.sql | 1 + htdocs/langs/en_US/admin.lang | 2 +- htdocs/projet/card.php | 2 - 10 files changed, 94 insertions(+), 89 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index c6e9a12e338..2d53eb6abbb 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -121,7 +121,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); } } - + else if ($action == 'confirm_closeline' && $confirm == 'yes' && $user->rights->contrat->activer) { if (! GETPOST('dateend')) @@ -999,7 +999,8 @@ llxHeader('',$langs->trans("Contract"),""); $form = new Form($db); $formfile = new FormFile($db); - +if (! empty($conf->projet->enabled)) $formproject = new FormProjets($db); + $objectlignestatic=new ContratLigne($db); // Load object modContract @@ -1086,34 +1087,36 @@ if ($action == 'create') print '<table class="border" width="100%">'; // Ref + print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans('Ref').'</td><td>'; if (! empty($modCodeContract->code_auto)) { $tmpcode=$langs->trans("Draft"); } else { - $tmpcode='<input name="ref" size="20" maxlength="128" value="'.dol_escape_htmltag(GETPOST('ref')?GETPOST('ref'):$tmpcode).'">'; + $tmpcode='<input name="ref" class="maxwidth100" maxlength="128" value="'.dol_escape_htmltag(GETPOST('ref')?GETPOST('ref'):$tmpcode).'">'; } - print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans('Ref').'</td><td colspan="2">'.$tmpcode.'</td></tr>'; + print $tmpcode; + print '</td></tr>'; // Ref customer print '<tr><td>'.$langs->trans('RefCustomer').'</td>'; - print '<td colspan="2"><input type="text" size="5" name="ref_customer" id="ref_customer" value="'.GETPOST('ref_customer','alpha').'"></td></tr>'; + print '<td><input type="text" class="maxwidth150" name="ref_customer" id="ref_customer" value="'.dol_escape_htmltag(GETPOST('ref_customer','alpha')).'"></td></tr>'; // Ref supplier print '<tr><td>'.$langs->trans('RefSupplier').'</td>'; - print '<td colspan="2"><input type="text" size="5" name="ref_supplier" id="ref_supplier" value="'.GETPOST('ref_supplier','alpha').'"></td></tr>'; + print '<td><input type="text" class="maxwidth150" name="ref_supplier" id="ref_supplier" value="'.dol_escape_htmltag(GETPOST('ref_supplier','alpha')).'"></td></tr>'; // Thirdparty print '<tr>'; print '<td class="fieldrequired">'.$langs->trans('ThirdParty').'</td>'; if ($socid>0) { - print '<td colspan="2">'; + print '<td>'; print $soc->getNomUrl(1); print '<input type="hidden" name="socid" value="'.$soc->id.'">'; print '</td>'; } else { - print '<td colspan="2">'; + print '<td>'; print $form->select_company('','socid','','SelectThirdParty',1); print '</td>'; } @@ -1122,7 +1125,7 @@ if ($action == 'create') if($socid>0) { // Ligne info remises tiers - print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="2">'; + print '<tr><td>'.$langs->trans('Discounts').'</td><td>'; if ($soc->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_percent); else print $langs->trans("CompanyHasNoRelativeDiscount"); print '. '; @@ -1158,11 +1161,9 @@ if ($action == 'create') } print '<tr><td>'.$langs->trans("NotePublic").'</td><td valign="top">'; - - $doleditor=new DolEditor('note_public', $note_public, '', '100', 'dolibarr_notes', 'In', 1, true, true, ROWS_3, '90%'); print $doleditor->Create(1); - + print '</td></tr>'; if (empty($user->societe_id)) { @@ -1293,47 +1294,75 @@ else print $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('CloneContract'), $langs->trans('ConfirmCloneContract', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); } - print '<table class="border" width="100%">'; + // Contract card $linkback = '<a href="'.DOL_URL_ROOT.'/contrat/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>'; - // Ref du contrat + + $morehtmlref=''; if (! empty($modCodeContract->code_auto)) { - print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td colspan="3">'; - print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); - print "</td></tr>"; + $morehtmlref.=$object->ref; } else { - print '<tr>'; - print '<td class="titlefieldcreate">'; - print $form->editfieldkey("Ref",'ref',$object->ref,$object,$user->rights->contrat->creer); - print '</td><td>'; - print $form->editfieldval("Ref",'ref',$object->ref,$object,$user->rights->contrat->creer); - print '</td>'; - print '</tr>'; + $morehtmlref.=$form->editfieldkey("",'ref',$object->ref,$object,$user->rights->contrat->creer,'string','',0,3); + $morehtmlref.=$form->editfieldval("",'ref',$object->ref,$object,$user->rights->contrat->creer,'string','',0,2); } - - print '<tr>'; - print '<td>'; - print $form->editfieldkey("RefCustomer",'ref_customer',$object->ref_customer,$object,$user->rights->contrat->creer); - print '</td><td>'; - print $form->editfieldval("RefCustomer",'ref_customer',$object->ref_customer,$object,$user->rights->contrat->creer); - print '</td>'; - print '</tr>'; - print '<tr>'; - print '<td>'; - print $form->editfieldkey("RefSupplier",'ref_supplier',$object->ref_supplier,$object,$user->rights->contrat->creer); - print '</td><td>'; - print $form->editfieldval("RefSupplier",'ref_supplier',$object->ref_supplier,$object,$user->rights->contrat->creer); - print '</td>'; - print '</tr>'; + $morehtmlref.='<div class="refidno">'; + // Ref customer + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_customer', $object->ref_customer, $object, $user->rights->contrat->creer, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_customer', $object->ref_customer, $object, $user->rights->contrat->creer, 'string', '', null, null, '', 1); + // Ref supplier + $morehtmlref.='<br>'; + $morehtmlref.=$form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $user->rights->contrat->creer, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $user->rights->contrat->creer, 'string', '', null, null, '', 1); + // Thirdparty + $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1); + // Project + if (! empty($conf->projet->enabled)) + { + $langs->load("projects"); + $morehtmlref.='<br>'.$langs->trans('Project') . ' '; + if ($user->rights->contrat->creer) + { + if ($action != 'classify') + $morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; + $morehtmlref.='<input type="hidden" name="action" value="classin">'; + $morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + $morehtmlref.=$formproject->select_projects($object->thirdparty->id, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; + $morehtmlref.='</form>'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->thirdparty->id, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (! empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">'; + $morehtmlref.=$proj->ref; + $morehtmlref.='</a>'; + } else { + $morehtmlref.=''; + } + } + } + $morehtmlref.='</div>'; + - // Customer - print "<tr><td>".$langs->trans("Customer")."</td>"; - print '<td colspan="3">'.$object->thirdparty->getNomUrl(1).'</td></tr>'; + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'none', $morehtmlref); + + print '<div class="fichecenter">'; + print '<div class="underbanner clearboth"></div>'; + + + print '<table class="border" width="100%">'; + // Ligne info remises tiers - print '<tr><td>'.$langs->trans('Discount').'</td><td colspan="3">'; + print '<tr><td class="titlefield">'.$langs->trans('Discount').'</td><td colspan="3">'; if ($object->thirdparty->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$object->thirdparty->remise_percent); else print $langs->trans("CompanyHasNoRelativeDiscount"); $absolute_discount=$object->thirdparty->getAvailableDiscounts(); @@ -1343,44 +1372,15 @@ else print '.'; print '</td></tr>'; - // Statut contrat - print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'; - if ($object->statut==0) print $object->getLibStatut(2); - else print $object->getLibStatut(4); - print "</td></tr>"; - // Date print '<tr>'; - print '<td>'; + print '<td class="titlefield">'; print $form->editfieldkey("Date",'date_contrat',$object->date_contrat,$object,$user->rights->contrat->creer); print '</td><td>'; print $form->editfieldval("Date",'date_contrat',$object->date_contrat,$object,$user->rights->contrat->creer,'datehourpicker'); print '</td>'; print '</tr>'; - /* print '<tr><td>'.$langs->trans("Date").'</td>'; - print '<td colspan="3">'.dol_print_date($object->date_contrat,"dayhour")."</td></tr>\n";*/ - // Projet - if (! empty($conf->projet->enabled)) - { - $langs->load("projects"); - print '<tr><td>'; - print '<table width="100%" class="nobordernopadding"><tr><td>'; - print $langs->trans("Project"); - print '</td>'; - if ($action != "classify" && $user->rights->projet->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=classify&id='.$object->id.'">'.img_edit($langs->trans("SetProject")).'</a></td>'; - print '</tr></table>'; - print '</td><td colspan="3">'; - if ($action == "classify") - { - $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, "projectid", 1, 0, 1); - } - else - { - $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, "none", 0, 0); - } - print "</td></tr>"; - } // Other attributes $cols = 3; @@ -1388,12 +1388,14 @@ else print "</table>"; + print '</div>'; + if (! empty($object->brouillon) && $user->rights->contrat->creer) { print '</form>'; } - echo '<br>'; + //echo '<br>'; if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { @@ -1457,8 +1459,8 @@ else print '<tr class="liste_titre'.($cursorline?' liste_titre_add':'').'">'; print '<td>'.$langs->trans("ServiceNb",$cursorline).'</td>'; - print '<td width="50" align="center">'.$langs->trans("VAT").'</td>'; - print '<td width="50" align="right">'.$langs->trans("PriceUHT").'</td>'; + print '<td width="80" align="center">'.$langs->trans("VAT").'</td>'; + print '<td width="80" align="right">'.$langs->trans("PriceUHT").'</td>'; print '<td width="30" align="center">'.$langs->trans("Qty").'</td>'; if ($conf->global->PRODUCT_USE_UNITS) print '<td width="30" align="left">'.$langs->trans("Unit").'</td>'; print '<td width="50" align="right">'.$langs->trans("ReductionShort").'</td>'; @@ -1606,7 +1608,7 @@ else } // Ligne en mode update else - { + { // Ligne carac print "<tr ".$bc[$var].">"; print '<td>'; @@ -1927,8 +1929,6 @@ else <input type="hidden" name="id" value="'.$object->id.'"> '; - print '<br>'; - print '<div class="div-table-responsive">'; print '<table id="tablelines" class="noborder noshadow" width="100%">'; // Array with (n*2)+1 lines diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index a8f84731650..52a32e00067 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -45,7 +45,8 @@ class Contrat extends CommonObject public $table_element_line='contratdet'; public $fk_element='fk_contrat'; protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe - + public $picto='contract'; + /** * {@inheritdoc} */ diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 05fae4f7637..de42ced0997 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3301,7 +3301,7 @@ abstract class CommonObject } // VAT - print '<td class="linecolvat" align="right" width="50">'.$langs->trans('VAT').'</td>'; + print '<td class="linecolvat" align="right" width="80">'.$langs->trans('VAT').'</td>'; // Price HT print '<td class="linecoluht" align="right" width="80">'.$langs->trans('PriceUHT').'</td>'; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f8c81249ed1..ee5bb19bc9a 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -78,9 +78,9 @@ class Form * @param object $object Object * @param boolean $perm Permission to allow button to edit parameter. Set it to 0 to have a not edited field. * @param string $typeofdata Type of data ('string' by default, 'email', 'amount:99', 'numeric:99', 'text' or 'textarea:rows:cols', 'datepicker' ('day' do not work, don't know why), 'ckeditor:dolibarr_zzz:width:height:savemethod:1:rows:cols', 'select;xxx[:class]'...) - * @param string $moreparam More param to add on a href URL* + * @param string $moreparam More param to add on a href URL. * @param int $fieldrequired 1 if we want to show field as mandatory using the "fieldrequired" CSS. - * @param int $notabletag 1=Do not output table tags but output a ':', 2=Do not output table tags and no ':' + * @param int $notabletag 1=Do not output table tags but output a ':', 2=Do not output table tags and no ':', 3=Do not output table tags but output a ' ' * @return string HTML edit field */ function editfieldkey($text, $htmlname, $preselected, $object, $perm, $typeofdata='string', $moreparam='', $fieldrequired=0, $notabletag=0) @@ -119,6 +119,7 @@ class Form if (empty($notabletag) && GETPOST('action') != 'edit'.$htmlname && $perm) $ret.='<td align="right">'; if ($htmlname && GETPOST('action') != 'edit'.$htmlname && $perm) $ret.='<a href="'.$_SERVER["PHP_SELF"].'?action=edit'.$htmlname.'&id='.$object->id.$moreparam.'">'.img_edit($langs->trans('Edit'), ($notabletag ? 0 : 1)).'</a>'; if (! empty($notabletag) && $notabletag == 1) $ret.=' : '; + if (! empty($notabletag) && $notabletag == 3) $ret.=' '; if (empty($notabletag) && GETPOST('action') != 'edit'.$htmlname && $perm) $ret.='</td>'; if (empty($notabletag) && GETPOST('action') != 'edit'.$htmlname && $perm) $ret.='</tr></table>'; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 01c23ce70f6..f330fb92e84 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1061,9 +1061,10 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3) || $conf->browser->layout=='phone') $tmptxt=$object->getLibStatut(5, $object->totalpaye); $morehtmlstatus.=$tmptxt; } - elseif ($object->element == 'facturerec') + elseif ($object->element == 'contrat') { - $morehtmlstatus.='<!-- No status for recurring invoice -->'; + if ($object->statut==0) $morehtmlstatus.=$object->getLibStatut(2); + else $morehtmlstatus.=$object->getLibStatut(4); } else { // Generic case $tmptxt=$object->getLibStatut(6); diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 62866e31ea1..c01f16293b6 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -107,7 +107,7 @@ if ($nolinesbefore) { <?php } ?> -<tr class="pair nodrag nodrop nohoverpair<?php echo $nolinesbefore?'':' liste_titre_add'; ?>"> +<tr class="pair nodrag nodrop nohoverpair<?php echo ($nolinesbefore || $object->element=='contrat')?'':' liste_titre_add'; ?>"> <?php if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { $coldisplay=2; } diff --git a/htdocs/install/mysql/migration/4.0.0-5.0.0.sql b/htdocs/install/mysql/migration/4.0.0-5.0.0.sql index 9b65050b663..2fd59793a09 100644 --- a/htdocs/install/mysql/migration/4.0.0-5.0.0.sql +++ b/htdocs/install/mysql/migration/4.0.0-5.0.0.sql @@ -243,3 +243,6 @@ ALTER TABLE llx_expensereport ADD UNIQUE INDEX idx_expensereport_uk_ref (ref, en UPDATE llx_projet_task SET ref = NULL WHERE ref = ''; ALTER TABLE llx_projet_task ADD UNIQUE INDEX uk_projet_task_ref (ref, entity); + +ALTER TABLE llx_contrat ADD COLUMN fk_user_modif integer; + diff --git a/htdocs/install/mysql/tables/llx_contrat.sql b/htdocs/install/mysql/tables/llx_contrat.sql index f229f020bf6..60a6b574d44 100644 --- a/htdocs/install/mysql/tables/llx_contrat.sql +++ b/htdocs/install/mysql/tables/llx_contrat.sql @@ -38,6 +38,7 @@ create table llx_contrat fk_commercial_signature integer, -- obsolete fk_commercial_suivi integer, -- obsolete fk_user_author integer NOT NULL default 0, + fk_user_modif integer, fk_user_mise_en_service integer, fk_user_cloture integer, note_private text, diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 19f6dfe9d81..82ff69fe88a 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -231,7 +231,7 @@ SpaceX=Space X SpaceY=Space Y FontSize=Font size Content=Content -NoticePeriod=Notice +NoticePeriod=Notice period NewByMonth=New by month Emails=E-mails EMailsSetup=E-mails setup diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 9aae20a6300..09f1604e931 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -674,14 +674,12 @@ elseif ($object->id > 0) } - print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="id" value="'.$object->id.'">'; print '<input type="hidden" name="comefromclone" value="'.$comefromclone.'">'; - $head=project_prepare_head($object); dol_fiche_head($head, 'project', $langs->trans("Project"),0,($object->public?'projectpub':'project')); -- GitLab