Merge remote-tracking branch 'upstream/develop' into socialnetworks
This commit is contained in:
commit
d1d9b1ed85
62
ChangeLog
62
ChangeLog
@ -27,8 +27,68 @@ Following changes may create regressions for some external modules, but were nec
|
||||
* If your logo was visible on the menu bar, you must upload a new logo into 'Home-Setup-Company/Organization' to have it visible agin in menu.
|
||||
|
||||
|
||||
***** ChangeLog for 10.0.2 compared to 10.0.1 *****
|
||||
***** ChangeLog for 10.0.3 compared to 10.0.2 *****
|
||||
FIX: #11702
|
||||
FIX: #11861 No consistent code to manage measuring units
|
||||
FIX: #11942
|
||||
FIX: #12026
|
||||
FIX: #12040
|
||||
FIX: #12041
|
||||
FIX: #12054
|
||||
FIX: #12083
|
||||
FIX: #12088
|
||||
FIX: access to public interface when origin email has an alias.
|
||||
FIX: Alias name is not into the email recipient label.
|
||||
FIX: allow standalone credit note even if no invoice
|
||||
FIX: an admin can not access his own permissions after enabling advanced
|
||||
FIX: an admin can not access his own permissions after enabling advanced permissions
|
||||
FIX: Attachement of linked files on ticket when sending a message
|
||||
FIX: avoid non numeric warning
|
||||
FIX: Bad currency var used in stripe for connect
|
||||
FIX: Bad list of ticket on public interface for ticket emailcollector
|
||||
FIX: Can't modify vendor invoice if transfered into accountancy
|
||||
FIX: change product type must be allowed if we activate hidden conf
|
||||
FIX: colspan on VAT quadri report
|
||||
FIX: CSS
|
||||
FIX: Debug feature orderstoinvoice for suppliers
|
||||
FIX: do not output return code on screen after a select of bank account
|
||||
FIX: Edit of ticket module parameters erased others
|
||||
FIX: empty cache when we want to load specific warehouses in select
|
||||
FIX: escape email alias
|
||||
FIX: expedition.class.php
|
||||
FIX: Export of leave request show the number of open days
|
||||
FIX: Filtering the HTTP Header "Accept-Language".
|
||||
FIX: Filter on project on ticket list
|
||||
FIX: Filter "Open all" of ticket was ko.
|
||||
FIX: Force downlaod of file with .noexe as octet-stream mime type
|
||||
FIX: form not closed.
|
||||
FIX: hidden conf to prevent from changing product_type
|
||||
FIX: If product account not suggested during bind, it is not preselected
|
||||
FIX: If we share invoice, we need to see discount created from a deposit on each entity
|
||||
FIX: Import of product using units
|
||||
FIX: label of thirdparty is wrong on open project list
|
||||
FIX: Look and feel v10
|
||||
FIX: missing begin()
|
||||
FIX: missing "$this->id" in "fetch" function
|
||||
FIX: navigation on ticket tab of projects
|
||||
FIX: new invoice with generic thirdparty in takepos
|
||||
FIX: Pb in units of shipments
|
||||
FIX: regression with option to hide picto on top menu
|
||||
FIX: selection of project i am contact of.
|
||||
FIX: Send email from expense report card.
|
||||
FIX: shipping card: missing user error messages when classifying closed or billed
|
||||
FIX: SQL injection on qty
|
||||
FIX: stripe payment when there is a quote into address
|
||||
FIX: Substitution of __PROJECT_XXX__ not done
|
||||
FIX: TakePOS no invoice validation control and good payment translate
|
||||
FIX: the access of the bank account of one user
|
||||
FIX: top menu right padding
|
||||
FIX: Update of leave request when CSRF with token is on
|
||||
FIX: Var not enough sanitized
|
||||
FIX: wrong test
|
||||
FIX: XSS
|
||||
|
||||
***** ChangeLog for 10.0.2 compared to 10.0.1 *****
|
||||
FIX: #10460 compatibility with MariaDB 10.4
|
||||
FIX: #11401 Adherent unknown language key
|
||||
FIX: #11422 Can't edit his own events with standard rights
|
||||
|
||||
@ -518,9 +518,9 @@ else $buttonLabel = $langs->trans("ExportList");
|
||||
|
||||
// Button re-export
|
||||
if (! empty($conf->global->ACCOUNTING_REEXPORT)) {
|
||||
$newcardbutton ='<a href="'.$_SERVER['PHP_SELF'].'?action=setreexport&value=0'.($param?'&'.$param:'').'">'.img_picto($langs->trans("Activated"), 'switch_on').'</a> ';
|
||||
$newcardbutton ='<a class="valignmiddle" href="'.$_SERVER['PHP_SELF'].'?action=setreexport&value=0'.($param?'&'.$param:'').'">'.img_picto($langs->trans("Activated"), 'switch_on').'</a> ';
|
||||
} else {
|
||||
$newcardbutton ='<a href="'.$_SERVER['PHP_SELF'].'?action=setreexport&value=1'.($param?'&'.$param:'').'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a> ';
|
||||
$newcardbutton ='<a class="valignmiddle" href="'.$_SERVER['PHP_SELF'].'?action=setreexport&value=1'.($param?'&'.$param:'').'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a> ';
|
||||
}
|
||||
$newcardbutton.= '<span class="valignmiddle marginrightonly">'.$langs->trans("IncludeDocsAlreadyExported").'</span>';
|
||||
|
||||
|
||||
@ -88,7 +88,7 @@ if ($conf->accounting->enabled)
|
||||
}
|
||||
|
||||
|
||||
print load_fiche_titre($langs->trans("AccountancyArea"), $showtutorial . $resultboxes['selectboxlist'], 'accountancy');
|
||||
print load_fiche_titre($langs->trans("AccountancyArea"), $resultboxes['selectboxlist'], 'accountancy', 0, '', '', $showtutorial);
|
||||
|
||||
print '<div class="'.($helpisexpanded ? '' : 'hideobject').'" id="idfaq">'; // hideobject is to start hidden
|
||||
print "<br>\n";
|
||||
|
||||
@ -1048,6 +1048,7 @@ class BlockedLog
|
||||
if (empty($conf->global->BLOCKEDLOG_ENTITY_FINGERPRINT)) { // creation of a unique fingerprint
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php';
|
||||
|
||||
$fingerprint = dol_hash(print_r($mysoc, true).getRandomPassword(1), '5');
|
||||
|
||||
@ -551,7 +551,7 @@ class Mailing extends CommonObject
|
||||
$result = '';
|
||||
$companylink = '';
|
||||
|
||||
$label = '<u>' . $langs->trans("ShowEmailing") . '</u>';
|
||||
$label = '<u>' . $langs->trans("ShowEMailing") . '</u>';
|
||||
$label.= '<br>';
|
||||
$label.= '<b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
|
||||
|
||||
@ -570,7 +570,7 @@ class Mailing extends CommonObject
|
||||
{
|
||||
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER))
|
||||
{
|
||||
$label=$langs->trans("ShowEmailing");
|
||||
$label=$langs->trans("ShowEMailing");
|
||||
$linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"';
|
||||
}
|
||||
$linkclose.=' title="'.dol_escape_htmltag($label, 1).'"';
|
||||
|
||||
@ -91,15 +91,13 @@ if ($_socid > 0)
|
||||
|
||||
dol_fiche_head($head, $tabchoice, $langs->trans("ThirdParty"), 0, 'company');
|
||||
|
||||
print '<table width="100%" border="0">';
|
||||
print '<tr><td class="tdtop">';
|
||||
print '<table class="border" width="100%">';
|
||||
print '<table class="border centpercent">';
|
||||
|
||||
print '<tr><td colspan="2" width="25%">';
|
||||
print $langs->trans("PriceLevel").'</td><td colspan="2">'.$objsoc->price_level."</td></tr>";
|
||||
print '<tr><td class="titlefieldcreate">';
|
||||
print $langs->trans("PriceLevel").'</td><td>'.$objsoc->price_level."</td></tr>";
|
||||
|
||||
print '<tr><td colspan="2">';
|
||||
print $langs->trans("NewValue").'</td><td colspan="2">';
|
||||
print '<tr><td>';
|
||||
print $langs->trans("NewValue").'</td><td>';
|
||||
print '<select name="price_level" class="flat">';
|
||||
for($i=1;$i<=$conf->global->PRODUIT_MULTIPRICES_LIMIT;$i++)
|
||||
{
|
||||
@ -116,12 +114,6 @@ if ($_socid > 0)
|
||||
|
||||
print "</table>";
|
||||
|
||||
print "</td>\n";
|
||||
|
||||
|
||||
print "</td></tr>";
|
||||
print "</table>";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
print '<div align="center"><input type="submit" class="button" value="'.$langs->trans("Save").'"></div>';
|
||||
@ -157,8 +149,8 @@ if ($_socid > 0)
|
||||
while ($i < $num )
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
$tag = !$tag;
|
||||
print '<tr '.$bc[$tag].'>';
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.dol_print_date($db->jdate($obj->dc), "dayhour").'</td>';
|
||||
print '<td>'.$obj->price_level.' </td>';
|
||||
$userstatic->id=$obj->uid;
|
||||
|
||||
@ -1287,7 +1287,11 @@ class Propal extends CommonObject
|
||||
$object->datep = $now; // deprecated
|
||||
$object->fin_validite = $object->date + ($object->duree_validite * 24 * 3600);
|
||||
if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $object->ref_client = '';
|
||||
|
||||
if ($conf->global->MAIN_DONT_KEEP_NOTE_ON_CLONING==1)
|
||||
{
|
||||
$object->note_private = '';
|
||||
$object->note_public = '';
|
||||
}
|
||||
// Create clone
|
||||
$object->context['createfromclone']='createfromclone';
|
||||
$result=$object->create($user);
|
||||
|
||||
@ -60,6 +60,10 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined,
|
||||
$offset = $conf->liste_limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_FIELD)) { $sortfield=$conf->global->MAIN_DOC_SORT_FIELD; }
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_ORDER)) { $sortorder=$conf->global->MAIN_DOC_SORT_ORDER; }
|
||||
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
if (! $sortfield) $sortfield="name";
|
||||
|
||||
|
||||
@ -59,6 +59,10 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined,
|
||||
$offset = $conf->liste_limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_FIELD)) { $sortfield=$conf->global->MAIN_DOC_SORT_FIELD; }
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_ORDER)) { $sortorder=$conf->global->MAIN_DOC_SORT_ORDER; }
|
||||
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
if (! $sortfield) $sortfield="name";
|
||||
|
||||
|
||||
@ -454,7 +454,7 @@ foreach ($accounts as $key=>$type)
|
||||
if (! empty($arrayfields['b.account_number']['checked']))
|
||||
{
|
||||
print '<td>';
|
||||
if (! empty($conf->accounting->enabled))
|
||||
if (! empty($conf->accounting->enabled) && ! empty($objecttmp->account_number))
|
||||
{
|
||||
$accountingaccount = new AccountingAccount($db);
|
||||
$accountingaccount->fetch('', $objecttmp->account_number, 1);
|
||||
@ -472,7 +472,7 @@ foreach ($accounts as $key=>$type)
|
||||
if (! empty($arrayfields['b.fk_accountancy_journal']['checked']))
|
||||
{
|
||||
print '<td>';
|
||||
if (! empty($conf->accounting->enabled))
|
||||
if (! empty($conf->accounting->enabled) && ! empty($objecttmp->fk_accountancy_journal))
|
||||
{
|
||||
$accountingjournal = new AccountingJournal($db);
|
||||
$accountingjournal->fetch($objecttmp->fk_accountancy_journal);
|
||||
@ -505,8 +505,13 @@ foreach ($accounts as $key=>$type)
|
||||
if ($result<0) {
|
||||
setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
|
||||
} else {
|
||||
print $result->nbtodo;
|
||||
if ($result->nbtodolate) print ' ('.$result->nbtodolate.img_warning($langs->trans("Late")).')';
|
||||
print '<span class="badge badge-info classfortooltip" title="'.dol_htmlentities($langs->trans("TransactionsToConciliate")).'">'.$result->nbtodo.'</span>';
|
||||
if ($result->nbtodolate) {
|
||||
print ' ';
|
||||
print '<span title="'.dol_htmlentities($langs->trans("Late")).'" class="classfortooltip badge badge-danger">';
|
||||
print '<i class="fa fa-exclamation-triangle"></i> '.$result->nbtodolate;
|
||||
print '</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
else print $langs->trans("FeatureDisabled");
|
||||
|
||||
@ -1046,6 +1046,11 @@ class Facture extends CommonInvoice
|
||||
$object->close_code = '';
|
||||
$object->close_note = '';
|
||||
$object->products = $object->lines; // For backward compatibility
|
||||
if ($conf->global->MAIN_DONT_KEEP_NOTE_ON_CLONING==1)
|
||||
{
|
||||
$object->note_private = '';
|
||||
$object->note_public = '';
|
||||
}
|
||||
|
||||
// Loop on each line of new invoice
|
||||
foreach($object->lines as $i => $line)
|
||||
|
||||
@ -260,6 +260,7 @@ if (empty($reshook))
|
||||
if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->societe->contact->supprimer)
|
||||
{
|
||||
$result=$object->fetch($id);
|
||||
$object->oldcopy = clone $object;
|
||||
|
||||
$object->old_lastname = GETPOST("old_lastname");
|
||||
$object->old_firstname = GETPOST("old_firstname");
|
||||
|
||||
@ -1557,8 +1557,8 @@ class Contact extends CommonObject
|
||||
/**
|
||||
* Get Contact roles for a thirdparty
|
||||
*
|
||||
* @param string $element element type
|
||||
* @return array|int
|
||||
* @param string $element Element type
|
||||
* @return array|int Array of contact roles or -1
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getContactRoles($element = '')
|
||||
|
||||
@ -62,6 +62,10 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined,
|
||||
$offset = $conf->liste_limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_FIELD)) { $sortfield=$conf->global->MAIN_DOC_SORT_FIELD; }
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_ORDER)) { $sortorder=$conf->global->MAIN_DOC_SORT_ORDER; }
|
||||
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
if (! $sortfield) $sortfield="name";
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2016 Sergio Sanchis <sergiosanchis@hotmail.com>
|
||||
* Copyright (C) 2017 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -16,6 +17,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1');
|
||||
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Disables token renewal
|
||||
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1');
|
||||
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1');
|
||||
|
||||
@ -74,7 +74,7 @@ class box_accountancy_suspense_account extends ModeleBoxes
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
|
||||
|
||||
$bookkeepingstatic = new BookKeeping($this->db);
|
||||
//$bookkeepingstatic = new BookKeeping($this->db);
|
||||
|
||||
$this->info_box_head = array('text' => $langs->trans("BoxTitleSuspenseAccount"));
|
||||
|
||||
@ -103,7 +103,7 @@ class box_accountancy_suspense_account extends ModeleBoxes
|
||||
|
||||
$this->info_box_contents[0][1] = array(
|
||||
'td' => 'class="right"',
|
||||
'text' => '<a href="' . DOL_URL_ROOT . '/accountancy/bookkeeping/list.php?search_accountancy_code_start='.$suspenseAccount.'&search_accountancy_code_end='.$suspenseAccount.'">' . $nbSuspenseAccount . '</a>',
|
||||
'text' => '<a href="' . DOL_URL_ROOT . '/accountancy/bookkeeping/list.php?search_accountancy_code_start='.urlencode($suspenseAccount).'&search_accountancy_code_end='.urlencode($suspenseAccount).'">' . $nbSuspenseAccount . '</a>',
|
||||
'asis' => 1
|
||||
);
|
||||
} else {
|
||||
|
||||
@ -47,7 +47,7 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param DoliDB $db Database handler
|
||||
* @param DoliDB $db Database handler
|
||||
* @param string $param More parameters
|
||||
*/
|
||||
public function __construct($db, $param = '')
|
||||
@ -71,7 +71,7 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
|
||||
$this->max = $max;
|
||||
|
||||
dol_include_once("/ticket/class/ticket.class.php");
|
||||
require_once DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php";
|
||||
|
||||
$text = $langs->trans("BoxLastModifiedTicketDescription", $max);
|
||||
$this->info_box_head = array(
|
||||
@ -87,7 +87,7 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
if ($user->rights->ticket->read) {
|
||||
$sql = "SELECT t.rowid as id, t.ref, t.track_id, t.fk_soc, t.fk_user_create, t.fk_user_assign, t.subject, t.message, t.fk_statut, t.type_code, t.category_code, t.severity_code, t.datec, t.date_read, t.date_close, t.origin_email ";
|
||||
$sql.= ", type.label as type_label, category.label as category_label, severity.label as severity_label";
|
||||
$sql.= ", s.nom as company_name";
|
||||
$sql.= ", s.nom as company_name, s.email as socemail, s.client, s.fournisseur";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."ticket as t";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_type as type ON type.code=t.type_code";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_category as category ON category.code=t.category_code";
|
||||
@ -107,7 +107,6 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$num = $this->db->num_rows($resql);
|
||||
$now=gmmktime();
|
||||
|
||||
$i = 0;
|
||||
|
||||
@ -119,23 +118,31 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
$late = '';
|
||||
|
||||
$ticket = new Ticket($this->db);
|
||||
$ticket->id = $objp->id;
|
||||
$ticket->track_id = $objp->track_id;
|
||||
$ticket->ref = $objp->ref;
|
||||
$ticket->fk_statut = $objp->fk_statut;
|
||||
$ticket->subject = $objp->subject;
|
||||
if ($objp->fk_soc > 0) {
|
||||
$thirdparty = new Societe($this->db);
|
||||
$thirdparty->id = $objp->fk_soc;
|
||||
$thirdparty->email = $objp->socemail;
|
||||
$thirdparty->client = $objp->client;
|
||||
$thirdparty->fournisseur = $objp->fournisseur;
|
||||
$thirdparty->name = $objp->company_name;
|
||||
$link = $thirdparty->getNomUrl(1);
|
||||
} else {
|
||||
$link = dol_print_email($objp->origin_email);
|
||||
}
|
||||
|
||||
|
||||
$r=0;
|
||||
|
||||
// Picto
|
||||
// Ticket
|
||||
$this->info_box_contents[$i][0] = array(
|
||||
'td' => 'class="left" width="16"',
|
||||
'logo' => $this->boximg,
|
||||
'url' => dol_buildpath("/ticket/card.php?track_id=".$objp->track_id, 1),
|
||||
);
|
||||
$r++;
|
||||
|
||||
// Id
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="left"',
|
||||
'text' => $objp->ref,
|
||||
'url' => dol_buildpath("/ticket/card.php?track_id=".$objp->track_id, 1),
|
||||
'text' => $ticket->getNomUrl(1),
|
||||
'asis' => 1,
|
||||
);
|
||||
$r++;
|
||||
|
||||
@ -143,16 +150,15 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="left"',
|
||||
'text' => $objp->subject, // Some event have no ref
|
||||
'url' => dol_buildpath("/ticket/card.php?track_id=".$objp->track_id, 1),
|
||||
'url' => DOL_URL_ROOT."/ticket/card.php?track_id=".$objp->track_id,
|
||||
);
|
||||
$r++;
|
||||
|
||||
// Customer
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="left"',
|
||||
'logo' => ($objp->fk_soc>0?'company':''),
|
||||
'text' => ($objp->company_name?$objp->company_name:$objp->origin_email),
|
||||
'url' => ($objp->fk_soc>0?DOL_URL_ROOT."/comm/card.php?socid=".$objp->fk_soc:'')
|
||||
'text' => $link,
|
||||
'asis' => 1,
|
||||
);
|
||||
$r++;
|
||||
|
||||
@ -165,11 +171,9 @@ class box_last_modified_ticket extends ModeleBoxes
|
||||
$r++;
|
||||
|
||||
// Statut
|
||||
$ticketstat = new Ticket($this->db);
|
||||
$ticketstat->fk_statut = $objp->fk_statut;
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="right"',
|
||||
'text' => $ticketstat->getLibStatut(3)
|
||||
'text' => $ticket->getLibStatut(3)
|
||||
);
|
||||
$r++;
|
||||
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
<?php
|
||||
/* Module descriptor for ticket system
|
||||
* Copyright (C) - 2013-2016 Jean-François FERRY <hello@librethic.io>
|
||||
* 2016 Christophe Battarel <christophe@altairis.fr>
|
||||
* Copyright (C) 2013-2016 Jean-François FERRY <hello@librethic.io>
|
||||
* Copyright (C) 2016 Christophe Battarel <christophe@altairis.fr>
|
||||
* Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -46,7 +47,7 @@ class box_last_ticket extends ModeleBoxes
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param DoliDB $db Database handler
|
||||
* @param DoliDB $db Database handler
|
||||
* @param string $param More parameters
|
||||
*/
|
||||
public function __construct($db, $param = '')
|
||||
@ -70,7 +71,7 @@ class box_last_ticket extends ModeleBoxes
|
||||
|
||||
$this->max = $max;
|
||||
|
||||
dol_include_once("/ticket/class/ticket.class.php");
|
||||
require_once DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php";
|
||||
|
||||
$text = $langs->trans("BoxLastTicketDescription", $max);
|
||||
$this->info_box_head = array(
|
||||
@ -86,7 +87,7 @@ class box_last_ticket extends ModeleBoxes
|
||||
if ($user->rights->ticket->read) {
|
||||
$sql = "SELECT t.rowid as id, t.ref, t.track_id, t.fk_soc, t.fk_user_create, t.fk_user_assign, t.subject, t.message, t.fk_statut, t.type_code, t.category_code, t.severity_code, t.datec, t.date_read, t.date_close, t.origin_email ";
|
||||
$sql .= ", type.label as type_label, category.label as category_label, severity.label as severity_label";
|
||||
$sql .= ", s.nom as company_name";
|
||||
$sql .= ", s.nom as company_name, s.email as socemail, s.client, s.fournisseur";
|
||||
$sql .= " FROM " . MAIN_DB_PREFIX . "ticket as t";
|
||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_ticket_type as type ON type.code=t.type_code";
|
||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_ticket_category as category ON category.code=t.category_code";
|
||||
@ -108,7 +109,6 @@ class box_last_ticket extends ModeleBoxes
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$num = $this->db->num_rows($resql);
|
||||
$now = gmmktime();
|
||||
|
||||
$i = 0;
|
||||
|
||||
@ -120,22 +120,30 @@ class box_last_ticket extends ModeleBoxes
|
||||
$late = '';
|
||||
|
||||
$ticket = new Ticket($this->db);
|
||||
$ticket->id = $objp->id;
|
||||
$ticket->track_id = $objp->track_id;
|
||||
$ticket->ref = $objp->ref;
|
||||
$ticket->fk_statut = $objp->fk_statut;
|
||||
$ticket->subject = $objp->subject;
|
||||
if ($objp->fk_soc > 0) {
|
||||
$thirdparty = new Societe($this->db);
|
||||
$thirdparty->id = $objp->fk_soc;
|
||||
$thirdparty->email = $objp->socemail;
|
||||
$thirdparty->client = $objp->client;
|
||||
$thirdparty->fournisseur = $objp->fournisseur;
|
||||
$thirdparty->name = $objp->company_name;
|
||||
$link = $thirdparty->getNomUrl(1);
|
||||
} else {
|
||||
$link = dol_print_email($objp->origin_email);
|
||||
}
|
||||
|
||||
$r = 0;
|
||||
|
||||
// Picto
|
||||
$this->info_box_contents[$i][0] = array(
|
||||
'td' => 'class="left" width="16"',
|
||||
'logo' => $this->boximg,
|
||||
'url' => dol_buildpath("/ticket/card.php?track_id=" . $objp->track_id, 1),
|
||||
);
|
||||
$r++;
|
||||
|
||||
// Id
|
||||
// Ticket
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="left"',
|
||||
'text' => $objp->ref,
|
||||
'url' => dol_buildpath("/ticket/card.php?track_id=" . $objp->track_id, 1),
|
||||
'text' => $ticket->getNomUrl(1),
|
||||
'asis' => 1
|
||||
);
|
||||
$r++;
|
||||
|
||||
@ -143,16 +151,15 @@ class box_last_ticket extends ModeleBoxes
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="left"',
|
||||
'text' => $objp->subject, // Some event have no ref
|
||||
'url' => dol_buildpath("/ticket/card.php?track_id=" . $objp->track_id, 1),
|
||||
'url' => DOL_URL_ROOT."/ticket/card.php?track_id=" . $objp->track_id,
|
||||
);
|
||||
$r++;
|
||||
|
||||
// Customer
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="left"',
|
||||
'logo' => ($objp->fk_soc > 0 ? 'company' : ''),
|
||||
'text' => ($objp->company_name ? $objp->company_name : $objp->origin_email),
|
||||
'url' => ($objp->fk_soc > 0 ? DOL_URL_ROOT . "/comm/card.php?socid=" . $objp->fk_soc : ''),
|
||||
'text' => $link,
|
||||
'asis' => 1,
|
||||
);
|
||||
$r++;
|
||||
|
||||
@ -164,11 +171,9 @@ class box_last_ticket extends ModeleBoxes
|
||||
$r++;
|
||||
|
||||
// Statut
|
||||
$ticketstat = new Ticket($this->db);
|
||||
$ticketstat->fk_statut = $objp->fk_statut;
|
||||
$this->info_box_contents[$i][$r] = array(
|
||||
'td' => 'class="right"',
|
||||
'text' => $ticketstat->getLibStatut(3),
|
||||
'text' => $ticket->getLibStatut(3),
|
||||
);
|
||||
$r++;
|
||||
|
||||
|
||||
@ -227,10 +227,7 @@ class Conf
|
||||
$filesList = explode(":", $this->global->LOCAL_CONSTS_FILES);
|
||||
foreach ($filesList as $file) {
|
||||
$file=dol_sanitizeFileName($file);
|
||||
include_once DOL_DOCUMENT_ROOT . "/".$file."/".$file."_consts.php";
|
||||
foreach ($file2bddconsts as $key=>$value) {
|
||||
$this->global->$key=$value;
|
||||
}
|
||||
include_once DOL_DOCUMENT_ROOT . "/".$file."/".$file."_consts.php"; // This file must set $this->global->XXX vars.
|
||||
}
|
||||
}
|
||||
|
||||
@ -442,7 +439,6 @@ class Conf
|
||||
|
||||
// Set some default values
|
||||
//$this->global->MAIN_LIST_FILTER_ON_DAY=1; // On filter that show date, we must show input field for day before or after month
|
||||
$this->global->MAIN_ACTIVATE_HTML5=1;
|
||||
$this->global->MAIN_MAIL_USE_MULTI_PART=1;
|
||||
|
||||
// societe
|
||||
@ -669,6 +665,8 @@ class Conf
|
||||
|
||||
if (! isset($this->global->MAIN_EXTRAFIELDS_IN_ONE_TD)) $this->global->MAIN_EXTRAFIELDS_IN_ONE_TD = 1;
|
||||
|
||||
if (! isset($this->global->MAIN_USE_OLD_TITLE_BUTTON)) $this->global->MAIN_USE_OLD_TITLE_BUTTON = 0;
|
||||
|
||||
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_SRV)) $this->global->MAIN_MODULE_DOLISTORE_API_SRV='https://www.dolistore.com';
|
||||
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_KEY)) $this->global->MAIN_MODULE_DOLISTORE_API_KEY='dolistorecatalogpublickey1234567';
|
||||
|
||||
|
||||
@ -4152,9 +4152,9 @@ function load_fiche_titre($titre, $morehtmlright = '', $picto = 'generic', $pict
|
||||
if ($picto == 'setup') $picto='generic';
|
||||
|
||||
$return.= "\n";
|
||||
$return.= '<table '.($id?'id="'.$id.'" ':'').'class="centpercent notopnoleftnoright'.($morecssontable?' '.$morecssontable:'').'" style="margin-bottom: 6px;"><tr>'; // maring bottom must be same than into print_barre_list
|
||||
if ($picto) $return.= '<td class="nobordernopadding widthpictotitle opacityhigh valignmiddle">'.img_picto('', $picto, 'class="valignmiddle widthpictotitle pictotitle"', $pictoisfullpath).'</td>';
|
||||
$return.= '<td class="nobordernopadding valignmiddle">';
|
||||
$return.= '<table '.($id?'id="'.$id.'" ':'').'class="centpercent notopnoleftnoright table-fiche-title '.($morecssontable?' '.$morecssontable:'').'"><tr>'; // maring bottom must be same than into print_barre_list
|
||||
if ($picto) $return.= '<td class="nobordernopadding widthpictotitle opacityhigh valignmiddle col-picto">'.img_picto('', $picto, 'class="valignmiddle widthpictotitle pictotitle"', $pictoisfullpath).'</td>';
|
||||
$return.= '<td class="nobordernopadding valignmiddle col-title">';
|
||||
$return.= '<div class="titre inline-block">'.$titre.'</div>';
|
||||
$return.= '</td>';
|
||||
if (dol_strlen($morehtmlcenter))
|
||||
@ -4214,11 +4214,10 @@ function print_barre_liste($titre, $page, $file, $options = '', $sortfield = '',
|
||||
|
||||
print "\n";
|
||||
print "<!-- Begin title '".$titre."' -->\n";
|
||||
print '<table class="centpercent notopnoleftnoright'.($morecss?' '.$morecss:'').'" style="margin-bottom: 6px; border: 0"><tr>'; // maring bottom must be same than into load_fiche_tire
|
||||
print '<table class="centpercent notopnoleftnoright table-fiche-title'.($morecss?' '.$morecss:'').'"><tr>'; // maring bottom must be same than into load_fiche_tire
|
||||
|
||||
// Left
|
||||
//if ($picto && $titre) print '<td class="nobordernopadding hideonsmartphone left valignmiddle" style="width: 40px">'.img_picto('', $picto, 'id="pictotitle"', $pictoisfullpath).'</td>';
|
||||
print '<td class="nobordernopadding valignmiddle">';
|
||||
print '<td class="nobordernopadding valignmiddle col-title">';
|
||||
if ($picto && $titre) print img_picto('', $picto, 'class="hideonsmartphone valignmiddle opacityhigh pictotitle widthpictotitle"', $pictoisfullpath);
|
||||
print '<div class="titre inline-block">'.$titre;
|
||||
if (!empty($titre) && $savtotalnboflines >= 0 && (string) $savtotalnboflines != '') print ' ('.$totalnboflines.')';
|
||||
@ -8310,7 +8309,7 @@ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $u
|
||||
|
||||
$class = 'btnTitle';
|
||||
// hidden conf keep during button transition TODO: remove this block
|
||||
if (empty($conf->global->MAIN_USE_NEW_TITLE_BUTTON)) {
|
||||
if (!empty($conf->global->MAIN_USE_OLD_TITLE_BUTTON)) {
|
||||
$class = 'butActionNew';
|
||||
}
|
||||
if (! empty($params['morecss'])) $class.=' '.$params['morecss'];
|
||||
@ -8328,7 +8327,7 @@ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $u
|
||||
$attr['class'] .= ' refused';
|
||||
|
||||
// hidden conf keep during button transition TODO: remove this block
|
||||
if(empty($conf->global->MAIN_USE_NEW_TITLE_BUTTON)){
|
||||
if(!empty($conf->global->MAIN_USE_OLD_TITLE_BUTTON)){
|
||||
$attr['class'] = 'butActionNewRefused';
|
||||
}
|
||||
|
||||
@ -8390,7 +8389,7 @@ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $u
|
||||
$button.= '</'.$tag.'>';
|
||||
|
||||
// hidden conf keep during button transition TODO: remove this block
|
||||
if(empty($conf->global->MAIN_USE_NEW_TITLE_BUTTON)){
|
||||
if(!empty($conf->global->MAIN_USE_OLD_TITLE_BUTTON)){
|
||||
$button='<'.$tag.' '.$compiledAttributes.' ><span class="text-plus-circle">'.$label.'</span>';
|
||||
$button.= '<span class="'.$iconClass.' valignmiddle"></span>';
|
||||
$button.= '</'.$tag.'>';
|
||||
|
||||
@ -151,6 +151,7 @@ function showDirectPublicLink($object)
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
|
||||
$email = CMailFile::getValidAddress($object->origin_email, 2);
|
||||
$url = '';
|
||||
if ($email)
|
||||
{
|
||||
$url = dol_buildpath('/public/ticket/view.php', 3).'?track_id='.$object->track_id.'&email='.$email;
|
||||
|
||||
@ -397,7 +397,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].($edit?'?action=edit&theme=':'?theme=').$subdir.(GETPOST('optioncss', 'alpha', 1)?'&optioncss='.GETPOST('optioncss', 'alpha', 1):'').($fuser?'&id='.$fuser->id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">';
|
||||
if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive");
|
||||
else $title=$langs->trans("ShowPreview");
|
||||
print '<img class="shadow" src="'.$url.'" alt="'.$title.'" title="'.$title.'" style="width: 80px; height: 60px; border: none; margin-bottom: 5px;">';
|
||||
print '<img class="img-skinthumb shadow" src="'.$url.'" alt="'.$title.'" title="'.$title.'" style="border: none; margin-bottom: 5px;">';
|
||||
print '</a><br>';
|
||||
if ($subdir == $selected_theme)
|
||||
{
|
||||
|
||||
@ -433,7 +433,7 @@ function showWebsiteTemplates(Website $website)
|
||||
if (! empty($urladvanced)) $ret.='<a class="'.$urladvanced['css'].'" target="'.$urladvanced['target'].'" mime="'.$urladvanced['mime'].'" href="'.$urladvanced['url'].'">';
|
||||
else $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($originalfile).'&cache='.$cache.'">';
|
||||
print $ret;
|
||||
print '<img class="websiteskinthumb shadow" src="'.$url.'" border="0" width="80" height="60" alt="'.$title.'" title="'.$title.'" style="margin-bottom: 5px;">';
|
||||
print '<img class="img-skinthumb shadow" src="'.$url.'" border="0" alt="'.$title.'" title="'.$title.'" style="margin-bottom: 5px;">';
|
||||
print '</a>';
|
||||
|
||||
print '<br>';
|
||||
|
||||
@ -180,7 +180,9 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile)
|
||||
|
||||
if (! empty($location)) fwrite($calfileh, "LOCATION:".$encoding.$location."\n");
|
||||
if ($fulldayevent) fwrite($calfileh, "X-FUNAMBOL-ALLDAY:1\n");
|
||||
if ($fulldayevent) fwrite($calfileh, "X-MICROSOFT-CDO-ALLDAYEVENT:1\n");
|
||||
|
||||
// see https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxcical/0f262da6-c5fd-459e-9f18-145eba86b5d2
|
||||
if ($fulldayevent) fwrite($calfileh, "X-MICROSOFT-CDO-ALLDAYEVENT:TRUE\n");
|
||||
|
||||
// Date must be GMT dates
|
||||
// Current date
|
||||
|
||||
@ -47,23 +47,23 @@ abstract class ModeleAction extends CommonDocGenerator
|
||||
global $conf;
|
||||
|
||||
$type='action';
|
||||
$liste=array();
|
||||
$list=array();
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
$liste=getListOfModels($db, $type, $maxfilenamelength);
|
||||
$list=getListOfModels($db, $type, $maxfilenamelength);
|
||||
|
||||
return $liste;
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps
|
||||
/**
|
||||
* Create an product document on disk using template defined into PRODUCT_ADDON_PDF
|
||||
* Create a product document on disk using template defined into PRODUCT_ADDON_PDF
|
||||
*
|
||||
* @param DoliDB $db objet base de donnee
|
||||
* @param DoliDB $db data base object
|
||||
* @param Object $object Object fichinter
|
||||
* @param string $modele force le modele a utiliser ('' par defaut)
|
||||
* @param Translate $outputlangs objet lang a utiliser pour traduction
|
||||
* @param string $modele forces the model to use ('' by default)
|
||||
* @param Translate $outputlangs lang object to use for translation
|
||||
* @param int $hidedetails Hide details of lines
|
||||
* @param int $hidedesc Hide description
|
||||
* @param int $hideref Hide ref
|
||||
@ -79,7 +79,7 @@ function action_create($db, $object, $modele, $outputlangs, $hidedetails = 0, $h
|
||||
|
||||
$srctemplatepath='';
|
||||
|
||||
// Positionne modele sur le nom du modele de fichinter a utiliser
|
||||
// Position modele on the name of fichinter model to use
|
||||
if (! dol_strlen($modele))
|
||||
{
|
||||
if (! empty($conf->global->ACTION_EVENT_ADDON_PDF))
|
||||
|
||||
@ -307,7 +307,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
||||
|
||||
// Positionne $this->atleastonediscount si on a au moins une remise
|
||||
// Set $this->atleastonediscount if you have at least one discount
|
||||
for ($i = 0 ; $i < $nblines ; $i++)
|
||||
{
|
||||
if ($object->lines[$i]->remise_percent)
|
||||
@ -361,7 +361,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
}
|
||||
}
|
||||
|
||||
// Affiche notes
|
||||
// Displays notes
|
||||
$notetoshow=empty($object->note_public)?'':$object->note_public;
|
||||
if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE))
|
||||
{
|
||||
@ -461,7 +461,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$pdf->setPage($pageposafter); $curY = $tab_top_newpage;
|
||||
}
|
||||
|
||||
$pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par defaut
|
||||
$pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font
|
||||
|
||||
// VAT Rate
|
||||
if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT) && empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN))
|
||||
@ -503,7 +503,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$pdf->SetXY($this->postotalht, $curY);
|
||||
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalht, 3, $total_excl_tax, 0, 'R', 0);
|
||||
|
||||
// Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva
|
||||
// Collection of totals by value of vat in $this->vat["rate"] = total_tva
|
||||
if ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) $tvaligne=$object->lines[$i]->multicurrency_total_tva;
|
||||
else $tvaligne=$object->lines[$i]->total_tva;
|
||||
|
||||
|
||||
@ -430,7 +430,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
{
|
||||
$pdf->rollbackTransaction(true);
|
||||
|
||||
// prepar pages to receive notes
|
||||
// prepare pages to receive notes
|
||||
while ($pagenb < $pageposafternote) {
|
||||
$pdf->AddPage();
|
||||
$pagenb++;
|
||||
@ -464,7 +464,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
}
|
||||
|
||||
|
||||
// apply note frame to previus pages
|
||||
// apply note frame to previous pages
|
||||
$i = $pageposbeforenote;
|
||||
while ($i < $pageposafternote) {
|
||||
$pdf->setPage($i);
|
||||
@ -526,7 +526,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
}
|
||||
|
||||
|
||||
// Use new auto collum system
|
||||
// Use new auto column system
|
||||
$this->prepareArrayColumnField($object, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||
|
||||
// tab simulation to know line height
|
||||
@ -636,7 +636,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
$pdf->setPage($pageposafter); $curY = $tab_top_newpage;
|
||||
}
|
||||
|
||||
$pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par defaut
|
||||
$pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font
|
||||
|
||||
// VAT Rate
|
||||
if ($this->getColumnStatus('vat'))
|
||||
@ -701,7 +701,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
$reshook=$hookmanager->executeHooks('printPDFline', $parameters, $this); // Note that $object may have been modified by hook
|
||||
|
||||
|
||||
// Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva
|
||||
// Collection of totals by value of vat in $this->tva["rate"] = total_tva
|
||||
if ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) $tvaligne=$object->lines[$i]->multicurrency_total_tva;
|
||||
else $tvaligne=$object->lines[$i]->total_tva;
|
||||
|
||||
|
||||
@ -270,6 +270,7 @@ class modSociete extends DolibarrModules
|
||||
'st.code'=>'ProspectStatus','payterm.libelle'=>'PaymentConditions','paymode.libelle'=>'PaymentMode'
|
||||
);
|
||||
if (! empty($conf->global->SOCIETE_USEPREFIX)) $this->export_fields_array[$r]['s.prefix']='Prefix';
|
||||
if (! empty($conf->global->PRODUIT_MULTIPRICES)) $this->export_fields_array[$r]['s.price_level']='PriceLevel';
|
||||
// Add multicompany field
|
||||
if (! empty($conf->global->MULTICOMPANY_ENTITY_IN_EXPORT_IF_SHARED))
|
||||
{
|
||||
@ -295,7 +296,8 @@ class modSociete extends DolibarrModules
|
||||
's.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",
|
||||
'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code',
|
||||
'st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text','payterm.libelle'=>'Text',
|
||||
'paymode.libelle'=>'Text','s.entity'=>'Numeric'
|
||||
'paymode.libelle'=>'Text','s.entity'=>'Numeric',
|
||||
's.price_level'=>'Numeric'
|
||||
);
|
||||
|
||||
$this->export_entities_array[$r]=array('u.login'=>'user','u.firstname'=>'user','u.lastname'=>'user'); // We define here only fields that use another picto
|
||||
|
||||
@ -90,20 +90,23 @@ class InterfaceContactRoles extends DolibarrTriggers
|
||||
if (!empty($cloneFrom->id)) $TContactAlreadyLinked = array_merge($cloneFrom->liste_contact(-1, 'external'), $cloneFrom->liste_contact(-1, 'internal'));
|
||||
}
|
||||
|
||||
foreach($TContact as $i => $infos) {
|
||||
foreach ($TContactAlreadyLinked as $contactData) {
|
||||
if($contactData['id'] == $infos['fk_socpeople'] && $contactData['fk_c_type_contact'] == $infos['type_contact']) unset($TContact[$i]);
|
||||
if (is_array($TContact))
|
||||
{
|
||||
foreach($TContact as $i => $infos) {
|
||||
foreach ($TContactAlreadyLinked as $contactData) {
|
||||
if ($contactData['id'] == $infos['fk_socpeople'] && $contactData['fk_c_type_contact'] == $infos['type_contact']) unset($TContact[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$nb = 0;
|
||||
foreach($TContact as $infos) {
|
||||
$res = $object->add_contact($infos['fk_socpeople'], $infos['type_contact']);
|
||||
if($res > 0) $nb++;
|
||||
}
|
||||
$nb = 0;
|
||||
foreach($TContact as $infos) {
|
||||
$res = $object->add_contact($infos['fk_socpeople'], $infos['type_contact']);
|
||||
if ($res > 0) $nb++;
|
||||
}
|
||||
|
||||
if($nb > 0) {
|
||||
setEventMessages($langs->trans('ContactAddedAutomatically', $nb), null, 'mesgs');
|
||||
if($nb > 0) {
|
||||
setEventMessages($langs->trans('ContactAddedAutomatically', $nb), null, 'mesgs');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -399,8 +399,7 @@ class Export
|
||||
$szFilterField='<input type="text" size="6" name="'.$NameField.'" value="'.$ValueField.'">';
|
||||
break;
|
||||
case 'Status':
|
||||
if (! empty($conf->global->MAIN_ACTIVATE_HTML5)) $szFilterField='<input type="number" size="6" name="'.$NameField.'" value="'.$ValueField.'">';
|
||||
else $szFilterField='<input type="text" size="6" name="'.$NameField.'" value="'.$ValueField.'">';
|
||||
$szFilterField='<input type="number" size="6" name="'.$NameField.'" value="'.$ValueField.'">';
|
||||
break;
|
||||
case 'Boolean':
|
||||
$szFilterField='<select name="'.$NameField.'" class="flat">';
|
||||
|
||||
@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/export/modules_export.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadlangs(array('exports', 'other', 'users', 'companies', 'projects', 'banks'));
|
||||
$langs->loadlangs(array('admin', 'exports', 'other', 'users', 'companies', 'projects', 'suppliers', 'products', 'bank'));
|
||||
|
||||
// Everybody should be able to go on this page
|
||||
//if (! $user->admin)
|
||||
|
||||
@ -85,10 +85,7 @@ if (empty($reshook))
|
||||
$result=$object->fetch($id);
|
||||
$object->code_compta_fournisseur=$_POST["supplieraccountancycode"];
|
||||
$result=$object->update($object->id, $user, 1, 0, 1);
|
||||
if ($result < 0)
|
||||
{
|
||||
$mesg=join(',', $object->errors);
|
||||
}
|
||||
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
// terms of the settlement
|
||||
if ($action == 'setconditions' && $user->rights->societe->creer)
|
||||
|
||||
@ -785,7 +785,7 @@ if ($resql)
|
||||
if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'], $_SERVER["PHP_SELF"], "country.code_iso", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||
if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'], $_SERVER["PHP_SELF"], "typent.code", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||
if (! empty($arrayfields['f.fk_mode_reglement']['checked'])) print_liste_field_titre($arrayfields['f.fk_mode_reglement']['label'], $_SERVER["PHP_SELF"], "f.fk_mode_reglement", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['f.total_ht']['checked'])) print_liste_field_titre($arrayfields['f.total_ht']['label'], $_SERVER['PHP_SELF'], 'f.total', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||
if (! empty($arrayfields['f.total_ht']['checked'])) print_liste_field_titre($arrayfields['f.total_ht']['label'], $_SERVER['PHP_SELF'], 'f.total_ht', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||
if (! empty($arrayfields['f.total_vat']['checked'])) print_liste_field_titre($arrayfields['f.total_vat']['label'], $_SERVER['PHP_SELF'], 'f.tva', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||
if (! empty($arrayfields['f.total_localtax1']['checked'])) print_liste_field_titre($arrayfields['f.total_localtax1']['label'], $_SERVER['PHP_SELF'], 'f.localtax1', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||
if (! empty($arrayfields['f.total_localtax2']['checked'])) print_liste_field_titre($arrayfields['f.total_localtax2']['label'], $_SERVER['PHP_SELF'], 'f.localtax2', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||
|
||||
@ -225,7 +225,7 @@ if (! empty($conf->holiday->enabled) && $user->rights->holiday->read)
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td class="nowraponall">'.$holidaystatic->getNomUrl(1).'</td>';
|
||||
print '<td>'.$userstatic->getNomUrl(-1, 'leave').'</td>';
|
||||
print '<td class="tdoverflowmax150">'.$userstatic->getNomUrl(-1, 'leave').'</td>';
|
||||
print '<td>'.$typeleaves[$obj->fk_type]['label'].'</td>';
|
||||
|
||||
$starthalfday=($obj->halfday == -1 || $obj->halfday == 2)?'afternoon':'morning';
|
||||
@ -304,7 +304,7 @@ if (! empty($conf->deplacement->enabled) && $user->rights->deplacement->lire)
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td class="nowraponall">'.$deplacementstatic->getNomUrl(1).'</td>';
|
||||
print '<td>'.$userstatic->getNomUrl(-1).'</td>';
|
||||
print '<td class="tdoverflowmax150">'.$userstatic->getNomUrl(-1).'</td>';
|
||||
print '<td class="right">'.$obj->km.'</td>';
|
||||
print '<td class="right">'.dol_print_date($db->jdate($obj->dm), 'day').'</td>';
|
||||
print '<td>'.$deplacementstatic->LibStatut($obj->fk_statut, 3).'</td>';
|
||||
@ -376,7 +376,7 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
print '<td class="nowraponall">'.$expensereportstatic->getNomUrl(1).'</td>';
|
||||
print '<td>'.$userstatic->getNomUrl(-1).'</td>';
|
||||
print '<td class="tdoverflowmax150">'.$userstatic->getNomUrl(-1).'</td>';
|
||||
print '<td class="right">'.price($obj->total_ttc).'</td>';
|
||||
print '<td class="right">'.dol_print_date($db->jdate($obj->dm), 'day').'</td>';
|
||||
print '<td>'.$expensereportstatic->LibStatut($obj->status, 3).'</td>';
|
||||
|
||||
@ -212,7 +212,7 @@ if (empty($user->societe_id) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTAT
|
||||
'askprice',
|
||||
'projects',
|
||||
'expensereports',
|
||||
'holidays',
|
||||
'holiday',
|
||||
'donations'
|
||||
);
|
||||
// Dashboard Icon lines
|
||||
|
||||
@ -1070,6 +1070,7 @@ CompanyTown=Town
|
||||
CompanyCountry=Country
|
||||
CompanyCurrency=Main currency
|
||||
CompanyObject=Object of the company
|
||||
IDCountry=ID country
|
||||
Logo=Logo
|
||||
LogoDesc=Main logo of company. Will be used into generated documents (PDF, ...)
|
||||
LogoSquarred=Logo (squarred)
|
||||
|
||||
@ -213,8 +213,8 @@ UseMultipriceRules=Use price segment rules (defined into product module setup) t
|
||||
PercentVariationOver=%% variation over %s
|
||||
PercentDiscountOver=%% discount over %s
|
||||
KeepEmptyForAutoCalculation=Keep empty to have this calculated automatically from weight or volume of products
|
||||
VariantRefExample=Example: COL
|
||||
VariantLabelExample=Example: Color
|
||||
VariantRefExample=Examples: COL, SIZE
|
||||
VariantLabelExample=Examples: Color, Size
|
||||
### composition fabrication
|
||||
Build=Produce
|
||||
ProductsMultiPrice=Products and prices for each price segment
|
||||
|
||||
@ -450,7 +450,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
// Clone
|
||||
if (! empty($user->rights->mymodule->write))
|
||||
{
|
||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&socid=' . $object->socid . '&action=clone&object=order">' . $langs->trans("ToClone") . '</a></div>';
|
||||
print '<a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&socid=' . $object->socid . '&action=clone&object=order">' . $langs->trans("ToClone") . '</a>'."\n";
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@ -288,9 +288,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print '</div>'."\n";
|
||||
}
|
||||
|
||||
|
||||
include DOL_DOCUMENT_ROOT.'/product/inventory/tpl/inventory.tpl.php';
|
||||
|
||||
}
|
||||
|
||||
// End of page
|
||||
|
||||
@ -53,6 +53,19 @@ class Productlot extends CommonObject
|
||||
*/
|
||||
public $ismultientitymanaged = 1;
|
||||
|
||||
/**
|
||||
* @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.
|
||||
*/
|
||||
public $fields=array(
|
||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'index'=>1, 'position'=>1, 'comment'=>'Id'),
|
||||
'batch' =>array('type'=>'varchar(30)', 'label'=>'Batch', 'enabled'=>1, 'visible'=>1, 'notnull'=>0, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'comment'=>'Batch'),
|
||||
'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20),
|
||||
'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>500),
|
||||
'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>501),
|
||||
'fk_user_author'=>array('type'=>'integer', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>510, 'foreignkey'=>'llx_user.rowid'),
|
||||
'fk_user_modif' =>array('type'=>'integer', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>511)
|
||||
);
|
||||
|
||||
/**
|
||||
* @var int Entity
|
||||
*/
|
||||
|
||||
@ -764,7 +764,7 @@ if (empty($reshook))
|
||||
|
||||
if ($user->rights->stock->mouvement->creer)
|
||||
{
|
||||
if (! $variants) {
|
||||
if (! $variants || ! empty($conf->global->VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT)) {
|
||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=correction">' . $langs->trans("CorrectStock") . '</a>';
|
||||
}
|
||||
else
|
||||
@ -780,7 +780,7 @@ if (empty($reshook))
|
||||
//if (($user->rights->stock->mouvement->creer) && ! $object->hasbatch())
|
||||
if ($user->rights->stock->mouvement->creer)
|
||||
{
|
||||
if (! $variants) {
|
||||
if (! $variants || ! empty($conf->global->VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT)) {
|
||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=transfert">' . $langs->trans("TransferStock") . '</a>';
|
||||
}
|
||||
else
|
||||
@ -804,8 +804,8 @@ if (! $variants) {
|
||||
*/
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="noborder centpercent">';
|
||||
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="4">' . $langs->trans("Warehouse") . '</td>';
|
||||
print '<td class="right">' . $langs->trans("NumberOfUnit") . '</td>';
|
||||
@ -924,7 +924,8 @@ if (! $variants) {
|
||||
print '<td class="center">' . dol_print_date($pdluo->eatby, 'day') . '</td>';
|
||||
print '<td class="center">' . dol_print_date($pdluo->sellby, 'day') . '</td>';
|
||||
print '<td class="right">' . $pdluo->qty . ($pdluo->qty < 0 ? ' ' . img_warning() : '') . '</td>';
|
||||
print '<td colspan="4"></td></tr>';
|
||||
print '<td colspan="4"></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -932,12 +933,13 @@ if (! $variants) {
|
||||
}
|
||||
} else dol_print_error($db);
|
||||
|
||||
// Total line
|
||||
print '<tr class="liste_total"><td class="right liste_total" colspan="4">' . $langs->trans("Total") . ':</td>';
|
||||
print '<td class="liste_total right">' . price2num($total, 'MS') . '</td>';
|
||||
print '<td class="liste_total right">';
|
||||
print ($totalwithpmp ? price(price2num($totalvalue / $totalwithpmp, 'MU')) : ' '); // This value may have rounding errors
|
||||
print '</td>';
|
||||
// Value purchase
|
||||
// Value purchase
|
||||
print '<td class="liste_total right">';
|
||||
print $totalvalue ? price(price2num($totalvalue, 'MT'), 1) : ' ';
|
||||
print '</td>';
|
||||
@ -945,12 +947,13 @@ if (! $variants) {
|
||||
if (empty($conf->global->PRODUIT_MULTIPRICES)) print ($total ? price($totalvaluesell / $total, 1) : ' ');
|
||||
else print $langs->trans("Variable");
|
||||
print '</td>';
|
||||
// Value to sell
|
||||
// Value to sell
|
||||
print '<td class="liste_total right">';
|
||||
if (empty($conf->global->PRODUIT_MULTIPRICES)) print price(price2num($totalvaluesell, 'MT'), 1);
|
||||
else print $langs->trans("Variable");
|
||||
print '</td>';
|
||||
print "</tr>";
|
||||
|
||||
print "</table>";
|
||||
print '</div>';
|
||||
|
||||
@ -1073,6 +1076,7 @@ if (! $variants) {
|
||||
print '<tr class="liste_total">';
|
||||
print '<td colspan="4" class="left">'.$langs->trans("Total").'</td>';
|
||||
print '<td class="right">'.$stock_total.'</td>';
|
||||
print '<td></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
|
||||
@ -62,6 +62,10 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined,
|
||||
$offset = $conf->liste_limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_FIELD)) { $sortfield=$conf->global->MAIN_DOC_SORT_FIELD; }
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_ORDER)) { $sortorder=$conf->global->MAIN_DOC_SORT_ORDER; }
|
||||
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
if (! $sortfield) $sortfield="name";
|
||||
|
||||
|
||||
@ -827,6 +827,7 @@ if (empty($reshook))
|
||||
if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->societe->supprimer)
|
||||
{
|
||||
$object->fetch($socid);
|
||||
$object->oldcopy = clone $object;
|
||||
$result = $object->delete($socid, $user);
|
||||
|
||||
if ($result > 0)
|
||||
|
||||
@ -292,7 +292,7 @@ class Contacts extends DolibarrApi
|
||||
{
|
||||
throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
$this->contact->oldcopy = clone $this->contact;
|
||||
return $this->contact->delete($id);
|
||||
}
|
||||
|
||||
|
||||
@ -418,7 +418,7 @@ class Thirdparties extends DolibarrApi
|
||||
// External modules should update their ones too
|
||||
if (!$errors)
|
||||
{
|
||||
$reshook = $hookmanager->executeHooks('replaceThirdparty', array(
|
||||
$reshook = $hookmanager->executeHooks('replaceThirdparty', array(
|
||||
'soc_origin' => $soc_origin->id,
|
||||
'soc_dest' => $object->id
|
||||
), $soc_dest, $action);
|
||||
@ -488,6 +488,7 @@ $reshook = $hookmanager->executeHooks('replaceThirdparty', array(
|
||||
if( ! DolibarrApi::_checkAccessToResource('societe', $this->company->id)) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
$this->company->oldcopy = clone $this->company;
|
||||
return $this->company->delete($id);
|
||||
}
|
||||
|
||||
|
||||
@ -55,6 +55,10 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined,
|
||||
$offset = $conf->liste_limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_FIELD)) { $sortfield=$conf->global->MAIN_DOC_SORT_FIELD; }
|
||||
if (! empty($conf->global->MAIN_DOC_SORT_ORDER)) { $sortorder=$conf->global->MAIN_DOC_SORT_ORDER; }
|
||||
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
if (! $sortfield) $sortfield="position_name";
|
||||
|
||||
|
||||
@ -167,10 +167,9 @@ TITLE BUTTON
|
||||
|
||||
.btnTitle, a.btnTitle {
|
||||
display: inline-block;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px
|
||||
padding: 4px 12px 4px 12px;
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
/* line-height: 1; */
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
@ -192,6 +191,7 @@ TITLE BUTTON
|
||||
font-size: 12px;
|
||||
font-weight: 300;
|
||||
background-color: #fbfbfb;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
.btnTitle > .btnTitle-icon{
|
||||
@ -203,12 +203,13 @@ TITLE BUTTON
|
||||
}
|
||||
|
||||
.btnTitle:hover, a.btnTitle:hover {
|
||||
border: 1px solid #bbb;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
margin: 0 0 0 10px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
background-color: rgb(<?php print $colortextlink; ?>);
|
||||
/* color: #ffffff;
|
||||
background-color: rgb(<?php print $colortextlink; ?>); */
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
box-shadow: none;
|
||||
@ -222,7 +223,7 @@ TITLE BUTTON
|
||||
}
|
||||
|
||||
.btnTitle:hover .btnTitle-label{
|
||||
color: #ffffff;
|
||||
/* color: #ffffff; */
|
||||
}
|
||||
|
||||
.btnTitle.refused .btnTitle-label, .btnTitle.refused:hover .btnTitle-label{
|
||||
@ -243,6 +244,15 @@ div.pagination li:first-child a.btnTitle{
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
/* rule to reduce top menu - 2nd reduction: Reduce width of top menu icons again */
|
||||
@media only screen and (max-width: <?php echo empty($conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC2) ? round($nbtopmenuentries * 69, 0) + 130 : $conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC2; ?>px) /* reduction 2 */
|
||||
{
|
||||
.btnTitle, a.btnTitle {
|
||||
display: inline-block;
|
||||
padding: 4px 4px 4px 4px;
|
||||
min-width: unset;
|
||||
}
|
||||
}
|
||||
|
||||
<?php if (! empty($conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED) && (! $user->admin)) { ?>
|
||||
.butActionRefused, .butActionNewRefused, .btnTitle.refused {
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
/* <style type="text/css" > dont remove this line it's an ide hack */
|
||||
/*
|
||||
* Dropdown
|
||||
* Dropdown of user popup
|
||||
*/
|
||||
|
||||
.open>.dropdown-menu{
|
||||
|
||||
@ -789,6 +789,12 @@ table[summary="list_of_modules"] .fa-cog {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
.img-skinthumb {
|
||||
width: 160px;
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
|
||||
/* ============================================================================== */
|
||||
/* Styles to hide objects */
|
||||
/* ============================================================================== */
|
||||
@ -1059,19 +1065,19 @@ td.showDragHandle {
|
||||
table-layout: fixed;
|
||||
}
|
||||
#id-right, #id-left {
|
||||
padding-top: 20px;
|
||||
|
||||
display: table-cell; /* DOL_XXX Empeche fonctionnement correct du scroll horizontal sur tableau, avec datatable ou CSS */
|
||||
float: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
#id-left {
|
||||
padding-top: 20px;
|
||||
padding-bottom: 5px;
|
||||
<?php if (! empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN) && ! empty($conf->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN)) { ?>
|
||||
padding-top: 8px;
|
||||
<?php } ?>
|
||||
}
|
||||
#id-right { /* This must stay id-right and not be replaced with echo $right */
|
||||
padding-top: 10px;
|
||||
width: 100%;
|
||||
background: rgb(<?php print $colorbackbody; ?>);
|
||||
padding-bottom: 20px;
|
||||
@ -1108,8 +1114,8 @@ div.blockvmenulogo
|
||||
}
|
||||
.menulogocontainer {
|
||||
margin: <?php echo $disableimages?'0':'6'; ?>px;
|
||||
margin-left: 12px;
|
||||
margin-right: 4px;
|
||||
margin-left: 11px;
|
||||
margin-right: 9px;
|
||||
padding: 0;
|
||||
height: <?php echo $disableimages?'20':'32'; ?>px;
|
||||
/* width: 100px; */
|
||||
@ -1378,6 +1384,9 @@ div.nopadding {
|
||||
.pictomodule {
|
||||
width: 14px;
|
||||
}
|
||||
.pictomodule {
|
||||
width: 14px;
|
||||
}
|
||||
.fiche .arearef img.pictoedit, .fiche .arearef span.pictoedit,
|
||||
.fiche .fichecenter img.pictoedit, .fiche .fichecenter span.pictoedit,
|
||||
.tagtdnote span.pictoedit {
|
||||
@ -2337,6 +2346,7 @@ li.expanded > a.fmdirlia.jqft.ecmjqft {
|
||||
/* ============================================================================== */
|
||||
div.tabs {
|
||||
text-align: <?php print $left; ?>;
|
||||
padding-top: 10px;
|
||||
padding-left: 6px !important;
|
||||
padding-right: 6px !important;
|
||||
clear:both;
|
||||
@ -2790,8 +2800,9 @@ div.pagination li {
|
||||
display: inline-block;
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
padding-top: 6px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 5px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.pagination {
|
||||
display: inline-block;
|
||||
@ -2893,6 +2904,8 @@ div.pagination li.pagination .active {
|
||||
|
||||
div.pagination li.paginationafterarrows {
|
||||
margin-left: 10px;
|
||||
padding-top: 0;
|
||||
/*padding-bottom: 10px;*/
|
||||
}
|
||||
.paginationatbottom {
|
||||
margin-top: 9px;
|
||||
@ -3610,6 +3623,13 @@ div.titre, .secondary {
|
||||
color: rgb(<?php print $colortexttitlenotab; ?>);
|
||||
}
|
||||
|
||||
table.table-fiche-title .col-title div.titre{
|
||||
line-height: 40px;
|
||||
}
|
||||
table.table-fiche-title {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#dolpaymenttable { min-width: 320px; font-size: 16px; } /* Width must have min to make stripe input area visible. Lower than 320 makes input area crazy for credit card that need zip code */
|
||||
#tablepublicpayment { border: 1px solid #CCCCCC !important; width: 100%; padding: 20px; }
|
||||
#tablepublicpayment .CTableRow1 { background-color: #F0F0F0 !important; }
|
||||
@ -5091,6 +5111,11 @@ dl.dropdown {
|
||||
.dropdown dd ul li a:hover {
|
||||
background-color:#eee;
|
||||
}
|
||||
dd.dropdowndd ul li {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
/* ============================================================================== */
|
||||
|
||||
@ -67,10 +67,10 @@ $colorbacklinepairhover='230,237,244'; // line hover
|
||||
$colorbacklinepairchecked='230,237,244'; // line checked
|
||||
$colorbacklinebreak='233,228,230'; // line break
|
||||
$colorbackbody='255,255,255';
|
||||
$colortexttitlenotab='110,80,20';
|
||||
$colortexttitlenotab='140,80,10'; // 140,80,10 or 10,140,80
|
||||
$colortexttitle='0,0,0';
|
||||
$colortext='0,0,0';
|
||||
$colortextlink='10, 20, 110';
|
||||
$colortextlink='10, 20, 100';
|
||||
$fontsize='0.86em';
|
||||
$fontsizesmaller='0.75em';
|
||||
$topMenuFontSize='1.2em';
|
||||
|
||||
@ -3631,6 +3631,10 @@ div.titre, .secondary {
|
||||
color: rgb(<?php print $colortexttitlenotab; ?>);
|
||||
}
|
||||
|
||||
table.table-fiche-title .col-title div.titre{
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
#dolpaymenttable { min-width: 320px; font-size: 16px; } /* Width must have min to make stripe input area visible. Lower than 320 makes input area crazy for credit card that need zip code */
|
||||
#tablepublicpayment { border: 1px solid #CCCCCC !important; width: 100%; padding: 20px; }
|
||||
#tablepublicpayment .CTableRow1 { background-color: #F0F0F0 !important; }
|
||||
@ -5038,6 +5042,11 @@ dl.dropdown {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
dd.dropdowndd ul li {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
/* ============================================================================== */
|
||||
|
||||
@ -873,7 +873,14 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd
|
||||
print '</td></tr>';
|
||||
|
||||
// User assigned
|
||||
print '<tr><td>' . $langs->trans("AssignedTo") . '</td><td>';
|
||||
print '<tr><td>';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td class="nowrap">';
|
||||
print $langs->trans("AssignedTo");
|
||||
if ($object->fk_statut < 8 && GETPOST('set', 'alpha') != "assign_ticket" && $user->rights->ticket->manage) {
|
||||
print '<td class="right"><a class="editfielda" href="' . $url_page_current . '?track_id=' . $object->track_id . '&action=view&set=assign_ticket">' . img_edit($langs->trans('Modify'), '') . '</a></td>';
|
||||
}
|
||||
print '</tr></table>';
|
||||
print '</td><td>';
|
||||
if ($object->fk_user_assign > 0) {
|
||||
$userstat->fetch($object->fk_user_assign);
|
||||
print $userstat->getNomUrl(1);
|
||||
@ -892,9 +899,6 @@ if (empty($action) || $action == 'view' || $action == 'addlink' || $action == 'd
|
||||
print ' <input class="button" type="submit" name="btn_assign_user" value="' . $langs->trans("Validate") . '" />';
|
||||
print '</form>';
|
||||
}
|
||||
if ($object->fk_statut < 8 && GETPOST('set', 'alpha') != "assign_ticket" && $user->rights->ticket->manage) {
|
||||
print '<a href="' . $url_page_current . '?track_id=' . $object->track_id . '&action=view&set=assign_ticket">' . img_picto('', 'edit') . ' ' . $langs->trans('Modify') . '</a>';
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Progression
|
||||
|
||||
@ -197,7 +197,7 @@ class ActionsTicket
|
||||
print $langs->trans("InitialMessage");
|
||||
print '</td><td>';
|
||||
if ($user->rights->ticket->manage) {
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=edit_message_init&track_id=' . $object->track_id . '">' . img_edit($langs->trans('Modify')) . '</a>';
|
||||
print '<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=edit_message_init&track_id=' . $object->track_id . '">' . img_edit($langs->trans('Modify')) . '</a>';
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
@ -208,7 +208,7 @@ class ActionsTicket
|
||||
$msg = GETPOST('message_initial', 'alpha') ? GETPOST('message_initial', 'alpha') : $object->message;
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||
$uselocalbrowser = true;
|
||||
$doleditor = new DolEditor('message_initial', $msg, '100%', 250, 'dolibarr_details', 'In', true, $uselocalbrowser, $conf->global->FCKEDITOR_ENABLE_TICKET);
|
||||
$doleditor = new DolEditor('message_initial', $msg, '100%', 250, 'dolibarr_details', 'In', true, $uselocalbrowser, $conf->global->FCKEDITOR_ENABLE_TICKET, ROWS_4, '95%');
|
||||
$doleditor->Create();
|
||||
} else {
|
||||
// Deal with format differences (text / HTML)
|
||||
|
||||
@ -1609,7 +1609,7 @@ class Ticket extends CommonObject
|
||||
* @param array $filename_list List of files to attach (full path of filename on file system)
|
||||
* @param array $mimetype_list List of MIME type of attached files
|
||||
* @param array $mimefilename_list List of attached file name in message
|
||||
* @return void
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
public function createTicketMessage($user, $notrigger = 0, $filename_list = array(), $mimetype_list = array(), $mimefilename_list = array())
|
||||
{
|
||||
|
||||
@ -157,6 +157,7 @@ if (empty($reshook)) {
|
||||
|
||||
$object = new User($db);
|
||||
$object->fetch($id);
|
||||
$object->oldcopy = clone $object;
|
||||
|
||||
$result = $object->delete($user);
|
||||
if ($result < 0) {
|
||||
|
||||
@ -350,7 +350,7 @@ class Users extends DolibarrApi
|
||||
{
|
||||
throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
$this->useraccount->oldcopy = clone $this->useraccount;
|
||||
return $this->useraccount->delete(DolibarrApiAccess::$user);
|
||||
}
|
||||
|
||||
|
||||
@ -377,6 +377,7 @@ if (! empty($id) || ! empty($ref))
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
$listofvariantselected = '';
|
||||
|
||||
// Create or edit a varian
|
||||
if ($action == 'add' || ($action == 'edit')) {
|
||||
@ -386,7 +387,7 @@ if (! empty($id) || ! empty($ref))
|
||||
//print dol_fiche_head();
|
||||
$features = $_SESSION['addvariant_'.$object->id];
|
||||
//First, sanitize
|
||||
print '<div id="parttoaddvariant">';
|
||||
$listofvariantselected = '<div id="parttoaddvariant">';
|
||||
if (! empty($features)) {
|
||||
foreach ($features as $feature) {
|
||||
|
||||
@ -400,16 +401,14 @@ if (! empty($id) || ! empty($ref))
|
||||
continue;
|
||||
}
|
||||
|
||||
print '<i>' . $prodattr->label . '</i>:'. $prodattr_val->value . ' ';
|
||||
$listofvariantselected .= '<i>' . $prodattr->label . '</i>:'. $prodattr_val->value . ' ';
|
||||
}
|
||||
}
|
||||
print '</div>';
|
||||
print '<br><br>';
|
||||
$listofvariantselected .= '</div>';
|
||||
//print dol_fiche_end();
|
||||
} else {
|
||||
$title = $langs->trans('EditProductCombination');
|
||||
}
|
||||
print load_fiche_titre($title);
|
||||
|
||||
if ($action == 'add') {
|
||||
$prodattr_all = $prodattr->fetchAll();
|
||||
@ -499,6 +498,10 @@ if (! empty($id) || ! empty($ref))
|
||||
<?php
|
||||
}
|
||||
|
||||
print '<br>';
|
||||
|
||||
print load_fiche_titre($title);
|
||||
|
||||
print '<form method="post" id="combinationform" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.dol_escape_htmltag($id).'">'."\n";
|
||||
@ -507,9 +510,9 @@ if (! empty($id) || ! empty($ref))
|
||||
print '<input type="hidden" name="valueid" value="' . $valueid .'">'."\n";
|
||||
}
|
||||
|
||||
print dol_fiche_head();
|
||||
print dol_fiche_head();
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
<table class="border" style="width: 100%">
|
||||
<?php if ($action == 'add') { ?>
|
||||
@ -524,6 +527,7 @@ if (! empty($id) || ! empty($ref))
|
||||
print '<option value="-1"> </option>';
|
||||
foreach ($prodattr_all as $attr)
|
||||
{
|
||||
//print '<option value="'.$attr->id.'"'.($attr->id == GETPOST('attribute', 'int') ? ' selected="selected"' : '').'>'.$attr->label.'</option>';
|
||||
print '<option value="'.$attr->id.'">'.$attr->label.'</option>';
|
||||
}
|
||||
print '</select>';
|
||||
@ -561,6 +565,10 @@ if (! empty($id) || ! empty($ref))
|
||||
<input type="submit" class="button" name="selectvariant" id="selectvariant" value="<?php echo dol_escape_htmltag($langs->trans("SelectCombination")); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td></td><td>
|
||||
<?php echo $listofvariantselected; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
@ -781,8 +789,8 @@ if (! empty($id) || ! empty($ref))
|
||||
</td>
|
||||
<td class="right"><?php echo ($currcomb->variation_price >= 0 ? '+' : '').price($currcomb->variation_price).($currcomb->variation_price_percentage ? ' %' : '') ?></td>
|
||||
<?php if ($object->isProduct()) print '<td class="right">'.($currcomb->variation_weight >= 0 ? '+' : '').price($currcomb->variation_weight).' '.measuring_units_string($prodstatic->weight_units, 'weight').'</td>'; ?>
|
||||
<td class="center;"><?php echo $prodstatic->getLibStatut(2, 0) ?></td>
|
||||
<td class="center;"><?php echo $prodstatic->getLibStatut(2, 1) ?></td>
|
||||
<td class="center"><?php echo $prodstatic->getLibStatut(2, 0) ?></td>
|
||||
<td class="center"><?php echo $prodstatic->getLibStatut(2, 1) ?></td>
|
||||
<td class="right">
|
||||
<a class="paddingleft paddingright" href="<?php echo dol_buildpath('/variants/combinations.php?id='.$id.'&action=edit&valueid='.$currcomb->id, 2) ?>"><?php echo img_edit() ?></a>
|
||||
<a class="paddingleft paddingright" href="<?php echo dol_buildpath('/variants/combinations.php?id='.$id.'&action=delete&valueid='.$currcomb->id, 2) ?>"><?php echo img_delete() ?></a>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user