Merge branch 'develop' into fix-modoristomouv
This commit is contained in:
commit
58a57a0411
@ -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
|
||||
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)
|
||||
|
||||
* Removed hidden constant MAIN_EXTRAFIELDS_IN_ONE_TD that was useless.
|
||||
|
||||
|
||||
***** ChangeLog for 11.0.1 compared to 11.0.0 *****
|
||||
|
||||
@ -1,13 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!ELEMENT ruleset (description,exclude-pattern*,rule+)>
|
||||
<!ELEMENT ruleset (description,arg*,exclude-pattern*,rule+)>
|
||||
<!ATTLIST ruleset name CDATA "">
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
<!ELEMENT arg (#PCDATA)>
|
||||
<!ATTLIST arg name CDATA "">
|
||||
<!ATTLIST arg value CDATA "">
|
||||
<!ELEMENT exclude-pattern (#PCDATA)>
|
||||
<!ATTLIST exclude-pattern type CDATA "">
|
||||
<!ELEMENT rule (properties*,severity*)>
|
||||
<!ELEMENT rule (properties*,severity*,exclude*)>
|
||||
<!ATTLIST rule ref CDATA "">
|
||||
<!ELEMENT properties (property+)>
|
||||
<!ELEMENT property (#PCDATA)>
|
||||
<!ATTLIST property name CDATA "">
|
||||
<!ATTLIST property value CDATA "">
|
||||
<!ELEMENT severity (#PCDATA)>
|
||||
<!ELEMENT exclude (#PCDATA)>
|
||||
<!ATTLIST exclude name CDATA "">
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
<!DOCTYPE ruleset SYSTEM "ruleset.dtd">
|
||||
<ruleset name="Dolibarr">
|
||||
<description>Dolibarr coding standard.</description>
|
||||
<arg name="tab-width" value="4"/>
|
||||
|
||||
<exclude-pattern type="relative">build/html</exclude-pattern>
|
||||
<exclude-pattern type="relative">build/aps</exclude-pattern>
|
||||
@ -188,7 +189,6 @@
|
||||
<!-- Disabled as this does not support tab -->
|
||||
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
||||
|
||||
<arg name="tab-width" value="4"/>
|
||||
<rule ref="Generic.WhiteSpace.ScopeIndent">
|
||||
<properties>
|
||||
<property name="indent" value="4"/>
|
||||
|
||||
@ -268,11 +268,11 @@ if ($action != 'export_csv')
|
||||
$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.= " 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);
|
||||
$nrows = $resql->num_rows;
|
||||
$opening_balances = Array();
|
||||
for($i = 0; $i < $nrows; $i++) {
|
||||
for ($i = 0; $i < $nrows; $i++) {
|
||||
$arr = $resql->fetch_array();
|
||||
$opening_balances["'".$arr['numero_compte']."'"] = $arr['opening_balance'];
|
||||
}
|
||||
@ -294,14 +294,14 @@ if ($action != 'export_csv')
|
||||
{
|
||||
// Affiche un Sous-Total par compte comptable
|
||||
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> </td>\n";
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Show first line of a break
|
||||
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>';
|
||||
|
||||
$displayed_account = $root_account_description;
|
||||
|
||||
@ -239,7 +239,7 @@ class AccountancyExport
|
||||
$filename = 'general_ledger-'.$this->getFormatCode($formatexportset);
|
||||
$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';
|
||||
|
||||
|
||||
@ -983,7 +983,7 @@ class AccountancyExport
|
||||
$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
|
||||
print price(abs($line->montant), 0, '', 1, 2).$separator;
|
||||
// CODC
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
// 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";
|
||||
exit;
|
||||
@ -29,7 +29,7 @@ $format = $conf->global->ACCOUNTING_EXPORT_FORMAT;
|
||||
$nodateexport = $conf->global->ACCOUNTING_EXPORT_NO_DATE_IN_FILENAME;
|
||||
$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');
|
||||
|
||||
header('Content-Type: text/csv');
|
||||
@ -46,22 +46,22 @@ if ($accountancyexport->getFormatCode($formatexportset) == $accountancyexport::$
|
||||
$search_date_end = dol_now();
|
||||
}
|
||||
$datetouseforfilename = $search_date_end;
|
||||
$tmparray=dol_getdate($datetouseforfilename);
|
||||
$fiscalmonth=empty($conf->global->SOCIETE_FISCAL_MONTH_START)?1:$conf->global->SOCIETE_FISCAL_MONTH_START;
|
||||
$tmparray = dol_getdate($datetouseforfilename);
|
||||
$fiscalmonth = empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START;
|
||||
// Define end of month to use
|
||||
if ($tmparray['mon'] <= $fiscalmonth) $tmparray['mon']=$fiscalmonth;
|
||||
if ($tmparray['mon'] <= $fiscalmonth) $tmparray['mon'] = $fiscalmonth;
|
||||
else {
|
||||
$tmparray['mon'] = $fiscalmonth;
|
||||
$tmparray['mon'] = $fiscalmonth;
|
||||
$tmparray['year']++;
|
||||
}
|
||||
|
||||
$endaccountingperiod = dol_print_date(dol_get_last_day($tmparray['year'], $tmparray['mon']), 'dayxcard');
|
||||
|
||||
$completefilename = $siren . "FEC" . $endaccountingperiod . ".txt";
|
||||
$completefilename = $siren."FEC".$endaccountingperiod.".txt";
|
||||
}
|
||||
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);
|
||||
|
||||
@ -47,7 +47,7 @@ $search_note = GETPOST('search_note', 'alpha');
|
||||
$search_account = GETPOST('search_account', 'int');
|
||||
$search_amount = GETPOST('search_amount', 'alpha');
|
||||
$optioncss = GETPOST('optioncss', 'alpha');
|
||||
$sall='';
|
||||
$sall = '';
|
||||
|
||||
$date_select = GETPOST("date_select", 'alpha');
|
||||
|
||||
@ -388,16 +388,16 @@ print "</tr>\n";
|
||||
|
||||
|
||||
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.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.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['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['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['d.amount']['checked'])) print_liste_field_titre($arrayfields['d.amount']['label'], $_SERVER["PHP_SELF"], "c.subscription", $param, "", '', $sortfield, $sortorder, 'right ');
|
||||
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.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.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['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.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 ');
|
||||
|
||||
// Extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||
|
||||
@ -25,6 +25,8 @@
|
||||
* \file htdocs/api/admin/explorer.php
|
||||
*/
|
||||
|
||||
use Luracast\Restler\Routes;
|
||||
|
||||
require_once '../../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/api/class/api.class.php';
|
||||
|
||||
@ -28,9 +28,9 @@ require_once DOL_DOCUMENT_ROOT.'/blockedlog/class/blockedlog.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||
|
||||
// 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');
|
||||
$backtopage = GETPOST('backtopage', 'alpha');
|
||||
@ -77,22 +77,22 @@ if (preg_match('/del_(.*)/', $action, $reg))
|
||||
* View
|
||||
*/
|
||||
|
||||
$form=new Form($db);
|
||||
$form = new Form($db);
|
||||
$block_static = new BlockedLog($db);
|
||||
|
||||
llxHeader('', $langs->trans("BlockedLogSetup"));
|
||||
|
||||
$linkback='';
|
||||
$linkback = '';
|
||||
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);
|
||||
|
||||
if (GETPOST('withtab', 'alpha'))
|
||||
{
|
||||
$head=blockedlogadmin_prepare_head();
|
||||
$head = blockedlogadmin_prepare_head();
|
||||
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">';
|
||||
|
||||
$sql = "SELECT rowid, code as code_iso, code_iso as code_iso3, label, favorite";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_country";
|
||||
$sql.= " WHERE active > 0";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_country";
|
||||
$sql .= " WHERE active > 0";
|
||||
|
||||
$countryArray=array();
|
||||
$resql=$db->query($sql);
|
||||
$countryArray = array();
|
||||
$resql = $db->query($sql);
|
||||
if ($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 '<td class="titlefield">';
|
||||
print $langs->trans("ListOfTrackedEvents").'</td><td>';
|
||||
$arrayoftrackedevents=$block_static->trackedevents;
|
||||
foreach($arrayoftrackedevents as $key => $val)
|
||||
$arrayoftrackedevents = $block_static->trackedevents;
|
||||
foreach ($arrayoftrackedevents as $key => $val)
|
||||
{
|
||||
print $key.' - '.$langs->trans($val).'<br>';
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
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);
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
@ -138,7 +138,7 @@ print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
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";
|
||||
|
||||
@ -156,7 +156,7 @@ print '</tr>';
|
||||
//Line extrafield
|
||||
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";
|
||||
|
||||
@ -21,132 +21,6 @@
|
||||
* \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&urlsource='.urlencode($url).'&url='.urlencode($url);
|
||||
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&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
|
||||
@ -158,97 +32,89 @@ function printDropdownBookmarksList()
|
||||
global $conf, $user, $db, $langs;
|
||||
|
||||
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"];
|
||||
$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
|
||||
{
|
||||
global $sortfield,$sortorder;
|
||||
$tmpurl='';
|
||||
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 ($sortfield) $tmpurl .= ($tmpurl ? '&' : '').'sortfield='.$sortfield;
|
||||
if ($sortorder) $tmpurl .= ($tmpurl ? '&' : '').'sortorder='.$sortorder;
|
||||
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 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.= '</form>';
|
||||
$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 .= '</form>';
|
||||
|
||||
// Url to list bookmark
|
||||
$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
|
||||
$newbtn = '';
|
||||
if (! empty($user->rights->bookmark->creer))
|
||||
if (!empty($user->rights->bookmark->creer))
|
||||
{
|
||||
//$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&urlsource='.urlencode($url).'&url='.urlencode($url);
|
||||
$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url);
|
||||
$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>';
|
||||
$urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&url='.urlencode($url);
|
||||
$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>';
|
||||
}
|
||||
|
||||
|
||||
$bookmarkList='<div id="dropdown-bookmarks-list" >';
|
||||
// Menu with all bookmarks
|
||||
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU))
|
||||
$bookmarkList = '<div id="dropdown-bookmarks-list" >';
|
||||
// Menu with list of bookmarks
|
||||
$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))
|
||||
{
|
||||
$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))
|
||||
{
|
||||
$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);
|
||||
}
|
||||
$i = 0;
|
||||
while (($conf->global->BOOKMARKS_SHOW_IN_MENU == 0 || $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++;
|
||||
}
|
||||
}
|
||||
$bookmarkList.='</div>';
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
$bookmarkList .= '</div>';
|
||||
|
||||
$html= '';
|
||||
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) {
|
||||
$html.= '
|
||||
$html = '
|
||||
<!-- search input -->
|
||||
<div class="dropdown-header bookmark-header">
|
||||
' . $searchForm . '
|
||||
' . $searchForm.'
|
||||
</div>
|
||||
';
|
||||
}
|
||||
|
||||
$html.= '
|
||||
$html .= '
|
||||
<!-- Menu Body -->
|
||||
<div class="bookmark-body dropdown-body">
|
||||
'.$bookmarkList.'
|
||||
</div>
|
||||
';
|
||||
|
||||
$html.= '
|
||||
$html .= '
|
||||
<!-- Menu Footer-->
|
||||
<div class="bookmark-footer">
|
||||
'.$newbtn.$listbtn.'
|
||||
@ -256,8 +122,7 @@ function printDropdownBookmarksList()
|
||||
</div>
|
||||
';
|
||||
|
||||
if (! empty($conf->global->BOOKMARKS_SHOW_IN_MENU)) {
|
||||
$html .= '<script>
|
||||
$html .= '<script>
|
||||
$( document ).on("keyup", "#top-bookmark-search-input", function () {
|
||||
|
||||
var filter = $(this).val(), count = 0;
|
||||
@ -273,7 +138,6 @@ function printDropdownBookmarksList()
|
||||
$("#top-bookmark-search-filter-count").text(count);
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
@ -93,24 +93,24 @@ $extrafields = new ExtraFields($db);
|
||||
$extrafields->fetch_name_optionals_label($object->table_element);
|
||||
|
||||
// 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
|
||||
$hookmanager->initHooks(array('ordercard','globalcard'));
|
||||
$hookmanager->initHooks(array('ordercard', 'globalcard'));
|
||||
|
||||
$usercanread = $user->rights->commande->lire;
|
||||
$usercancreate = $user->rights->commande->creer;
|
||||
$usercanclose = $user->rights->commande->cloturer;
|
||||
$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)));
|
||||
$usercancancel = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler)));
|
||||
$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)));
|
||||
$usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send);
|
||||
|
||||
$usercancreatepurchaseorder = $user->rights->fournisseur->commande->creer;
|
||||
|
||||
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.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
|
||||
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.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
|
||||
|
||||
|
||||
/*
|
||||
@ -1594,25 +1594,25 @@ if ($action == 'create' && $usercancreate)
|
||||
$note_public = $object->getDefaultCreateValueFor('note_public');
|
||||
}
|
||||
|
||||
print '<form name="crea_commande" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
|
||||
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
|
||||
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="action" value="add">';
|
||||
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="origin" value="' . $origin . '">';
|
||||
print '<input type="hidden" name="originid" value="' . $originid . '">';
|
||||
if (!empty($currency_tx)) print '<input type="hidden" name="originmulticurrency_tx" value="' . $currency_tx . '">';
|
||||
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="origin" value="'.$origin.'">';
|
||||
print '<input type="hidden" name="originid" value="'.$originid.'">';
|
||||
if (!empty($currency_tx)) print '<input type="hidden" name="originmulticurrency_tx" value="'.$currency_tx.'">';
|
||||
|
||||
dol_fiche_head('');
|
||||
|
||||
print '<table class="border centpercent">';
|
||||
|
||||
// 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
|
||||
print '<tr><td>' . $langs->trans('RefCustomer') . '</td><td>';
|
||||
if (!empty($conf->global->MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER) && ! empty($origin) && ! empty($originid))
|
||||
print '<tr><td>'.$langs->trans('RefCustomer').'</td><td>';
|
||||
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>';
|
||||
else
|
||||
print '<input type="text" name="ref_client" value="'.GETPOST('ref_client').'"></td>';
|
||||
@ -2556,7 +2556,7 @@ if ($action == 'create' && $usercancreate)
|
||||
}
|
||||
|
||||
// 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.'&action=validate">'.$langs->trans('Validate').'</a>';
|
||||
}
|
||||
|
||||
@ -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.'/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_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));
|
||||
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));
|
||||
}
|
||||
}
|
||||
@ -118,51 +118,69 @@ if (($action == "searchfiles" || $action == "dl")) {
|
||||
$error++;
|
||||
}
|
||||
|
||||
$sql = '';
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
$wheretail = " '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
|
||||
|
||||
// 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";
|
||||
$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 .= " WHERE datef between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT;
|
||||
$sql .= " UNION ALL";
|
||||
if (GETPOST('selectinvoices')) {
|
||||
if (! empty($sql)) $sql .= " UNION ALL";
|
||||
$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 .= " 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 .= " WHERE datef between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT;
|
||||
}
|
||||
// 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";
|
||||
$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 .= " WHERE datef between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
|
||||
$sql .= " UNION ALL";
|
||||
if (GETPOST('selectsupplierinvoices')) {
|
||||
if (! empty($sql)) $sql .= " UNION ALL";
|
||||
$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 .= " 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 .= " WHERE datef between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
|
||||
}
|
||||
// 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";
|
||||
$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 .= " WHERE date_fin between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
|
||||
$sql .= " UNION ALL";
|
||||
if (GETPOST('selectexpensereports')) {
|
||||
if (! empty($sql)) $sql .= " UNION ALL";
|
||||
$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 .= " 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 .= " WHERE date_fin between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
|
||||
}
|
||||
// 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";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country";
|
||||
$sql .= " WHERE datedon between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT;
|
||||
$sql .= " UNION ALL";
|
||||
if (GETPOST('selectdonations')) {
|
||||
if (! empty($sql)) $sql .= " UNION ALL";
|
||||
$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 .= " FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country";
|
||||
$sql .= " WHERE datedon between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
$sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT;
|
||||
}
|
||||
// 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";
|
||||
$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 .= " WHERE datep between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
|
||||
$sql .= " UNION ALL";
|
||||
if (GETPOST('selectpaymentsofsalaries')) {
|
||||
if (! empty($sql)) $sql .= " UNION ALL";
|
||||
$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 .= " 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 .= " WHERE datep between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
|
||||
}
|
||||
// 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";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."chargesociales as t";
|
||||
$sql .= " WHERE date_creation between ".$wheretail;
|
||||
$sql .= " AND t.entity IN (".($entity == 1 ? '0,1' : $entity).')';
|
||||
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT;
|
||||
if (GETPOST('selectsocialcontributions')) {
|
||||
if (! empty($sql)) $sql .= " UNION ALL";
|
||||
$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 .= " FROM ".MAIN_DB_PREFIX."chargesociales as t";
|
||||
$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);
|
||||
//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);
|
||||
//var_dump($upload_dir);
|
||||
//var_dump($files);
|
||||
|
||||
if (count($files) < 1)
|
||||
{
|
||||
$nofile = array();
|
||||
@ -305,6 +322,9 @@ if (($action == "searchfiles" || $action == "dl")) {
|
||||
|
||||
$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($file['files'] as $filecursor) {
|
||||
foreach ($file['files'] as $filecursor) {
|
||||
if (file_exists($filecursor["fullname"])) {
|
||||
$zip->addFile($filecursor["fullname"], $filecursor["relpathnamelang"]);
|
||||
}
|
||||
}
|
||||
|
||||
$log .= $file['item'];
|
||||
$log .= '"'.$langs->trans($file['item']).'"';
|
||||
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 .= ','.$file['ref'];
|
||||
$log .= ',"'.$file['ref'].'"';
|
||||
$log .= ','.$file['amount_ht'];
|
||||
$log .= ','.$file['amount_ttc'];
|
||||
$log .= ','.$file['amount_vat'];
|
||||
$log .= ','.$file['paid'];
|
||||
$log .= ','.$file["name"];
|
||||
$log .= ',"'.$file["name"].'"';
|
||||
$log .= ','.$file['fk'];
|
||||
$log .= ','.$file['thirdparty_name'];
|
||||
$log .= ',"'.$file['thirdparty_name'].'"';
|
||||
$log .= ','.$file['thirdparty_code'];
|
||||
$log .= ','.$file['country_code'];
|
||||
$log .= ',"'.$file['vatnum'].'"'."\n";
|
||||
$log .= ',"'.$file['country_code'].'"';
|
||||
$log .= ',"'.$file['vatnum'].'"';
|
||||
$log .= "\n";
|
||||
}
|
||||
$zip->addFromString('transactions.csv', $log);
|
||||
$zip->close();
|
||||
@ -433,7 +454,7 @@ if (!empty($conf->multicompany->enabled) && is_object($mc))
|
||||
$mc->getInfo($conf->entity);
|
||||
print '<span class="marginleftonly marginrightonly">('.$langs->trans("Entity").' : ';
|
||||
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);
|
||||
} else {
|
||||
print $mc->label;
|
||||
@ -442,6 +463,23 @@ if (!empty($conf->multicompany->enabled) && is_object($mc))
|
||||
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 '</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_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />';
|
||||
|
||||
//print '<input type="hidden" name="date_stopDay" value="'.dol_print_date($date_stop, '%d').'" />';
|
||||
//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').'" />';
|
||||
foreach($listofchoices as $choice => $val) {
|
||||
print '<input type="hidden" name="'.$choice.'" value="'.GETPOST($choice).'">';
|
||||
}
|
||||
|
||||
print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />';
|
||||
print '</form>'."\n";
|
||||
@ -534,9 +567,9 @@ if (!empty($date_start) && !empty($date_stop))
|
||||
|
||||
// File link
|
||||
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>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,18 +39,18 @@ $langs->loadLangs(array('banks', 'categories', 'bills', 'companies'));
|
||||
// Security check
|
||||
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';
|
||||
if ($user->socid) $socid=$user->socid;
|
||||
$result=restrictedArea($user, 'banque', $id, 'bank_account&bank_account', '', '', $fieldid);
|
||||
$fieldid = isset($_GET["ref"]) ? 'ref' : 'rowid';
|
||||
if ($user->socid) $socid = $user->socid;
|
||||
$result = restrictedArea($user, 'banque', $id, 'bank_account&bank_account', '', '', $fieldid);
|
||||
|
||||
|
||||
$vline=isset($_GET["vline"])?$_GET["vline"]:$_POST["vline"];
|
||||
$page=isset($_GET["page"])?$_GET["page"]:0;
|
||||
$vline = isset($_GET["vline"]) ? $_GET["vline"] : $_POST["vline"];
|
||||
$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
|
||||
$hookmanager->initHooks(array('banktreso','globalcard'));
|
||||
$hookmanager->initHooks(array('banktreso', 'globalcard'));
|
||||
|
||||
/*
|
||||
* View
|
||||
@ -61,9 +61,9 @@ $helpurl = "";
|
||||
llxHeader('', $title, $helpurl);
|
||||
|
||||
$societestatic = new Societe($db);
|
||||
$facturestatic=new Facture($db);
|
||||
$facturefournstatic=new FactureFournisseur($db);
|
||||
$socialcontribstatic=new ChargeSociales($db);
|
||||
$facturestatic = new Facture($db);
|
||||
$facturefournstatic = new FactureFournisseur($db);
|
||||
$socialcontribstatic = new ChargeSociales($db);
|
||||
|
||||
$form = new Form($db);
|
||||
|
||||
@ -81,17 +81,17 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
$object = new Account($db);
|
||||
if ($_GET["account"])
|
||||
{
|
||||
$result=$object->fetch($_GET["account"]);
|
||||
$result = $object->fetch($_GET["account"]);
|
||||
}
|
||||
if ($_GET["ref"])
|
||||
{
|
||||
$result=$object->fetch(0, $_GET["ref"]);
|
||||
$_GET["account"]=$object->id;
|
||||
$result = $object->fetch(0, $_GET["ref"]);
|
||||
$_GET["account"] = $object->id;
|
||||
}
|
||||
|
||||
|
||||
// Onglets
|
||||
$head=bank_prepare_head($object);
|
||||
$head = bank_prepare_head($object);
|
||||
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>';
|
||||
@ -103,7 +103,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
print '<br>';
|
||||
|
||||
$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;
|
||||
|
||||
// Show next coming entries
|
||||
@ -114,7 +114,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("DateDue").'</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 class="right">'.$langs->trans("Debit").'</td>';
|
||||
print '<td class="right">'.$langs->trans("Credit").'</td>';
|
||||
@ -139,54 +139,54 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
|
||||
// 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.= " s.rowid as socid, s.nom as name, s.fournisseur";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON f.fk_soc = s.rowid";
|
||||
$sql.= " WHERE f.entity IN (".getEntity('invoice').")";
|
||||
$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.= " ORDER BY dlr ASC";
|
||||
$sql .= " s.rowid as socid, s.nom as name, s.fournisseur";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON f.fk_soc = s.rowid";
|
||||
$sql .= " WHERE f.entity IN (".getEntity('invoice').")";
|
||||
$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 .= " ORDER BY dlr ASC";
|
||||
$sqls[] = $sql;
|
||||
|
||||
// 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.= " s.rowid as socid, s.nom as name, s.fournisseur";
|
||||
$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.= " WHERE ff.entity = ".$conf->entity;
|
||||
$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.= " ORDER BY dlr ASC";
|
||||
$sql .= " s.rowid as socid, s.nom as name, s.fournisseur";
|
||||
$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 .= " WHERE ff.entity = ".$conf->entity;
|
||||
$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 .= " ORDER BY dlr ASC";
|
||||
$sqls[] = $sql;
|
||||
|
||||
// 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.= ", cs.fk_account";
|
||||
$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.= " WHERE cs.entity = ".$conf->entity;
|
||||
$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.= " ORDER BY dlr ASC";
|
||||
$sql .= ", cs.fk_account";
|
||||
$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 .= " WHERE cs.entity = ".$conf->entity;
|
||||
$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 .= " ORDER BY dlr ASC";
|
||||
$sqls[] = $sql;
|
||||
|
||||
// others sql
|
||||
$parameters = array();
|
||||
$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'];
|
||||
}
|
||||
|
||||
$error=0;
|
||||
$tab_sqlobjOrder=array();
|
||||
$tab_sqlobj=array();
|
||||
$error = 0;
|
||||
$tab_sqlobjOrder = array();
|
||||
$tab_sqlobj = array();
|
||||
|
||||
foreach($sqls as $sql){
|
||||
foreach ($sqls as $sql) {
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
while ($sqlobj = $db->fetch_object($resql)) {
|
||||
$tab_sqlobj[] = $sqlobj;
|
||||
$tab_sqlobjOrder[]= $db->jdate($sqlobj->dlr);
|
||||
$tab_sqlobjOrder[] = $db->jdate($sqlobj->dlr);
|
||||
}
|
||||
$db->free($resql);
|
||||
} else {
|
||||
@ -195,13 +195,13 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
}
|
||||
|
||||
// Sort array
|
||||
if (! $error)
|
||||
if (!$error)
|
||||
{
|
||||
array_multisort($tab_sqlobjOrder, $tab_sqlobj);
|
||||
|
||||
// Apply distinct filter
|
||||
foreach ($tab_sqlobj as $key=>$value) {
|
||||
$tab_sqlobj[$key] = "'" . serialize($value) . "'";
|
||||
$tab_sqlobj[$key] = "'".serialize($value)."'";
|
||||
}
|
||||
$tab_sqlobj = array_unique($tab_sqlobj);
|
||||
foreach ($tab_sqlobj as $key=>$value) {
|
||||
@ -221,52 +221,52 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
|
||||
if ($obj->family == 'invoice_supplier')
|
||||
{
|
||||
$showline=1;
|
||||
$showline = 1;
|
||||
// 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))
|
||||
if ($showline)
|
||||
{
|
||||
$ref=$obj->ref;
|
||||
$facturefournstatic->ref=$ref;
|
||||
$facturefournstatic->id=$obj->objid;
|
||||
$facturefournstatic->type=$obj->type;
|
||||
$ref = $obj->ref;
|
||||
$facturefournstatic->ref = $ref;
|
||||
$facturefournstatic->id = $obj->objid;
|
||||
$facturefournstatic->type = $obj->type;
|
||||
$ref = $facturefournstatic->getNomUrl(1, '');
|
||||
|
||||
$societestatic->id = $obj->socid;
|
||||
$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')
|
||||
{
|
||||
$facturestatic->ref=$obj->ref;
|
||||
$facturestatic->id=$obj->objid;
|
||||
$facturestatic->type=$obj->type;
|
||||
$facturestatic->ref = $obj->ref;
|
||||
$facturestatic->id = $obj->objid;
|
||||
$facturestatic->type = $obj->type;
|
||||
$ref = $facturestatic->getNomUrl(1, '');
|
||||
|
||||
$societestatic->id = $obj->socid;
|
||||
$societestatic->name = $obj->name;
|
||||
$refcomp=$societestatic->getNomUrl(1, '', 24);
|
||||
$refcomp = $societestatic->getNomUrl(1, '', 24);
|
||||
|
||||
$totalpayment = $facturestatic->getSommePaiement(); // Payment already done
|
||||
$totalpayment+= $facturestatic->getSumDepositsUsed();
|
||||
$totalpayment+= $facturestatic->getSumCreditNotesUsed();
|
||||
$totalpayment = $facturestatic->getSommePaiement(); // Payment already done
|
||||
$totalpayment += $facturestatic->getSumDepositsUsed();
|
||||
$totalpayment += $facturestatic->getSumCreditNotesUsed();
|
||||
}
|
||||
if ($obj->family == 'social_contribution')
|
||||
{
|
||||
$socialcontribstatic->ref=$obj->ref;
|
||||
$socialcontribstatic->id=$obj->objid;
|
||||
$socialcontribstatic->label=$obj->type;
|
||||
$socialcontribstatic->ref = $obj->ref;
|
||||
$socialcontribstatic->id = $obj->objid;
|
||||
$socialcontribstatic->label = $obj->type;
|
||||
$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);
|
||||
$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;
|
||||
$refcomp = isset($hookmanager->resArray['refcomp']) ? $hookmanager->resArray['refcomp'] : $refcomp;
|
||||
$totalpayment = isset($hookmanager->resArray['totalpayment']) ? $hookmanager->resArray['totalpayment'] : $totalpayment;
|
||||
@ -287,7 +287,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
print "</td>";
|
||||
print "<td>".$ref."</td>";
|
||||
if ($conf->global->MULTICOMPANY_INVOICE_SHARING_ENABLED) {
|
||||
if($obj->family == 'invoice'){
|
||||
if ($obj->family == 'invoice') {
|
||||
$mc->getInfo($obj->entity);
|
||||
print "<td>".$mc->label."</td>";
|
||||
}
|
||||
@ -313,7 +313,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
|
||||
// Other lines
|
||||
$parameters = array('solde' => $solde);
|
||||
$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;
|
||||
$solde = isset($hookmanager->resArray['solde']) ? $hookmanager->resArray['solde'] : $solde;
|
||||
}
|
||||
|
||||
@ -4581,18 +4581,18 @@ class Facture extends CommonInvoice
|
||||
if ($this->statut != Facture::STATUS_VALIDATED) return false;
|
||||
|
||||
$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 = floatval($totalpaye);
|
||||
$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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
@ -4657,8 +4657,8 @@ class Facture extends CommonInvoice
|
||||
$retainedWarrantyAmount = $this->total_ttc * $this->retained_warranty / 100;
|
||||
}
|
||||
|
||||
if ($rounding < 0){
|
||||
$rounding=min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
if ($rounding < 0) {
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
return round($retainedWarrantyAmount, 2);
|
||||
}
|
||||
|
||||
|
||||
@ -266,8 +266,8 @@ if (empty($reshook))
|
||||
$paiement->paiementid = dol_getIdFromCode($db, GETPOST('paiementcode'), 'c_paiement', 'code', 'id', 1);
|
||||
$paiement->num_payment = GETPOST('num_paiement', 'alpha');
|
||||
$paiement->note_private = GETPOST('comment', 'alpha');
|
||||
$paiement->num_paiement = $paiement->num_payment; // For bacward compatibility
|
||||
$paiement->note = $paiement->note_private; // For bacward compatibility
|
||||
$paiement->num_paiement = $paiement->num_payment; // For bacward compatibility
|
||||
$paiement->note = $paiement->note_private; // For bacward compatibility
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
|
||||
@ -594,43 +594,43 @@ class Paiement extends CommonObject
|
||||
{
|
||||
global $conf, $langs, $user;
|
||||
|
||||
$error=0;
|
||||
$bank_line_id=0;
|
||||
$error = 0;
|
||||
$bank_line_id = 0;
|
||||
|
||||
if (! empty($conf->banque->enabled))
|
||||
if (!empty($conf->banque->enabled))
|
||||
{
|
||||
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);
|
||||
return -1;
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
$this->fk_account=$accountid;
|
||||
$this->fk_account = $accountid;
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||
|
||||
dol_syslog("$user->id, $mode, $label, $this->fk_account, $emetteur_nom, $emetteur_banque");
|
||||
|
||||
$acc = new Account($this->db);
|
||||
$result=$acc->fetch($this->fk_account);
|
||||
$result = $acc->fetch($this->fk_account);
|
||||
|
||||
$totalamount=$this->amount;
|
||||
if (empty($totalamount)) $totalamount=$this->total; // For backward compatibility
|
||||
$totalamount = $this->amount;
|
||||
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 (!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
|
||||
$bank_line_id = $acc->addline(
|
||||
$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,
|
||||
$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,
|
||||
'',
|
||||
$user,
|
||||
|
||||
@ -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.formother.class.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
|
||||
$langs->loadLangs(array('compta', 'banks', 'bills'));
|
||||
@ -97,8 +97,8 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
||||
$search_day_lim = '';
|
||||
$search_year_lim = '';
|
||||
$search_month_lim = '';
|
||||
$search_project_ref='';
|
||||
$search_project='';
|
||||
$search_project_ref = '';
|
||||
$search_project = '';
|
||||
$toselect = '';
|
||||
$search_array_options = array();
|
||||
}
|
||||
@ -112,25 +112,25 @@ $form = new Form($db);
|
||||
$formother = new FormOther($db);
|
||||
$formsocialcontrib = new FormSocialContrib($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"));
|
||||
|
||||
$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,";
|
||||
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 .= " SUM(pc.amount) as alreadypayed";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c,";
|
||||
$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 .= " WHERE cs.fk_type = c.id";
|
||||
$sql .= " AND cs.entity = ".$conf->entity;
|
||||
// Search criteria
|
||||
if ($search_ref) $sql .= " AND cs.rowid=".$db->escape($search_ref);
|
||||
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_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);
|
||||
@ -173,7 +173,7 @@ if ($resql)
|
||||
if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit);
|
||||
if ($search_ref) $param .= '&search_ref='.urlencode($search_ref);
|
||||
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_typeid) $param .= '&search_typeid='.urlencode($search_typeid);
|
||||
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');
|
||||
print '</td>';
|
||||
// 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
|
||||
print '<td class="liste_titre"> </td>';
|
||||
// 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("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);
|
||||
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("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);
|
||||
@ -276,10 +276,10 @@ if ($resql)
|
||||
$chargesociale_static->ref = $obj->id;
|
||||
$chargesociale_static->label = $obj->label;
|
||||
$chargesociale_static->type_label = $obj->type_label;
|
||||
if (! empty($conf->projet->enabled)) {
|
||||
$projectstatic->id=$obj->project_id;
|
||||
$projectstatic->ref=$obj->project_ref;
|
||||
$projectstatic->title=$obj->project_label;
|
||||
if (!empty($conf->projet->enabled)) {
|
||||
$projectstatic->id = $obj->project_id;
|
||||
$projectstatic->ref = $obj->project_ref;
|
||||
$projectstatic->title = $obj->project_label;
|
||||
}
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
@ -297,7 +297,7 @@ if ($resql)
|
||||
if (!$i) $totalarray['nbfield']++;
|
||||
|
||||
// Project Ref
|
||||
if (! empty($conf->projet->enabled)) {
|
||||
if (!empty($conf->projet->enabled)) {
|
||||
print '<td class="nowrap">';
|
||||
if ($obj->project_id > 0)
|
||||
{
|
||||
|
||||
@ -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';
|
||||
|
||||
// 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)
|
||||
$socid = GETPOST('socid', 'int');
|
||||
|
||||
if ($user->socid > 0) $socid = $user->socid;
|
||||
if (! empty($conf->comptabilite->enabled)) $result=restrictedArea($user, 'compta', '', '', 'resultat');
|
||||
if (! empty($conf->accounting->enabled)) $result=restrictedArea($user, 'accounting', '', '', 'comptarapport');
|
||||
if (!empty($conf->comptabilite->enabled)) $result = restrictedArea($user, 'compta', '', '', 'resultat');
|
||||
if (!empty($conf->accounting->enabled)) $result = restrictedArea($user, 'accounting', '', '', 'comptarapport');
|
||||
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$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"];
|
||||
$sortfield=isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"];
|
||||
if (! $sortorder) $sortorder="asc";
|
||||
if (! $sortfield) $sortfield="ref";
|
||||
$sortorder = isset($_GET["sortorder"]) ? $_GET["sortorder"] : $_POST["sortorder"];
|
||||
$sortfield = isset($_GET["sortfield"]) ? $_GET["sortfield"] : $_POST["sortfield"];
|
||||
if (!$sortorder) $sortorder = "asc";
|
||||
if (!$sortfield) $sortfield = "ref";
|
||||
|
||||
// Category
|
||||
$selected_cat = (int) GETPOST('search_categ', 'int');
|
||||
@ -58,11 +58,11 @@ if (GETPOST('subcat', 'alpha') === 'yes') {
|
||||
}
|
||||
// product/service
|
||||
$selected_type = GETPOST('search_type', 'int');
|
||||
if ($selected_type =='') $selected_type = -1;
|
||||
if ($selected_type == '') $selected_type = -1;
|
||||
|
||||
// Date range
|
||||
$year=GETPOST("year");
|
||||
$month=GETPOST("month");
|
||||
$year = GETPOST("year");
|
||||
$month = GETPOST("month");
|
||||
$date_startyear = GETPOST("date_startyear");
|
||||
$date_startmonth = GETPOST("date_startmonth");
|
||||
$date_startday = GETPOST("date_startday");
|
||||
@ -79,51 +79,51 @@ if (empty($year))
|
||||
$month_current = strftime("%m", dol_now());
|
||||
$year_start = $year;
|
||||
}
|
||||
$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_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"));
|
||||
// Quarter
|
||||
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))
|
||||
{
|
||||
// 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);
|
||||
$year_end=$year_start;
|
||||
$month_end=$month_start;
|
||||
if (! GETPOST("month")) // If month not forced
|
||||
$month_start = GETPOST("month") ?GETPOST("month") : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
|
||||
$year_end = $year_start;
|
||||
$month_end = $month_start;
|
||||
if (!GETPOST("month")) // If month not forced
|
||||
{
|
||||
if (! GETPOST('year') && $month_start > $month_current)
|
||||
if (!GETPOST('year') && $month_start > $month_current)
|
||||
{
|
||||
$year_start--;
|
||||
$year_end--;
|
||||
}
|
||||
$month_end=$month_start-1;
|
||||
if ($month_end < 1) $month_end=12;
|
||||
$month_end = $month_start - 1;
|
||||
if ($month_end < 1) $month_end = 12;
|
||||
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
|
||||
{
|
||||
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==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 == 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 == 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); }
|
||||
}
|
||||
} else {
|
||||
// TODO We define q
|
||||
}
|
||||
|
||||
// $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'];
|
||||
$tmpe=dol_getdate($date_end);
|
||||
$tmpe = dol_getdate($date_end);
|
||||
$year_end = $tmpe['year'];
|
||||
$nbofyear = ($year_end - $year_start) + 1;
|
||||
|
||||
$commonparams=array();
|
||||
if (!empty($modecompta)) $commonparams['modecompta']=$modecompta;
|
||||
$commonparams = array();
|
||||
if (!empty($modecompta)) $commonparams['modecompta'] = $modecompta;
|
||||
if (!empty($sortorder)) $commonparams['sortorder'] = $sortorder;
|
||||
if (!empty($sortfield)) $commonparams['sortfield'] = $sortfield;
|
||||
|
||||
@ -142,15 +142,15 @@ $tableparams = array();
|
||||
if (!empty($selected_cat)) $tableparams['search_categ'] = $selected_cat;
|
||||
if (!empty($selected_soc)) $tableparams['search_soc'] = $selected_soc;
|
||||
if (!empty($selected_type)) $tableparams['search_type'] = $selected_type;
|
||||
$tableparams['subcat'] = ($subcat === true)?'yes':'';
|
||||
$tableparams['subcat'] = ($subcat === true) ? 'yes' : '';
|
||||
|
||||
// Adding common parameters
|
||||
$allparams = array_merge($commonparams, $headerparams, $tableparams);
|
||||
$headerparams = array_merge($commonparams, $headerparams);
|
||||
$tableparams = array_merge($commonparams, $tableparams);
|
||||
|
||||
foreach($allparams as $key => $value) {
|
||||
$paramslink .= '&' . $key . '=' . $value;
|
||||
foreach ($allparams as $key => $value) {
|
||||
$paramslink .= '&'.$key.'='.$value;
|
||||
}
|
||||
|
||||
|
||||
@ -160,127 +160,127 @@ foreach($allparams as $key => $value) {
|
||||
|
||||
llxHeader();
|
||||
|
||||
$form=new Form($db);
|
||||
$form = new Form($db);
|
||||
$formother = new FormOther($db);
|
||||
|
||||
// TODO Report from bookkeeping not yet available, so we switch on report on business events
|
||||
if ($modecompta=="BOOKKEEPING") $modecompta="CREANCES-DETTES";
|
||||
if ($modecompta=="BOOKKEEPINGCOLLECTED") $modecompta="RECETTES-DEPENSES";
|
||||
if ($modecompta == "BOOKKEEPING") $modecompta = "CREANCES-DETTES";
|
||||
if ($modecompta == "BOOKKEEPINGCOLLECTED") $modecompta = "RECETTES-DEPENSES";
|
||||
|
||||
// Show report header
|
||||
if ($modecompta=="CREANCES-DETTES") {
|
||||
$name=$langs->trans("Turnover").', '.$langs->trans("ByProductsAndServices");
|
||||
$calcmode=$langs->trans("CalcModeDebt");
|
||||
if ($modecompta == "CREANCES-DETTES") {
|
||||
$name = $langs->trans("Turnover").', '.$langs->trans("ByProductsAndServices");
|
||||
$calcmode = $langs->trans("CalcModeDebt");
|
||||
//$calcmode.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=RECETTES-DEPENSES">','</a>').')';
|
||||
|
||||
$description=$langs->trans("RulesCADue");
|
||||
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||
$description.= $langs->trans("DepositsAreNotIncluded");
|
||||
$description = $langs->trans("RulesCADue");
|
||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||
$description .= $langs->trans("DepositsAreNotIncluded");
|
||||
} 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");
|
||||
$calcmode=$langs->trans("CalcModeEngagement");
|
||||
$name = $langs->trans("TurnoverCollected").', '.$langs->trans("ByProductsAndServices");
|
||||
$calcmode = $langs->trans("CalcModeEngagement");
|
||||
//$calcmode.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=CREANCES-DETTES">','</a>').')';
|
||||
|
||||
$description=$langs->trans("RulesCAIn");
|
||||
$description.= $langs->trans("DepositsAreIncluded");
|
||||
$description = $langs->trans("RulesCAIn");
|
||||
$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);
|
||||
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>';
|
||||
$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>';
|
||||
else $periodlink = '';
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$name=array();
|
||||
$name = array();
|
||||
|
||||
// SQL request
|
||||
$catotal=0;
|
||||
$catotal_ht=0;
|
||||
$qtytotal=0;
|
||||
$catotal = 0;
|
||||
$catotal_ht = 0;
|
||||
$qtytotal = 0;
|
||||
|
||||
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.= " 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.= " 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)";
|
||||
$sql.= ",".MAIN_DB_PREFIX."facturedet as l";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON l.fk_product = p.rowid";
|
||||
$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 .= " 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)";
|
||||
$sql .= ",".MAIN_DB_PREFIX."facturedet as l";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON l.fk_product = p.rowid";
|
||||
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
|
||||
{
|
||||
$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.= " AND f.fk_statut in (1,2)";
|
||||
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||
$sql.= " AND f.type IN (0,1,2,5)";
|
||||
$sql .= " WHERE l.fk_facture = f.rowid";
|
||||
$sql .= " AND f.fk_statut in (1,2)";
|
||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||
$sql .= " AND f.type IN (0,1,2,5)";
|
||||
} 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) {
|
||||
$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
|
||||
{
|
||||
$sql.=" AND cp.fk_product is null";
|
||||
$sql .= " AND cp.fk_product is null";
|
||||
}
|
||||
elseif ($selected_cat) { // Into a specific category
|
||||
$sql.= " AND (c.rowid = ".$selected_cat;
|
||||
if ($subcat) $sql.=" OR c.fk_parent = " . $selected_cat;
|
||||
$sql.= ")";
|
||||
$sql.= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid";
|
||||
$sql .= " AND (c.rowid = ".$selected_cat;
|
||||
if ($subcat) $sql .= " OR c.fk_parent = ".$selected_cat;
|
||||
$sql .= ")";
|
||||
$sql .= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid";
|
||||
}
|
||||
if($selected_soc > 0) $sql .= " AND soc.rowid=".$selected_soc;
|
||||
$sql.= " AND f.entity IN (".getEntity('invoice').")";
|
||||
$sql.= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type";
|
||||
$sql.= $db->order($sortfield, $sortorder);
|
||||
if ($selected_soc > 0) $sql .= " AND soc.rowid=".$selected_soc;
|
||||
$sql .= " AND f.entity IN (".getEntity('invoice').")";
|
||||
$sql .= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type";
|
||||
$sql .= $db->order($sortfield, $sortorder);
|
||||
|
||||
dol_syslog("cabyprodserv", LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
if ($result) {
|
||||
$num = $db->num_rows($result);
|
||||
$i=0;
|
||||
$i = 0;
|
||||
while ($i < $num) {
|
||||
$obj = $db->fetch_object($result);
|
||||
$amount_ht[$obj->rowid] = $obj->amount;
|
||||
$amount[$obj->rowid] = $obj->amount_ttc;
|
||||
$qty[$obj->rowid] = $obj->qty;
|
||||
$name[$obj->rowid] = $obj->ref . ' - ' . $obj->label;
|
||||
$name[$obj->rowid] = $obj->ref.' - '.$obj->label;
|
||||
$type[$obj->rowid] = $obj->product_type;
|
||||
$catotal_ht+=$obj->amount;
|
||||
$catotal+=$obj->amount_ttc;
|
||||
$qtytotal+=$obj->qty;
|
||||
$catotal_ht += $obj->amount;
|
||||
$catotal += $obj->amount_ttc;
|
||||
$qtytotal += $obj->qty;
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
@ -288,25 +288,25 @@ if ($modecompta == 'CREANCES-DETTES')
|
||||
}
|
||||
|
||||
// Show Array
|
||||
$i=0;
|
||||
$i = 0;
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
// Extra parameters management
|
||||
foreach($headerparams as $key => $value)
|
||||
foreach ($headerparams as $key => $value)
|
||||
{
|
||||
print '<input type="hidden" name="'.$key.'" value="'.$value.'">';
|
||||
}
|
||||
|
||||
$moreforfilter='';
|
||||
$moreforfilter = '';
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
||||
|
||||
// Category filter
|
||||
print '<tr class="liste_titre">';
|
||||
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 $langs->trans("SubCats") . '? ';
|
||||
print $langs->trans("SubCats").'? ';
|
||||
print '<input type="checkbox" name="subcat" value="yes"';
|
||||
if ($subcat) {
|
||||
print ' checked';
|
||||
@ -314,12 +314,12 @@ if ($modecompta == 'CREANCES-DETTES')
|
||||
print '>';
|
||||
// type filter (produit/service)
|
||||
print ' ';
|
||||
print $langs->trans("Type"). ': ';
|
||||
$form->select_type_of_lines(isset($selected_type)?$selected_type:-1, 'search_type', 1, 1, 1);
|
||||
print $langs->trans("Type").': ';
|
||||
$form->select_type_of_lines(isset($selected_type) ? $selected_type : -1, 'search_type', 1, 1, 1);
|
||||
|
||||
//select thirdparty
|
||||
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 colspan="5" class="right">';
|
||||
@ -391,16 +391,16 @@ if ($modecompta == 'CREANCES-DETTES')
|
||||
print "</tr>\n";
|
||||
|
||||
if (count($name)) {
|
||||
foreach($name as $key=>$value) {
|
||||
foreach ($name as $key=>$value) {
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
// Product
|
||||
print "<td>";
|
||||
$fullname=$name[$key];
|
||||
$fullname = $name[$key];
|
||||
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 {
|
||||
$linkname=$langs->trans("PaymentsNotLinkedToProduct");
|
||||
$linkname = $langs->trans("PaymentsNotLinkedToProduct");
|
||||
}
|
||||
print $linkname;
|
||||
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
|
||||
// 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.
|
||||
print '<br>'.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant") . '<br>';
|
||||
print '<br>'.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant").'<br>';
|
||||
}
|
||||
|
||||
// End of page
|
||||
|
||||
@ -1704,7 +1704,7 @@ else
|
||||
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|
||||
$line = new ContratLigne($db);
|
||||
$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
|
||||
@ -1794,7 +1794,7 @@ else
|
||||
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|
||||
$line = new ContratLigne($db);
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
|
||||
*/
|
||||
class box_clients extends ModeleBoxes
|
||||
{
|
||||
public $boxcode="lastcustomers";
|
||||
public $boximg="object_company";
|
||||
public $boxlabel="BoxLastCustomers";
|
||||
public $boxcode = "lastcustomers";
|
||||
public $boximg = "object_company";
|
||||
public $boxlabel = "BoxLastCustomers";
|
||||
public $depends = array("societe");
|
||||
|
||||
/**
|
||||
@ -61,9 +61,9 @@ class box_clients extends ModeleBoxes
|
||||
$this->db = $db;
|
||||
|
||||
// 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;
|
||||
$langs->load("boxes");
|
||||
|
||||
$this->max=$max;
|
||||
$this->max = $max;
|
||||
|
||||
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));
|
||||
|
||||
if ($user->rights->societe->lire)
|
||||
{
|
||||
$sql = "SELECT s.nom as name, s.rowid as socid";
|
||||
$sql.= ", s.code_client";
|
||||
$sql.= ", s.client";
|
||||
$sql.= ", s.code_fournisseur";
|
||||
$sql.= ", s.fournisseur";
|
||||
$sql.= ", s.code_compta";
|
||||
$sql.= ", s.code_compta_fournisseur";
|
||||
$sql.= ", s.logo";
|
||||
$sql.= ", s.email";
|
||||
$sql.= ", s.datec, s.tms, s.status, s.entity";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql.= " WHERE s.client IN (1, 3)";
|
||||
$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->socid) $sql.= " AND s.rowid = $user->socid";
|
||||
$sql.= " ORDER BY s.tms DESC";
|
||||
$sql.= $this->db->plimit($max, 0);
|
||||
$sql .= ", s.code_client";
|
||||
$sql .= ", s.client";
|
||||
$sql .= ", s.code_fournisseur";
|
||||
$sql .= ", s.fournisseur";
|
||||
$sql .= ", s.code_compta";
|
||||
$sql .= ", s.code_compta_fournisseur";
|
||||
$sql .= ", s.logo";
|
||||
$sql .= ", s.email";
|
||||
$sql .= ", s.datec, s.tms, s.status, s.entity";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql .= " WHERE s.client IN (1, 3)";
|
||||
$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->socid) $sql .= " AND s.rowid = $user->socid";
|
||||
$sql .= " ORDER BY s.tms DESC";
|
||||
$sql .= $this->db->plimit($max, 0);
|
||||
|
||||
dol_syslog(get_class($this)."::loadBox", LOG_DEBUG);
|
||||
$result = $this->db->query($sql);
|
||||
@ -115,8 +115,8 @@ class box_clients extends ModeleBoxes
|
||||
while ($line < $num)
|
||||
{
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$datec=$this->db->jdate($objp->datec);
|
||||
$datem=$this->db->jdate($objp->tms);
|
||||
$datec = $this->db->jdate($objp->datec);
|
||||
$datem = $this->db->jdate($objp->tms);
|
||||
$thirdpartystatic->id = $objp->socid;
|
||||
$thirdpartystatic->name = $objp->name;
|
||||
$thirdpartystatic->code_client = $objp->code_client;
|
||||
@ -148,7 +148,7 @@ class box_clients extends ModeleBoxes
|
||||
$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);
|
||||
}
|
||||
|
||||
@ -32,9 +32,9 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
|
||||
*/
|
||||
class box_fournisseurs extends ModeleBoxes
|
||||
{
|
||||
public $boxcode="lastsuppliers";
|
||||
public $boximg="object_company";
|
||||
public $boxlabel="BoxLastSuppliers";
|
||||
public $boxcode = "lastsuppliers";
|
||||
public $boximg = "object_company";
|
||||
public $boxlabel = "BoxLastSuppliers";
|
||||
public $depends = array("fournisseur");
|
||||
|
||||
/**
|
||||
@ -60,7 +60,7 @@ class box_fournisseurs extends ModeleBoxes
|
||||
|
||||
$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;
|
||||
$langs->load("boxes");
|
||||
|
||||
$this->max=$max;
|
||||
$this->max = $max;
|
||||
|
||||
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';
|
||||
$thirdpartytmp=new Fournisseur($this->db);
|
||||
$thirdpartytmp = new Fournisseur($this->db);
|
||||
|
||||
$this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedSuppliers", $max));
|
||||
|
||||
if ($user->rights->societe->lire)
|
||||
{
|
||||
$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.logo, s.code_compta_fournisseur, s.entity";
|
||||
$sql .= " s.code_fournisseur, s.email as semail,";
|
||||
$sql .= " s.logo, s.code_compta_fournisseur, s.entity";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql.= " WHERE s.fournisseur = 1";
|
||||
$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->socid) $sql.= " AND s.rowid = ".$user->socid;
|
||||
$sql.= " ORDER BY s.tms DESC ";
|
||||
$sql.= $this->db->plimit($max, 0);
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql .= " WHERE s.fournisseur = 1";
|
||||
$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->socid) $sql .= " AND s.rowid = ".$user->socid;
|
||||
$sql .= " ORDER BY s.tms DESC ";
|
||||
$sql .= $this->db->plimit($max, 0);
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
@ -106,8 +106,8 @@ class box_fournisseurs extends ModeleBoxes
|
||||
while ($line < $num)
|
||||
{
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$datec=$this->db->jdate($objp->datec);
|
||||
$datem=$this->db->jdate($objp->tms);
|
||||
$datec = $this->db->jdate($objp->datec);
|
||||
$datem = $this->db->jdate($objp->tms);
|
||||
$thirdpartytmp->id = $objp->socid;
|
||||
$thirdpartytmp->name = $objp->name;
|
||||
$thirdpartytmp->email = $objp->semail;
|
||||
@ -135,7 +135,7 @@ class box_fournisseurs extends ModeleBoxes
|
||||
$line++;
|
||||
}
|
||||
|
||||
if ($num==0) $this->info_box_contents[$line][0] = array(
|
||||
if ($num == 0) $this->info_box_contents[$line][0] = array(
|
||||
'td' => 'class="center"',
|
||||
'text'=>$langs->trans("NoRecordedSuppliers"),
|
||||
);
|
||||
|
||||
@ -33,10 +33,10 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
|
||||
*/
|
||||
class box_propales extends ModeleBoxes
|
||||
{
|
||||
public $boxcode="lastpropals";
|
||||
public $boximg="object_propal";
|
||||
public $boxlabel="BoxLastProposals";
|
||||
public $depends = array("propal"); // conf->propal->enabled
|
||||
public $boxcode = "lastpropals";
|
||||
public $boximg = "object_propal";
|
||||
public $boxlabel = "BoxLastProposals";
|
||||
public $depends = array("propal"); // conf->propal->enabled
|
||||
|
||||
/**
|
||||
* @var DoliDB Database handler.
|
||||
@ -61,7 +61,7 @@ class box_propales extends ModeleBoxes
|
||||
|
||||
$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;
|
||||
|
||||
$this->max=$max;
|
||||
$this->max = $max;
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.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);
|
||||
|
||||
$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)
|
||||
{
|
||||
$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.= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= ", ".MAIN_DB_PREFIX."propal as p";
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql.= " WHERE p.fk_soc = s.rowid";
|
||||
$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->socid) $sql.= " AND s.rowid = ".$user->socid;
|
||||
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 ";
|
||||
$sql.= $this->db->plimit($max, 0);
|
||||
$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 .= ", ".MAIN_DB_PREFIX."propal as p";
|
||||
if (!$user->rights->societe->client->voir && !$user->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql .= " WHERE p.fk_soc = s.rowid";
|
||||
$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->socid) $sql .= " AND s.rowid = ".$user->socid;
|
||||
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 ";
|
||||
$sql .= $this->db->plimit($max, 0);
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $this->db->num_rows($result);
|
||||
$now=dol_now();
|
||||
$now = dol_now();
|
||||
|
||||
$line = 0;
|
||||
|
||||
while ($line < $num) {
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$date=$this->db->jdate($objp->dp);
|
||||
$datec=$this->db->jdate($objp->datec);
|
||||
$datem=$this->db->jdate($objp->tms);
|
||||
$dateterm=$this->db->jdate($objp->fin_validite);
|
||||
$dateclose=$this->db->jdate($objp->date_cloture);
|
||||
$date = $this->db->jdate($objp->dp);
|
||||
$datec = $this->db->jdate($objp->datec);
|
||||
$datem = $this->db->jdate($objp->tms);
|
||||
$dateterm = $this->db->jdate($objp->fin_validite);
|
||||
$dateclose = $this->db->jdate($objp->date_cloture);
|
||||
$propalstatic->id = $objp->rowid;
|
||||
$propalstatic->ref = $objp->ref;
|
||||
$propalstatic->total_ht = $objp->total_ht;
|
||||
@ -161,7 +161,7 @@ class box_propales extends ModeleBoxes
|
||||
$line++;
|
||||
}
|
||||
|
||||
if ($num==0)
|
||||
if ($num == 0)
|
||||
$this->info_box_contents[$line][0] = array(
|
||||
'td' => 'class="center"',
|
||||
'text'=>$langs->trans("NoRecordedProposals"),
|
||||
|
||||
@ -571,7 +571,7 @@ abstract class CommonObject
|
||||
$return = '<div class="box-flex-item">';
|
||||
$return .= '<div class="info-box info-box-sm">';
|
||||
$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 .= '<div class="info-box-content">';
|
||||
$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
|
||||
// 0=No test on entity, 1=Test with field entity, 'field@table'=Test with link by field@table
|
||||
$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 .= " FROM ".(empty($nodbprefix) ?MAIN_DB_PREFIX:'').$this->table_element." as te";
|
||||
if ($this->element == 'user' && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
|
||||
$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);
|
||||
$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
|
||||
$sql .= $filter;
|
||||
}
|
||||
if (isset($this->ismultientitymanaged) && ! is_numeric($this->ismultientitymanaged)) {
|
||||
if (isset($this->ismultientitymanaged) && !is_numeric($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
|
||||
}
|
||||
@ -1836,7 +1836,7 @@ abstract class CommonObject
|
||||
$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);
|
||||
$sql .= ' AND parenttable.entity IN ('.getEntity($tmparray[1]).')';
|
||||
}
|
||||
@ -5625,7 +5625,7 @@ abstract class CommonObject
|
||||
$form = new Form($this->db);
|
||||
}
|
||||
|
||||
if (! empty($this->fields)) {
|
||||
if (!empty($this->fields)) {
|
||||
$val = $this->fields[$key];
|
||||
}
|
||||
|
||||
|
||||
@ -293,30 +293,30 @@ class Conf
|
||||
$rootfortemp = empty($this->global->MAIN_TEMP_DIR) ? $rootfordata : $this->global->MAIN_TEMP_DIR;
|
||||
|
||||
// Define default dir_output and dir_temp for directories of modules
|
||||
foreach($this->modules as $module)
|
||||
foreach ($this->modules as $module)
|
||||
{
|
||||
//var_dump($module);
|
||||
// For multicompany sharings
|
||||
$this->$module->multidir_output = array($this->entity => $rootfordata."/".$module);
|
||||
$this->$module->multidir_temp = array($this->entity => $rootfortemp."/".$module."/temp");
|
||||
$this->$module->multidir_output = array($this->entity => $rootfordata."/".$module);
|
||||
$this->$module->multidir_temp = array($this->entity => $rootfortemp."/".$module."/temp");
|
||||
// For backward compatibility
|
||||
$this->$module->dir_output = $rootfordata."/".$module;
|
||||
$this->$module->dir_temp = $rootfortemp."/".$module."/temp";
|
||||
$this->$module->dir_output = $rootfordata."/".$module;
|
||||
$this->$module->dir_temp = $rootfortemp."/".$module."/temp";
|
||||
}
|
||||
|
||||
// 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;
|
||||
$dirname = 'dir_'.$type;
|
||||
$multidirname = 'multidir_'.$type;
|
||||
$dirname = 'dir_'.$type;
|
||||
|
||||
if($type != 'temp')
|
||||
if ($type != 'temp')
|
||||
{
|
||||
// For multicompany sharings
|
||||
$this->$module->$multidirname = array($this->entity => $rootfordata."/".$name);
|
||||
@ -338,90 +338,90 @@ class Conf
|
||||
}
|
||||
|
||||
// For mycompany storage
|
||||
$this->mycompany->dir_output = $rootfordata."/mycompany";
|
||||
$this->mycompany->dir_temp = $rootfortemp."/mycompany/temp";
|
||||
$this->mycompany->dir_output = $rootfordata."/mycompany";
|
||||
$this->mycompany->dir_temp = $rootfortemp."/mycompany/temp";
|
||||
|
||||
// For admin storage
|
||||
$this->admin->dir_output = $rootfordata.'/admin';
|
||||
$this->admin->dir_temp = $rootfortemp.'/admin/temp';
|
||||
$this->admin->dir_output = $rootfordata.'/admin';
|
||||
$this->admin->dir_temp = $rootfortemp.'/admin/temp';
|
||||
|
||||
// For user storage
|
||||
$this->user->multidir_output = array($this->entity => $rootfordata."/users");
|
||||
$this->user->multidir_temp = array($this->entity => $rootfortemp."/users/temp");
|
||||
$this->user->multidir_output = array($this->entity => $rootfordata."/users");
|
||||
$this->user->multidir_temp = array($this->entity => $rootfortemp."/users/temp");
|
||||
// For backward compatibility
|
||||
$this->user->dir_output = $rootforuser."/users";
|
||||
$this->user->dir_temp = $rootfortemp."/users/temp";
|
||||
$this->user->dir_output = $rootforuser."/users";
|
||||
$this->user->dir_temp = $rootfortemp."/users/temp";
|
||||
|
||||
// For usergroup storage
|
||||
$this->usergroup->dir_output = $rootforuser."/usergroups";
|
||||
$this->usergroup->dir_temp = $rootfortemp."/usergroups/temp";
|
||||
$this->usergroup->dir_output = $rootforuser."/usergroups";
|
||||
$this->usergroup->dir_temp = $rootfortemp."/usergroups/temp";
|
||||
|
||||
// For proposal storage
|
||||
$this->propal->multidir_output = array($this->entity => $rootfordata."/propale");
|
||||
$this->propal->multidir_temp = array($this->entity => $rootfortemp."/propale/temp");
|
||||
$this->propal->multidir_output = array($this->entity => $rootfordata."/propale");
|
||||
$this->propal->multidir_temp = array($this->entity => $rootfortemp."/propale/temp");
|
||||
// For backward compatibility
|
||||
$this->propal->dir_output = $rootfordata."/propale";
|
||||
$this->propal->dir_temp = $rootfortemp."/propale/temp";
|
||||
$this->propal->dir_output = $rootfordata."/propale";
|
||||
$this->propal->dir_temp = $rootfortemp."/propale/temp";
|
||||
|
||||
// For medias storage
|
||||
$this->medias->multidir_output = array($this->entity => $rootfordata."/medias");
|
||||
$this->medias->multidir_temp = array($this->entity => $rootfortemp."/medias/temp");
|
||||
$this->medias->multidir_output = array($this->entity => $rootfordata."/medias");
|
||||
$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.
|
||||
|
||||
// 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
|
||||
$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
|
||||
if (! empty($this->fournisseur))
|
||||
if (!empty($this->fournisseur))
|
||||
{
|
||||
$this->fournisseur->commande=new stdClass();
|
||||
$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->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility
|
||||
$this->fournisseur->commande->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility
|
||||
$this->fournisseur->commande = new stdClass();
|
||||
$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->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility
|
||||
$this->fournisseur->commande->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility
|
||||
|
||||
$this->fournisseur->facture=new stdClass();
|
||||
$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->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility
|
||||
$this->fournisseur->facture->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility
|
||||
$this->fournisseur->facture = new stdClass();
|
||||
$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->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility
|
||||
$this->fournisseur->facture->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility
|
||||
|
||||
$this->supplierproposal=new stdClass();
|
||||
$this->supplierproposal->multidir_output = array($this->entity => $rootfordata."/supplier_proposal");
|
||||
$this->supplierproposal->multidir_temp = array($this->entity => $rootfortemp."/supplier_proposal/temp");
|
||||
$this->supplierproposal->dir_output = $rootfordata."/supplier_proposal"; // For backward compatibility
|
||||
$this->supplierproposal->dir_temp = $rootfortemp."/supplier_proposal/temp"; // For backward compatibility
|
||||
$this->supplierproposal = new stdClass();
|
||||
$this->supplierproposal->multidir_output = array($this->entity => $rootfordata."/supplier_proposal");
|
||||
$this->supplierproposal->multidir_temp = array($this->entity => $rootfortemp."/supplier_proposal/temp");
|
||||
$this->supplierproposal->dir_output = $rootfordata."/supplier_proposal"; // For backward compatibility
|
||||
$this->supplierproposal->dir_temp = $rootfortemp."/supplier_proposal/temp"; // For backward compatibility
|
||||
|
||||
$this->fournisseur->payment=new stdClass();
|
||||
$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->dir_output = $rootfordata."/fournisseur/payment"; // For backward compatibility
|
||||
$this->fournisseur->payment->dir_temp = $rootfortemp."/fournisseur/payment/temp"; // For backward compatibility
|
||||
$this->fournisseur->payment = new stdClass();
|
||||
$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->dir_output = $rootfordata."/fournisseur/payment"; // 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
|
||||
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
|
||||
{
|
||||
$this->supplier_order=new stdClass();
|
||||
$this->supplier_order->enabled = 1;
|
||||
$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->dir_output = $rootfordata."/fournisseur/commande"; // For backward compatibility
|
||||
$this->supplier_order->dir_temp = $rootfortemp."/fournisseur/commande/temp"; // For backward compatibility
|
||||
$this->supplier_order = new stdClass();
|
||||
$this->supplier_order->enabled = 1;
|
||||
$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->dir_output = $rootfordata."/fournisseur/commande"; // 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
|
||||
{
|
||||
$this->supplier_invoice=new stdClass();
|
||||
$this->supplier_invoice->enabled = 1;
|
||||
$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->dir_output = $rootfordata."/fournisseur/facture"; // For backward compatibility
|
||||
$this->supplier_invoice->dir_temp = $rootfortemp."/fournisseur/facture/temp"; // For backward compatibility
|
||||
$this->supplier_invoice = new stdClass();
|
||||
$this->supplier_invoice->enabled = 1;
|
||||
$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->dir_output = $rootfordata."/fournisseur/facture"; // 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";
|
||||
|
||||
// Module productbatch
|
||||
$this->productbatch->multidir_output = array($this->entity => $rootfordata."/produitlot");
|
||||
$this->productbatch->multidir_temp = array($this->entity => $rootfortemp."/produitlot/temp");
|
||||
$this->productbatch->multidir_output = array($this->entity => $rootfordata."/produitlot");
|
||||
$this->productbatch->multidir_temp = array($this->entity => $rootfortemp."/produitlot/temp");
|
||||
|
||||
// Module contrat
|
||||
$this->contrat->multidir_output = array($this->entity => $rootfordata."/contract");
|
||||
$this->contrat->multidir_temp = array($this->entity => $rootfortemp."/contract/temp");
|
||||
$this->contrat->multidir_output = array($this->entity => $rootfordata."/contract");
|
||||
$this->contrat->multidir_temp = array($this->entity => $rootfortemp."/contract/temp");
|
||||
// For backward compatibility
|
||||
$this->contrat->dir_output = $rootfordata."/contract";
|
||||
$this->contrat->dir_temp = $rootfortemp."/contract/temp";
|
||||
$this->contrat->dir_output = $rootfordata."/contract";
|
||||
$this->contrat->dir_temp = $rootfortemp."/contract/temp";
|
||||
|
||||
// Module bank
|
||||
$this->bank->multidir_output = array($this->entity => $rootfordata."/bank");
|
||||
$this->bank->multidir_temp = array($this->entity => $rootfortemp."/bank/temp");
|
||||
// For backward compatibility
|
||||
$this->bank->dir_output = $rootfordata."/bank";
|
||||
$this->bank->dir_temp = $rootfortemp."/bank/temp";
|
||||
$this->bank->dir_output = $rootfordata."/bank";
|
||||
$this->bank->dir_temp = $rootfortemp."/bank/temp";
|
||||
|
||||
// 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
|
||||
@ -527,7 +527,7 @@ class Conf
|
||||
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;
|
||||
$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
|
||||
$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.
|
||||
}
|
||||
|
||||
if (!isset($this->global->MAIN_EXTRAFIELDS_IN_ONE_TD)) $this->global->MAIN_EXTRAFIELDS_IN_ONE_TD = 1;
|
||||
|
||||
if (!isset($this->global->MAIN_USE_OLD_TITLE_BUTTON)) $this->global->MAIN_USE_OLD_TITLE_BUTTON = 0;
|
||||
|
||||
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_SRV)) $this->global->MAIN_MODULE_DOLISTORE_API_SRV = 'https://www.dolistore.com';
|
||||
if (empty($this->global->MAIN_MODULE_DOLISTORE_API_KEY)) $this->global->MAIN_MODULE_DOLISTORE_API_KEY = 'dolistorecatalogpublickey1234567';
|
||||
|
||||
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 (!isset($this->global->MAIN_SECURITY_CSRF_WITH_TOKEN) && $this->global->MAIN_FEATURES_LEVEL >= 2) $this->global->MAIN_SECURITY_CSRF_WITH_TOKEN = 1;
|
||||
|
||||
|
||||
@ -90,7 +90,7 @@ class DolEditor
|
||||
{
|
||||
$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';
|
||||
|
||||
@ -121,7 +121,7 @@ class DolEditor
|
||||
$this->editor->Config['CustomConfigurationsPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/fckconfig.js';
|
||||
$this->editor->Config['SkinPath'] = DOL_URL_ROOT.'/theme/'.$conf->theme.'/fckeditor/';
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// Define some properties
|
||||
if (in_array($this->tool, array('textarea', 'ckeditor', 'ace')))
|
||||
|
||||
@ -59,16 +59,17 @@ class FormAdmin
|
||||
* @param int $forcecombo Force to use combo box (so no ajax beautify effect)
|
||||
* @param int $multiselect Make the combo a multiselect
|
||||
* @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
|
||||
*/
|
||||
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
|
||||
global $conf, $langs;
|
||||
|
||||
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='';
|
||||
|
||||
@ -95,21 +96,28 @@ class FormAdmin
|
||||
{
|
||||
$valuetoshow=$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;
|
||||
}
|
||||
if ($onlykeys && is_array($onlykeys) && ! array_key_exists($key, $onlykeys)) {
|
||||
if ($onlykeys && is_array($onlykeys) && ! array_key_exists($keytouse, $onlykeys)) {
|
||||
continue;
|
||||
}
|
||||
if ($selected == $key)
|
||||
|
||||
if ($selected == $keytouse)
|
||||
{
|
||||
$out.= '<option value="'.$key.'" selected>'.$valuetoshow.'</option>';
|
||||
$out.= '<option value="'.$keytouse.'" selected>'.$valuetoshow.'</option>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$out.= '<option value="'.$key.'">'.$valuetoshow.'</option>';
|
||||
$out.= '<option value="'.$keytouse.'">'.$valuetoshow.'</option>';
|
||||
}
|
||||
}
|
||||
$out.= '</select>';
|
||||
@ -137,49 +145,49 @@ class FormAdmin
|
||||
public function select_menu($selected, $htmlname, $dirmenuarray, $moreattrib = '')
|
||||
{
|
||||
// phpcs:enable
|
||||
global $langs,$conf;
|
||||
global $langs, $conf;
|
||||
|
||||
// Clean 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($dirmenuarray as $dirtoscan)
|
||||
foreach ($dirmenuarray as $dirtoscan)
|
||||
{
|
||||
$dir=$dirroot.$dirtoscan;
|
||||
$dir = $dirroot.$dirtoscan;
|
||||
//print $dir.'<br>';
|
||||
if (is_dir($dir))
|
||||
{
|
||||
$handle=opendir($dir);
|
||||
$handle = opendir($dir);
|
||||
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 (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('/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('/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('/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
|
||||
|
||||
$filelib=preg_replace('/\.php$/i', '', $file);
|
||||
$prefix='';
|
||||
$filelib = preg_replace('/\.php$/i', '', $file);
|
||||
$prefix = '';
|
||||
// 0=Recommanded, 1=Experimental, 2=Developpement, 3=Other
|
||||
if (preg_match('/^eldy/i', $file)) $prefix='0';
|
||||
elseif (preg_match('/^smartphone/i', $file)) $prefix='2';
|
||||
else $prefix='3';
|
||||
if (preg_match('/^eldy/i', $file)) $prefix = '0';
|
||||
elseif (preg_match('/^smartphone/i', $file)) $prefix = '2';
|
||||
else $prefix = '3';
|
||||
|
||||
if ($file == $selected)
|
||||
{
|
||||
$menuarray[$prefix.'_'.$file]='<option value="'.$file.'" selected>'.$filelib.'</option>';
|
||||
$menuarray[$prefix.'_'.$file] = '<option value="'.$file.'" selected>'.$filelib.'</option>';
|
||||
}
|
||||
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);
|
||||
|
||||
// Output combo list of menus
|
||||
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>';
|
||||
$oldprefix='';
|
||||
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($moreattrib ? ' '.$moreattrib : '').'>';
|
||||
$oldprefix = '';
|
||||
foreach ($menuarray as $key => $val)
|
||||
{
|
||||
$tab=explode('_', $key);
|
||||
$newprefix=$tab[0];
|
||||
if ($newprefix=='1' && ($conf->global->MAIN_FEATURES_LEVEL < 1)) continue;
|
||||
if ($newprefix=='2' && ($conf->global->MAIN_FEATURES_LEVEL < 2)) continue;
|
||||
$tab = explode('_', $key);
|
||||
$newprefix = $tab[0];
|
||||
if ($newprefix == '1' && ($conf->global->MAIN_FEATURES_LEVEL < 1)) continue;
|
||||
if ($newprefix == '2' && ($conf->global->MAIN_FEATURES_LEVEL < 2)) continue;
|
||||
if ($newprefix != $oldprefix) // Add separators
|
||||
{
|
||||
// Affiche titre
|
||||
print '<option value="-1" disabled>';
|
||||
if ($newprefix=='0') print '-- '.$langs->trans("VersionRecommanded").' --';
|
||||
if ($newprefix=='1') print '-- '.$langs->trans("VersionExperimental").' --';
|
||||
if ($newprefix=='2') print '-- '.$langs->trans("VersionDevelopment").' --';
|
||||
if ($newprefix=='3') print '-- '.$langs->trans("Other").' --';
|
||||
if ($newprefix == '0') print '-- '.$langs->trans("VersionRecommanded").' --';
|
||||
if ($newprefix == '1') print '-- '.$langs->trans("VersionExperimental").' --';
|
||||
if ($newprefix == '2') print '-- '.$langs->trans("VersionDevelopment").' --';
|
||||
if ($newprefix == '3') print '-- '.$langs->trans("Other").' --';
|
||||
print '</option>';
|
||||
$oldprefix=$newprefix;
|
||||
$oldprefix = $newprefix;
|
||||
}
|
||||
print $val."\n"; // Show menu entry
|
||||
print $val."\n"; // Show menu entry
|
||||
}
|
||||
print '</select>';
|
||||
}
|
||||
@ -227,37 +235,37 @@ class FormAdmin
|
||||
public function select_menu_families($selected, $htmlname, $dirmenuarray)
|
||||
{
|
||||
// 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();
|
||||
$expdevmenu = array();
|
||||
|
||||
$menuarray=array();
|
||||
$menuarray = array();
|
||||
|
||||
foreach($dirmenuarray as $dirmenu)
|
||||
foreach ($dirmenuarray as $dirmenu)
|
||||
{
|
||||
foreach ($conf->file->dol_document_root as $dirroot)
|
||||
{
|
||||
$dir=$dirroot.$dirmenu;
|
||||
$dir = $dirroot.$dirmenu;
|
||||
if (is_dir($dir))
|
||||
{
|
||||
$handle=opendir($dir);
|
||||
$handle = opendir($dir);
|
||||
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')
|
||||
{
|
||||
$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('/^default/i', $filelib)) continue;
|
||||
if (preg_match('/^empty/i', $filelib)) continue;
|
||||
if (preg_match('/\.lib/i', $filelib)) 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);
|
||||
}
|
||||
@ -269,11 +277,11 @@ class FormAdmin
|
||||
|
||||
// Affichage liste deroulante des menus
|
||||
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
|
||||
$oldprefix='';
|
||||
$oldprefix = '';
|
||||
foreach ($menuarray as $key => $val)
|
||||
{
|
||||
$tab=explode('_', $key);
|
||||
$newprefix=$tab[0];
|
||||
$tab = explode('_', $key);
|
||||
$newprefix = $tab[0];
|
||||
print '<option value="'.$key.'"';
|
||||
if ($key == $selected)
|
||||
{
|
||||
@ -299,7 +307,7 @@ class FormAdmin
|
||||
public function select_timezone($selected, $htmlname)
|
||||
{
|
||||
// phpcs:enable
|
||||
global $langs,$conf;
|
||||
global $langs, $conf;
|
||||
|
||||
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
|
||||
print '<option value="-1"> </option>';
|
||||
@ -359,21 +367,21 @@ class FormAdmin
|
||||
$langs->load("dict");
|
||||
|
||||
$sql = "SELECT code, label, width, height, unit";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_paper_format";
|
||||
$sql.= " WHERE active=1";
|
||||
if ($filter) $sql.=" AND code LIKE '%".$this->db->escape($filter)."%'";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_paper_format";
|
||||
$sql .= " WHERE active=1";
|
||||
if ($filter) $sql .= " AND code LIKE '%".$this->db->escape($filter)."%'";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num=$this->db->num_rows($resql);
|
||||
$i=0;
|
||||
$num = $this->db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj=$this->db->fetch_object($resql);
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$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++;
|
||||
}
|
||||
@ -383,27 +391,27 @@ class FormAdmin
|
||||
dol_print_error($this->db);
|
||||
return '';
|
||||
}
|
||||
$out='';
|
||||
$out = '';
|
||||
|
||||
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
|
||||
$out .= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
|
||||
if ($showempty)
|
||||
{
|
||||
$out.= '<option value=""';
|
||||
if ($selected == '') $out.= ' selected';
|
||||
$out.= '> </option>';
|
||||
$out .= '<option value=""';
|
||||
if ($selected == '') $out .= ' selected';
|
||||
$out .= '> </option>';
|
||||
}
|
||||
foreach ($paperformat as $key => $value)
|
||||
{
|
||||
if ($selected == $key)
|
||||
{
|
||||
$out.= '<option value="'.$key.'" selected>'.$value.'</option>';
|
||||
$out .= '<option value="'.$key.'" selected>'.$value.'</option>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$out.= '<option value="'.$key.'">'.$value.'</option>';
|
||||
$out .= '<option value="'.$key.'">'.$value.'</option>';
|
||||
}
|
||||
}
|
||||
$out.= '</select>';
|
||||
$out .= '</select>';
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
@ -269,7 +269,15 @@ class FormWebsite
|
||||
|
||||
$valueforoption = '<span class="opacitymedium">['.$valpage->type_container.' '.sprintf("%03d", $valpage->id).']</span> ';
|
||||
$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.'"';
|
||||
if ($pageid > 0 && $pageid == $key) $out .= ' selected'; // To preselect a value
|
||||
|
||||
@ -102,7 +102,7 @@ class Menubase
|
||||
/**
|
||||
* @var string Key for menu translation
|
||||
* @deprecated
|
||||
* @see title
|
||||
* @see $title
|
||||
*/
|
||||
public $titre;
|
||||
|
||||
|
||||
@ -764,28 +764,37 @@ class Translate
|
||||
* @param string $langdir Directory to scan
|
||||
* @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 $mainlangonly 1=Show only main languages ('fr_FR' no' fr_BE', 'es_ES' not 'es_MX', ...)
|
||||
* @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
|
||||
global $conf;
|
||||
|
||||
$this->load("languages");
|
||||
|
||||
// We scan directory langs to detect available languages
|
||||
$handle = opendir($langdir."/langs");
|
||||
$langs_available = array();
|
||||
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 ($usecode == 2)
|
||||
{
|
||||
$langs_available[$dir] = $dir;
|
||||
}
|
||||
|
||||
if ($usecode == 1 || !empty($conf->global->MAIN_SHOW_LANGUAGE_CODE))
|
||||
{
|
||||
$langs_available[$dir] = $dir.': '.dol_trunc($this->trans('Language_'.$dir), $maxlength);
|
||||
@ -794,6 +803,9 @@ class Translate
|
||||
{
|
||||
$langs_available[$dir] = $this->trans('Language_'.$dir);
|
||||
}
|
||||
if ($mainlangonly) {
|
||||
$langs_available[$dir] = str_replace(' (United States)', '', $langs_available[$dir]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $langs_available;
|
||||
|
||||
@ -45,21 +45,21 @@
|
||||
*/
|
||||
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';
|
||||
$dataforitem='ui-autocomplete-item';
|
||||
$dataforrenderITem = 'ui-autocomplete';
|
||||
$dataforitem = 'ui-autocomplete-item';
|
||||
// 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_ITEM')) $dataforitem=constant('JS_QUERY_AUTOCOMPLETE_ITEM');
|
||||
if (defined('JS_QUERY_AUTOCOMPLETE_RENDERITEM')) $dataforrenderITem = constant('JS_QUERY_AUTOCOMPLETE_RENDERITEM');
|
||||
if (defined('JS_QUERY_AUTOCOMPLETE_ITEM')) $dataforitem = constant('JS_QUERY_AUTOCOMPLETE_ITEM');
|
||||
|
||||
// Input search_htmlname is original field
|
||||
// Input htmlname is a second input field used when using ajax autocomplete.
|
||||
$script = '<input type="hidden" name="'.$htmlname.'" id="'.$htmlname.'" value="'.$selected.'" />';
|
||||
|
||||
$script.= '<!-- Javascript code for autocomplete of field '.$htmlname.' -->'."\n";
|
||||
$script.= '<script>'."\n";
|
||||
$script.= '$(document).ready(function() {
|
||||
$script .= '<!-- Javascript code for autocomplete of field '.$htmlname.' -->'."\n";
|
||||
$script .= '<script>'."\n";
|
||||
$script .= '$(document).ready(function() {
|
||||
var autoselect = '.$autoselect.';
|
||||
var options = '.json_encode($ajaxoptions).';
|
||||
|
||||
@ -110,7 +110,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
|
||||
|
||||
$("input#search_'.$htmlname.'").autocomplete({
|
||||
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)
|
||||
{
|
||||
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 }
|
||||
}));
|
||||
}
|
||||
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");
|
||||
},
|
||||
dataType: "json",
|
||||
@ -203,7 +203,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
|
||||
};
|
||||
|
||||
});';
|
||||
$script.= '</script>';
|
||||
$script .= '</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)
|
||||
{
|
||||
$script = '<!-- Autocomplete -->'."\n";
|
||||
$script.= '<script>';
|
||||
$script.= 'jQuery(document).ready(function() {
|
||||
$script .= '<script>';
|
||||
$script .= 'jQuery(document).ready(function() {
|
||||
var fields = '.json_encode($fields).';
|
||||
var nboffields = fields.length;
|
||||
var autoselect = '.$autoselect.';
|
||||
@ -236,7 +236,7 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option = '', $minLen
|
||||
dataType: "json",
|
||||
minLength: '.$minLength.',
|
||||
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 ) {
|
||||
if (autoselect == 1 && data.length == 1) {
|
||||
jQuery("#'.$htmlname.'").val(item.value);
|
||||
@ -315,7 +315,7 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option = '', $minLen
|
||||
}
|
||||
});
|
||||
});';
|
||||
$script.= '</script>';
|
||||
$script .= '</script>';
|
||||
|
||||
return $script;
|
||||
}
|
||||
@ -333,11 +333,11 @@ function ajax_dialog($title, $message, $w = 350, $h = 150)
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$newtitle=dol_textishtml($title)?dol_string_nohtmltag($title, 1):$title;
|
||||
$msg= '<div id="dialog-info" title="'.dol_escape_htmltag($newtitle).'">';
|
||||
$msg.= $message;
|
||||
$msg.= '</div>'."\n";
|
||||
$msg.= '<script>
|
||||
$newtitle = dol_textishtml($title) ?dol_string_nohtmltag($title, 1) : $title;
|
||||
$msg = '<div id="dialog-info" title="'.dol_escape_htmltag($newtitle).'">';
|
||||
$msg .= $message;
|
||||
$msg .= '</div>'."\n";
|
||||
$msg .= '<script>
|
||||
jQuery(function() {
|
||||
jQuery("#dialog-info").dialog({
|
||||
resizable: false,
|
||||
@ -353,7 +353,7 @@ function ajax_dialog($title, $message, $w = 350, $h = 150)
|
||||
});
|
||||
</script>';
|
||||
|
||||
$msg.= "\n";
|
||||
$msg .= "\n";
|
||||
|
||||
return $msg;
|
||||
}
|
||||
@ -377,20 +377,20 @@ function ajax_combobox($htmlname, $events = array(), $minLengthToAutocomplete =
|
||||
global $conf;
|
||||
|
||||
// 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->global->MAIN_USE_JQUERY_MULTISELECT) && ! defined('REQUIRE_JQUERY_MULTISELECT')) return '';
|
||||
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) return '';
|
||||
if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && !defined('REQUIRE_JQUERY_MULTISELECT')) return '';
|
||||
if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) return '';
|
||||
|
||||
if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete=0;
|
||||
if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete = 0;
|
||||
|
||||
$tmpplugin='select2';
|
||||
$msg="\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id = '.$htmlname.' -->
|
||||
$tmpplugin = 'select2';
|
||||
$msg = "\n".'<!-- JS CODE TO ENABLE '.$tmpplugin.' for id = '.$htmlname.' -->
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$(\''.(preg_match('/^\./', $htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({
|
||||
$(\''.(preg_match('/^\./', $htmlname) ? $htmlname : '#'.$htmlname).'\').'.$tmpplugin.'({
|
||||
dir: \'ltr\',
|
||||
width: \''.$widthTypeOfAutocomplete.'\', /* off or resolve */
|
||||
minimumInputLength: '.$minLengthToAutocomplete.',
|
||||
@ -411,12 +411,12 @@ function ajax_combobox($htmlname, $events = array(), $minLengthToAutocomplete =
|
||||
},
|
||||
dropdownCssClass: \'ui-dialog\'
|
||||
})';
|
||||
if ($forcefocus) $msg.= '.select2(\'focus\')';
|
||||
$msg.= ';'."\n";
|
||||
if ($forcefocus) $msg .= '.select2(\'focus\')';
|
||||
$msg .= ';'."\n";
|
||||
|
||||
if (is_array($events) && count($events)) // If an array of js events to do were provided.
|
||||
{
|
||||
$msg.= '
|
||||
$msg .= '
|
||||
jQuery("#'.$htmlname.'").change(function () {
|
||||
var obj = '.json_encode($events).';
|
||||
$.each(obj, function(key,values) {
|
||||
@ -465,8 +465,8 @@ function ajax_combobox($htmlname, $events = array(), $minLengthToAutocomplete =
|
||||
}';
|
||||
}
|
||||
|
||||
$msg.= '});'."\n";
|
||||
$msg.= "</script>\n";
|
||||
$msg .= '});'."\n";
|
||||
$msg .= "</script>\n";
|
||||
|
||||
return $msg;
|
||||
}
|
||||
@ -495,7 +495,7 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof
|
||||
}
|
||||
else
|
||||
{
|
||||
$out= "\n<!-- Ajax code to switch constant ".$code." -->".'
|
||||
$out = "\n<!-- Ajax code to switch constant ".$code." -->".'
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var input = '.json_encode($input).';
|
||||
@ -530,10 +530,10 @@ function ajax_constantonoff($code, $input = array(), $entity = null, $revertonof
|
||||
});
|
||||
</script>'."\n";
|
||||
|
||||
$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="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 .= '<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="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";
|
||||
}
|
||||
|
||||
return $out;
|
||||
@ -555,7 +555,7 @@ function ajax_object_onoff($object, $code, $field, $text_on, $text_off, $input =
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$out= '<script>
|
||||
$out = '<script>
|
||||
$(function() {
|
||||
var input = '.json_encode($input).';
|
||||
|
||||
@ -620,8 +620,8 @@ function ajax_object_onoff($object, $code, $field, $text_on, $text_off, $input =
|
||||
});
|
||||
});
|
||||
</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="del_'.$code.'_'.$object->id.'" class="linkobject '.($object->$code==1?'':'hideobject').'">'.img_picto($langs->trans($text_on), 'switch_on').'</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>';
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
@ -1401,7 +1401,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0,
|
||||
foreach ($tblcateg as $cate)
|
||||
{
|
||||
// Adding the descriptions if they are filled
|
||||
$desccateg = $cate->add_description;
|
||||
$desccateg = $cate->description;
|
||||
if ($desccateg)
|
||||
$libelleproduitservice .= '__N__'.$desccateg;
|
||||
}
|
||||
|
||||
@ -76,13 +76,13 @@ function product_prepare_head($object)
|
||||
}
|
||||
|
||||
// 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][1] = $langs->trans('AssociatedProducts');
|
||||
|
||||
$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';
|
||||
$h++;
|
||||
}
|
||||
@ -110,15 +110,15 @@ function product_prepare_head($object)
|
||||
$head[$h][1] = $langs->trans('ProductCombinations');
|
||||
$head[$h][2] = 'combinations';
|
||||
$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++;
|
||||
}
|
||||
|
||||
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][1] = $langs->trans("Stock");
|
||||
@ -156,11 +156,11 @@ function product_prepare_head($object)
|
||||
if (empty($conf->global->MAIN_DISABLE_NOTES_TAB))
|
||||
{
|
||||
$nbNote = 0;
|
||||
if(!empty($object->note_private)) $nbNote++;
|
||||
if(!empty($object->note_public)) $nbNote++;
|
||||
if (!empty($object->note_private)) $nbNote++;
|
||||
if (!empty($object->note_public)) $nbNote++;
|
||||
$head[$h][0] = DOL_URL_ROOT.'/product/note.php?id='.$object->id;
|
||||
$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';
|
||||
$h++;
|
||||
}
|
||||
@ -168,18 +168,18 @@ function product_prepare_head($object)
|
||||
// Attachments
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.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->service->enabled) && ($object->type==Product::TYPE_SERVICE)) $upload_dir = $conf->service->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);
|
||||
$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->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->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->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)$'));
|
||||
}
|
||||
$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][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';
|
||||
$h++;
|
||||
|
||||
@ -225,10 +225,10 @@ function productlot_prepare_head($object)
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
|
||||
$upload_dir = $conf->productbatch->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
|
||||
$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][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';
|
||||
$h++;
|
||||
|
||||
@ -425,6 +425,24 @@ function show_stats_for_company($product, $socid)
|
||||
print '</td>';
|
||||
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
|
||||
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]))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/cunits.class.php';
|
||||
$measuringUnits= new CUnits($db);
|
||||
$measuringUnits = new CUnits($db);
|
||||
|
||||
if ($measuring_style == '' && $scale == '')
|
||||
{
|
||||
|
||||
@ -265,7 +265,7 @@ function project_timesheet_prepare_head($mode, $fuser = null)
|
||||
|
||||
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][2] = 'inputpermonth';
|
||||
$h++;
|
||||
@ -1735,19 +1735,19 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
|
||||
global $conf, $db, $user, $bc, $langs;
|
||||
global $form, $formother, $projectstatic, $taskstatic, $thirdpartystatic;
|
||||
|
||||
$numlines=count($lines);
|
||||
$numlines = count($lines);
|
||||
|
||||
$lastprojectid=0;
|
||||
$workloadforid=array();
|
||||
$totalforeachweek=array();
|
||||
$lineswithoutlevel0=array();
|
||||
$lastprojectid = 0;
|
||||
$workloadforid = array();
|
||||
$totalforeachweek = array();
|
||||
$lineswithoutlevel0 = array();
|
||||
|
||||
// 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
|
||||
{
|
||||
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))
|
||||
{
|
||||
$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 ($lines[$i]->fk_task_parent == $parent)
|
||||
{
|
||||
// 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);
|
||||
|
||||
// Break on a new project
|
||||
if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid)
|
||||
{
|
||||
$lastprojectid=$lines[$i]->fk_project;
|
||||
$lastprojectid = $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);
|
||||
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
|
||||
$workloadforid[$projectstatic->id]=1;
|
||||
$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;
|
||||
}
|
||||
//var_dump($projectstatic->weekWorkLoadPerTask);
|
||||
//var_dump('--- '.$projectstatic->id.' '.$workloadforid[$projectstatic->id]);
|
||||
|
||||
$projectstatic->id=$lines[$i]->fk_project;
|
||||
$projectstatic->ref=$lines[$i]->projectref;
|
||||
$projectstatic->title=$lines[$i]->projectlabel;
|
||||
$projectstatic->public=$lines[$i]->public;
|
||||
$projectstatic->thirdparty_name=$lines[$i]->thirdparty_name;
|
||||
$projectstatic->id = $lines[$i]->fk_project;
|
||||
$projectstatic->ref = $lines[$i]->projectref;
|
||||
$projectstatic->title = $lines[$i]->projectlabel;
|
||||
$projectstatic->public = $lines[$i]->public;
|
||||
$projectstatic->thirdparty_name = $lines[$i]->thirdparty_name;
|
||||
|
||||
$taskstatic->id=$lines[$i]->id;
|
||||
$taskstatic->ref=($lines[$i]->ref?$lines[$i]->ref:$lines[$i]->id);
|
||||
$taskstatic->label=$lines[$i]->label;
|
||||
$taskstatic->date_start=$lines[$i]->date_start;
|
||||
$taskstatic->date_end=$lines[$i]->date_end;
|
||||
$taskstatic->id = $lines[$i]->id;
|
||||
$taskstatic->ref = ($lines[$i]->ref ? $lines[$i]->ref : $lines[$i]->id);
|
||||
$taskstatic->label = $lines[$i]->label;
|
||||
$taskstatic->date_start = $lines[$i]->date_start;
|
||||
$taskstatic->date_end = $lines[$i]->date_end;
|
||||
|
||||
$thirdpartystatic->id=$lines[$i]->thirdparty_id;
|
||||
$thirdpartystatic->name=$lines[$i]->thirdparty_name;
|
||||
$thirdpartystatic->email=$lines[$i]->thirdparty_email;
|
||||
$thirdpartystatic->id = $lines[$i]->thirdparty_id;
|
||||
$thirdpartystatic->name = $lines[$i]->thirdparty_name;
|
||||
$thirdpartystatic->email = $lines[$i]->thirdparty_email;
|
||||
|
||||
if (empty($oldprojectforbreak) || ($oldprojectforbreak != -1 && $oldprojectforbreak != $projectstatic->id))
|
||||
{
|
||||
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]);
|
||||
if ($thirdpartystatic->id > 0) print ' - '.$thirdpartystatic->getNomUrl(1);
|
||||
if ($projectstatic->title)
|
||||
@ -1840,11 +1840,11 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
|
||||
// Ref
|
||||
print '<td class="nowrap">';
|
||||
print '<!-- Task id = '.$lines[$i]->id.' -->';
|
||||
for ($k = 0 ; $k < $level ; $k++) print " ";
|
||||
for ($k = 0; $k < $level; $k++) print " ";
|
||||
print $taskstatic->getNomUrl(1, 'withproject', 'time');
|
||||
// Label task
|
||||
print '<br>';
|
||||
for ($k = 0 ; $k < $level ; $k++) print " ";
|
||||
for ($k = 0; $k < $level; $k++) print " ";
|
||||
//print $taskstatic->getNomUrl(0, 'withproject', 'time');
|
||||
print $taskstatic->label;
|
||||
//print "<br>";
|
||||
@ -1860,7 +1860,7 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
|
||||
|
||||
// Progress declared %
|
||||
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>';
|
||||
|
||||
// Time spent by everybody
|
||||
@ -1877,66 +1877,66 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
|
||||
|
||||
// Time spent by user
|
||||
print '<td class="right">';
|
||||
$tmptimespent=$taskstatic->getSummaryOfTimeSpent($fuser->id);
|
||||
$tmptimespent = $taskstatic->getSummaryOfTimeSpent($fuser->id);
|
||||
if ($tmptimespent['total_duration']) print convertSecondToTime($tmptimespent['total_duration'], 'allhourmin');
|
||||
else print '--:--';
|
||||
print "</td>\n";
|
||||
|
||||
$disabledproject=1;$disabledtask=1;
|
||||
$disabledproject = 1; $disabledtask = 1;
|
||||
//print "x".$lines[$i]->fk_project;
|
||||
//var_dump($lines[$i]);
|
||||
//var_dump($projectsrole[$lines[$i]->fk_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;
|
||||
$disabledtask=0;
|
||||
$disabledproject = 0;
|
||||
$disabledtask = 0;
|
||||
}
|
||||
// If $restricteditformytask is on and I have no role on task, i disable edit
|
||||
if ($restricteditformytask && empty($tasksrole[$lines[$i]->id]))
|
||||
{
|
||||
$disabledtask=1;
|
||||
$disabledtask = 1;
|
||||
}
|
||||
|
||||
//var_dump($projectstatic->weekWorkLoadPerTask);
|
||||
//TODO
|
||||
// Fields to show current time
|
||||
$tableCell=''; $modeinput='hours';
|
||||
$tableCell = ''; $modeinput = 'hours';
|
||||
$TFirstDay = getFirstDayOfEachWeek($TWeek, date('Y', $firstdaytoshow));
|
||||
$TFirstDay[reset($TWeek)] = 1;
|
||||
foreach($TFirstDay as &$fday) {
|
||||
foreach ($TFirstDay as &$fday) {
|
||||
$fday--;
|
||||
}
|
||||
foreach ($TWeek as $weekNb)
|
||||
{
|
||||
$weekWorkLoad = $projectstatic->monthWorkLoadPerTask[$weekNb][$lines[$i]->id];
|
||||
$totalforeachweek[$weekNb]+=$weekWorkLoad;
|
||||
$totalforeachweek[$weekNb] += $weekWorkLoad;
|
||||
|
||||
$alreadyspent='';
|
||||
if ($weekWorkLoad > 0) $alreadyspent=convertSecondToTime($weekWorkLoad, 'allhourmin');
|
||||
$alttitle=$langs->trans("AddHereTimeSpentForWeek", $weekNb);
|
||||
$alreadyspent = '';
|
||||
if ($weekWorkLoad > 0) $alreadyspent = convertSecondToTime($weekWorkLoad, 'allhourmin');
|
||||
$alttitle = $langs->trans("AddHereTimeSpentForWeek", $weekNb);
|
||||
|
||||
|
||||
$tableCell ='<td align="center" class="hide">';
|
||||
$placeholder='';
|
||||
$tableCell = '<td align="center" class="hide">';
|
||||
$placeholder = '';
|
||||
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"';
|
||||
//$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.=' onkeypress="return regexEvent(this,event,\'timeChar\')"';
|
||||
$tableCell.=' onkeyup="updateTotal('.$weekNb.',\''.$modeinput.'\')"';
|
||||
$tableCell.=' onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$weekNb.',\''.$modeinput.'\')" />';
|
||||
$tableCell.='</td>';
|
||||
$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 .= ' onkeyup="updateTotal('.$weekNb.',\''.$modeinput.'\')"';
|
||||
$tableCell .= ' onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$weekNb.',\''.$modeinput.'\')" />';
|
||||
$tableCell .= '</td>';
|
||||
print $tableCell;
|
||||
}
|
||||
|
||||
// Warning
|
||||
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)
|
||||
{
|
||||
$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);
|
||||
//var_dump('ret with parent='.$lines[$i]->id.' level='.$level);
|
||||
//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);
|
||||
@ -2202,8 +2202,8 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
print '<td class="right">';
|
||||
// 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 ($langs->trans("OppStatus" . $oppStatusCode) != "OppStatus" . $oppStatusCode) {
|
||||
print $langs->trans("OppStatus" . $oppStatusCode);
|
||||
if ($langs->trans("OppStatus".$oppStatusCode) != "OppStatus".$oppStatusCode) {
|
||||
print $langs->trans("OppStatus".$oppStatusCode);
|
||||
}
|
||||
} else {
|
||||
if (isset($statusOppList[$objp->opp_status])) {
|
||||
@ -2215,9 +2215,9 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks
|
||||
}
|
||||
if ($oppStatusCode) {
|
||||
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 {
|
||||
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>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -239,15 +239,15 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '')
|
||||
{
|
||||
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.
|
||||
$content = str_replace('href="styles.css.php', 'href="!~!~!~styles.css.php', $content);
|
||||
$content = str_replace('href="http', 'href="!~!~!~http', $content);
|
||||
$content = str_replace('href="//', 'href="!~!~!~//', $content);
|
||||
$content = str_replace('src="viewimage.php', 'src="!~!~!~/viewimage.php', $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="'.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('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="'.DOL_URL_ROOT.'/document.php', 'href="!~!~!~'.DOL_URL_ROOT.'/document.php', $content);
|
||||
|
||||
// Replace relative link / with dolibarr URL: ...href="/"...
|
||||
@ -286,6 +286,7 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '')
|
||||
// Fix relative URL
|
||||
$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);
|
||||
|
||||
// Remove the protection tag !~!~!~
|
||||
$content = str_replace('!~!~!~', '', $content);
|
||||
}
|
||||
|
||||
@ -55,6 +55,7 @@ function dolSaveMasterFile($filemaster)
|
||||
* @param Website $object Object website
|
||||
* @param WebsitePage $objectpage Object websitepage
|
||||
* @return boolean True if OK
|
||||
* @see dolSavePageContent()
|
||||
*/
|
||||
function dolSavePageAlias($filealias, $object, $objectpage)
|
||||
{
|
||||
@ -74,6 +75,24 @@ function dolSavePageAlias($filealias, $object, $objectpage)
|
||||
@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);
|
||||
}
|
||||
|
||||
@ -85,6 +104,7 @@ function dolSavePageAlias($filealias, $object, $objectpage)
|
||||
* @param Website $object Object website
|
||||
* @param WebsitePage $objectpage Object websitepage
|
||||
* @return boolean True if OK
|
||||
* @see dolSavePageAlias()
|
||||
*/
|
||||
function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
|
||||
{
|
||||
@ -101,7 +121,10 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
|
||||
$tplcontent = '';
|
||||
$tplcontent .= "<?php // BEGIN PHP\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/website.inc.php';\n";
|
||||
$tplcontent .= "ob_start();\n";
|
||||
@ -125,7 +148,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
|
||||
// Add translation reference (main language)
|
||||
if ($object->isMultiLang()) {
|
||||
// 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"
|
||||
$translationof = $objectpage->fk_page;
|
||||
if ($translationof) {
|
||||
@ -135,7 +158,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage)
|
||||
$tmpshortlangcode = '';
|
||||
if ($tmppage->lang) $tmpshortlangcode = preg_replace('/[_-].*$/', '', $tmppage->lang); // en_US or en-US -> en
|
||||
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 = '';
|
||||
if ($obj->lang) $tmpshortlangcode = preg_replace('/[_-].*$/', '', $obj->lang); // en_US or en-US -> en
|
||||
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);
|
||||
}
|
||||
// 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
|
||||
$tplcontent .= '<?php if ($website->use_manifest) { print \'<link rel="manifest" href="/manifest.json.php" />\'."\n"; } ?>'."\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 .= '<?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";
|
||||
|
||||
@ -1315,27 +1315,27 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -621,7 +621,7 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
{
|
||||
// We found a page break
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -1475,27 +1475,27 @@ class pdf_eratosthene extends ModelePDFCommandes
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -185,7 +185,7 @@ class doc_generic_contract_odt extends ModelePDFContract
|
||||
/**
|
||||
* 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 string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
|
||||
@ -42,7 +42,7 @@ class html_cerfafr extends ModeleDon
|
||||
*/
|
||||
public function __construct($db)
|
||||
{
|
||||
global $conf,$langs;
|
||||
global $conf, $langs;
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "cerfafr";
|
||||
@ -76,46 +76,46 @@ class html_cerfafr extends ModeleDon
|
||||
public function write_file($don, $outputlangs, $currency = '')
|
||||
{
|
||||
// phpcs:enable
|
||||
global $user,$conf,$langs,$mysoc;
|
||||
global $user, $conf, $langs, $mysoc;
|
||||
|
||||
$now=dol_now();
|
||||
$id = (! is_object($don)?$don:'');
|
||||
$now = dol_now();
|
||||
$id = (!is_object($don) ? $don : '');
|
||||
|
||||
if (! is_object($outputlangs)) $outputlangs=$langs;
|
||||
if (!is_object($outputlangs)) $outputlangs = $langs;
|
||||
|
||||
// Load traductions files required by page
|
||||
$outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "donations"));
|
||||
|
||||
$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)
|
||||
if (! is_object($don))
|
||||
if (!is_object($don))
|
||||
{
|
||||
$don = new Don($this->db);
|
||||
$ret=$don->fetch($id);
|
||||
$id=$don->id;
|
||||
$ret = $don->fetch($id);
|
||||
$id = $don->id;
|
||||
}
|
||||
|
||||
// Definition of $dir and $file
|
||||
if (! empty($don->specimen))
|
||||
if (!empty($don->specimen))
|
||||
{
|
||||
$dir = $conf->don->dir_output;
|
||||
$file = $dir . "/SPECIMEN.html";
|
||||
$file = $dir."/SPECIMEN.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
$donref = dol_sanitizeFileName($don->ref);
|
||||
$dir = $conf->don->dir_output . "/" . $donref;
|
||||
$file = $dir . "/" . $donref . ".html";
|
||||
$dir = $conf->don->dir_output."/".$donref;
|
||||
$file = $dir."/".$donref.".html";
|
||||
}
|
||||
|
||||
if (! file_exists($dir))
|
||||
if (!file_exists($dir))
|
||||
{
|
||||
if (dol_mkdir($dir) < 0)
|
||||
{
|
||||
$this->error=$langs->trans("ErrorCanNotCreateDir", $dir);
|
||||
$this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -133,13 +133,13 @@ class html_cerfafr extends ModeleDon
|
||||
}
|
||||
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>';
|
||||
}
|
||||
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>';
|
||||
}
|
||||
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>';
|
||||
}
|
||||
else
|
||||
@ -159,7 +159,7 @@ class html_cerfafr extends ModeleDon
|
||||
*/
|
||||
|
||||
// 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 = str_replace('__REF__', $don->id, $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);
|
||||
|
||||
$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>';
|
||||
$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>';
|
||||
$form = str_replace('__FrenchArticle__', $frencharticle, $form);
|
||||
|
||||
$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 :';
|
||||
$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 :';
|
||||
$form = str_replace('__FrenchEligibility__', $frencheligibility, $form);
|
||||
|
||||
$art200='';
|
||||
$art200 = '';
|
||||
if (preg_match('/fr/i', $outputlangs->defaultlang)) {
|
||||
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
|
||||
{
|
||||
$art200='<input type="checkbox" disabled="true">200 du CGI';
|
||||
$art200 = '<input type="checkbox" disabled="true">200 du CGI';
|
||||
}
|
||||
}
|
||||
$form = str_replace('__ARTICLE200__', $art200, $form);
|
||||
|
||||
$art238='';
|
||||
$art238 = '';
|
||||
if (preg_match('/fr/i', $outputlangs->defaultlang)) {
|
||||
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
|
||||
{
|
||||
$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);
|
||||
|
||||
$art978='';
|
||||
$art978 = '';
|
||||
if (preg_match('/fr/i', $outputlangs->defaultlang)) {
|
||||
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
|
||||
{
|
||||
$art978='<input type="checkbox" disabled="true">978 du CGI';
|
||||
$art978 = '<input type="checkbox" disabled="true">978 du CGI';
|
||||
}
|
||||
}
|
||||
$form = str_replace('__ARTICLE978__', $art978, $form);
|
||||
|
||||
// Save file on disk
|
||||
dol_syslog("html_cerfafr::write_file $file");
|
||||
$handle=fopen($file, "w");
|
||||
$handle = fopen($file, "w");
|
||||
fwrite($handle, $form);
|
||||
fclose($handle);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
if (!empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$this->result = array('fullpath'=>$file);
|
||||
@ -264,13 +264,13 @@ class html_cerfafr extends ModeleDon
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$langs->trans("ErrorCanNotCreateDir", $dir);
|
||||
$this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$langs->trans("ErrorConstantNotDefined", "DON_OUTPUTDIR");
|
||||
$this->error = $langs->trans("ErrorConstantNotDefined", "DON_OUTPUTDIR");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -288,147 +288,147 @@ class html_cerfafr extends ModeleDon
|
||||
$unite = array();
|
||||
$dix = array();
|
||||
$cent = array();
|
||||
if(empty($devise1)) $dev1='euros';
|
||||
else $dev1=$devise1;
|
||||
if(empty($devise2)) $dev2='centimes';
|
||||
else $dev2=$devise2;
|
||||
$valeur_entiere=intval($montant);
|
||||
$valeur_decimal=intval(round($montant-intval($montant), 2)*100);
|
||||
$dix_c=intval($valeur_decimal%100/10);
|
||||
$cent_c=intval($valeur_decimal%1000/100);
|
||||
$unite[1]=$valeur_entiere%10;
|
||||
$dix[1]=intval($valeur_entiere%100/10);
|
||||
$cent[1]=intval($valeur_entiere%1000/100);
|
||||
$unite[2]=intval($valeur_entiere%10000/1000);
|
||||
$dix[2]=intval($valeur_entiere%100000/10000);
|
||||
$cent[2]=intval($valeur_entiere%1000000/100000);
|
||||
$unite[3]=intval($valeur_entiere%10000000/1000000);
|
||||
$dix[3]=intval($valeur_entiere%100000000/10000000);
|
||||
$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');
|
||||
$secon_c='';
|
||||
$trio_c='';
|
||||
for($i=1; $i<=3; $i++) {
|
||||
$prim[$i]='';
|
||||
$secon[$i]='';
|
||||
$trio[$i]='';
|
||||
if ($dix[$i]==0) {
|
||||
$secon[$i]='';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
if (empty($devise1)) $dev1 = 'euros';
|
||||
else $dev1 = $devise1;
|
||||
if (empty($devise2)) $dev2 = 'centimes';
|
||||
else $dev2 = $devise2;
|
||||
$valeur_entiere = intval($montant);
|
||||
$valeur_decimal = intval(round($montant - intval($montant), 2) * 100);
|
||||
$dix_c = intval($valeur_decimal % 100 / 10);
|
||||
$cent_c = intval($valeur_decimal % 1000 / 100);
|
||||
$unite[1] = $valeur_entiere % 10;
|
||||
$dix[1] = intval($valeur_entiere % 100 / 10);
|
||||
$cent[1] = intval($valeur_entiere % 1000 / 100);
|
||||
$unite[2] = intval($valeur_entiere % 10000 / 1000);
|
||||
$dix[2] = intval($valeur_entiere % 100000 / 10000);
|
||||
$cent[2] = intval($valeur_entiere % 1000000 / 100000);
|
||||
$unite[3] = intval($valeur_entiere % 10000000 / 1000000);
|
||||
$dix[3] = intval($valeur_entiere % 100000000 / 10000000);
|
||||
$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');
|
||||
$secon_c = '';
|
||||
$trio_c = '';
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
$prim[$i] = '';
|
||||
$secon[$i] = '';
|
||||
$trio[$i] = '';
|
||||
if ($dix[$i] == 0) {
|
||||
$secon[$i] = '';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
elseif ($dix[$i]==1) {
|
||||
$secon[$i]='';
|
||||
$prim[$i]=$chif[($unite[$i]+10)];
|
||||
elseif ($dix[$i] == 1) {
|
||||
$secon[$i] = '';
|
||||
$prim[$i] = $chif[($unite[$i] + 10)];
|
||||
}
|
||||
elseif ($dix[$i]==2) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='vingt et';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
elseif ($dix[$i] == 2) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'vingt et';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
} else {
|
||||
$secon[$i]='vingt';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
$secon[$i] = 'vingt';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==3) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='trente et';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
elseif ($dix[$i] == 3) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'trente et';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
} else {
|
||||
$secon[$i]='trente';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
$secon[$i] = 'trente';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==4) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='quarante et';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
elseif ($dix[$i] == 4) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'quarante et';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
else {
|
||||
$secon[$i]='quarante';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
$secon[$i] = 'quarante';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==5) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='cinquante et';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
elseif ($dix[$i] == 5) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'cinquante et';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
else {
|
||||
$secon[$i]='cinquante';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
$secon[$i] = 'cinquante';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==6) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='soixante et';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
elseif ($dix[$i] == 6) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'soixante et';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
else {
|
||||
$secon[$i]='soixante';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
$secon[$i] = 'soixante';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==7) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='soixante et';
|
||||
$prim[$i]=$chif[$unite[$i]+10];
|
||||
elseif ($dix[$i] == 7) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'soixante et';
|
||||
$prim[$i] = $chif[$unite[$i] + 10];
|
||||
}
|
||||
else {
|
||||
$secon[$i]='soixante';
|
||||
$prim[$i]=$chif[$unite[$i]+10];
|
||||
$secon[$i] = 'soixante';
|
||||
$prim[$i] = $chif[$unite[$i] + 10];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==8) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='quatre-vingts et';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
elseif ($dix[$i] == 8) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'quatre-vingts et';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
else {
|
||||
$secon[$i]='quatre-vingt';
|
||||
$prim[$i]=$chif[$unite[$i]];
|
||||
$secon[$i] = 'quatre-vingt';
|
||||
$prim[$i] = $chif[$unite[$i]];
|
||||
}
|
||||
}
|
||||
elseif ($dix[$i]==9) {
|
||||
if ($unite[$i]==1) {
|
||||
$secon[$i]='quatre-vingts et';
|
||||
$prim[$i]=$chif[$unite[$i]+10];
|
||||
elseif ($dix[$i] == 9) {
|
||||
if ($unite[$i] == 1) {
|
||||
$secon[$i] = 'quatre-vingts et';
|
||||
$prim[$i] = $chif[$unite[$i] + 10];
|
||||
}
|
||||
else {
|
||||
$secon[$i]='quatre-vingts';
|
||||
$prim[$i]=$chif[$unite[$i]+10];
|
||||
$secon[$i] = 'quatre-vingts';
|
||||
$prim[$i] = $chif[$unite[$i] + 10];
|
||||
}
|
||||
}
|
||||
if($cent[$i]==1) $trio[$i]='cent';
|
||||
elseif($cent[$i]!=0 || $cent[$i]!='') $trio[$i]=$chif[$cent[$i]] .' cents';
|
||||
if ($cent[$i] == 1) $trio[$i] = 'cent';
|
||||
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');
|
||||
$secon_c=$chif2[$dix_c];
|
||||
if ($cent_c==1) $trio_c='cent';
|
||||
elseif ($cent_c!=0 || $cent_c!='') $trio_c=$chif[$cent_c] .' cents';
|
||||
$chif2 = array('', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingts', 'quatre-vingts dix');
|
||||
$secon_c = $chif2[$dix_c];
|
||||
if ($cent_c == 1) $trio_c = 'cent';
|
||||
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))
|
||||
$somme = $trio[3]. ' ' .$secon[3]. ' ' . $prim[3]. ' million ';
|
||||
elseif (($cent[3]!=0 && $cent[3]!='') || ($dix[3]!=0 && $dix[3]!='') || ($unite[3]!=0 && $unite[3]!=''))
|
||||
$somme = $trio[3]. ' ' .$secon[3]. ' ' . $prim[3]. ' millions ';
|
||||
if (($cent[3] == 0 || $cent[3] == '') && ($dix[3] == 0 || $dix[3] == '') && ($unite[3] == 1))
|
||||
$somme = $trio[3].' '.$secon[3].' '.$prim[3].' million ';
|
||||
elseif (($cent[3] != 0 && $cent[3] != '') || ($dix[3] != 0 && $dix[3] != '') || ($unite[3] != 0 && $unite[3] != ''))
|
||||
$somme = $trio[3].' '.$secon[3].' '.$prim[3].' millions ';
|
||||
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 ';
|
||||
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 ';
|
||||
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 ';
|
||||
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==''))
|
||||
return $somme. ' et zéro '. $dev2;
|
||||
if (($cent_c == '0' || $cent_c == '') && ($dix_c == '0' || $dix_c == ''))
|
||||
return $somme.' et zéro '.$dev2;
|
||||
else
|
||||
return $somme. $trio_c. ' ' .$secon_c. ' ' . $dev2;
|
||||
return $somme.$trio_c.' '.$secon_c.' '.$dev2;
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures
|
||||
{
|
||||
/**
|
||||
* Issuer
|
||||
* @var Company object that emits
|
||||
* @var Societe Object that emits
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
|
||||
@ -494,7 +494,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$curY = $tab_top_newpage;
|
||||
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -539,7 +539,7 @@ class pdf_crabe extends ModelePDFFactures
|
||||
// We found a page break
|
||||
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -1051,15 +1051,15 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$pdf->MultiCell(80, 5, $lib_mode_reg, 0, 'L');
|
||||
|
||||
// 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) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
||||
global $langs;
|
||||
|
||||
$langs->loadLangs(array('payment', 'paybox'));
|
||||
$servicename=$langs->transnoentities('Online');
|
||||
$servicename = $langs->transnoentities('Online');
|
||||
$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);
|
||||
}
|
||||
@ -1707,27 +1707,27 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1963,27 +1963,27 @@ class pdf_sponge extends ModelePDFFactures
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ class pdf_soleil extends ModelePDFFicheinter
|
||||
|
||||
/**
|
||||
* Issuer
|
||||
* @var Company object that emits
|
||||
* @var Societe Object that emits
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ class mod_arctic extends ModeleNumRefFicheinter
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom = 'arctic';
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ class mod_pacific extends ModeleNumRefFicheinter
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='pacific';
|
||||
|
||||
|
||||
@ -107,7 +107,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
|
||||
/**
|
||||
* Issuer
|
||||
* @var Company object that emits
|
||||
* @var Societe Object that emits
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
* \ingroup category
|
||||
* \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
|
||||
$this->config_page_url = array('categorie.php@categories');
|
||||
$this->langfiles = array("products","companies","categories","members");
|
||||
$this->langfiles = array("products", "companies", "categories", "members");
|
||||
|
||||
// Constants
|
||||
$this->const = array();
|
||||
$r=0;
|
||||
$r = 0;
|
||||
$this->const[$r][0] = "CATEGORIE_RECURSIV_ADD";
|
||||
$this->const[$r][1] = "yesno";
|
||||
$this->const[$r][2] = "0";
|
||||
@ -83,7 +83,7 @@ class modCategorie extends DolibarrModules
|
||||
$this->rights = array();
|
||||
$this->rights_class = 'categorie';
|
||||
|
||||
$r=0;
|
||||
$r = 0;
|
||||
|
||||
$this->rights[$r][0] = 241; // id de la permission
|
||||
$this->rights[$r][1] = 'Lire les categories'; // libelle de la permission
|
||||
@ -109,115 +109,115 @@ class modCategorie extends DolibarrModules
|
||||
|
||||
// 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
|
||||
//--------
|
||||
$r=0;
|
||||
$r = 0;
|
||||
|
||||
$r++;
|
||||
$this->export_code[$r]='category_'.$r;
|
||||
$this->export_label[$r]='CatSupList';
|
||||
$this->export_icon[$r]='category';
|
||||
$this->export_enabled[$r]='$conf->fournisseur->enabled';
|
||||
$this->export_permission[$r]=array(array("categorie","lire"),array("fournisseur","lire"));
|
||||
$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",
|
||||
'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.siret'=>"ProfId1",'s.siren'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",
|
||||
$this->export_code[$r] = 'category_'.$r;
|
||||
$this->export_label[$r] = 'CatSupList';
|
||||
$this->export_icon[$r] = 'category';
|
||||
$this->export_enabled[$r] = '$conf->fournisseur->enabled';
|
||||
$this->export_permission[$r] = array(array("categorie", "lire"), array("fournisseur", "lire"));
|
||||
$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",
|
||||
'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.siret'=>"ProfId1", 's.siren'=>"ProfId2", 's.ape'=>"ProfId3", 's.idprof4'=>"ProfId4", 's.tva_intra'=>"VATIntraShort", 's.capital'=>"Capital",
|
||||
's.note_public'=>"NotePublic"
|
||||
);
|
||||
$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",
|
||||
'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.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_public'=>"Text"
|
||||
$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",
|
||||
'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.tva_intra'=>"Text", 's.capital'=>"Numeric", 's.note_public'=>"Text"
|
||||
);
|
||||
$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.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.idprof4'=>"company",'s.tva_intra'=>"company",'s.capital'=>"company",'s.note_public'=>"company"
|
||||
); // We define here only fields that use another picto
|
||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, ';
|
||||
$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.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.idprof4'=>"company", 's.tva_intra'=>"company", 's.capital'=>"company", 's.note_public'=>"company"
|
||||
); // We define here only fields that use another picto
|
||||
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
|
||||
$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.'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] .=' AND u.entity IN ('.getEntity('category').')';
|
||||
$this->export_sql_end[$r] .=' AND u.type = 1'; // Supplier categories
|
||||
$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.type = 1'; // Supplier categories
|
||||
|
||||
$r++;
|
||||
$this->export_code[$r]='category_'.$r;
|
||||
$this->export_label[$r]='CatCusList';
|
||||
$this->export_icon[$r]='category';
|
||||
$this->export_enabled[$r]='$conf->societe->enabled';
|
||||
$this->export_permission[$r]=array(array("categorie","lire"),array("societe","lire"));
|
||||
$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",
|
||||
'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.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'
|
||||
$this->export_code[$r] = 'category_'.$r;
|
||||
$this->export_label[$r] = 'CatCusList';
|
||||
$this->export_icon[$r] = 'category';
|
||||
$this->export_enabled[$r] = '$conf->societe->enabled';
|
||||
$this->export_permission[$r] = array(array("categorie", "lire"), array("societe", "lire"));
|
||||
$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",
|
||||
'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.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'
|
||||
);
|
||||
$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",'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.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_public'=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code',
|
||||
$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", '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.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'
|
||||
);
|
||||
$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.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.idprof4'=>"company",'s.tva_intra'=>"company",'s.capital'=>"company",'s.note_public'=>"company",'s.fk_prospectlevel'=>'company',
|
||||
$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.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.idprof4'=>"company", 's.tva_intra'=>"company", 's.capital'=>"company", 's.note_public'=>"company", 's.fk_prospectlevel'=>'company',
|
||||
's.fk_stcomm'=>'company'
|
||||
); // We define here only fields that use another picto
|
||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, ';
|
||||
); // We define here only fields that use another picto
|
||||
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
|
||||
$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.'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] .=' AND u.entity IN ('.getEntity('category').')';
|
||||
$this->export_sql_end[$r] .=' AND u.type = 2'; // Customer/Prospect categories
|
||||
$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.type = 2'; // Customer/Prospect categories
|
||||
|
||||
// Add extra fields
|
||||
$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);
|
||||
$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);
|
||||
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;
|
||||
$fieldlabel=ucfirst($obj->label);
|
||||
$typeFilter="Text";
|
||||
switch($obj->type)
|
||||
$fieldname = 'extra.'.$obj->name;
|
||||
$fieldlabel = ucfirst($obj->label);
|
||||
$typeFilter = "Text";
|
||||
switch ($obj->type)
|
||||
{
|
||||
case 'int':
|
||||
case 'double':
|
||||
case 'price':
|
||||
$typeFilter="Numeric";
|
||||
$typeFilter = "Numeric";
|
||||
break;
|
||||
case 'date':
|
||||
case 'datetime':
|
||||
$typeFilter="Date";
|
||||
$typeFilter = "Date";
|
||||
break;
|
||||
case 'boolean':
|
||||
$typeFilter="Boolean";
|
||||
$typeFilter = "Boolean";
|
||||
break;
|
||||
case 'sellist':
|
||||
$typeFilter="List:".$obj->param;
|
||||
$typeFilter = "List:".$obj->param;
|
||||
break;
|
||||
case 'select':
|
||||
$typeFilter="Select:".$obj->param;
|
||||
$typeFilter = "Select:".$obj->param;
|
||||
break;
|
||||
}
|
||||
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
|
||||
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
|
||||
$this->export_entities_array[$r][$fieldname]='company';
|
||||
$this->export_fields_array[$r][$fieldname] = $fieldlabel;
|
||||
$this->export_TypeFields_array[$r][$fieldname] = $typeFilter;
|
||||
$this->export_entities_array[$r][$fieldname] = 'company';
|
||||
}
|
||||
}
|
||||
// End add axtra fields
|
||||
@ -227,42 +227,42 @@ class modCategorie extends DolibarrModules
|
||||
|
||||
|
||||
$r++;
|
||||
$this->export_code[$r]='category_'.$r;
|
||||
$this->export_label[$r]='CatProdList';
|
||||
$this->export_icon[$r]='category';
|
||||
$this->export_enabled[$r]='$conf->product->enabled || $conf->service->enabled';
|
||||
$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_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_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] .=' 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.type = 0'; // Supplier categories
|
||||
$this->export_code[$r] = 'category_'.$r;
|
||||
$this->export_label[$r] = 'CatProdList';
|
||||
$this->export_icon[$r] = 'category';
|
||||
$this->export_enabled[$r] = '$conf->product->enabled || $conf->service->enabled';
|
||||
$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_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_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] .= ' 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.type = 0'; // Supplier categories
|
||||
|
||||
$r++;
|
||||
$this->export_code[$r]='category_'.$r;
|
||||
$this->export_label[$r]='CatMemberList';
|
||||
$this->export_icon[$r]='category';
|
||||
$this->export_enabled[$r]='$conf->adherent->enabled';
|
||||
$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_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_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] .=' 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.type = 3'; // Member categories
|
||||
$this->export_code[$r] = 'category_'.$r;
|
||||
$this->export_label[$r] = 'CatMemberList';
|
||||
$this->export_icon[$r] = 'category';
|
||||
$this->export_enabled[$r] = '$conf->adherent->enabled';
|
||||
$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_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_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] .= ' 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.type = 3'; // Member categories
|
||||
|
||||
$r++;
|
||||
$this->export_code[$r]='category_'.$r;
|
||||
$this->export_label[$r]='CatContactList';
|
||||
$this->export_icon[$r]='category';
|
||||
$this->export_enabled[$r]='$conf->societe->enabled';
|
||||
$this->export_permission[$r]=array(array("categorie", "lire"), array ("societe", "lire"));
|
||||
$this->export_fields_array[$r]=array (
|
||||
$this->export_code[$r] = 'category_'.$r;
|
||||
$this->export_label[$r] = 'CatContactList';
|
||||
$this->export_icon[$r] = 'category';
|
||||
$this->export_enabled[$r] = '$conf->societe->enabled';
|
||||
$this->export_permission[$r] = array(array("categorie", "lire"), array("societe", "lire"));
|
||||
$this->export_fields_array[$r] = array(
|
||||
'u.rowid' => "CategId",
|
||||
'u.label' => "Label",
|
||||
'u.description' => "Description",
|
||||
@ -297,7 +297,7 @@ class modCategorie extends DolibarrModules
|
||||
's.url'=>"Url",
|
||||
's.email'=>"Email"
|
||||
);
|
||||
$this->export_TypeFields_array[$r] = array (
|
||||
$this->export_TypeFields_array[$r] = array(
|
||||
'u.label' => "Text",
|
||||
'u.description' => "Text",
|
||||
'p.lastname' => 'Text',
|
||||
@ -313,7 +313,7 @@ class modCategorie extends DolibarrModules
|
||||
's.url'=>"Text",
|
||||
's.email'=>"Text"
|
||||
);
|
||||
$this->export_entities_array[$r] = array (
|
||||
$this->export_entities_array[$r] = array(
|
||||
'u.rowid' => "category",
|
||||
'u.label' => "category",
|
||||
'u.description' => "category",
|
||||
@ -350,67 +350,67 @@ class modCategorie extends DolibarrModules
|
||||
); // We define here only fields that use another picto
|
||||
|
||||
// Add extra fields
|
||||
$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);
|
||||
$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);
|
||||
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;
|
||||
$fieldlabel=ucfirst($obj->label);
|
||||
$typeFilter="Text";
|
||||
switch($obj->type)
|
||||
$fieldname = 'extra.'.$obj->name;
|
||||
$fieldlabel = ucfirst($obj->label);
|
||||
$typeFilter = "Text";
|
||||
switch ($obj->type)
|
||||
{
|
||||
case 'int':
|
||||
case 'double':
|
||||
case 'price':
|
||||
$typeFilter="Numeric";
|
||||
$typeFilter = "Numeric";
|
||||
break;
|
||||
case 'date':
|
||||
case 'datetime':
|
||||
$typeFilter="Date";
|
||||
$typeFilter = "Date";
|
||||
break;
|
||||
case 'boolean':
|
||||
$typeFilter="Boolean";
|
||||
$typeFilter = "Boolean";
|
||||
break;
|
||||
case 'sellist':
|
||||
$typeFilter="List:".$obj->param;
|
||||
$typeFilter = "List:".$obj->param;
|
||||
break;
|
||||
case 'select':
|
||||
$typeFilter="Select:".$obj->param;
|
||||
$typeFilter = "Select:".$obj->param;
|
||||
break;
|
||||
}
|
||||
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
|
||||
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
|
||||
$this->export_entities_array[$r][$fieldname]='contact';
|
||||
$this->export_fields_array[$r][$fieldname] = $fieldlabel;
|
||||
$this->export_TypeFields_array[$r][$fieldname] = $typeFilter;
|
||||
$this->export_entities_array[$r][$fieldname] = 'contact';
|
||||
}
|
||||
}
|
||||
// End add axtra fields
|
||||
|
||||
$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] .= ' 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 . 'socpeople_extrafields as extra ON extra.fk_object = p.rowid';
|
||||
$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.'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] .= ' 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
|
||||
|
||||
// Imports
|
||||
//--------
|
||||
|
||||
$r=0;
|
||||
$r = 0;
|
||||
|
||||
$r++;
|
||||
$this->import_code[$r]=$this->rights_class.'_'.$r;
|
||||
$this->import_label[$r]="CatList"; // Translation key
|
||||
$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_tables_array[$r]=array('ca'=>MAIN_DB_PREFIX.'categorie');
|
||||
$this->import_fields_array[$r]=array(
|
||||
'ca.label'=>"Label*",'ca.type'=>"Type*",'ca.description'=>"Description",
|
||||
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
||||
$this->import_label[$r] = "CatList"; // Translation key
|
||||
$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_tables_array[$r] = array('ca'=>MAIN_DB_PREFIX.'categorie');
|
||||
$this->import_fields_array[$r] = array(
|
||||
'ca.label'=>"Label*", 'ca.type'=>"Type*", 'ca.description'=>"Description",
|
||||
'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(
|
||||
'ca.fk_parent' => array(
|
||||
'rule' => 'fetchidfromcodeandlabel',
|
||||
@ -421,96 +421,96 @@ class modCategorie extends DolibarrModules
|
||||
'codefromfield' => 'ca.type'
|
||||
)
|
||||
);
|
||||
$typeexample="";
|
||||
if ($conf->product->enabled) { $typeexample.=($typeexample?"/":"")."0=Product"; }
|
||||
if ($conf->fournisseur->enabled) { $typeexample.=($typeexample?"/":"")."1=Supplier"; }
|
||||
if ($conf->societe->enabled) { $typeexample.=($typeexample?"/":"")."2=Customer-Prospect"; }
|
||||
if ($conf->adherent->enabled) { $typeexample.=($typeexample?"/":"")."3=Member"; }
|
||||
$typeexample = "";
|
||||
if ($conf->product->enabled) { $typeexample .= ($typeexample ? "/" : "")."0=Product"; }
|
||||
if ($conf->fournisseur->enabled) { $typeexample .= ($typeexample ? "/" : "")."1=Supplier"; }
|
||||
if ($conf->societe->enabled) { $typeexample .= ($typeexample ? "/" : "")."2=Customer-Prospect"; }
|
||||
if ($conf->adherent->enabled) { $typeexample .= ($typeexample ? "/" : "")."3=Member"; }
|
||||
$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'
|
||||
);
|
||||
|
||||
if (! empty($conf->product->enabled))
|
||||
if (!empty($conf->product->enabled))
|
||||
{
|
||||
//Products
|
||||
$r++;
|
||||
$this->import_code[$r]=$this->rights_class.'_'.$r;
|
||||
$this->import_label[$r]="CatProdLinks"; // Translation key
|
||||
$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_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_regex_array[$r]=array('cp.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=0');
|
||||
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
||||
$this->import_label[$r] = "CatProdLinks"; // Translation key
|
||||
$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_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_regex_array[$r] = array('cp.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=0');
|
||||
|
||||
$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_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'product')
|
||||
$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_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
|
||||
$r++;
|
||||
$this->import_code[$r]=$this->rights_class.'_'.$r;
|
||||
$this->import_label[$r]="CatCusLinks"; // Translation key
|
||||
$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_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_regex_array[$r]=array(
|
||||
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
||||
$this->import_label[$r] = "CatCusLinks"; // Translation key
|
||||
$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_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_regex_array[$r] = array(
|
||||
'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=2',
|
||||
'cs.fk_soc'=>'rowid@'.MAIN_DB_PREFIX.'societe:client>0'
|
||||
);
|
||||
|
||||
$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_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty')
|
||||
$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_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
|
||||
$r++;
|
||||
$this->import_code[$r]=$this->rights_class.'_'.$r;
|
||||
$this->import_label[$r]="CatContactsLinks"; // Translation key
|
||||
$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_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_regex_array[$r]=array(
|
||||
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
||||
$this->import_label[$r] = "CatContactsLinks"; // Translation key
|
||||
$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_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_regex_array[$r] = array(
|
||||
'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=4'
|
||||
//'cs.fk_socpeople'=>'rowid@'.MAIN_DB_PREFIX.'socpeople'
|
||||
);
|
||||
|
||||
$this->import_convertvalue_array[$r]=array(
|
||||
'cs.fk_categorie'=>array('rule'=>'fetchidfromref','classfile'=>'/categories/class/categorie.class.php','class'=>'Categorie','method'=>'fetch','element'=>'category')
|
||||
$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_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
|
||||
$r++;
|
||||
$this->import_code[$r]=$this->rights_class.'_'.$r;
|
||||
$this->import_label[$r]="CatSupLinks"; // Translation key
|
||||
$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_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_regex_array[$r]=array(
|
||||
$this->import_code[$r] = $this->rights_class.'_'.$r;
|
||||
$this->import_label[$r] = "CatSupLinks"; // Translation key
|
||||
$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_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_regex_array[$r] = array(
|
||||
'cs.fk_categorie'=>'rowid@'.MAIN_DB_PREFIX.'categorie:type=1',
|
||||
'cs.fk_soc'=>'rowid@'.MAIN_DB_PREFIX.'societe:fournisseur>0'
|
||||
);
|
||||
|
||||
$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_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty')
|
||||
$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_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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
* \ingroup 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->config_page_url = array("project.php@projet");
|
||||
$this->picto='project';
|
||||
$this->picto = 'project';
|
||||
|
||||
// Data directories to create when module is enabled
|
||||
$this->dirs = array("/projet/temp");
|
||||
|
||||
// Dependencies
|
||||
$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->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->phpmin = array(5,4); // Minimum version of PHP required by 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->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->phpmin = array(5, 4); // Minimum version of PHP required by module
|
||||
$this->langfiles = array('projects');
|
||||
|
||||
// Constants
|
||||
$this->const = array();
|
||||
$r=0;
|
||||
$r = 0;
|
||||
|
||||
$this->const[$r][0] = "PROJECT_ADDON_PDF";
|
||||
$this->const[$r][1] = "chaine";
|
||||
@ -139,7 +139,7 @@ class modProjet extends DolibarrModules
|
||||
|
||||
// Boxes
|
||||
$this->boxes = array();
|
||||
$r=0;
|
||||
$r = 0;
|
||||
$this->boxes[$r][1] = "box_project.php";
|
||||
$r++;
|
||||
$this->boxes[$r][1] = "box_task.php";
|
||||
@ -148,7 +148,7 @@ class modProjet extends DolibarrModules
|
||||
// Permissions
|
||||
$this->rights = array();
|
||||
$this->rights_class = 'projet';
|
||||
$r=0;
|
||||
$r = 0;
|
||||
|
||||
$r++;
|
||||
$this->rights[$r][0] = 41; // id de la permission
|
||||
@ -205,43 +205,43 @@ class modProjet extends DolibarrModules
|
||||
|
||||
// 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
|
||||
//--------
|
||||
$r=1;
|
||||
$r = 1;
|
||||
|
||||
$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_permission[$r]=array(array("projet","export"));
|
||||
$this->export_dependencies_array[$r]=array('projecttask'=>'pt.rowid', 'task_time'=>'ptt.rowid');
|
||||
$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_permission[$r] = array(array("projet", "export"));
|
||||
$this->export_dependencies_array[$r] = array('projecttask'=>'pt.rowid', 'task_time'=>'ptt.rowid');
|
||||
|
||||
$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.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",
|
||||
$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.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.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',
|
||||
'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"
|
||||
'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",
|
||||
'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(
|
||||
'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'
|
||||
$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.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(
|
||||
'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',
|
||||
'p.rowid'=>"ProjectId",'p.ref'=>"RefProject",'p.title'=>'ProjectLabel',
|
||||
$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.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.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
|
||||
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
|
||||
if (! empty($conf->multicompany->enabled) && $nbofallowedentities > 1) $this->export_fields_array[$r]+=array('p.entity'=>'Entity');
|
||||
$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->global->PROJECT_USE_OPPORTUNITIES))
|
||||
{
|
||||
@ -251,68 +251,68 @@ class modProjet extends DolibarrModules
|
||||
}
|
||||
|
||||
// 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
|
||||
$keyforselect='projet'; $keyforelement='project'; $keyforaliasextra='extra';
|
||||
$keyforselect = 'projet'; $keyforelement = 'project'; $keyforaliasextra = 'extra';
|
||||
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||
// 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_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_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"));
|
||||
// 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';
|
||||
// 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_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_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"));
|
||||
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_entities_array[$r]=array_merge($this->export_entities_array[$r], array('f.ref'=>"task_time"));
|
||||
$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_sql_start[$r]='SELECT DISTINCT ';
|
||||
$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.'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_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.'societe as s ON p.fk_soc = s.rowid';
|
||||
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
|
||||
$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.'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_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.'societe as s ON p.fk_soc = s.rowid';
|
||||
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
|
||||
if (empty($conf->global->PROJECT_HIDE_TASKS))
|
||||
{
|
||||
$r++;
|
||||
$this->import_code[$r]='tasksofprojects';
|
||||
$this->import_label[$r]='ImportDatasetTasks';
|
||||
$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_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_code[$r] = 'tasksofprojects';
|
||||
$this->import_label[$r] = 'ImportDatasetTasks';
|
||||
$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_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");
|
||||
// Add extra fields
|
||||
$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);
|
||||
$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);
|
||||
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;
|
||||
$fieldlabel=ucfirst($obj->label);
|
||||
$this->import_fields_array[$r][$fieldname]=$fieldlabel.($obj->fieldrequired?'*':'');
|
||||
$fieldname = 'extra.'.$obj->name;
|
||||
$fieldlabel = ucfirst($obj->label);
|
||||
$this->import_fields_array[$r][$fieldname] = $fieldlabel.($obj->fieldrequired ? '*' : '');
|
||||
}
|
||||
}
|
||||
// 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_convertvalue_array[$r]=array(
|
||||
't.fk_projet'=>array('rule'=>'fetchidfromref','classfile'=>'/projet/class/project.class.php','class'=>'Project','method'=>'fetch','element'=>'Project'),
|
||||
$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(
|
||||
't.fk_projet'=>array('rule'=>'fetchidfromref', 'classfile'=>'/projet/class/project.class.php', 'class'=>'Project', 'method'=>'fetch', 'element'=>'Project'),
|
||||
't.ref'=>array('rule'=>'getrefifauto')
|
||||
);
|
||||
//$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_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_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");
|
||||
}
|
||||
}
|
||||
|
||||
@ -327,54 +327,54 @@ class modProjet extends DolibarrModules
|
||||
*/
|
||||
public function init($options = '')
|
||||
{
|
||||
global $conf,$langs;
|
||||
global $conf, $langs;
|
||||
|
||||
// Permissions
|
||||
$this->remove($options);
|
||||
|
||||
//ODT template for project
|
||||
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/projects/template_project.odt';
|
||||
$dirodt=DOL_DATA_ROOT.'/doctemplates/projects';
|
||||
$dest=$dirodt.'/template_project.odt';
|
||||
$src = DOL_DOCUMENT_ROOT.'/install/doctemplates/projects/template_project.odt';
|
||||
$dirodt = DOL_DATA_ROOT.'/doctemplates/projects';
|
||||
$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';
|
||||
dol_mkdir($dirodt);
|
||||
$result=dol_copy($src, $dest, 0, 0);
|
||||
$result = dol_copy($src, $dest, 0, 0);
|
||||
if ($result < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$this->error=$langs->trans('ErrorFailToCopyFile', $src, $dest);
|
||||
$this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//ODT template for tasks
|
||||
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/tasks/template_task_summary.odt';
|
||||
$dirodt=DOL_DATA_ROOT.'/doctemplates/tasks';
|
||||
$dest=$dirodt.'/template_task_summary.odt';
|
||||
$src = DOL_DOCUMENT_ROOT.'/install/doctemplates/tasks/template_task_summary.odt';
|
||||
$dirodt = DOL_DATA_ROOT.'/doctemplates/tasks';
|
||||
$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';
|
||||
dol_mkdir($dirodt);
|
||||
$result=dol_copy($src, $dest, 0, 0);
|
||||
$result = dol_copy($src, $dest, 0, 0);
|
||||
if ($result < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$this->error=$langs->trans('ErrorFailToCopyFile', $src, $dest);
|
||||
$this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
$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[] ="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[] ="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[] ="INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('baleine','project',".$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[] = "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[] = "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.")";
|
||||
|
||||
|
||||
return $this->_init($sql, $options);
|
||||
|
||||
@ -44,7 +44,7 @@ class mod_payment_ant extends ModeleNumRefPayments
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Ant';
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ class mod_payment_cicada extends ModeleNumRefPayments
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Cicada';
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ class mod_project_simple extends ModeleNumRefProjects
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Simple';
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ class mod_project_universal extends ModeleNumRefProjects
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom = 'Universal';
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ class doc_generic_task_odt extends ModelePDFTask
|
||||
{
|
||||
/**
|
||||
* Issuer
|
||||
* @var Company object that emits
|
||||
* @var Societe Object that emits
|
||||
*/
|
||||
public $emetteur;
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ class mod_task_simple extends ModeleNumRefTask
|
||||
/**
|
||||
* @var string
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Simple';
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ class mod_task_universal extends ModeleNumRefTask
|
||||
/**
|
||||
* @var string
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom = 'Universal';
|
||||
|
||||
|
||||
@ -502,7 +502,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
$curY = $tab_top_newpage;
|
||||
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -548,7 +548,7 @@ class pdf_azur extends ModelePDFPropales
|
||||
// We found a page break
|
||||
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -1101,28 +1101,28 @@ class pdf_azur extends ModelePDFPropales
|
||||
//Local tax 1 before VAT
|
||||
//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++;
|
||||
|
||||
$index++;
|
||||
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
|
||||
|
||||
$tvacompl='';
|
||||
$tvacompl = '';
|
||||
if (preg_match('/\*/', $tvakey))
|
||||
{
|
||||
$tvakey=str_replace('*', '', $tvakey);
|
||||
$tvakey = str_replace('*', '', $tvakey);
|
||||
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
|
||||
}
|
||||
$totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).' ';
|
||||
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
|
||||
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
|
||||
$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
|
||||
//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++;
|
||||
|
||||
@ -1148,15 +1148,15 @@ class pdf_azur extends ModelePDFPropales
|
||||
$index++;
|
||||
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
|
||||
|
||||
$tvacompl='';
|
||||
$tvacompl = '';
|
||||
if (preg_match('/\*/', $tvakey))
|
||||
{
|
||||
$tvakey=str_replace('*', '', $tvakey);
|
||||
$tvakey = str_replace('*', '', $tvakey);
|
||||
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
|
||||
}
|
||||
$totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).' ';
|
||||
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
|
||||
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
|
||||
$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
|
||||
//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
|
||||
{
|
||||
@ -1205,16 +1205,16 @@ class pdf_azur extends ModelePDFPropales
|
||||
$index++;
|
||||
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
|
||||
|
||||
$tvacompl='';
|
||||
$tvacompl = '';
|
||||
if (preg_match('/\*/', $tvakey))
|
||||
{
|
||||
$tvakey=str_replace('*', '', $tvakey);
|
||||
$tvakey = str_replace('*', '', $tvakey);
|
||||
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
|
||||
}
|
||||
$totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).' ';
|
||||
|
||||
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
|
||||
$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
|
||||
//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
|
||||
if ($tvakey != 0) // On affiche pas taux 0
|
||||
@ -1238,16 +1238,16 @@ class pdf_azur extends ModelePDFPropales
|
||||
$index++;
|
||||
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
|
||||
|
||||
$tvacompl='';
|
||||
$tvacompl = '';
|
||||
if (preg_match('/\*/', $tvakey))
|
||||
{
|
||||
$tvakey=str_replace('*', '', $tvakey);
|
||||
$tvakey = str_replace('*', '', $tvakey);
|
||||
$tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")";
|
||||
}
|
||||
$totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).' ';
|
||||
|
||||
$totalvat.=vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
|
||||
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
|
||||
|
||||
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
|
||||
$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)
|
||||
{
|
||||
$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))
|
||||
{
|
||||
$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');
|
||||
}
|
||||
|
||||
if (! empty($conf->global->PDF_SHOW_PROJECT_TITLE))
|
||||
if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE))
|
||||
{
|
||||
$object->fetch_projet();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -594,7 +594,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
$curY = $tab_top_newpage;
|
||||
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -640,7 +640,7 @@ class pdf_cyan extends ModelePDFPropales
|
||||
{
|
||||
// We found a page break
|
||||
// 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;
|
||||
else
|
||||
$showpricebeforepagebreak = 0;
|
||||
@ -1588,27 +1588,27 @@ class pdf_cyan extends ModelePDFPropales
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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();
|
||||
if (! empty($object->project->ref))
|
||||
if (!empty($object->project->ref))
|
||||
{
|
||||
$posy+=3;
|
||||
$posy += 3;
|
||||
$pdf->SetXY($posx, $posy);
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php';
|
||||
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
|
||||
|
||||
|
||||
@ -209,7 +209,7 @@ class doc_generic_stock_odt extends ModelePDFStock
|
||||
/**
|
||||
* 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 string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
@ -250,7 +250,7 @@ class doc_generic_stock_odt extends ModelePDFStock
|
||||
if (!is_object($object))
|
||||
{
|
||||
$id = $object;
|
||||
$object = new Stock($this->db);
|
||||
$object = new Entrepot($this->db);
|
||||
$result = $object->fetch($id);
|
||||
if ($result < 0)
|
||||
{
|
||||
@ -258,7 +258,8 @@ class doc_generic_stock_odt extends ModelePDFStock
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
$stockFournisseur = new StockFournisseur($this->db);
|
||||
|
||||
$stockFournisseur = new ProductFournisseur($this->db);
|
||||
$supplierprices = $stockFournisseur->list_stock_fournisseur_price($object->id);
|
||||
$object->supplierprices = $supplierprices;
|
||||
|
||||
|
||||
@ -181,7 +181,7 @@ class pdf_standard extends ModelePDFStock
|
||||
/**
|
||||
* 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 string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
|
||||
@ -47,7 +47,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Cactus';
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Tulip';
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Muguet';
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Orchidee';
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ class mod_supplier_payment_brodator extends ModeleNumRefSupplierPayments
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Brodator';
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ class mod_supplier_payment_bronan extends ModeleNumRefSupplierPayments
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Bronan';
|
||||
|
||||
|
||||
@ -225,7 +225,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
|
||||
/**
|
||||
* 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 string $srctemplatepath Full path of source filename for generator using a template file
|
||||
* @param int $hidedetails Do not show line details
|
||||
|
||||
@ -47,7 +47,7 @@ class mod_supplier_proposal_marbre extends ModeleNumRefSupplierProposal
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Marbre';
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Saphir';
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ class mod_ticket_simple extends ModeleNumRefTicket
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Simple';
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ class mod_ticket_universal extends ModeleNumRefTicket
|
||||
/**
|
||||
* @var string Nom du modele
|
||||
* @deprecated
|
||||
* @see name
|
||||
* @see $name
|
||||
*/
|
||||
public $nom='Universal';
|
||||
|
||||
|
||||
@ -432,7 +432,7 @@ if ($nolinesbefore) {
|
||||
|
||||
<?php
|
||||
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
|
||||
|
||||
@ -260,7 +260,7 @@ $coldisplay++;
|
||||
//Line extrafield
|
||||
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);
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
@ -356,7 +356,7 @@ print "</tr>\n";
|
||||
//Line extrafield
|
||||
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";
|
||||
|
||||
@ -1578,7 +1578,7 @@ if ($action == 'create')
|
||||
//$line->fetch_optionals($line->id);
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -252,8 +252,8 @@ class SupplierOrders extends DolibarrApi
|
||||
/**
|
||||
* Delete supplier order
|
||||
*
|
||||
* @param int $id Supplier order ID
|
||||
* @return type
|
||||
* @param int $id Supplier order ID
|
||||
* @return array Array of result
|
||||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
|
||||
@ -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),
|
||||
'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),
|
||||
@ -455,11 +455,11 @@ class CommandeFournisseur extends CommonOrder
|
||||
$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';
|
||||
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 .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid';
|
||||
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;
|
||||
if ($only_product) $sql .= ' AND p.fk_product_type = 0';
|
||||
$sql .= " ORDER BY l.rang, l.rowid";
|
||||
@ -516,7 +516,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
$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->fk_unit = $objp->fk_unit;
|
||||
|
||||
@ -1701,7 +1701,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING))
|
||||
{
|
||||
$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)
|
||||
{
|
||||
$qty = $prod->packaging;
|
||||
@ -1710,7 +1710,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
{
|
||||
if (($qty % $prod->packaging) > 0)
|
||||
{
|
||||
$coeff = intval($qty/$prod->packaging) + 1;
|
||||
$coeff = intval($qty / $prod->packaging) + 1;
|
||||
$qty = $prod->packaging * $coeff;
|
||||
setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs');
|
||||
}
|
||||
@ -2679,7 +2679,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
{
|
||||
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;
|
||||
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.multicurrency_subprice, cd.multicurrency_total_ht, cd.multicurrency_total_tva, cd.multicurrency_total_ttc';
|
||||
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 .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON cd.fk_product = p.rowid';
|
||||
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;
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
|
||||
@ -218,7 +218,7 @@ class FactureFournisseur extends CommonInvoice
|
||||
public $fk_facture_source;
|
||||
|
||||
|
||||
public $fields=array(
|
||||
public $fields = array(
|
||||
'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_supplier' =>array('type'=>'varchar(255)', 'label'=>'RefSupplier', 'enabled'=>1, 'visible'=>-1, 'position'=>20),
|
||||
@ -2287,7 +2287,7 @@ class FactureFournisseur extends CommonInvoice
|
||||
|
||||
if ($facturestatic->hasDelay()) {
|
||||
$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);
|
||||
|
||||
@ -360,7 +360,7 @@ class ProductFournisseur extends Product
|
||||
$sql .= " supplier_reputation = ".(empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'").",";
|
||||
$sql .= " barcode = ".(empty($barcode) ? 'NULL' : "'".$this->db->escape($barcode)."'").",";
|
||||
$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;
|
||||
// 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 .= " 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)";
|
||||
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql.= ", packaging";
|
||||
if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", packaging";
|
||||
$sql .= " values(";
|
||||
$sql .= (isset($multicurrency_buyprice) ? "'".$this->db->escape(price2num($multicurrency_buyprice))."'" : '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($barcode) ? 'NULL' : "'".$this->db->escape($barcode)."'").",";
|
||||
$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 .= ")";
|
||||
|
||||
$this->product_fourn_price_id = 0;
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
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 {
|
||||
$error++;
|
||||
@ -505,7 +505,7 @@ class ProductFournisseur extends Product
|
||||
$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.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 .= " 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.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";
|
||||
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 .= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")";
|
||||
$sql .= " AND pfp.fk_soc = s.rowid";
|
||||
|
||||
@ -166,7 +166,7 @@ $sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."commande_fournisseur as cf";
|
||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$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->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
||||
$sql .= " GROUP BY cf.fk_statut";
|
||||
@ -253,23 +253,23 @@ if (!empty($conf->fournisseur->enabled))
|
||||
*/
|
||||
|
||||
$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.= " u.rowid, u.lastname, u.firstname, u.email, u.statut";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
|
||||
if (! empty($conf->multicompany->enabled) && ! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
|
||||
$sql .= " u.rowid, u.lastname, u.firstname, u.email, u.statut";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
|
||||
if (!empty($conf->multicompany->enabled) && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE))
|
||||
{
|
||||
$sql.= ",".MAIN_DB_PREFIX."usergroup_user as ug";
|
||||
$sql.= " WHERE ((ug.fk_user = u.rowid";
|
||||
$sql.= " AND ug.entity IN (".getEntity('usergroup')."))";
|
||||
$sql.= " OR u.entity = 0)"; // Show always superadmin
|
||||
$sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug";
|
||||
$sql .= " WHERE ((ug.fk_user = u.rowid";
|
||||
$sql .= " AND ug.entity IN (".getEntity('usergroup')."))";
|
||||
$sql .= " OR u.entity = 0)"; // Show always superadmin
|
||||
}
|
||||
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);
|
||||
if ($resql)
|
||||
@ -290,7 +290,7 @@ if ($resql)
|
||||
$userstatic->id = $obj->rowid;
|
||||
$userstatic->getrights('fournisseur');
|
||||
|
||||
if (! empty($userstatic->rights->fournisseur->commande->approuver))
|
||||
if (!empty($userstatic->rights->fournisseur->commande->approuver))
|
||||
{
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>';
|
||||
|
||||
@ -301,8 +301,8 @@ if (empty($reshook))
|
||||
|
||||
$paiement->num_payment = GETPOST('num_paiement', 'alpha');
|
||||
$paiement->note_private = GETPOST('comment', 'alpha');
|
||||
$paiement->num_paiement = $paiement->num_payment; // For bacward compatibility
|
||||
$paiement->note = $paiement->note_private; // For bacward compatibility
|
||||
$paiement->num_paiement = $paiement->num_payment; // For bacward compatibility
|
||||
$paiement->note = $paiement->note_private; // For bacward compatibility
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
|
||||
@ -263,13 +263,7 @@ class AutoLoader
|
||||
* @return bool false unless className now exists
|
||||
*/
|
||||
private function loadLastResort($className, $loader = null) {
|
||||
// @CHANGE LDR Add protection to avoid conflict with other autoloader
|
||||
/*print 'Try to load '.$className."\n";
|
||||
if (in_array($className, array('Google_Client')))
|
||||
{
|
||||
return false;
|
||||
}*/
|
||||
$loaders = array_unique(static::$rogueLoaders);
|
||||
$loaders = array_unique(static::$rogueLoaders);
|
||||
if (isset($loader)) {
|
||||
if (false === array_search($loader, $loaders))
|
||||
static::$rogueLoaders[] = $loader;
|
||||
|
||||
@ -159,7 +159,7 @@ class CommentParser
|
||||
$addNewline = true;
|
||||
}
|
||||
continue;
|
||||
} elseif ($line{0} == '@') {
|
||||
} elseif ($line[0] == '@') {
|
||||
$mode = 2;
|
||||
$newParam = true;
|
||||
}
|
||||
@ -353,7 +353,7 @@ class CommentParser
|
||||
$data = $format->decode($str);
|
||||
}
|
||||
} else { // auto detect
|
||||
if ($str{0} == '{') {
|
||||
if ($str[0] == '{') {
|
||||
$d = json_decode($str, true);
|
||||
if (json_last_error() != JSON_ERROR_NONE) {
|
||||
throw new Exception('Error parsing embedded JSON data'
|
||||
@ -445,7 +445,7 @@ class CommentParser
|
||||
{
|
||||
$r = array();
|
||||
$email = end($value);
|
||||
if ($email{0} == '<') {
|
||||
if ($email[0] == '<') {
|
||||
$email = substr($email, 1, -1);
|
||||
array_pop($value);
|
||||
$r['email'] = $email;
|
||||
@ -470,7 +470,7 @@ class CommentParser
|
||||
$data = array_shift($value);
|
||||
if (empty($data)) {
|
||||
$r['type'] = 'mixed';
|
||||
} elseif ($data{0} == '$') {
|
||||
} elseif ($data[0] == '$') {
|
||||
$r['name'] = substr($data, 1);
|
||||
$r['type'] = 'mixed';
|
||||
} else {
|
||||
@ -478,7 +478,7 @@ class CommentParser
|
||||
$r['type'] = count($data) == 1 ? $data[0] : $data;
|
||||
|
||||
$data = array_shift($value);
|
||||
if (!empty($data) && $data{0} == '$') {
|
||||
if (!empty($data) && $data[0] == '$') {
|
||||
$r['name'] = substr($data, 1);
|
||||
}
|
||||
}
|
||||
@ -498,7 +498,7 @@ class CommentParser
|
||||
$data = array_shift($value);
|
||||
if (empty($data)) {
|
||||
$r['type'] = 'mixed';
|
||||
} elseif ($data{0} == '$') {
|
||||
} elseif ($data[0] == '$') {
|
||||
$r['name'] = substr($data, 1);
|
||||
$r['type'] = 'mixed';
|
||||
} else {
|
||||
|
||||
@ -221,7 +221,7 @@ class XmlFormat extends Format
|
||||
$namespaces = $xml->getNamespaces();
|
||||
if (count($namespaces)) {
|
||||
$p = strpos($data, $xml->getName());
|
||||
if ($p && $data{$p - 1} == ':') {
|
||||
if ($p && $data[$p - 1] == ':') {
|
||||
$s = strpos($data, '<') + 1;
|
||||
$prefix = substr($data, $s, $p - $s - 1);
|
||||
static::$namespacedProperties[static::$rootName] = $prefix;
|
||||
|
||||
@ -198,7 +198,7 @@ class Resources implements iUseAuthentication, iProvideMultiVersionApi
|
||||
} elseif (false !== ($pos = strpos($id, '-v'))) {
|
||||
//$version = intval(substr($id, $pos + 2));
|
||||
$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 = '';
|
||||
//$version = $v;
|
||||
} elseif ($id == 'root' || $id == 'index') {
|
||||
@ -233,7 +233,7 @@ class Resources implements iUseAuthentication, iProvideMultiVersionApi
|
||||
if ($tSlash) {
|
||||
if ($fLen != $tLen && !Text::beginsWith($fullPath, $target . '/'))
|
||||
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
|
||||
//they are listed else where under that static part name
|
||||
continue;
|
||||
@ -275,7 +275,7 @@ class Resources implements iUseAuthentication, iProvideMultiVersionApi
|
||||
if (count($parts) == 1 && $httpMethod == 'GET') {
|
||||
} else {
|
||||
for ($i = 0; $i < count($parts); $i++) {
|
||||
if (strlen($parts[$i]) && $parts[$i]{0} == '{') {
|
||||
if (strlen($parts[$i]) && $parts[$i][0] == '{') {
|
||||
$pos = $i - 1;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -533,7 +533,7 @@ class Restler extends EventDispatcher
|
||||
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));
|
||||
if ($version && $version <= $this->apiVersion) {
|
||||
$this->requestedApiVersion = $version;
|
||||
@ -1599,7 +1599,7 @@ class Restler extends EventDispatcher
|
||||
*/
|
||||
public function __get($name)
|
||||
{
|
||||
if ($name{0} == '_') {
|
||||
if ($name[0] == '_') {
|
||||
$hiddenProperty = substr($name, 1);
|
||||
if (isset($this->$hiddenProperty)) {
|
||||
return $this->$hiddenProperty;
|
||||
|
||||
@ -87,7 +87,7 @@ class Routes
|
||||
foreach ($methods as $method) {
|
||||
$methodUrl = strtolower($method->getName());
|
||||
//method name should not begin with _
|
||||
if ($methodUrl{0} == '_') {
|
||||
if ($methodUrl[0] == '_') {
|
||||
continue;
|
||||
}
|
||||
$doc = $method->getDocComment();
|
||||
@ -330,7 +330,7 @@ class Routes
|
||||
if (!$type) {
|
||||
return 's';
|
||||
}
|
||||
switch ($type{0}) {
|
||||
switch ($type[0]) {
|
||||
case 'i':
|
||||
case 'f':
|
||||
return 'n';
|
||||
@ -428,7 +428,7 @@ class Routes
|
||||
}
|
||||
$index = intval(substr($k, 1));
|
||||
$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
|
||||
$data[$details['name']] = trim($v, PHP_EOL);
|
||||
} else {
|
||||
|
||||
@ -203,7 +203,7 @@ class Scope
|
||||
|
||||
$divider = '\\';
|
||||
$qualified = false;
|
||||
if ($className{0} == $divider) {
|
||||
if ($className[0] == $divider) {
|
||||
$qualified = trim($className, $divider);
|
||||
} elseif (array_key_exists($className, $scope)) {
|
||||
$qualified = $scope[$className];
|
||||
|
||||
@ -356,7 +356,7 @@ class Emmet
|
||||
$pos = strpos($string, $f, $start);
|
||||
$tokens = array();
|
||||
for ($i = $start; $i < $pos; $i++) {
|
||||
$token = $string{$i};
|
||||
$token = $string[$i];
|
||||
if (('#' == $token || '.' == $token) &&
|
||||
(!empty($tokens) || $i == 0)
|
||||
) {
|
||||
@ -368,7 +368,7 @@ class Emmet
|
||||
$r[] = $f;
|
||||
} while (false != ($f = strtok(static::DELIMITERS)));
|
||||
for ($i = $pos; $i < strlen($string); $i++) {
|
||||
$token = $string{$i};
|
||||
$token = $string[$i];
|
||||
$r[] = $tokens[] = $token;
|
||||
}
|
||||
return $r;
|
||||
|
||||
@ -44,6 +44,19 @@ ALTER TABLE llx_commande_fournisseur_dispatch_extrafields ADD INDEX idx_commande
|
||||
|
||||
-- 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 otherlang varchar(255);
|
||||
|
||||
|
||||
@ -228,6 +228,8 @@ ErrorFieldRequiredForProduct=Field '%s' is required for product %s
|
||||
ProblemIsInSetupOfTerminal=Problem is in setup of terminal %s.
|
||||
ErrorAddAtLeastOneLineFirst=Add at least one line first
|
||||
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
|
||||
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.
|
||||
|
||||
@ -65,7 +65,7 @@ Language_mk_MK=Macedonian
|
||||
Language_mn_MN=Mongolian
|
||||
Language_nb_NO=Norwegian (Bokmål)
|
||||
Language_nl_BE=Dutch (Belgium)
|
||||
Language_nl_NL=Dutch (Netherlands)
|
||||
Language_nl_NL=Dutch
|
||||
Language_pl_PL=Polish
|
||||
Language_pt_BR=Portuguese (Brazil)
|
||||
Language_pt_PT=Portuguese
|
||||
|
||||
@ -1623,31 +1623,6 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
||||
|
||||
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">';
|
||||
|
||||
// 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
|
||||
$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;
|
||||
|
||||
@ -1940,7 +1939,7 @@ function top_menu_bookmark()
|
||||
$langs->load("bookmarks");
|
||||
|
||||
$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').')">
|
||||
<i class="fa fa-star" ></i>
|
||||
</a>
|
||||
@ -1949,21 +1948,21 @@ function top_menu_bookmark()
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
|
||||
|
||||
$html .= '
|
||||
<!-- Code to show/hide the user drop-down -->
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
$(document).on("click", function(event) {
|
||||
if (!$(event.target).closest("#topmenu-bookmark-dropdown").length) {
|
||||
console.log("close");
|
||||
// Hide the menus.
|
||||
$("#topmenu-bookmark-dropdown").removeClass("open");
|
||||
}
|
||||
});
|
||||
|
||||
$("#topmenu-bookmark-dropdown .dropdown-toggle").on("click", function(event) {
|
||||
openBookMarkDropDown();
|
||||
console.log("toggle");
|
||||
openBookMarkDropDown();
|
||||
});
|
||||
|
||||
// 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
|
||||
print '<!-- Begin left menu -->'."\n";
|
||||
|
||||
|
||||
@ -25,39 +25,39 @@
|
||||
*/
|
||||
|
||||
// Load Dolibarr environment
|
||||
$res=0;
|
||||
$res = 0;
|
||||
// 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
|
||||
$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--; }
|
||||
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";
|
||||
$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--; }
|
||||
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";
|
||||
// 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) die("Include of main fails");
|
||||
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");
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array("mymodule@mymodule"));
|
||||
|
||||
$action=GETPOST('action', 'alpha');
|
||||
$action = GETPOST('action', 'alpha');
|
||||
|
||||
|
||||
// Security check
|
||||
//if (! $user->rights->mymodule->myobject->read) accessforbidden();
|
||||
$socid=GETPOST('socid', 'int');
|
||||
$socid = GETPOST('socid', 'int');
|
||||
if (isset($user->socid) && $user->socid > 0)
|
||||
{
|
||||
$action = '';
|
||||
$socid = $user->socid;
|
||||
}
|
||||
|
||||
$max=5;
|
||||
$now=dol_now();
|
||||
$max = 5;
|
||||
$now = dol_now();
|
||||
|
||||
|
||||
/*
|
||||
@ -164,8 +164,8 @@ END MODULEBUILDER DRAFT MYOBJECT */
|
||||
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
||||
|
||||
|
||||
$NBMAX=3;
|
||||
$max=3;
|
||||
$NBMAX = 3;
|
||||
$max = 3;
|
||||
|
||||
/* BEGIN MODULEBUILDER LASTMODIFIED MYOBJECT
|
||||
// Last modified myobject
|
||||
|
||||
@ -624,7 +624,7 @@ class Mo extends CommonObject
|
||||
$moline->role = 'toproduce';
|
||||
$moline->position = 1;
|
||||
|
||||
$resultline = $moline->create($user, false); // Never use triggers here
|
||||
$resultline = $moline->create($user, false); // Never use triggers here
|
||||
if ($resultline <= 0) {
|
||||
$error++;
|
||||
$this->error = $moline->error;
|
||||
@ -639,14 +639,14 @@ class Mo extends CommonObject
|
||||
if ($bom->id > 0)
|
||||
{
|
||||
// Lines to consume
|
||||
if (! $error) {
|
||||
if (!$error) {
|
||||
foreach ($bom->lines as $line)
|
||||
{
|
||||
$moline = new MoLine($this->db);
|
||||
|
||||
$moline->fk_mo = $this->id;
|
||||
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 {
|
||||
$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->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) {
|
||||
$error++;
|
||||
$this->error = $moline->error;
|
||||
@ -985,7 +985,7 @@ class Mo extends CommonObject
|
||||
* 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 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 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
|
||||
@ -1007,6 +1007,7 @@ class Mo extends CommonObject
|
||||
}
|
||||
|
||||
$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')
|
||||
{
|
||||
@ -1370,21 +1371,21 @@ class MoLine extends CommonObjectLine
|
||||
|
||||
public $fields = array(
|
||||
'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),
|
||||
'fk_product' =>array('type'=>'integer', 'label'=>'Fk product', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>25),
|
||||
'fk_warehouse' =>array('type'=>'integer', 'label'=>'Fk warehouse', 'enabled'=>1, 'visible'=>-1, 'position'=>30),
|
||||
'fk_product' =>array('type'=>'integer', 'label'=>'Product', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>25),
|
||||
'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_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'),
|
||||
'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),
|
||||
'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),
|
||||
'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>160),
|
||||
'fk_stock_movement' =>array('type'=>'integer', 'label'=>'StockMovement', 'enabled'=>1, 'visible'=>-1, 'position'=>155),
|
||||
'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),
|
||||
'fk_user_creat' =>array('type'=>'integer', 'label'=>'Fk user creat', '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_creat' =>array('type'=>'integer', 'label'=>'UserCreation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>170),
|
||||
'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),
|
||||
);
|
||||
|
||||
|
||||
@ -670,57 +670,57 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print "</tr>\n";
|
||||
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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 ');
|
||||
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 ');
|
||||
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 ');
|
||||
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
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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 ');
|
||||
if (! empty($arrayfields['origin']['checked']))
|
||||
if (!empty($arrayfields['origin']['checked']))
|
||||
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 ');
|
||||
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 ');
|
||||
|
||||
// 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
|
||||
$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
|
||||
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 ');
|
||||
}
|
||||
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($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ');
|
||||
print "</tr>\n";
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if (! $resql) {
|
||||
if (!$resql) {
|
||||
dol_print_error($db);
|
||||
}
|
||||
$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->lieu = $objp->lieu;
|
||||
|
||||
if (! empty($objp->fk_origin)) {
|
||||
if (!empty($objp->fk_origin)) {
|
||||
$origin = $objectlist->get_origin($objp->fk_origin, $objp->origintype);
|
||||
} else {
|
||||
$origin = '';
|
||||
@ -760,21 +760,21 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
// Id movement
|
||||
if (! empty($arrayfields['m.rowid']['checked'])) {
|
||||
if (!empty($arrayfields['m.rowid']['checked'])) {
|
||||
// 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
|
||||
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
|
||||
print '<td class="nowraponall">';
|
||||
print $productstatic->getNomUrl(1, 'stock', 16);
|
||||
print "</td>\n";
|
||||
}
|
||||
if (! empty($arrayfields['p.label']['checked'])) {
|
||||
if (!empty($arrayfields['p.label']['checked'])) {
|
||||
// Product label
|
||||
print '<td>';
|
||||
/*
|
||||
@ -786,7 +786,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print $productstatic->label;
|
||||
print "</td>\n";
|
||||
}
|
||||
if (! empty($arrayfields['m.batch']['checked'])) {
|
||||
if (!empty($arrayfields['m.batch']['checked'])) {
|
||||
print '<td class="center nowraponall">';
|
||||
if ($productlot->id > 0)
|
||||
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 '</td>';
|
||||
}
|
||||
if (! empty($arrayfields['pl.eatby']['checked'])) {
|
||||
print '<td class="center">' . dol_print_date($objp->eatby, 'day') . '</td>';
|
||||
if (!empty($arrayfields['pl.eatby']['checked'])) {
|
||||
print '<td class="center">'.dol_print_date($objp->eatby, 'day').'</td>';
|
||||
}
|
||||
if (! empty($arrayfields['pl.sellby']['checked'])) {
|
||||
print '<td class="center">' . dol_print_date($objp->sellby, 'day') . '</td>';
|
||||
if (!empty($arrayfields['pl.sellby']['checked'])) {
|
||||
print '<td class="center">'.dol_print_date($objp->sellby, 'day').'</td>';
|
||||
}
|
||||
// Warehouse
|
||||
if (! empty($arrayfields['e.ref']['checked'])) {
|
||||
if (!empty($arrayfields['e.ref']['checked'])) {
|
||||
print '<td>';
|
||||
print $warehousestatic->getNomUrl(1);
|
||||
print "</td>\n";
|
||||
}
|
||||
// Author
|
||||
if (! empty($arrayfields['m.fk_user_author']['checked'])) {
|
||||
if (!empty($arrayfields['m.fk_user_author']['checked'])) {
|
||||
print '<td class="tdoverflowmax100">';
|
||||
print $userstatic->getNomUrl(- 1);
|
||||
print $userstatic->getNomUrl(-1);
|
||||
print "</td>\n";
|
||||
}
|
||||
if (! empty($arrayfields['m.inventorycode']['checked'])) {
|
||||
if (!empty($arrayfields['m.inventorycode']['checked'])) {
|
||||
// Inventory code
|
||||
print '<td>';
|
||||
//print '<a href="' . DOL_URL_ROOT . '/product/stock/movement_card.php' . '?id=' . $objp->entrepot_id . '&search_inventorycode=' . $objp->inventorycode . '&search_type_mouvement=' . $objp->type_mouvement . '">';
|
||||
@ -820,32 +820,32 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
//print '</a>';
|
||||
print '</td>';
|
||||
}
|
||||
if (! empty($arrayfields['m.label']['checked'])) {
|
||||
if (!empty($arrayfields['m.label']['checked'])) {
|
||||
// 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
|
||||
switch ($objp->type_mouvement) {
|
||||
case "0":
|
||||
print '<td class="center">' . $langs->trans('StockIncreaseAfterCorrectTransfer') . '</td>';
|
||||
print '<td class="center">'.$langs->trans('StockIncreaseAfterCorrectTransfer').'</td>';
|
||||
break;
|
||||
case "1":
|
||||
print '<td class="center">' . $langs->trans('StockDecreaseAfterCorrectTransfer') . '</td>';
|
||||
print '<td class="center">'.$langs->trans('StockDecreaseAfterCorrectTransfer').'</td>';
|
||||
break;
|
||||
case "2":
|
||||
print '<td class="center">' . $langs->trans('StockDecrease') . '</td>';
|
||||
print '<td class="center">'.$langs->trans('StockDecrease').'</td>';
|
||||
break;
|
||||
case "3":
|
||||
print '<td class="center">' . $langs->trans('StockIncrease') . '</td>';
|
||||
print '<td class="center">'.$langs->trans('StockIncrease').'</td>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (! empty($arrayfields['origin']['checked'])) {
|
||||
if (!empty($arrayfields['origin']['checked'])) {
|
||||
// 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
|
||||
print '<td class="right">';
|
||||
if ($objp->qt > 0)
|
||||
@ -853,7 +853,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print $objp->qty;
|
||||
print '</td>';
|
||||
}
|
||||
if (! empty($arrayfields['m.price']['checked'])) {
|
||||
if (!empty($arrayfields['m.price']['checked'])) {
|
||||
// Price
|
||||
print '<td class="right">';
|
||||
if ($objp->price != 0)
|
||||
@ -867,11 +867,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
$selected = 0;
|
||||
if (in_array($obj->rowid, $arrayofselected))
|
||||
$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>';
|
||||
if (! $i)
|
||||
$totalarray['nbfield'] ++;
|
||||
if (!$i)
|
||||
$totalarray['nbfield']++;
|
||||
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
|
||||
@ -167,12 +167,12 @@ if (empty($reshook))
|
||||
|
||||
// Line to produce
|
||||
$moline->fk_mo = $object->id;
|
||||
$moline->qty = GETPOST('qtytoadd', 'int');;
|
||||
$moline->qty = GETPOST('qtytoadd', 'int'); ;
|
||||
$moline->fk_product = GETPOST('productidtoadd', 'int');
|
||||
$moline->role = 'toconsume';
|
||||
$moline->position = 0;
|
||||
|
||||
$resultline = $moline->create($user, false); // Never use triggers here
|
||||
$resultline = $moline->create($user, false); // Never use triggers here
|
||||
if ($resultline <= 0) {
|
||||
$error++;
|
||||
setEventMessages($moline->error, $molines->errors, 'errors');
|
||||
@ -546,7 +546,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
if (! in_array($action, array('consumeorproduce', 'consumeandproduceall')))
|
||||
if (!in_array($action, array('consumeorproduce', 'consumeandproduceall')))
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
@ -684,9 +684,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
if ($action == 'addconsumeline') {
|
||||
print '<tr class="liste_titre">';
|
||||
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 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>';
|
||||
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))
|
||||
{
|
||||
$nblinetoconsume = 0;
|
||||
foreach($object->lines as $line) {
|
||||
foreach ($object->lines as $line) {
|
||||
if ($line->role == 'toconsume') {
|
||||
$nblinetoconsume++;
|
||||
}
|
||||
}
|
||||
|
||||
$nblinetoconsumecursor = 0;
|
||||
foreach($object->lines as $line) {
|
||||
foreach ($object->lines as $line) {
|
||||
if ($line->role == 'toconsume') {
|
||||
$nblinetoconsumecursor++;
|
||||
|
||||
@ -716,7 +716,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
|
||||
$arrayoflines = $object->fetchLinesLinked('consumed', $line->id);
|
||||
$alreadyconsumed = 0;
|
||||
foreach($arrayoflines as $line2) {
|
||||
foreach ($arrayoflines as $line2) {
|
||||
$alreadyconsumed += $line2['qty'];
|
||||
}
|
||||
|
||||
@ -756,7 +756,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
}
|
||||
print ' '.$alreadyconsumed;
|
||||
print '</td>';
|
||||
print '<td>'; // Warehouse
|
||||
print '<td>'; // Warehouse
|
||||
print '</td>';
|
||||
if ($conf->productbatch->enabled) {
|
||||
print '<td></td>'; // Lot
|
||||
@ -764,7 +764,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print '</tr>';
|
||||
|
||||
// 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 '<td>';
|
||||
print dol_print_date($line2['date'], 'dayhour');
|
||||
@ -792,7 +792,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("ToConsume").'</td>';
|
||||
$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></td>';
|
||||
print '<td>';
|
||||
@ -851,14 +851,14 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
if (!empty($object->lines))
|
||||
{
|
||||
$nblinetoproduce = 0;
|
||||
foreach($object->lines as $line) {
|
||||
foreach ($object->lines as $line) {
|
||||
if ($line->role == 'toproduce') {
|
||||
$nblinetoproduce++;
|
||||
}
|
||||
}
|
||||
|
||||
$nblinetoproducecursor = 0;
|
||||
foreach($object->lines as $line) {
|
||||
foreach ($object->lines as $line) {
|
||||
if ($line->role == 'toproduce') {
|
||||
$nblinetoproducecursor++;
|
||||
|
||||
@ -867,7 +867,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
|
||||
$arrayoflines = $object->fetchLinesLinked('produced', $line->id);
|
||||
$alreadyproduced = 0;
|
||||
foreach($arrayoflines as $line2) {
|
||||
foreach ($arrayoflines as $line2) {
|
||||
$alreadyproduced += $line2['qty'];
|
||||
}
|
||||
|
||||
@ -894,7 +894,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
}
|
||||
print ' '.$alreadyproduced;
|
||||
print '</td>';
|
||||
print '<td>'; // Warehouse
|
||||
print '<td>'; // Warehouse
|
||||
print '</td>';
|
||||
if ($conf->productbatch->enabled) {
|
||||
print '<td></td>'; // Lot
|
||||
@ -902,7 +902,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print '</tr>';
|
||||
|
||||
// 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 '<td>';
|
||||
print dol_print_date($line2['date'], 'dayhour');
|
||||
@ -928,7 +928,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
||||
print '<tr>';
|
||||
print '<td>'.$langs->trans("ToProduce").'</td>';
|
||||
$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></td>';
|
||||
print '<td>';
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user