Merge branch 'develop' into fix-modoristomouv

This commit is contained in:
Laurent Destailleur 2020-02-21 18:05:13 +01:00 committed by GitHub
commit 58a57a0411
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
124 changed files with 2694 additions and 2033 deletions

View File

@ -18,7 +18,7 @@ Following changes may create regressions for some external modules, but were nec
* Default mode for GETPOST function is now 'alphanohtml' instead of 'none'. So check when you make POST or GET requests * Default mode for GETPOST function is now 'alphanohtml' instead of 'none'. So check when you make POST or GET requests
with HTML content that you make a GETPOST('myparam', 'restricthtml') or GETPOST('myparam', 'none') if you really need posted content without sanitizing with HTML content that you make a GETPOST('myparam', 'restricthtml') or GETPOST('myparam', 'none') if you really need posted content without sanitizing
the HTML into content (in such a case, sanitize data later) the HTML into content (in such a case, sanitize data later)
* Removed hidden constant MAIN_EXTRAFIELDS_IN_ONE_TD that was useless.
***** ChangeLog for 11.0.1 compared to 11.0.0 ***** ***** ChangeLog for 11.0.1 compared to 11.0.0 *****

View File

@ -1,13 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT ruleset (description,exclude-pattern*,rule+)> <!ELEMENT ruleset (description,arg*,exclude-pattern*,rule+)>
<!ATTLIST ruleset name CDATA ""> <!ATTLIST ruleset name CDATA "">
<!ELEMENT description (#PCDATA)> <!ELEMENT description (#PCDATA)>
<!ELEMENT arg (#PCDATA)>
<!ATTLIST arg name CDATA "">
<!ATTLIST arg value CDATA "">
<!ELEMENT exclude-pattern (#PCDATA)> <!ELEMENT exclude-pattern (#PCDATA)>
<!ATTLIST exclude-pattern type CDATA ""> <!ATTLIST exclude-pattern type CDATA "">
<!ELEMENT rule (properties*,severity*)> <!ELEMENT rule (properties*,severity*,exclude*)>
<!ATTLIST rule ref CDATA ""> <!ATTLIST rule ref CDATA "">
<!ELEMENT properties (property+)> <!ELEMENT properties (property+)>
<!ELEMENT property (#PCDATA)> <!ELEMENT property (#PCDATA)>
<!ATTLIST property name CDATA ""> <!ATTLIST property name CDATA "">
<!ATTLIST property value CDATA ""> <!ATTLIST property value CDATA "">
<!ELEMENT severity (#PCDATA)> <!ELEMENT severity (#PCDATA)>
<!ELEMENT exclude (#PCDATA)>
<!ATTLIST exclude name CDATA "">

View File

@ -2,6 +2,7 @@
<!DOCTYPE ruleset SYSTEM "ruleset.dtd"> <!DOCTYPE ruleset SYSTEM "ruleset.dtd">
<ruleset name="Dolibarr"> <ruleset name="Dolibarr">
<description>Dolibarr coding standard.</description> <description>Dolibarr coding standard.</description>
<arg name="tab-width" value="4"/>
<exclude-pattern type="relative">build/html</exclude-pattern> <exclude-pattern type="relative">build/html</exclude-pattern>
<exclude-pattern type="relative">build/aps</exclude-pattern> <exclude-pattern type="relative">build/aps</exclude-pattern>
@ -188,7 +189,6 @@
<!-- Disabled as this does not support tab --> <!-- Disabled as this does not support tab -->
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> --> <!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
<arg name="tab-width" value="4"/>
<rule ref="Generic.WhiteSpace.ScopeIndent"> <rule ref="Generic.WhiteSpace.ScopeIndent">
<properties> <properties>
<property name="indent" value="4"/> <property name="indent" value="4"/>

View File

@ -268,11 +268,11 @@ if ($action != 'export_csv')
$displayed_account = ""; $displayed_account = "";
$sql = "select t.numero_compte, (SUM(t.debit) - SUM(t.credit)) as opening_balance from ".MAIN_DB_PREFIX."accounting_bookkeeping as t where entity in ".$conf->entity; $sql = "select t.numero_compte, (SUM(t.debit) - SUM(t.credit)) as opening_balance from ".MAIN_DB_PREFIX."accounting_bookkeeping as t where entity in ".$conf->entity;
$sql.= " AND t.doc_date < '".$db->idate($search_date_start)."' GROUP BY t.numero_compte"; $sql .= " AND t.doc_date < '".$db->idate($search_date_start)."' GROUP BY t.numero_compte";
$resql = $db->query($sql); $resql = $db->query($sql);
$nrows = $resql->num_rows; $nrows = $resql->num_rows;
$opening_balances = Array(); $opening_balances = Array();
for($i = 0; $i < $nrows; $i++) { for ($i = 0; $i < $nrows; $i++) {
$arr = $resql->fetch_array(); $arr = $resql->fetch_array();
$opening_balances["'".$arr['numero_compte']."'"] = $arr['opening_balance']; $opening_balances["'".$arr['numero_compte']."'"] = $arr['opening_balance'];
} }
@ -294,14 +294,14 @@ if ($action != 'export_csv')
{ {
// Affiche un Sous-Total par compte comptable // Affiche un Sous-Total par compte comptable
if ($displayed_account != "") { if ($displayed_account != "") {
print '<tr class="liste_total"><td class="right" colspan="2">' . $langs->trans("SubTotal") . ':</td><td class="nowrap right">' . price($sous_total_debit) . '</td><td class="nowrap right">' . price($sous_total_credit) . '</td><td class="nowrap right">' . price(price2num($sous_total_credit - $sous_total_debit)) . '</td>'; print '<tr class="liste_total"><td class="right" colspan="2">'.$langs->trans("SubTotal").':</td><td class="nowrap right">'.price($sous_total_debit).'</td><td class="nowrap right">'.price($sous_total_credit).'</td><td class="nowrap right">'.price(price2num($sous_total_credit - $sous_total_debit)).'</td>';
print "<td>&nbsp;</td>\n"; print "<td>&nbsp;</td>\n";
print '</tr>'; print '</tr>';
} }
// Show first line of a break // Show first line of a break
print '<tr class="trforbreak">'; print '<tr class="trforbreak">';
print '<td colspan="7" style="font-weight:bold; border-bottom: 1pt solid black;">' . $line->numero_compte . ($root_account_description ? ' - ' . $root_account_description : '') . '</td>'; print '<td colspan="7" style="font-weight:bold; border-bottom: 1pt solid black;">'.$line->numero_compte.($root_account_description ? ' - '.$root_account_description : '').'</td>';
print '</tr>'; print '</tr>';
$displayed_account = $root_account_description; $displayed_account = $root_account_description;

View File

@ -239,7 +239,7 @@ class AccountancyExport
$filename = 'general_ledger-'.$this->getFormatCode($formatexportset); $filename = 'general_ledger-'.$this->getFormatCode($formatexportset);
$type_export = 'general_ledger'; $type_export = 'general_ledger';
global $db; // The tpl file use $db global $db; // The tpl file use $db
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php'; include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php';
@ -983,7 +983,7 @@ class AccountancyExport
$racine_subledger_account = ''; // for records of type E leave this field blank $racine_subledger_account = ''; // for records of type E leave this field blank
// } // }
print $racine_subledger_account . $separator; // deprecated CPTG & CPTA use instead print $racine_subledger_account.$separator; // deprecated CPTG & CPTA use instead
// MONT // MONT
print price(abs($line->montant), 0, '', 1, 2).$separator; print price(abs($line->montant), 0, '', 1, 2).$separator;
// CODC // CODC

View File

@ -17,7 +17,7 @@
*/ */
// Protection to avoid direct call of template // Protection to avoid direct call of template
if (empty($conf) || ! is_object($conf)) if (empty($conf) || !is_object($conf))
{ {
print "Error, template page can't be called as URL"; print "Error, template page can't be called as URL";
exit; exit;
@ -29,7 +29,7 @@ $format = $conf->global->ACCOUNTING_EXPORT_FORMAT;
$nodateexport = $conf->global->ACCOUNTING_EXPORT_NO_DATE_IN_FILENAME; $nodateexport = $conf->global->ACCOUNTING_EXPORT_NO_DATE_IN_FILENAME;
$siren = $conf->global->MAIN_INFO_SIREN; $siren = $conf->global->MAIN_INFO_SIREN;
$date_export = "_" . dol_print_date(dol_now(), '%Y%m%d%H%M%S'); $date_export = "_".dol_print_date(dol_now(), '%Y%m%d%H%M%S');
$endaccountingperiod = dol_print_date(dol_now(), '%Y%m%d'); $endaccountingperiod = dol_print_date(dol_now(), '%Y%m%d');
header('Content-Type: text/csv'); header('Content-Type: text/csv');
@ -46,22 +46,22 @@ if ($accountancyexport->getFormatCode($formatexportset) == $accountancyexport::$
$search_date_end = dol_now(); $search_date_end = dol_now();
} }
$datetouseforfilename = $search_date_end; $datetouseforfilename = $search_date_end;
$tmparray=dol_getdate($datetouseforfilename); $tmparray = dol_getdate($datetouseforfilename);
$fiscalmonth=empty($conf->global->SOCIETE_FISCAL_MONTH_START)?1:$conf->global->SOCIETE_FISCAL_MONTH_START; $fiscalmonth = empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START;
// Define end of month to use // Define end of month to use
if ($tmparray['mon'] <= $fiscalmonth) $tmparray['mon']=$fiscalmonth; if ($tmparray['mon'] <= $fiscalmonth) $tmparray['mon'] = $fiscalmonth;
else { else {
$tmparray['mon'] = $fiscalmonth; $tmparray['mon'] = $fiscalmonth;
$tmparray['year']++; $tmparray['year']++;
} }
$endaccountingperiod = dol_print_date(dol_get_last_day($tmparray['year'], $tmparray['mon']), 'dayxcard'); $endaccountingperiod = dol_print_date(dol_get_last_day($tmparray['year'], $tmparray['mon']), 'dayxcard');
$completefilename = $siren . "FEC" . $endaccountingperiod . ".txt"; $completefilename = $siren."FEC".$endaccountingperiod.".txt";
} }
else else
{ {
$completefilename = ($code?$code . "_":"") . ($prefix?$prefix . "_":"") . $filename . ($nodateexport?"":$date_export) . "." . $format; $completefilename = ($code ? $code."_" : "").($prefix ? $prefix."_" : "").$filename.($nodateexport ? "" : $date_export).".".$format;
} }
header('Content-Disposition: attachment;filename=' . $completefilename); header('Content-Disposition: attachment;filename='.$completefilename);

View File

@ -47,7 +47,7 @@ $search_note = GETPOST('search_note', 'alpha');
$search_account = GETPOST('search_account', 'int'); $search_account = GETPOST('search_account', 'int');
$search_amount = GETPOST('search_amount', 'alpha'); $search_amount = GETPOST('search_amount', 'alpha');
$optioncss = GETPOST('optioncss', 'alpha'); $optioncss = GETPOST('optioncss', 'alpha');
$sall=''; $sall = '';
$date_select = GETPOST("date_select", 'alpha'); $date_select = GETPOST("date_select", 'alpha');
@ -388,16 +388,16 @@ print "</tr>\n";
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
if (! empty($arrayfields['d.ref']['checked'])) print_liste_field_titre($arrayfields['d.ref']['label'], $_SERVER["PHP_SELF"], "c.rowid", $param, "", "", $sortfield, $sortorder); if (!empty($arrayfields['d.ref']['checked'])) print_liste_field_titre($arrayfields['d.ref']['label'], $_SERVER["PHP_SELF"], "c.rowid", $param, "", "", $sortfield, $sortorder);
if (! empty($arrayfields['d.fk_type']['checked'])) print_liste_field_titre($arrayfields['d.fk_type']['label'], $_SERVER["PHP_SELF"], "c.fk_type", $param, "", "", $sortfield, $sortorder); if (!empty($arrayfields['d.fk_type']['checked'])) print_liste_field_titre($arrayfields['d.fk_type']['label'], $_SERVER["PHP_SELF"], "c.fk_type", $param, "", "", $sortfield, $sortorder);
if (! empty($arrayfields['d.lastname']['checked'])) print_liste_field_titre($arrayfields['d.lastname']['label'], $_SERVER["PHP_SELF"], "d.lastname", $param, "", "", $sortfield, $sortorder); if (!empty($arrayfields['d.lastname']['checked'])) print_liste_field_titre($arrayfields['d.lastname']['label'], $_SERVER["PHP_SELF"], "d.lastname", $param, "", "", $sortfield, $sortorder);
if (! empty($arrayfields['d.firstname']['checked'])) print_liste_field_titre($arrayfields['d.firstname']['label'], $_SERVER["PHP_SELF"], "d.firstname", $param, "", "", $sortfield, $sortorder); if (!empty($arrayfields['d.firstname']['checked'])) print_liste_field_titre($arrayfields['d.firstname']['label'], $_SERVER["PHP_SELF"], "d.firstname", $param, "", "", $sortfield, $sortorder);
if (! empty($arrayfields['d.login']['checked'])) print_liste_field_titre($arrayfields['d.login']['label'], $_SERVER["PHP_SELF"], "d.login", $param, "", "", $sortfield, $sortorder); if (!empty($arrayfields['d.login']['checked'])) print_liste_field_titre($arrayfields['d.login']['label'], $_SERVER["PHP_SELF"], "d.login", $param, "", "", $sortfield, $sortorder);
if (! empty($arrayfields['t.libelle']['checked'])) print_liste_field_titre($arrayfields['t.libelle']['label'], $_SERVER["PHP_SELF"], "c.note", $param, "", '', $sortfield, $sortorder); if (!empty($arrayfields['t.libelle']['checked'])) print_liste_field_titre($arrayfields['t.libelle']['label'], $_SERVER["PHP_SELF"], "c.note", $param, "", '', $sortfield, $sortorder);
if (! empty($arrayfields['d.bank']['checked'])) print_liste_field_titre($arrayfields['d.bank']['label'], $_SERVER["PHP_SELF"], "b.fk_account", $param, "", "", $sortfield, $sortorder); if (!empty($arrayfields['d.bank']['checked'])) print_liste_field_titre($arrayfields['d.bank']['label'], $_SERVER["PHP_SELF"], "b.fk_account", $param, "", "", $sortfield, $sortorder);
if (! empty($arrayfields['c.dateadh']['checked'])) print_liste_field_titre($arrayfields['c.dateadh']['label'], $_SERVER["PHP_SELF"], "c.dateadh", $param, "", '', $sortfield, $sortorder, 'center nowraponall '); if (!empty($arrayfields['c.dateadh']['checked'])) print_liste_field_titre($arrayfields['c.dateadh']['label'], $_SERVER["PHP_SELF"], "c.dateadh", $param, "", '', $sortfield, $sortorder, 'center nowraponall ');
if (! empty($arrayfields['c.datef']['checked'])) print_liste_field_titre($arrayfields['c.datef']['label'], $_SERVER["PHP_SELF"], "c.datef", $param, "", '', $sortfield, $sortorder, 'center nowraponall '); if (!empty($arrayfields['c.datef']['checked'])) print_liste_field_titre($arrayfields['c.datef']['label'], $_SERVER["PHP_SELF"], "c.datef", $param, "", '', $sortfield, $sortorder, 'center nowraponall ');
if (! empty($arrayfields['d.amount']['checked'])) print_liste_field_titre($arrayfields['d.amount']['label'], $_SERVER["PHP_SELF"], "c.subscription", $param, "", '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['d.amount']['checked'])) print_liste_field_titre($arrayfields['d.amount']['label'], $_SERVER["PHP_SELF"], "c.subscription", $param, "", '', $sortfield, $sortorder, 'right ');
// Extra fields // Extra fields
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';

View File

@ -25,6 +25,8 @@
* \file htdocs/api/admin/explorer.php * \file htdocs/api/admin/explorer.php
*/ */
use Luracast\Restler\Routes;
require_once '../../main.inc.php'; require_once '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT.'/api/class/api.class.php'; require_once DOL_DOCUMENT_ROOT.'/api/class/api.class.php';

View File

@ -28,9 +28,9 @@ require_once DOL_DOCUMENT_ROOT.'/blockedlog/class/blockedlog.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
// Load translation files required by the page // Load translation files required by the page
$langs->loadLangs(array("admin","other","blockedlog")); $langs->loadLangs(array("admin", "other", "blockedlog"));
if (! $user->admin || empty($conf->blockedlog->enabled)) accessforbidden(); if (!$user->admin || empty($conf->blockedlog->enabled)) accessforbidden();
$action = GETPOST('action', 'alpha'); $action = GETPOST('action', 'alpha');
$backtopage = GETPOST('backtopage', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha');
@ -77,22 +77,22 @@ if (preg_match('/del_(.*)/', $action, $reg))
* View * View
*/ */
$form=new Form($db); $form = new Form($db);
$block_static = new BlockedLog($db); $block_static = new BlockedLog($db);
llxHeader('', $langs->trans("BlockedLogSetup")); llxHeader('', $langs->trans("BlockedLogSetup"));
$linkback=''; $linkback = '';
if (GETPOST('withtab', 'alpha')) if (GETPOST('withtab', 'alpha'))
{ {
$linkback='<a href="'.($backtopage?$backtopage:DOL_URL_ROOT.'/admin/modules.php').'">'.$langs->trans("BackToModuleList").'</a>'; $linkback = '<a href="'.($backtopage ? $backtopage : DOL_URL_ROOT.'/admin/modules.php').'">'.$langs->trans("BackToModuleList").'</a>';
} }
print load_fiche_titre($langs->trans("ModuleSetup").' '.$langs->trans('BlockedLog'), $linkback); print load_fiche_titre($langs->trans("ModuleSetup").' '.$langs->trans('BlockedLog'), $linkback);
if (GETPOST('withtab', 'alpha')) if (GETPOST('withtab', 'alpha'))
{ {
$head=blockedlogadmin_prepare_head(); $head = blockedlogadmin_prepare_head();
dol_fiche_head($head, 'blockedlog', '', -1); dol_fiche_head($head, 'blockedlog', '', -1);
} }
@ -135,16 +135,16 @@ print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="set_BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY">'; print '<input type="hidden" name="action" value="set_BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY">';
$sql = "SELECT rowid, code as code_iso, code_iso as code_iso3, label, favorite"; $sql = "SELECT rowid, code as code_iso, code_iso as code_iso3, label, favorite";
$sql.= " FROM ".MAIN_DB_PREFIX."c_country"; $sql .= " FROM ".MAIN_DB_PREFIX."c_country";
$sql.= " WHERE active > 0"; $sql .= " WHERE active > 0";
$countryArray=array(); $countryArray = array();
$resql=$db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
{ {
while ($obj = $db->fetch_object($resql)) while ($obj = $db->fetch_object($resql))
{ {
$countryArray[$obj->code_iso] = ($obj->code_iso && $langs->transnoentitiesnoconv("Country".$obj->code_iso)!="Country".$obj->code_iso?$langs->transnoentitiesnoconv("Country".$obj->code_iso):($obj->label!='-'?$obj->label:'')); $countryArray[$obj->code_iso] = ($obj->code_iso && $langs->transnoentitiesnoconv("Country".$obj->code_iso) != "Country".$obj->code_iso ? $langs->transnoentitiesnoconv("Country".$obj->code_iso) : ($obj->label != '-' ? $obj->label : ''));
} }
} }
@ -160,8 +160,8 @@ print '</td>';
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td class="titlefield">'; print '<td class="titlefield">';
print $langs->trans("ListOfTrackedEvents").'</td><td>'; print $langs->trans("ListOfTrackedEvents").'</td><td>';
$arrayoftrackedevents=$block_static->trackedevents; $arrayoftrackedevents = $block_static->trackedevents;
foreach($arrayoftrackedevents as $key => $val) foreach ($arrayoftrackedevents as $key => $val)
{ {
print $key.' - '.$langs->trans($val).'<br>'; print $key.' - '.$langs->trans($val).'<br>';
} }

View File

@ -141,7 +141,7 @@ print '</td>';
print '</tr>'; print '</tr>';
if (is_object($objectline)) { if (is_object($objectline)) {
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1);
} }
?> ?>

View File

@ -138,7 +138,7 @@ print '</td>';
print '</tr>'; print '</tr>';
if (is_object($objectline)) { if (is_object($objectline)) {
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1);
} }
print "<!-- END PHP TEMPLATE objectline_edit.tpl.php -->\n"; print "<!-- END PHP TEMPLATE objectline_edit.tpl.php -->\n";

View File

@ -156,7 +156,7 @@ print '</tr>';
//Line extrafield //Line extrafield
if (!empty($extrafields)) if (!empty($extrafields))
{ {
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', 1);
} }
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n"; print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";

View File

@ -21,132 +21,6 @@
* \brief File with library for bookmark module * \brief File with library for bookmark module
*/ */
/**
* Add area with bookmarks in menu
*
* @return string
*/
function printBookmarksList()
{
global $conf, $user, $db, $langs;
$ret = '<div class="menu_top"></div>'."\n";
if (! empty($conf->use_javascript_ajax)) { // Bookmark autosubmit can't work when javascript is off.
require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
if (! isset($conf->global->BOOKMARKS_SHOW_IN_MENU)) $conf->global->BOOKMARKS_SHOW_IN_MENU=5;
$langs->load("bookmarks");
$url= $_SERVER["PHP_SELF"];
if (! empty($_SERVER["QUERY_STRING"]))
{
$url.=(dol_escape_htmltag($_SERVER["QUERY_STRING"])?'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]):'');
}
else
{
global $sortfield,$sortorder;
$tmpurl='';
// No urlencode, all param $url will be urlencoded later
if ($sortfield) $tmpurl.=($tmpurl?'&':'').'sortfield='.$sortfield;
if ($sortorder) $tmpurl.=($tmpurl?'&':'').'sortorder='.$sortorder;
if (is_array($_POST))
{
foreach($_POST as $key => $val)
{
if (preg_match('/^search_/', $key) && $val != '') $tmpurl.=($tmpurl?'&':'').$key.'='.$val;
}
}
$url.=($tmpurl?'?'.$tmpurl:'');
}
// Menu bookmark
$ret = '<div class="menu_top"></div>'."\n";
$ret.= '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n";
$ret.= '<form id="actionbookmark" name="actionbookmark" method="POST" action="">';
$ret.= '<input type="hidden" name="token" value="'.newToken().'">';
$ret.= '<select name="bookmark" id="boxbookmark" class="flat boxcombo vmenusearchselectcombo" alt="Bookmarks">';
$ret.= '<option hidden value="listbookmarks" class="optiongrey" selected rel="'.DOL_URL_ROOT.'/bookmarks/list.php">'.$langs->trans('Bookmarks').'</option>';
$ret.= '<option value="listbookmark" class="optionblue" rel="'.dol_escape_htmltag(DOL_URL_ROOT.'/bookmarks/list.php').'" ';
$ret.= ' data-html="'.dol_escape_htmltag(img_picto('', 'bookmark').' '.($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...').'">';
$ret.= dol_escape_htmltag($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...</option>';
// Url to go on create new bookmark page
if (! empty($user->rights->bookmark->creer))
{
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;urlsource='.urlencode($url).'&amp;url='.urlencode($url);
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url);
$ret.= '<option value="newbookmark" class="optionblue" rel="'.dol_escape_htmltag($urltoadd).'"';
$ret.= ' data-html="'.dol_escape_htmltag(img_picto('', 'bookmark').' '.$langs->trans('AddThisPageToBookmarks').'...').'">'.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks').'...').'</option>';
}
// Menu with all bookmarks
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU))
{
$sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
$sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
$sql.= " AND entity IN (".getEntity('bookmarks').")";
$sql.= " ORDER BY position";
if ($resql = $db->query($sql) )
{
$i=0;
while ($i < $conf->global->BOOKMARKS_SHOW_IN_MENU && $obj = $db->fetch_object($resql))
{
$ret.='<option name="bookmark'.$obj->rowid.'" value="'.$obj->rowid.'" '.($obj->target == 1?' target="_blank"':'').' rel="'.dol_escape_htmltag($obj->url).'"';
//$ret.=' data-html="'.dol_escape_htmltag('<span class="fa fa-print"></span> '.$obj->title).'"';
$ret.='>';
$ret.=dol_escape_htmltag($obj->title);
$ret.='</option>';
$i++;
}
}
else
{
dol_print_error($db);
}
}
$ret.= '</select>';
$ret.= '</form>';
$ret.=ajax_combobox('boxbookmark');
$ret.='<script>
$(document).ready(function () {';
$ret.=' jQuery("#boxbookmark").change(function() {
var urlselected = jQuery("#boxbookmark option:selected").attr("rel");
if (! urlselected) console.log("Error, failed to get the URL to jump to from the rel attribute");
var urltarget = jQuery("#boxbookmark option:selected").attr("target");
if (! urltarget) { urltarget=""; }
jQuery("form#actionbookmark").attr("target",urltarget);
jQuery("form#actionbookmark").attr("action",urlselected);
console.log("We change select bookmark. We choose urlselected="+urlselected+" with target="+urltarget);
// Method is POST for internal link, GET for external
if (urlselected.startsWith(\'http\'))
{
var newmethod=\'GET\';
jQuery("form#actionbookmark").attr("method", newmethod);
console.log("We change method to newmethod="+newmethod);
jQuery("#actionbookmark").submit();
console.log("We restore method to POST");
jQuery("form#actionbookmark").attr("method", \'POST\');
}
else
{
jQuery("#actionbookmark").submit();
}
});';
$ret.='})</script>';
}
$ret.= '<div class="menu_end"></div>'."\n";
return $ret;
}
/** /**
* Add area with bookmarks in top menu * Add area with bookmarks in top menu
@ -158,97 +32,89 @@ function printDropdownBookmarksList()
global $conf, $user, $db, $langs; global $conf, $user, $db, $langs;
require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php'; require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
if (! isset($conf->global->BOOKMARKS_SHOW_IN_MENU)) $conf->global->BOOKMARKS_SHOW_IN_MENU=5;
$langs->load("bookmarks"); $langs->load("bookmarks");
$url= $_SERVER["PHP_SELF"]; $url = $_SERVER["PHP_SELF"];
if (! empty($_SERVER["QUERY_STRING"])) if (!empty($_SERVER["QUERY_STRING"]))
{ {
$url.=(dol_escape_htmltag($_SERVER["QUERY_STRING"])?'?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]):''); $url .= (dol_escape_htmltag($_SERVER["QUERY_STRING"]) ? '?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]) : '');
} }
else else
{ {
global $sortfield,$sortorder; global $sortfield, $sortorder;
$tmpurl=''; $tmpurl = '';
// No urlencode, all param $url will be urlencoded later // No urlencode, all param $url will be urlencoded later
if ($sortfield) $tmpurl.=($tmpurl?'&':'').'sortfield='.$sortfield; if ($sortfield) $tmpurl .= ($tmpurl ? '&' : '').'sortfield='.$sortfield;
if ($sortorder) $tmpurl.=($tmpurl?'&':'').'sortorder='.$sortorder; if ($sortorder) $tmpurl .= ($tmpurl ? '&' : '').'sortorder='.$sortorder;
if (is_array($_POST)) if (is_array($_POST))
{ {
foreach($_POST as $key => $val) foreach ($_POST as $key => $val)
{ {
if (preg_match('/^search_/', $key) && $val != '') $tmpurl.=($tmpurl?'&':'').$key.'='.$val; if (preg_match('/^search_/', $key) && $val != '') $tmpurl .= ($tmpurl ? '&' : '').$key.'='.$val;
} }
} }
$url.=($tmpurl?'?'.$tmpurl:''); $url .= ($tmpurl ? '?'.$tmpurl : '');
} }
$searchForm = '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n"; $searchForm = '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n";
$searchForm.= '<form id="top-menu-action-bookmark" name="actionbookmark" method="POST" action="" onsubmit="return false" >'; $searchForm .= '<form id="top-menu-action-bookmark" name="actionbookmark" method="POST" action="" onsubmit="return false" >';
$searchForm.= '<input name="bookmark" id="top-bookmark-search-input" class="dropdown-search-input" placeholder="'.$langs->trans('Bookmarks').'" autocomplete="off" >'; $searchForm .= '<input name="bookmark" id="top-bookmark-search-input" class="dropdown-search-input" placeholder="'.$langs->trans('Bookmarks').'" autocomplete="off" >';
$searchForm.= '</form>'; $searchForm .= '</form>';
// Url to list bookmark // Url to list bookmark
$listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >'; $listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
$listbtn.= '<span class="fa fa-list"></span> '.$langs->trans('Bookmarks').'</a>'; $listbtn .= '<span class="fa fa-list"></span> '.$langs->trans('Bookmarks').'</a>';
// Url to go on create new bookmark page // Url to go on create new bookmark page
$newbtn = ''; $newbtn = '';
if (! empty($user->rights->bookmark->creer)) if (!empty($user->rights->bookmark->creer))
{ {
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;urlsource='.urlencode($url).'&amp;url='.urlencode($url); //$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;urlsource='.urlencode($url).'&amp;url='.urlencode($url);
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url); $urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url);
$newbtn.= '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.dol_escape_htmltag($urltoadd).'" >'; $newbtn .= '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.dol_escape_htmltag($urltoadd).'" >';
$newbtn.= img_picto('', 'bookmark').' '.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'</a>'; $newbtn .= img_picto('', 'bookmark').' '.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'</a>';
} }
$bookmarkList = '<div id="dropdown-bookmarks-list" >';
$bookmarkList='<div id="dropdown-bookmarks-list" >'; // Menu with list of bookmarks
// Menu with all bookmarks $sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) $sql .= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
$sql .= " AND entity IN (".getEntity('bookmarks').")";
$sql .= " ORDER BY position";
if ($resql = $db->query($sql))
{ {
$sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark"; $i = 0;
$sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)"; while (($conf->global->BOOKMARKS_SHOW_IN_MENU == 0 || $i < $conf->global->BOOKMARKS_SHOW_IN_MENU) && $obj = $db->fetch_object($resql))
$sql.= " AND entity IN (".getEntity('bookmarks').")"; {
$sql.= " ORDER BY position"; $bookmarkList .= '<a class="dropdown-item bookmark-item" id="bookmark-item-'.$obj->rowid.'" data-id="'.$obj->rowid.'" '.($obj->target == 1 ? ' target="_blank"' : '').' href="'.dol_escape_htmltag($obj->url).'" >';
if ($resql = $db->query($sql) ) $bookmarkList .= dol_escape_htmltag($obj->title);
{ $bookmarkList .= '</a>';
$i=0; $i++;
while ($i < $conf->global->BOOKMARKS_SHOW_IN_MENU && $obj = $db->fetch_object($resql)) }
{
$bookmarkList.='<a class="dropdown-item bookmark-item" id="bookmark-item-'.$obj->rowid.'" data-id="'.$obj->rowid.'" '.($obj->target == 1?' target="_blank"':'').' href="'.dol_escape_htmltag($obj->url).'" >';
$bookmarkList.= dol_escape_htmltag($obj->title);
$bookmarkList.='</a>';
$i++;
}
}
else
{
dol_print_error($db);
}
} }
$bookmarkList.='</div>'; else
{
dol_print_error($db);
}
$bookmarkList .= '</div>';
$html= ''; $html = '
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) {
$html.= '
<!-- search input --> <!-- search input -->
<div class="dropdown-header bookmark-header"> <div class="dropdown-header bookmark-header">
' . $searchForm . ' ' . $searchForm.'
</div> </div>
'; ';
}
$html.= ' $html .= '
<!-- Menu Body --> <!-- Menu Body -->
<div class="bookmark-body dropdown-body"> <div class="bookmark-body dropdown-body">
'.$bookmarkList.' '.$bookmarkList.'
</div> </div>
'; ';
$html.= ' $html .= '
<!-- Menu Footer--> <!-- Menu Footer-->
<div class="bookmark-footer"> <div class="bookmark-footer">
'.$newbtn.$listbtn.' '.$newbtn.$listbtn.'
@ -256,8 +122,7 @@ function printDropdownBookmarksList()
</div> </div>
'; ';
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) { $html .= '<script>
$html .= '<script>
$( document ).on("keyup", "#top-bookmark-search-input", function () { $( document ).on("keyup", "#top-bookmark-search-input", function () {
var filter = $(this).val(), count = 0; var filter = $(this).val(), count = 0;
@ -273,7 +138,6 @@ function printDropdownBookmarksList()
$("#top-bookmark-search-filter-count").text(count); $("#top-bookmark-search-filter-count").text(count);
}); });
</script>'; </script>';
}
return $html; return $html;
} }

View File

@ -93,24 +93,24 @@ $extrafields = new ExtraFields($db);
$extrafields->fetch_name_optionals_label($object->table_element); $extrafields->fetch_name_optionals_label($object->table_element);
// Load object // Load object
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$hookmanager->initHooks(array('ordercard','globalcard')); $hookmanager->initHooks(array('ordercard', 'globalcard'));
$usercanread = $user->rights->commande->lire; $usercanread = $user->rights->commande->lire;
$usercancreate = $user->rights->commande->creer; $usercancreate = $user->rights->commande->creer;
$usercanclose = $user->rights->commande->cloturer; $usercanclose = $user->rights->commande->cloturer;
$usercandelete = $user->rights->commande->supprimer; $usercandelete = $user->rights->commande->supprimer;
$usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->validate))); $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->commande->order_advance->validate)));
$usercancancel = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler))); $usercancancel = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->commande->order_advance->annuler)));
$usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send); $usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send);
$usercancreatepurchaseorder = $user->rights->fournisseur->commande->creer; $usercancreatepurchaseorder = $user->rights->fournisseur->commande->creer;
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php $permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php $permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php $permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
/* /*
@ -1594,25 +1594,25 @@ if ($action == 'create' && $usercancreate)
$note_public = $object->getDefaultCreateValueFor('note_public'); $note_public = $object->getDefaultCreateValueFor('note_public');
} }
print '<form name="crea_commande" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<form name="crea_commande" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="'.$_SESSION ['newtoken'].'">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="socid" value="' . $soc->id . '">' . "\n"; print '<input type="hidden" name="socid" value="'.$soc->id.'">'."\n";
print '<input type="hidden" name="remise_percent" value="' . $soc->remise_percent . '">'; print '<input type="hidden" name="remise_percent" value="'.$soc->remise_percent.'">';
print '<input type="hidden" name="origin" value="' . $origin . '">'; print '<input type="hidden" name="origin" value="'.$origin.'">';
print '<input type="hidden" name="originid" value="' . $originid . '">'; print '<input type="hidden" name="originid" value="'.$originid.'">';
if (!empty($currency_tx)) print '<input type="hidden" name="originmulticurrency_tx" value="' . $currency_tx . '">'; if (!empty($currency_tx)) print '<input type="hidden" name="originmulticurrency_tx" value="'.$currency_tx.'">';
dol_fiche_head(''); dol_fiche_head('');
print '<table class="border centpercent">'; print '<table class="border centpercent">';
// Reference // Reference
print '<tr><td class="titlefieldcreate fieldrequired">' . $langs->trans('Ref') . '</td><td>' . $langs->trans("Draft") . '</td></tr>'; print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans('Ref').'</td><td>'.$langs->trans("Draft").'</td></tr>';
// Reference client // Reference client
print '<tr><td>' . $langs->trans('RefCustomer') . '</td><td>'; print '<tr><td>'.$langs->trans('RefCustomer').'</td><td>';
if (!empty($conf->global->MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER) && ! empty($origin) && ! empty($originid)) if (!empty($conf->global->MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER) && !empty($origin) && !empty($originid))
print '<input type="text" name="ref_client" value="'.$ref_client.'"></td>'; print '<input type="text" name="ref_client" value="'.$ref_client.'"></td>';
else else
print '<input type="text" name="ref_client" value="'.GETPOST('ref_client').'"></td>'; print '<input type="text" name="ref_client" value="'.GETPOST('ref_client').'"></td>';
@ -2556,7 +2556,7 @@ if ($action == 'create' && $usercancreate)
} }
// Valid // Valid
if ($object->statut == Commande::STATUS_DRAFT && ($object->total_ttc >= 0 || ! empty($conf->global->ORDER_ENABLE_NEGATIVE)) && $numlines > 0 && $usercanvalidate) if ($object->statut == Commande::STATUS_DRAFT && ($object->total_ttc >= 0 || !empty($conf->global->ORDER_ENABLE_NEGATIVE)) && $numlines > 0 && $usercanvalidate)
{ {
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=validate">'.$langs->trans('Validate').'</a>'; print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=validate">'.$langs->trans('Validate').'</a>';
} }

View File

@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
$langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta")); $langs->loadLangs(array("accountancy", "bills", "companies", "salaries", "compta", "trips"));
$date_start = GETPOST('date_start', 'alpha'); $date_start = GETPOST('date_start', 'alpha');
$date_startDay = GETPOST('date_startday', 'int'); $date_startDay = GETPOST('date_startday', 'int');
@ -85,7 +85,7 @@ if (!empty($conf->multicompany->enabled) && is_object($mc)) {
$entity = (GETPOSTISSET('entity') ? GETPOST('entity', 'int') : (GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $conf->entity)); $entity = (GETPOSTISSET('entity') ? GETPOST('entity', 'int') : (GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $conf->entity));
if (!empty($conf->multicompany->enabled) && is_object($mc)) { if (!empty($conf->multicompany->enabled) && is_object($mc)) {
if (empty($entity) && ! empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) { if (empty($entity) && !empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
$entity = '0,'.join(',', array_keys($arrayofentities)); $entity = '0,'.join(',', array_keys($arrayofentities));
} }
} }
@ -118,51 +118,69 @@ if (($action == "searchfiles" || $action == "dl")) {
$error++; $error++;
} }
$sql = '';
if (!$error) if (!$error)
{ {
$wheretail = " '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'"; $wheretail = " '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
// Customer invoices // Customer invoices
$sql = "SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, total as total_ht, total_ttc, tva as total_vat, fk_soc, t.datef as date, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum"; if (GETPOST('selectinvoices')) {
$sql .= " FROM ".MAIN_DB_PREFIX."facture as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; if (! empty($sql)) $sql .= " UNION ALL";
$sql .= " WHERE datef between ".$wheretail; $sql .= "SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, total as total_ht, total_ttc, tva as total_vat, fk_soc, t.datef as date, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; $sql .= " FROM ".MAIN_DB_PREFIX."facture as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
$sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT; $sql .= " WHERE datef between ".$wheretail;
$sql .= " UNION ALL"; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
$sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT;
}
// Vendor invoices // Vendor invoices
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paye as paid, total_ht, total_ttc, total_tva as total_vat, fk_soc, datef as date, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum"; if (GETPOST('selectsupplierinvoices')) {
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; if (! empty($sql)) $sql .= " UNION ALL";
$sql .= " WHERE datef between ".$wheretail; $sql .= " SELECT t.rowid as id, t.entity, t.ref, paye as paid, total_ht, total_ttc, total_tva as total_vat, fk_soc, datef as date, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
$sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT; $sql .= " WHERE datef between ".$wheretail;
$sql .= " UNION ALL"; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
$sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
}
// Expense reports // Expense reports
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, total_ht, total_ttc, total_tva as total_vat, fk_user_author as fk_soc, date_fin as date, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; if (GETPOST('selectexpensereports')) {
$sql .= " FROM ".MAIN_DB_PREFIX."expensereport as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user_author LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country"; if (! empty($sql)) $sql .= " UNION ALL";
$sql .= " WHERE date_fin between ".$wheretail; $sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, total_ht, total_ttc, total_tva as total_vat, fk_user_author as fk_soc, date_fin as date, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user_author LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
$sql .= " AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT; $sql .= " WHERE date_fin between ".$wheretail;
$sql .= " UNION ALL"; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
$sql .= " AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
}
// Donations // Donations
$sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, datedon as date, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; if (GETPOST('selectdonations')) {
$sql .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country"; if (! empty($sql)) $sql .= " UNION ALL";
$sql .= " WHERE datedon between ".$wheretail; $sql .= " SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, datedon as date, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; $sql .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country";
$sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT; $sql .= " WHERE datedon between ".$wheretail;
$sql .= " UNION ALL"; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
$sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT;
}
// Paiements of salaries // Paiements of salaries
$sql .= " SELECT t.rowid as id, t.entity, t.ref as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, datep as date, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum"; if (GETPOST('selectpaymentsofsalaries')) {
$sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country"; if (! empty($sql)) $sql .= " UNION ALL";
$sql .= " WHERE datep between ".$wheretail; $sql .= " SELECT t.rowid as id, t.entity, t.ref as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, datep as date, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT; $sql .= " WHERE datep between ".$wheretail;
$sql .= " UNION ALL"; $sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
}
// Social contributions // Social contributions
$sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, paye as paid, amount as total_ht, amount as total_ttc, 0 as total_tva, 0 as fk_soc, date_creation as date, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum"; if (GETPOST('selectsocialcontributions')) {
$sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t"; if (! empty($sql)) $sql .= " UNION ALL";
$sql .= " WHERE date_creation between ".$wheretail; $sql .= " SELECT t.rowid as id, t.entity, t.libelle as ref, paye as paid, amount as total_ht, amount as total_ttc, 0 as total_tva, 0 as fk_soc, date_creation as date, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum";
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')'; $sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t";
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT; $sql .= " WHERE date_creation between ".$wheretail;
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT;
}
}
if ($sql) {
$sql .= $db->order($sortfield, $sortorder); $sql .= $db->order($sortfield, $sortorder);
//print $sql; //print $sql;
@ -238,7 +256,6 @@ if (($action == "searchfiles" || $action == "dl")) {
$files = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview\.png)$', '', SORT_ASC, 1); $files = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview\.png)$', '', SORT_ASC, 1);
//var_dump($upload_dir); //var_dump($upload_dir);
//var_dump($files); //var_dump($files);
if (count($files) < 1) if (count($files) < 1)
{ {
$nofile = array(); $nofile = array();
@ -305,6 +322,9 @@ if (($action == "searchfiles" || $action == "dl")) {
$db->free($resd); $db->free($resd);
} }
else {
setEventMessages($langs->trans("ErrorAtLeastOneObjectMustBeSelected"), null, 'errors');
}
} }
@ -356,29 +376,30 @@ if ($result && $action == "dl" && !$error)
{ {
foreach ($filesarray as $key => $file) foreach ($filesarray as $key => $file)
{ {
foreach($file['files'] as $filecursor) { foreach ($file['files'] as $filecursor) {
if (file_exists($filecursor["fullname"])) { if (file_exists($filecursor["fullname"])) {
$zip->addFile($filecursor["fullname"], $filecursor["relpathnamelang"]); $zip->addFile($filecursor["fullname"], $filecursor["relpathnamelang"]);
} }
} }
$log .= $file['item']; $log .= '"'.$langs->trans($file['item']).'"';
if (!empty($conf->multicompany->enabled) && is_object($mc)) if (!empty($conf->multicompany->enabled) && is_object($mc))
{ {
$log .= ','.(empty($arrayofentities[$file['entity']]) ? $file['entity'] : $arrayofentities[$file['entity']]); $log .= ',"'.(empty($arrayofentities[$file['entity']]) ? $file['entity'] : $arrayofentities[$file['entity']]).'"';
} }
$log .= ','.dol_print_date($file['date'], 'dayrfc'); $log .= ','.dol_print_date($file['date'], 'dayrfc');
$log .= ','.$file['ref']; $log .= ',"'.$file['ref'].'"';
$log .= ','.$file['amount_ht']; $log .= ','.$file['amount_ht'];
$log .= ','.$file['amount_ttc']; $log .= ','.$file['amount_ttc'];
$log .= ','.$file['amount_vat']; $log .= ','.$file['amount_vat'];
$log .= ','.$file['paid']; $log .= ','.$file['paid'];
$log .= ','.$file["name"]; $log .= ',"'.$file["name"].'"';
$log .= ','.$file['fk']; $log .= ','.$file['fk'];
$log .= ','.$file['thirdparty_name']; $log .= ',"'.$file['thirdparty_name'].'"';
$log .= ','.$file['thirdparty_code']; $log .= ','.$file['thirdparty_code'];
$log .= ','.$file['country_code']; $log .= ',"'.$file['country_code'].'"';
$log .= ',"'.$file['vatnum'].'"'."\n"; $log .= ',"'.$file['vatnum'].'"';
$log .= "\n";
} }
$zip->addFromString('transactions.csv', $log); $zip->addFromString('transactions.csv', $log);
$zip->close(); $zip->close();
@ -433,7 +454,7 @@ if (!empty($conf->multicompany->enabled) && is_object($mc))
$mc->getInfo($conf->entity); $mc->getInfo($conf->entity);
print '<span class="marginleftonly marginrightonly">('.$langs->trans("Entity").' : '; print '<span class="marginleftonly marginrightonly">('.$langs->trans("Entity").' : ';
print "<td>"; print "<td>";
if (! empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) { if (!empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
print $mc->select_entities(GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $mc->id, 'search_entity', '', false, false, false, false, true); print $mc->select_entities(GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $mc->id, 'search_entity', '', false, false, false, false, true);
} else { } else {
print $mc->label; print $mc->label;
@ -442,6 +463,23 @@ if (!empty($conf->multicompany->enabled) && is_object($mc))
print ")</span>\n"; print ")</span>\n";
} }
print '<br>';
$listofchoices = array(
'selectinvoices'=>array('label'=>'Invoices', 'lang'=>'bills'),
'selectsupplierinvoices'=>array('label'=>'BillsSuppliers', 'lang'=>'bills'),
'selectexpensereports'=>array('label'=>'ExpenseReports', 'lang'=>'trips'),
'selectdonations'=>array('label'=>'Donations', 'lang'=>'donation'),
'selectpaymentsofsalaries'=>array('label'=>'SalariesPayments', 'lang'=>'salaries'),
'selectsocialcontributions'=>array('label'=>'SocialContributions')
);
foreach($listofchoices as $choice => $val) {
/*if ($val['lang']) {
$langs->load($val['lang']);
}*/
print '<div class="paddingleft inline-block marginrightonly"><input type="checkbox" name="'.$choice.'" value="1"'.((! GETPOSTISSET('search') || GETPOST($choice))?' checked="checked"':'').'> '.$langs->trans($val['label']).'</div>';
}
print '<input class="button" type="submit" name="search" value="'.$langs->trans("Search").'">'; print '<input class="button" type="submit" name="search" value="'.$langs->trans("Search").'">';
print '</form>'."\n"; print '</form>'."\n";
@ -465,14 +503,9 @@ if (!empty($date_start) && !empty($date_stop))
print '<input type="hidden" name="date_start" value="'.dol_print_date($date_start, 'dayxcard').'" />'; print '<input type="hidden" name="date_start" value="'.dol_print_date($date_start, 'dayxcard').'" />';
print '<input type="hidden" name="date_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />'; print '<input type="hidden" name="date_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />';
foreach($listofchoices as $choice => $val) {
//print '<input type="hidden" name="date_stopDay" value="'.dol_print_date($date_stop, '%d').'" />'; print '<input type="hidden" name="'.$choice.'" value="'.GETPOST($choice).'">';
//print '<input type="hidden" name="date_stopMonth" value="'.dol_print_date($date_stop, '%m').'" />'; }
//print '<input type="hidden" name="date_stopYear" value="'.dol_print_date($date_stop, '%Y').'" />';
//print '<input type="hidden" name="date_startDay" value="'.dol_print_date($date_start, '%d').'" />';
//print '<input type="hidden" name="date_startMonth" value="'.dol_print_date($date_start, '%m').'" />';
//print '<input type="hidden" name="date_startYear" value="'.dol_print_date($date_start, '%m').'" />';
print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />'; print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />';
print '</form>'."\n"; print '</form>'."\n";
@ -534,9 +567,9 @@ if (!empty($date_start) && !empty($date_stop))
// File link // File link
print '<td>'; print '<td>';
if (! empty($data['files'])) if (!empty($data['files']))
{ {
foreach($data['files'] as $filecursor) { foreach ($data['files'] as $filecursor) {
print '<a href='.DOL_URL_ROOT.'/'.$filecursor['link'].' target="_blank">'.($filecursor['name'] ? $filecursor['name'] : $filecursor['ref']).'</a><br>'; print '<a href='.DOL_URL_ROOT.'/'.$filecursor['link'].' target="_blank">'.($filecursor['name'] ? $filecursor['name'] : $filecursor['ref']).'</a><br>';
} }
} }

View File

@ -39,18 +39,18 @@ $langs->loadLangs(array('banks', 'categories', 'bills', 'companies'));
// Security check // Security check
if (isset($_GET["account"]) || isset($_GET["ref"])) if (isset($_GET["account"]) || isset($_GET["ref"]))
{ {
$id = isset($_GET["account"])?$_GET["account"]:(isset($_GET["ref"])?$_GET["ref"]:''); $id = isset($_GET["account"]) ? $_GET["account"] : (isset($_GET["ref"]) ? $_GET["ref"] : '');
} }
$fieldid = isset($_GET["ref"])?'ref':'rowid'; $fieldid = isset($_GET["ref"]) ? 'ref' : 'rowid';
if ($user->socid) $socid=$user->socid; if ($user->socid) $socid = $user->socid;
$result=restrictedArea($user, 'banque', $id, 'bank_account&bank_account', '', '', $fieldid); $result = restrictedArea($user, 'banque', $id, 'bank_account&bank_account', '', '', $fieldid);
$vline=isset($_GET["vline"])?$_GET["vline"]:$_POST["vline"]; $vline = isset($_GET["vline"]) ? $_GET["vline"] : $_POST["vline"];
$page=isset($_GET["page"])?$_GET["page"]:0; $page = isset($_GET["page"]) ? $_GET["page"] : 0;
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$hookmanager->initHooks(array('banktreso','globalcard')); $hookmanager->initHooks(array('banktreso', 'globalcard'));
/* /*
* View * View
@ -61,9 +61,9 @@ $helpurl = "";
llxHeader('', $title, $helpurl); llxHeader('', $title, $helpurl);
$societestatic = new Societe($db); $societestatic = new Societe($db);
$facturestatic=new Facture($db); $facturestatic = new Facture($db);
$facturefournstatic=new FactureFournisseur($db); $facturefournstatic = new FactureFournisseur($db);
$socialcontribstatic=new ChargeSociales($db); $socialcontribstatic = new ChargeSociales($db);
$form = new Form($db); $form = new Form($db);
@ -81,17 +81,17 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
$object = new Account($db); $object = new Account($db);
if ($_GET["account"]) if ($_GET["account"])
{ {
$result=$object->fetch($_GET["account"]); $result = $object->fetch($_GET["account"]);
} }
if ($_GET["ref"]) if ($_GET["ref"])
{ {
$result=$object->fetch(0, $_GET["ref"]); $result = $object->fetch(0, $_GET["ref"]);
$_GET["account"]=$object->id; $_GET["account"] = $object->id;
} }
// Onglets // Onglets
$head=bank_prepare_head($object); $head = bank_prepare_head($object);
dol_fiche_head($head, 'cash', $langs->trans("FinancialAccount"), 0, 'account'); dol_fiche_head($head, 'cash', $langs->trans("FinancialAccount"), 0, 'account');
$linkback = '<a href="'.DOL_URL_ROOT.'/compta/bank/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>'; $linkback = '<a href="'.DOL_URL_ROOT.'/compta/bank/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
@ -103,7 +103,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
print '<br>'; print '<br>';
$solde = $object->solde(0); $solde = $object->solde(0);
if($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED)$colspan = 6; if ($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED)$colspan = 6;
else $colspan = 5; else $colspan = 5;
// Show next coming entries // Show next coming entries
@ -114,7 +114,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("DateDue").'</td>'; print '<td>'.$langs->trans("DateDue").'</td>';
print '<td>'.$langs->trans("Description").'</td>'; print '<td>'.$langs->trans("Description").'</td>';
if($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED )print '<td>'.$langs->trans("Entity").'</td>'; if ($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED)print '<td>'.$langs->trans("Entity").'</td>';
print '<td>'.$langs->trans("ThirdParty").'</td>'; print '<td>'.$langs->trans("ThirdParty").'</td>';
print '<td class="right">'.$langs->trans("Debit").'</td>'; print '<td class="right">'.$langs->trans("Debit").'</td>';
print '<td class="right">'.$langs->trans("Credit").'</td>'; print '<td class="right">'.$langs->trans("Credit").'</td>';
@ -139,54 +139,54 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
// Customer invoices // Customer invoices
$sql = "SELECT 'invoice' as family, f.rowid as objid, f.ref as ref, f.total_ttc, f.type, f.date_lim_reglement as dlr,"; $sql = "SELECT 'invoice' as family, f.rowid as objid, f.ref as ref, f.total_ttc, f.type, f.date_lim_reglement as dlr,";
$sql.= " s.rowid as socid, s.nom as name, s.fournisseur"; $sql .= " s.rowid as socid, s.nom as name, s.fournisseur";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f"; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON f.fk_soc = s.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON f.fk_soc = s.rowid";
$sql.= " WHERE f.entity IN (".getEntity('invoice').")"; $sql .= " WHERE f.entity IN (".getEntity('invoice').")";
$sql.= " AND f.paye = 0 AND f.fk_statut = 1"; // Not paid $sql .= " AND f.paye = 0 AND f.fk_statut = 1"; // Not paid
$sql.= " AND (f.fk_account IN (0, ".$object->id.") OR f.fk_account IS NULL)"; // Id bank account of invoice $sql .= " AND (f.fk_account IN (0, ".$object->id.") OR f.fk_account IS NULL)"; // Id bank account of invoice
$sql.= " ORDER BY dlr ASC"; $sql .= " ORDER BY dlr ASC";
$sqls[] = $sql; $sqls[] = $sql;
// Supplier invoices // Supplier invoices
$sql = " SELECT 'invoice_supplier' as family, ff.rowid as objid, ff.ref as ref, ff.ref_supplier as ref_supplier, (-1*ff.total_ttc) as total_ttc, ff.type, ff.date_lim_reglement as dlr,"; $sql = " SELECT 'invoice_supplier' as family, ff.rowid as objid, ff.ref as ref, ff.ref_supplier as ref_supplier, (-1*ff.total_ttc) as total_ttc, ff.type, ff.date_lim_reglement as dlr,";
$sql.= " s.rowid as socid, s.nom as name, s.fournisseur"; $sql .= " s.rowid as socid, s.nom as name, s.fournisseur";
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as ff"; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as ff";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON ff.fk_soc = s.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON ff.fk_soc = s.rowid";
$sql.= " WHERE ff.entity = ".$conf->entity; $sql .= " WHERE ff.entity = ".$conf->entity;
$sql.= " AND ff.paye = 0 AND fk_statut = 1"; // Not paid $sql .= " AND ff.paye = 0 AND fk_statut = 1"; // Not paid
$sql.= " AND (ff.fk_account IN (0, ".$object->id.") OR ff.fk_account IS NULL)"; // Id bank account of supplier invoice $sql .= " AND (ff.fk_account IN (0, ".$object->id.") OR ff.fk_account IS NULL)"; // Id bank account of supplier invoice
$sql.= " ORDER BY dlr ASC"; $sql .= " ORDER BY dlr ASC";
$sqls[] = $sql; $sqls[] = $sql;
// Social contributions // Social contributions
$sql = " SELECT 'social_contribution' as family, cs.rowid as objid, cs.libelle as ref, (-1*cs.amount) as total_ttc, ccs.libelle as type, cs.date_ech as dlr"; $sql = " SELECT 'social_contribution' as family, cs.rowid as objid, cs.libelle as ref, (-1*cs.amount) as total_ttc, ccs.libelle as type, cs.date_ech as dlr";
$sql.= ", cs.fk_account"; $sql .= ", cs.fk_account";
$sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as cs"; $sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as cs";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_chargesociales as ccs ON cs.fk_type = ccs.id"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_chargesociales as ccs ON cs.fk_type = ccs.id";
$sql.= " WHERE cs.entity = ".$conf->entity; $sql .= " WHERE cs.entity = ".$conf->entity;
$sql.= " AND cs.paye = 0"; // Not paid $sql .= " AND cs.paye = 0"; // Not paid
$sql.= " AND (cs.fk_account IN (0, ".$object->id.") OR cs.fk_account IS NULL)"; // Id bank account of social contribution $sql .= " AND (cs.fk_account IN (0, ".$object->id.") OR cs.fk_account IS NULL)"; // Id bank account of social contribution
$sql.= " ORDER BY dlr ASC"; $sql .= " ORDER BY dlr ASC";
$sqls[] = $sql; $sqls[] = $sql;
// others sql // others sql
$parameters = array(); $parameters = array();
$reshook = $hookmanager->executeHooks('addMoreSQL', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('addMoreSQL', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if(empty($reshook) and isset($hookmanager->resArray['sql'])){ if (empty($reshook) and isset($hookmanager->resArray['sql'])) {
$sqls[] = $hookmanager->resArray['sql']; $sqls[] = $hookmanager->resArray['sql'];
} }
$error=0; $error = 0;
$tab_sqlobjOrder=array(); $tab_sqlobjOrder = array();
$tab_sqlobj=array(); $tab_sqlobj = array();
foreach($sqls as $sql){ foreach ($sqls as $sql) {
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) { if ($resql) {
while ($sqlobj = $db->fetch_object($resql)) { while ($sqlobj = $db->fetch_object($resql)) {
$tab_sqlobj[] = $sqlobj; $tab_sqlobj[] = $sqlobj;
$tab_sqlobjOrder[]= $db->jdate($sqlobj->dlr); $tab_sqlobjOrder[] = $db->jdate($sqlobj->dlr);
} }
$db->free($resql); $db->free($resql);
} else { } else {
@ -195,13 +195,13 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
} }
// Sort array // Sort array
if (! $error) if (!$error)
{ {
array_multisort($tab_sqlobjOrder, $tab_sqlobj); array_multisort($tab_sqlobjOrder, $tab_sqlobj);
// Apply distinct filter // Apply distinct filter
foreach ($tab_sqlobj as $key=>$value) { foreach ($tab_sqlobj as $key=>$value) {
$tab_sqlobj[$key] = "'" . serialize($value) . "'"; $tab_sqlobj[$key] = "'".serialize($value)."'";
} }
$tab_sqlobj = array_unique($tab_sqlobj); $tab_sqlobj = array_unique($tab_sqlobj);
foreach ($tab_sqlobj as $key=>$value) { foreach ($tab_sqlobj as $key=>$value) {
@ -221,52 +221,52 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
if ($obj->family == 'invoice_supplier') if ($obj->family == 'invoice_supplier')
{ {
$showline=1; $showline = 1;
// Uncomment this line to avoid to count suppliers credit note (ff.type = 2) // Uncomment this line to avoid to count suppliers credit note (ff.type = 2)
//$showline=(($obj->total_ttc < 0 && $obj->type != 2) || ($obj->total_ttc > 0 && $obj->type == 2)) //$showline=(($obj->total_ttc < 0 && $obj->type != 2) || ($obj->total_ttc > 0 && $obj->type == 2))
if ($showline) if ($showline)
{ {
$ref=$obj->ref; $ref = $obj->ref;
$facturefournstatic->ref=$ref; $facturefournstatic->ref = $ref;
$facturefournstatic->id=$obj->objid; $facturefournstatic->id = $obj->objid;
$facturefournstatic->type=$obj->type; $facturefournstatic->type = $obj->type;
$ref = $facturefournstatic->getNomUrl(1, ''); $ref = $facturefournstatic->getNomUrl(1, '');
$societestatic->id = $obj->socid; $societestatic->id = $obj->socid;
$societestatic->name = $obj->name; $societestatic->name = $obj->name;
$refcomp=$societestatic->getNomUrl(1, '', 24); $refcomp = $societestatic->getNomUrl(1, '', 24);
$totalpayment = -1*$facturefournstatic->getSommePaiement(); // Payment already done $totalpayment = -1 * $facturefournstatic->getSommePaiement(); // Payment already done
} }
} }
if ($obj->family == 'invoice') if ($obj->family == 'invoice')
{ {
$facturestatic->ref=$obj->ref; $facturestatic->ref = $obj->ref;
$facturestatic->id=$obj->objid; $facturestatic->id = $obj->objid;
$facturestatic->type=$obj->type; $facturestatic->type = $obj->type;
$ref = $facturestatic->getNomUrl(1, ''); $ref = $facturestatic->getNomUrl(1, '');
$societestatic->id = $obj->socid; $societestatic->id = $obj->socid;
$societestatic->name = $obj->name; $societestatic->name = $obj->name;
$refcomp=$societestatic->getNomUrl(1, '', 24); $refcomp = $societestatic->getNomUrl(1, '', 24);
$totalpayment = $facturestatic->getSommePaiement(); // Payment already done $totalpayment = $facturestatic->getSommePaiement(); // Payment already done
$totalpayment+= $facturestatic->getSumDepositsUsed(); $totalpayment += $facturestatic->getSumDepositsUsed();
$totalpayment+= $facturestatic->getSumCreditNotesUsed(); $totalpayment += $facturestatic->getSumCreditNotesUsed();
} }
if ($obj->family == 'social_contribution') if ($obj->family == 'social_contribution')
{ {
$socialcontribstatic->ref=$obj->ref; $socialcontribstatic->ref = $obj->ref;
$socialcontribstatic->id=$obj->objid; $socialcontribstatic->id = $obj->objid;
$socialcontribstatic->label=$obj->type; $socialcontribstatic->label = $obj->type;
$ref = $socialcontribstatic->getNomUrl(1, 24); $ref = $socialcontribstatic->getNomUrl(1, 24);
$totalpayment = -1*$socialcontribstatic->getSommePaiement(); // Payment already done $totalpayment = -1 * $socialcontribstatic->getSommePaiement(); // Payment already done
} }
$parameters = array('obj' => $obj, 'ref' => $ref, 'refcomp' => $refcomp, 'totalpayment' => $totalpayment); $parameters = array('obj' => $obj, 'ref' => $ref, 'refcomp' => $refcomp, 'totalpayment' => $totalpayment);
$reshook = $hookmanager->executeHooks('moreFamily', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('moreFamily', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if(empty($reshook)){ if (empty($reshook)) {
$ref = isset($hookmanager->resArray['ref']) ? $hookmanager->resArray['ref'] : $ref; $ref = isset($hookmanager->resArray['ref']) ? $hookmanager->resArray['ref'] : $ref;
$refcomp = isset($hookmanager->resArray['refcomp']) ? $hookmanager->resArray['refcomp'] : $refcomp; $refcomp = isset($hookmanager->resArray['refcomp']) ? $hookmanager->resArray['refcomp'] : $refcomp;
$totalpayment = isset($hookmanager->resArray['totalpayment']) ? $hookmanager->resArray['totalpayment'] : $totalpayment; $totalpayment = isset($hookmanager->resArray['totalpayment']) ? $hookmanager->resArray['totalpayment'] : $totalpayment;
@ -287,7 +287,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
print "</td>"; print "</td>";
print "<td>".$ref."</td>"; print "<td>".$ref."</td>";
if ($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED) { if ($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED) {
if($obj->family == 'invoice'){ if ($obj->family == 'invoice') {
$mc->getInfo($obj->entity); $mc->getInfo($obj->entity);
print "<td>".$mc->label."</td>"; print "<td>".$mc->label."</td>";
} }
@ -313,7 +313,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
// Other lines // Other lines
$parameters = array('solde' => $solde); $parameters = array('solde' => $solde);
$reshook = $hookmanager->executeHooks('printObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('printObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
if(empty($reshook)){ if (empty($reshook)) {
print $hookmanager->resPrint; print $hookmanager->resPrint;
$solde = isset($hookmanager->resArray['solde']) ? $hookmanager->resArray['solde'] : $solde; $solde = isset($hookmanager->resArray['solde']) ? $hookmanager->resArray['solde'] : $solde;
} }

View File

@ -4581,18 +4581,18 @@ class Facture extends CommonInvoice
if ($this->statut != Facture::STATUS_VALIDATED) return false; if ($this->statut != Facture::STATUS_VALIDATED) return false;
$hasDelay = $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay); $hasDelay = $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay);
if($hasDelay && !empty($this->retained_warranty) && !empty($this->retained_warranty_date_limit)) if ($hasDelay && !empty($this->retained_warranty) && !empty($this->retained_warranty_date_limit))
{ {
$totalpaye = $this->getSommePaiement(); $totalpaye = $this->getSommePaiement();
$totalpaye = floatval($totalpaye); $totalpaye = floatval($totalpaye);
$RetainedWarrantyAmount = $this->getRetainedWarrantyAmount(); $RetainedWarrantyAmount = $this->getRetainedWarrantyAmount();
if($totalpaye >= 0 && $RetainedWarrantyAmount>= 0) if ($totalpaye >= 0 && $RetainedWarrantyAmount >= 0)
{ {
if( ($totalpaye < $this->total_ttc - $RetainedWarrantyAmount) && $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay) ) if (($totalpaye < $this->total_ttc - $RetainedWarrantyAmount) && $this->date_lim_reglement < ($now - $conf->facture->client->warning_delay))
{ {
$hasDelay = 1; $hasDelay = 1;
} }
elseif($totalpaye < $this->total_ttc && $this->retained_warranty_date_limit < ($now - $conf->facture->client->warning_delay) ) elseif ($totalpaye < $this->total_ttc && $this->retained_warranty_date_limit < ($now - $conf->facture->client->warning_delay))
{ {
$hasDelay = 1; $hasDelay = 1;
} }
@ -4657,8 +4657,8 @@ class Facture extends CommonInvoice
$retainedWarrantyAmount = $this->total_ttc * $this->retained_warranty / 100; $retainedWarrantyAmount = $this->total_ttc * $this->retained_warranty / 100;
} }
if ($rounding < 0){ if ($rounding < 0) {
$rounding=min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT); $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
return round($retainedWarrantyAmount, 2); return round($retainedWarrantyAmount, 2);
} }

View File

@ -266,8 +266,8 @@ if (empty($reshook))
$paiement->paiementid = dol_getIdFromCode($db, GETPOST('paiementcode'), 'c_paiement', 'code', 'id', 1); $paiement->paiementid = dol_getIdFromCode($db, GETPOST('paiementcode'), 'c_paiement', 'code', 'id', 1);
$paiement->num_payment = GETPOST('num_paiement', 'alpha'); $paiement->num_payment = GETPOST('num_paiement', 'alpha');
$paiement->note_private = GETPOST('comment', 'alpha'); $paiement->note_private = GETPOST('comment', 'alpha');
$paiement->num_paiement = $paiement->num_payment; // For bacward compatibility $paiement->num_paiement = $paiement->num_payment; // For bacward compatibility
$paiement->note = $paiement->note_private; // For bacward compatibility $paiement->note = $paiement->note_private; // For bacward compatibility
if (!$error) if (!$error)
{ {

View File

@ -594,43 +594,43 @@ class Paiement extends CommonObject
{ {
global $conf, $langs, $user; global $conf, $langs, $user;
$error=0; $error = 0;
$bank_line_id=0; $bank_line_id = 0;
if (! empty($conf->banque->enabled)) if (!empty($conf->banque->enabled))
{ {
if ($accountid <= 0) if ($accountid <= 0)
{ {
$this->error='Bad value for parameter accountid='.$accountid; $this->error = 'Bad value for parameter accountid='.$accountid;
dol_syslog(get_class($this).'::addPaymentToBank '.$this->error, LOG_ERR); dol_syslog(get_class($this).'::addPaymentToBank '.$this->error, LOG_ERR);
return -1; return -1;
} }
$this->db->begin(); $this->db->begin();
$this->fk_account=$accountid; $this->fk_account = $accountid;
include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
dol_syslog("$user->id, $mode, $label, $this->fk_account, $emetteur_nom, $emetteur_banque"); dol_syslog("$user->id, $mode, $label, $this->fk_account, $emetteur_nom, $emetteur_banque");
$acc = new Account($this->db); $acc = new Account($this->db);
$result=$acc->fetch($this->fk_account); $result = $acc->fetch($this->fk_account);
$totalamount=$this->amount; $totalamount = $this->amount;
if (empty($totalamount)) $totalamount=$this->total; // For backward compatibility if (empty($totalamount)) $totalamount = $this->total; // For backward compatibility
// if dolibarr currency != bank currency then we received an amount in customer currency (currently I don't manage the case : my currency is USD, the customer currency is EUR and he paid me in GBP. Seems no sense for me) // if dolibarr currency != bank currency then we received an amount in customer currency (currently I don't manage the case : my currency is USD, the customer currency is EUR and he paid me in GBP. Seems no sense for me)
if (!empty($conf->multicurrency->enabled) && $conf->currency != $acc->currency_code) $totalamount=$this->multicurrency_amount; if (!empty($conf->multicurrency->enabled) && $conf->currency != $acc->currency_code) $totalamount = $this->multicurrency_amount;
if ($mode == 'payment_supplier') $totalamount=-$totalamount; if ($mode == 'payment_supplier') $totalamount = -$totalamount;
// Insert payment into llx_bank // Insert payment into llx_bank
$bank_line_id = $acc->addline( $bank_line_id = $acc->addline(
$this->datepaye, $this->datepaye,
$this->paiementid, // Payment mode id or code ("CHQ or VIR for example") $this->paiementid, // Payment mode id or code ("CHQ or VIR for example")
$label, $label,
$totalamount, // Sign must be positive when we receive money (customer payment), negative when you give money (supplier invoice or credit note) $totalamount, // Sign must be positive when we receive money (customer payment), negative when you give money (supplier invoice or credit note)
$this->num_payment, $this->num_payment,
'', '',
$user, $user,

View File

@ -30,7 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsocialcontrib.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsocialcontrib.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; if (!empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
// Load translation files required by the page // Load translation files required by the page
$langs->loadLangs(array('compta', 'banks', 'bills')); $langs->loadLangs(array('compta', 'banks', 'bills'));
@ -97,8 +97,8 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
$search_day_lim = ''; $search_day_lim = '';
$search_year_lim = ''; $search_year_lim = '';
$search_month_lim = ''; $search_month_lim = '';
$search_project_ref=''; $search_project_ref = '';
$search_project=''; $search_project = '';
$toselect = ''; $toselect = '';
$search_array_options = array(); $search_array_options = array();
} }
@ -112,25 +112,25 @@ $form = new Form($db);
$formother = new FormOther($db); $formother = new FormOther($db);
$formsocialcontrib = new FormSocialContrib($db); $formsocialcontrib = new FormSocialContrib($db);
$chargesociale_static = new ChargeSociales($db); $chargesociale_static = new ChargeSociales($db);
if (! empty($conf->projet->enabled)) $projectstatic=new Project($db); if (!empty($conf->projet->enabled)) $projectstatic = new Project($db);
llxHeader('', $langs->trans("SocialContributions")); llxHeader('', $langs->trans("SocialContributions"));
$sql = "SELECT cs.rowid as id, cs.fk_type as type, "; $sql = "SELECT cs.rowid as id, cs.fk_type as type, ";
$sql .= " cs.amount, cs.date_ech, cs.libelle as label, cs.paye, cs.periode,"; $sql .= " cs.amount, cs.date_ech, cs.libelle as label, cs.paye, cs.periode,";
if (! empty($conf->projet->enabled)) $sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,"; if (!empty($conf->projet->enabled)) $sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,";
$sql .= " c.libelle as type_label,"; $sql .= " c.libelle as type_label,";
$sql .= " SUM(pc.amount) as alreadypayed"; $sql .= " SUM(pc.amount) as alreadypayed";
$sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c,"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c,";
$sql .= " ".MAIN_DB_PREFIX."chargesociales as cs"; $sql .= " ".MAIN_DB_PREFIX."chargesociales as cs";
if (! empty($conf->projet->enabled)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = cs.fk_projet"; if (!empty($conf->projet->enabled)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = cs.fk_projet";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiementcharge as pc ON pc.fk_charge = cs.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiementcharge as pc ON pc.fk_charge = cs.rowid";
$sql .= " WHERE cs.fk_type = c.id"; $sql .= " WHERE cs.fk_type = c.id";
$sql .= " AND cs.entity = ".$conf->entity; $sql .= " AND cs.entity = ".$conf->entity;
// Search criteria // Search criteria
if ($search_ref) $sql .= " AND cs.rowid=".$db->escape($search_ref); if ($search_ref) $sql .= " AND cs.rowid=".$db->escape($search_ref);
if ($search_label) $sql .= natural_search("cs.libelle", $search_label); if ($search_label) $sql .= natural_search("cs.libelle", $search_label);
if (! empty($conf->projet->enabled)) if ($search_project_ref != '') $sql.= natural_search("p.ref", $search_project_ref); if (!empty($conf->projet->enabled)) if ($search_project_ref != '') $sql .= natural_search("p.ref", $search_project_ref);
if ($search_amount) $sql .= natural_search("cs.amount", $search_amount, 1); if ($search_amount) $sql .= natural_search("cs.amount", $search_amount, 1);
if ($search_status != '' && $search_status >= 0) $sql .= " AND cs.paye = ".$db->escape($search_status); if ($search_status != '' && $search_status >= 0) $sql .= " AND cs.paye = ".$db->escape($search_status);
$sql .= dolSqlDateFilter("cs.periode", $search_day_lim, $search_month_lim, $search_year_lim); $sql .= dolSqlDateFilter("cs.periode", $search_day_lim, $search_month_lim, $search_year_lim);
@ -173,7 +173,7 @@ if ($resql)
if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit);
if ($search_ref) $param .= '&search_ref='.urlencode($search_ref); if ($search_ref) $param .= '&search_ref='.urlencode($search_ref);
if ($search_label) $param .= '&search_label='.urlencode($search_label); if ($search_label) $param .= '&search_label='.urlencode($search_label);
if ($search_project_ref >= 0) $param.="&search_project_ref=".urlencode($search_project_ref); if ($search_project_ref >= 0) $param .= "&search_project_ref=".urlencode($search_project_ref);
if ($search_amount) $param .= '&search_amount='.urlencode($search_amount); if ($search_amount) $param .= '&search_amount='.urlencode($search_amount);
if ($search_typeid) $param .= '&search_typeid='.urlencode($search_typeid); if ($search_typeid) $param .= '&search_typeid='.urlencode($search_typeid);
if ($search_status != '' && $search_status != '-1') $param .= '&search_status='.urlencode($search_status); if ($search_status != '' && $search_status != '-1') $param .= '&search_status='.urlencode($search_status);
@ -229,7 +229,7 @@ if ($resql)
$formsocialcontrib->select_type_socialcontrib($search_typeid, 'search_typeid', 1, 0, 0, 'maxwidth100onsmartphone'); $formsocialcontrib->select_type_socialcontrib($search_typeid, 'search_typeid', 1, 0, 0, 'maxwidth100onsmartphone');
print '</td>'; print '</td>';
// Ref Project // Ref Project
if (! empty($conf->projet->enabled)) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project_ref" value="'.$search_project_ref.'"></td>'; if (!empty($conf->projet->enabled)) print '<td class="liste_titre"><input type="text" class="flat" size="6" name="search_project_ref" value="'.$search_project_ref.'"></td>';
// Date // Date
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
// Period end date // Period end date
@ -258,7 +258,7 @@ if ($resql)
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "id", "", $param, "", $sortfield, $sortorder); print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "id", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre("Label", $_SERVER["PHP_SELF"], "cs.libelle", "", $param, 'class="left"', $sortfield, $sortorder); print_liste_field_titre("Label", $_SERVER["PHP_SELF"], "cs.libelle", "", $param, 'class="left"', $sortfield, $sortorder);
print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "type", "", $param, 'class="left"', $sortfield, $sortorder); print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "type", "", $param, 'class="left"', $sortfield, $sortorder);
if (! empty($conf->projet->enabled)) print_liste_field_titre('ProjectRef', $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder); if (!empty($conf->projet->enabled)) print_liste_field_titre('ProjectRef', $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "cs.date_ech", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "cs.date_ech", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre("PeriodEndDate", $_SERVER["PHP_SELF"], "periode", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("PeriodEndDate", $_SERVER["PHP_SELF"], "periode", "", $param, 'align="center"', $sortfield, $sortorder);
print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "cs.amount", "", $param, 'class="right"', $sortfield, $sortorder); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "cs.amount", "", $param, 'class="right"', $sortfield, $sortorder);
@ -276,10 +276,10 @@ if ($resql)
$chargesociale_static->ref = $obj->id; $chargesociale_static->ref = $obj->id;
$chargesociale_static->label = $obj->label; $chargesociale_static->label = $obj->label;
$chargesociale_static->type_label = $obj->type_label; $chargesociale_static->type_label = $obj->type_label;
if (! empty($conf->projet->enabled)) { if (!empty($conf->projet->enabled)) {
$projectstatic->id=$obj->project_id; $projectstatic->id = $obj->project_id;
$projectstatic->ref=$obj->project_ref; $projectstatic->ref = $obj->project_ref;
$projectstatic->title=$obj->project_label; $projectstatic->title = $obj->project_label;
} }
print '<tr class="oddeven">'; print '<tr class="oddeven">';
@ -297,7 +297,7 @@ if ($resql)
if (!$i) $totalarray['nbfield']++; if (!$i) $totalarray['nbfield']++;
// Project Ref // Project Ref
if (! empty($conf->projet->enabled)) { if (!empty($conf->projet->enabled)) {
print '<td class="nowrap">'; print '<td class="nowrap">';
if ($obj->project_id > 0) if ($obj->project_id > 0)
{ {

View File

@ -31,23 +31,23 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
// Load translation files required by the page // Load translation files required by the page
$langs->loadLangs(array("products","categories","errors",'accountancy')); $langs->loadLangs(array("products", "categories", "errors", 'accountancy'));
// Security pack (data & check) // Security pack (data & check)
$socid = GETPOST('socid', 'int'); $socid = GETPOST('socid', 'int');
if ($user->socid > 0) $socid = $user->socid; if ($user->socid > 0) $socid = $user->socid;
if (! empty($conf->comptabilite->enabled)) $result=restrictedArea($user, 'compta', '', '', 'resultat'); if (!empty($conf->comptabilite->enabled)) $result = restrictedArea($user, 'compta', '', '', 'resultat');
if (! empty($conf->accounting->enabled)) $result=restrictedArea($user, 'accounting', '', '', 'comptarapport'); if (!empty($conf->accounting->enabled)) $result = restrictedArea($user, 'accounting', '', '', 'comptarapport');
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES') // Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
$modecompta = $conf->global->ACCOUNTING_MODE; $modecompta = $conf->global->ACCOUNTING_MODE;
if (GETPOST("modecompta")) $modecompta=GETPOST("modecompta"); if (GETPOST("modecompta")) $modecompta = GETPOST("modecompta");
$sortorder=isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"]; $sortorder = isset($_GET["sortorder"]) ? $_GET["sortorder"] : $_POST["sortorder"];
$sortfield=isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"]; $sortfield = isset($_GET["sortfield"]) ? $_GET["sortfield"] : $_POST["sortfield"];
if (! $sortorder) $sortorder="asc"; if (!$sortorder) $sortorder = "asc";
if (! $sortfield) $sortfield="ref"; if (!$sortfield) $sortfield = "ref";
// Category // Category
$selected_cat = (int) GETPOST('search_categ', 'int'); $selected_cat = (int) GETPOST('search_categ', 'int');
@ -58,11 +58,11 @@ if (GETPOST('subcat', 'alpha') === 'yes') {
} }
// product/service // product/service
$selected_type = GETPOST('search_type', 'int'); $selected_type = GETPOST('search_type', 'int');
if ($selected_type =='') $selected_type = -1; if ($selected_type == '') $selected_type = -1;
// Date range // Date range
$year=GETPOST("year"); $year = GETPOST("year");
$month=GETPOST("month"); $month = GETPOST("month");
$date_startyear = GETPOST("date_startyear"); $date_startyear = GETPOST("date_startyear");
$date_startmonth = GETPOST("date_startmonth"); $date_startmonth = GETPOST("date_startmonth");
$date_startday = GETPOST("date_startday"); $date_startday = GETPOST("date_startday");
@ -79,51 +79,51 @@ if (empty($year))
$month_current = strftime("%m", dol_now()); $month_current = strftime("%m", dol_now());
$year_start = $year; $year_start = $year;
} }
$date_start=dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear")); $date_start = dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear"));
$date_end=dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear")); $date_end = dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear"));
// Quarter // Quarter
if (empty($date_start) || empty($date_end)) // We define date_start and date_end if (empty($date_start) || empty($date_end)) // We define date_start and date_end
{ {
$q=GETPOST("q", "int"); $q = GETPOST("q", "int");
if (empty($q)) if (empty($q))
{ {
// We define date_start and date_end // We define date_start and date_end
$month_start=GETPOST("month")?GETPOST("month"):($conf->global->SOCIETE_FISCAL_MONTH_START?($conf->global->SOCIETE_FISCAL_MONTH_START):1); $month_start = GETPOST("month") ?GETPOST("month") : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
$year_end=$year_start; $year_end = $year_start;
$month_end=$month_start; $month_end = $month_start;
if (! GETPOST("month")) // If month not forced if (!GETPOST("month")) // If month not forced
{ {
if (! GETPOST('year') && $month_start > $month_current) if (!GETPOST('year') && $month_start > $month_current)
{ {
$year_start--; $year_start--;
$year_end--; $year_end--;
} }
$month_end=$month_start-1; $month_end = $month_start - 1;
if ($month_end < 1) $month_end=12; if ($month_end < 1) $month_end = 12;
else $year_end++; else $year_end++;
} }
$date_start=dol_get_first_day($year_start, $month_start, false); $date_end=dol_get_last_day($year_end, $month_end, false); $date_start = dol_get_first_day($year_start, $month_start, false); $date_end = dol_get_last_day($year_end, $month_end, false);
} }
else else
{ {
if ($q==1) { $date_start=dol_get_first_day($year_start, 1, false); $date_end=dol_get_last_day($year_start, 3, false); } if ($q == 1) { $date_start = dol_get_first_day($year_start, 1, false); $date_end = dol_get_last_day($year_start, 3, false); }
if ($q==2) { $date_start=dol_get_first_day($year_start, 4, false); $date_end=dol_get_last_day($year_start, 6, false); } if ($q == 2) { $date_start = dol_get_first_day($year_start, 4, false); $date_end = dol_get_last_day($year_start, 6, false); }
if ($q==3) { $date_start=dol_get_first_day($year_start, 7, false); $date_end=dol_get_last_day($year_start, 9, false); } if ($q == 3) { $date_start = dol_get_first_day($year_start, 7, false); $date_end = dol_get_last_day($year_start, 9, false); }
if ($q==4) { $date_start=dol_get_first_day($year_start, 10, false); $date_end=dol_get_last_day($year_start, 12, false); } if ($q == 4) { $date_start = dol_get_first_day($year_start, 10, false); $date_end = dol_get_last_day($year_start, 12, false); }
} }
} else { } else {
// TODO We define q // TODO We define q
} }
// $date_start and $date_end are defined. We force $year_start and $nbofyear // $date_start and $date_end are defined. We force $year_start and $nbofyear
$tmps=dol_getdate($date_start); $tmps = dol_getdate($date_start);
$year_start = $tmps['year']; $year_start = $tmps['year'];
$tmpe=dol_getdate($date_end); $tmpe = dol_getdate($date_end);
$year_end = $tmpe['year']; $year_end = $tmpe['year'];
$nbofyear = ($year_end - $year_start) + 1; $nbofyear = ($year_end - $year_start) + 1;
$commonparams=array(); $commonparams = array();
if (!empty($modecompta)) $commonparams['modecompta']=$modecompta; if (!empty($modecompta)) $commonparams['modecompta'] = $modecompta;
if (!empty($sortorder)) $commonparams['sortorder'] = $sortorder; if (!empty($sortorder)) $commonparams['sortorder'] = $sortorder;
if (!empty($sortfield)) $commonparams['sortfield'] = $sortfield; if (!empty($sortfield)) $commonparams['sortfield'] = $sortfield;
@ -142,15 +142,15 @@ $tableparams = array();
if (!empty($selected_cat)) $tableparams['search_categ'] = $selected_cat; if (!empty($selected_cat)) $tableparams['search_categ'] = $selected_cat;
if (!empty($selected_soc)) $tableparams['search_soc'] = $selected_soc; if (!empty($selected_soc)) $tableparams['search_soc'] = $selected_soc;
if (!empty($selected_type)) $tableparams['search_type'] = $selected_type; if (!empty($selected_type)) $tableparams['search_type'] = $selected_type;
$tableparams['subcat'] = ($subcat === true)?'yes':''; $tableparams['subcat'] = ($subcat === true) ? 'yes' : '';
// Adding common parameters // Adding common parameters
$allparams = array_merge($commonparams, $headerparams, $tableparams); $allparams = array_merge($commonparams, $headerparams, $tableparams);
$headerparams = array_merge($commonparams, $headerparams); $headerparams = array_merge($commonparams, $headerparams);
$tableparams = array_merge($commonparams, $tableparams); $tableparams = array_merge($commonparams, $tableparams);
foreach($allparams as $key => $value) { foreach ($allparams as $key => $value) {
$paramslink .= '&' . $key . '=' . $value; $paramslink .= '&'.$key.'='.$value;
} }
@ -160,127 +160,127 @@ foreach($allparams as $key => $value) {
llxHeader(); llxHeader();
$form=new Form($db); $form = new Form($db);
$formother = new FormOther($db); $formother = new FormOther($db);
// TODO Report from bookkeeping not yet available, so we switch on report on business events // TODO Report from bookkeeping not yet available, so we switch on report on business events
if ($modecompta=="BOOKKEEPING") $modecompta="CREANCES-DETTES"; if ($modecompta == "BOOKKEEPING") $modecompta = "CREANCES-DETTES";
if ($modecompta=="BOOKKEEPINGCOLLECTED") $modecompta="RECETTES-DEPENSES"; if ($modecompta == "BOOKKEEPINGCOLLECTED") $modecompta = "RECETTES-DEPENSES";
// Show report header // Show report header
if ($modecompta=="CREANCES-DETTES") { if ($modecompta == "CREANCES-DETTES") {
$name=$langs->trans("Turnover").', '.$langs->trans("ByProductsAndServices"); $name = $langs->trans("Turnover").', '.$langs->trans("ByProductsAndServices");
$calcmode=$langs->trans("CalcModeDebt"); $calcmode = $langs->trans("CalcModeDebt");
//$calcmode.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=RECETTES-DEPENSES">','</a>').')'; //$calcmode.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=RECETTES-DEPENSES">','</a>').')';
$description=$langs->trans("RulesCADue"); $description = $langs->trans("RulesCADue");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description.= $langs->trans("DepositsAreNotIncluded"); $description .= $langs->trans("DepositsAreNotIncluded");
} else { } else {
$description.= $langs->trans("DepositsAreIncluded"); $description .= $langs->trans("DepositsAreIncluded");
} }
$builddate=dol_now(); $builddate = dol_now();
} }
elseif ($modecompta=="RECETTES-DEPENSES") elseif ($modecompta == "RECETTES-DEPENSES")
{ {
$name=$langs->trans("TurnoverCollected").', '.$langs->trans("ByProductsAndServices"); $name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByProductsAndServices");
$calcmode=$langs->trans("CalcModeEngagement"); $calcmode = $langs->trans("CalcModeEngagement");
//$calcmode.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=CREANCES-DETTES">','</a>').')'; //$calcmode.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=CREANCES-DETTES">','</a>').')';
$description=$langs->trans("RulesCAIn"); $description = $langs->trans("RulesCAIn");
$description.= $langs->trans("DepositsAreIncluded"); $description .= $langs->trans("DepositsAreIncluded");
$builddate=dol_now(); $builddate = dol_now();
} }
elseif ($modecompta=="BOOKKEEPING") elseif ($modecompta == "BOOKKEEPING")
{ {
} }
elseif ($modecompta=="BOOKKEEPINGCOLLECTED") elseif ($modecompta == "BOOKKEEPINGCOLLECTED")
{ {
} }
$period=$form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0);
if ($date_end == dol_time_plus_duree($date_start, 1, 'y') - 1) $periodlink='<a href="'.$_SERVER["PHP_SELF"].'?year='.($year_start-1).'&modecompta='.$modecompta.'">'.img_previous().'</a> <a href="'.$_SERVER["PHP_SELF"].'?year='.($year_start+1).'&modecompta='.$modecompta.'">'.img_next().'</a>'; if ($date_end == dol_time_plus_duree($date_start, 1, 'y') - 1) $periodlink = '<a href="'.$_SERVER["PHP_SELF"].'?year='.($year_start - 1).'&modecompta='.$modecompta.'">'.img_previous().'</a> <a href="'.$_SERVER["PHP_SELF"].'?year='.($year_start + 1).'&modecompta='.$modecompta.'">'.img_next().'</a>';
else $periodlink = ''; else $periodlink = '';
report_header($name, $namelink, $period, $periodlink, $description, $builddate, $exportlink, $tableparams, $calcmode); report_header($name, $namelink, $period, $periodlink, $description, $builddate, $exportlink, $tableparams, $calcmode);
if (! empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING') if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING')
{ {
print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1); print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1);
} }
$name=array(); $name = array();
// SQL request // SQL request
$catotal=0; $catotal = 0;
$catotal_ht=0; $catotal_ht = 0;
$qtytotal=0; $qtytotal = 0;
if ($modecompta == 'CREANCES-DETTES') if ($modecompta == 'CREANCES-DETTES')
{ {
$sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label, p.fk_product_type as product_type,"; $sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label, p.fk_product_type as product_type,";
$sql.= " SUM(l.total_ht) as amount, SUM(l.total_ttc) as amount_ttc,"; $sql .= " SUM(l.total_ht) as amount, SUM(l.total_ttc) as amount_ttc,";
$sql.= " SUM(CASE WHEN f.type = 2 THEN -l.qty ELSE l.qty END) as qty"; $sql .= " SUM(CASE WHEN f.type = 2 THEN -l.qty ELSE l.qty END) as qty";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f"; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
if($selected_soc > 0) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as soc ON (soc.rowid = f.fk_soc)"; if ($selected_soc > 0) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as soc ON (soc.rowid = f.fk_soc)";
$sql.= ",".MAIN_DB_PREFIX."facturedet as l"; $sql .= ",".MAIN_DB_PREFIX."facturedet as l";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON l.fk_product = p.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON l.fk_product = p.rowid";
if ($selected_cat === -2) // Without any category if ($selected_cat === -2) // Without any category
{ {
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product";
} }
elseif ($selected_cat) // Into a specific category elseif ($selected_cat) // Into a specific category
{ {
$sql.= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp"; $sql .= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp";
} }
$sql.= " WHERE l.fk_facture = f.rowid"; $sql .= " WHERE l.fk_facture = f.rowid";
$sql.= " AND f.fk_statut in (1,2)"; $sql .= " AND f.fk_statut in (1,2)";
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$sql.= " AND f.type IN (0,1,2,5)"; $sql .= " AND f.type IN (0,1,2,5)";
} else { } else {
$sql.= " AND f.type IN (0,1,2,3,5)"; $sql .= " AND f.type IN (0,1,2,3,5)";
} }
if ($date_start && $date_end) { if ($date_start && $date_end) {
$sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
} }
if ($selected_type >=0) if ($selected_type >= 0)
{ {
$sql.= " AND l.product_type = ".$selected_type; $sql .= " AND l.product_type = ".$selected_type;
} }
if ($selected_cat === -2) // Without any category if ($selected_cat === -2) // Without any category
{ {
$sql.=" AND cp.fk_product is null"; $sql .= " AND cp.fk_product is null";
} }
elseif ($selected_cat) { // Into a specific category elseif ($selected_cat) { // Into a specific category
$sql.= " AND (c.rowid = ".$selected_cat; $sql .= " AND (c.rowid = ".$selected_cat;
if ($subcat) $sql.=" OR c.fk_parent = " . $selected_cat; if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat;
$sql.= ")"; $sql .= ")";
$sql.= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid"; $sql .= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid";
} }
if($selected_soc > 0) $sql .= " AND soc.rowid=".$selected_soc; if ($selected_soc > 0) $sql .= " AND soc.rowid=".$selected_soc;
$sql.= " AND f.entity IN (".getEntity('invoice').")"; $sql .= " AND f.entity IN (".getEntity('invoice').")";
$sql.= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type"; $sql .= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type";
$sql.= $db->order($sortfield, $sortorder); $sql .= $db->order($sortfield, $sortorder);
dol_syslog("cabyprodserv", LOG_DEBUG); dol_syslog("cabyprodserv", LOG_DEBUG);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) { if ($result) {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i=0; $i = 0;
while ($i < $num) { while ($i < $num) {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$amount_ht[$obj->rowid] = $obj->amount; $amount_ht[$obj->rowid] = $obj->amount;
$amount[$obj->rowid] = $obj->amount_ttc; $amount[$obj->rowid] = $obj->amount_ttc;
$qty[$obj->rowid] = $obj->qty; $qty[$obj->rowid] = $obj->qty;
$name[$obj->rowid] = $obj->ref . '&nbsp;-&nbsp;' . $obj->label; $name[$obj->rowid] = $obj->ref.'&nbsp;-&nbsp;'.$obj->label;
$type[$obj->rowid] = $obj->product_type; $type[$obj->rowid] = $obj->product_type;
$catotal_ht+=$obj->amount; $catotal_ht += $obj->amount;
$catotal+=$obj->amount_ttc; $catotal += $obj->amount_ttc;
$qtytotal+=$obj->qty; $qtytotal += $obj->qty;
$i++; $i++;
} }
} else { } else {
@ -288,25 +288,25 @@ if ($modecompta == 'CREANCES-DETTES')
} }
// Show Array // Show Array
$i=0; $i = 0;
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
// Extra parameters management // Extra parameters management
foreach($headerparams as $key => $value) foreach ($headerparams as $key => $value)
{ {
print '<input type="hidden" name="'.$key.'" value="'.$value.'">'; print '<input type="hidden" name="'.$key.'" value="'.$value.'">';
} }
$moreforfilter=''; $moreforfilter = '';
print '<div class="div-table-responsive">'; print '<div class="div-table-responsive">';
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
// Category filter // Category filter
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'; print '<td>';
print $langs->trans("Category") . ': ' . $formother->select_categories(Categorie::TYPE_PRODUCT, $selected_cat, 'search_categ', true); print $langs->trans("Category").': '.$formother->select_categories(Categorie::TYPE_PRODUCT, $selected_cat, 'search_categ', true);
print ' '; print ' ';
print $langs->trans("SubCats") . '? '; print $langs->trans("SubCats").'? ';
print '<input type="checkbox" name="subcat" value="yes"'; print '<input type="checkbox" name="subcat" value="yes"';
if ($subcat) { if ($subcat) {
print ' checked'; print ' checked';
@ -314,12 +314,12 @@ if ($modecompta == 'CREANCES-DETTES')
print '>'; print '>';
// type filter (produit/service) // type filter (produit/service)
print ' '; print ' ';
print $langs->trans("Type"). ': '; print $langs->trans("Type").': ';
$form->select_type_of_lines(isset($selected_type)?$selected_type:-1, 'search_type', 1, 1, 1); $form->select_type_of_lines(isset($selected_type) ? $selected_type : -1, 'search_type', 1, 1, 1);
//select thirdparty //select thirdparty
print '</br>'; print '</br>';
print $langs->trans("ThirdParty") . ': ' . $form->select_thirdparty_list($selected_soc, 'search_soc', '', 1); print $langs->trans("ThirdParty").': '.$form->select_thirdparty_list($selected_soc, 'search_soc', '', 1);
print '</td>'; print '</td>';
print '<td colspan="5" class="right">'; print '<td colspan="5" class="right">';
@ -391,16 +391,16 @@ if ($modecompta == 'CREANCES-DETTES')
print "</tr>\n"; print "</tr>\n";
if (count($name)) { if (count($name)) {
foreach($name as $key=>$value) { foreach ($name as $key=>$value) {
print '<tr class="oddeven">'; print '<tr class="oddeven">';
// Product // Product
print "<td>"; print "<td>";
$fullname=$name[$key]; $fullname = $name[$key];
if ($key > 0) { if ($key > 0) {
$linkname='<a href="'.DOL_URL_ROOT.'/product/card.php?id='.$key.'">'.img_object($langs->trans("ShowProduct"), $type[$key]==0?'product':'service').' '.$fullname.'</a>'; $linkname = '<a href="'.DOL_URL_ROOT.'/product/card.php?id='.$key.'">'.img_object($langs->trans("ShowProduct"), $type[$key] == 0 ? 'product' : 'service').' '.$fullname.'</a>';
} else { } else {
$linkname=$langs->trans("PaymentsNotLinkedToProduct"); $linkname = $langs->trans("PaymentsNotLinkedToProduct");
} }
print $linkname; print $linkname;
print "</td>\n"; print "</td>\n";
@ -465,7 +465,7 @@ if ($modecompta == 'CREANCES-DETTES')
// "Calculation of part of each product for accountancy in this mode is not possible. When a partial payment (for example 5 euros) is done on an // "Calculation of part of each product for accountancy in this mode is not possible. When a partial payment (for example 5 euros) is done on an
// invoice with 2 product (product A for 10 euros and product B for 20 euros), what is part of paiment for product A and part of paiment for product B ? // invoice with 2 product (product A for 10 euros and product B for 20 euros), what is part of paiment for product A and part of paiment for product B ?
// Because there is no way to know this, this report is not relevant. // Because there is no way to know this, this report is not relevant.
print '<br>'.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant") . '<br>'; print '<br>'.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant").'<br>';
} }
// End of page // End of page

View File

@ -1704,7 +1704,7 @@ else
if (is_array($extralabelslines) && count($extralabelslines) > 0) { if (is_array($extralabelslines) && count($extralabelslines) > 0) {
$line = new ContratLigne($db); $line = new ContratLigne($db);
$line->fetch_optionals($objp->rowid); $line->fetch_optionals($objp->rowid);
print $line->showOptionals($extrafields, 'view', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $line->showOptionals($extrafields, 'view', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', 1);
} }
} }
// Line in mode update // Line in mode update
@ -1794,7 +1794,7 @@ else
if (is_array($extralabelslines) && count($extralabelslines) > 0) { if (is_array($extralabelslines) && count($extralabelslines) > 0) {
$line = new ContratLigne($db); $line = new ContratLigne($db);
$line->fetch_optionals($objp->rowid); $line->fetch_optionals($objp->rowid);
print $line->showOptionals($extrafields, 'edit', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $line->showOptionals($extrafields, 'edit', array('style'=>'class="oddeven"', 'colspan'=>$colspan), '', '', 1);
} }
} }

View File

@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
*/ */
class box_clients extends ModeleBoxes class box_clients extends ModeleBoxes
{ {
public $boxcode="lastcustomers"; public $boxcode = "lastcustomers";
public $boximg="object_company"; public $boximg = "object_company";
public $boxlabel="BoxLastCustomers"; public $boxlabel = "BoxLastCustomers";
public $depends = array("societe"); public $depends = array("societe");
/** /**
@ -61,9 +61,9 @@ class box_clients extends ModeleBoxes
$this->db = $db; $this->db = $db;
// disable box for such cases // disable box for such cases
if (! empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $this->enabled=0; // disabled by this option if (!empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $this->enabled = 0; // disabled by this option
$this->hidden = ! ($user->rights->societe->lire && empty($user->socid)); $this->hidden = !($user->rights->societe->lire && empty($user->socid));
} }
/** /**
@ -77,33 +77,33 @@ class box_clients extends ModeleBoxes
global $user, $langs, $conf; global $user, $langs, $conf;
$langs->load("boxes"); $langs->load("boxes");
$this->max=$max; $this->max = $max;
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$thirdpartystatic=new Societe($this->db); $thirdpartystatic = new Societe($this->db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedCustomers", $max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedCustomers", $max));
if ($user->rights->societe->lire) if ($user->rights->societe->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid"; $sql = "SELECT s.nom as name, s.rowid as socid";
$sql.= ", s.code_client"; $sql .= ", s.code_client";
$sql.= ", s.client"; $sql .= ", s.client";
$sql.= ", s.code_fournisseur"; $sql .= ", s.code_fournisseur";
$sql.= ", s.fournisseur"; $sql .= ", s.fournisseur";
$sql.= ", s.code_compta"; $sql .= ", s.code_compta";
$sql.= ", s.code_compta_fournisseur"; $sql .= ", s.code_compta_fournisseur";
$sql.= ", s.logo"; $sql .= ", s.logo";
$sql.= ", s.email"; $sql .= ", s.email";
$sql.= ", s.datec, s.tms, s.status, s.entity"; $sql .= ", s.datec, s.tms, s.status, s.entity";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE s.client IN (1, 3)"; $sql .= " WHERE s.client IN (1, 3)";
$sql.= " AND s.entity IN (".getEntity('societe').")"; $sql .= " AND s.entity IN (".getEntity('societe').")";
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
if ($user->socid) $sql.= " AND s.rowid = $user->socid"; if ($user->socid) $sql .= " AND s.rowid = $user->socid";
$sql.= " ORDER BY s.tms DESC"; $sql .= " ORDER BY s.tms DESC";
$sql.= $this->db->plimit($max, 0); $sql .= $this->db->plimit($max, 0);
dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); dol_syslog(get_class($this)."::loadBox", LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
@ -115,8 +115,8 @@ class box_clients extends ModeleBoxes
while ($line < $num) while ($line < $num)
{ {
$objp = $this->db->fetch_object($result); $objp = $this->db->fetch_object($result);
$datec=$this->db->jdate($objp->datec); $datec = $this->db->jdate($objp->datec);
$datem=$this->db->jdate($objp->tms); $datem = $this->db->jdate($objp->tms);
$thirdpartystatic->id = $objp->socid; $thirdpartystatic->id = $objp->socid;
$thirdpartystatic->name = $objp->name; $thirdpartystatic->name = $objp->name;
$thirdpartystatic->code_client = $objp->code_client; $thirdpartystatic->code_client = $objp->code_client;
@ -148,7 +148,7 @@ class box_clients extends ModeleBoxes
$line++; $line++;
} }
if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'class="center"','text'=>$langs->trans("NoRecordedCustomers")); if ($num == 0) $this->info_box_contents[$line][0] = array('td' => 'class="center"', 'text'=>$langs->trans("NoRecordedCustomers"));
$this->db->free($result); $this->db->free($result);
} }

View File

@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
*/ */
class box_fournisseurs extends ModeleBoxes class box_fournisseurs extends ModeleBoxes
{ {
public $boxcode="lastsuppliers"; public $boxcode = "lastsuppliers";
public $boximg="object_company"; public $boximg = "object_company";
public $boxlabel="BoxLastSuppliers"; public $boxlabel = "BoxLastSuppliers";
public $depends = array("fournisseur"); public $depends = array("fournisseur");
/** /**
@ -60,7 +60,7 @@ class box_fournisseurs extends ModeleBoxes
$this->db = $db; $this->db = $db;
$this->hidden = ! ($user->rights->societe->lire && empty($user->socid)); $this->hidden = !($user->rights->societe->lire && empty($user->socid));
} }
/** /**
@ -74,28 +74,28 @@ class box_fournisseurs extends ModeleBoxes
global $conf, $user, $langs; global $conf, $user, $langs;
$langs->load("boxes"); $langs->load("boxes");
$this->max=$max; $this->max = $max;
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$thirdpartystatic=new Societe($this->db); $thirdpartystatic = new Societe($this->db);
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
$thirdpartytmp=new Fournisseur($this->db); $thirdpartytmp = new Fournisseur($this->db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedSuppliers", $max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedSuppliers", $max));
if ($user->rights->societe->lire) if ($user->rights->societe->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid, s.datec, s.tms, s.status,"; $sql = "SELECT s.nom as name, s.rowid as socid, s.datec, s.tms, s.status,";
$sql.= " s.code_fournisseur, s.email as semail,"; $sql .= " s.code_fournisseur, s.email as semail,";
$sql.= " s.logo, s.code_compta_fournisseur, s.entity"; $sql .= " s.logo, s.code_compta_fournisseur, s.entity";
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE s.fournisseur = 1"; $sql .= " WHERE s.fournisseur = 1";
$sql.= " AND s.entity IN (".getEntity('societe').")"; $sql .= " AND s.entity IN (".getEntity('societe').")";
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
if ($user->socid) $sql.= " AND s.rowid = ".$user->socid; if ($user->socid) $sql .= " AND s.rowid = ".$user->socid;
$sql.= " ORDER BY s.tms DESC "; $sql .= " ORDER BY s.tms DESC ";
$sql.= $this->db->plimit($max, 0); $sql .= $this->db->plimit($max, 0);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
@ -106,8 +106,8 @@ class box_fournisseurs extends ModeleBoxes
while ($line < $num) while ($line < $num)
{ {
$objp = $this->db->fetch_object($result); $objp = $this->db->fetch_object($result);
$datec=$this->db->jdate($objp->datec); $datec = $this->db->jdate($objp->datec);
$datem=$this->db->jdate($objp->tms); $datem = $this->db->jdate($objp->tms);
$thirdpartytmp->id = $objp->socid; $thirdpartytmp->id = $objp->socid;
$thirdpartytmp->name = $objp->name; $thirdpartytmp->name = $objp->name;
$thirdpartytmp->email = $objp->semail; $thirdpartytmp->email = $objp->semail;
@ -135,7 +135,7 @@ class box_fournisseurs extends ModeleBoxes
$line++; $line++;
} }
if ($num==0) $this->info_box_contents[$line][0] = array( if ($num == 0) $this->info_box_contents[$line][0] = array(
'td' => 'class="center"', 'td' => 'class="center"',
'text'=>$langs->trans("NoRecordedSuppliers"), 'text'=>$langs->trans("NoRecordedSuppliers"),
); );

View File

@ -33,10 +33,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
*/ */
class box_propales extends ModeleBoxes class box_propales extends ModeleBoxes
{ {
public $boxcode="lastpropals"; public $boxcode = "lastpropals";
public $boximg="object_propal"; public $boximg = "object_propal";
public $boxlabel="BoxLastProposals"; public $boxlabel = "BoxLastProposals";
public $depends = array("propal"); // conf->propal->enabled public $depends = array("propal"); // conf->propal->enabled
/** /**
* @var DoliDB Database handler. * @var DoliDB Database handler.
@ -61,7 +61,7 @@ class box_propales extends ModeleBoxes
$this->db = $db; $this->db = $db;
$this->hidden = ! ($user->rights->propale->lire); $this->hidden = !($user->rights->propale->lire);
} }
/** /**
@ -74,45 +74,45 @@ class box_propales extends ModeleBoxes
{ {
global $user, $langs, $conf; global $user, $langs, $conf;
$this->max=$max; $this->max = $max;
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$propalstatic=new Propal($this->db); $propalstatic = new Propal($this->db);
$societestatic = new Societe($this->db); $societestatic = new Societe($this->db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."Propals", $max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE ? "" : "Modified")."Propals", $max));
if ($user->rights->propale->lire) if ($user->rights->propale->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid, s.code_client, s.logo, s.entity, s.email,"; $sql = "SELECT s.nom as name, s.rowid as socid, s.code_client, s.logo, s.entity, s.email,";
$sql.= " p.rowid, p.ref, p.fk_statut, p.datep as dp, p.datec, p.fin_validite, p.date_cloture, p.total_ht, p.tva as total_tva, p.total as total_ttc, p.tms"; $sql .= " p.rowid, p.ref, p.fk_statut, p.datep as dp, p.datec, p.fin_validite, p.date_cloture, p.total_ht, p.tva as total_tva, p.total as total_ttc, p.tms";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
$sql.= ", ".MAIN_DB_PREFIX."propal as p"; $sql .= ", ".MAIN_DB_PREFIX."propal as p";
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE p.fk_soc = s.rowid"; $sql .= " WHERE p.fk_soc = s.rowid";
$sql.= " AND p.entity = ".$conf->entity; $sql .= " AND p.entity = ".$conf->entity;
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (!$user->rights->societe->client->voir && !$user->socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
if($user->socid) $sql.= " AND s.rowid = ".$user->socid; if ($user->socid) $sql .= " AND s.rowid = ".$user->socid;
if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql.= " ORDER BY p.datep DESC, p.ref DESC "; if ($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE) $sql .= " ORDER BY p.datep DESC, p.ref DESC ";
else $sql.= " ORDER BY p.tms DESC, p.ref DESC "; else $sql .= " ORDER BY p.tms DESC, p.ref DESC ";
$sql.= $this->db->plimit($max, 0); $sql .= $this->db->plimit($max, 0);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
{ {
$num = $this->db->num_rows($result); $num = $this->db->num_rows($result);
$now=dol_now(); $now = dol_now();
$line = 0; $line = 0;
while ($line < $num) { while ($line < $num) {
$objp = $this->db->fetch_object($result); $objp = $this->db->fetch_object($result);
$date=$this->db->jdate($objp->dp); $date = $this->db->jdate($objp->dp);
$datec=$this->db->jdate($objp->datec); $datec = $this->db->jdate($objp->datec);
$datem=$this->db->jdate($objp->tms); $datem = $this->db->jdate($objp->tms);
$dateterm=$this->db->jdate($objp->fin_validite); $dateterm = $this->db->jdate($objp->fin_validite);
$dateclose=$this->db->jdate($objp->date_cloture); $dateclose = $this->db->jdate($objp->date_cloture);
$propalstatic->id = $objp->rowid; $propalstatic->id = $objp->rowid;
$propalstatic->ref = $objp->ref; $propalstatic->ref = $objp->ref;
$propalstatic->total_ht = $objp->total_ht; $propalstatic->total_ht = $objp->total_ht;
@ -161,7 +161,7 @@ class box_propales extends ModeleBoxes
$line++; $line++;
} }
if ($num==0) if ($num == 0)
$this->info_box_contents[$line][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'class="center"', 'td' => 'class="center"',
'text'=>$langs->trans("NoRecordedProposals"), 'text'=>$langs->trans("NoRecordedProposals"),

View File

@ -571,7 +571,7 @@ abstract class CommonObject
$return = '<div class="box-flex-item">'; $return = '<div class="box-flex-item">';
$return .= '<div class="info-box info-box-sm">'; $return .= '<div class="info-box info-box-sm">';
$return .= '<span class="info-box-icon bg-infoxbox-action">'; $return .= '<span class="info-box-icon bg-infoxbox-action">';
$return .= '<i class="fa fa-dol-action"></i>'; // Can be image $return .= '<i class="fa fa-dol-action"></i>'; // Can be image
$return .= '</span>'; $return .= '</span>';
$return .= '<div class="info-box-content">'; $return .= '<div class="info-box-content">';
$return .= '<span class="info-box-title">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>'; $return .= '<span class="info-box-title">'.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).'</span>';
@ -1797,14 +1797,14 @@ abstract class CommonObject
// this->ismultientitymanaged contains // this->ismultientitymanaged contains
// 0=No test on entity, 1=Test with field entity, 'field@table'=Test with link by field@table // 0=No test on entity, 1=Test with field entity, 'field@table'=Test with link by field@table
$aliastablesociete = 's'; $aliastablesociete = 's';
if ($this->element == 'societe') $aliastablesociete = 'te'; // te as table_element if ($this->element == 'societe') $aliastablesociete = 'te'; // te as table_element
$sql = "SELECT MAX(te.".$fieldid.")"; $sql = "SELECT MAX(te.".$fieldid.")";
$sql .= " FROM ".(empty($nodbprefix) ?MAIN_DB_PREFIX:'').$this->table_element." as te"; $sql .= " FROM ".(empty($nodbprefix) ?MAIN_DB_PREFIX:'').$this->table_element." as te";
if ($this->element == 'user' && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) { if ($this->element == 'user' && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
$sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug"; $sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug";
} }
if (isset($this->ismultientitymanaged) && ! is_numeric($this->ismultientitymanaged)) { if (isset($this->ismultientitymanaged) && !is_numeric($this->ismultientitymanaged)) {
$tmparray = explode('@', $this->ismultientitymanaged); $tmparray = explode('@', $this->ismultientitymanaged);
$sql .= ", ".MAIN_DB_PREFIX.$tmparray[1]." as ".($tmparray[1] == 'societe' ? 's' : 'parenttable'); // If we need to link to this table to limit select to entity $sql .= ", ".MAIN_DB_PREFIX.$tmparray[1]." as ".($tmparray[1] == 'societe' ? 's' : 'parenttable'); // If we need to link to this table to limit select to entity
} }
@ -1819,7 +1819,7 @@ abstract class CommonObject
if (!preg_match('/^\s*AND/i', $filter)) $sql .= " AND "; // For backward compatibility if (!preg_match('/^\s*AND/i', $filter)) $sql .= " AND "; // For backward compatibility
$sql .= $filter; $sql .= $filter;
} }
if (isset($this->ismultientitymanaged) && ! is_numeric($this->ismultientitymanaged)) { if (isset($this->ismultientitymanaged) && !is_numeric($this->ismultientitymanaged)) {
$tmparray = explode('@', $this->ismultientitymanaged); $tmparray = explode('@', $this->ismultientitymanaged);
$sql .= ' AND te.'.$tmparray[0].' = '.($tmparray[1] == 'societe' ? 's' : 'parenttable').'.rowid'; // If we need to link to this table to limit select to entity $sql .= ' AND te.'.$tmparray[0].' = '.($tmparray[1] == 'societe' ? 's' : 'parenttable').'.rowid'; // If we need to link to this table to limit select to entity
} }
@ -1836,7 +1836,7 @@ abstract class CommonObject
$sql .= ' AND te.entity IN ('.getEntity($this->element).')'; $sql .= ' AND te.entity IN ('.getEntity($this->element).')';
} }
} }
if (isset($this->ismultientitymanaged) && ! is_numeric($this->ismultientitymanaged) && $this->element != 'societe') { if (isset($this->ismultientitymanaged) && !is_numeric($this->ismultientitymanaged) && $this->element != 'societe') {
$tmparray = explode('@', $this->ismultientitymanaged); $tmparray = explode('@', $this->ismultientitymanaged);
$sql .= ' AND parenttable.entity IN ('.getEntity($tmparray[1]).')'; $sql .= ' AND parenttable.entity IN ('.getEntity($tmparray[1]).')';
} }
@ -5625,7 +5625,7 @@ abstract class CommonObject
$form = new Form($this->db); $form = new Form($this->db);
} }
if (! empty($this->fields)) { if (!empty($this->fields)) {
$val = $this->fields[$key]; $val = $this->fields[$key];
} }

View File

@ -293,30 +293,30 @@ class Conf
$rootfortemp = empty($this->global->MAIN_TEMP_DIR) ? $rootfordata : $this->global->MAIN_TEMP_DIR; $rootfortemp = empty($this->global->MAIN_TEMP_DIR) ? $rootfordata : $this->global->MAIN_TEMP_DIR;
// Define default dir_output and dir_temp for directories of modules // Define default dir_output and dir_temp for directories of modules
foreach($this->modules as $module) foreach ($this->modules as $module)
{ {
//var_dump($module); //var_dump($module);
// For multicompany sharings // For multicompany sharings
$this->$module->multidir_output = array($this->entity => $rootfordata."/".$module); $this->$module->multidir_output = array($this->entity => $rootfordata."/".$module);
$this->$module->multidir_temp = array($this->entity => $rootfortemp."/".$module."/temp"); $this->$module->multidir_temp = array($this->entity => $rootfortemp."/".$module."/temp");
// For backward compatibility // For backward compatibility
$this->$module->dir_output = $rootfordata."/".$module; $this->$module->dir_output = $rootfordata."/".$module;
$this->$module->dir_temp = $rootfortemp."/".$module."/temp"; $this->$module->dir_temp = $rootfortemp."/".$module."/temp";
} }
// External modules storage // External modules storage
if (! empty($this->modules_parts['dir'])) if (!empty($this->modules_parts['dir']))
{ {
foreach($this->modules_parts['dir'] as $module => $dirs) foreach ($this->modules_parts['dir'] as $module => $dirs)
{ {
if (! empty($this->$module->enabled)) if (!empty($this->$module->enabled))
{ {
foreach($dirs as $type => $name) // $type is 'output' or 'temp' foreach ($dirs as $type => $name) // $type is 'output' or 'temp'
{ {
$multidirname = 'multidir_'.$type; $multidirname = 'multidir_'.$type;
$dirname = 'dir_'.$type; $dirname = 'dir_'.$type;
if($type != 'temp') if ($type != 'temp')
{ {
// For multicompany sharings // For multicompany sharings
$this->$module->$multidirname = array($this->entity => $rootfordata."/".$name); $this->$module->$multidirname = array($this->entity => $rootfordata."/".$name);
@ -338,90 +338,90 @@ class Conf
} }
// For mycompany storage // For mycompany storage
$this->mycompany->dir_output = $rootfordata."/mycompany"; $this->mycompany->dir_output = $rootfordata."/mycompany";
$this->mycompany->dir_temp = $rootfortemp."/mycompany/temp"; $this->mycompany->dir_temp = $rootfortemp."/mycompany/temp";
// For admin storage // For admin storage
$this->admin->dir_output = $rootfordata.'/admin'; $this->admin->dir_output = $rootfordata.'/admin';
$this->admin->dir_temp = $rootfortemp.'/admin/temp'; $this->admin->dir_temp = $rootfortemp.'/admin/temp';
// For user storage // For user storage
$this->user->multidir_output = array($this->entity => $rootfordata."/users"); $this->user->multidir_output = array($this->entity => $rootfordata."/users");
$this->user->multidir_temp = array($this->entity => $rootfortemp."/users/temp"); $this->user->multidir_temp = array($this->entity => $rootfortemp."/users/temp");
// For backward compatibility // For backward compatibility
$this->user->dir_output = $rootforuser."/users"; $this->user->dir_output = $rootforuser."/users";
$this->user->dir_temp = $rootfortemp."/users/temp"; $this->user->dir_temp = $rootfortemp."/users/temp";
// For usergroup storage // For usergroup storage
$this->usergroup->dir_output = $rootforuser."/usergroups"; $this->usergroup->dir_output = $rootforuser."/usergroups";
$this->usergroup->dir_temp = $rootfortemp."/usergroups/temp"; $this->usergroup->dir_temp = $rootfortemp."/usergroups/temp";
// For proposal storage // For proposal storage
$this->propal->multidir_output = array($this->entity => $rootfordata."/propale"); $this->propal->multidir_output = array($this->entity => $rootfordata."/propale");
$this->propal->multidir_temp = array($this->entity => $rootfortemp."/propale/temp"); $this->propal->multidir_temp = array($this->entity => $rootfortemp."/propale/temp");
// For backward compatibility // For backward compatibility
$this->propal->dir_output = $rootfordata."/propale"; $this->propal->dir_output = $rootfordata."/propale";
$this->propal->dir_temp = $rootfortemp."/propale/temp"; $this->propal->dir_temp = $rootfortemp."/propale/temp";
// For medias storage // For medias storage
$this->medias->multidir_output = array($this->entity => $rootfordata."/medias"); $this->medias->multidir_output = array($this->entity => $rootfordata."/medias");
$this->medias->multidir_temp = array($this->entity => $rootfortemp."/medias/temp"); $this->medias->multidir_temp = array($this->entity => $rootfortemp."/medias/temp");
// Exception: Some dir are not the name of module. So we keep exception here for backward compatibility. // Exception: Some dir are not the name of module. So we keep exception here for backward compatibility.
// Sous module bons d'expedition // Sous module bons d'expedition
$this->expedition_bon->enabled=(! empty($this->global->MAIN_SUBMODULE_EXPEDITION)?$this->global->MAIN_SUBMODULE_EXPEDITION:0); $this->expedition_bon->enabled = (!empty($this->global->MAIN_SUBMODULE_EXPEDITION) ? $this->global->MAIN_SUBMODULE_EXPEDITION : 0);
// Sous module bons de livraison // Sous module bons de livraison
$this->livraison_bon->enabled=(! empty($this->global->MAIN_SUBMODULE_LIVRAISON)?$this->global->MAIN_SUBMODULE_LIVRAISON:0); $this->livraison_bon->enabled = (!empty($this->global->MAIN_SUBMODULE_LIVRAISON) ? $this->global->MAIN_SUBMODULE_LIVRAISON : 0);
// Module fournisseur // Module fournisseur
if (! empty($this->fournisseur)) if (!empty($this->fournisseur))
{ {
$this->fournisseur->commande=new stdClass(); $this->fournisseur->commande = new stdClass();
$this->fournisseur->commande->multidir_output = array($this->entity => $rootfordata."/fournisseur/commande"); $this->fournisseur->commande->multidir_output = array($this->entity => $rootfordata."/fournisseur/commande");
$this->fournisseur->commande->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/commande/temp"); $this->fournisseur->commande->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/commande/temp");
$this->fournisseur->commande->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility $this->fournisseur->commande->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility
$this->fournisseur->commande->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility $this->fournisseur->commande->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility
$this->fournisseur->facture=new stdClass(); $this->fournisseur->facture = new stdClass();
$this->fournisseur->facture->multidir_output = array($this->entity => $rootfordata."/fournisseur/facture"); $this->fournisseur->facture->multidir_output = array($this->entity => $rootfordata."/fournisseur/facture");
$this->fournisseur->facture->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/facture/temp"); $this->fournisseur->facture->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/facture/temp");
$this->fournisseur->facture->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility $this->fournisseur->facture->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility
$this->fournisseur->facture->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility $this->fournisseur->facture->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility
$this->supplierproposal=new stdClass(); $this->supplierproposal = new stdClass();
$this->supplierproposal->multidir_output = array($this->entity => $rootfordata."/supplier_proposal"); $this->supplierproposal->multidir_output = array($this->entity => $rootfordata."/supplier_proposal");
$this->supplierproposal->multidir_temp = array($this->entity => $rootfortemp."/supplier_proposal/temp"); $this->supplierproposal->multidir_temp = array($this->entity => $rootfortemp."/supplier_proposal/temp");
$this->supplierproposal->dir_output = $rootfordata."/supplier_proposal"; // For backward compatibility $this->supplierproposal->dir_output = $rootfordata."/supplier_proposal"; // For backward compatibility
$this->supplierproposal->dir_temp = $rootfortemp."/supplier_proposal/temp"; // For backward compatibility $this->supplierproposal->dir_temp = $rootfortemp."/supplier_proposal/temp"; // For backward compatibility
$this->fournisseur->payment=new stdClass(); $this->fournisseur->payment = new stdClass();
$this->fournisseur->payment->multidir_output = array($this->entity => $rootfordata."/fournisseur/payment"); $this->fournisseur->payment->multidir_output = array($this->entity => $rootfordata."/fournisseur/payment");
$this->fournisseur->payment->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/payment/temp"); $this->fournisseur->payment->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/payment/temp");
$this->fournisseur->payment->dir_output = $rootfordata."/fournisseur/payment"; // For backward compatibility $this->fournisseur->payment->dir_output = $rootfordata."/fournisseur/payment"; // For backward compatibility
$this->fournisseur->payment->dir_temp = $rootfortemp."/fournisseur/payment/temp"; // For backward compatibility $this->fournisseur->payment->dir_temp = $rootfortemp."/fournisseur/payment/temp"; // For backward compatibility
// To prepare split of module fournisseur into fournisseur + supplier_order + supplier_invoice // To prepare split of module fournisseur into fournisseur + supplier_order + supplier_invoice
if (! empty($this->fournisseur->enabled) && empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // By default, if module supplier is on, we set new properties if (!empty($this->fournisseur->enabled) && empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // By default, if module supplier is on, we set new properties
{ {
if (empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists if (empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists
{ {
$this->supplier_order=new stdClass(); $this->supplier_order = new stdClass();
$this->supplier_order->enabled = 1; $this->supplier_order->enabled = 1;
$this->supplier_order->multidir_output = array($this->entity => $rootfordata."/fournisseur/commande"); $this->supplier_order->multidir_output = array($this->entity => $rootfordata."/fournisseur/commande");
$this->supplier_order->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/commande/temp"); $this->supplier_order->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/commande/temp");
$this->supplier_order->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility $this->supplier_order->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility
$this->supplier_order->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility $this->supplier_order->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility
} }
if (empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists if (empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // This can be set to 1 once modules purchase order and supplier invoice exists
{ {
$this->supplier_invoice=new stdClass(); $this->supplier_invoice = new stdClass();
$this->supplier_invoice->enabled = 1; $this->supplier_invoice->enabled = 1;
$this->supplier_invoice->multidir_output = array($this->entity => $rootfordata."/fournisseur/facture"); $this->supplier_invoice->multidir_output = array($this->entity => $rootfordata."/fournisseur/facture");
$this->supplier_invoice->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/facture/temp"); $this->supplier_invoice->multidir_temp = array($this->entity => $rootfortemp."/fournisseur/facture/temp");
$this->supplier_invoice->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility $this->supplier_invoice->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility
$this->supplier_invoice->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility $this->supplier_invoice->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility
} }
} }
} }
@ -438,22 +438,22 @@ class Conf
$this->service->dir_temp = $rootfortemp."/produit/temp"; $this->service->dir_temp = $rootfortemp."/produit/temp";
// Module productbatch // Module productbatch
$this->productbatch->multidir_output = array($this->entity => $rootfordata."/produitlot"); $this->productbatch->multidir_output = array($this->entity => $rootfordata."/produitlot");
$this->productbatch->multidir_temp = array($this->entity => $rootfortemp."/produitlot/temp"); $this->productbatch->multidir_temp = array($this->entity => $rootfortemp."/produitlot/temp");
// Module contrat // Module contrat
$this->contrat->multidir_output = array($this->entity => $rootfordata."/contract"); $this->contrat->multidir_output = array($this->entity => $rootfordata."/contract");
$this->contrat->multidir_temp = array($this->entity => $rootfortemp."/contract/temp"); $this->contrat->multidir_temp = array($this->entity => $rootfortemp."/contract/temp");
// For backward compatibility // For backward compatibility
$this->contrat->dir_output = $rootfordata."/contract"; $this->contrat->dir_output = $rootfordata."/contract";
$this->contrat->dir_temp = $rootfortemp."/contract/temp"; $this->contrat->dir_temp = $rootfortemp."/contract/temp";
// Module bank // Module bank
$this->bank->multidir_output = array($this->entity => $rootfordata."/bank"); $this->bank->multidir_output = array($this->entity => $rootfordata."/bank");
$this->bank->multidir_temp = array($this->entity => $rootfortemp."/bank/temp"); $this->bank->multidir_temp = array($this->entity => $rootfortemp."/bank/temp");
// For backward compatibility // For backward compatibility
$this->bank->dir_output = $rootfordata."/bank"; $this->bank->dir_output = $rootfordata."/bank";
$this->bank->dir_temp = $rootfortemp."/bank/temp"; $this->bank->dir_temp = $rootfortemp."/bank/temp";
// Set some default values // 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_LIST_FILTER_ON_DAY=1; // On filter that show date, we must show input field for day before or after month
@ -527,7 +527,7 @@ class Conf
if (empty($this->global->MAIN_THEME)) $this->global->MAIN_THEME = "eldy"; if (empty($this->global->MAIN_THEME)) $this->global->MAIN_THEME = "eldy";
if (!empty($this->global->MAIN_FORCETHEME)) $this->global->MAIN_THEME = $this->global->MAIN_FORCETHEME; if (!empty($this->global->MAIN_FORCETHEME)) $this->global->MAIN_THEME = $this->global->MAIN_FORCETHEME;
$this->theme = $this->global->MAIN_THEME; $this->theme = $this->global->MAIN_THEME;
$this->css = "/theme/".$this->theme."/style.css.php"; $this->css = "/theme/".$this->theme."/style.css.php";
// conf->email_from = email pour envoi par dolibarr des mails automatiques // conf->email_from = email pour envoi par dolibarr des mails automatiques
$this->email_from = "robot@example.com"; $this->email_from = "robot@example.com";
@ -681,15 +681,11 @@ class Conf
$this->global->AGENDA_DEFAULT_FILTER_TYPE = '0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on. $this->global->AGENDA_DEFAULT_FILTER_TYPE = '0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on.
} }
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 (!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_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'; if (empty($this->global->MAIN_MODULE_DOLISTORE_API_KEY)) $this->global->MAIN_MODULE_DOLISTORE_API_KEY = 'dolistorecatalogpublickey1234567';
if (! isset($this->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN)) $this->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN = 1;
// If we are in develop mode, we activate the option MAIN_SECURITY_CSRF_WITH_TOKEN to 1 if not already defined. // If we are in develop mode, we activate the option MAIN_SECURITY_CSRF_WITH_TOKEN to 1 if not already defined.
if (!isset($this->global->MAIN_SECURITY_CSRF_WITH_TOKEN) && $this->global->MAIN_FEATURES_LEVEL >= 2) $this->global->MAIN_SECURITY_CSRF_WITH_TOKEN = 1; if (!isset($this->global->MAIN_SECURITY_CSRF_WITH_TOKEN) && $this->global->MAIN_FEATURES_LEVEL >= 2) $this->global->MAIN_SECURITY_CSRF_WITH_TOKEN = 1;

View File

@ -90,7 +90,7 @@ class DolEditor
{ {
$content = dol_htmlentitiesbr($content); // If content is not HTML, we convert to HTML. $content = dol_htmlentitiesbr($content); // If content is not HTML, we convert to HTML.
} }
if ($this->tool == 'fckeditor') /*if ($this->tool == 'fckeditor')
{ {
require_once DOL_DOCUMENT_ROOT.'/includes/fckeditor/fckeditor.php'; require_once DOL_DOCUMENT_ROOT.'/includes/fckeditor/fckeditor.php';
@ -121,7 +121,7 @@ class DolEditor
$this->editor->Config['CustomConfigurationsPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/fckconfig.js'; $this->editor->Config['CustomConfigurationsPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/fckconfig.js';
$this->editor->Config['SkinPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/'; $this->editor->Config['SkinPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/';
} }
} }*/
// Define some properties // Define some properties
if (in_array($this->tool, array('textarea', 'ckeditor', 'ace'))) if (in_array($this->tool, array('textarea', 'ckeditor', 'ace')))

View File

@ -59,16 +59,17 @@ class FormAdmin
* @param int $forcecombo Force to use combo box (so no ajax beautify effect) * @param int $forcecombo Force to use combo box (so no ajax beautify effect)
* @param int $multiselect Make the combo a multiselect * @param int $multiselect Make the combo a multiselect
* @param array $onlykeys Show only the following keys (opposite of $filter) * @param array $onlykeys Show only the following keys (opposite of $filter)
* @param int $mainlangonly 1=Show only main languages ('fr_FR' no' fr_BE', 'es_ES' not 'es_MX', ...)
* @return string Return HTML select string with list of languages * @return string Return HTML select string with list of languages
*/ */
public function select_language($selected = '', $htmlname = 'lang_id', $showauto = 0, $filter = null, $showempty = '', $showwarning = 0, $disabled = 0, $morecss = '', $showcode = 0, $forcecombo = 0, $multiselect = 0, $onlykeys = array()) public function select_language($selected = '', $htmlname = 'lang_id', $showauto = 0, $filter = null, $showempty = '', $showwarning = 0, $disabled = 0, $morecss = '', $showcode = 0, $forcecombo = 0, $multiselect = 0, $onlykeys = array(), $mainlangonly = 0)
{ {
// phpcs:enable // phpcs:enable
global $conf, $langs; global $conf, $langs;
if (!empty($conf->global->MAIN_DEFAULT_LANGUAGE_FILTER)) $filter[$conf->global->MAIN_DEFAULT_LANGUAGE_FILTER] = 1; if (!empty($conf->global->MAIN_DEFAULT_LANGUAGE_FILTER)) $filter[$conf->global->MAIN_DEFAULT_LANGUAGE_FILTER] = 1;
$langs_available=$langs->get_available_languages(DOL_DOCUMENT_ROOT, 12); $langs_available=$langs->get_available_languages(DOL_DOCUMENT_ROOT, 12, 0, $mainlangonly);
$out=''; $out='';
@ -95,21 +96,28 @@ class FormAdmin
{ {
$valuetoshow=$value; $valuetoshow=$value;
if ($showcode == 1) $valuetoshow=$key.' - '.$value; if ($showcode == 1) $valuetoshow=$key.' - '.$value;
if ($showcode == 2) $valuetoshow=$value.' ('.$key.')'; if ($showcode == 2) {
if ($mainlangonly) $valuetoshow=$value.' ('.preg_replace('/[_-].*$/', '', $key).')';
else $valuetoshow=$value.' ('.$key.')';
}
if ($filter && is_array($filter) && array_key_exists($key, $filter)) { $keytouse = $key;
if ($mainlangonly) $keytouse = preg_replace('/[_-].*$/', '', $key);
if ($filter && is_array($filter) && array_key_exists($keytouse, $filter)) {
continue; continue;
} }
if ($onlykeys && is_array($onlykeys) && ! array_key_exists($key, $onlykeys)) { if ($onlykeys && is_array($onlykeys) && ! array_key_exists($keytouse, $onlykeys)) {
continue; continue;
} }
if ($selected == $key)
if ($selected == $keytouse)
{ {
$out.= '<option value="'.$key.'" selected>'.$valuetoshow.'</option>'; $out.= '<option value="'.$keytouse.'" selected>'.$valuetoshow.'</option>';
} }
else else
{ {
$out.= '<option value="'.$key.'">'.$valuetoshow.'</option>'; $out.= '<option value="'.$keytouse.'">'.$valuetoshow.'</option>';
} }
} }
$out.= '</select>'; $out.= '</select>';
@ -137,49 +145,49 @@ class FormAdmin
public function select_menu($selected, $htmlname, $dirmenuarray, $moreattrib = '') public function select_menu($selected, $htmlname, $dirmenuarray, $moreattrib = '')
{ {
// phpcs:enable // phpcs:enable
global $langs,$conf; global $langs, $conf;
// Clean parameters // Clean parameters
// Check parameters // Check parameters
if (! is_array($dirmenuarray)) return -1; if (!is_array($dirmenuarray)) return -1;
$menuarray=array(); $menuarray = array();
foreach ($conf->file->dol_document_root as $dirroot) foreach ($conf->file->dol_document_root as $dirroot)
{ {
foreach($dirmenuarray as $dirtoscan) foreach ($dirmenuarray as $dirtoscan)
{ {
$dir=$dirroot.$dirtoscan; $dir = $dirroot.$dirtoscan;
//print $dir.'<br>'; //print $dir.'<br>';
if (is_dir($dir)) if (is_dir($dir))
{ {
$handle=opendir($dir); $handle = opendir($dir);
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) while (($file = readdir($handle)) !== false)
{ {
if (is_file($dir."/".$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && substr($file, 0, 5) != 'index') if (is_file($dir."/".$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && substr($file, 0, 5) != 'index')
{ {
if (preg_match('/lib\.php$/i', $file)) continue; // We exclude library files if (preg_match('/lib\.php$/i', $file)) continue; // We exclude library files
if (preg_match('/eldy_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files if (preg_match('/eldy_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files
if (preg_match('/auguria_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files if (preg_match('/auguria_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files
if (preg_match('/smartphone_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files if (preg_match('/smartphone_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files
$filelib=preg_replace('/\.php$/i', '', $file); $filelib = preg_replace('/\.php$/i', '', $file);
$prefix=''; $prefix = '';
// 0=Recommanded, 1=Experimental, 2=Developpement, 3=Other // 0=Recommanded, 1=Experimental, 2=Developpement, 3=Other
if (preg_match('/^eldy/i', $file)) $prefix='0'; if (preg_match('/^eldy/i', $file)) $prefix = '0';
elseif (preg_match('/^smartphone/i', $file)) $prefix='2'; elseif (preg_match('/^smartphone/i', $file)) $prefix = '2';
else $prefix='3'; else $prefix = '3';
if ($file == $selected) if ($file == $selected)
{ {
$menuarray[$prefix.'_'.$file]='<option value="'.$file.'" selected>'.$filelib.'</option>'; $menuarray[$prefix.'_'.$file] = '<option value="'.$file.'" selected>'.$filelib.'</option>';
} }
else else
{ {
$menuarray[$prefix.'_'.$file]='<option value="'.$file.'">'.$filelib.'</option>'; $menuarray[$prefix.'_'.$file] = '<option value="'.$file.'">'.$filelib.'</option>';
} }
} }
} }
@ -191,26 +199,26 @@ class FormAdmin
ksort($menuarray); ksort($menuarray);
// Output combo list of menus // Output combo list of menus
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>'; print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($moreattrib ? ' '.$moreattrib : '').'>';
$oldprefix=''; $oldprefix = '';
foreach ($menuarray as $key => $val) foreach ($menuarray as $key => $val)
{ {
$tab=explode('_', $key); $tab = explode('_', $key);
$newprefix=$tab[0]; $newprefix = $tab[0];
if ($newprefix=='1' && ($conf->global->MAIN_FEATURES_LEVEL < 1)) continue; if ($newprefix == '1' && ($conf->global->MAIN_FEATURES_LEVEL < 1)) continue;
if ($newprefix=='2' && ($conf->global->MAIN_FEATURES_LEVEL < 2)) continue; if ($newprefix == '2' && ($conf->global->MAIN_FEATURES_LEVEL < 2)) continue;
if ($newprefix != $oldprefix) // Add separators if ($newprefix != $oldprefix) // Add separators
{ {
// Affiche titre // Affiche titre
print '<option value="-1" disabled>'; print '<option value="-1" disabled>';
if ($newprefix=='0') print '-- '.$langs->trans("VersionRecommanded").' --'; if ($newprefix == '0') print '-- '.$langs->trans("VersionRecommanded").' --';
if ($newprefix=='1') print '-- '.$langs->trans("VersionExperimental").' --'; if ($newprefix == '1') print '-- '.$langs->trans("VersionExperimental").' --';
if ($newprefix=='2') print '-- '.$langs->trans("VersionDevelopment").' --'; if ($newprefix == '2') print '-- '.$langs->trans("VersionDevelopment").' --';
if ($newprefix=='3') print '-- '.$langs->trans("Other").' --'; if ($newprefix == '3') print '-- '.$langs->trans("Other").' --';
print '</option>'; print '</option>';
$oldprefix=$newprefix; $oldprefix = $newprefix;
} }
print $val."\n"; // Show menu entry print $val."\n"; // Show menu entry
} }
print '</select>'; print '</select>';
} }
@ -227,37 +235,37 @@ class FormAdmin
public function select_menu_families($selected, $htmlname, $dirmenuarray) public function select_menu_families($selected, $htmlname, $dirmenuarray)
{ {
// phpcs:enable // phpcs:enable
global $langs,$conf; global $langs, $conf;
//$expdevmenu=array('smartphone_backoffice.php','smartphone_frontoffice.php'); // Menu to disable if $conf->global->MAIN_FEATURES_LEVEL is not set //$expdevmenu=array('smartphone_backoffice.php','smartphone_frontoffice.php'); // Menu to disable if $conf->global->MAIN_FEATURES_LEVEL is not set
$expdevmenu=array(); $expdevmenu = array();
$menuarray=array(); $menuarray = array();
foreach($dirmenuarray as $dirmenu) foreach ($dirmenuarray as $dirmenu)
{ {
foreach ($conf->file->dol_document_root as $dirroot) foreach ($conf->file->dol_document_root as $dirroot)
{ {
$dir=$dirroot.$dirmenu; $dir = $dirroot.$dirmenu;
if (is_dir($dir)) if (is_dir($dir))
{ {
$handle=opendir($dir); $handle = opendir($dir);
if (is_resource($handle)) if (is_resource($handle))
{ {
while (($file = readdir($handle))!==false) while (($file = readdir($handle)) !== false)
{ {
if (is_file($dir."/".$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS') if (is_file($dir."/".$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS')
{ {
$filelib=preg_replace('/(_backoffice|_frontoffice)?\.php$/i', '', $file); $filelib = preg_replace('/(_backoffice|_frontoffice)?\.php$/i', '', $file);
if (preg_match('/^index/i', $filelib)) continue; if (preg_match('/^index/i', $filelib)) continue;
if (preg_match('/^default/i', $filelib)) continue; if (preg_match('/^default/i', $filelib)) continue;
if (preg_match('/^empty/i', $filelib)) continue; if (preg_match('/^empty/i', $filelib)) continue;
if (preg_match('/\.lib/i', $filelib)) continue; if (preg_match('/\.lib/i', $filelib)) continue;
if (empty($conf->global->MAIN_FEATURES_LEVEL) && in_array($file, $expdevmenu)) continue; if (empty($conf->global->MAIN_FEATURES_LEVEL) && in_array($file, $expdevmenu)) continue;
$menuarray[$filelib]=1; $menuarray[$filelib] = 1;
} }
$menuarray['all']=1; $menuarray['all'] = 1;
} }
closedir($handle); closedir($handle);
} }
@ -269,11 +277,11 @@ class FormAdmin
// Affichage liste deroulante des menus // Affichage liste deroulante des menus
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
$oldprefix=''; $oldprefix = '';
foreach ($menuarray as $key => $val) foreach ($menuarray as $key => $val)
{ {
$tab=explode('_', $key); $tab = explode('_', $key);
$newprefix=$tab[0]; $newprefix = $tab[0];
print '<option value="'.$key.'"'; print '<option value="'.$key.'"';
if ($key == $selected) if ($key == $selected)
{ {
@ -299,7 +307,7 @@ class FormAdmin
public function select_timezone($selected, $htmlname) public function select_timezone($selected, $htmlname)
{ {
// phpcs:enable // phpcs:enable
global $langs,$conf; global $langs, $conf;
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
print '<option value="-1">&nbsp;</option>'; print '<option value="-1">&nbsp;</option>';
@ -359,21 +367,21 @@ class FormAdmin
$langs->load("dict"); $langs->load("dict");
$sql = "SELECT code, label, width, height, unit"; $sql = "SELECT code, label, width, height, unit";
$sql.= " FROM ".MAIN_DB_PREFIX."c_paper_format"; $sql .= " FROM ".MAIN_DB_PREFIX."c_paper_format";
$sql.= " WHERE active=1"; $sql .= " WHERE active=1";
if ($filter) $sql.=" AND code LIKE '%".$this->db->escape($filter)."%'"; if ($filter) $sql .= " AND code LIKE '%".$this->db->escape($filter)."%'";
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
$num=$this->db->num_rows($resql); $num = $this->db->num_rows($resql);
$i=0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$obj=$this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
$unitKey = $langs->trans('SizeUnit'.$obj->unit); $unitKey = $langs->trans('SizeUnit'.$obj->unit);
$paperformat[$obj->code]= $langs->trans('PaperFormat'.strtoupper($obj->code)).' - '.round($obj->width).'x'.round($obj->height).' '.($unitKey == 'SizeUnit'.$obj->unit ? $obj->unit : $unitKey); $paperformat[$obj->code] = $langs->trans('PaperFormat'.strtoupper($obj->code)).' - '.round($obj->width).'x'.round($obj->height).' '.($unitKey == 'SizeUnit'.$obj->unit ? $obj->unit : $unitKey);
$i++; $i++;
} }
@ -383,27 +391,27 @@ class FormAdmin
dol_print_error($this->db); dol_print_error($this->db);
return ''; return '';
} }
$out=''; $out = '';
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; $out .= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
if ($showempty) if ($showempty)
{ {
$out.= '<option value=""'; $out .= '<option value=""';
if ($selected == '') $out.= ' selected'; if ($selected == '') $out .= ' selected';
$out.= '>&nbsp;</option>'; $out .= '>&nbsp;</option>';
} }
foreach ($paperformat as $key => $value) foreach ($paperformat as $key => $value)
{ {
if ($selected == $key) if ($selected == $key)
{ {
$out.= '<option value="'.$key.'" selected>'.$value.'</option>'; $out .= '<option value="'.$key.'" selected>'.$value.'</option>';
} }
else else
{ {
$out.= '<option value="'.$key.'">'.$value.'</option>'; $out .= '<option value="'.$key.'">'.$value.'</option>';
} }
} }
$out.= '</select>'; $out .= '</select>';
return $out; return $out;
} }

View File

@ -269,7 +269,15 @@ class FormWebsite
$valueforoption = '<span class="opacitymedium">['.$valpage->type_container.' '.sprintf("%03d", $valpage->id).']</span> '; $valueforoption = '<span class="opacitymedium">['.$valpage->type_container.' '.sprintf("%03d", $valpage->id).']</span> ';
$valueforoption .= $valpage->pageurl.' - '.$valpage->title; $valueforoption .= $valpage->pageurl.' - '.$valpage->title;
if ($website->fk_default_home && $key == $website->fk_default_home) $valueforoption .= ' <span class="opacitymedium">('.$langs->trans("HomePage").')</span>'; if ($website->otherlang) { // If there is alternative lang for this web site, we show the language code
if ($valpage->lang) {
$valueforoption .= ' <span class="opacitymedium">('.$valpage->lang.')</span>';
}
}
if ($website->fk_default_home && $key == $website->fk_default_home) {
//$valueforoption .= ' <span class="opacitymedium">('.$langs->trans("HomePage").')</span>';
$valueforoption .= ' <span class="opacitymedium fa fa-home"></span>';
}
$out .= '<option value="'.$key.'"'; $out .= '<option value="'.$key.'"';
if ($pageid > 0 && $pageid == $key) $out .= ' selected'; // To preselect a value if ($pageid > 0 && $pageid == $key) $out .= ' selected'; // To preselect a value

View File

@ -102,7 +102,7 @@ class Menubase
/** /**
* @var string Key for menu translation * @var string Key for menu translation
* @deprecated * @deprecated
* @see title * @see $title
*/ */
public $titre; public $titre;

View File

@ -764,28 +764,37 @@ class Translate
* @param string $langdir Directory to scan * @param string $langdir Directory to scan
* @param integer $maxlength Max length for each value in combo box (will be truncated) * @param integer $maxlength Max length for each value in combo box (will be truncated)
* @param int $usecode 1=Show code instead of country name for language variant, 2=Show only code * @param int $usecode 1=Show code instead of country name for language variant, 2=Show only code
* @param int $mainlangonly 1=Show only main languages ('fr_FR' no' fr_BE', 'es_ES' not 'es_MX', ...)
* @return array List of languages * @return array List of languages
*/ */
public function get_available_languages($langdir = DOL_DOCUMENT_ROOT, $maxlength = 0, $usecode = 0) public function get_available_languages($langdir = DOL_DOCUMENT_ROOT, $maxlength = 0, $usecode = 0, $mainlangonly = 0)
{ {
// phpcs:enable // phpcs:enable
global $conf; global $conf;
$this->load("languages");
// We scan directory langs to detect available languages // We scan directory langs to detect available languages
$handle = opendir($langdir."/langs"); $handle = opendir($langdir."/langs");
$langs_available = array(); $langs_available = array();
while ($dir = trim(readdir($handle))) while ($dir = trim(readdir($handle)))
{ {
if (preg_match('/^[a-z]+_[A-Z]+/i', $dir)) $regs = array();
if (preg_match('/^([a-z]+)_([A-Z]+)/i', $dir, $regs))
{ {
$this->load("languages"); // We must keep only main languages
if ($mainlangonly) {
$arrayofspecialmainlanguages = array('en_US', 'sq_AL', 'ar_SA', 'eu_ES', 'bn_DB', 'bs_BA', 'ca_ES', 'zh_TW', 'cs_CZ', 'da_DK', 'et_EE', 'ka_GE', 'el_GR', 'he_IL', 'kn_IN', 'km_KH', 'ko_KR', 'lo_LA', 'nb_NO', 'fa_IR', 'sr_RS', 'sl_SI', 'uk_UA', 'vi_VN');
if (strtolower($regs[1]) != strtolower($regs[2]) && ! in_array($dir, $arrayofspecialmainlanguages)) continue;
}
// We must keep only languages into MAIN_LANGUAGES_ALLOWED
if (!empty($conf->global->MAIN_LANGUAGES_ALLOWED) && !in_array($dir, explode(',', $conf->global->MAIN_LANGUAGES_ALLOWED))) continue; if (!empty($conf->global->MAIN_LANGUAGES_ALLOWED) && !in_array($dir, explode(',', $conf->global->MAIN_LANGUAGES_ALLOWED))) continue;
if ($usecode == 2) if ($usecode == 2)
{ {
$langs_available[$dir] = $dir; $langs_available[$dir] = $dir;
} }
if ($usecode == 1 || !empty($conf->global->MAIN_SHOW_LANGUAGE_CODE)) if ($usecode == 1 || !empty($conf->global->MAIN_SHOW_LANGUAGE_CODE))
{ {
$langs_available[$dir] = $dir.': '.dol_trunc($this->trans('Language_'.$dir), $maxlength); $langs_available[$dir] = $dir.': '.dol_trunc($this->trans('Language_'.$dir), $maxlength);
@ -794,6 +803,9 @@ class Translate
{ {
$langs_available[$dir] = $this->trans('Language_'.$dir); $langs_available[$dir] = $this->trans('Language_'.$dir);
} }
if ($mainlangonly) {
$langs_available[$dir] = str_replace(' (United States)', '', $langs_available[$dir]);
}
} }
} }
return $langs_available; return $langs_available;

View File

@ -45,21 +45,21 @@
*/ */
function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLength = 2, $autoselect = 0, $ajaxoptions = array()) function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLength = 2, $autoselect = 0, $ajaxoptions = array())
{ {
if (empty($minLength)) $minLength=1; if (empty($minLength)) $minLength = 1;
$dataforrenderITem='ui-autocomplete'; $dataforrenderITem = 'ui-autocomplete';
$dataforitem='ui-autocomplete-item'; $dataforitem = 'ui-autocomplete-item';
// Allow two constant to use other values for backward compatibility // Allow two constant to use other values for backward compatibility
if (defined('JS_QUERY_AUTOCOMPLETE_RENDERITEM')) $dataforrenderITem=constant('JS_QUERY_AUTOCOMPLETE_RENDERITEM'); if (defined('JS_QUERY_AUTOCOMPLETE_RENDERITEM')) $dataforrenderITem = constant('JS_QUERY_AUTOCOMPLETE_RENDERITEM');
if (defined('JS_QUERY_AUTOCOMPLETE_ITEM')) $dataforitem=constant('JS_QUERY_AUTOCOMPLETE_ITEM'); if (defined('JS_QUERY_AUTOCOMPLETE_ITEM')) $dataforitem = constant('JS_QUERY_AUTOCOMPLETE_ITEM');
// Input search_htmlname is original field // Input search_htmlname is original field
// Input htmlname is a second input field used when using ajax autocomplete. // Input htmlname is a second input field used when using ajax autocomplete.
$script = '<input type="hidden" name="'.$htmlname.'" id="'.$htmlname.'" value="'.$selected.'" />'; $script = '<input type="hidden" name="'.$htmlname.'" id="'.$htmlname.'" value="'.$selected.'" />';
$script.= '<!-- Javascript code for autocomplete of field '.$htmlname.' -->'."\n"; $script .= '<!-- Javascript code for autocomplete of field '.$htmlname.' -->'."\n";
$script.= '<script>'."\n"; $script .= '<script>'."\n";
$script.= '$(document).ready(function() { $script .= '$(document).ready(function() {
var autoselect = '.$autoselect.'; var autoselect = '.$autoselect.';
var options = '.json_encode($ajaxoptions).'; var options = '.json_encode($ajaxoptions).';
@ -110,7 +110,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
$("input#search_'.$htmlname.'").autocomplete({ $("input#search_'.$htmlname.'").autocomplete({
source: function( request, response ) { source: function( request, response ) {
$.get("'.$url.($urloption?'?'.$urloption:'').'", { '.$htmlname.': request.term }, function(data){ $.get("'.$url.($urloption ? '?'.$urloption : '').'", { '.$htmlname.': request.term }, function(data){
if (data != null) if (data != null)
{ {
response($.map( data, function(item) { response($.map( data, function(item) {
@ -134,7 +134,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
return { label: label, value: item.value, id: item.key, update: update, textarea: textarea, disabled: item.disabled } return { label: label, value: item.value, id: item.key, update: update, textarea: textarea, disabled: item.disabled }
})); }));
} }
else console.error("Error: Ajax url '.$url.($urloption?'?'.$urloption:'').' has returned an empty page. Should be an empty json array."); else console.error("Error: Ajax url '.$url.($urloption ? '?'.$urloption : '').' has returned an empty page. Should be an empty json array.");
}, "json"); }, "json");
}, },
dataType: "json", dataType: "json",
@ -203,7 +203,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
}; };
});'; });';
$script.= '</script>'; $script .= '</script>';
return $script; return $script;
} }
@ -225,8 +225,8 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
function ajax_multiautocompleter($htmlname, $fields, $url, $option = '', $minLength = 2, $autoselect = 0) function ajax_multiautocompleter($htmlname, $fields, $url, $option = '', $minLength = 2, $autoselect = 0)
{ {
$script = '<!-- Autocomplete -->'."\n"; $script = '<!-- Autocomplete -->'."\n";
$script.= '<script>'; $script .= '<script>';
$script.= 'jQuery(document).ready(function() { $script .= 'jQuery(document).ready(function() {
var fields = '.json_encode($fields).'; var fields = '.json_encode($fields).';
var nboffields = fields.length; var nboffields = fields.length;
var autoselect = '.$autoselect.'; var autoselect = '.$autoselect.';
@ -236,7 +236,7 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option = '', $minLen
dataType: "json", dataType: "json",
minLength: '.$minLength.', minLength: '.$minLength.',
source: function( request, response ) { source: function( request, response ) {
jQuery.getJSON( "'.$url.($option?'?'.$option:'').'", { '.$htmlname.': request.term }, function(data){ jQuery.getJSON( "'.$url.($option ? '?'.$option : '').'", { '.$htmlname.': request.term }, function(data){
response( jQuery.map( data, function( item ) { response( jQuery.map( data, function( item ) {
if (autoselect == 1 && data.length == 1) { if (autoselect == 1 && data.length == 1) {
jQuery("#'.$htmlname.'").val(item.value); jQuery("#'.$htmlname.'").val(item.value);
@ -315,7 +315,7 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option = '', $minLen
} }
}); });
});'; });';
$script.= '</script>'; $script .= '</script>';
return $script; return $script;
} }
@ -333,11 +333,11 @@ function ajax_dialog($title, $message, $w = 350, $h = 150)
{ {
global $langs; global $langs;
$newtitle=dol_textishtml($title)?dol_string_nohtmltag($title, 1):$title; $newtitle = dol_textishtml($title) ?dol_string_nohtmltag($title, 1) : $title;
$msg= '<div id="dialog-info" title="'.dol_escape_htmltag($newtitle).'">'; $msg = '<div id="dialog-info" title="'.dol_escape_htmltag($newtitle).'">';
$msg.= $message; $msg .= $message;
$msg.= '</div>'."\n"; $msg .= '</div>'."\n";
$msg.= '<script> $msg .= '<script>
jQuery(function() { jQuery(function() {
jQuery("#dialog-info").dialog({ jQuery("#dialog-info").dialog({
resizable: false, resizable: false,
@ -353,7 +353,7 @@ function ajax_dialog($title, $message, $w = 350, $h = 150)
}); });
</script>'; </script>';
$msg.= "\n"; $msg .= "\n";
return $msg; return $msg;
} }
@ -377,20 +377,20 @@ function ajax_combobox($htmlname, $events = array(), $minLengthToAutocomplete =
global $conf; global $conf;
// select2 can be disabled for smartphones // select2 can be disabled for smartphones
if (! empty($conf->browser->layout) && $conf->browser->layout == 'phone' && ! empty($conf->global->MAIN_DISALLOW_SELECT2_WITH_SMARTPHONE)) return ''; if (!empty($conf->browser->layout) && $conf->browser->layout == 'phone' && !empty($conf->global->MAIN_DISALLOW_SELECT2_WITH_SMARTPHONE)) return '';
if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return ''; if (!empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return '';
if (empty($conf->use_javascript_ajax)) return ''; if (empty($conf->use_javascript_ajax)) return '';
if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && ! defined('REQUIRE_JQUERY_MULTISELECT')) return ''; if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && !defined('REQUIRE_JQUERY_MULTISELECT')) return '';
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) return ''; if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) return '';
if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete=0; if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete = 0;
$tmpplugin='select2'; $tmpplugin = 'select2';
$msg="\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id = '.$htmlname.' --> $msg = "\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id = '.$htmlname.' -->
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$(\''.(preg_match('/^\./', $htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({ $(\''.(preg_match('/^\./', $htmlname) ? $htmlname : '#'.$htmlname).'\').'.$tmpplugin.'({
dir: \'ltr\', dir: \'ltr\',
width: \''.$widthTypeOfAutocomplete.'\', /* off or resolve */ width: \''.$widthTypeOfAutocomplete.'\', /* off or resolve */
minimumInputLength: '.$minLengthToAutocomplete.', minimumInputLength: '.$minLengthToAutocomplete.',
@ -411,12 +411,12 @@ function ajax_combobox($htmlname, $events = array(), $minLengthToAutocomplete =
}, },
dropdownCssClass: \'ui-dialog\' dropdownCssClass: \'ui-dialog\'
})'; })';
if ($forcefocus) $msg.= '.select2(\'focus\')'; if ($forcefocus) $msg .= '.select2(\'focus\')';
$msg.= ';'."\n"; $msg .= ';'."\n";
if (is_array($events) && count($events)) // If an array of js events to do were provided. if (is_array($events) && count($events)) // If an array of js events to do were provided.
{ {
$msg.= ' $msg .= '
jQuery("#'.$htmlname.'").change(function () { jQuery("#'.$htmlname.'").change(function () {
var obj = '.json_encode($events).'; var obj = '.json_encode($events).';
$.each(obj, function(key,values) { $.each(obj, function(key,values) {
@ -465,8 +465,8 @@ function ajax_combobox($htmlname, $events = array(), $minLengthToAutocomplete =
}'; }';
} }
$msg.= '});'."\n"; $msg .= '});'."\n";
$msg.= "</script>\n"; $msg .= "</script>\n";
return $msg; return $msg;
} }
@ -495,7 +495,7 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof
} }
else else
{ {
$out= "\n<!-- Ajax code to switch constant ".$code." -->".' $out = "\n<!-- Ajax code to switch constant ".$code." -->".'
<script> <script>
$(document).ready(function() { $(document).ready(function() {
var input = '.json_encode($input).'; var input = '.json_encode($input).';
@ -530,10 +530,10 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof
}); });
</script>'."\n"; </script>'."\n";
$out.= '<div id="confirm_'.$code.'" title="" style="display: none;"></div>'; $out .= '<div id="confirm_'.$code.'" title="" style="display: none;"></div>';
$out.= '<span id="set_'.$code.'" class="linkobject '.(! empty($conf->global->$code)?'hideobject':'').'">'.($revertonoff?img_picto($langs->trans("Enabled"), 'switch_on'):img_picto($langs->trans("Disabled"), 'switch_off')).'</span>'; $out .= '<span id="set_'.$code.'" class="linkobject '.(!empty($conf->global->$code) ? 'hideobject' : '').'">'.($revertonoff ?img_picto($langs->trans("Enabled"), 'switch_on') : img_picto($langs->trans("Disabled"), 'switch_off')).'</span>';
$out.= '<span id="del_'.$code.'" class="linkobject '.(! empty($conf->global->$code)?'':'hideobject').'">'.($revertonoff?img_picto($langs->trans("Disabled"), 'switch_off'):img_picto($langs->trans("Enabled"), 'switch_on')).'</span>'; $out .= '<span id="del_'.$code.'" class="linkobject '.(!empty($conf->global->$code) ? '' : 'hideobject').'">'.($revertonoff ?img_picto($langs->trans("Disabled"), 'switch_off') : img_picto($langs->trans("Enabled"), 'switch_on')).'</span>';
$out.="\n"; $out .= "\n";
} }
return $out; return $out;
@ -555,7 +555,7 @@ function ajax_object_onoff($object, $code, $field, $text_on, $text_off, $input =
{ {
global $langs; global $langs;
$out= '<script> $out = '<script>
$(function() { $(function() {
var input = '.json_encode($input).'; var input = '.json_encode($input).';
@ -620,8 +620,8 @@ function ajax_object_onoff($object, $code, $field, $text_on, $text_off, $input =
}); });
}); });
</script>'; </script>';
$out.= '<span id="set_'.$code.'_'.$object->id.'" class="linkobject '.($object->$code==1?'hideobject':'').'">'.img_picto($langs->trans($text_off), 'switch_off').'</span>'; $out .= '<span id="set_'.$code.'_'.$object->id.'" class="linkobject '.($object->$code == 1 ? 'hideobject' : '').'">'.img_picto($langs->trans($text_off), 'switch_off').'</span>';
$out.= '<span id="del_'.$code.'_'.$object->id.'" class="linkobject '.($object->$code==1?'':'hideobject').'">'.img_picto($langs->trans($text_on), 'switch_on').'</span>'; $out .= '<span id="del_'.$code.'_'.$object->id.'" class="linkobject '.($object->$code == 1 ? '' : 'hideobject').'">'.img_picto($langs->trans($text_on), 'switch_on').'</span>';
return $out; return $out;
} }

View File

@ -1401,7 +1401,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0,
foreach ($tblcateg as $cate) foreach ($tblcateg as $cate)
{ {
// Adding the descriptions if they are filled // Adding the descriptions if they are filled
$desccateg = $cate->add_description; $desccateg = $cate->description;
if ($desccateg) if ($desccateg)
$libelleproduitservice .= '__N__'.$desccateg; $libelleproduitservice .= '__N__'.$desccateg;
} }

View File

@ -76,13 +76,13 @@ function product_prepare_head($object)
} }
// Sub products // Sub products
if (! empty($conf->global->PRODUIT_SOUSPRODUITS)) if (!empty($conf->global->PRODUIT_SOUSPRODUITS))
{ {
$head[$h][0] = DOL_URL_ROOT."/product/composition/card.php?id=".$object->id; $head[$h][0] = DOL_URL_ROOT."/product/composition/card.php?id=".$object->id;
$head[$h][1] = $langs->trans('AssociatedProducts'); $head[$h][1] = $langs->trans('AssociatedProducts');
$nbFatherAndChild = $object->hasFatherOrChild(); $nbFatherAndChild = $object->hasFatherOrChild();
if ($nbFatherAndChild > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.$nbFatherAndChild.'</span>'; if ($nbFatherAndChild > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbFatherAndChild.'</span>';
$head[$h][2] = 'subproduct'; $head[$h][2] = 'subproduct';
$h++; $h++;
} }
@ -110,15 +110,15 @@ function product_prepare_head($object)
$head[$h][1] = $langs->trans('ProductCombinations'); $head[$h][1] = $langs->trans('ProductCombinations');
$head[$h][2] = 'combinations'; $head[$h][2] = 'combinations';
$nbVariant = $prodcomb->countNbOfCombinationForFkProductParent($object->id); $nbVariant = $prodcomb->countNbOfCombinationForFkProductParent($object->id);
if ($nbVariant > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.$nbVariant.'</span>'; if ($nbVariant > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbVariant.'</span>';
} }
$h++; $h++;
} }
if ($object->isProduct() || ($object->isService() && ! empty($conf->global->STOCK_SUPPORTS_SERVICES))) // If physical product we can stock (or service with option) if ($object->isProduct() || ($object->isService() && !empty($conf->global->STOCK_SUPPORTS_SERVICES))) // If physical product we can stock (or service with option)
{ {
if (! empty($conf->stock->enabled) && $user->rights->stock->lire) if (!empty($conf->stock->enabled) && $user->rights->stock->lire)
{ {
$head[$h][0] = DOL_URL_ROOT."/product/stock/product.php?id=".$object->id; $head[$h][0] = DOL_URL_ROOT."/product/stock/product.php?id=".$object->id;
$head[$h][1] = $langs->trans("Stock"); $head[$h][1] = $langs->trans("Stock");
@ -156,11 +156,11 @@ function product_prepare_head($object)
if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB))
{ {
$nbNote = 0; $nbNote = 0;
if(!empty($object->note_private)) $nbNote++; if (!empty($object->note_private)) $nbNote++;
if(!empty($object->note_public)) $nbNote++; if (!empty($object->note_public)) $nbNote++;
$head[$h][0] = DOL_URL_ROOT.'/product/note.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/product/note.php?id='.$object->id;
$head[$h][1] = $langs->trans('Notes'); $head[$h][1] = $langs->trans('Notes');
if ($nbNote > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.$nbNote.'</span>'; if ($nbNote > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbNote.'</span>';
$head[$h][2] = 'note'; $head[$h][2] = 'note';
$h++; $h++;
} }
@ -168,18 +168,18 @@ function product_prepare_head($object)
// Attachments // Attachments
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
if (! empty($conf->product->enabled) && ($object->type==Product::TYPE_PRODUCT)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); if (!empty($conf->product->enabled) && ($object->type == Product::TYPE_PRODUCT)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
if (! empty($conf->service->enabled) && ($object->type==Product::TYPE_SERVICE)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); if (!empty($conf->service->enabled) && ($object->type == Product::TYPE_SERVICE)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) {
if (! empty($conf->product->enabled) && ($object->type==Product::TYPE_PRODUCT)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id.'/photos'; if (!empty($conf->product->enabled) && ($object->type == Product::TYPE_PRODUCT)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id.'/photos';
if (! empty($conf->service->enabled) && ($object->type==Product::TYPE_SERVICE)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id.'/photos'; if (!empty($conf->service->enabled) && ($object->type == Product::TYPE_SERVICE)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id.'/photos';
$nbFiles += count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); $nbFiles += count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
} }
$nbLinks=Link::count($db, $object->element, $object->id); $nbLinks = Link::count($db, $object->element, $object->id);
$head[$h][0] = DOL_URL_ROOT.'/product/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/product/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if (($nbFiles+$nbLinks) > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.($nbFiles+$nbLinks).'</span>'; if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).'</span>';
$head[$h][2] = 'documents'; $head[$h][2] = 'documents';
$h++; $h++;
@ -225,10 +225,10 @@ function productlot_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
$upload_dir = $conf->productbatch->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); $upload_dir = $conf->productbatch->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
$nbLinks=Link::count($db, $object->element, $object->id); $nbLinks = Link::count($db, $object->element, $object->id);
$head[$h][0] = DOL_URL_ROOT."/product/stock/productlot_document.php?id=".$object->id; $head[$h][0] = DOL_URL_ROOT."/product/stock/productlot_document.php?id=".$object->id;
$head[$h][1] = $langs->trans("Documents"); $head[$h][1] = $langs->trans("Documents");
if (($nbFiles+$nbLinks) > 0) $head[$h][1].= '<span class="badge marginleftonlyshort">'.($nbFiles+$nbLinks).'</span>'; if (($nbFiles + $nbLinks) > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).'</span>';
$head[$h][2] = 'documents'; $head[$h][2] = 'documents';
$h++; $h++;
@ -425,6 +425,24 @@ function show_stats_for_company($product, $socid)
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
// MO
if (!empty($conf->mrp->enabled) && $user->rights->mrp->read)
{
$nblines++;
//$ret = $product->load_stats_mo($socid);
if ($ret < 0) dol_print_error($db);
$langs->load("orders");
print '<tr><td>';
print '<a href="mo.php?id='.$product->id.'">'.img_object('', 'mrp').' '.$langs->trans("MO").'</a>';
print '</td><td class="right">';
print $product->stats_mo['suppliers'];
print '</td><td class="right">';
print $product->stats_mo['nb'];
print '</td><td class="right">';
print $product->stats_mo['qty'];
print '</td>';
print '</tr>';
}
// Customer invoices // Customer invoices
if (!empty($conf->facture->enabled) && $user->rights->facture->lire) if (!empty($conf->facture->enabled) && $user->rights->facture->lire)
{ {
@ -518,7 +536,7 @@ function measuringUnitString($unit, $measuring_style = '', $scale = '', $use_sho
if (empty($measuring_unit_cache[$unit.'_'.$measuring_style.'_'.$scale.'_'.$use_short_label])) if (empty($measuring_unit_cache[$unit.'_'.$measuring_style.'_'.$scale.'_'.$use_short_label]))
{ {
require_once DOL_DOCUMENT_ROOT.'/core/class/cunits.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/cunits.class.php';
$measuringUnits= new CUnits($db); $measuringUnits = new CUnits($db);
if ($measuring_style == '' && $scale == '') if ($measuring_style == '' && $scale == '')
{ {

View File

@ -265,7 +265,7 @@ function project_timesheet_prepare_head($mode, $fuser = null)
if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERMONTH)) if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERMONTH))
{ {
$head[$h][0] = DOL_URL_ROOT."/projet/activity/permonth.php".($param?'?'.$param:''); $head[$h][0] = DOL_URL_ROOT."/projet/activity/permonth.php".($param ? '?'.$param : '');
$head[$h][1] = $langs->trans("InputPerMonth"); $head[$h][1] = $langs->trans("InputPerMonth");
$head[$h][2] = 'inputpermonth'; $head[$h][2] = 'inputpermonth';
$h++; $h++;
@ -1735,19 +1735,19 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
global $conf, $db, $user, $bc, $langs; global $conf, $db, $user, $bc, $langs;
global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic; global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic;
$numlines=count($lines); $numlines = count($lines);
$lastprojectid=0; $lastprojectid = 0;
$workloadforid=array(); $workloadforid = array();
$totalforeachweek=array(); $totalforeachweek = array();
$lineswithoutlevel0=array(); $lineswithoutlevel0 = array();
// Create a smaller array with sublevels only to be used later. This increase dramatically performances. // Create a smaller array with sublevels only to be used later. This increase dramatically performances.
if ($parent == 0) // Always and only if at first level if ($parent == 0) // Always and only if at first level
{ {
for ($i = 0 ; $i < $numlines ; $i++) for ($i = 0; $i < $numlines; $i++)
{ {
if ($lines[$i]->fk_task_parent) $lineswithoutlevel0[]=$lines[$i]; if ($lines[$i]->fk_task_parent) $lineswithoutlevel0[] = $lines[$i];
} }
} }
@ -1755,24 +1755,24 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
if (empty($oldprojectforbreak)) if (empty($oldprojectforbreak))
{ {
$oldprojectforbreak = (empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:-1); // 0 = start break, -1 = never break $oldprojectforbreak = (empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT) ? 0 : -1); // 0 = start break, -1 = never break
} }
for ($i = 0 ; $i < $numlines ; $i++) for ($i = 0; $i < $numlines; $i++)
{ {
if ($parent == 0) $level = 0; if ($parent == 0) $level = 0;
if ($lines[$i]->fk_task_parent == $parent) if ($lines[$i]->fk_task_parent == $parent)
{ {
// If we want all or we have a role on task, we show it // If we want all or we have a role on task, we show it
if (empty($mine) || ! empty($tasksrole[$lines[$i]->id])) if (empty($mine) || !empty($tasksrole[$lines[$i]->id]))
{ {
//dol_syslog("projectLinesPerWeek Found line ".$i.", a qualified task (i have role or want to show all tasks) with id=".$lines[$i]->id." project id=".$lines[$i]->fk_project); //dol_syslog("projectLinesPerWeek Found line ".$i.", a qualified task (i have role or want to show all tasks) with id=".$lines[$i]->id." project id=".$lines[$i]->fk_project);
// Break on a new project // Break on a new project
if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid) if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid)
{ {
$lastprojectid=$lines[$i]->fk_project; $lastprojectid = $lines[$i]->fk_project;
$projectstatic->id = $lines[$i]->fk_project; $projectstatic->id = $lines[$i]->fk_project;
} }
@ -1780,32 +1780,32 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
//var_dump($projectstatic->weekWorkLoadPerTask); //var_dump($projectstatic->weekWorkLoadPerTask);
if (empty($workloadforid[$projectstatic->id])) if (empty($workloadforid[$projectstatic->id]))
{ {
$projectstatic->loadTimeSpentMonth($firstdaytoshow, 0, $fuser->id); // Load time spent from table projet_task_time for the project into this->weekWorkLoad and this->weekWorkLoadPerTask for all days of a week $projectstatic->loadTimeSpentMonth($firstdaytoshow, 0, $fuser->id); // Load time spent from table projet_task_time for the project into this->weekWorkLoad and this->weekWorkLoadPerTask for all days of a week
$workloadforid[$projectstatic->id]=1; $workloadforid[$projectstatic->id] = 1;
} }
//var_dump($projectstatic->weekWorkLoadPerTask); //var_dump($projectstatic->weekWorkLoadPerTask);
//var_dump('--- '.$projectstatic->id.' '.$workloadforid[$projectstatic->id]); //var_dump('--- '.$projectstatic->id.' '.$workloadforid[$projectstatic->id]);
$projectstatic->id=$lines[$i]->fk_project; $projectstatic->id = $lines[$i]->fk_project;
$projectstatic->ref=$lines[$i]->projectref; $projectstatic->ref = $lines[$i]->projectref;
$projectstatic->title=$lines[$i]->projectlabel; $projectstatic->title = $lines[$i]->projectlabel;
$projectstatic->public=$lines[$i]->public; $projectstatic->public = $lines[$i]->public;
$projectstatic->thirdparty_name=$lines[$i]->thirdparty_name; $projectstatic->thirdparty_name = $lines[$i]->thirdparty_name;
$taskstatic->id=$lines[$i]->id; $taskstatic->id = $lines[$i]->id;
$taskstatic->ref=($lines[$i]->ref?$lines[$i]->ref:$lines[$i]->id); $taskstatic->ref = ($lines[$i]->ref ? $lines[$i]->ref : $lines[$i]->id);
$taskstatic->label=$lines[$i]->label; $taskstatic->label = $lines[$i]->label;
$taskstatic->date_start=$lines[$i]->date_start; $taskstatic->date_start = $lines[$i]->date_start;
$taskstatic->date_end=$lines[$i]->date_end; $taskstatic->date_end = $lines[$i]->date_end;
$thirdpartystatic->id=$lines[$i]->thirdparty_id; $thirdpartystatic->id = $lines[$i]->thirdparty_id;
$thirdpartystatic->name=$lines[$i]->thirdparty_name; $thirdpartystatic->name = $lines[$i]->thirdparty_name;
$thirdpartystatic->email=$lines[$i]->thirdparty_email; $thirdpartystatic->email = $lines[$i]->thirdparty_email;
if (empty($oldprojectforbreak) || ($oldprojectforbreak != -1 && $oldprojectforbreak != $projectstatic->id)) if (empty($oldprojectforbreak) || ($oldprojectforbreak != -1 && $oldprojectforbreak != $projectstatic->id))
{ {
print '<tr class="oddeven trforbreak">'."\n"; print '<tr class="oddeven trforbreak">'."\n";
print '<td colspan="'.(6+count($TWeek)).'">'; print '<td colspan="'.(6 + count($TWeek)).'">';
print $projectstatic->getNomUrl(1, '', 0, '<strong>'.$langs->transnoentitiesnoconv("YourRole").':</strong> '.$projectsrole[$lines[$i]->fk_project]); print $projectstatic->getNomUrl(1, '', 0, '<strong>'.$langs->transnoentitiesnoconv("YourRole").':</strong> '.$projectsrole[$lines[$i]->fk_project]);
if ($thirdpartystatic->id > 0) print ' - '.$thirdpartystatic->getNomUrl(1); if ($thirdpartystatic->id > 0) print ' - '.$thirdpartystatic->getNomUrl(1);
if ($projectstatic->title) if ($projectstatic->title)
@ -1840,11 +1840,11 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
// Ref // Ref
print '<td class="nowrap">'; print '<td class="nowrap">';
print '<!-- Task id = '.$lines[$i]->id.' -->'; print '<!-- Task id = '.$lines[$i]->id.' -->';
for ($k = 0 ; $k < $level ; $k++) print "&nbsp;&nbsp;&nbsp;"; for ($k = 0; $k < $level; $k++) print "&nbsp;&nbsp;&nbsp;";
print $taskstatic->getNomUrl(1, 'withproject', 'time'); print $taskstatic->getNomUrl(1, 'withproject', 'time');
// Label task // Label task
print '<br>'; print '<br>';
for ($k = 0 ; $k < $level ; $k++) print "&nbsp;&nbsp;&nbsp;"; for ($k = 0; $k < $level; $k++) print "&nbsp;&nbsp;&nbsp;";
//print $taskstatic->getNomUrl(0, 'withproject', 'time'); //print $taskstatic->getNomUrl(0, 'withproject', 'time');
print $taskstatic->label; print $taskstatic->label;
//print "<br>"; //print "<br>";
@ -1860,7 +1860,7 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
// Progress declared % // Progress declared %
print '<td class="right">'; print '<td class="right">';
print $formother->select_percent($lines[$i]->progress, $lines[$i]->id . 'progress'); print $formother->select_percent($lines[$i]->progress, $lines[$i]->id.'progress');
print '</td>'; print '</td>';
// Time spent by everybody // Time spent by everybody
@ -1877,66 +1877,66 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
// Time spent by user // Time spent by user
print '<td class="right">'; print '<td class="right">';
$tmptimespent=$taskstatic->getSummaryOfTimeSpent($fuser->id); $tmptimespent = $taskstatic->getSummaryOfTimeSpent($fuser->id);
if ($tmptimespent['total_duration']) print convertSecondToTime($tmptimespent['total_duration'], 'allhourmin'); if ($tmptimespent['total_duration']) print convertSecondToTime($tmptimespent['total_duration'], 'allhourmin');
else print '--:--'; else print '--:--';
print "</td>\n"; print "</td>\n";
$disabledproject=1;$disabledtask=1; $disabledproject = 1; $disabledtask = 1;
//print "x".$lines[$i]->fk_project; //print "x".$lines[$i]->fk_project;
//var_dump($lines[$i]); //var_dump($lines[$i]);
//var_dump($projectsrole[$lines[$i]->fk_project]); //var_dump($projectsrole[$lines[$i]->fk_project]);
// If at least one role for project // If at least one role for project
if ($lines[$i]->public || ! empty($projectsrole[$lines[$i]->fk_project]) || $user->rights->projet->all->creer) if ($lines[$i]->public || !empty($projectsrole[$lines[$i]->fk_project]) || $user->rights->projet->all->creer)
{ {
$disabledproject=0; $disabledproject = 0;
$disabledtask=0; $disabledtask = 0;
} }
// If $restricteditformytask is on and I have no role on task, i disable edit // If $restricteditformytask is on and I have no role on task, i disable edit
if ($restricteditformytask && empty($tasksrole[$lines[$i]->id])) if ($restricteditformytask && empty($tasksrole[$lines[$i]->id]))
{ {
$disabledtask=1; $disabledtask = 1;
} }
//var_dump($projectstatic->weekWorkLoadPerTask); //var_dump($projectstatic->weekWorkLoadPerTask);
//TODO //TODO
// Fields to show current time // Fields to show current time
$tableCell=''; $modeinput='hours'; $tableCell = ''; $modeinput = 'hours';
$TFirstDay = getFirstDayOfEachWeek($TWeek, date('Y', $firstdaytoshow)); $TFirstDay = getFirstDayOfEachWeek($TWeek, date('Y', $firstdaytoshow));
$TFirstDay[reset($TWeek)] = 1; $TFirstDay[reset($TWeek)] = 1;
foreach($TFirstDay as &$fday) { foreach ($TFirstDay as &$fday) {
$fday--; $fday--;
} }
foreach ($TWeek as $weekNb) foreach ($TWeek as $weekNb)
{ {
$weekWorkLoad = $projectstatic->monthWorkLoadPerTask[$weekNb][$lines[$i]->id]; $weekWorkLoad = $projectstatic->monthWorkLoadPerTask[$weekNb][$lines[$i]->id];
$totalforeachweek[$weekNb]+=$weekWorkLoad; $totalforeachweek[$weekNb] += $weekWorkLoad;
$alreadyspent=''; $alreadyspent = '';
if ($weekWorkLoad > 0) $alreadyspent=convertSecondToTime($weekWorkLoad, 'allhourmin'); if ($weekWorkLoad > 0) $alreadyspent = convertSecondToTime($weekWorkLoad, 'allhourmin');
$alttitle=$langs->trans("AddHereTimeSpentForWeek", $weekNb); $alttitle = $langs->trans("AddHereTimeSpentForWeek", $weekNb);
$tableCell ='<td align="center" class="hide">'; $tableCell = '<td align="center" class="hide">';
$placeholder=''; $placeholder = '';
if ($alreadyspent) if ($alreadyspent)
{ {
$tableCell.='<span class="timesheetalreadyrecorded" title="texttoreplace"><input type="text" class="center smallpadd" size="2" disabled id="timespent['.$inc.']['.$weekNb.']" name="task['.$lines[$i]->id.']['.$weekNb.']" value="'.$alreadyspent.'"></span>'; $tableCell .= '<span class="timesheetalreadyrecorded" title="texttoreplace"><input type="text" class="center smallpadd" size="2" disabled id="timespent['.$inc.']['.$weekNb.']" name="task['.$lines[$i]->id.']['.$weekNb.']" value="'.$alreadyspent.'"></span>';
//$placeholder=' placeholder="00:00"'; //$placeholder=' placeholder="00:00"';
//$tableCell.='+'; //$tableCell.='+';
} }
$tableCell.='<input type="text" alt="'.($disabledtask?'':$alttitle).'" title="'.($disabledtask?'':$alttitle).'" '.($disabledtask?'disabled':$placeholder).' class="center smallpadd" size="2" id="timeadded['.$inc.']['.$TFirstDay[$weekNb].']" name="task['.$lines[$i]->id.']['.$TFirstDay[$weekNb].']" value="" cols="2" maxlength="5"'; $tableCell .= '<input type="text" alt="'.($disabledtask ? '' : $alttitle).'" title="'.($disabledtask ? '' : $alttitle).'" '.($disabledtask ? 'disabled' : $placeholder).' class="center smallpadd" size="2" id="timeadded['.$inc.']['.$TFirstDay[$weekNb].']" name="task['.$lines[$i]->id.']['.$TFirstDay[$weekNb].']" value="" cols="2" maxlength="5"';
$tableCell.=' onkeypress="return regexEvent(this,event,\'timeChar\')"'; $tableCell .= ' onkeypress="return regexEvent(this,event,\'timeChar\')"';
$tableCell.=' onkeyup="updateTotal('.$weekNb.',\''.$modeinput.'\')"'; $tableCell .= ' onkeyup="updateTotal('.$weekNb.',\''.$modeinput.'\')"';
$tableCell.=' onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$weekNb.',\''.$modeinput.'\')" />'; $tableCell .= ' onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$weekNb.',\''.$modeinput.'\')" />';
$tableCell.='</td>'; $tableCell .= '</td>';
print $tableCell; print $tableCell;
} }
// Warning // Warning
print '<td class="right">'; print '<td class="right">';
if ((! $lines[$i]->public) && $disabledproject) print $form->textwithpicto('', $langs->trans("UserIsNotContactOfProject")); if ((!$lines[$i]->public) && $disabledproject) print $form->textwithpicto('', $langs->trans("UserIsNotContactOfProject"));
elseif ($disabledtask) elseif ($disabledtask)
{ {
$titleassigntask = $langs->trans("AssignTaskToMe"); $titleassigntask = $langs->trans("AssignTaskToMe");
@ -1959,9 +1959,9 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
$ret = projectLinesPerMonth($inc, $firstdaytoshow, $fuser, $lines[$i]->id, ($parent == 0 ? $lineswithoutlevel0 : $lines), $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable, $oldprojectforbreak, $TWeek); $ret = projectLinesPerMonth($inc, $firstdaytoshow, $fuser, $lines[$i]->id, ($parent == 0 ? $lineswithoutlevel0 : $lines), $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $isavailable, $oldprojectforbreak, $TWeek);
//var_dump('ret with parent='.$lines[$i]->id.' level='.$level); //var_dump('ret with parent='.$lines[$i]->id.' level='.$level);
//var_dump($ret); //var_dump($ret);
foreach($ret as $key => $val) foreach ($ret as $key => $val)
{ {
$totalforeachweek[$key]+=$val; $totalforeachweek[$key] += $val;
} }
//var_dump('totalforeachday after taskid='.$lines[$i]->id.' and previous one on level '.$level.' + subtasks'); //var_dump('totalforeachday after taskid='.$lines[$i]->id.' and previous one on level '.$level.' + subtasks');
//var_dump($totalforeachday); //var_dump($totalforeachday);
@ -2202,8 +2202,8 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
print '<td class="right">'; print '<td class="right">';
// Because color of prospection status has no meaning yet, it is used if hidden constant is set // Because color of prospection status has no meaning yet, it is used if hidden constant is set
if (empty($conf->global->USE_COLOR_FOR_PROSPECTION_STATUS)) { if (empty($conf->global->USE_COLOR_FOR_PROSPECTION_STATUS)) {
if ($langs->trans("OppStatus" . $oppStatusCode) != "OppStatus" . $oppStatusCode) { if ($langs->trans("OppStatus".$oppStatusCode) != "OppStatus".$oppStatusCode) {
print $langs->trans("OppStatus" . $oppStatusCode); print $langs->trans("OppStatus".$oppStatusCode);
} }
} else { } else {
if (isset($statusOppList[$objp->opp_status])) { if (isset($statusOppList[$objp->opp_status])) {
@ -2215,9 +2215,9 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
} }
if ($oppStatusCode) { if ($oppStatusCode) {
if (!empty($oppStatusColor)) { if (!empty($oppStatusColor)) {
print '<a href="' . dol_buildpath('/projet/list.php?search_opp_status=' . $objp->opp_status, 1) . '" style="display: inline-block; width: 4px; border: 5px solid rgb(' . $oppStatusColor . '); border-radius: 2px;" title="' . $langs->trans("OppStatus" . $oppStatusCode) . '"></a>'; print '<a href="'.dol_buildpath('/projet/list.php?search_opp_status='.$objp->opp_status, 1).'" style="display: inline-block; width: 4px; border: 5px solid rgb('.$oppStatusColor.'); border-radius: 2px;" title="'.$langs->trans("OppStatus".$oppStatusCode).'"></a>';
} else { } else {
print '<a href="' . dol_buildpath('/projet/list.php?search_opp_status=' . $objp->opp_status, 1) . '" title="' . $langs->trans("OppStatus".$oppStatusCode) . '">' . $oppStatusCode . '</a>'; print '<a href="'.dol_buildpath('/projet/list.php?search_opp_status='.$objp->opp_status, 1).'" title="'.$langs->trans("OppStatus".$oppStatusCode).'">'.$oppStatusCode.'</a>';
} }
} }
} }

View File

@ -239,15 +239,15 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '')
{ {
global $website; global $website;
$content = str_replace('<link rel="stylesheet" href="/styles.css', '<link rel="stylesheet" href="styles.css', $content);
// Protect the link styles.css.php to any replacement that we make after. // Protect the link styles.css.php to any replacement that we make after.
$content = str_replace('href="styles.css.php', 'href="!~!~!~styles.css.php', $content); $content = str_replace('href="styles.css.php', 'href="!~!~!~styles.css.php', $content);
$content = str_replace('href="http', 'href="!~!~!~http', $content); $content = str_replace('href="http', 'href="!~!~!~http', $content);
$content = str_replace('href="//', 'href="!~!~!~//', $content); $content = str_replace('href="//', 'href="!~!~!~//', $content);
$content = str_replace('src="viewimage.php', 'src="!~!~!~/viewimage.php', $content); $content = str_replace(array('src="viewimage.php', 'src="/viewimage.php'), 'src="!~!~!~/viewimage.php', $content);
$content = str_replace('src="/viewimage.php', 'src="!~!~!~/viewimage.php', $content);
$content = str_replace('src="'.DOL_URL_ROOT.'/viewimage.php', 'src="!~!~!~'.DOL_URL_ROOT.'/viewimage.php', $content); $content = str_replace('src="'.DOL_URL_ROOT.'/viewimage.php', 'src="!~!~!~'.DOL_URL_ROOT.'/viewimage.php', $content);
$content = str_replace('href="document.php', 'href="!~!~!~/document.php', $content); $content = str_replace(array('href="document.php','href="/document.php'), 'href="!~!~!~/document.php', $content);
$content = str_replace('href="/document.php', 'href="!~!~!~/document.php', $content);
$content = str_replace('href="'.DOL_URL_ROOT.'/document.php', 'href="!~!~!~'.DOL_URL_ROOT.'/document.php', $content); $content = str_replace('href="'.DOL_URL_ROOT.'/document.php', 'href="!~!~!~'.DOL_URL_ROOT.'/document.php', $content);
// Replace relative link / with dolibarr URL: ...href="/"... // Replace relative link / with dolibarr URL: ...href="/"...
@ -286,6 +286,7 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '')
// Fix relative URL // Fix relative URL
$content = str_replace('src="!~!~!~/viewimage.php', 'src="!~!~!~'.DOL_URL_ROOT.'/viewimage.php', $content); $content = str_replace('src="!~!~!~/viewimage.php', 'src="!~!~!~'.DOL_URL_ROOT.'/viewimage.php', $content);
$content = str_replace('href="!~!~!~/document.php', 'href="!~!~!~'.DOL_URL_ROOT.'/document.php', $content); $content = str_replace('href="!~!~!~/document.php', 'href="!~!~!~'.DOL_URL_ROOT.'/document.php', $content);
// Remove the protection tag !~!~!~ // Remove the protection tag !~!~!~
$content = str_replace('!~!~!~', '', $content); $content = str_replace('!~!~!~', '', $content);
} }

View File

@ -55,6 +55,7 @@ function dolSaveMasterFile($filemaster)
* @param Website $object Object website * @param Website $object Object website
* @param WebsitePage $objectpage Object websitepage * @param WebsitePage $objectpage Object websitepage
* @return boolean True if OK * @return boolean True if OK
* @see dolSavePageContent()
*/ */
function dolSavePageAlias($filealias, $object, $objectpage) function dolSavePageAlias($filealias, $object, $objectpage)
{ {
@ -74,6 +75,24 @@ function dolSavePageAlias($filealias, $object, $objectpage)
@chmod($filealias, octdec($conf->global->MAIN_UMASK)); @chmod($filealias, octdec($conf->global->MAIN_UMASK));
} }
// Save also alias into language subdirectory if we have to
if ($objectpage->lang && in_array($objectpage->lang, explode(',', $object->otherlang))) {
$dirname = dirname($filealias);
$filename = basename($filealias);
$filealias = $dirname.'/'.$objectpage->lang.'/'.$filename;
$aliascontent = '<?php'."\n";
$aliascontent .= "// File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page\n";
$aliascontent .= 'global $dolibarr_main_data_root;'."\n";
$aliascontent .= 'if (empty($dolibarr_main_data_root)) require \'../page'.$objectpage->id.'.tpl.php\'; ';
$aliascontent .= 'else require $dolibarr_main_data_root.\'/website/\'.$website->ref.\'/page'.$objectpage->id.'.tpl.php\';'."\n";
$aliascontent .= '?>'."\n";
$result = file_put_contents($filealias, $aliascontent);
if (!empty($conf->global->MAIN_UMASK)) {
@chmod($filealias, octdec($conf->global->MAIN_UMASK));
}
}
return ($result ?true:false); return ($result ?true:false);
} }
@ -85,6 +104,7 @@ function dolSavePageAlias($filealias, $object, $objectpage)
* @param Website $object Object website * @param Website $object Object website
* @param WebsitePage $objectpage Object websitepage * @param WebsitePage $objectpage Object websitepage
* @return boolean True if OK * @return boolean True if OK
* @see dolSavePageAlias()
*/ */
function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage) function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
{ {
@ -101,7 +121,10 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
$tplcontent = ''; $tplcontent = '';
$tplcontent .= "<?php // BEGIN PHP\n"; $tplcontent .= "<?php // BEGIN PHP\n";
$tplcontent .= '$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;'."\n"; $tplcontent .= '$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;'."\n";
$tplcontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once './master.inc.php'; } // Not already loaded"."\n"; $tplcontent .= "if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {\n";
$tplcontent .= ' $pathdepth = count(explode(\'/\', $_SERVER[\'SCRIPT_NAME\'])) - 2;'."\n";
$tplcontent .= ' require_once ($pathdepth ? str_repeat(\'../\', $pathdepth) : \'./\').\'master.inc.php\';'."\n";
$tplcontent .= "} // Not already loaded"."\n";
$tplcontent .= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n"; $tplcontent .= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n";
$tplcontent .= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n"; $tplcontent .= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n";
$tplcontent .= "ob_start();\n"; $tplcontent .= "ob_start();\n";
@ -125,7 +148,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
// Add translation reference (main language) // Add translation reference (main language)
if ($object->isMultiLang()) { if ($object->isMultiLang()) {
// Add myself // Add myself
$tplcontent .= '<link rel="alternate" hreflang="'.$shortlangcode.'" href="'.($object->fk_default_home == $objectpage->id ? '/' : '/'.$objectpage->pageurl.'.php').'" />'."\n"; $tplcontent .= '<link rel="alternate" hreflang="'.$shortlangcode.'" href="'.($object->fk_default_home == $objectpage->id ? '/' : '/'.$shortlangcode.'/'.$objectpage->pageurl.'.php').'" />'."\n";
// Add page "translation of" // Add page "translation of"
$translationof = $objectpage->fk_page; $translationof = $objectpage->fk_page;
if ($translationof) { if ($translationof) {
@ -135,7 +158,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
$tmpshortlangcode = ''; $tmpshortlangcode = '';
if ($tmppage->lang) $tmpshortlangcode = preg_replace('/[_-].*$/', '', $tmppage->lang); // en_US or en-US -> en if ($tmppage->lang) $tmpshortlangcode = preg_replace('/[_-].*$/', '', $tmppage->lang); // en_US or en-US -> en
if ($tmpshortlangcode != $shortlangcode) { if ($tmpshortlangcode != $shortlangcode) {
$tplcontent .= '<link rel="alternate" hreflang="'.$tmpshortlangcode.'" href="'.($object->fk_default_home == $tmppage->id ? '/' : '/'.$tmppage->pageurl.'.php').'" />'."\n"; $tplcontent .= '<link rel="alternate" hreflang="'.$tmpshortlangcode.'" href="'.($object->fk_default_home == $tmppage->id ? '/' : '/'.$tmpshortlangcode.'/'.$tmppage->pageurl.'.php').'" />'."\n";
} }
} }
} }
@ -152,7 +175,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
$tmpshortlangcode = ''; $tmpshortlangcode = '';
if ($obj->lang) $tmpshortlangcode = preg_replace('/[_-].*$/', '', $obj->lang); // en_US or en-US -> en if ($obj->lang) $tmpshortlangcode = preg_replace('/[_-].*$/', '', $obj->lang); // en_US or en-US -> en
if ($tmpshortlangcode != $shortlangcode) { if ($tmpshortlangcode != $shortlangcode) {
$tplcontent .= '<link rel="alternate" hreflang="'.$tmpshortlangcode.'" href="'.($object->fk_default_home == $obj->id ? '/' : '/'.$obj->pageurl.'.php').'" />'."\n"; $tplcontent .= '<link rel="alternate" hreflang="'.$tmpshortlangcode.'" href="'.($object->fk_default_home == $obj->id ? '/' : '/'.$tmpshortlangcode.'/'.$obj->pageurl.'.php').'" />'."\n";
} }
} }
} }
@ -160,11 +183,11 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
else dol_print_error($db); else dol_print_error($db);
} }
// Add canonical reference // Add canonical reference
$tplcontent .= '<link href="/'.(($objectpage->id == $object->fk_default_home) ? '' : ($objectpage->pageurl.'.php')).'" rel="canonical" />'."\n"; $tplcontent .= '<link href="/'.(($objectpage->id == $object->fk_default_home) ? '' : $shortlangcode.'/'.($objectpage->pageurl.'.php')).'" rel="canonical" />'."\n";
// Add manifest.json on homepage // Add manifest.json on homepage
$tplcontent .= '<?php if ($website->use_manifest) { print \'<link rel="manifest" href="/manifest.json.php" />\'."\n"; } ?>'."\n"; $tplcontent .= '<?php if ($website->use_manifest) { print \'<link rel="manifest" href="/manifest.json.php" />\'."\n"; } ?>'."\n";
$tplcontent .= '<!-- Include link to CSS file -->'."\n"; $tplcontent .= '<!-- Include link to CSS file -->'."\n";
$tplcontent .= '<link rel="stylesheet" href="styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />'."\n"; $tplcontent .= '<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />'."\n";
$tplcontent .= '<!-- Include HTML header from common file -->'."\n"; $tplcontent .= '<!-- Include HTML header from common file -->'."\n";
$tplcontent .= '<?php print preg_replace(\'/<\/?html>/ims\', \'\', file_get_contents(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")); ?>'."\n"; $tplcontent .= '<?php print preg_replace(\'/<\/?html>/ims\', \'\', file_get_contents(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")); ?>'."\n";
$tplcontent .= '<!-- Include HTML header from page header block -->'."\n"; $tplcontent .= '<!-- Include HTML header from page header block -->'."\n";

View File

@ -1315,27 +1315,27 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R');
} }
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE)) if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->title)?'':$object->projet->title), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R');
} }
} }
if (! empty($conf->global->PDF_SHOW_PROJECT)) if (!empty($conf->global->PDF_SHOW_PROJECT))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->projet->ref), '', 'R');
} }
} }

View File

@ -621,7 +621,7 @@ class pdf_eratosthene extends ModelePDFCommandes
{ {
// We found a page break // We found a page break
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -1475,27 +1475,27 @@ class pdf_eratosthene extends ModelePDFCommandes
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R');
} }
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE)) if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->title)?'':$object->projet->title), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R');
} }
} }
if (! empty($conf->global->PDF_SHOW_PROJECT)) if (!empty($conf->global->PDF_SHOW_PROJECT))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->projet->ref), '', 'R');
} }
} }

View File

@ -185,7 +185,7 @@ class doc_generic_contract_odt extends ModelePDFContract
/** /**
* Function to build a document on disk using the generic odt module. * Function to build a document on disk using the generic odt module.
* *
* @param Contract $object Object source to build document * @param Contrat $object Object source to build document
* @param Translate $outputlangs Lang output object * @param Translate $outputlangs Lang output object
* @param string $srctemplatepath Full path of source filename for generator using a template file * @param string $srctemplatepath Full path of source filename for generator using a template file
* @param int $hidedetails Do not show line details * @param int $hidedetails Do not show line details

View File

@ -42,7 +42,7 @@ class html_cerfafr extends ModeleDon
*/ */
public function __construct($db) public function __construct($db)
{ {
global $conf,$langs; global $conf, $langs;
$this->db = $db; $this->db = $db;
$this->name = "cerfafr"; $this->name = "cerfafr";
@ -76,46 +76,46 @@ class html_cerfafr extends ModeleDon
public function write_file($don, $outputlangs, $currency = '') public function write_file($don, $outputlangs, $currency = '')
{ {
// phpcs:enable // phpcs:enable
global $user,$conf,$langs,$mysoc; global $user, $conf, $langs, $mysoc;
$now=dol_now(); $now = dol_now();
$id = (! is_object($don)?$don:''); $id = (!is_object($don) ? $don : '');
if (! is_object($outputlangs)) $outputlangs=$langs; if (!is_object($outputlangs)) $outputlangs = $langs;
// Load traductions files required by page // Load traductions files required by page
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "donations")); $outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "donations"));
$currency = !empty($currency) ? $currency : $conf->currency; $currency = !empty($currency) ? $currency : $conf->currency;
if (! empty($conf->don->dir_output)) if (!empty($conf->don->dir_output))
{ {
// Definition of the object don (for upward compatibility) // Definition of the object don (for upward compatibility)
if (! is_object($don)) if (!is_object($don))
{ {
$don = new Don($this->db); $don = new Don($this->db);
$ret=$don->fetch($id); $ret = $don->fetch($id);
$id=$don->id; $id = $don->id;
} }
// Definition of $dir and $file // Definition of $dir and $file
if (! empty($don->specimen)) if (!empty($don->specimen))
{ {
$dir = $conf->don->dir_output; $dir = $conf->don->dir_output;
$file = $dir . "/SPECIMEN.html"; $file = $dir."/SPECIMEN.html";
} }
else else
{ {
$donref = dol_sanitizeFileName($don->ref); $donref = dol_sanitizeFileName($don->ref);
$dir = $conf->don->dir_output . "/" . $donref; $dir = $conf->don->dir_output."/".$donref;
$file = $dir . "/" . $donref . ".html"; $file = $dir."/".$donref.".html";
} }
if (! file_exists($dir)) if (!file_exists($dir))
{ {
if (dol_mkdir($dir) < 0) if (dol_mkdir($dir) < 0)
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir", $dir); $this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
return -1; return -1;
} }
} }
@ -133,13 +133,13 @@ class html_cerfafr extends ModeleDon
} }
else $paymentmode = ''; else $paymentmode = '';
if ($don->modepaymentcode=='CHQ'){ if ($don->modepaymentcode == 'CHQ') {
$ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox" disabled="true" checked="checked"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>'; $ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox" disabled="true" checked="checked"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>';
} }
elseif ($don->modepaymentcode=='LIQ'){ elseif ($don->modepaymentcode == 'LIQ') {
$ModePaiement = '<td width="25%"><input type="checkbox" checked="checked"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>'; $ModePaiement = '<td width="25%"><input type="checkbox" checked="checked"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox"> Virement, prélèvement, carte bancaire</td>';
} }
elseif ($don->modepaymentcode=='VIR' || $don->modepaymentcode=='PRE' || $don->modepaymentcode=='CB'){ elseif ($don->modepaymentcode == 'VIR' || $don->modepaymentcode == 'PRE' || $don->modepaymentcode == 'CB') {
$ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox" checked="checked"> Virement, prélèvement, carte bancaire</td>'; $ModePaiement = '<td width="25%"><input type="checkbox"> Remise d\'espèces</td><td width="25%"><input type="checkbox"> Chèque</td><td width="50%"><input type="checkbox" checked="checked"> Virement, prélèvement, carte bancaire</td>';
} }
else else
@ -159,7 +159,7 @@ class html_cerfafr extends ModeleDon
*/ */
// Define contents // Define contents
$donmodel=DOL_DOCUMENT_ROOT ."/core/modules/dons/html_cerfafr.html"; $donmodel = DOL_DOCUMENT_ROOT."/core/modules/dons/html_cerfafr.html";
$form = implode('', file($donmodel)); $form = implode('', file($donmodel));
$form = str_replace('__REF__', $don->id, $form); $form = str_replace('__REF__', $don->id, $form);
$form = str_replace('__DATE__', dol_print_date($don->date, 'day', false, $outputlangs), $form); $form = str_replace('__DATE__', dol_print_date($don->date, 'day', false, $outputlangs), $form);
@ -203,59 +203,59 @@ class html_cerfafr extends ModeleDon
$form = str_replace('__ModePaiement__', $ModePaiement, $form); $form = str_replace('__ModePaiement__', $ModePaiement, $form);
$frencharticle=''; $frencharticle = '';
if (preg_match('/fr/i', $outputlangs->defaultlang)) $frencharticle='<font size="+1">Article 200, 238 bis et 978 du code général des impôts (CGI)</font>'; if (preg_match('/fr/i', $outputlangs->defaultlang)) $frencharticle = '<font size="+1">Article 200, 238 bis et 978 du code général des impôts (CGI)</font>';
$form = str_replace('__FrenchArticle__', $frencharticle, $form); $form = str_replace('__FrenchArticle__', $frencharticle, $form);
$frencheligibility=''; $frencheligibility = '';
if (preg_match('/fr/i', $outputlangs->defaultlang)) $frencheligibility='Le bénéficiaire certifie sur l\'honneur que les dons et versements qu\'il reçoit ouvrent droit à la réduction d\'impôt prévue à l\'article :'; if (preg_match('/fr/i', $outputlangs->defaultlang)) $frencheligibility = 'Le bénéficiaire certifie sur l\'honneur que les dons et versements qu\'il reçoit ouvrent droit à la réduction d\'impôt prévue à l\'article :';
$form = str_replace('__FrenchEligibility__', $frencheligibility, $form); $form = str_replace('__FrenchEligibility__', $frencheligibility, $form);
$art200=''; $art200 = '';
if (preg_match('/fr/i', $outputlangs->defaultlang)) { if (preg_match('/fr/i', $outputlangs->defaultlang)) {
if ($conf->global->DONATION_ART200 >= 1) if ($conf->global->DONATION_ART200 >= 1)
{ {
$art200='<input type="checkbox" disabled="true" checked="checked" >200 du CGI'; $art200 = '<input type="checkbox" disabled="true" checked="checked" >200 du CGI';
} }
else else
{ {
$art200='<input type="checkbox" disabled="true">200 du CGI'; $art200 = '<input type="checkbox" disabled="true">200 du CGI';
} }
} }
$form = str_replace('__ARTICLE200__', $art200, $form); $form = str_replace('__ARTICLE200__', $art200, $form);
$art238=''; $art238 = '';
if (preg_match('/fr/i', $outputlangs->defaultlang)) { if (preg_match('/fr/i', $outputlangs->defaultlang)) {
if ($conf->global->DONATION_ART238 >= 1) if ($conf->global->DONATION_ART238 >= 1)
{ {
$art238='<input type="checkbox" disabled="true" checked="checked" >238 bis du CGI'; $art238 = '<input type="checkbox" disabled="true" checked="checked" >238 bis du CGI';
} }
else else
{ {
$art238='<input type="checkbox" disabled="true">238 bis du CGI'; $art238 = '<input type="checkbox" disabled="true">238 bis du CGI';
} }
} }
$form = str_replace('__ARTICLE238__', $art238, $form); $form = str_replace('__ARTICLE238__', $art238, $form);
$art978=''; $art978 = '';
if (preg_match('/fr/i', $outputlangs->defaultlang)) { if (preg_match('/fr/i', $outputlangs->defaultlang)) {
if ($conf->global->DONATION_ART978 >= 1) if ($conf->global->DONATION_ART978 >= 1)
{ {
$art978='<input type="checkbox" disabled="true" checked="checked" >978 du CGI'; $art978 = '<input type="checkbox" disabled="true" checked="checked" >978 du CGI';
} }
else else
{ {
$art978='<input type="checkbox" disabled="true">978 du CGI'; $art978 = '<input type="checkbox" disabled="true">978 du CGI';
} }
} }
$form = str_replace('__ARTICLE978__', $art978, $form); $form = str_replace('__ARTICLE978__', $art978, $form);
// Save file on disk // Save file on disk
dol_syslog("html_cerfafr::write_file $file"); dol_syslog("html_cerfafr::write_file $file");
$handle=fopen($file, "w"); $handle = fopen($file, "w");
fwrite($handle, $form); fwrite($handle, $form);
fclose($handle); fclose($handle);
if (! empty($conf->global->MAIN_UMASK)) if (!empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK)); @chmod($file, octdec($conf->global->MAIN_UMASK));
$this->result = array('fullpath'=>$file); $this->result = array('fullpath'=>$file);
@ -264,13 +264,13 @@ class html_cerfafr extends ModeleDon
} }
else else
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir", $dir); $this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
return 0; return 0;
} }
} }
else else
{ {
$this->error=$langs->trans("ErrorConstantNotDefined", "DON_OUTPUTDIR"); $this->error = $langs->trans("ErrorConstantNotDefined", "DON_OUTPUTDIR");
return 0; return 0;
} }
} }
@ -288,147 +288,147 @@ class html_cerfafr extends ModeleDon
$unite = array(); $unite = array();
$dix = array(); $dix = array();
$cent = array(); $cent = array();
if(empty($devise1)) $dev1='euros'; if (empty($devise1)) $dev1 = 'euros';
else $dev1=$devise1; else $dev1 = $devise1;
if(empty($devise2)) $dev2='centimes'; if (empty($devise2)) $dev2 = 'centimes';
else $dev2=$devise2; else $dev2 = $devise2;
$valeur_entiere=intval($montant); $valeur_entiere = intval($montant);
$valeur_decimal=intval(round($montant-intval($montant), 2)*100); $valeur_decimal = intval(round($montant - intval($montant), 2) * 100);
$dix_c=intval($valeur_decimal%100/10); $dix_c = intval($valeur_decimal % 100 / 10);
$cent_c=intval($valeur_decimal%1000/100); $cent_c = intval($valeur_decimal % 1000 / 100);
$unite[1]=$valeur_entiere%10; $unite[1] = $valeur_entiere % 10;
$dix[1]=intval($valeur_entiere%100/10); $dix[1] = intval($valeur_entiere % 100 / 10);
$cent[1]=intval($valeur_entiere%1000/100); $cent[1] = intval($valeur_entiere % 1000 / 100);
$unite[2]=intval($valeur_entiere%10000/1000); $unite[2] = intval($valeur_entiere % 10000 / 1000);
$dix[2]=intval($valeur_entiere%100000/10000); $dix[2] = intval($valeur_entiere % 100000 / 10000);
$cent[2]=intval($valeur_entiere%1000000/100000); $cent[2] = intval($valeur_entiere % 1000000 / 100000);
$unite[3]=intval($valeur_entiere%10000000/1000000); $unite[3] = intval($valeur_entiere % 10000000 / 1000000);
$dix[3]=intval($valeur_entiere%100000000/10000000); $dix[3] = intval($valeur_entiere % 100000000 / 10000000);
$cent[3]=intval($valeur_entiere%1000000000/100000000); $cent[3] = intval($valeur_entiere % 1000000000 / 100000000);
$chif=array('', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf', 'dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix sept', 'dix huit', 'dix neuf'); $chif = array('', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf', 'dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix sept', 'dix huit', 'dix neuf');
$secon_c=''; $secon_c = '';
$trio_c=''; $trio_c = '';
for($i=1; $i<=3; $i++) { for ($i = 1; $i <= 3; $i++) {
$prim[$i]=''; $prim[$i] = '';
$secon[$i]=''; $secon[$i] = '';
$trio[$i]=''; $trio[$i] = '';
if ($dix[$i]==0) { if ($dix[$i] == 0) {
$secon[$i]=''; $secon[$i] = '';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
elseif ($dix[$i]==1) { elseif ($dix[$i] == 1) {
$secon[$i]=''; $secon[$i] = '';
$prim[$i]=$chif[($unite[$i]+10)]; $prim[$i] = $chif[($unite[$i] + 10)];
} }
elseif ($dix[$i]==2) { elseif ($dix[$i] == 2) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='vingt et'; $secon[$i] = 'vingt et';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} else { } else {
$secon[$i]='vingt'; $secon[$i] = 'vingt';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
} }
elseif ($dix[$i]==3) { elseif ($dix[$i] == 3) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='trente et'; $secon[$i] = 'trente et';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} else { } else {
$secon[$i]='trente'; $secon[$i] = 'trente';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
} }
elseif ($dix[$i]==4) { elseif ($dix[$i] == 4) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='quarante et'; $secon[$i] = 'quarante et';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
else { else {
$secon[$i]='quarante'; $secon[$i] = 'quarante';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
} }
elseif ($dix[$i]==5) { elseif ($dix[$i] == 5) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='cinquante et'; $secon[$i] = 'cinquante et';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
else { else {
$secon[$i]='cinquante'; $secon[$i] = 'cinquante';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
} }
elseif ($dix[$i]==6) { elseif ($dix[$i] == 6) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='soixante et'; $secon[$i] = 'soixante et';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
else { else {
$secon[$i]='soixante'; $secon[$i] = 'soixante';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
} }
elseif ($dix[$i]==7) { elseif ($dix[$i] == 7) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='soixante et'; $secon[$i] = 'soixante et';
$prim[$i]=$chif[$unite[$i]+10]; $prim[$i] = $chif[$unite[$i] + 10];
} }
else { else {
$secon[$i]='soixante'; $secon[$i] = 'soixante';
$prim[$i]=$chif[$unite[$i]+10]; $prim[$i] = $chif[$unite[$i] + 10];
} }
} }
elseif ($dix[$i]==8) { elseif ($dix[$i] == 8) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='quatre-vingts et'; $secon[$i] = 'quatre-vingts et';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
else { else {
$secon[$i]='quatre-vingt'; $secon[$i] = 'quatre-vingt';
$prim[$i]=$chif[$unite[$i]]; $prim[$i] = $chif[$unite[$i]];
} }
} }
elseif ($dix[$i]==9) { elseif ($dix[$i] == 9) {
if ($unite[$i]==1) { if ($unite[$i] == 1) {
$secon[$i]='quatre-vingts et'; $secon[$i] = 'quatre-vingts et';
$prim[$i]=$chif[$unite[$i]+10]; $prim[$i] = $chif[$unite[$i] + 10];
} }
else { else {
$secon[$i]='quatre-vingts'; $secon[$i] = 'quatre-vingts';
$prim[$i]=$chif[$unite[$i]+10]; $prim[$i] = $chif[$unite[$i] + 10];
} }
} }
if($cent[$i]==1) $trio[$i]='cent'; if ($cent[$i] == 1) $trio[$i] = 'cent';
elseif($cent[$i]!=0 || $cent[$i]!='') $trio[$i]=$chif[$cent[$i]] .' cents'; elseif ($cent[$i] != 0 || $cent[$i] != '') $trio[$i] = $chif[$cent[$i]].' cents';
} }
$chif2=array('', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingts', 'quatre-vingts dix'); $chif2 = array('', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingts', 'quatre-vingts dix');
$secon_c=$chif2[$dix_c]; $secon_c = $chif2[$dix_c];
if ($cent_c==1) $trio_c='cent'; if ($cent_c == 1) $trio_c = 'cent';
elseif ($cent_c!=0 || $cent_c!='') $trio_c=$chif[$cent_c] .' cents'; elseif ($cent_c != 0 || $cent_c != '') $trio_c = $chif[$cent_c].' cents';
if (($cent[3]==0 || $cent[3]=='') && ($dix[3]==0 || $dix[3]=='') && ($unite[3]==1)) if (($cent[3] == 0 || $cent[3] == '') && ($dix[3] == 0 || $dix[3] == '') && ($unite[3] == 1))
$somme = $trio[3]. ' ' .$secon[3]. ' ' . $prim[3]. ' million '; $somme = $trio[3].' '.$secon[3].' '.$prim[3].' million ';
elseif (($cent[3]!=0 && $cent[3]!='') || ($dix[3]!=0 && $dix[3]!='') || ($unite[3]!=0 && $unite[3]!='')) elseif (($cent[3] != 0 && $cent[3] != '') || ($dix[3] != 0 && $dix[3] != '') || ($unite[3] != 0 && $unite[3] != ''))
$somme = $trio[3]. ' ' .$secon[3]. ' ' . $prim[3]. ' millions '; $somme = $trio[3].' '.$secon[3].' '.$prim[3].' millions ';
else else
$somme = $trio[3]. ' ' .$secon[3]. ' ' . $prim[3]; $somme = $trio[3].' '.$secon[3].' '.$prim[3];
if (($cent[2]==0 || $cent[2]=='') && ($dix[2]==0 || $dix[2]=='') && ($unite[2]==1)) if (($cent[2] == 0 || $cent[2] == '') && ($dix[2] == 0 || $dix[2] == '') && ($unite[2] == 1))
$somme = $somme.' mille '; $somme = $somme.' mille ';
elseif (($cent[2]!=0 && $cent[2]!='') || ($dix[2]!=0 && $dix[2]!='') || ($unite[2]!=0 && $unite[2]!='')) elseif (($cent[2] != 0 && $cent[2] != '') || ($dix[2] != 0 && $dix[2] != '') || ($unite[2] != 0 && $unite[2] != ''))
$somme = $somme. $trio[2]. ' ' .$secon[2]. ' ' . $prim[2]. ' milles '; $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2].' milles ';
else else
$somme = $somme. $trio[2]. ' ' .$secon[2]. ' ' . $prim[2]; $somme = $somme.$trio[2].' '.$secon[2].' '.$prim[2];
$somme = $somme. $trio[1]. ' ' .$secon[1]. ' ' . $prim[1]; $somme = $somme.$trio[1].' '.$secon[1].' '.$prim[1];
$somme = $somme. ' '. $dev1 .' ' ; $somme = $somme.' '.$dev1.' ';
if (($cent_c=='0' || $cent_c=='') && ($dix_c=='0' || $dix_c=='')) if (($cent_c == '0' || $cent_c == '') && ($dix_c == '0' || $dix_c == ''))
return $somme. ' et z&eacute;ro '. $dev2; return $somme.' et z&eacute;ro '.$dev2;
else else
return $somme. $trio_c. ' ' .$secon_c. ' ' . $dev2; return $somme.$trio_c.' '.$secon_c.' '.$dev2;
} }
} }

View File

@ -41,7 +41,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures
{ {
/** /**
* Issuer * Issuer
* @var Company object that emits * @var Societe Object that emits
*/ */
public $emetteur; public $emetteur;

View File

@ -494,7 +494,7 @@ class pdf_crabe extends ModelePDFFactures
$curY = $tab_top_newpage; $curY = $tab_top_newpage;
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -539,7 +539,7 @@ class pdf_crabe extends ModelePDFFactures
// We found a page break // We found a page break
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -1051,15 +1051,15 @@ class pdf_crabe extends ModelePDFFactures
$pdf->MultiCell(80, 5, $lib_mode_reg, 0, 'L'); $pdf->MultiCell(80, 5, $lib_mode_reg, 0, 'L');
// Show online payment link // Show online payment link
$useonlinepayment = ((! empty($conf->paypal->enabled) || ! empty($conf->stripe->enabled) || ! empty($conf->paybox->enabled)) && !empty($conf->global->PDF_SHOW_LINK_TO_ONLINE_PAYMENT)); $useonlinepayment = ((!empty($conf->paypal->enabled) || !empty($conf->stripe->enabled) || !empty($conf->paybox->enabled)) && !empty($conf->global->PDF_SHOW_LINK_TO_ONLINE_PAYMENT));
if (($object->mode_reglement_code == 'CB' || $object->mode_reglement_code == 'VAD') && $object->statut != Facture::STATUS_DRAFT && $useonlinepayment) { if (($object->mode_reglement_code == 'CB' || $object->mode_reglement_code == 'VAD') && $object->statut != Facture::STATUS_DRAFT && $useonlinepayment) {
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
global $langs; global $langs;
$langs->loadLangs(array('payment', 'paybox')); $langs->loadLangs(array('payment', 'paybox'));
$servicename=$langs->transnoentities('Online'); $servicename = $langs->transnoentities('Online');
$paiement_url = getOnlinePaymentUrl('', 'invoice', $object->ref, '', '', ''); $paiement_url = getOnlinePaymentUrl('', 'invoice', $object->ref, '', '', '');
$linktopay = $langs->trans("ToOfferALinkForOnlinePayment", $servicename).' <a href="'.$paiement_url.'">'.$outputlangs->transnoentities("ClickHere").'</a>'; $linktopay = $langs->trans("ToOfferALinkForOnlinePayment", $servicename).' <a href="'.$paiement_url.'">'.$outputlangs->transnoentities("ClickHere").'</a>';
$pdf->writeHTMLCell(80, 10, '', '', dol_htmlentitiesbr($linktopay), 0, 1); $pdf->writeHTMLCell(80, 10, '', '', dol_htmlentitiesbr($linktopay), 0, 1);
} }
@ -1707,27 +1707,27 @@ class pdf_crabe extends ModelePDFFactures
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R');
} }
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE)) if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->title)?'':$object->projet->title), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R');
} }
} }
if (! empty($conf->global->PDF_SHOW_PROJECT)) if (!empty($conf->global->PDF_SHOW_PROJECT))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->projet->ref), '', 'R');
} }
} }

View File

@ -1963,27 +1963,27 @@ class pdf_sponge extends ModelePDFFactures
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R');
} }
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE)) if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->title)?'':$object->projet->title), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R');
} }
} }
if (! empty($conf->global->PDF_SHOW_PROJECT)) if (!empty($conf->global->PDF_SHOW_PROJECT))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->projet->ref), '', 'R');
} }
} }

View File

@ -108,7 +108,7 @@ class pdf_soleil extends ModelePDFFicheinter
/** /**
* Issuer * Issuer
* @var Company object that emits * @var Societe Object that emits
*/ */
public $emetteur; public $emetteur;

View File

@ -46,7 +46,7 @@ class mod_arctic extends ModeleNumRefFicheinter
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom = 'arctic'; public $nom = 'arctic';

View File

@ -46,7 +46,7 @@ class mod_pacific extends ModeleNumRefFicheinter
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='pacific'; public $nom='pacific';

View File

@ -107,7 +107,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
/** /**
* Issuer * Issuer
* @var Company object that emits * @var Societe Object that emits
*/ */
public $emetteur; public $emetteur;

View File

@ -24,7 +24,7 @@
* \ingroup category * \ingroup category
* \brief Fichier de description et activation du module Categorie * \brief Fichier de description et activation du module Categorie
*/ */
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
/** /**
@ -64,11 +64,11 @@ class modCategorie extends DolibarrModules
// Config pages // Config pages
$this->config_page_url = array('categorie.php@categories'); $this->config_page_url = array('categorie.php@categories');
$this->langfiles = array("products","companies","categories","members"); $this->langfiles = array("products", "companies", "categories", "members");
// Constants // Constants
$this->const = array(); $this->const = array();
$r=0; $r = 0;
$this->const[$r][0] = "CATEGORIE_RECURSIV_ADD"; $this->const[$r][0] = "CATEGORIE_RECURSIV_ADD";
$this->const[$r][1] = "yesno"; $this->const[$r][1] = "yesno";
$this->const[$r][2] = "0"; $this->const[$r][2] = "0";
@ -83,7 +83,7 @@ class modCategorie extends DolibarrModules
$this->rights = array(); $this->rights = array();
$this->rights_class = 'categorie'; $this->rights_class = 'categorie';
$r=0; $r = 0;
$this->rights[$r][0] = 241; // id de la permission $this->rights[$r][0] = 241; // id de la permission
$this->rights[$r][1] = 'Lire les categories'; // libelle de la permission $this->rights[$r][1] = 'Lire les categories'; // libelle de la permission
@ -109,115 +109,115 @@ class modCategorie extends DolibarrModules
// Menus // Menus
//------- //-------
$this->menu = 1; // This module add menu entries. They are coded into menu manager. $this->menu = 1; // This module add menu entries. They are coded into menu manager.
// Exports // Exports
//-------- //--------
$r=0; $r = 0;
$r++; $r++;
$this->export_code[$r]='category_'.$r; $this->export_code[$r] = 'category_'.$r;
$this->export_label[$r]='CatSupList'; $this->export_label[$r] = 'CatSupList';
$this->export_icon[$r]='category'; $this->export_icon[$r] = 'category';
$this->export_enabled[$r]='$conf->fournisseur->enabled'; $this->export_enabled[$r] = '$conf->fournisseur->enabled';
$this->export_permission[$r]=array(array("categorie","lire"),array("fournisseur","lire")); $this->export_permission[$r] = array(array("categorie", "lire"), array("fournisseur", "lire"));
$this->export_fields_array[$r]=array( $this->export_fields_array[$r] = array(
'u.rowid'=>"CategId",'u.label'=>"Label",'u.description'=>"Description",'s.rowid'=>'IdThirdParty','s.nom'=>'Name','s.prefix_comm'=>"Prefix", 'u.rowid'=>"CategId", 'u.label'=>"Label", 'u.description'=>"Description", 's.rowid'=>'IdThirdParty', 's.nom'=>'Name', 's.prefix_comm'=>"Prefix",
's.client'=>"Customer",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.address'=>"Address", 's.client'=>"Customer", 's.datec'=>"DateCreation", 's.tms'=>"DateLastModification", 's.code_client'=>"CustomerCode", 's.address'=>"Address",
's.zip'=>"Zip",'s.town'=>"Town",'c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email", 's.zip'=>"Zip", 's.town'=>"Town", 'c.label'=>"Country", 'c.code'=>"CountryCode", 's.phone'=>"Phone", 's.fax'=>"Fax", 's.url'=>"Url", 's.email'=>"Email",
's.siret'=>"ProfId1",'s.siren'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital", 's.siret'=>"ProfId1", 's.siren'=>"ProfId2", 's.ape'=>"ProfId3", 's.idprof4'=>"ProfId4", 's.tva_intra'=>"VATIntraShort", 's.capital'=>"Capital",
's.note_public'=>"NotePublic" 's.note_public'=>"NotePublic"
); );
$this->export_TypeFields_array[$r]=array( $this->export_TypeFields_array[$r] = array(
'u.label'=>"Text",'u.description'=>"Text",'s.rowid'=>'List:societe:nom','s.nom'=>'Text','s.prefix_comm'=>"Text",'s.client'=>"Text",'s.datec'=>"Date", 'u.label'=>"Text", 'u.description'=>"Text", 's.rowid'=>'List:societe:nom', 's.nom'=>'Text', 's.prefix_comm'=>"Text", 's.client'=>"Text", 's.datec'=>"Date",
's.tms'=>"Date",'s.code_client'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text", 's.tms'=>"Date", 's.code_client'=>"Text", 's.address'=>"Text", 's.zip'=>"Text", 's.town'=>"Text", 'c.label'=>"List:c_country:label:label", 'c.code'=>"Text",
's.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text", 's.phone'=>"Text", 's.fax'=>"Text", 's.url'=>"Text", 's.email'=>"Text", 's.siret'=>"Text", 's.siren'=>"Text", 's.ape'=>"Text", 's.idprof4'=>"Text",
's.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_public'=>"Text" 's.tva_intra'=>"Text", 's.capital'=>"Numeric", 's.note_public'=>"Text"
); );
$this->export_entities_array[$r]=array( $this->export_entities_array[$r] = array(
's.rowid'=>'company','s.nom'=>'company','s.prefix_comm'=>"company",'s.client'=>"company",'s.datec'=>"company",'s.tms'=>"company", 's.rowid'=>'company', 's.nom'=>'company', 's.prefix_comm'=>"company", 's.client'=>"company", 's.datec'=>"company", 's.tms'=>"company",
's.code_client'=>"company",'s.address'=>"company",'s.zip'=>"company",'s.town'=>"company",'c.label'=>"company",'c.code'=>"company", 's.code_client'=>"company", 's.address'=>"company", 's.zip'=>"company", 's.town'=>"company", 'c.label'=>"company", 'c.code'=>"company",
's.phone'=>"company",'s.fax'=>"company",'s.url'=>"company",'s.email'=>"company",'s.siret'=>"company",'s.siren'=>"company",'s.ape'=>"company", 's.phone'=>"company", 's.fax'=>"company", 's.url'=>"company", 's.email'=>"company", 's.siret'=>"company", 's.siren'=>"company", 's.ape'=>"company",
's.idprof4'=>"company",'s.tva_intra'=>"company",'s.capital'=>"company",'s.note_public'=>"company" 's.idprof4'=>"company", 's.tva_intra'=>"company", 's.capital'=>"company", 's.note_public'=>"company"
); // We define here only fields that use another picto ); // We define here only fields that use another picto
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'categorie as u, ';
$this->export_sql_end[$r] .= MAIN_DB_PREFIX.'categorie_fournisseur as cf, '; $this->export_sql_end[$r] .= MAIN_DB_PREFIX.'categorie_fournisseur as cf, ';
$this->export_sql_end[$r] .= MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code'; $this->export_sql_end[$r] .= MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code';
$this->export_sql_end[$r] .=' WHERE u.rowid = cf.fk_categorie AND cf.fk_soc = s.rowid'; $this->export_sql_end[$r] .= ' WHERE u.rowid = cf.fk_categorie AND cf.fk_soc = s.rowid';
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category').')'; $this->export_sql_end[$r] .= ' AND u.entity IN ('.getEntity('category').')';
$this->export_sql_end[$r] .=' AND u.type = 1'; // Supplier categories $this->export_sql_end[$r] .= ' AND u.type = 1'; // Supplier categories
$r++; $r++;
$this->export_code[$r]='category_'.$r; $this->export_code[$r] = 'category_'.$r;
$this->export_label[$r]='CatCusList'; $this->export_label[$r] = 'CatCusList';
$this->export_icon[$r]='category'; $this->export_icon[$r] = 'category';
$this->export_enabled[$r]='$conf->societe->enabled'; $this->export_enabled[$r] = '$conf->societe->enabled';
$this->export_permission[$r]=array(array("categorie","lire"),array("societe","lire")); $this->export_permission[$r] = array(array("categorie", "lire"), array("societe", "lire"));
$this->export_fields_array[$r]=array( $this->export_fields_array[$r] = array(
'u.rowid'=>"CategId",'u.label'=>"Label",'u.description'=>"Description",'s.rowid'=>'IdThirdParty','s.nom'=>'Name','s.prefix_comm'=>"Prefix", 'u.rowid'=>"CategId", 'u.label'=>"Label", 'u.description'=>"Description", 's.rowid'=>'IdThirdParty', 's.nom'=>'Name', 's.prefix_comm'=>"Prefix",
's.client'=>"Customer",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.address'=>"Address", 's.client'=>"Customer", 's.datec'=>"DateCreation", 's.tms'=>"DateLastModification", 's.code_client'=>"CustomerCode", 's.address'=>"Address",
's.zip'=>"Zip",'s.town'=>"Town",'c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email", 's.zip'=>"Zip", 's.town'=>"Town", 'c.label'=>"Country", 'c.code'=>"CountryCode", 's.phone'=>"Phone", 's.fax'=>"Fax", 's.url'=>"Url", 's.email'=>"Email",
's.siret'=>"ProfId1",'s.siren'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital", 's.siret'=>"ProfId1", 's.siren'=>"ProfId2", 's.ape'=>"ProfId3", 's.idprof4'=>"ProfId4", 's.tva_intra'=>"VATIntraShort", 's.capital'=>"Capital",
's.note_public'=>"NotePublic",'s.fk_prospectlevel'=>'ProspectLevel','s.fk_stcomm'=>'ProspectStatus' 's.note_public'=>"NotePublic", 's.fk_prospectlevel'=>'ProspectLevel', 's.fk_stcomm'=>'ProspectStatus'
); );
$this->export_TypeFields_array[$r]=array( $this->export_TypeFields_array[$r] = array(
'u.label'=>"Text",'u.description'=>"Text",'s.rowid'=>'List:societe:nom','s.nom'=>'Text','s.prefix_comm'=>"Text",'s.client'=>"Text", 'u.label'=>"Text", 'u.description'=>"Text", 's.rowid'=>'List:societe:nom', 's.nom'=>'Text', 's.prefix_comm'=>"Text", 's.client'=>"Text",
's.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label", 's.datec'=>"Date", 's.tms'=>"Date", 's.code_client'=>"Text", 's.address'=>"Text", 's.zip'=>"Text", 's.town'=>"Text", 'c.label'=>"List:c_country:label:label",
'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text", 'c.code'=>"Text", 's.phone'=>"Text", 's.fax'=>"Text", 's.url'=>"Text", 's.email'=>"Text", 's.siret'=>"Text", 's.siren'=>"Text", 's.ape'=>"Text",
's.idprof4'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_public'=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code', 's.idprof4'=>"Text", 's.tva_intra'=>"Text", 's.capital'=>"Numeric", 's.note_public'=>"Text", 's.fk_prospectlevel'=>'List:c_prospectlevel:label:code',
's.fk_stcomm'=>'List:c_stcomm:libelle:code' 's.fk_stcomm'=>'List:c_stcomm:libelle:code'
); );
$this->export_entities_array[$r]=array( $this->export_entities_array[$r] = array(
's.rowid'=>'company','s.nom'=>'company','s.prefix_comm'=>"company",'s.client'=>"company",'s.datec'=>"company",'s.tms'=>"company", 's.rowid'=>'company', 's.nom'=>'company', 's.prefix_comm'=>"company", 's.client'=>"company", 's.datec'=>"company", 's.tms'=>"company",
's.code_client'=>"company",'s.address'=>"company",'s.zip'=>"company",'s.town'=>"company",'c.label'=>"company",'c.code'=>"company", 's.code_client'=>"company", 's.address'=>"company", 's.zip'=>"company", 's.town'=>"company", 'c.label'=>"company", 'c.code'=>"company",
's.phone'=>"company",'s.fax'=>"company",'s.url'=>"company",'s.email'=>"company",'s.siret'=>"company",'s.siren'=>"company",'s.ape'=>"company", 's.phone'=>"company", 's.fax'=>"company", 's.url'=>"company", 's.email'=>"company", 's.siret'=>"company", 's.siren'=>"company", 's.ape'=>"company",
's.idprof4'=>"company",'s.tva_intra'=>"company",'s.capital'=>"company",'s.note_public'=>"company",'s.fk_prospectlevel'=>'company', 's.idprof4'=>"company", 's.tva_intra'=>"company", 's.capital'=>"company", 's.note_public'=>"company", 's.fk_prospectlevel'=>'company',
's.fk_stcomm'=>'company' 's.fk_stcomm'=>'company'
); // We define here only fields that use another picto ); // We define here only fields that use another picto
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'categorie as u, ';
$this->export_sql_end[$r] .= MAIN_DB_PREFIX.'categorie_societe as cf, '; $this->export_sql_end[$r] .= MAIN_DB_PREFIX.'categorie_societe as cf, ';
$this->export_sql_end[$r] .= MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code LEFT JOIN '.MAIN_DB_PREFIX.'societe_extrafields as extra ON s.rowid = extra.fk_object '; $this->export_sql_end[$r] .= MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code LEFT JOIN '.MAIN_DB_PREFIX.'societe_extrafields as extra ON s.rowid = extra.fk_object ';
$this->export_sql_end[$r] .=' WHERE u.rowid = cf.fk_categorie AND cf.fk_soc = s.rowid'; $this->export_sql_end[$r] .= ' WHERE u.rowid = cf.fk_categorie AND cf.fk_soc = s.rowid';
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category').')'; $this->export_sql_end[$r] .= ' AND u.entity IN ('.getEntity('category').')';
$this->export_sql_end[$r] .=' AND u.type = 2'; // Customer/Prospect categories $this->export_sql_end[$r] .= ' AND u.type = 2'; // Customer/Prospect categories
// Add extra fields // Add extra fields
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'societe' AND entity IN (0, ".$conf->entity.")"; $sql = "SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'societe' AND entity IN (0, ".$conf->entity.")";
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example) if ($resql) // This can fail when class is used on old database (during migration for example)
{ {
while ($obj=$this->db->fetch_object($resql)) while ($obj = $this->db->fetch_object($resql))
{ {
$fieldname='extra.'.$obj->name; $fieldname = 'extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label); $fieldlabel = ucfirst($obj->label);
$typeFilter="Text"; $typeFilter = "Text";
switch($obj->type) switch ($obj->type)
{ {
case 'int': case 'int':
case 'double': case 'double':
case 'price': case 'price':
$typeFilter="Numeric"; $typeFilter = "Numeric";
break; break;
case 'date': case 'date':
case 'datetime': case 'datetime':
$typeFilter="Date"; $typeFilter = "Date";
break; break;
case 'boolean': case 'boolean':
$typeFilter="Boolean"; $typeFilter = "Boolean";
break; break;
case 'sellist': case 'sellist':
$typeFilter="List:".$obj->param; $typeFilter = "List:".$obj->param;
break; break;
case 'select': case 'select':
$typeFilter="Select:".$obj->param; $typeFilter = "Select:".$obj->param;
break; break;
} }
$this->export_fields_array[$r][$fieldname]=$fieldlabel; $this->export_fields_array[$r][$fieldname] = $fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter; $this->export_TypeFields_array[$r][$fieldname] = $typeFilter;
$this->export_entities_array[$r][$fieldname]='company'; $this->export_entities_array[$r][$fieldname] = 'company';
} }
} }
// End add axtra fields // End add axtra fields
@ -227,42 +227,42 @@ class modCategorie extends DolibarrModules
$r++; $r++;
$this->export_code[$r]='category_'.$r; $this->export_code[$r] = 'category_'.$r;
$this->export_label[$r]='CatProdList'; $this->export_label[$r] = 'CatProdList';
$this->export_icon[$r]='category'; $this->export_icon[$r] = 'category';
$this->export_enabled[$r]='$conf->product->enabled || $conf->service->enabled'; $this->export_enabled[$r] = '$conf->product->enabled || $conf->service->enabled';
$this->export_permission[$r]=array(array("categorie","lire"),array("produit","lire")); $this->export_permission[$r] = array(array("categorie", "lire"), array("produit", "lire"));
$this->export_fields_array[$r]=array('u.rowid'=>"CategId",'u.label'=>"Label",'u.description'=>"Description",'p.rowid'=>'ProductId','p.ref'=>'Ref'); $this->export_fields_array[$r] = array('u.rowid'=>"CategId", 'u.label'=>"Label", 'u.description'=>"Description", 'p.rowid'=>'ProductId', 'p.ref'=>'Ref');
$this->export_TypeFields_array[$r]=array('u.label'=>"Text",'u.description'=>"Text",'p.ref'=>'Text'); $this->export_TypeFields_array[$r] = array('u.label'=>"Text", 'u.description'=>"Text", 'p.ref'=>'Text');
$this->export_entities_array[$r]=array('p.rowid'=>'product','p.ref'=>'product'); // We define here only fields that use another picto $this->export_entities_array[$r] = array('p.rowid'=>'product', 'p.ref'=>'product'); // We define here only fields that use another picto
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_product as cp, '.MAIN_DB_PREFIX.'product as p'; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_product as cp, '.MAIN_DB_PREFIX.'product as p';
$this->export_sql_end[$r] .=' WHERE u.rowid = cp.fk_categorie AND cp.fk_product = p.rowid'; $this->export_sql_end[$r] .= ' WHERE u.rowid = cp.fk_categorie AND cp.fk_product = p.rowid';
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category').')'; $this->export_sql_end[$r] .= ' AND u.entity IN ('.getEntity('category').')';
$this->export_sql_end[$r] .=' AND u.type = 0'; // Supplier categories $this->export_sql_end[$r] .= ' AND u.type = 0'; // Supplier categories
$r++; $r++;
$this->export_code[$r]='category_'.$r; $this->export_code[$r] = 'category_'.$r;
$this->export_label[$r]='CatMemberList'; $this->export_label[$r] = 'CatMemberList';
$this->export_icon[$r]='category'; $this->export_icon[$r] = 'category';
$this->export_enabled[$r]='$conf->adherent->enabled'; $this->export_enabled[$r] = '$conf->adherent->enabled';
$this->export_permission[$r]=array(array("categorie","lire"),array("adherent","lire")); $this->export_permission[$r] = array(array("categorie", "lire"), array("adherent", "lire"));
$this->export_fields_array[$r]=array('u.rowid'=>"CategId",'u.label'=>"Label",'u.description'=>"Description",'p.rowid'=>'MemberId','p.lastname'=>'LastName','p.firstname'=>'Firstname'); $this->export_fields_array[$r] = array('u.rowid'=>"CategId", 'u.label'=>"Label", 'u.description'=>"Description", 'p.rowid'=>'MemberId', 'p.lastname'=>'LastName', 'p.firstname'=>'Firstname');
$this->export_TypeFields_array[$r]=array('u.label'=>"Text",'u.description'=>"Text",'p.lastname'=>'Text','p.firstname'=>'Text'); $this->export_TypeFields_array[$r] = array('u.label'=>"Text", 'u.description'=>"Text", 'p.lastname'=>'Text', 'p.firstname'=>'Text');
$this->export_entities_array[$r]=array('p.rowid'=>'member','p.lastname'=>'member','p.firstname'=>'member'); // We define here only fields that use another picto $this->export_entities_array[$r] = array('p.rowid'=>'member', 'p.lastname'=>'member', 'p.firstname'=>'member'); // We define here only fields that use another picto
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_member as cp, '.MAIN_DB_PREFIX.'adherent as p'; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_member as cp, '.MAIN_DB_PREFIX.'adherent as p';
$this->export_sql_end[$r] .=' WHERE u.rowid = cp.fk_categorie AND cp.fk_member = p.rowid'; $this->export_sql_end[$r] .= ' WHERE u.rowid = cp.fk_categorie AND cp.fk_member = p.rowid';
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category').')'; $this->export_sql_end[$r] .= ' AND u.entity IN ('.getEntity('category').')';
$this->export_sql_end[$r] .=' AND u.type = 3'; // Member categories $this->export_sql_end[$r] .= ' AND u.type = 3'; // Member categories
$r++; $r++;
$this->export_code[$r]='category_'.$r; $this->export_code[$r] = 'category_'.$r;
$this->export_label[$r]='CatContactList'; $this->export_label[$r] = 'CatContactList';
$this->export_icon[$r]='category'; $this->export_icon[$r] = 'category';
$this->export_enabled[$r]='$conf->societe->enabled'; $this->export_enabled[$r] = '$conf->societe->enabled';
$this->export_permission[$r]=array(array("categorie", "lire"), array ("societe", "lire")); $this->export_permission[$r] = array(array("categorie", "lire"), array("societe", "lire"));
$this->export_fields_array[$r]=array ( $this->export_fields_array[$r] = array(
'u.rowid' => "CategId", 'u.rowid' => "CategId",
'u.label' => "Label", 'u.label' => "Label",
'u.description' => "Description", 'u.description' => "Description",
@ -297,7 +297,7 @@ class modCategorie extends DolibarrModules
's.url'=>"Url", 's.url'=>"Url",
's.email'=>"Email" 's.email'=>"Email"
); );
$this->export_TypeFields_array[$r] = array ( $this->export_TypeFields_array[$r] = array(
'u.label' => "Text", 'u.label' => "Text",
'u.description' => "Text", 'u.description' => "Text",
'p.lastname' => 'Text', 'p.lastname' => 'Text',
@ -313,7 +313,7 @@ class modCategorie extends DolibarrModules
's.url'=>"Text", 's.url'=>"Text",
's.email'=>"Text" 's.email'=>"Text"
); );
$this->export_entities_array[$r] = array ( $this->export_entities_array[$r] = array(
'u.rowid' => "category", 'u.rowid' => "category",
'u.label' => "category", 'u.label' => "category",
'u.description' => "category", 'u.description' => "category",
@ -350,67 +350,67 @@ class modCategorie extends DolibarrModules
); // We define here only fields that use another picto ); // We define here only fields that use another picto
// Add extra fields // Add extra fields
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'socpeople' AND entity IN (0, ".$conf->entity.")"; $sql = "SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'socpeople' AND entity IN (0, ".$conf->entity.")";
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example) if ($resql) // This can fail when class is used on old database (during migration for example)
{ {
while ($obj=$this->db->fetch_object($resql)) while ($obj = $this->db->fetch_object($resql))
{ {
$fieldname='extra.'.$obj->name; $fieldname = 'extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label); $fieldlabel = ucfirst($obj->label);
$typeFilter="Text"; $typeFilter = "Text";
switch($obj->type) switch ($obj->type)
{ {
case 'int': case 'int':
case 'double': case 'double':
case 'price': case 'price':
$typeFilter="Numeric"; $typeFilter = "Numeric";
break; break;
case 'date': case 'date':
case 'datetime': case 'datetime':
$typeFilter="Date"; $typeFilter = "Date";
break; break;
case 'boolean': case 'boolean':
$typeFilter="Boolean"; $typeFilter = "Boolean";
break; break;
case 'sellist': case 'sellist':
$typeFilter="List:".$obj->param; $typeFilter = "List:".$obj->param;
break; break;
case 'select': case 'select':
$typeFilter="Select:".$obj->param; $typeFilter = "Select:".$obj->param;
break; break;
} }
$this->export_fields_array[$r][$fieldname]=$fieldlabel; $this->export_fields_array[$r][$fieldname] = $fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter; $this->export_TypeFields_array[$r][$fieldname] = $typeFilter;
$this->export_entities_array[$r][$fieldname]='contact'; $this->export_entities_array[$r][$fieldname] = 'contact';
} }
} }
// End add axtra fields // End add axtra fields
$this->export_sql_start[$r] = 'SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] = ' FROM ' . MAIN_DB_PREFIX . 'categorie as u, '.MAIN_DB_PREFIX . 'categorie_contact as cp, '.MAIN_DB_PREFIX . 'socpeople as p'; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_contact as cp, '.MAIN_DB_PREFIX.'socpeople as p';
$this->export_sql_end[$r] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_country as country ON p.fk_pays = country.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as country ON p.fk_pays = country.rowid';
$this->export_sql_end[$r] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'societe as s ON s.rowid = p.fk_soc'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = p.fk_soc';
$this->export_sql_end[$r] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'socpeople_extrafields as extra ON extra.fk_object = p.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'socpeople_extrafields as extra ON extra.fk_object = p.rowid';
$this->export_sql_end[$r] .= ' WHERE u.rowid = cp.fk_categorie AND cp.fk_socpeople = p.rowid AND u.entity IN ('.getEntity('category').')'; $this->export_sql_end[$r] .= ' WHERE u.rowid = cp.fk_categorie AND cp.fk_socpeople = p.rowid AND u.entity IN ('.getEntity('category').')';
$this->export_sql_end[$r] .= ' AND u.type = 4'; // contact categories $this->export_sql_end[$r] .= ' AND u.type = 4'; // contact categories
// Imports // Imports
//-------- //--------
$r=0; $r = 0;
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r] = $this->rights_class.'_'.$r;
$this->import_label[$r]="CatList"; // Translation key $this->import_label[$r] = "CatList"; // Translation key
$this->import_icon[$r]=$this->picto; $this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('ca'=>MAIN_DB_PREFIX.'categorie'); $this->import_tables_array[$r] = array('ca'=>MAIN_DB_PREFIX.'categorie');
$this->import_fields_array[$r]=array( $this->import_fields_array[$r] = array(
'ca.label'=>"Label*",'ca.type'=>"Type*",'ca.description'=>"Description", 'ca.label'=>"Label*", 'ca.type'=>"Type*", 'ca.description'=>"Description",
'ca.fk_parent' => 'Parent' 'ca.fk_parent' => 'Parent'
); );
$this->import_regex_array[$r]=array('ca.type'=>'^[0|1|2|3]'); $this->import_regex_array[$r] = array('ca.type'=>'^[0|1|2|3]');
$this->import_convertvalue_array[$r] = array( $this->import_convertvalue_array[$r] = array(
'ca.fk_parent' => array( 'ca.fk_parent' => array(
'rule' => 'fetchidfromcodeandlabel', 'rule' => 'fetchidfromcodeandlabel',
@ -421,96 +421,96 @@ class modCategorie extends DolibarrModules
'codefromfield' => 'ca.type' 'codefromfield' => 'ca.type'
) )
); );
$typeexample=""; $typeexample = "";
if ($conf->product->enabled) { $typeexample.=($typeexample?"/":"")."0=Product"; } if ($conf->product->enabled) { $typeexample .= ($typeexample ? "/" : "")."0=Product"; }
if ($conf->fournisseur->enabled) { $typeexample.=($typeexample?"/":"")."1=Supplier"; } if ($conf->fournisseur->enabled) { $typeexample .= ($typeexample ? "/" : "")."1=Supplier"; }
if ($conf->societe->enabled) { $typeexample.=($typeexample?"/":"")."2=Customer-Prospect"; } if ($conf->societe->enabled) { $typeexample .= ($typeexample ? "/" : "")."2=Customer-Prospect"; }
if ($conf->adherent->enabled) { $typeexample.=($typeexample?"/":"")."3=Member"; } if ($conf->adherent->enabled) { $typeexample .= ($typeexample ? "/" : "")."3=Member"; }
$this->import_examplevalues_array[$r] = array( $this->import_examplevalues_array[$r] = array(
'ca.label'=>"Supplier Category",'ca.type'=>$typeexample,'ca.description'=>"My Category description", 'ca.label'=>"Supplier Category", 'ca.type'=>$typeexample, 'ca.description'=>"My Category description",
'ca.fk_parent' => '0' 'ca.fk_parent' => '0'
); );
if (! empty($conf->product->enabled)) if (!empty($conf->product->enabled))
{ {
//Products //Products
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r] = $this->rights_class.'_'.$r;
$this->import_label[$r]="CatProdLinks"; // Translation key $this->import_label[$r] = "CatProdLinks"; // Translation key
$this->import_icon[$r]=$this->picto; $this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('cp'=>MAIN_DB_PREFIX.'categorie_product'); $this->import_tables_array[$r] = array('cp'=>MAIN_DB_PREFIX.'categorie_product');
$this->import_fields_array[$r]=array('cp.fk_categorie'=>"Category*",'cp.fk_product'=>"Product*"); $this->import_fields_array[$r] = array('cp.fk_categorie'=>"Category*", 'cp.fk_product'=>"Product*");
$this->import_regex_array[$r]=array('cp.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=0'); $this->import_regex_array[$r] = array('cp.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=0');
$this->import_convertvalue_array[$r]=array( $this->import_convertvalue_array[$r] = array(
'cp.fk_categorie'=>array('rule'=>'fetchidfromref','classfile'=>'/categories/class/categorie.class.php','class'=>'Categorie','method'=>'fetch','element'=>'category'), 'cp.fk_categorie'=>array('rule'=>'fetchidfromref', 'classfile'=>'/categories/class/categorie.class.php', 'class'=>'Categorie', 'method'=>'fetch', 'element'=>'category'),
'cp.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'product') 'cp.fk_product'=>array('rule'=>'fetchidfromref', 'classfile'=>'/product/class/product.class.php', 'class'=>'Product', 'method'=>'fetch', 'element'=>'product')
); );
$this->import_examplevalues_array[$r]=array('cp.fk_categorie'=>"Imported category",'cp.fk_product'=>"PREF123456"); $this->import_examplevalues_array[$r] = array('cp.fk_categorie'=>"Imported category", 'cp.fk_product'=>"PREF123456");
} }
if (! empty($conf->societe->enabled)) if (!empty($conf->societe->enabled))
{ {
// Customers // Customers
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r] = $this->rights_class.'_'.$r;
$this->import_label[$r]="CatCusLinks"; // Translation key $this->import_label[$r] = "CatCusLinks"; // Translation key
$this->import_icon[$r]=$this->picto; $this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('cs'=>MAIN_DB_PREFIX.'categorie_societe'); $this->import_tables_array[$r] = array('cs'=>MAIN_DB_PREFIX.'categorie_societe');
$this->import_fields_array[$r]=array('cs.fk_categorie'=>"Category*",'cs.fk_soc'=>"ThirdParty*"); $this->import_fields_array[$r] = array('cs.fk_categorie'=>"Category*", 'cs.fk_soc'=>"ThirdParty*");
$this->import_regex_array[$r]=array( $this->import_regex_array[$r] = array(
'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=2', 'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=2',
'cs.fk_soc'=>'rowid@'.MAIN_DB_PREFIX.'societe:client>0' 'cs.fk_soc'=>'rowid@'.MAIN_DB_PREFIX.'societe:client>0'
); );
$this->import_convertvalue_array[$r]=array( $this->import_convertvalue_array[$r] = array(
'cs.fk_categorie'=>array('rule'=>'fetchidfromref','classfile'=>'/categories/class/categorie.class.php','class'=>'Categorie','method'=>'fetch','element'=>'category'), 'cs.fk_categorie'=>array('rule'=>'fetchidfromref', 'classfile'=>'/categories/class/categorie.class.php', 'class'=>'Categorie', 'method'=>'fetch', 'element'=>'category'),
'cs.fk_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty') 'cs.fk_soc'=>array('rule'=>'fetchidfromref', 'classfile'=>'/societe/class/societe.class.php', 'class'=>'Societe', 'method'=>'fetch', 'element'=>'ThirdParty')
); );
$this->import_examplevalues_array[$r]=array('cs.fk_categorie'=>"Imported category",'cs.fk_soc'=>"MyBigCompany"); $this->import_examplevalues_array[$r] = array('cs.fk_categorie'=>"Imported category", 'cs.fk_soc'=>"MyBigCompany");
// Contacts/Addresses // Contacts/Addresses
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r] = $this->rights_class.'_'.$r;
$this->import_label[$r]="CatContactsLinks"; // Translation key $this->import_label[$r] = "CatContactsLinks"; // Translation key
$this->import_icon[$r]=$this->picto; $this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('cs'=>MAIN_DB_PREFIX.'categorie_contact'); $this->import_tables_array[$r] = array('cs'=>MAIN_DB_PREFIX.'categorie_contact');
$this->import_fields_array[$r]=array('cs.fk_categorie'=>"Category*",'cs.fk_socpeople'=>"Contact ID*"); $this->import_fields_array[$r] = array('cs.fk_categorie'=>"Category*", 'cs.fk_socpeople'=>"Contact ID*");
$this->import_regex_array[$r]=array( $this->import_regex_array[$r] = array(
'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=4' 'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=4'
//'cs.fk_socpeople'=>'rowid@'.MAIN_DB_PREFIX.'socpeople' //'cs.fk_socpeople'=>'rowid@'.MAIN_DB_PREFIX.'socpeople'
); );
$this->import_convertvalue_array[$r]=array( $this->import_convertvalue_array[$r] = array(
'cs.fk_categorie'=>array('rule'=>'fetchidfromref','classfile'=>'/categories/class/categorie.class.php','class'=>'Categorie','method'=>'fetch','element'=>'category') 'cs.fk_categorie'=>array('rule'=>'fetchidfromref', 'classfile'=>'/categories/class/categorie.class.php', 'class'=>'Categorie', 'method'=>'fetch', 'element'=>'category')
//'cs.fk_socpeople'=>array('rule'=>'fetchidfromref','classfile'=>'/contact/class/contact.class.php','class'=>'Contact','method'=>'fetch','element'=>'Contact') //'cs.fk_socpeople'=>array('rule'=>'fetchidfromref','classfile'=>'/contact/class/contact.class.php','class'=>'Contact','method'=>'fetch','element'=>'Contact')
); );
$this->import_examplevalues_array[$r]=array('cs.fk_categorie'=>"Imported category",'cs.fk_socpeople'=>"123"); $this->import_examplevalues_array[$r] = array('cs.fk_categorie'=>"Imported category", 'cs.fk_socpeople'=>"123");
} }
if (! empty($conf->fournisseur->enabled)) if (!empty($conf->fournisseur->enabled))
{ {
// Suppliers // Suppliers
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r] = $this->rights_class.'_'.$r;
$this->import_label[$r]="CatSupLinks"; // Translation key $this->import_label[$r] = "CatSupLinks"; // Translation key
$this->import_icon[$r]=$this->picto; $this->import_icon[$r] = $this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('cs'=>MAIN_DB_PREFIX.'categorie_fournisseur'); $this->import_tables_array[$r] = array('cs'=>MAIN_DB_PREFIX.'categorie_fournisseur');
$this->import_fields_array[$r]=array('cs.fk_categorie'=>"Category*",'cs.fk_soc'=>"Supplier*"); $this->import_fields_array[$r] = array('cs.fk_categorie'=>"Category*", 'cs.fk_soc'=>"Supplier*");
$this->import_regex_array[$r]=array( $this->import_regex_array[$r] = array(
'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=1', 'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=1',
'cs.fk_soc'=>'rowid@'.MAIN_DB_PREFIX.'societe:fournisseur>0' 'cs.fk_soc'=>'rowid@'.MAIN_DB_PREFIX.'societe:fournisseur>0'
); );
$this->import_convertvalue_array[$r]=array( $this->import_convertvalue_array[$r] = array(
'cs.fk_categorie'=>array('rule'=>'fetchidfromref','classfile'=>'/categories/class/categorie.class.php','class'=>'Categorie','method'=>'fetch','element'=>'category'), 'cs.fk_categorie'=>array('rule'=>'fetchidfromref', 'classfile'=>'/categories/class/categorie.class.php', 'class'=>'Categorie', 'method'=>'fetch', 'element'=>'category'),
'cs.fk_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty') 'cs.fk_soc'=>array('rule'=>'fetchidfromref', 'classfile'=>'/societe/class/societe.class.php', 'class'=>'Societe', 'method'=>'fetch', 'element'=>'ThirdParty')
); );
$this->import_examplevalues_array[$r]=array('cs.fk_categorie'=>"Imported category",'cs.fk_soc'=>"MyBigCompany"); $this->import_examplevalues_array[$r] = array('cs.fk_categorie'=>"Imported category", 'cs.fk_soc'=>"MyBigCompany");
} }
} }

View File

@ -28,7 +28,7 @@
* \ingroup projet * \ingroup projet
* \brief Fichier de description et activation du module Projet * \brief Fichier de description et activation du module Projet
*/ */
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
/** /**
@ -58,22 +58,22 @@ class modProjet extends DolibarrModules
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
$this->config_page_url = array("project.php@projet"); $this->config_page_url = array("project.php@projet");
$this->picto='project'; $this->picto = 'project';
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array("/projet/temp"); $this->dirs = array("/projet/temp");
// Dependencies // Dependencies
$this->hidden = false; // A condition to hide module $this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled $this->requiredby = array(); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with $this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5,4); // Minimum version of PHP required by module $this->phpmin = array(5, 4); // Minimum version of PHP required by module
$this->langfiles = array('projects'); $this->langfiles = array('projects');
// Constants // Constants
$this->const = array(); $this->const = array();
$r=0; $r = 0;
$this->const[$r][0] = "PROJECT_ADDON_PDF"; $this->const[$r][0] = "PROJECT_ADDON_PDF";
$this->const[$r][1] = "chaine"; $this->const[$r][1] = "chaine";
@ -139,7 +139,7 @@ class modProjet extends DolibarrModules
// Boxes // Boxes
$this->boxes = array(); $this->boxes = array();
$r=0; $r = 0;
$this->boxes[$r][1] = "box_project.php"; $this->boxes[$r][1] = "box_project.php";
$r++; $r++;
$this->boxes[$r][1] = "box_task.php"; $this->boxes[$r][1] = "box_task.php";
@ -148,7 +148,7 @@ class modProjet extends DolibarrModules
// Permissions // Permissions
$this->rights = array(); $this->rights = array();
$this->rights_class = 'projet'; $this->rights_class = 'projet';
$r=0; $r = 0;
$r++; $r++;
$this->rights[$r][0] = 41; // id de la permission $this->rights[$r][0] = 41; // id de la permission
@ -205,43 +205,43 @@ class modProjet extends DolibarrModules
// Menus // Menus
//------- //-------
$this->menu = 1; // This module add menu entries. They are coded into menu manager. $this->menu = 1; // This module add menu entries. They are coded into menu manager.
//Exports //Exports
//-------- //--------
$r=1; $r = 1;
$this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_code[$r] = $this->rights_class.'_'.$r;
$this->export_label[$r]='ProjectsAndTasksLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_label[$r] = 'ProjectsAndTasksLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
$this->export_permission[$r]=array(array("projet","export")); $this->export_permission[$r] = array(array("projet", "export"));
$this->export_dependencies_array[$r]=array('projecttask'=>'pt.rowid', 'task_time'=>'ptt.rowid'); $this->export_dependencies_array[$r] = array('projecttask'=>'pt.rowid', 'task_time'=>'ptt.rowid');
$this->export_TypeFields_array[$r]=array( $this->export_TypeFields_array[$r] = array(
's.rowid'=>"List:societe:nom::thirdparty",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','s.fk_pays'=>'List:c_country:label', 's.rowid'=>"List:societe:nom::thirdparty", 's.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 's.fk_pays'=>'List:c_country:label',
's.phone'=>'Text','s.email'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text', 's.phone'=>'Text', 's.email'=>'Text', 's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', 's.code_compta'=>'Text', 's.code_compta_fournisseur'=>'Text',
'p.rowid'=>"List:projet:ref::project",'p.ref'=>"Text",'p.title'=>"Text", 'p.rowid'=>"List:projet:ref::project", 'p.ref'=>"Text", 'p.title'=>"Text",
'p.usage_opportunity'=>'Boolean', 'p.usage_task'=>'Boolean', 'p.usage_bill_time'=>'Boolean', 'p.usage_opportunity'=>'Boolean', 'p.usage_task'=>'Boolean', 'p.usage_bill_time'=>'Boolean',
'p.datec'=>"Date",'p.dateo'=>"Date",'p.datee'=>"Date",'p.fk_statut'=>'Status','cls.code'=>"Text",'p.opp_percent'=>'Numeric','p.opp_amount'=>'Numeric','p.description'=>"Text",'p.entity'=>'Numeric', 'p.datec'=>"Date", 'p.dateo'=>"Date", 'p.datee'=>"Date", 'p.fk_statut'=>'Status', 'cls.code'=>"Text", 'p.opp_percent'=>'Numeric', 'p.opp_amount'=>'Numeric', 'p.description'=>"Text", 'p.entity'=>'Numeric',
'pt.rowid'=>'Numeric','pt.ref'=>'Text','pt.label'=>'Text','pt.dateo'=>"Date",'pt.datee'=>"Date",'pt.duration_effective'=>"Duree",'pt.planned_workload'=>"Numeric",'pt.progress'=>"Numeric",'pt.description'=>"Text", 'pt.rowid'=>'Numeric', 'pt.ref'=>'Text', 'pt.label'=>'Text', 'pt.dateo'=>"Date", 'pt.datee'=>"Date", 'pt.duration_effective'=>"Duree", 'pt.planned_workload'=>"Numeric", 'pt.progress'=>"Numeric", 'pt.description'=>"Text",
'ptt.rowid'=>'Numeric','ptt.task_date'=>'Date','ptt.task_duration'=>"Duree",'ptt.fk_user'=>"List:user:CONCAT(lastname,' ',firstname)",'ptt.note'=>"Text" 'ptt.rowid'=>'Numeric', 'ptt.task_date'=>'Date', 'ptt.task_duration'=>"Duree", 'ptt.fk_user'=>"List:user:CONCAT(lastname,' ',firstname)", 'ptt.note'=>"Text"
); );
$this->export_entities_array[$r]=array( $this->export_entities_array[$r] = array(
's.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company', 's.rowid'=>"company", 's.nom'=>'company', 's.address'=>'company', 's.zip'=>'company', 's.town'=>'company', 's.fk_pays'=>'company',
's.phone'=>'company','s.email'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company' 's.phone'=>'company', 's.email'=>'company', 's.siren'=>'company', 's.siret'=>'company', 's.ape'=>'company', 's.idprof4'=>'company', 's.code_compta'=>'company', 's.code_compta_fournisseur'=>'company'
); );
$this->export_fields_array[$r]=array( $this->export_fields_array[$r] = array(
's.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country', 's.rowid'=>"IdCompany", 's.nom'=>'CompanyName', 's.address'=>'Address', 's.zip'=>'Zip', 's.town'=>'Town', 's.fk_pays'=>'Country',
's.phone'=>'Phone','s.email'=>'Email','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode', 's.phone'=>'Phone', 's.email'=>'Email', 's.siren'=>'ProfId1', 's.siret'=>'ProfId2', 's.ape'=>'ProfId3', 's.idprof4'=>'ProfId4', 's.code_compta'=>'CustomerAccountancyCode', 's.code_compta_fournisseur'=>'SupplierAccountancyCode',
'p.rowid'=>"ProjectId",'p.ref'=>"RefProject",'p.title'=>'ProjectLabel', 'p.rowid'=>"ProjectId", 'p.ref'=>"RefProject", 'p.title'=>'ProjectLabel',
'p.usage_opportunity'=>'ProjectFollowOpportunity', 'p.usage_task'=>'ProjectFollowTasks', 'p.usage_bill_time'=>'BillTime', 'p.usage_opportunity'=>'ProjectFollowOpportunity', 'p.usage_task'=>'ProjectFollowTasks', 'p.usage_bill_time'=>'BillTime',
'p.datec'=>"DateCreation",'p.dateo'=>"DateStart",'p.datee'=>"DateEnd",'p.fk_statut'=>'ProjectStatus','cls.code'=>'OpportunityStatus','p.opp_percent'=>'OpportunityProbability','p.opp_amount'=>'OpportunityAmount','p.description'=>"Description" 'p.datec'=>"DateCreation", 'p.dateo'=>"DateStart", 'p.datee'=>"DateEnd", 'p.fk_statut'=>'ProjectStatus', 'cls.code'=>'OpportunityStatus', 'p.opp_percent'=>'OpportunityProbability', 'p.opp_amount'=>'OpportunityAmount', 'p.description'=>"Description"
); );
// Add multicompany field // Add multicompany field
if (! empty($conf->global->MULTICOMPANY_ENTITY_IN_EXPORT_IF_SHARED)) if (!empty($conf->global->MULTICOMPANY_ENTITY_IN_EXPORT_IF_SHARED))
{ {
$nbofallowedentities=count(explode(',', getEntity('project'))); // If project are shared, nb will be > 1 $nbofallowedentities = count(explode(',', getEntity('project'))); // If project are shared, nb will be > 1
if (! empty($conf->multicompany->enabled) && $nbofallowedentities > 1) $this->export_fields_array[$r]+=array('p.entity'=>'Entity'); if (!empty($conf->multicompany->enabled) && $nbofallowedentities > 1) $this->export_fields_array[$r] += array('p.entity'=>'Entity');
} }
if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) if (empty($conf->global->PROJECT_USE_OPPORTUNITIES))
{ {
@ -251,68 +251,68 @@ class modProjet extends DolibarrModules
} }
// Add fields for project // Add fields for project
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array()); $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array());
// Add extra fields for project // Add extra fields for project
$keyforselect='projet'; $keyforelement='project'; $keyforaliasextra='extra'; $keyforselect = 'projet'; $keyforelement = 'project'; $keyforaliasextra = 'extra';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
// Add fields for tasks // Add fields for tasks
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('pt.rowid'=>'TaskId', 'pt.ref'=>'RefTask', 'pt.label'=>'LabelTask', 'pt.dateo'=>"TaskDateStart", 'pt.datee'=>"TaskDateEnd", 'pt.duration_effective'=>"DurationEffective", 'pt.planned_workload'=>"PlannedWorkload", 'pt.progress'=>"Progress", 'pt.description'=>"TaskDescription")); $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('pt.rowid'=>'TaskId', 'pt.ref'=>'RefTask', 'pt.label'=>'LabelTask', 'pt.dateo'=>"TaskDateStart", 'pt.datee'=>"TaskDateEnd", 'pt.duration_effective'=>"DurationEffective", 'pt.planned_workload'=>"PlannedWorkload", 'pt.progress'=>"Progress", 'pt.description'=>"TaskDescription"));
$this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('pt.rowid'=>'projecttask', 'pt.ref'=>'projecttask', 'pt.label'=>'projecttask', 'pt.dateo'=>"projecttask", 'pt.datee'=>"projecttask", 'pt.duration_effective'=>"projecttask", 'pt.planned_workload'=>"projecttask", 'pt.progress'=>"projecttask", 'pt.description'=>"projecttask")); $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('pt.rowid'=>'projecttask', 'pt.ref'=>'projecttask', 'pt.label'=>'projecttask', 'pt.dateo'=>"projecttask", 'pt.datee'=>"projecttask", 'pt.duration_effective'=>"projecttask", 'pt.planned_workload'=>"projecttask", 'pt.progress'=>"projecttask", 'pt.description'=>"projecttask"));
// Add extra fields for task // Add extra fields for task
$keyforselect='projet_task'; $keyforelement='projecttask'; $keyforaliasextra='extra2'; $keyforselect = 'projet_task'; $keyforelement = 'projecttask'; $keyforaliasextra = 'extra2';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
// End add extra fields // End add extra fields
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('ptt.rowid'=>'IdTaskTime','ptt.task_date'=>'TaskTimeDate','ptt.task_duration'=>"TimesSpent",'ptt.fk_user'=>"TaskTimeUser",'ptt.note'=>"TaskTimeNote")); $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('ptt.rowid'=>'IdTaskTime', 'ptt.task_date'=>'TaskTimeDate', 'ptt.task_duration'=>"TimesSpent", 'ptt.fk_user'=>"TaskTimeUser", 'ptt.note'=>"TaskTimeNote"));
$this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('ptt.rowid'=>'task_time','ptt.task_date'=>'task_time','ptt.task_duration'=>"task_time",'ptt.fk_user'=>"task_time",'ptt.note'=>"task_time")); $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('ptt.rowid'=>'task_time', 'ptt.task_date'=>'task_time', 'ptt.task_duration'=>"task_time", 'ptt.fk_user'=>"task_time", 'ptt.note'=>"task_time"));
if (empty($conf->global->PROJECT_HIDE_TASKS)) { if (empty($conf->global->PROJECT_HIDE_TASKS)) {
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('f.ref'=>"Billed")); $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('f.ref'=>"Billed"));
$this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('f.ref'=>"task_time")); $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('f.ref'=>"task_time"));
} }
$this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'projet as p'; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'projet as p';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet_extrafields as extra ON p.rowid = extra.fk_object'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet_extrafields as extra ON p.rowid = extra.fk_object';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_lead_status as cls ON p.fk_opp_status = cls.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_lead_status as cls ON p.fk_opp_status = cls.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task as pt ON p.rowid = pt.fk_projet"; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX."projet_task as pt ON p.rowid = pt.fk_projet";
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet_task_extrafields as extra2 ON pt.rowid = extra2.fk_object'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet_task_extrafields as extra2 ON pt.rowid = extra2.fk_object';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task_time as ptt ON pt.rowid = ptt.fk_task"; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX."projet_task_time as ptt ON pt.rowid = ptt.fk_task";
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON p.fk_soc = s.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON p.fk_soc = s.rowid';
if (empty($conf->global->PROJECT_HIDE_TASKS)) { if (empty($conf->global->PROJECT_HIDE_TASKS)) {
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture as f ON ptt.invoice_id = f.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'facture as f ON ptt.invoice_id = f.rowid';
} }
$this->export_sql_end[$r] .=" WHERE p.entity IN (".getEntity('project').")"; $this->export_sql_end[$r] .= " WHERE p.entity IN (".getEntity('project').")";
// Import list of tasks // Import list of tasks
if (empty($conf->global->PROJECT_HIDE_TASKS)) if (empty($conf->global->PROJECT_HIDE_TASKS))
{ {
$r++; $r++;
$this->import_code[$r]='tasksofprojects'; $this->import_code[$r] = 'tasksofprojects';
$this->import_label[$r]='ImportDatasetTasks'; $this->import_label[$r] = 'ImportDatasetTasks';
$this->import_icon[$r]='task'; $this->import_icon[$r] = 'task';
$this->import_entities_array[$r]=array('t.fk_projet'=>'project'); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r] = array('t.fk_projet'=>'project'); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('t'=>MAIN_DB_PREFIX.'projet_task','extra'=>MAIN_DB_PREFIX.'projet_task_extrafields'); // List of tables to insert into (insert done in same order) $this->import_tables_array[$r] = array('t'=>MAIN_DB_PREFIX.'projet_task', 'extra'=>MAIN_DB_PREFIX.'projet_task_extrafields'); // List of tables to insert into (insert done in same order)
$this->import_fields_array[$r]=array('t.fk_projet'=>'ProjectRef*','t.ref'=>'RefTask*','t.label'=>'LabelTask*','t.dateo'=>"DateStart",'t.datee'=>"DateEnd",'t.planned_workload'=>"PlannedWorkload",'t.progress'=>"Progress",'t.note_private'=>"NotePrivate",'t.note_public'=>"NotePublic",'t.datec'=>"DateCreation"); $this->import_fields_array[$r] = array('t.fk_projet'=>'ProjectRef*', 't.ref'=>'RefTask*', 't.label'=>'LabelTask*', 't.dateo'=>"DateStart", 't.datee'=>"DateEnd", 't.planned_workload'=>"PlannedWorkload", 't.progress'=>"Progress", 't.note_private'=>"NotePrivate", 't.note_public'=>"NotePublic", 't.datec'=>"DateCreation");
// Add extra fields // Add extra fields
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'projet_task' AND entity IN (0,".$conf->entity.")"; $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'projet_task' AND entity IN (0,".$conf->entity.")";
$resql=$this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example) if ($resql) // This can fail when class is used on old database (during migration for example)
{ {
while ($obj=$this->db->fetch_object($resql)) while ($obj = $this->db->fetch_object($resql))
{ {
$fieldname='extra.'.$obj->name; $fieldname = 'extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label); $fieldlabel = ucfirst($obj->label);
$this->import_fields_array[$r][$fieldname]=$fieldlabel.($obj->fieldrequired?'*':''); $this->import_fields_array[$r][$fieldname] = $fieldlabel.($obj->fieldrequired ? '*' : '');
} }
} }
// End add extra fields // End add extra fields
$this->import_fieldshidden_array[$r]=array('t.fk_user_creat'=>'user->id','extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'projet_task'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent) $this->import_fieldshidden_array[$r] = array('t.fk_user_creat'=>'user->id', 'extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'projet_task'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
$this->import_convertvalue_array[$r]=array( $this->import_convertvalue_array[$r] = array(
't.fk_projet'=>array('rule'=>'fetchidfromref','classfile'=>'/projet/class/project.class.php','class'=>'Project','method'=>'fetch','element'=>'Project'), 't.fk_projet'=>array('rule'=>'fetchidfromref', 'classfile'=>'/projet/class/project.class.php', 'class'=>'Project', 'method'=>'fetch', 'element'=>'Project'),
't.ref'=>array('rule'=>'getrefifauto') 't.ref'=>array('rule'=>'getrefifauto')
); );
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t'); //$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
$this->import_regex_array[$r]=array('t.dateo'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','t.datee'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','t.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$'); $this->import_regex_array[$r] = array('t.dateo'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$', 't.datee'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$', 't.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$');
$this->import_examplevalues_array[$r]=array('t.fk_projet'=>'MyProjectRef','t.ref'=>"auto or TK2010-1234",'t.label'=>"My task",'t.progress'=>"0 (not started) to 100 (finished)",'t.datec'=>'1972-10-10','t.note_private'=>"My private note",'t.note_public'=>"My public note"); $this->import_examplevalues_array[$r] = array('t.fk_projet'=>'MyProjectRef', 't.ref'=>"auto or TK2010-1234", 't.label'=>"My task", 't.progress'=>"0 (not started) to 100 (finished)", 't.datec'=>'1972-10-10', 't.note_private'=>"My private note", 't.note_public'=>"My public note");
} }
} }
@ -327,54 +327,54 @@ class modProjet extends DolibarrModules
*/ */
public function init($options = '') public function init($options = '')
{ {
global $conf,$langs; global $conf, $langs;
// Permissions // Permissions
$this->remove($options); $this->remove($options);
//ODT template for project //ODT template for project
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/projects/template_project.odt'; $src = DOL_DOCUMENT_ROOT.'/install/doctemplates/projects/template_project.odt';
$dirodt=DOL_DATA_ROOT.'/doctemplates/projects'; $dirodt = DOL_DATA_ROOT.'/doctemplates/projects';
$dest=$dirodt.'/template_project.odt'; $dest = $dirodt.'/template_project.odt';
if (file_exists($src) && ! file_exists($dest)) if (file_exists($src) && !file_exists($dest))
{ {
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
dol_mkdir($dirodt); dol_mkdir($dirodt);
$result=dol_copy($src, $dest, 0, 0); $result = dol_copy($src, $dest, 0, 0);
if ($result < 0) if ($result < 0)
{ {
$langs->load("errors"); $langs->load("errors");
$this->error=$langs->trans('ErrorFailToCopyFile', $src, $dest); $this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest);
return 0; return 0;
} }
} }
//ODT template for tasks //ODT template for tasks
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/tasks/template_task_summary.odt'; $src = DOL_DOCUMENT_ROOT.'/install/doctemplates/tasks/template_task_summary.odt';
$dirodt=DOL_DATA_ROOT.'/doctemplates/tasks'; $dirodt = DOL_DATA_ROOT.'/doctemplates/tasks';
$dest=$dirodt.'/template_task_summary.odt'; $dest = $dirodt.'/template_task_summary.odt';
if (file_exists($src) && ! file_exists($dest)) if (file_exists($src) && !file_exists($dest))
{ {
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
dol_mkdir($dirodt); dol_mkdir($dirodt);
$result=dol_copy($src, $dest, 0, 0); $result = dol_copy($src, $dest, 0, 0);
if ($result < 0) if ($result < 0)
{ {
$langs->load("errors"); $langs->load("errors");
$this->error=$langs->trans('ErrorFailToCopyFile', $src, $dest); $this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest);
return 0; return 0;
} }
} }
$sql = array(); $sql = array();
$sql[] ="DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->db->escape($this->const[3][2])."' AND type = 'task' AND entity = ".$conf->entity; $sql[] = "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->db->escape($this->const[3][2])."' AND type = 'task' AND entity = ".$conf->entity;
$sql[] ="INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->db->escape($this->const[3][2])."','task',".$conf->entity.")"; $sql[] = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->db->escape($this->const[3][2])."','task',".$conf->entity.")";
$sql[] ="DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'beluga' AND type = 'project' AND entity = ".$conf->entity; $sql[] = "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'beluga' AND type = 'project' AND entity = ".$conf->entity;
$sql[] ="INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('beluga','project',".$conf->entity.")"; $sql[] = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('beluga','project',".$conf->entity.")";
$sql[] ="DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'baleine' AND type = 'project' AND entity = ".$conf->entity; $sql[] = "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'baleine' AND type = 'project' AND entity = ".$conf->entity;
$sql[] ="INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('baleine','project',".$conf->entity.")"; $sql[] = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('baleine','project',".$conf->entity.")";
return $this->_init($sql, $options); return $this->_init($sql, $options);

View File

@ -44,7 +44,7 @@ class mod_payment_ant extends ModeleNumRefPayments
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Ant'; public $nom='Ant';

View File

@ -45,7 +45,7 @@ class mod_payment_cicada extends ModeleNumRefPayments
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Cicada'; public $nom='Cicada';

View File

@ -47,7 +47,7 @@ class mod_project_simple extends ModeleNumRefProjects
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Simple'; public $nom='Simple';

View File

@ -44,7 +44,7 @@ class mod_project_universal extends ModeleNumRefProjects
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom = 'Universal'; public $nom = 'Universal';

View File

@ -57,7 +57,7 @@ class doc_generic_task_odt extends ModelePDFTask
{ {
/** /**
* Issuer * Issuer
* @var Company object that emits * @var Societe Object that emits
*/ */
public $emetteur; public $emetteur;

View File

@ -47,7 +47,7 @@ class mod_task_simple extends ModeleNumRefTask
/** /**
* @var string * @var string
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Simple'; public $nom='Simple';

View File

@ -44,7 +44,7 @@ class mod_task_universal extends ModeleNumRefTask
/** /**
* @var string * @var string
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom = 'Universal'; public $nom = 'Universal';

View File

@ -502,7 +502,7 @@ class pdf_azur extends ModelePDFPropales
$curY = $tab_top_newpage; $curY = $tab_top_newpage;
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -548,7 +548,7 @@ class pdf_azur extends ModelePDFPropales
// We found a page break // We found a page break
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -1101,28 +1101,28 @@ class pdf_azur extends ModelePDFPropales
//Local tax 1 before VAT //Local tax 1 before VAT
//if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on')
//{ //{
foreach($this->localtax1 as $localtax_type => $localtax_rate) foreach ($this->localtax1 as $localtax_type => $localtax_rate)
{ {
if (in_array((string) $localtax_type, array('1','3','5'))) continue; if (in_array((string) $localtax_type, array('1', '3', '5'))) continue;
foreach($localtax_rate as $tvakey => $tvaval) foreach ($localtax_rate as $tvakey => $tvaval)
{ {
if ($tvakey!=0) // On affiche pas taux 0 if ($tvakey != 0) // On affiche pas taux 0
{ {
//$this->atleastoneratenotnull++; //$this->atleastoneratenotnull++;
$index++; $index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl=''; $tvacompl = '';
if (preg_match('/\*/', $tvakey)) if (preg_match('/\*/', $tvakey))
{ {
$tvakey=str_replace('*', '', $tvakey); $tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
} }
$totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).' '; $totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).' ';
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl; $totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
@ -1133,13 +1133,13 @@ class pdf_azur extends ModelePDFPropales
//Local tax 2 before VAT //Local tax 2 before VAT
//if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') //if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on')
//{ //{
foreach($this->localtax2 as $localtax_type => $localtax_rate) foreach ($this->localtax2 as $localtax_type => $localtax_rate)
{ {
if (in_array((string) $localtax_type, array('1','3','5'))) continue; if (in_array((string) $localtax_type, array('1', '3', '5'))) continue;
foreach($localtax_rate as $tvakey => $tvaval) foreach ($localtax_rate as $tvakey => $tvaval)
{ {
if ($tvakey!=0) // On affiche pas taux 0 if ($tvakey != 0) // On affiche pas taux 0
{ {
//$this->atleastoneratenotnull++; //$this->atleastoneratenotnull++;
@ -1148,15 +1148,15 @@ class pdf_azur extends ModelePDFPropales
$index++; $index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl=''; $tvacompl = '';
if (preg_match('/\*/', $tvakey)) if (preg_match('/\*/', $tvakey))
{ {
$tvakey=str_replace('*', '', $tvakey); $tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
} }
$totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).' '; $totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).' ';
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl; $totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
@ -1192,11 +1192,11 @@ class pdf_azur extends ModelePDFPropales
//Local tax 1 after VAT //Local tax 1 after VAT
//if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on')
//{ //{
foreach($this->localtax1 as $localtax_type => $localtax_rate) foreach ($this->localtax1 as $localtax_type => $localtax_rate)
{ {
if (in_array((string) $localtax_type, array('2','4','6'))) continue; if (in_array((string) $localtax_type, array('2', '4', '6'))) continue;
foreach($localtax_rate as $tvakey => $tvaval) foreach ($localtax_rate as $tvakey => $tvaval)
{ {
if ($tvakey != 0) // On affiche pas taux 0 if ($tvakey != 0) // On affiche pas taux 0
{ {
@ -1205,16 +1205,16 @@ class pdf_azur extends ModelePDFPropales
$index++; $index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl=''; $tvacompl = '';
if (preg_match('/\*/', $tvakey)) if (preg_match('/\*/', $tvakey))
{ {
$tvakey=str_replace('*', '', $tvakey); $tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
} }
$totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).' '; $totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).' ';
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl; $totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
} }
@ -1224,11 +1224,11 @@ class pdf_azur extends ModelePDFPropales
//Local tax 2 after VAT //Local tax 2 after VAT
//if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') //if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on')
//{ //{
foreach($this->localtax2 as $localtax_type => $localtax_rate) foreach ($this->localtax2 as $localtax_type => $localtax_rate)
{ {
if (in_array((string) $localtax_type, array('2','4','6'))) continue; if (in_array((string) $localtax_type, array('2', '4', '6'))) continue;
foreach($localtax_rate as $tvakey => $tvaval) foreach ($localtax_rate as $tvakey => $tvaval)
{ {
// retrieve global local tax // retrieve global local tax
if ($tvakey != 0) // On affiche pas taux 0 if ($tvakey != 0) // On affiche pas taux 0
@ -1238,16 +1238,16 @@ class pdf_azur extends ModelePDFPropales
$index++; $index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl=''; $tvacompl = '';
if (preg_match('/\*/', $tvakey)) if (preg_match('/\*/', $tvakey))
{ {
$tvakey=str_replace('*', '', $tvakey); $tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
} }
$totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).' '; $totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).' ';
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl; $totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
@ -1476,7 +1476,7 @@ class pdf_azur extends ModelePDFPropales
if ($this->emetteur->logo) if ($this->emetteur->logo)
{ {
$logodir = $conf->mycompany->dir_output; $logodir = $conf->mycompany->dir_output;
if (! empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity]; if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity];
if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO))
{ {
$logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small; $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
@ -1528,27 +1528,27 @@ class pdf_azur extends ModelePDFPropales
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R');
} }
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE)) if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->title)?'':$object->projet->title), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R');
} }
} }
if (! empty($conf->global->PDF_SHOW_PROJECT)) if (!empty($conf->global->PDF_SHOW_PROJECT))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->projet->ref), '', 'R');
} }
} }

View File

@ -594,7 +594,7 @@ class pdf_cyan extends ModelePDFPropales
$curY = $tab_top_newpage; $curY = $tab_top_newpage;
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -640,7 +640,7 @@ class pdf_cyan extends ModelePDFPropales
{ {
// We found a page break // We found a page break
// Allows data in the first page if description is long enough to break in multiples pages // Allows data in the first page if description is long enough to break in multiples pages
if(!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE))
$showpricebeforepagebreak = 1; $showpricebeforepagebreak = 1;
else else
$showpricebeforepagebreak = 0; $showpricebeforepagebreak = 0;
@ -1588,27 +1588,27 @@ class pdf_cyan extends ModelePDFPropales
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R');
} }
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE)) if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->title)?'':$object->projet->title), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R');
} }
} }
if (! empty($conf->global->PDF_SHOW_PROJECT)) if (!empty($conf->global->PDF_SHOW_PROJECT))
{ {
$object->fetch_projet(); $object->fetch_projet();
if (! empty($object->project->ref)) if (!empty($object->project->ref))
{ {
$posy+=3; $posy += 3;
$pdf->SetXY($posx, $posy); $pdf->SetXY($posx, $posy);
$pdf->SetTextColor(0, 0, 60); $pdf->SetTextColor(0, 0, 60);
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->projet->ref), '', 'R');
} }
} }

View File

@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php';
class doc_generic_reception_odt extends ModelePdfReception class doc_generic_reception_odt extends ModelePdfReception
{ {
/** /**
* @var Company Issuer object that emits * @var Societe Issuer object that emits
*/ */
public $emetteur; // Objet societe qui emet public $emetteur; // Objet societe qui emet

View File

@ -209,7 +209,7 @@ class doc_generic_stock_odt extends ModelePDFStock
/** /**
* Function to build a document on disk using the generic odt module. * Function to build a document on disk using the generic odt module.
* *
* @param Stock $object Object source to build document * @param Entrepot $object Object source to build document
* @param Translate $outputlangs Lang output object * @param Translate $outputlangs Lang output object
* @param string $srctemplatepath Full path of source filename for generator using a template file * @param string $srctemplatepath Full path of source filename for generator using a template file
* @param int $hidedetails Do not show line details * @param int $hidedetails Do not show line details
@ -250,7 +250,7 @@ class doc_generic_stock_odt extends ModelePDFStock
if (!is_object($object)) if (!is_object($object))
{ {
$id = $object; $id = $object;
$object = new Stock($this->db); $object = new Entrepot($this->db);
$result = $object->fetch($id); $result = $object->fetch($id);
if ($result < 0) if ($result < 0)
{ {
@ -258,7 +258,8 @@ class doc_generic_stock_odt extends ModelePDFStock
return -1; return -1;
} }
} }
$stockFournisseur = new StockFournisseur($this->db);
$stockFournisseur = new ProductFournisseur($this->db);
$supplierprices = $stockFournisseur->list_stock_fournisseur_price($object->id); $supplierprices = $stockFournisseur->list_stock_fournisseur_price($object->id);
$object->supplierprices = $supplierprices; $object->supplierprices = $supplierprices;

View File

@ -181,7 +181,7 @@ class pdf_standard extends ModelePDFStock
/** /**
* Function to build a document on disk using the generic odt module. * Function to build a document on disk using the generic odt module.
* *
* @param Stock $object Object source to build document * @param Entrepot $object Object source to build document
* @param Translate $outputlangs Lang output object * @param Translate $outputlangs Lang output object
* @param string $srctemplatepath Full path of source filename for generator using a template file * @param string $srctemplatepath Full path of source filename for generator using a template file
* @param int $hidedetails Do not show line details * @param int $hidedetails Do not show line details

View File

@ -47,7 +47,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Cactus'; public $nom='Cactus';

View File

@ -50,7 +50,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Tulip'; public $nom='Tulip';

View File

@ -45,7 +45,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Muguet'; public $nom='Muguet';

View File

@ -46,7 +46,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Orchidee'; public $nom='Orchidee';

View File

@ -44,7 +44,7 @@ class mod_supplier_payment_brodator extends ModeleNumRefSupplierPayments
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Brodator'; public $nom='Brodator';

View File

@ -45,7 +45,7 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Bronan'; public $nom='Bronan';

View File

@ -225,7 +225,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
/** /**
* Function to build a document on disk using the generic odt module. * Function to build a document on disk using the generic odt module.
* *
* @param Propale $object Object source to build document * @param Propal $object Object source to build document
* @param Translate $outputlangs Lang output object * @param Translate $outputlangs Lang output object
* @param string $srctemplatepath Full path of source filename for generator using a template file * @param string $srctemplatepath Full path of source filename for generator using a template file
* @param int $hidedetails Do not show line details * @param int $hidedetails Do not show line details

View File

@ -47,7 +47,7 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Marbre'; public $nom='Marbre';

View File

@ -47,7 +47,7 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Saphir'; public $nom='Saphir';

View File

@ -46,7 +46,7 @@ class mod_ticket_simple extends ModeleNumRefTicket
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Simple'; public $nom='Simple';

View File

@ -43,7 +43,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
/** /**
* @var string Nom du modele * @var string Nom du modele
* @deprecated * @deprecated
* @see name * @see $name
*/ */
public $nom='Universal'; public $nom='Universal';

View File

@ -432,7 +432,7 @@ if ($nolinesbefore) {
<?php <?php
if (is_object($objectline)) { if (is_object($objectline)) {
print $objectline->showOptionals($extrafields, 'edit', array('colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $objectline->showOptionals($extrafields, 'edit', array('colspan'=>$coldisplay), '', '', 1);
} }
if ((!empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required if ((!empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required

View File

@ -260,7 +260,7 @@ $coldisplay++;
//Line extrafield //Line extrafield
if (!empty($extrafields)) if (!empty($extrafields))
{ {
print $line->showOptionals($extrafields, 'edit', array('class'=>'tredited', 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1); print $line->showOptionals($extrafields, 'edit', array('class'=>'tredited', 'colspan'=>$coldisplay), '', '', 1);
} }
?> ?>

View File

@ -356,7 +356,7 @@ print "</tr>\n";
//Line extrafield //Line extrafield
if (!empty($extrafields)) if (!empty($extrafields))
{ {
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', 1);
} }
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n"; print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";

View File

@ -1578,7 +1578,7 @@ if ($action == 'create')
//$line->fetch_optionals($line->id); //$line->fetch_optionals($line->id);
$line->array_options = array_merge($line->array_options, $srcLine->array_options); $line->array_options = array_merge($line->array_options, $srcLine->array_options);
print $expLine->showOptionals($extrafields, 'edit', array('style'=>'class="drag drop oddeven"', 'colspan'=>$colspan), $indiceAsked, '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD) ? 0 : 1); print $expLine->showOptionals($extrafields, 'edit', array('style'=>'class="drag drop oddeven"', 'colspan'=>$colspan), $indiceAsked, '', 1);
} }
} }

View File

@ -252,8 +252,8 @@ class SupplierOrders extends DolibarrApi
/** /**
* Delete supplier order * Delete supplier order
* *
* @param int $id Supplier order ID * @param int $id Supplier order ID
* @return type * @return array Array of result
*/ */
public function delete($id) public function delete($id)
{ {

View File

@ -185,7 +185,7 @@ class CommandeFournisseur extends CommonOrder
public $fields=array( public $fields = array(
'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10), 'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10),
'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>15), 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>15),
'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>20), 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>20),
@ -455,11 +455,11 @@ class CommandeFournisseur extends CommonOrder
$sql .= " l.date_start, l.date_end,"; $sql .= " l.date_start, l.date_end,";
$sql .= ' l.fk_multicurrency, l.multicurrency_code, l.multicurrency_subprice, l.multicurrency_total_ht, l.multicurrency_total_tva, l.multicurrency_total_ttc'; $sql .= ' l.fk_multicurrency, l.multicurrency_code, l.multicurrency_subprice, l.multicurrency_total_ht, l.multicurrency_total_tva, l.multicurrency_total_ttc';
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING))
$sql.= ", pfp.rowid as fk_pfp, pfp.packaging"; $sql .= ", pfp.rowid as fk_pfp, pfp.packaging";
$sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as l"; $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as l";
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid'; $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid';
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING))
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON l.fk_product = pfp.fk_product and l.ref = pfp.ref_fourn"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON l.fk_product = pfp.fk_product and l.ref = pfp.ref_fourn";
$sql .= " WHERE l.fk_commande = ".$this->id; $sql .= " WHERE l.fk_commande = ".$this->id;
if ($only_product) $sql .= ' AND p.fk_product_type = 0'; if ($only_product) $sql .= ' AND p.fk_product_type = 0';
$sql .= " ORDER BY l.rang, l.rowid"; $sql .= " ORDER BY l.rang, l.rowid";
@ -516,7 +516,7 @@ class CommandeFournisseur extends CommonOrder
$line->packaging = $objp->packaging; $line->packaging = $objp->packaging;
} }
$line->date_start = $this->db->jdate($objp->date_start); $line->date_start = $this->db->jdate($objp->date_start);
$line->date_end = $this->db->jdate($objp->date_end); $line->date_end = $this->db->jdate($objp->date_end);
$line->fk_unit = $objp->fk_unit; $line->fk_unit = $objp->fk_unit;
@ -1701,7 +1701,7 @@ class CommandeFournisseur extends CommonOrder
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING))
{ {
$prod = new Product($this->db, $fk_product); $prod = new Product($this->db, $fk_product);
$prod->get_buyprice($fk_prod_fourn_price, $qty, $fk_product, 'none', ($this->fk_soc?$this->fk_soc:$this->socid)); $prod->get_buyprice($fk_prod_fourn_price, $qty, $fk_product, 'none', ($this->fk_soc ? $this->fk_soc : $this->socid));
if ($qty < $prod->packaging) if ($qty < $prod->packaging)
{ {
$qty = $prod->packaging; $qty = $prod->packaging;
@ -1710,7 +1710,7 @@ class CommandeFournisseur extends CommonOrder
{ {
if (($qty % $prod->packaging) > 0) if (($qty % $prod->packaging) > 0)
{ {
$coeff = intval($qty/$prod->packaging) + 1; $coeff = intval($qty / $prod->packaging) + 1;
$qty = $prod->packaging * $coeff; $qty = $prod->packaging * $coeff;
setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs'); setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs');
} }
@ -2679,7 +2679,7 @@ class CommandeFournisseur extends CommonOrder
{ {
if (($qty % $this->line->packaging) > 0) if (($qty % $this->line->packaging) > 0)
{ {
$coeff = intval($qty/$this->line->packaging) + 1; $coeff = intval($qty / $this->line->packaging) + 1;
$qty = $this->line->packaging * $coeff; $qty = $this->line->packaging * $coeff;
setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs'); setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs');
} }
@ -3451,11 +3451,11 @@ class CommandeFournisseurLigne extends CommonOrderLine
$sql .= ' cd.date_start, cd.date_end, cd.fk_unit,'; $sql .= ' cd.date_start, cd.date_end, cd.fk_unit,';
$sql .= ' cd.multicurrency_subprice, cd.multicurrency_total_ht, cd.multicurrency_total_tva, cd.multicurrency_total_ttc'; $sql .= ' cd.multicurrency_subprice, cd.multicurrency_total_ht, cd.multicurrency_total_tva, cd.multicurrency_total_ttc';
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING))
$sql.= ", pfp.rowid as fk_pfp, pfp.packaging"; $sql .= ", pfp.rowid as fk_pfp, pfp.packaging";
$sql .= ' FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet as cd'; $sql .= ' FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet as cd';
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON cd.fk_product = p.rowid'; $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON cd.fk_product = p.rowid';
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING))
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON cd.fk_product = pfp.fk_product and cd.ref = pfp.ref_fourn"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON cd.fk_product = pfp.fk_product and cd.ref = pfp.ref_fourn";
$sql .= ' WHERE cd.rowid = '.$rowid; $sql .= ' WHERE cd.rowid = '.$rowid;
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)

View File

@ -218,7 +218,7 @@ class FactureFournisseur extends CommonInvoice
public $fk_facture_source; public $fk_facture_source;
public $fields=array( public $fields = array(
'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10), 'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10),
'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'showoncombobox'=>1, 'position'=>15), 'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'showoncombobox'=>1, 'position'=>15),
'ref_supplier' =>array('type'=>'varchar(255)', 'label'=>'RefSupplier', 'enabled'=>1, 'visible'=>-1, 'position'=>20), 'ref_supplier' =>array('type'=>'varchar(255)', 'label'=>'RefSupplier', 'enabled'=>1, 'visible'=>-1, 'position'=>20),
@ -2287,7 +2287,7 @@ class FactureFournisseur extends CommonInvoice
if ($facturestatic->hasDelay()) { if ($facturestatic->hasDelay()) {
$response->nbtodolate++; $response->nbtodolate++;
$response->url_late=DOL_URL_ROOT.'/fourn/facture/list.php?option=late&mainmenu=billing&leftmenu=suppliers_bills'; $response->url_late = DOL_URL_ROOT.'/fourn/facture/list.php?option=late&mainmenu=billing&leftmenu=suppliers_bills';
} }
} }
$this->db->free($resql); $this->db->free($resql);

View File

@ -360,7 +360,7 @@ class ProductFournisseur extends Product
$sql .= " supplier_reputation = ".(empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'").","; $sql .= " supplier_reputation = ".(empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'").",";
$sql .= " barcode = ".(empty($barcode) ? 'NULL' : "'".$this->db->escape($barcode)."'").","; $sql .= " barcode = ".(empty($barcode) ? 'NULL' : "'".$this->db->escape($barcode)."'").",";
$sql .= " fk_barcode_type = ".(empty($fk_barcode_type) ? 'NULL' : "'".$this->db->escape($fk_barcode_type)."'"); $sql .= " fk_barcode_type = ".(empty($fk_barcode_type) ? 'NULL' : "'".$this->db->escape($fk_barcode_type)."'");
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql.= ", packaging = ".(empty($packaging) ? 1 : $packaging); if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", packaging = ".(empty($packaging) ? 1 : $packaging);
$sql .= " WHERE rowid = ".$this->product_fourn_price_id; $sql .= " WHERE rowid = ".$this->product_fourn_price_id;
// TODO Add price_base_type and price_ttc // TODO Add price_base_type and price_ttc
@ -410,7 +410,7 @@ class ProductFournisseur extends Product
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price(";
$sql .= " multicurrency_price, multicurrency_unitprice, multicurrency_tx, fk_multicurrency, multicurrency_code,"; $sql .= " multicurrency_price, multicurrency_unitprice, multicurrency_tx, fk_multicurrency, multicurrency_code,";
$sql .= "datec, fk_product, fk_soc, ref_fourn, desc_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, fk_availability, default_vat_code, info_bits, entity, delivery_time_days, supplier_reputation, barcode, fk_barcode_type)"; $sql .= "datec, fk_product, fk_soc, ref_fourn, desc_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, fk_availability, default_vat_code, info_bits, entity, delivery_time_days, supplier_reputation, barcode, fk_barcode_type)";
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql.= ", packaging"; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", packaging";
$sql .= " values("; $sql .= " values(";
$sql .= (isset($multicurrency_buyprice) ? "'".$this->db->escape(price2num($multicurrency_buyprice))."'" : 'null').","; $sql .= (isset($multicurrency_buyprice) ? "'".$this->db->escape(price2num($multicurrency_buyprice))."'" : 'null').",";
$sql .= (isset($multicurrency_unitBuyPrice) ? "'".$this->db->escape(price2num($multicurrency_unitBuyPrice))."'" : 'null').","; $sql .= (isset($multicurrency_unitBuyPrice) ? "'".$this->db->escape(price2num($multicurrency_unitBuyPrice))."'" : 'null').",";
@ -438,14 +438,14 @@ class ProductFournisseur extends Product
$sql .= (empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'").","; $sql .= (empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'").",";
$sql .= (empty($barcode) ? 'NULL' : "'".$this->db->escape($barcode)."'").","; $sql .= (empty($barcode) ? 'NULL' : "'".$this->db->escape($barcode)."'").",";
$sql .= (empty($fk_barcode_type) ? 'NULL' : "'".$this->db->escape($fk_barcode_type)."'"); $sql .= (empty($fk_barcode_type) ? 'NULL' : "'".$this->db->escape($fk_barcode_type)."'");
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql.= ", ".(empty($this->packaging) ? 1 : $this->db->escape($this->packaging)) ; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", ".(empty($this->packaging) ? 1 : $this->db->escape($this->packaging));
$sql .= ")"; $sql .= ")";
$this->product_fourn_price_id = 0; $this->product_fourn_price_id = 0;
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) { if ($resql) {
$this->product_fourn_price_id = $this->db->last_insert_id(MAIN_DB_PREFIX . "product_fournisseur_price"); $this->product_fourn_price_id = $this->db->last_insert_id(MAIN_DB_PREFIX."product_fournisseur_price");
} }
else { else {
$error++; $error++;
@ -505,7 +505,7 @@ class ProductFournisseur extends Product
$sql .= " pfp.supplier_reputation, pfp.fk_user, pfp.datec,"; $sql .= " pfp.supplier_reputation, pfp.fk_user, pfp.datec,";
$sql .= " pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code,"; $sql .= " pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code,";
$sql .= " pfp.barcode, pfp.fk_barcode_type"; $sql .= " pfp.barcode, pfp.fk_barcode_type";
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql.= ", pfp.packaging"; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", pfp.packaging";
$sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql .= " WHERE pfp.rowid = ".(int) $rowid; $sql .= " WHERE pfp.rowid = ".(int) $rowid;
@ -609,7 +609,7 @@ class ProductFournisseur extends Product
$sql .= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.info_bits, pfp.delivery_time_days, pfp.supplier_reputation,"; $sql .= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.info_bits, pfp.delivery_time_days, pfp.supplier_reputation,";
$sql .= " pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code, pfp.datec, pfp.tms,"; $sql .= " pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code, pfp.datec, pfp.tms,";
$sql .= " pfp.barcode, pfp.fk_barcode_type"; $sql .= " pfp.barcode, pfp.fk_barcode_type";
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql.= ", pfp.packaging"; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", pfp.packaging";
$sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."societe as s"; $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")"; $sql .= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")";
$sql .= " AND pfp.fk_soc = s.rowid"; $sql .= " AND pfp.fk_soc = s.rowid";

View File

@ -166,7 +166,7 @@ $sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
$sql .= ", ".MAIN_DB_PREFIX."commande_fournisseur as cf"; $sql .= ", ".MAIN_DB_PREFIX."commande_fournisseur as cf";
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql .= " WHERE cf.fk_soc = s.rowid"; $sql .= " WHERE cf.fk_soc = s.rowid";
$sql.= " AND cf.entity IN (".getEntity("supplier_order").")"; // Thirdparty sharing is mandatory with supplier order sharing $sql .= " AND cf.entity IN (".getEntity("supplier_order").")"; // Thirdparty sharing is mandatory with supplier order sharing
if ($user->socid) $sql .= ' AND cf.fk_soc = '.$user->socid; if ($user->socid) $sql .= ' AND cf.fk_soc = '.$user->socid;
if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
$sql .= " GROUP BY cf.fk_statut"; $sql .= " GROUP BY cf.fk_statut";
@ -253,23 +253,23 @@ if (!empty($conf->fournisseur->enabled))
*/ */
$sql = "SELECT"; $sql = "SELECT";
if (! empty($conf->multicompany->enabled) && ! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) { if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
$sql .= " DISTINCT"; $sql .= " DISTINCT";
} }
$sql.= " u.rowid, u.lastname, u.firstname, u.email, u.statut"; $sql .= " u.rowid, u.lastname, u.firstname, u.email, u.statut";
$sql.= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u";
if (! empty($conf->multicompany->enabled) && ! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
{ {
$sql.= ",".MAIN_DB_PREFIX."usergroup_user as ug"; $sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug";
$sql.= " WHERE ((ug.fk_user = u.rowid"; $sql .= " WHERE ((ug.fk_user = u.rowid";
$sql.= " AND ug.entity IN (".getEntity('usergroup')."))"; $sql .= " AND ug.entity IN (".getEntity('usergroup')."))";
$sql.= " OR u.entity = 0)"; // Show always superadmin $sql .= " OR u.entity = 0)"; // Show always superadmin
} }
else else
{ {
$sql.= " WHERE (u.entity IN (".getEntity('user').")"; $sql .= " WHERE (u.entity IN (".getEntity('user').")";
} }
$sql.= " AND u.fk_soc IS NULL"; // An external user can not approved $sql .= " AND u.fk_soc IS NULL"; // An external user can not approved
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
@ -290,7 +290,7 @@ if ($resql)
$userstatic->id = $obj->rowid; $userstatic->id = $obj->rowid;
$userstatic->getrights('fournisseur'); $userstatic->getrights('fournisseur');
if (! empty($userstatic->rights->fournisseur->commande->approuver)) if (!empty($userstatic->rights->fournisseur->commande->approuver))
{ {
print '<tr class="oddeven">'; print '<tr class="oddeven">';
print '<td>'; print '<td>';

View File

@ -301,8 +301,8 @@ if (empty($reshook))
$paiement->num_payment = GETPOST('num_paiement', 'alpha'); $paiement->num_payment = GETPOST('num_paiement', 'alpha');
$paiement->note_private = GETPOST('comment', 'alpha'); $paiement->note_private = GETPOST('comment', 'alpha');
$paiement->num_paiement = $paiement->num_payment; // For bacward compatibility $paiement->num_paiement = $paiement->num_payment; // For bacward compatibility
$paiement->note = $paiement->note_private; // For bacward compatibility $paiement->note = $paiement->note_private; // For bacward compatibility
if (!$error) if (!$error)
{ {

View File

@ -263,13 +263,7 @@ class AutoLoader
* @return bool false unless className now exists * @return bool false unless className now exists
*/ */
private function loadLastResort($className, $loader = null) { private function loadLastResort($className, $loader = null) {
// @CHANGE LDR Add protection to avoid conflict with other autoloader $loaders = array_unique(static::$rogueLoaders);
/*print 'Try to load '.$className."\n";
if (in_array($className, array('Google_Client')))
{
return false;
}*/
$loaders = array_unique(static::$rogueLoaders);
if (isset($loader)) { if (isset($loader)) {
if (false === array_search($loader, $loaders)) if (false === array_search($loader, $loaders))
static::$rogueLoaders[] = $loader; static::$rogueLoaders[] = $loader;

View File

@ -159,7 +159,7 @@ class CommentParser
$addNewline = true; $addNewline = true;
} }
continue; continue;
} elseif ($line{0} == '@') { } elseif ($line[0] == '@') {
$mode = 2; $mode = 2;
$newParam = true; $newParam = true;
} }
@ -353,7 +353,7 @@ class CommentParser
$data = $format->decode($str); $data = $format->decode($str);
} }
} else { // auto detect } else { // auto detect
if ($str{0} == '{') { if ($str[0] == '{') {
$d = json_decode($str, true); $d = json_decode($str, true);
if (json_last_error() != JSON_ERROR_NONE) { if (json_last_error() != JSON_ERROR_NONE) {
throw new Exception('Error parsing embedded JSON data' throw new Exception('Error parsing embedded JSON data'
@ -445,7 +445,7 @@ class CommentParser
{ {
$r = array(); $r = array();
$email = end($value); $email = end($value);
if ($email{0} == '<') { if ($email[0] == '<') {
$email = substr($email, 1, -1); $email = substr($email, 1, -1);
array_pop($value); array_pop($value);
$r['email'] = $email; $r['email'] = $email;
@ -470,7 +470,7 @@ class CommentParser
$data = array_shift($value); $data = array_shift($value);
if (empty($data)) { if (empty($data)) {
$r['type'] = 'mixed'; $r['type'] = 'mixed';
} elseif ($data{0} == '$') { } elseif ($data[0] == '$') {
$r['name'] = substr($data, 1); $r['name'] = substr($data, 1);
$r['type'] = 'mixed'; $r['type'] = 'mixed';
} else { } else {
@ -478,7 +478,7 @@ class CommentParser
$r['type'] = count($data) == 1 ? $data[0] : $data; $r['type'] = count($data) == 1 ? $data[0] : $data;
$data = array_shift($value); $data = array_shift($value);
if (!empty($data) && $data{0} == '$') { if (!empty($data) && $data[0] == '$') {
$r['name'] = substr($data, 1); $r['name'] = substr($data, 1);
} }
} }
@ -498,7 +498,7 @@ class CommentParser
$data = array_shift($value); $data = array_shift($value);
if (empty($data)) { if (empty($data)) {
$r['type'] = 'mixed'; $r['type'] = 'mixed';
} elseif ($data{0} == '$') { } elseif ($data[0] == '$') {
$r['name'] = substr($data, 1); $r['name'] = substr($data, 1);
$r['type'] = 'mixed'; $r['type'] = 'mixed';
} else { } else {

View File

@ -221,7 +221,7 @@ class XmlFormat extends Format
$namespaces = $xml->getNamespaces(); $namespaces = $xml->getNamespaces();
if (count($namespaces)) { if (count($namespaces)) {
$p = strpos($data, $xml->getName()); $p = strpos($data, $xml->getName());
if ($p && $data{$p - 1} == ':') { if ($p && $data[$p - 1] == ':') {
$s = strpos($data, '<') + 1; $s = strpos($data, '<') + 1;
$prefix = substr($data, $s, $p - $s - 1); $prefix = substr($data, $s, $p - $s - 1);
static::$namespacedProperties[static::$rootName] = $prefix; static::$namespacedProperties[static::$rootName] = $prefix;

View File

@ -198,7 +198,7 @@ class Resources implements iUseAuthentication, iProvideMultiVersionApi
} elseif (false !== ($pos = strpos($id, '-v'))) { } elseif (false !== ($pos = strpos($id, '-v'))) {
//$version = intval(substr($id, $pos + 2)); //$version = intval(substr($id, $pos + 2));
$id = substr($id, 0, $pos); $id = substr($id, 0, $pos);
} elseif ($id{0} == 'v' && is_numeric($v = substr($id, 1))) { } elseif ($id[0] == 'v' && is_numeric($v = substr($id, 1))) {
$id = ''; $id = '';
//$version = $v; //$version = $v;
} elseif ($id == 'root' || $id == 'index') { } elseif ($id == 'root' || $id == 'index') {
@ -233,7 +233,7 @@ class Resources implements iUseAuthentication, iProvideMultiVersionApi
if ($tSlash) { if ($tSlash) {
if ($fLen != $tLen && !Text::beginsWith($fullPath, $target . '/')) if ($fLen != $tLen && !Text::beginsWith($fullPath, $target . '/'))
continue; continue;
} elseif ($fLen > $tLen + 1 && $fullPath{$tLen + 1} != '{' && !Text::beginsWith($fullPath, '{')) { } elseif ($fLen > $tLen + 1 && $fullPath[$tLen + 1] != '{' && !Text::beginsWith($fullPath, '{')) {
//when mapped to root exclude paths that have static parts //when mapped to root exclude paths that have static parts
//they are listed else where under that static part name //they are listed else where under that static part name
continue; continue;
@ -275,7 +275,7 @@ class Resources implements iUseAuthentication, iProvideMultiVersionApi
if (count($parts) == 1 && $httpMethod == 'GET') { if (count($parts) == 1 && $httpMethod == 'GET') {
} else { } else {
for ($i = 0; $i < count($parts); $i++) { for ($i = 0; $i < count($parts); $i++) {
if (strlen($parts[$i]) && $parts[$i]{0} == '{') { if (strlen($parts[$i]) && $parts[$i][0] == '{') {
$pos = $i - 1; $pos = $i - 1;
break; break;
} }

View File

@ -533,7 +533,7 @@ class Restler extends EventDispatcher
rtrim($path, '/') //remove trailing slash if found rtrim($path, '/') //remove trailing slash if found
); );
if (Defaults::$useUrlBasedVersioning && strlen($path) && $path{0} == 'v') { if (Defaults::$useUrlBasedVersioning && strlen($path) && $path[0] == 'v') {
$version = intval(substr($path, 1)); $version = intval(substr($path, 1));
if ($version && $version <= $this->apiVersion) { if ($version && $version <= $this->apiVersion) {
$this->requestedApiVersion = $version; $this->requestedApiVersion = $version;
@ -1599,7 +1599,7 @@ class Restler extends EventDispatcher
*/ */
public function __get($name) public function __get($name)
{ {
if ($name{0} == '_') { if ($name[0] == '_') {
$hiddenProperty = substr($name, 1); $hiddenProperty = substr($name, 1);
if (isset($this->$hiddenProperty)) { if (isset($this->$hiddenProperty)) {
return $this->$hiddenProperty; return $this->$hiddenProperty;

View File

@ -87,7 +87,7 @@ class Routes
foreach ($methods as $method) { foreach ($methods as $method) {
$methodUrl = strtolower($method->getName()); $methodUrl = strtolower($method->getName());
//method name should not begin with _ //method name should not begin with _
if ($methodUrl{0} == '_') { if ($methodUrl[0] == '_') {
continue; continue;
} }
$doc = $method->getDocComment(); $doc = $method->getDocComment();
@ -330,7 +330,7 @@ class Routes
if (!$type) { if (!$type) {
return 's'; return 's';
} }
switch ($type{0}) { switch ($type[0]) {
case 'i': case 'i':
case 'f': case 'f':
return 'n'; return 'n';
@ -428,7 +428,7 @@ class Routes
} }
$index = intval(substr($k, 1)); $index = intval(substr($k, 1));
$details = $value[$httpMethod]['metadata']['param'][$index]; $details = $value[$httpMethod]['metadata']['param'][$index];
if ($k{0} == 's' || strpos($k, static::pathVarTypeOf($v)) === 0) { if ($k[0] == 's' || strpos($k, static::pathVarTypeOf($v)) === 0) {
//remove the newlines //remove the newlines
$data[$details['name']] = trim($v, PHP_EOL); $data[$details['name']] = trim($v, PHP_EOL);
} else { } else {

View File

@ -203,7 +203,7 @@ class Scope
$divider = '\\'; $divider = '\\';
$qualified = false; $qualified = false;
if ($className{0} == $divider) { if ($className[0] == $divider) {
$qualified = trim($className, $divider); $qualified = trim($className, $divider);
} elseif (array_key_exists($className, $scope)) { } elseif (array_key_exists($className, $scope)) {
$qualified = $scope[$className]; $qualified = $scope[$className];

View File

@ -356,7 +356,7 @@ class Emmet
$pos = strpos($string, $f, $start); $pos = strpos($string, $f, $start);
$tokens = array(); $tokens = array();
for ($i = $start; $i < $pos; $i++) { for ($i = $start; $i < $pos; $i++) {
$token = $string{$i}; $token = $string[$i];
if (('#' == $token || '.' == $token) && if (('#' == $token || '.' == $token) &&
(!empty($tokens) || $i == 0) (!empty($tokens) || $i == 0)
) { ) {
@ -368,7 +368,7 @@ class Emmet
$r[] = $f; $r[] = $f;
} while (false != ($f = strtok(static::DELIMITERS))); } while (false != ($f = strtok(static::DELIMITERS)));
for ($i = $pos; $i < strlen($string); $i++) { for ($i = $pos; $i < strlen($string); $i++) {
$token = $string{$i}; $token = $string[$i];
$r[] = $tokens[] = $token; $r[] = $tokens[] = $token;
} }
return $r; return $r;

View File

@ -44,6 +44,19 @@ ALTER TABLE llx_commande_fournisseur_dispatch_extrafields ADD INDEX idx_commande
-- For v12 -- For v12
UPDATE llx_website SET lang = 'en' WHERE lang like 'en_%';
UPDATE llx_website SET lang = 'fr' WHERE lang like 'fr_%';
UPDATE llx_website SET lang = 'es' WHERE lang like 'es_%';
UPDATE llx_website SET lang = 'de' WHERE lang like 'de_%';
UPDATE llx_website SET lang = 'it' WHERE lang like 'it_%';
UPDATE llx_website SET lang = 'pt' WHERE lang like 'pt_%';
UPDATE llx_website_page SET lang = 'en' WHERE lang like 'en_%';
UPDATE llx_website_page SET lang = 'fr' WHERE lang like 'fr_%';
UPDATE llx_website_page SET lang = 'es' WHERE lang like 'es_%';
UPDATE llx_website_page SET lang = 'de' WHERE lang like 'de_%';
UPDATE llx_website_page SET lang = 'it' WHERE lang like 'it_%';
UPDATE llx_website_page SET lang = 'pt' WHERE lang like 'pt_%';
ALTER TABLE llx_website ADD COLUMN lang varchar(8); ALTER TABLE llx_website ADD COLUMN lang varchar(8);
ALTER TABLE llx_website ADD COLUMN otherlang varchar(255); ALTER TABLE llx_website ADD COLUMN otherlang varchar(255);

View File

@ -228,6 +228,8 @@ ErrorFieldRequiredForProduct=Field '%s' is required for product %s
ProblemIsInSetupOfTerminal=Problem is in setup of terminal %s. ProblemIsInSetupOfTerminal=Problem is in setup of terminal %s.
ErrorAddAtLeastOneLineFirst=Add at least one line first ErrorAddAtLeastOneLineFirst=Add at least one line first
ErrorRecordAlreadyInAccountingDeletionNotPossible=Error, record is already transferred in accounting, deletion is not possible. ErrorRecordAlreadyInAccountingDeletionNotPossible=Error, record is already transferred in accounting, deletion is not possible.
ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Error, language is mandatory if you set the page as a translation of another one.
ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated page is same than this one.
# Warnings # Warnings
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.

View File

@ -65,7 +65,7 @@ Language_mk_MK=Macedonian
Language_mn_MN=Mongolian Language_mn_MN=Mongolian
Language_nb_NO=Norwegian (Bokmål) Language_nb_NO=Norwegian (Bokmål)
Language_nl_BE=Dutch (Belgium) Language_nl_BE=Dutch (Belgium)
Language_nl_NL=Dutch (Netherlands) Language_nl_NL=Dutch
Language_pl_PL=Polish Language_pl_PL=Polish
Language_pt_BR=Portuguese (Brazil) Language_pt_BR=Portuguese (Brazil)
Language_pt_PT=Portuguese Language_pt_PT=Portuguese

View File

@ -1623,31 +1623,6 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
print '<div class="login_block usedropdown">'."\n"; print '<div class="login_block usedropdown">'."\n";
// Add login user link
$toprightmenu .= '<div class="login_block_user">';
// Login name with photo and tooltip
$mode = -1;
$toprightmenu .= '<div class="inline-block nowrap"><div class="inline-block login_block_elem login_block_elem_name" style="padding: 0px;">';
if (!empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)) {
// Add search dropdown
$toprightmenu .= top_menu_search();
}
if (!empty($conf->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN)) {
// Add bookmark dropdown
$toprightmenu .= top_menu_bookmark();
}
// Add user dropdown
$toprightmenu .= top_menu_user();
$toprightmenu .= '</div></div>';
$toprightmenu .= '</div>'."\n";
$toprightmenu .= '<div class="login_block_other">'; $toprightmenu .= '<div class="login_block_other">';
// Execute hook printTopRightMenu (hooks should output string like '<div class="login"><a href="">mylink</a></div>') // Execute hook printTopRightMenu (hooks should output string like '<div class="login"><a href="">mylink</a></div>')
@ -1739,7 +1714,31 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
// Logout link // Logout link
$toprightmenu .= @Form::textwithtooltip('', $logouthtmltext, 2, 1, $logouttext, 'login_block_elem logout-btn', 2); $toprightmenu .= @Form::textwithtooltip('', $logouthtmltext, 2, 1, $logouttext, 'login_block_elem logout-btn', 2);
$toprightmenu .= '</div>'; $toprightmenu .= '</div>'; // end div class="login_block_other"
// Add login user link
$toprightmenu .= '<div class="login_block_user">';
// Login name with photo and tooltip
$mode = -1;
$toprightmenu .= '<div class="inline-block nowrap"><div class="inline-block login_block_elem login_block_elem_name" style="padding: 0px;">';
if (!empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)) {
// Add search dropdown
$toprightmenu .= top_menu_search();
}
// Add bookmark dropdown
$toprightmenu .= top_menu_bookmark();
// Add user dropdown
$toprightmenu .= top_menu_user();
$toprightmenu .= '</div></div>';
$toprightmenu .= '</div>'."\n";
print $toprightmenu; print $toprightmenu;
@ -1940,7 +1939,7 @@ function top_menu_bookmark()
$langs->load("bookmarks"); $langs->load("bookmarks");
$html .= '<!-- div for bookmark link --> $html .= '<!-- div for bookmark link -->
<div id="topmenu-bookmark-dropdown" class="atoplogin dropdown inline-block"> <div id="topmenu-bookmark-dropdown" class="dropdown inline-block">
<a class="dropdown-toggle login-dropdown-a" data-toggle="dropdown" href="#" title="'.$langs->trans('Bookmarks').' ('.$langs->trans('BookmarksMenuShortCut').')"> <a class="dropdown-toggle login-dropdown-a" data-toggle="dropdown" href="#" title="'.$langs->trans('Bookmarks').' ('.$langs->trans('BookmarksMenuShortCut').')">
<i class="fa fa-star" ></i> <i class="fa fa-star" ></i>
</a> </a>
@ -1949,21 +1948,21 @@ function top_menu_bookmark()
</div> </div>
</div>'; </div>';
$html .= ' $html .= '
<!-- Code to show/hide the user drop-down --> <!-- Code to show/hide the user drop-down -->
<script> <script>
$( document ).ready(function() { $( document ).ready(function() {
$(document).on("click", function(event) { $(document).on("click", function(event) {
if (!$(event.target).closest("#topmenu-bookmark-dropdown").length) { if (!$(event.target).closest("#topmenu-bookmark-dropdown").length) {
console.log("close");
// Hide the menus. // Hide the menus.
$("#topmenu-bookmark-dropdown").removeClass("open"); $("#topmenu-bookmark-dropdown").removeClass("open");
} }
}); });
$("#topmenu-bookmark-dropdown .dropdown-toggle").on("click", function(event) { $("#topmenu-bookmark-dropdown .dropdown-toggle").on("click", function(event) {
openBookMarkDropDown(); console.log("toggle");
openBookMarkDropDown();
}); });
// Key map shortcut // Key map shortcut
@ -2188,15 +2187,6 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
} }
} }
// Define $bookmarks
if (!empty($conf->bookmark->enabled) && $user->rights->bookmark->lire && empty($conf->global->MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN))
{
include_once DOL_DOCUMENT_ROOT.'/bookmarks/bookmarks.lib.php';
$langs->load("bookmarks");
$bookmarks = printBookmarksList();
}
// Left column // Left column
print '<!-- Begin left menu -->'."\n"; print '<!-- Begin left menu -->'."\n";

View File

@ -25,39 +25,39 @@
*/ */
// Load Dolibarr environment // Load Dolibarr environment
$res=0; $res = 0;
// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)
if (! $res && ! empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res=@include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME // Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME
$tmp=empty($_SERVER['SCRIPT_FILENAME'])?'':$_SERVER['SCRIPT_FILENAME'];$tmp2=realpath(__FILE__); $i=strlen($tmp)-1; $j=strlen($tmp2)-1; $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1;
while($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i]==$tmp2[$j]) { $i--; $j--; } while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; }
if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/main.inc.php")) $res=@include substr($tmp, 0, ($i+1))."/main.inc.php"; if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
if (! $res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i+1)))."/main.inc.php")) $res=@include dirname(substr($tmp, 0, ($i+1)))."/main.inc.php"; if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
// Try main.inc.php using relative path // Try main.inc.php using relative path
if (! $res && file_exists("../main.inc.php")) $res=@include "../main.inc.php"; if (!$res && file_exists("../main.inc.php")) $res = @include "../main.inc.php";
if (! $res && file_exists("../../main.inc.php")) $res=@include "../../main.inc.php"; if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php";
if (! $res && file_exists("../../../main.inc.php")) $res=@include "../../../main.inc.php"; if (!$res && file_exists("../../../main.inc.php")) $res = @include "../../../main.inc.php";
if (! $res) die("Include of main fails"); if (!$res) die("Include of main fails");
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
// Load translation files required by the page // Load translation files required by the page
$langs->loadLangs(array("mymodule@mymodule")); $langs->loadLangs(array("mymodule@mymodule"));
$action=GETPOST('action', 'alpha'); $action = GETPOST('action', 'alpha');
// Security check // Security check
//if (! $user->rights->mymodule->myobject->read) accessforbidden(); //if (! $user->rights->mymodule->myobject->read) accessforbidden();
$socid=GETPOST('socid', 'int'); $socid = GETPOST('socid', 'int');
if (isset($user->socid) && $user->socid > 0) if (isset($user->socid) && $user->socid > 0)
{ {
$action = ''; $action = '';
$socid = $user->socid; $socid = $user->socid;
} }
$max=5; $max = 5;
$now=dol_now(); $now = dol_now();
/* /*
@ -164,8 +164,8 @@ END MODULEBUILDER DRAFT MYOBJECT */
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">'; print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
$NBMAX=3; $NBMAX = 3;
$max=3; $max = 3;
/* BEGIN MODULEBUILDER LASTMODIFIED MYOBJECT /* BEGIN MODULEBUILDER LASTMODIFIED MYOBJECT
// Last modified myobject // Last modified myobject

View File

@ -624,7 +624,7 @@ class Mo extends CommonObject
$moline->role = 'toproduce'; $moline->role = 'toproduce';
$moline->position = 1; $moline->position = 1;
$resultline = $moline->create($user, false); // Never use triggers here $resultline = $moline->create($user, false); // Never use triggers here
if ($resultline <= 0) { if ($resultline <= 0) {
$error++; $error++;
$this->error = $moline->error; $this->error = $moline->error;
@ -639,14 +639,14 @@ class Mo extends CommonObject
if ($bom->id > 0) if ($bom->id > 0)
{ {
// Lines to consume // Lines to consume
if (! $error) { if (!$error) {
foreach ($bom->lines as $line) foreach ($bom->lines as $line)
{ {
$moline = new MoLine($this->db); $moline = new MoLine($this->db);
$moline->fk_mo = $this->id; $moline->fk_mo = $this->id;
if ($line->qty_frozen) { if ($line->qty_frozen) {
$moline->qty = $line->qty; // Qty to consume does not depends on quantity to produce $moline->qty = $line->qty; // Qty to consume does not depends on quantity to produce
} else { } else {
$moline->qty = round($line->qty * $this->qty / $bom->efficiency, 2); $moline->qty = round($line->qty * $this->qty / $bom->efficiency, 2);
} }
@ -662,7 +662,7 @@ class Mo extends CommonObject
$moline->qty_frozen = $line->qty_frozen; $moline->qty_frozen = $line->qty_frozen;
$moline->disable_stock_change = $line->disable_stock_change; $moline->disable_stock_change = $line->disable_stock_change;
$resultline = $moline->create($user, false); // Never use triggers here $resultline = $moline->create($user, false); // Never use triggers here
if ($resultline <= 0) { if ($resultline <= 0) {
$error++; $error++;
$this->error = $moline->error; $this->error = $moline->error;
@ -985,7 +985,7 @@ class Mo extends CommonObject
* Return a link to the object card (with optionaly the picto) * Return a link to the object card (with optionaly the picto)
* *
* @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
* @param string $option On what the link point to ('nolink', ...) * @param string $option On what the link point to ('nolink', '', 'production', ...)
* @param int $notooltip 1=Disable tooltip * @param int $notooltip 1=Disable tooltip
* @param string $morecss Add more css on link * @param string $morecss Add more css on link
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
@ -1007,6 +1007,7 @@ class Mo extends CommonObject
} }
$url = dol_buildpath('/mrp/mo_card.php', 1).'?id='.$this->id; $url = dol_buildpath('/mrp/mo_card.php', 1).'?id='.$this->id;
if ($option = 'production') $url = dol_buildpath('/mrp/mo_production.php', 1).'?id='.$this->id;
if ($option != 'nolink') if ($option != 'nolink')
{ {
@ -1370,21 +1371,21 @@ class MoLine extends CommonObjectLine
public $fields = array( public $fields = array(
'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10), 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10),
'fk_mo' =>array('type'=>'integer', 'label'=>'Fk mo', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>15), 'fk_mo' =>array('type'=>'integer', 'label'=>'Mo', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>15),
'position' =>array('type'=>'integer', 'label'=>'Position', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>20), 'position' =>array('type'=>'integer', 'label'=>'Position', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>20),
'fk_product' =>array('type'=>'integer', 'label'=>'Fk product', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>25), 'fk_product' =>array('type'=>'integer', 'label'=>'Product', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>25),
'fk_warehouse' =>array('type'=>'integer', 'label'=>'Fk warehouse', 'enabled'=>1, 'visible'=>-1, 'position'=>30), 'fk_warehouse' =>array('type'=>'integer', 'label'=>'Warehouse', 'enabled'=>1, 'visible'=>-1, 'position'=>30),
'qty' =>array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>35), 'qty' =>array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>35),
'qty_frozen' => array('type'=>'smallint', 'label'=>'QuantityFrozen', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>105, 'css'=>'maxwidth50imp', 'help'=>'QuantityConsumedInvariable'), 'qty_frozen' => array('type'=>'smallint', 'label'=>'QuantityFrozen', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>105, 'css'=>'maxwidth50imp', 'help'=>'QuantityConsumedInvariable'),
'disable_stock_change' => array('type'=>'smallint', 'label'=>'DisableStockChange', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>108, 'css'=>'maxwidth50imp', 'help'=>'DisableStockChangeHelp'), 'disable_stock_change' => array('type'=>'smallint', 'label'=>'DisableStockChange', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>108, 'css'=>'maxwidth50imp', 'help'=>'DisableStockChangeHelp'),
'batch' =>array('type'=>'varchar(30)', 'label'=>'Batch', 'enabled'=>1, 'visible'=>-1, 'position'=>140), 'batch' =>array('type'=>'varchar(30)', 'label'=>'Batch', 'enabled'=>1, 'visible'=>-1, 'position'=>140),
'role' =>array('type'=>'varchar(10)', 'label'=>'Role', 'enabled'=>1, 'visible'=>-1, 'position'=>145), 'role' =>array('type'=>'varchar(10)', 'label'=>'Role', 'enabled'=>1, 'visible'=>-1, 'position'=>145),
'fk_mrp_production' =>array('type'=>'integer', 'label'=>'Fk mrp production', 'enabled'=>1, 'visible'=>-1, 'position'=>150), 'fk_mrp_production' =>array('type'=>'integer', 'label'=>'Fk mrp production', 'enabled'=>1, 'visible'=>-1, 'position'=>150),
'fk_stock_movement' =>array('type'=>'integer', 'label'=>'Fk stock movement', 'enabled'=>1, 'visible'=>-1, 'position'=>155), 'fk_stock_movement' =>array('type'=>'integer', 'label'=>'StockMovement', 'enabled'=>1, 'visible'=>-1, 'position'=>155),
'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>160), 'date_creation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>160),
'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>165), 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>165),
'fk_user_creat' =>array('type'=>'integer', 'label'=>'Fk user creat', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>170), 'fk_user_creat' =>array('type'=>'integer', 'label'=>'UserCreation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>170),
'fk_user_modif' =>array('type'=>'integer', 'label'=>'Fk user modif', 'enabled'=>1, 'visible'=>-1, 'position'=>175), 'fk_user_modif' =>array('type'=>'integer', 'label'=>'UserModification', 'enabled'=>1, 'visible'=>-1, 'position'=>175),
'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-1, 'position'=>180), 'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-1, 'position'=>180),
); );

View File

@ -670,57 +670,57 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print "</tr>\n"; print "</tr>\n";
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
if (! empty($arrayfields['m.rowid']['checked'])) if (!empty($arrayfields['m.rowid']['checked']))
print_liste_field_titre($arrayfields['m.rowid']['label'], $_SERVER["PHP_SELF"], 'm.rowid', '', $param, '', $sortfield, $sortorder); print_liste_field_titre($arrayfields['m.rowid']['label'], $_SERVER["PHP_SELF"], 'm.rowid', '', $param, '', $sortfield, $sortorder);
if (! empty($arrayfields['m.datem']['checked'])) if (!empty($arrayfields['m.datem']['checked']))
print_liste_field_titre($arrayfields['m.datem']['label'], $_SERVER["PHP_SELF"], 'm.datem', '', $param, '', $sortfield, $sortorder); print_liste_field_titre($arrayfields['m.datem']['label'], $_SERVER["PHP_SELF"], 'm.datem', '', $param, '', $sortfield, $sortorder);
if (! empty($arrayfields['p.ref']['checked'])) if (!empty($arrayfields['p.ref']['checked']))
print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], 'p.ref', '', $param, '', $sortfield, $sortorder); print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], 'p.ref', '', $param, '', $sortfield, $sortorder);
if (! empty($arrayfields['p.label']['checked'])) if (!empty($arrayfields['p.label']['checked']))
print_liste_field_titre($arrayfields['p.label']['label'], $_SERVER["PHP_SELF"], 'p.label', '', $param, '', $sortfield, $sortorder); print_liste_field_titre($arrayfields['p.label']['label'], $_SERVER["PHP_SELF"], 'p.label', '', $param, '', $sortfield, $sortorder);
if (! empty($arrayfields['m.batch']['checked'])) if (!empty($arrayfields['m.batch']['checked']))
print_liste_field_titre($arrayfields['m.batch']['label'], $_SERVER["PHP_SELF"], 'm.batch', '', $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre($arrayfields['m.batch']['label'], $_SERVER["PHP_SELF"], 'm.batch', '', $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['pl.eatby']['checked'])) if (!empty($arrayfields['pl.eatby']['checked']))
print_liste_field_titre($arrayfields['pl.eatby']['label'], $_SERVER["PHP_SELF"], 'pl.eatby', '', $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre($arrayfields['pl.eatby']['label'], $_SERVER["PHP_SELF"], 'pl.eatby', '', $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['pl.sellby']['checked'])) if (!empty($arrayfields['pl.sellby']['checked']))
print_liste_field_titre($arrayfields['pl.sellby']['label'], $_SERVER["PHP_SELF"], 'pl.sellby', '', $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre($arrayfields['pl.sellby']['label'], $_SERVER["PHP_SELF"], 'pl.sellby', '', $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['e.ref']['checked'])) { if (!empty($arrayfields['e.ref']['checked'])) {
// We are on a specific warehouse card, no filter on other should be possible // We are on a specific warehouse card, no filter on other should be possible
print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"], "e.ref", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"], "e.ref", "", $param, "", $sortfield, $sortorder);
} }
if (! empty($arrayfields['m.fk_user_author']['checked'])) if (!empty($arrayfields['m.fk_user_author']['checked']))
print_liste_field_titre($arrayfields['m.fk_user_author']['label'], $_SERVER["PHP_SELF"], "m.fk_user_author", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['m.fk_user_author']['label'], $_SERVER["PHP_SELF"], "m.fk_user_author", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['m.inventorycode']['checked'])) if (!empty($arrayfields['m.inventorycode']['checked']))
print_liste_field_titre($arrayfields['m.inventorycode']['label'], $_SERVER["PHP_SELF"], "m.inventorycode", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['m.inventorycode']['label'], $_SERVER["PHP_SELF"], "m.inventorycode", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['m.label']['checked'])) if (!empty($arrayfields['m.label']['checked']))
print_liste_field_titre($arrayfields['m.label']['label'], $_SERVER["PHP_SELF"], "m.label", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['m.label']['label'], $_SERVER["PHP_SELF"], "m.label", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['m.type_mouvement']['checked'])) if (!empty($arrayfields['m.type_mouvement']['checked']))
print_liste_field_titre($arrayfields['m.type_mouvement']['label'], $_SERVER["PHP_SELF"], "m.type_mouvement", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre($arrayfields['m.type_mouvement']['label'], $_SERVER["PHP_SELF"], "m.type_mouvement", "", $param, '', $sortfield, $sortorder, 'center ');
if (! empty($arrayfields['origin']['checked'])) if (!empty($arrayfields['origin']['checked']))
print_liste_field_titre($arrayfields['origin']['label'], $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($arrayfields['origin']['label'], $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
if (! empty($arrayfields['m.value']['checked'])) if (!empty($arrayfields['m.value']['checked']))
print_liste_field_titre($arrayfields['m.value']['label'], $_SERVER["PHP_SELF"], "m.value", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre($arrayfields['m.value']['label'], $_SERVER["PHP_SELF"], "m.value", "", $param, '', $sortfield, $sortorder, 'right ');
if (! empty($arrayfields['m.price']['checked'])) if (!empty($arrayfields['m.price']['checked']))
print_liste_field_titre($arrayfields['m.price']['label'], $_SERVER["PHP_SELF"], "m.price", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre($arrayfields['m.price']['label'], $_SERVER["PHP_SELF"], "m.price", "", $param, '', $sortfield, $sortorder, 'right ');
// Extra fields // Extra fields
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_list_search_title.tpl.php'; include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
// Hook fields // Hook fields
$parameters = array('arrayfields' => $arrayfields,'param' => $param,'sortfield' => $sortfield,'sortorder' => $sortorder); $parameters = array('arrayfields' => $arrayfields, 'param' => $param, 'sortfield' => $sortfield, 'sortorder' => $sortorder);
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint; print $hookmanager->resPrint;
if (! empty($arrayfields['m.datec']['checked'])) { if (!empty($arrayfields['m.datec']['checked'])) {
print_liste_field_titre($arrayfields['p.datec']['label'], $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap '); print_liste_field_titre($arrayfields['p.datec']['label'], $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
} }
if (! empty($arrayfields['m.tms']['checked'])) { if (!empty($arrayfields['m.tms']['checked'])) {
print_liste_field_titre($arrayfields['p.tms']['label'], $_SERVER["PHP_SELF"], "p.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap '); print_liste_field_titre($arrayfields['p.tms']['label'], $_SERVER["PHP_SELF"], "p.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
} }
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
print "</tr>\n"; print "</tr>\n";
$resql = $db->query($sql); $resql = $db->query($sql);
if (! $resql) { if (!$resql) {
dol_print_error($db); dol_print_error($db);
} }
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
@ -752,7 +752,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$warehousestatic->label = $objp->warehouse_ref; $warehousestatic->label = $objp->warehouse_ref;
$warehousestatic->lieu = $objp->lieu; $warehousestatic->lieu = $objp->lieu;
if (! empty($objp->fk_origin)) { if (!empty($objp->fk_origin)) {
$origin = $objectlist->get_origin($objp->fk_origin, $objp->origintype); $origin = $objectlist->get_origin($objp->fk_origin, $objp->origintype);
} else { } else {
$origin = ''; $origin = '';
@ -760,21 +760,21 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print '<tr class="oddeven">'; print '<tr class="oddeven">';
// Id movement // Id movement
if (! empty($arrayfields['m.rowid']['checked'])) { if (!empty($arrayfields['m.rowid']['checked'])) {
// This is primary not movement id // This is primary not movement id
print '<td>' . $objp->mid . '</td>'; print '<td>'.$objp->mid.'</td>';
} }
if (! empty($arrayfields['m.datem']['checked'])) { if (!empty($arrayfields['m.datem']['checked'])) {
// Date // Date
print '<td>' . dol_print_date($db->jdate($objp->datem), 'dayhour') . '</td>'; print '<td>'.dol_print_date($db->jdate($objp->datem), 'dayhour').'</td>';
} }
if (! empty($arrayfields['p.ref']['checked'])) { if (!empty($arrayfields['p.ref']['checked'])) {
// Product ref // Product ref
print '<td class="nowraponall">'; print '<td class="nowraponall">';
print $productstatic->getNomUrl(1, 'stock', 16); print $productstatic->getNomUrl(1, 'stock', 16);
print "</td>\n"; print "</td>\n";
} }
if (! empty($arrayfields['p.label']['checked'])) { if (!empty($arrayfields['p.label']['checked'])) {
// Product label // Product label
print '<td>'; print '<td>';
/* /*
@ -786,7 +786,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print $productstatic->label; print $productstatic->label;
print "</td>\n"; print "</td>\n";
} }
if (! empty($arrayfields['m.batch']['checked'])) { if (!empty($arrayfields['m.batch']['checked'])) {
print '<td class="center nowraponall">'; print '<td class="center nowraponall">';
if ($productlot->id > 0) if ($productlot->id > 0)
print $productlot->getNomUrl(1); print $productlot->getNomUrl(1);
@ -794,25 +794,25 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print $productlot->batch; // the id may not be defined if movement was entered when lot was not saved or if lot was removed after movement. print $productlot->batch; // the id may not be defined if movement was entered when lot was not saved or if lot was removed after movement.
print '</td>'; print '</td>';
} }
if (! empty($arrayfields['pl.eatby']['checked'])) { if (!empty($arrayfields['pl.eatby']['checked'])) {
print '<td class="center">' . dol_print_date($objp->eatby, 'day') . '</td>'; print '<td class="center">'.dol_print_date($objp->eatby, 'day').'</td>';
} }
if (! empty($arrayfields['pl.sellby']['checked'])) { if (!empty($arrayfields['pl.sellby']['checked'])) {
print '<td class="center">' . dol_print_date($objp->sellby, 'day') . '</td>'; print '<td class="center">'.dol_print_date($objp->sellby, 'day').'</td>';
} }
// Warehouse // Warehouse
if (! empty($arrayfields['e.ref']['checked'])) { if (!empty($arrayfields['e.ref']['checked'])) {
print '<td>'; print '<td>';
print $warehousestatic->getNomUrl(1); print $warehousestatic->getNomUrl(1);
print "</td>\n"; print "</td>\n";
} }
// Author // Author
if (! empty($arrayfields['m.fk_user_author']['checked'])) { if (!empty($arrayfields['m.fk_user_author']['checked'])) {
print '<td class="tdoverflowmax100">'; print '<td class="tdoverflowmax100">';
print $userstatic->getNomUrl(- 1); print $userstatic->getNomUrl(-1);
print "</td>\n"; print "</td>\n";
} }
if (! empty($arrayfields['m.inventorycode']['checked'])) { if (!empty($arrayfields['m.inventorycode']['checked'])) {
// Inventory code // Inventory code
print '<td>'; print '<td>';
//print '<a href="' . DOL_URL_ROOT . '/product/stock/movement_card.php' . '?id=' . $objp->entrepot_id . '&amp;search_inventorycode=' . $objp->inventorycode . '&amp;search_type_mouvement=' . $objp->type_mouvement . '">'; //print '<a href="' . DOL_URL_ROOT . '/product/stock/movement_card.php' . '?id=' . $objp->entrepot_id . '&amp;search_inventorycode=' . $objp->inventorycode . '&amp;search_type_mouvement=' . $objp->type_mouvement . '">';
@ -820,32 +820,32 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
//print '</a>'; //print '</a>';
print '</td>'; print '</td>';
} }
if (! empty($arrayfields['m.label']['checked'])) { if (!empty($arrayfields['m.label']['checked'])) {
// Label of movement // Label of movement
print '<td class="tdoverflowmax100aaa">' . $objp->label . '</td>'; print '<td class="tdoverflowmax100aaa">'.$objp->label.'</td>';
} }
if (! empty($arrayfields['m.type_mouvement']['checked'])) { if (!empty($arrayfields['m.type_mouvement']['checked'])) {
// Type of movement // Type of movement
switch ($objp->type_mouvement) { switch ($objp->type_mouvement) {
case "0": case "0":
print '<td class="center">' . $langs->trans('StockIncreaseAfterCorrectTransfer') . '</td>'; print '<td class="center">'.$langs->trans('StockIncreaseAfterCorrectTransfer').'</td>';
break; break;
case "1": case "1":
print '<td class="center">' . $langs->trans('StockDecreaseAfterCorrectTransfer') . '</td>'; print '<td class="center">'.$langs->trans('StockDecreaseAfterCorrectTransfer').'</td>';
break; break;
case "2": case "2":
print '<td class="center">' . $langs->trans('StockDecrease') . '</td>'; print '<td class="center">'.$langs->trans('StockDecrease').'</td>';
break; break;
case "3": case "3":
print '<td class="center">' . $langs->trans('StockIncrease') . '</td>'; print '<td class="center">'.$langs->trans('StockIncrease').'</td>';
break; break;
} }
} }
if (! empty($arrayfields['origin']['checked'])) { if (!empty($arrayfields['origin']['checked'])) {
// Origin of movement // Origin of movement
print '<td class="nowraponall">' . $origin . '</td>'; print '<td class="nowraponall">'.$origin.'</td>';
} }
if (! empty($arrayfields['m.value']['checked'])) { if (!empty($arrayfields['m.value']['checked'])) {
// Qty // Qty
print '<td class="right">'; print '<td class="right">';
if ($objp->qt > 0) if ($objp->qt > 0)
@ -853,7 +853,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print $objp->qty; print $objp->qty;
print '</td>'; print '</td>';
} }
if (! empty($arrayfields['m.price']['checked'])) { if (!empty($arrayfields['m.price']['checked'])) {
// Price // Price
print '<td class="right">'; print '<td class="right">';
if ($objp->price != 0) if ($objp->price != 0)
@ -867,11 +867,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$selected = 0; $selected = 0;
if (in_array($obj->rowid, $arrayofselected)) if (in_array($obj->rowid, $arrayofselected))
$selected = 1; $selected = 1;
print '<input id="cb' . $obj->rowid . '" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $obj->rowid . '"' . ($selected ? ' checked="checked"' : '') . '>'; print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
} }
print '</td>'; print '</td>';
if (! $i) if (!$i)
$totalarray['nbfield'] ++; $totalarray['nbfield']++;
print "</tr>\n"; print "</tr>\n";
$i++; $i++;

View File

@ -167,12 +167,12 @@ if (empty($reshook))
// Line to produce // Line to produce
$moline->fk_mo = $object->id; $moline->fk_mo = $object->id;
$moline->qty = GETPOST('qtytoadd', 'int');; $moline->qty = GETPOST('qtytoadd', 'int'); ;
$moline->fk_product = GETPOST('productidtoadd', 'int'); $moline->fk_product = GETPOST('productidtoadd', 'int');
$moline->role = 'toconsume'; $moline->role = 'toconsume';
$moline->position = 0; $moline->position = 0;
$resultline = $moline->create($user, false); // Never use triggers here $resultline = $moline->create($user, false); // Never use triggers here
if ($resultline <= 0) { if ($resultline <= 0) {
$error++; $error++;
setEventMessages($moline->error, $molines->errors, 'errors'); setEventMessages($moline->error, $molines->errors, 'errors');
@ -546,7 +546,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
dol_fiche_end(); dol_fiche_end();
if (! in_array($action, array('consumeorproduce', 'consumeandproduceall'))) if (!in_array($action, array('consumeorproduce', 'consumeandproduceall')))
{ {
print '<div class="tabsAction">'; print '<div class="tabsAction">';
@ -684,9 +684,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
if ($action == 'addconsumeline') { if ($action == 'addconsumeline') {
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'; print '<td>';
print $form->select_produits('', 'productidtoadd', '', 0, 0, -1, 2); print $form->select_produits('', 'productidtoadd', '', 0, 0, -1, 2, '', 0, array(), 0, '1', 0, 'maxwidth300');
print '</td>'; print '</td>';
print '<td class="right"><input type="text" name="qtytoadd" value="1"></td>'; print '<td class="right"><input type="text" name="qtytoadd" value="1" class="width50"></td>';
print '<td class="right"></td>'; print '<td class="right"></td>';
print '<td>'; print '<td>';
print '<input type="submit" class="button" name="addconsumelinebutton" value="'.$langs->trans("Add").'">'; print '<input type="submit" class="button" name="addconsumelinebutton" value="'.$langs->trans("Add").'">';
@ -700,14 +700,14 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
if (!empty($object->lines)) if (!empty($object->lines))
{ {
$nblinetoconsume = 0; $nblinetoconsume = 0;
foreach($object->lines as $line) { foreach ($object->lines as $line) {
if ($line->role == 'toconsume') { if ($line->role == 'toconsume') {
$nblinetoconsume++; $nblinetoconsume++;
} }
} }
$nblinetoconsumecursor = 0; $nblinetoconsumecursor = 0;
foreach($object->lines as $line) { foreach ($object->lines as $line) {
if ($line->role == 'toconsume') { if ($line->role == 'toconsume') {
$nblinetoconsumecursor++; $nblinetoconsumecursor++;
@ -716,7 +716,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$arrayoflines = $object->fetchLinesLinked('consumed', $line->id); $arrayoflines = $object->fetchLinesLinked('consumed', $line->id);
$alreadyconsumed = 0; $alreadyconsumed = 0;
foreach($arrayoflines as $line2) { foreach ($arrayoflines as $line2) {
$alreadyconsumed += $line2['qty']; $alreadyconsumed += $line2['qty'];
} }
@ -756,7 +756,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
} }
print ' '.$alreadyconsumed; print ' '.$alreadyconsumed;
print '</td>'; print '</td>';
print '<td>'; // Warehouse print '<td>'; // Warehouse
print '</td>'; print '</td>';
if ($conf->productbatch->enabled) { if ($conf->productbatch->enabled) {
print '<td></td>'; // Lot print '<td></td>'; // Lot
@ -764,7 +764,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print '</tr>'; print '</tr>';
// Show detailed of already consumed with js code to collapse // Show detailed of already consumed with js code to collapse
foreach($arrayoflines as $line2) { foreach ($arrayoflines as $line2) {
print '<tr class="expanddetail'.$line->id.' hideobject opacitylow">'; print '<tr class="expanddetail'.$line->id.' hideobject opacitylow">';
print '<td>'; print '<td>';
print dol_print_date($line2['date'], 'dayhour'); print dol_print_date($line2['date'], 'dayhour');
@ -792,7 +792,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print '<tr>'; print '<tr>';
print '<td>'.$langs->trans("ToConsume").'</td>'; print '<td>'.$langs->trans("ToConsume").'</td>';
$preselected = (GETPOSTISSET('qty-'.$line->id.'-'.$i) ? GETPOST('qty-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyconsumed)); $preselected = (GETPOSTISSET('qty-'.$line->id.'-'.$i) ? GETPOST('qty-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyconsumed));
if ($action == 'consumeorproduce' && ! GETPOSTISSET('qty-'.$line->id.'-'.$i)) $preselected = 0; if ($action == 'consumeorproduce' && !GETPOSTISSET('qty-'.$line->id.'-'.$i)) $preselected = 0;
print '<td class="right"><input type="text" class="width50" name="qty-'.$line->id.'-'.$i.'" value="'.$preselected.'"></td>'; print '<td class="right"><input type="text" class="width50" name="qty-'.$line->id.'-'.$i.'" value="'.$preselected.'"></td>';
print '<td></td>'; print '<td></td>';
print '<td>'; print '<td>';
@ -851,14 +851,14 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
if (!empty($object->lines)) if (!empty($object->lines))
{ {
$nblinetoproduce = 0; $nblinetoproduce = 0;
foreach($object->lines as $line) { foreach ($object->lines as $line) {
if ($line->role == 'toproduce') { if ($line->role == 'toproduce') {
$nblinetoproduce++; $nblinetoproduce++;
} }
} }
$nblinetoproducecursor = 0; $nblinetoproducecursor = 0;
foreach($object->lines as $line) { foreach ($object->lines as $line) {
if ($line->role == 'toproduce') { if ($line->role == 'toproduce') {
$nblinetoproducecursor++; $nblinetoproducecursor++;
@ -867,7 +867,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$arrayoflines = $object->fetchLinesLinked('produced', $line->id); $arrayoflines = $object->fetchLinesLinked('produced', $line->id);
$alreadyproduced = 0; $alreadyproduced = 0;
foreach($arrayoflines as $line2) { foreach ($arrayoflines as $line2) {
$alreadyproduced += $line2['qty']; $alreadyproduced += $line2['qty'];
} }
@ -894,7 +894,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
} }
print ' '.$alreadyproduced; print ' '.$alreadyproduced;
print '</td>'; print '</td>';
print '<td>'; // Warehouse print '<td>'; // Warehouse
print '</td>'; print '</td>';
if ($conf->productbatch->enabled) { if ($conf->productbatch->enabled) {
print '<td></td>'; // Lot print '<td></td>'; // Lot
@ -902,7 +902,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print '</tr>'; print '</tr>';
// Show detailed of already consumed with js code to collapse // Show detailed of already consumed with js code to collapse
foreach($arrayoflines as $line2) { foreach ($arrayoflines as $line2) {
print '<tr class="expanddetailtoproduce'.$line->id.' hideobject opacitylow">'; print '<tr class="expanddetailtoproduce'.$line->id.' hideobject opacitylow">';
print '<td>'; print '<td>';
print dol_print_date($line2['date'], 'dayhour'); print dol_print_date($line2['date'], 'dayhour');
@ -928,7 +928,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print '<tr>'; print '<tr>';
print '<td>'.$langs->trans("ToProduce").'</td>'; print '<td>'.$langs->trans("ToProduce").'</td>';
$preselected = (GETPOSTISSET('qtytoproduce-'.$line->id.'-'.$i) ? GETPOST('qtytoproduce-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyproduced)); $preselected = (GETPOSTISSET('qtytoproduce-'.$line->id.'-'.$i) ? GETPOST('qtytoproduce-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyproduced));
if ($action == 'consumeorproduce' && ! GETPOSTISSET('qtytoproduce-'.$line->id.'-'.$i)) $preselected = 0; if ($action == 'consumeorproduce' && !GETPOSTISSET('qtytoproduce-'.$line->id.'-'.$i)) $preselected = 0;
print '<td class="right"><input type="text" class="width50" name="qtytoproduce-'.$line->id.'-'.$i.'" value="'.$preselected.'"></td>'; print '<td class="right"><input type="text" class="width50" name="qtytoproduce-'.$line->id.'-'.$i.'" value="'.$preselected.'"></td>';
print '<td></td>'; print '<td></td>';
print '<td>'; print '<td>';

Some files were not shown because too many files have changed in this diff Show More