Merge branch 'develop' of https://github.com/Dolibarr/dolibarr.git into dev_scrunit
This commit is contained in:
commit
6cd5d12a31
@ -627,8 +627,8 @@ if ($action == 'exportcsv') {
|
|||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER . '"' . $sep;
|
print '"' . $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER . '"' . $sep;
|
||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . $langs->trans("Code_tiers") . '"' . $sep;
|
print '"' . $langs->trans("Thirdparty") . '"' . $sep;
|
||||||
print '"' . utf8_decode ( dol_trunc($companystatic->name, 16) ) . ' - ' . $val["refsuppliersologest"] . ' - ' . $langs->trans("Code_tiers") . '"' . $sep;
|
print '"' . utf8_decode ( dol_trunc($companystatic->name, 16) ) . ' - ' . $val["refsuppliersologest"] . ' - ' . $langs->trans("Thirdparty") . '"' . $sep;
|
||||||
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
||||||
print '"' . ($mt >= 0 ? price($mt) : '') . '"'. $sep;
|
print '"' . ($mt >= 0 ? price($mt) : '') . '"'. $sep;
|
||||||
print '"' . $journal . '"' ;
|
print '"' . $journal . '"' ;
|
||||||
@ -694,7 +694,7 @@ if ($action == 'exportcsv') {
|
|||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . $langs->trans("Code_tiers") . '"' . $sep;
|
print '"' . $langs->trans("Thirdparty") . '"' . $sep;
|
||||||
print '"' . utf8_decode ( dol_trunc($companystatic->name, 16) ) . ' - ' . $val["refsuppliersologest"] . ' - ' . $langs->trans("VAT") . ' NPR"' . $sep;
|
print '"' . utf8_decode ( dol_trunc($companystatic->name, 16) ) . ' - ' . $val["refsuppliersologest"] . ' - ' . $langs->trans("VAT") . ' NPR"' . $sep;
|
||||||
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
||||||
print '"' . ($mt >= 0 ? price($mt) : '') . '"'. $sep;
|
print '"' . ($mt >= 0 ? price($mt) : '') . '"'. $sep;
|
||||||
|
|||||||
@ -578,8 +578,8 @@ if ($action == 'exportcsv') {
|
|||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER . '"' . $sep;
|
print '"' . $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER . '"' . $sep;
|
||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
||||||
print '"' . $langs->trans("Code_tiers") . '"' . $sep;
|
print '"' . $langs->trans("Thirdparty") . '"' . $sep;
|
||||||
print '"' . utf8_decode(dol_trunc($companystatic->name, 16)) . ' - ' . $invoicestatic->ref . ' - ' . $langs->trans("Code_tiers") . '"' . $sep;
|
print '"' . utf8_decode(dol_trunc($companystatic->name, 16)) . ' - ' . $invoicestatic->ref . ' - ' . $langs->trans("Thirdparty") . '"' . $sep;
|
||||||
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
|
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
|
||||||
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
||||||
print '"' . $journal . '"';
|
print '"' . $journal . '"';
|
||||||
|
|||||||
@ -1614,7 +1614,7 @@ class Adherent extends CommonObject
|
|||||||
// Generate PDF (whatever is option MAIN_DISABLE_PDF_AUTOUPDATE) so we can include it into email
|
// Generate PDF (whatever is option MAIN_DISABLE_PDF_AUTOUPDATE) so we can include it into email
|
||||||
//if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
//if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
|
||||||
$invoice->generateDocument($invoice->modelpdf, $outputlangs, 0, 0, 0);
|
$invoice->generateDocument($invoice->modelpdf, $outputlangs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
248
htdocs/admin/accountant.php
Normal file
248
htdocs/admin/accountant.php
Normal file
@ -0,0 +1,248 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/admin/accountant.php
|
||||||
|
* \ingroup accountant
|
||||||
|
* \brief Setup page to configure accountant / auditor
|
||||||
|
*/
|
||||||
|
|
||||||
|
require '../main.inc.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
|
||||||
|
|
||||||
|
$action=GETPOST('action','aZ09');
|
||||||
|
|
||||||
|
$langs->load("admin");
|
||||||
|
$langs->load("companies");
|
||||||
|
|
||||||
|
if (! $user->admin) accessforbidden();
|
||||||
|
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
|
$contextpage=array('adminaccoutant','globaladmin');
|
||||||
|
$hookmanager->initHooks($contextpage);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
|
||||||
|
if ( ($action == 'update' && ! GETPOST("cancel",'alpha'))
|
||||||
|
|| ($action == 'updateedit') )
|
||||||
|
{
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_NAME", GETPOST("nom",'nohtml'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_ADDRESS", GETPOST("address",'nohtml'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_TOWN", GETPOST("town",'nohtml'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_ZIP", GETPOST("zipcode",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_STATE", GETPOST("state_id",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_REGION", GETPOST("region_code",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_COUNTRY", GETPOST('country_id','int'), 'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_PHONE", GETPOST("tel",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_FAX", GETPOST("fax",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_MAIL", GETPOST("mail",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_WEB", GETPOST("web",'alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_NOTE", GETPOST("note",'none'),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
|
if ($action != 'updateedit' && ! $error)
|
||||||
|
{
|
||||||
|
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$help_url='';
|
||||||
|
llxHeader('',$langs->trans("CompanyFoundation"),$help_url);
|
||||||
|
|
||||||
|
print load_fiche_titre($langs->trans("CompanyFoundation"),'','title_setup');
|
||||||
|
|
||||||
|
$head = company_admin_prepare_head();
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'accountant', $langs->trans("Company"), -1, 'company');
|
||||||
|
|
||||||
|
$form=new Form($db);
|
||||||
|
$formother=new FormOther($db);
|
||||||
|
$formcompany=new FormCompany($db);
|
||||||
|
|
||||||
|
$countrynotdefined='<font class="error">'.$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')</font>';
|
||||||
|
|
||||||
|
print $langs->trans("AccountantDesc")."<br>\n";
|
||||||
|
print "<br>\n";
|
||||||
|
|
||||||
|
if ($action == 'edit' || $action == 'updateedit')
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Edit parameters
|
||||||
|
*/
|
||||||
|
print "\n".'<script type="text/javascript" language="javascript">';
|
||||||
|
print '$(document).ready(function () {
|
||||||
|
$("#selectcountry_id").change(function() {
|
||||||
|
document.form_index.action.value="updateedit";
|
||||||
|
document.form_index.submit();
|
||||||
|
});
|
||||||
|
});';
|
||||||
|
print '</script>'."\n";
|
||||||
|
|
||||||
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'" name="form_index">';
|
||||||
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
print '<tr class="liste_titre"><th class="titlefield wordbreak">'.$langs->trans("CompanyInfo").'</th><th>'.$langs->trans("Value").'</th></tr>'."\n";
|
||||||
|
|
||||||
|
// Name
|
||||||
|
print '<tr class="oddeven"><td class="fieldrequired"><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
||||||
|
print '<input name="nom" id="name" class="minwidth200" value="'. ($conf->global->MAIN_INFO_ACCOUNTANT_NAME?$conf->global->MAIN_INFO_ACCOUNTANT_NAME: GETPOST("nom",'nohtml')) . '" autofocus="autofocus"></td></tr>'."\n";
|
||||||
|
|
||||||
|
// Address
|
||||||
|
print '<tr class="oddeven"><td><label for="address">'.$langs->trans("CompanyAddress").'</label></td><td>';
|
||||||
|
print '<textarea name="address" id="address" class="quatrevingtpercent" rows="'.ROWS_3.'">'. ($conf->global->MAIN_INFO_ACCOUNTANT_ADDRESS?$conf->global->MAIN_INFO_ACCOUNTANT_ADDRESS: GETPOST("address",'nohtml')) . '</textarea></td></tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td><label for="zipcode">'.$langs->trans("CompanyZip").'</label></td><td>';
|
||||||
|
print '<input class="minwidth100" name="zipcode" id="zipcode" value="'. ($conf->global->MAIN_INFO_ACCOUNTANT_ZIP?$conf->global->MAIN_INFO_ACCOUNTANT_ZIP: GETPOST("zipcode",'alpha')) . '"></td></tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td><label for="town">'.$langs->trans("CompanyTown").'</label></td><td>';
|
||||||
|
print '<input name="town" class="minwidth100" id="town" value="'. ($conf->global->MAIN_INFO_ACCOUNTANT_TOWN?$conf->global->MAIN_INFO_ACCOUNTANT_TOWN: GETPOST("town",'nohtml')) . '"></td></tr>'."\n";
|
||||||
|
|
||||||
|
// Country
|
||||||
|
print '<tr class="oddeven"><td class="fieldrequired"><label for="selectcountry_id">'.$langs->trans("Country").'</label></td><td class="maxwidthonsmartphone">';
|
||||||
|
//if (empty($country_selected)) $country_selected=substr($langs->defaultlang,-2); // By default, country of localization
|
||||||
|
print $form->select_country($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY, 'country_id');
|
||||||
|
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td><label for="state_id">'.$langs->trans("State").'</label></td><td class="maxwidthonsmartphone">';
|
||||||
|
$formcompany->select_departement($conf->global->MAIN_INFO_ACCOUNTANT_STATE, $conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY, 'state_id');
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td><label for="phone">'.$langs->trans("Phone").'</label></td><td>';
|
||||||
|
print '<input name="tel" id="phone" value="'. $conf->global->MAIN_INFO_ACCOUNTANT_PHONE . '"></td></tr>';
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td><label for="fax">'.$langs->trans("Fax").'</label></td><td>';
|
||||||
|
print '<input name="fax" id="fax" value="'. $conf->global->MAIN_INFO_ACCOUNTANT_FAX . '"></td></tr>';
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td><label for="email">'.$langs->trans("EMail").'</label></td><td>';
|
||||||
|
print '<input name="mail" id="email" class="minwidth200" value="'. $conf->global->MAIN_INFO_ACCOUNTANT_MAIL . '"></td></tr>';
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
// Web
|
||||||
|
print '<tr class="oddeven"><td><label for="web">'.$langs->trans("Web").'</label></td><td>';
|
||||||
|
print '<input name="web" id="web" class="minwidth300" value="'. $conf->global->MAIN_INFO_ACCOUNTANT_WEB . '"></td></tr>';
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
|
||||||
|
// Note
|
||||||
|
print '<tr class="oddeven"><td class="tdtop"><label for="note">'.$langs->trans("Note").'</label></td><td>';
|
||||||
|
print '<textarea class="flat quatrevingtpercent" name="note" id="note" rows="'.ROWS_5.'">'.(GETPOST('note','none') ? GETPOST('note','none') : $conf->global->MAIN_INFO_ACCOUNTANT_NOTE).'</textarea></td></tr>';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
print '<br><div class="center">';
|
||||||
|
print '<input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
|
||||||
|
print ' ';
|
||||||
|
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||||
|
print '</div>';
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Show parameters
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Actions buttons
|
||||||
|
//print '<div class="tabsAction">';
|
||||||
|
//print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>';
|
||||||
|
//print '</div><br>';
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
print '<tr class="liste_titre"><td>'.$langs->trans("CompanyInfo").'</td><td>'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td class="titlefield wordbreak">'.$langs->trans("CompanyName").'</td><td>';
|
||||||
|
print $conf->global->MAIN_INFO_ACCOUNTANT_NAME;
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("CompanyAddress").'</td><td>' . nl2br(empty($conf->global->MAIN_INFO_ACCOUNTANT_ADDRESS)?'':$conf->global->MAIN_INFO_ACCOUNTANT_ADDRESS) . '</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("CompanyZip").'</td><td>' . (empty($conf->global->MAIN_INFO_ACCOUNTANT_ZIP)?'':$conf->global->MAIN_INFO_ACCOUNTANT_ZIP) . '</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("CompanyTown").'</td><td>' . (empty($conf->global->MAIN_INFO_ACCOUNTANT_TOWN)?'':$conf->global->MAIN_INFO_ACCOUNTANT_TOWN) . '</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("CompanyCountry").'</td><td>';
|
||||||
|
if (! empty($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY))
|
||||||
|
{
|
||||||
|
$code = getCountry($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY, 2);
|
||||||
|
$img=picto_from_langcode($code);
|
||||||
|
print $img?$img.' ':'';
|
||||||
|
print getCountry($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY,1);
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
if (! empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT)) print '<tr class="oddeven"><td>'.$langs->trans("Region-State").'</td><td>';
|
||||||
|
else print '<tr class="oddeven"><td>'.$langs->trans("State").'</td><td>';
|
||||||
|
if (! empty($conf->global->MAIN_INFO_ACCOUNTANT_STATE)) print getState($conf->global->MAIN_INFO_ACCOUNTANT_STATE,$conf->global->MAIN_SHOW_STATE_CODE,0,$conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT);
|
||||||
|
else print ' ';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("Phone").'</td><td>' . dol_print_phone($conf->global->MAIN_INFO_ACCOUNTANT_PHONE,$mysoc->country_code) . '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("Fax").'</td><td>' . dol_print_phone($conf->global->MAIN_INFO_ACCOUNTANT_FAX,$mysoc->country_code) . '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("Mail").'</td><td>' . dol_print_email($conf->global->MAIN_INFO_ACCOUNTANT_MAIL,0,0,0,80) . '</td></tr>';
|
||||||
|
|
||||||
|
// Web
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$langs->trans("Web").'</td><td>' . dol_print_url($conf->global->MAIN_INFO_ACCOUNTANT_WEB,'_blank',80) . '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td class="tdtop">'.$langs->trans("Note").'</td><td>' . (! empty($conf->global->MAIN_INFO_ACCOUNTANT_NOTE) ? nl2br($conf->global->MAIN_INFO_ACCOUNTANT_NOTE) : '') . '</td></tr>';
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
print "</div>";
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
// Actions buttons
|
||||||
|
print '<div class="tabsAction">';
|
||||||
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a></div>';
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
@ -295,6 +295,10 @@ $countrynotdefined='<font class="error">'.$langs->trans("ErrorSetACountryFirst")
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("CompanyFoundation"),'','title_setup');
|
print load_fiche_titre($langs->trans("CompanyFoundation"),'','title_setup');
|
||||||
|
|
||||||
|
$head = company_admin_prepare_head();
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'company', $langs->trans("Company"), -1, 'company');
|
||||||
|
|
||||||
print $langs->trans("CompanyFundationDesc")."<br>\n";
|
print $langs->trans("CompanyFundationDesc")."<br>\n";
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
@ -1134,8 +1138,6 @@ else
|
|||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a></div>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -69,6 +69,7 @@ $object = new Commande($db);
|
|||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($object->fetch($id))
|
if ($object->fetch($id))
|
||||||
{
|
{
|
||||||
$object->fetch_thirdparty();
|
$object->fetch_thirdparty();
|
||||||
|
|||||||
@ -13,8 +13,9 @@
|
|||||||
* Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr>
|
* Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||||
* Copyright (C) 2012-2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2012-2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
* Copyright (C) 2013 Cedric Gross <c.gross@kreiz-it.fr>
|
* Copyright (C) 2013 Cedric Gross <c.gross@kreiz-it.fr>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2016 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2016 Ferran Marcet <fmarcet@2byte.es>
|
||||||
|
* Copyright (C) 2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -43,6 +44,9 @@ require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/margin/lib/margins.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/margin/lib/margins.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php';
|
||||||
|
|
||||||
|
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
||||||
|
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to manage invoices
|
* Class to manage invoices
|
||||||
*/
|
*/
|
||||||
@ -1476,6 +1480,9 @@ class Facture extends CommonInvoice
|
|||||||
$line->fk_prev_id = $objp->fk_prev_id;
|
$line->fk_prev_id = $objp->fk_prev_id;
|
||||||
$line->fk_unit = $objp->fk_unit;
|
$line->fk_unit = $objp->fk_unit;
|
||||||
|
|
||||||
|
// Accountancy
|
||||||
|
$line->fk_accounting_account = $objp->fk_code_ventilation;
|
||||||
|
|
||||||
// Multicurrency
|
// Multicurrency
|
||||||
$line->fk_multicurrency = $objp->fk_multicurrency;
|
$line->fk_multicurrency = $objp->fk_multicurrency;
|
||||||
$line->multicurrency_code = $objp->multicurrency_code;
|
$line->multicurrency_code = $objp->multicurrency_code;
|
||||||
@ -1560,19 +1567,18 @@ class Facture extends CommonInvoice
|
|||||||
|
|
||||||
// Update request
|
// Update request
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."facture SET";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."facture SET";
|
||||||
|
|
||||||
$sql.= " facnumber=".(isset($this->ref)?"'".$this->db->escape($this->ref)."'":"null").",";
|
$sql.= " facnumber=".(isset($this->ref)?"'".$this->db->escape($this->ref)."'":"null").",";
|
||||||
$sql.= " type=".(isset($this->type)?$this->type:"null").",";
|
$sql.= " type=".(isset($this->type)?$this->db->escape($this->type):"null").",";
|
||||||
$sql.= " ref_client=".(isset($this->ref_client)?"'".$this->db->escape($this->ref_client)."'":"null").",";
|
$sql.= " ref_client=".(isset($this->ref_client)?"'".$this->db->escape($this->ref_client)."'":"null").",";
|
||||||
$sql.= " increment=".(isset($this->increment)?"'".$this->db->escape($this->increment)."'":"null").",";
|
$sql.= " increment=".(isset($this->increment)?"'".$this->db->escape($this->increment)."'":"null").",";
|
||||||
$sql.= " fk_soc=".(isset($this->socid)?$this->socid:"null").",";
|
$sql.= " fk_soc=".(isset($this->socid)?$this->db->escape($this->socid):"null").",";
|
||||||
$sql.= " datec=".(strval($this->date_creation)!='' ? "'".$this->db->idate($this->date_creation)."'" : 'null').",";
|
$sql.= " datec=".(strval($this->date_creation)!='' ? "'".$this->db->idate($this->date_creation)."'" : 'null').",";
|
||||||
$sql.= " datef=".(strval($this->date)!='' ? "'".$this->db->idate($this->date)."'" : 'null').",";
|
$sql.= " datef=".(strval($this->date)!='' ? "'".$this->db->idate($this->date)."'" : 'null').",";
|
||||||
$sql.= " date_pointoftax=".(strval($this->date_pointoftax)!='' ? "'".$this->db->idate($this->date_pointoftax)."'" : 'null').",";
|
$sql.= " date_pointoftax=".(strval($this->date_pointoftax)!='' ? "'".$this->db->idate($this->date_pointoftax)."'" : 'null').",";
|
||||||
$sql.= " date_valid=".(strval($this->date_validation)!='' ? "'".$this->db->idate($this->date_validation)."'" : 'null').",";
|
$sql.= " date_valid=".(strval($this->date_validation)!='' ? "'".$this->db->idate($this->date_validation)."'" : 'null').",";
|
||||||
$sql.= " paye=".(isset($this->paye)?$this->paye:"null").",";
|
$sql.= " paye=".(isset($this->paye)?$this->db->escape($this->paye):"null").",";
|
||||||
$sql.= " remise_percent=".(isset($this->remise_percent)?$this->remise_percent:"null").",";
|
$sql.= " remise_percent=".(isset($this->remise_percent)?$this->db->escape($this->remise_percent):"null").",";
|
||||||
$sql.= " remise_absolue=".(isset($this->remise_absolue)?$this->remise_absolue:"null").",";
|
$sql.= " remise_absolue=".(isset($this->remise_absolue)?$this->db->escape($this->remise_absolue):"null").",";
|
||||||
$sql.= " close_code=".(isset($this->close_code)?"'".$this->db->escape($this->close_code)."'":"null").",";
|
$sql.= " close_code=".(isset($this->close_code)?"'".$this->db->escape($this->close_code)."'":"null").",";
|
||||||
$sql.= " close_note=".(isset($this->close_note)?"'".$this->db->escape($this->close_note)."'":"null").",";
|
$sql.= " close_note=".(isset($this->close_note)?"'".$this->db->escape($this->close_note)."'":"null").",";
|
||||||
$sql.= " tva=".(isset($this->total_tva)?$this->total_tva:"null").",";
|
$sql.= " tva=".(isset($this->total_tva)?$this->total_tva:"null").",";
|
||||||
@ -1580,23 +1586,22 @@ class Facture extends CommonInvoice
|
|||||||
$sql.= " localtax2=".(isset($this->total_localtax2)?$this->total_localtax2:"null").",";
|
$sql.= " localtax2=".(isset($this->total_localtax2)?$this->total_localtax2:"null").",";
|
||||||
$sql.= " total=".(isset($this->total_ht)?$this->total_ht:"null").",";
|
$sql.= " total=".(isset($this->total_ht)?$this->total_ht:"null").",";
|
||||||
$sql.= " total_ttc=".(isset($this->total_ttc)?$this->total_ttc:"null").",";
|
$sql.= " total_ttc=".(isset($this->total_ttc)?$this->total_ttc:"null").",";
|
||||||
$sql.= " revenuestamp=".((isset($this->revenuestamp) && $this->revenuestamp != '')?$this->revenuestamp:"null").",";
|
$sql.= " revenuestamp=".((isset($this->revenuestamp) && $this->revenuestamp != '')?$this->db->escape($this->revenuestamp):"null").",";
|
||||||
$sql.= " fk_statut=".(isset($this->statut)?$this->statut:"null").",";
|
$sql.= " fk_statut=".(isset($this->statut)?$this->db->escape($this->statut):"null").",";
|
||||||
$sql.= " fk_user_author=".(isset($this->user_author)?$this->user_author:"null").",";
|
$sql.= " fk_user_author=".(isset($this->user_author)?$this->db->escape($this->user_author):"null").",";
|
||||||
$sql.= " fk_user_valid=".(isset($this->fk_user_valid)?$this->fk_user_valid:"null").",";
|
$sql.= " fk_user_valid=".(isset($this->fk_user_valid)?$this->db->escape($this->fk_user_valid):"null").",";
|
||||||
$sql.= " fk_facture_source=".(isset($this->fk_facture_source)?$this->fk_facture_source:"null").",";
|
$sql.= " fk_facture_source=".(isset($this->fk_facture_source)?$this->db->escape($this->fk_facture_source):"null").",";
|
||||||
$sql.= " fk_projet=".(isset($this->fk_project)?$this->fk_project:"null").",";
|
$sql.= " fk_projet=".(isset($this->fk_project)?$this->db->escape($this->fk_project):"null").",";
|
||||||
$sql.= " fk_cond_reglement=".(isset($this->cond_reglement_id)?$this->cond_reglement_id:"null").",";
|
$sql.= " fk_cond_reglement=".(isset($this->cond_reglement_id)?$this->db->escape($this->cond_reglement_id):"null").",";
|
||||||
$sql.= " fk_mode_reglement=".(isset($this->mode_reglement_id)?$this->mode_reglement_id:"null").",";
|
$sql.= " fk_mode_reglement=".(isset($this->mode_reglement_id)?$this->db->escape($this->mode_reglement_id):"null").",";
|
||||||
$sql.= " date_lim_reglement=".(strval($this->date_lim_reglement)!='' ? "'".$this->db->idate($this->date_lim_reglement)."'" : 'null').",";
|
$sql.= " date_lim_reglement=".(strval($this->date_lim_reglement)!='' ? "'".$this->db->idate($this->date_lim_reglement)."'" : 'null').",";
|
||||||
$sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").",";
|
$sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").",";
|
||||||
$sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").",";
|
$sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").",";
|
||||||
$sql.= " model_pdf=".(isset($this->modelpdf)?"'".$this->db->escape($this->modelpdf)."'":"null").",";
|
$sql.= " model_pdf=".(isset($this->modelpdf)?"'".$this->db->escape($this->modelpdf)."'":"null").",";
|
||||||
$sql.= " import_key=".(isset($this->import_key)?"'".$this->db->escape($this->import_key)."'":"null");
|
$sql.= " import_key=".(isset($this->import_key)?"'".$this->db->escape($this->import_key)."'":"null").",";
|
||||||
$sql.= ", situation_cycle_ref=".(empty($this->situation_cycle_ref)?"null":$this->situation_cycle_ref);
|
$sql.= " situation_cycle_ref=".(empty($this->situation_cycle_ref)?"null":$this->db->escape($this->situation_cycle_ref)).",";
|
||||||
$sql.= ", situation_counter=".(empty($this->situation_counter)?"null":$this->situation_counter);
|
$sql.= " situation_counter=".(empty($this->situation_counter)?"null":$this->db->escape($this->situation_counter)).",";
|
||||||
$sql.= ", situation_final=".(empty($this->situation_counter)?"0":$this->situation_counter);
|
$sql.= " situation_final=".(empty($this->situation_counter)?"0":$this->db->escape($this->situation_counter));
|
||||||
|
|
||||||
$sql.= " WHERE rowid=".$this->id;
|
$sql.= " WHERE rowid=".$this->id;
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|||||||
@ -1705,14 +1705,11 @@ else
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Display lines extrafields
|
// Display lines extrafields
|
||||||
if (is_array($extralabelslines) && count($extralabelslines)>0) {
|
if (is_array($extralabelslines) && count($extralabelslines)>0) {
|
||||||
print '<tr '.$bcnd[$var].'>';
|
|
||||||
$line = new ContratLigne($db);
|
$line = new ContratLigne($db);
|
||||||
$line->fetch_optionals($objp->rowid);
|
$line->fetch_optionals($objp->rowid);
|
||||||
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bcnd[$var], 'colspan'=>$colspan));
|
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bcnd[$var], 'colspan'=>$colspan), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
|
||||||
print '</tr>';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Ligne en mode update
|
// Ligne en mode update
|
||||||
@ -1767,7 +1764,8 @@ else
|
|||||||
print '<input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">';
|
||||||
print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
|
print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
$colspan=6;
|
$colspan=6;
|
||||||
if (! empty($conf->margin->enabled) && ! empty($conf->global->MARGIN_SHOW_ON_CONTRACT)) $colspan++;
|
if (! empty($conf->margin->enabled) && ! empty($conf->global->MARGIN_SHOW_ON_CONTRACT)) $colspan++;
|
||||||
if($conf->global->PRODUCT_USE_UNITS) $colspan++;
|
if($conf->global->PRODUCT_USE_UNITS) $colspan++;
|
||||||
@ -1780,16 +1778,13 @@ else
|
|||||||
print ' '.$langs->trans("DateEndPlanned").' ';
|
print ' '.$langs->trans("DateEndPlanned").' ';
|
||||||
$form->select_date($db->jdate($objp->date_fin),"date_end_update",$usehm,$usehm,($db->jdate($objp->date_fin)>0?0:1),"update");
|
$form->select_date($db->jdate($objp->date_fin),"date_end_update",$usehm,$usehm,($db->jdate($objp->date_fin)>0?0:1),"update");
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
if (is_array($extralabelslines) && count($extralabelslines)>0) {
|
if (is_array($extralabelslines) && count($extralabelslines)>0) {
|
||||||
print '<tr '.$bcnd[$var].'>';
|
|
||||||
$line = new ContratLigne($db);
|
$line = new ContratLigne($db);
|
||||||
$line->fetch_optionals($objp->rowid);
|
$line->fetch_optionals($objp->rowid);
|
||||||
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$colspan));
|
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$colspan), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
|
||||||
print '</tr>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</tr>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->free($result);
|
$db->free($result);
|
||||||
|
|||||||
@ -124,5 +124,13 @@ if ($action == 'remove_file' && $permissioncreate)
|
|||||||
$ret=dol_delete_file($file,0,0,0,$object);
|
$ret=dol_delete_file($file,0,0,0,$object);
|
||||||
if ($ret) setEventMessages($langs->trans("FileWasRemoved", $filetodelete), null, 'mesgs');
|
if ($ret) setEventMessages($langs->trans("FileWasRemoved", $filetodelete), null, 'mesgs');
|
||||||
else setEventMessages($langs->trans("ErrorFailToDeleteFile", $filetodelete), null, 'errors');
|
else setEventMessages($langs->trans("ErrorFailToDeleteFile", $filetodelete), null, 'errors');
|
||||||
|
|
||||||
|
// Make a redirect to avoid to keep the remove_file into the url that create side effects
|
||||||
|
$urltoredirect = $_SERVER['REQUEST_URI'];
|
||||||
|
$urltoredirect = preg_replace('/#builddoc$/', '', $urltoredirect);
|
||||||
|
$urltoredirect = preg_replace('/action=remove_file&?/', '', $urltoredirect);
|
||||||
|
|
||||||
|
header('Location: '.$urltoredirect);
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4338,8 +4338,10 @@ abstract class CommonObject
|
|||||||
if ($useonlinesignature) $setsharekey=true;
|
if ($useonlinesignature) $setsharekey=true;
|
||||||
if (! empty($conf->global->PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
if (! empty($conf->global->PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
||||||
}
|
}
|
||||||
if ($this->element == 'commande' && ! empty($conf->global->ORDER_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
if ($this->element == 'commande' && ! empty($conf->global->ORDER_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
||||||
if ($this->element == 'facture' && ! empty($conf->global->INVOICE_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
if ($this->element == 'facture' && ! empty($conf->global->INVOICE_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
||||||
|
if ($this->element == 'bank_account' && ! empty($conf->global->BANK_ACCOUNT_ALLOW_EXTERNAL_DOWNLOAD)) $setsharekey=true;
|
||||||
|
|
||||||
if ($setsharekey)
|
if ($setsharekey)
|
||||||
{
|
{
|
||||||
if (empty($ecmfile->share)) // Because object not found or share not set yet
|
if (empty($ecmfile->share)) // Because object not found or share not set yet
|
||||||
@ -5906,15 +5908,15 @@ abstract class CommonObject
|
|||||||
/**
|
/**
|
||||||
* Function to show lines of extrafields with output datas
|
* Function to show lines of extrafields with output datas
|
||||||
*
|
*
|
||||||
* @param Extrafields $extrafields Extrafield Object
|
* @param Extrafields $extrafields Extrafield Object
|
||||||
* @param string $mode Show output (view) or input (edit) for extrafield
|
* @param string $mode Show output (view) or input (edit) for extrafield
|
||||||
* @param array $params Optional parameters
|
* @param array $params Optional parameters
|
||||||
* @param string $keysuffix Suffix string to add after name and id of field (can be used to avoid duplicate names)
|
* @param string $keysuffix Suffix string to add after name and id of field (can be used to avoid duplicate names)
|
||||||
* @param string $keyprefix Prefix string to add before name and id of field (can be used to avoid duplicate names)
|
* @param string $keyprefix Prefix string to add before name and id of field (can be used to avoid duplicate names)
|
||||||
*
|
* @param string $onetrtd All fields in same tr td
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function showOptionals($extrafields, $mode='view', $params=null, $keysuffix='', $keyprefix='')
|
function showOptionals($extrafields, $mode='view', $params=null, $keysuffix='', $keyprefix='', $onetrtd=0)
|
||||||
{
|
{
|
||||||
global $_POST, $conf, $langs, $action;
|
global $_POST, $conf, $langs, $action;
|
||||||
|
|
||||||
@ -5978,15 +5980,13 @@ abstract class CommonObject
|
|||||||
$csstyle=$params['style'];
|
$csstyle=$params['style'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( !empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0)
|
|
||||||
|
$out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">';
|
||||||
|
if (empty($onetrtd))
|
||||||
{
|
{
|
||||||
$out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">';
|
if (! empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0) { $colspan='0'; }
|
||||||
$colspan='0';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$out .= '<tr '.$class.$csstyle.' class="'.$this->element.'_extras_'.$key.'">';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert date into timestamp format (value in memory must be a timestamp)
|
// Convert date into timestamp format (value in memory must be a timestamp)
|
||||||
if (in_array($extrafields->attribute_type[$key],array('date','datetime')))
|
if (in_array($extrafields->attribute_type[$key],array('date','datetime')))
|
||||||
{
|
{
|
||||||
@ -6004,10 +6004,17 @@ abstract class CommonObject
|
|||||||
{
|
{
|
||||||
$labeltoshow = '<span'.($mode != 'view' ? ' class="fieldrequired"':'').'>'.$labeltoshow.'</span>';
|
$labeltoshow = '<span'.($mode != 'view' ? ' class="fieldrequired"':'').'>'.$labeltoshow.'</span>';
|
||||||
}
|
}
|
||||||
$out .= '<td>'.$labeltoshow.'</td>';
|
|
||||||
|
if (empty($onetrtd)) $out .= '<td>';
|
||||||
|
else $out .= '<td'.($colspan?' colspan="'.($colspan+1).'"':'').'>';
|
||||||
|
|
||||||
|
$out .= $labeltoshow;
|
||||||
|
|
||||||
|
if (empty($onetrtd)) $out .= '</td><td'.($colspan?' colspan="'.($colspan).'"':'').'>';
|
||||||
|
else $out.=' ';
|
||||||
|
|
||||||
$html_id = !empty($this->id) ? $this->element.'_extras_'.$key.'_'.$this->id : '';
|
$html_id = !empty($this->id) ? $this->element.'_extras_'.$key.'_'.$this->id : '';
|
||||||
$out .='<td id="'.$html_id.'" class="'.$this->element.'_extras_'.$key.'" '.($colspan?' colspan="'.$colspan.'"':'').'>';
|
$out .='<span id="'.$html_id.'" class="'.$this->element.'_extras_'.$key.'">';
|
||||||
|
|
||||||
switch($mode) {
|
switch($mode) {
|
||||||
case "view":
|
case "view":
|
||||||
@ -6019,9 +6026,8 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
$out .= '</td>';
|
$out .= '</td>';
|
||||||
|
$out .= '</tr>';
|
||||||
|
|
||||||
if (! empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && (($e % 2) == 1)) $out .= '</tr>';
|
|
||||||
else $out .= '</tr>';
|
|
||||||
$e++;
|
$e++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -425,7 +425,7 @@ class Conf
|
|||||||
if (empty($this->global->MAIN_MONNAIE)) $this->global->MAIN_MONNAIE='EUR';
|
if (empty($this->global->MAIN_MONNAIE)) $this->global->MAIN_MONNAIE='EUR';
|
||||||
$this->currency=$this->global->MAIN_MONNAIE;
|
$this->currency=$this->global->MAIN_MONNAIE;
|
||||||
|
|
||||||
if (empty($conf->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY)) $conf->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY = 30; // Less than 1 minutes to be sure
|
if (empty($this->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY)) $this->global->MAIN_BROWSER_NOTIFICATION_FREQUENCY = 30; // Less than 1 minutes to be sure
|
||||||
|
|
||||||
// conf->global->ACCOUNTING_MODE = Option des modules Comptabilites (simple ou expert). Defini le mode de calcul des etats comptables (CA,...)
|
// conf->global->ACCOUNTING_MODE = Option des modules Comptabilites (simple ou expert). Defini le mode de calcul des etats comptables (CA,...)
|
||||||
if (empty($this->global->ACCOUNTING_MODE)) $this->global->ACCOUNTING_MODE='RECETTES-DEPENSES'; // By default. Can be 'RECETTES-DEPENSES' ou 'CREANCES-DETTES'
|
if (empty($this->global->ACCOUNTING_MODE)) $this->global->ACCOUNTING_MODE='RECETTES-DEPENSES'; // By default. Can be 'RECETTES-DEPENSES' ou 'CREANCES-DETTES'
|
||||||
@ -584,13 +584,15 @@ class Conf
|
|||||||
if (! isset($this->global->THEME_HIDE_BORDER_ON_INPUT)) $this->global->THEME_HIDE_BORDER_ON_INPUT=0;
|
if (! isset($this->global->THEME_HIDE_BORDER_ON_INPUT)) $this->global->THEME_HIDE_BORDER_ON_INPUT=0;
|
||||||
|
|
||||||
// Save inconsistent option
|
// Save inconsistent option
|
||||||
if (empty($conf->global->AGENDA_USE_EVENT_TYPE) && (! isset($conf->global->AGENDA_DEFAULT_FILTER_TYPE) || $conf->global->AGENDA_DEFAULT_FILTER_TYPE == 'AC_NON_AUTO'))
|
if (empty($this->global->AGENDA_USE_EVENT_TYPE) && (! isset($this->global->AGENDA_DEFAULT_FILTER_TYPE) || $this->global->AGENDA_DEFAULT_FILTER_TYPE == 'AC_NON_AUTO'))
|
||||||
{
|
{
|
||||||
$conf->global->AGENDA_DEFAULT_FILTER_TYPE='0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on.
|
$this->global->AGENDA_DEFAULT_FILTER_TYPE='0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on.
|
||||||
}
|
}
|
||||||
|
|
||||||
$conf->global->MAIN_MODULE_DOLISTORE_API_SRV='https://www.dolistore.com';
|
if (! isset($this->global->MAIN_EXTRAFIELDS_IN_ONE_TD)) $this->global->MAIN_EXTRAFIELDS_IN_ONE_TD = 1;
|
||||||
$conf->global->MAIN_MODULE_DOLISTORE_API_KEY='dolistorecatalogpublickey1234567';
|
|
||||||
|
$this->global->MAIN_MODULE_DOLISTORE_API_SRV='https://www.dolistore.com';
|
||||||
|
$this->global->MAIN_MODULE_DOLISTORE_API_KEY='dolistorecatalogpublickey1234567';
|
||||||
|
|
||||||
// For backward compatibility
|
// For backward compatibility
|
||||||
if (isset($this->product)) $this->produit=$this->product;
|
if (isset($this->product)) $this->produit=$this->product;
|
||||||
|
|||||||
@ -1447,7 +1447,7 @@ class Form
|
|||||||
/**
|
/**
|
||||||
* Return select list of users
|
* Return select list of users
|
||||||
*
|
*
|
||||||
* @param string $selected User id or user object of user preselected. If -1, we use id of current user.
|
* @param string $selected User id or user object of user preselected. If 0 or < -2, we use id of current user. If -1, keep unselected (if empty is allowed)
|
||||||
* @param string $htmlname Field name in form
|
* @param string $htmlname Field name in form
|
||||||
* @param int $show_empty 0=list with no empty value, 1=add also an empty value into list
|
* @param int $show_empty 0=list with no empty value, 1=add also an empty value into list
|
||||||
* @param array $exclude Array list of users id to exclude
|
* @param array $exclude Array list of users id to exclude
|
||||||
@ -1457,7 +1457,7 @@ class Form
|
|||||||
* @param int $force_entity 0 or Id of environment to force
|
* @param int $force_entity 0 or Id of environment to force
|
||||||
* @param int $maxlength Maximum length of string into list (0=no limit)
|
* @param int $maxlength Maximum length of string into list (0=no limit)
|
||||||
* @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status
|
* @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status
|
||||||
* @param string $morefilter Add more filters into sql request
|
* @param string $morefilter Add more filters into sql request (Example: 'employee = 1')
|
||||||
* @param integer $show_every 0=default list, 1=add also a value "Everybody" at beginning of list
|
* @param integer $show_every 0=default list, 1=add also a value "Everybody" at beginning of list
|
||||||
* @param string $enableonlytext If option $enableonlytext is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty.
|
* @param string $enableonlytext If option $enableonlytext is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty.
|
||||||
* @param string $morecss More css
|
* @param string $morecss More css
|
||||||
@ -1530,7 +1530,6 @@ class Form
|
|||||||
$sql.= " ORDER BY u.lastname ASC";
|
$sql.= " ORDER BY u.lastname ASC";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::select_dolusers", LOG_DEBUG);
|
dol_syslog(get_class($this)."::select_dolusers", LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
|
|||||||
@ -1226,14 +1226,14 @@ class FormFile
|
|||||||
if (in_array($modulepart, array('product','produit','service'))) $newmodulepart='produit|service';
|
if (in_array($modulepart, array('product','produit','service'))) $newmodulepart='produit|service';
|
||||||
|
|
||||||
$disablecrop=1;
|
$disablecrop=1;
|
||||||
if (in_array($modulepart, array('societe','product','produit','service','expensereport','holiday','project','user'))) $disablecrop=0;
|
if (in_array($modulepart, array('societe','product','produit','service','expensereport','holiday','member','project','ticketsup','user'))) $disablecrop=0;
|
||||||
|
|
||||||
if (! $disablecrop && image_format_supported($file['name']) > 0)
|
if (! $disablecrop && image_format_supported($file['name']) > 0)
|
||||||
{
|
{
|
||||||
if ($permtoeditline)
|
if ($permtoeditline)
|
||||||
{
|
{
|
||||||
// Link to resize
|
// Link to resize
|
||||||
print '<a href="'.DOL_URL_ROOT.'/core/photos_resize.php?modulepart='.urlencode($newmodulepart).'&id='.$object->id.'&file='.urlencode($relativepath.$fileinfo['filename'].'.'.strtolower($fileinfo['extension'])).'" title="'.dol_escape_htmltag($langs->trans("Resize")).'">'.img_picto($langs->trans("Resize"),'resize','class="paddingrightonly"').'</a>';
|
print '<a href="'.DOL_URL_ROOT.'/core/photos_resize.php?modulepart='.urlencode($newmodulepart).'&id='.$object->id.'&file='.urlencode($relativepath.$fileinfo['filename'].'.'.strtolower($fileinfo['extension'])).'" title="'.dol_escape_htmltag($langs->trans("ResizeOrCrop")).'">'.img_picto($langs->trans("ResizeOrCrop"),'resize','class="paddingrightonly"').'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -738,6 +738,10 @@ class Ldap
|
|||||||
*/
|
*/
|
||||||
function serverPing($host, $port=389, $timeout=1)
|
function serverPing($host, $port=389, $timeout=1)
|
||||||
{
|
{
|
||||||
|
// Replace ldaps:// by ssl://
|
||||||
|
if (preg_match('/^ldaps:\/\/([^\/]+)\/?$/',$host, $regs)) {
|
||||||
|
$host = 'ssl://'.$regs[1];
|
||||||
|
}
|
||||||
$op = @fsockopen($host, $port, $errno, $errstr, $timeout);
|
$op = @fsockopen($host, $port, $errno, $errstr, $timeout);
|
||||||
if (!$op) return false; //DC is N/A
|
if (!$op) return false; //DC is N/A
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -1154,7 +1154,7 @@ function complete_dictionary_with_modules(&$taborder,&$tabname,&$tablib,&$tabsql
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activate external modules mandatroy when country is country_code
|
* Activate external modules mandatory when country is country_code
|
||||||
*
|
*
|
||||||
* @param string $country_code CountryCode
|
* @param string $country_code CountryCode
|
||||||
* @return int 1
|
* @return int 1
|
||||||
@ -1612,6 +1612,33 @@ function phpinfo_array()
|
|||||||
return $info_arr;
|
return $info_arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return array head with list of tabs to view object informations.
|
||||||
|
*
|
||||||
|
* @return array head array with tabs
|
||||||
|
*/
|
||||||
|
function company_admin_prepare_head()
|
||||||
|
{
|
||||||
|
global $langs, $conf, $user;
|
||||||
|
|
||||||
|
$h = 0;
|
||||||
|
$head = array();
|
||||||
|
|
||||||
|
$head[$h][0] = DOL_URL_ROOT."/admin/company.php";
|
||||||
|
$head[$h][1] = $langs->trans("Company");
|
||||||
|
$head[$h][2] = 'company';
|
||||||
|
$h++;
|
||||||
|
|
||||||
|
$head[$h][0] = DOL_URL_ROOT."/admin/accountant.php";
|
||||||
|
$head[$h][1] = $langs->trans("Accountant");
|
||||||
|
$head[$h][2] = 'accountant';
|
||||||
|
$h++;
|
||||||
|
|
||||||
|
complete_head_from_modules($conf,$langs,null,$head,$h,'company_admin','remove');
|
||||||
|
|
||||||
|
return $head;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return array head with list of tabs to view object informations.
|
* Return array head with list of tabs to view object informations.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -352,7 +352,7 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
|
|||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5000__+MAX_llx_menu__, 'hrm', 'hrm', 15__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'CPTitreMenu', 0, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5000__+MAX_llx_menu__, 'hrm', 'hrm', 15__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'CPTitreMenu', 0, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5001__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/card.php?&action=request', 'MenuAddCP', 1, 'holiday', '$user->rights->holiday->write', '', 0, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5001__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/card.php?&action=request', 'MenuAddCP', 1, 'holiday', '$user->rights->holiday->write', '', 0, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5002__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'List', 1, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5002__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/list.php?&leftmenu=hrm', 'List', 1, 'holiday', '$user->rights->holiday->read', '', 0, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5003__+MAX_llx_menu__, 'hrm', '', 5002__+MAX_llx_menu__, '/holiday/list.php?select_statut=2&leftmenu=hrm', 'ListToApprove', 2, 'trips', '$user->rights->holiday->read', '', 0, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5003__+MAX_llx_menu__, 'hrm', '', 5002__+MAX_llx_menu__, '/holiday/list.php?search_statut=2&leftmenu=hrm', 'ListToApprove', 2, 'trips', '$user->rights->holiday->read', '', 0, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5004__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/define_holiday.php?&action=request', 'MenuConfCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 2, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5004__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/define_holiday.php?&action=request', 'MenuConfCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 2, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5005__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/view_log.php?&action=request', 'MenuLogCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 3, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->holiday->enabled', __HANDLER__, 'left', 5005__+MAX_llx_menu__, 'hrm', '', 5000__+MAX_llx_menu__, '/holiday/view_log.php?&action=request', 'MenuLogCP', 1, 'holiday', '$user->rights->holiday->define_holiday', '', 0, 3, __ENTITY__);
|
||||||
-- HRM - Trips and expenses (old module)
|
-- HRM - Trips and expenses (old module)
|
||||||
|
|||||||
@ -1371,12 +1371,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
$newmenu->add("/holiday/list.php?leftmenu=hrm", $langs->trans("CPTitreMenu"), 0, $user->rights->holiday->read, '', $mainmenu, 'hrm');
|
$newmenu->add("/holiday/list.php?leftmenu=hrm", $langs->trans("CPTitreMenu"), 0, $user->rights->holiday->read, '', $mainmenu, 'hrm');
|
||||||
$newmenu->add("/holiday/card.php?action=request", $langs->trans("New"), 1,$user->rights->holiday->write);
|
$newmenu->add("/holiday/card.php?action=request", $langs->trans("New"), 1,$user->rights->holiday->write);
|
||||||
$newmenu->add("/holiday/list.php?leftmenu=hrm", $langs->trans("List"), 1,$user->rights->holiday->read);
|
$newmenu->add("/holiday/list.php?leftmenu=hrm", $langs->trans("List"), 1,$user->rights->holiday->read);
|
||||||
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?select_statut=1&leftmenu=hrm", $langs->trans("DraftCP"), 2, $user->rights->holiday->read);
|
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?search_statut=1&leftmenu=hrm", $langs->trans("DraftCP"), 2, $user->rights->holiday->read);
|
||||||
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?select_statut=2&leftmenu=hrm", $langs->trans("ToReviewCP"), 2, $user->rights->holiday->read);
|
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?search_statut=2&leftmenu=hrm", $langs->trans("ToReviewCP"), 2, $user->rights->holiday->read);
|
||||||
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?select_statut=3&leftmenu=hrm", $langs->trans("ApprovedCP"), 2, $user->rights->holiday->read);
|
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?search_statut=3&leftmenu=hrm", $langs->trans("ApprovedCP"), 2, $user->rights->holiday->read);
|
||||||
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?select_statut=4&leftmenu=hrm", $langs->trans("CancelCP"), 2, $user->rights->holiday->read);
|
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?search_statut=4&leftmenu=hrm", $langs->trans("CancelCP"), 2, $user->rights->holiday->read);
|
||||||
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?select_statut=5&leftmenu=hrm", $langs->trans("RefuseCP"), 2, $user->rights->holiday->read);
|
if ($usemenuhider || empty($leftmenu) || $leftmenu=="hrm") $newmenu->add("/holiday/list.php?search_statut=5&leftmenu=hrm", $langs->trans("RefuseCP"), 2, $user->rights->holiday->read);
|
||||||
$newmenu->add("/holiday/define_holiday.php?action=request", $langs->trans("MenuConfCP"), 1, $user->rights->holiday->read);
|
$newmenu->add("/holiday/define_holiday.php?action=request", $langs->trans("MenuConfCP"), 1, $user->rights->holiday->read);
|
||||||
|
$newmenu->add("/holiday/month_report.php", $langs->trans("MenuReportMonth"), 1, $user->rights->holiday->read_all);
|
||||||
$newmenu->add("/holiday/view_log.php?action=request", $langs->trans("MenuLogCP"), 1, $user->rights->holiday->define_holiday);
|
$newmenu->add("/holiday/view_log.php?action=request", $langs->trans("MenuLogCP"), 1, $user->rights->holiday->define_holiday);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,16 +53,22 @@ elseif ($modulepart == 'project')
|
|||||||
if (! $user->rights->projet->lire) accessforbidden();
|
if (! $user->rights->projet->lire) accessforbidden();
|
||||||
$accessallowed=1;
|
$accessallowed=1;
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'expensereport')
|
||||||
|
{
|
||||||
|
$result=restrictedArea($user,'expensereport',$id,'expensereport');
|
||||||
|
if (! $user->rights->expensereport->lire) accessforbidden();
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
elseif ($modulepart == 'holiday')
|
elseif ($modulepart == 'holiday')
|
||||||
{
|
{
|
||||||
$result=restrictedArea($user,'holiday',$id,'holiday');
|
$result=restrictedArea($user,'holiday',$id,'holiday');
|
||||||
if (! $user->rights->holiday->read) accessforbidden();
|
if (! $user->rights->holiday->read) accessforbidden();
|
||||||
$accessallowed=1;
|
$accessallowed=1;
|
||||||
}
|
}
|
||||||
elseif ($modulepart == 'expensereport')
|
elseif ($modulepart == 'member')
|
||||||
{
|
{
|
||||||
$result=restrictedArea($user,'expensereport',$id,'expensereport');
|
$result=restrictedArea($user, 'adherent', $id, '', '', 'fk_soc', 'rowid');
|
||||||
if (! $user->rights->expensereport->lire) accessforbidden();
|
if (! $user->rights->adherent->lire) accessforbidden();
|
||||||
$accessallowed=1;
|
$accessallowed=1;
|
||||||
}
|
}
|
||||||
elseif ($modulepart == 'user')
|
elseif ($modulepart == 'user')
|
||||||
@ -77,6 +83,12 @@ elseif ($modulepart == 'societe')
|
|||||||
if (! $user->rights->societe->lire) accessforbidden();
|
if (! $user->rights->societe->lire) accessforbidden();
|
||||||
$accessallowed=1;
|
$accessallowed=1;
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'ticketsup')
|
||||||
|
{
|
||||||
|
$result=restrictedArea($user,'ticketsup',$id,'ticketsup');
|
||||||
|
if (! $user->rights->ticketsup->read) accessforbidden();
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
|
||||||
// Security:
|
// Security:
|
||||||
// Limit access if permissions are wrong
|
// Limit access if permissions are wrong
|
||||||
@ -121,6 +133,17 @@ elseif ($modulepart == 'holiday')
|
|||||||
$dir=$conf->holiday->dir_output; // By default
|
$dir=$conf->holiday->dir_output; // By default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'member')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
|
$object = new Adherent($db);
|
||||||
|
if ($id > 0)
|
||||||
|
{
|
||||||
|
$result = $object->fetch($id);
|
||||||
|
if ($result <= 0) dol_print_error($db,'Failed to load object');
|
||||||
|
$dir=$conf->adherent->dir_output; // By default
|
||||||
|
}
|
||||||
|
}
|
||||||
elseif ($modulepart == 'societe')
|
elseif ($modulepart == 'societe')
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
@ -154,15 +177,31 @@ elseif ($modulepart == 'expensereport')
|
|||||||
$dir=$conf->expensereport->dir_output; // By default
|
$dir=$conf->expensereport->dir_output; // By default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'ticketsup')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/ticketsup/class/ticketsup.class.php';
|
||||||
|
$object = new Ticketsup($db);
|
||||||
|
if ($id > 0)
|
||||||
|
{
|
||||||
|
$result = $object->fetch($id);
|
||||||
|
if ($result <= 0) dol_print_error($db,'Failed to load object');
|
||||||
|
$dir=$conf->ticketsup->dir_output; // By default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print 'Action crop for module part '.$modulepart.' is not supported yet.';
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($backtourl))
|
if (empty($backtourl))
|
||||||
{
|
{
|
||||||
if (in_array($modulepart, array('product','produit','service','produit|service'))) $backtourl=DOL_URL_ROOT."/product/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
if (in_array($modulepart, array('product','produit','service','produit|service'))) $backtourl=DOL_URL_ROOT."/product/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('expensereport'))) $backtourl=DOL_URL_ROOT."/expensereport/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('expensereport'))) $backtourl=DOL_URL_ROOT."/expensereport/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('holiday'))) $backtourl=DOL_URL_ROOT."/holiday/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('holiday'))) $backtourl=DOL_URL_ROOT."/holiday/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('project'))) $backtourl=DOL_URL_ROOT."/projet/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('member'))) $backtourl=DOL_URL_ROOT."/adherents/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('user'))) $backtourl=DOL_URL_ROOT."/user/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('project'))) $backtourl=DOL_URL_ROOT."/projet/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('societe'))) $backtourl=DOL_URL_ROOT."/societe/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('societe'))) $backtourl=DOL_URL_ROOT."/societe/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
|
else if (in_array($modulepart, array('ticketsup'))) $backtourl=DOL_URL_ROOT."/ticketsup/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
|
else if (in_array($modulepart, array('user'))) $backtourl=DOL_URL_ROOT."/user/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -229,7 +229,7 @@ if ($permission) {
|
|||||||
</div>
|
</div>
|
||||||
<div class="tagtd nowrap right">
|
<div class="tagtd nowrap right">
|
||||||
<?php if ($permission) { ?>
|
<?php if ($permission) { ?>
|
||||||
<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=deletecontact&lineid='.$tab[$i]['rowid']; ?>"><?php echo img_delete(); ?></a>
|
<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=deletecontact&lineid='.$tab[$i]['rowid']; ?>"><?php echo img_picto($langs->trans('Unlink'), 'unlink'); ?></a>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@ -58,6 +58,37 @@ if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0;
|
|||||||
$colspan = 3; // Col total ht + col edit + col delete
|
$colspan = 3; // Col total ht + col edit + col delete
|
||||||
if (in_array($object->element,array('propal','commande','order','facture','facturerec','invoice','supplier_proposal','order_supplier','invoice_supplier'))) $colspan++; // With this, there is a column move button
|
if (in_array($object->element,array('propal','commande','order','facture','facturerec','invoice','supplier_proposal','order_supplier','invoice_supplier'))) $colspan++; // With this, there is a column move button
|
||||||
//print $object->element;
|
//print $object->element;
|
||||||
|
|
||||||
|
// Lines for extrafield
|
||||||
|
$objectline = null;
|
||||||
|
if (!empty($extrafieldsline))
|
||||||
|
{
|
||||||
|
if ($this->table_element_line=='commandedet') {
|
||||||
|
$objectline = new OrderLine($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='propaldet') {
|
||||||
|
$objectline = new PropaleLigne($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='supplier_proposaldet') {
|
||||||
|
$objectline = new SupplierProposalLine($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='facturedet') {
|
||||||
|
$objectline = new FactureLigne($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='contratdet') {
|
||||||
|
$objectline = new ContratLigne($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='commande_fournisseurdet') {
|
||||||
|
$objectline = new CommandeFournisseurLigne($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='facture_fourn_det') {
|
||||||
|
$objectline = new SupplierInvoiceLine($this->db);
|
||||||
|
}
|
||||||
|
elseif ($this->table_element_line=='facturedet_rec') {
|
||||||
|
$objectline = new FactureLigneRec($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<!-- BEGIN PHP TEMPLATE objectline_create.tpl.php -->
|
<!-- BEGIN PHP TEMPLATE objectline_create.tpl.php -->
|
||||||
@ -384,41 +415,14 @@ else {
|
|||||||
<td class="nobottom linecoledit" align="center" valign="middle" colspan="<?php echo $colspan; ?>">
|
<td class="nobottom linecoledit" align="center" valign="middle" colspan="<?php echo $colspan; ?>">
|
||||||
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline">
|
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline" id="addline">
|
||||||
</td>
|
</td>
|
||||||
<?php
|
|
||||||
// Lines for extrafield
|
|
||||||
if (!empty($extrafieldsline))
|
|
||||||
{
|
|
||||||
if ($this->table_element_line=='commandedet') {
|
|
||||||
$newline = new OrderLine($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='propaldet') {
|
|
||||||
$newline = new PropaleLigne($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='supplier_proposaldet') {
|
|
||||||
$newline = new SupplierProposalLine($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='facturedet') {
|
|
||||||
$newline = new FactureLigne($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='contratdet') {
|
|
||||||
$newline = new ContratLigne($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='commande_fournisseurdet') {
|
|
||||||
$newline = new CommandeFournisseurLigne($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='facture_fourn_det') {
|
|
||||||
$newline = new SupplierInvoiceLine($this->db);
|
|
||||||
}
|
|
||||||
elseif ($this->table_element_line=='facturedet_rec') {
|
|
||||||
$newline = new FactureLigneRec($this->db);
|
|
||||||
}
|
|
||||||
if (is_object($newline)) {
|
|
||||||
print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if (is_object($objectline)) {
|
||||||
|
print $objectline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if ((! empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required
|
if ((! empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required
|
||||||
{
|
{
|
||||||
|
|||||||
@ -240,16 +240,16 @@ $coldisplay=-1; // We remove first td
|
|||||||
<input type="submit" class="button" id="savelinebutton" name="save" value="<?php echo $langs->trans("Save"); ?>"><br>
|
<input type="submit" class="button" id="savelinebutton" name="save" value="<?php echo $langs->trans("Save"); ?>"><br>
|
||||||
<input type="submit" class="button" id="cancellinebutton" name="cancel" value="<?php echo $langs->trans("Cancel"); ?>">
|
<input type="submit" class="button" id="cancellinebutton" name="cancel" value="<?php echo $langs->trans("Cancel"); ?>">
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<?php
|
|
||||||
//Line extrafield
|
|
||||||
if (!empty($extrafieldsline))
|
|
||||||
{
|
|
||||||
print $line->showOptionals($extrafieldsline,'edit',array('style'=>$bc[$var],'colspan'=>$coldisplay));
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
//Line extrafield
|
||||||
|
if (!empty($extrafieldsline))
|
||||||
|
{
|
||||||
|
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bc[$var],'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
<?php if (! empty($conf->service->enabled) && $line->product_type == 1 && $dateSelector) { ?>
|
<?php if (! empty($conf->service->enabled) && $line->product_type == 1 && $dateSelector) { ?>
|
||||||
<tr id="service_duration_area" <?php echo $bc[$var]; ?>>
|
<tr id="service_duration_area" <?php echo $bc[$var]; ?>>
|
||||||
<?php if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { ?>
|
<?php if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { ?>
|
||||||
|
|||||||
@ -154,6 +154,14 @@ if (empty($outputalsopricetotalwithtax)) $outputalsopricetotalwithtax=0;
|
|||||||
print (! empty($line->description) && $line->description!=$line->product_label)?'<br>'.dol_htmlentitiesbr($line->description):'';
|
print (! empty($line->description) && $line->description!=$line->product_label)?'<br>'.dol_htmlentitiesbr($line->description):'';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! empty($conf->accounting->enabled) && $line->fk_accounting_account > 0)
|
||||||
|
{
|
||||||
|
$accountingaccount=new AccountingAccount($this->db);
|
||||||
|
$accountingaccount->fetch($line->fk_accounting_account);
|
||||||
|
echo '<div class="clearboth"></div><br><span class="opacitymedium">' . $langs->trans('AccountingAffectation') . ' : </span>' . $accountingaccount->getNomUrl(0,1,1);
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
<?php
|
<?php
|
||||||
@ -296,13 +304,14 @@ if (empty($outputalsopricetotalwithtax)) $outputalsopricetotalwithtax=0;
|
|||||||
<td colspan="3"><?php $coldisplay=$coldisplay+3; ?></td>
|
<td colspan="3"><?php $coldisplay=$coldisplay+3; ?></td>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
//Line extrafield
|
//Line extrafield
|
||||||
if (!empty($extrafieldsline))
|
if (!empty($extrafieldsline))
|
||||||
{
|
{
|
||||||
print $line->showOptionals($extrafieldsline,'view',array('style'=>$bcdd[$var],'colspan'=>$coldisplay));
|
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bcdd[$var],'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
</tr>
|
|
||||||
<!-- END PHP TEMPLATE objectline_view.tpl.php -->
|
<!-- END PHP TEMPLATE objectline_view.tpl.php -->
|
||||||
|
|||||||
@ -593,7 +593,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
// FROM
|
// FROM
|
||||||
$expediteur = new User($db);
|
$expediteur = new User($db);
|
||||||
$expediteur->fetch($object->fk_user_valid);
|
$expediteur->fetch($object->fk_user_approve > 0 ? $object->fk_user_approve : $object->fk_user_validator);
|
||||||
$emailFrom = $expediteur->email;
|
$emailFrom = $expediteur->email;
|
||||||
|
|
||||||
if ($emailFrom && $emailTo)
|
if ($emailFrom && $emailTo)
|
||||||
|
|||||||
@ -44,7 +44,6 @@ class ExpenseReport extends CommonObject
|
|||||||
|
|
||||||
public $date_fin;
|
public $date_fin;
|
||||||
|
|
||||||
var $fk_user_validator;
|
|
||||||
var $status;
|
var $status;
|
||||||
var $fk_statut; // -- 0=draft, 2=validated (attente approb), 4=canceled, 5=approved, 6=payed, 99=denied
|
var $fk_statut; // -- 0=draft, 2=validated (attente approb), 4=canceled, 5=approved, 6=payed, 99=denied
|
||||||
var $fk_c_paiement;
|
var $fk_c_paiement;
|
||||||
@ -78,14 +77,16 @@ class ExpenseReport extends CommonObject
|
|||||||
var $detail_cancel;
|
var $detail_cancel;
|
||||||
var $fk_user_cancel;
|
var $fk_user_cancel;
|
||||||
|
|
||||||
|
var $fk_user_validator; // User that is defined to approve
|
||||||
|
|
||||||
// Validation
|
// Validation
|
||||||
var $date_valid;
|
var $date_valid; // User making validation
|
||||||
var $fk_user_valid;
|
var $fk_user_valid;
|
||||||
var $user_valid_infos;
|
var $user_valid_infos;
|
||||||
|
|
||||||
// Approve
|
// Approve
|
||||||
var $date_approve;
|
var $date_approve;
|
||||||
var $fk_user_approve;
|
var $fk_user_approve; // User that has approved
|
||||||
|
|
||||||
// Paiement
|
// Paiement
|
||||||
var $user_paid_infos;
|
var $user_paid_infos;
|
||||||
@ -179,6 +180,7 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= ",date_create";
|
$sql.= ",date_create";
|
||||||
$sql.= ",fk_user_author";
|
$sql.= ",fk_user_author";
|
||||||
$sql.= ",fk_user_validator";
|
$sql.= ",fk_user_validator";
|
||||||
|
$sql.= ",fk_user_approve";
|
||||||
$sql.= ",fk_user_modif";
|
$sql.= ",fk_user_modif";
|
||||||
$sql.= ",fk_statut";
|
$sql.= ",fk_statut";
|
||||||
$sql.= ",fk_c_paiement";
|
$sql.= ",fk_c_paiement";
|
||||||
@ -196,6 +198,7 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= ", '".$this->db->idate($now)."'";
|
$sql.= ", '".$this->db->idate($now)."'";
|
||||||
$sql.= ", ".$fuserid;
|
$sql.= ", ".$fuserid;
|
||||||
$sql.= ", ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
$sql.= ", ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
||||||
|
$sql.= ", ".($this->fk_user_approve > 0 ? $this->fk_user_approve:"null");
|
||||||
$sql.= ", ".($this->fk_user_modif > 0 ? $this->fk_user_modif:"null");
|
$sql.= ", ".($this->fk_user_modif > 0 ? $this->fk_user_modif:"null");
|
||||||
$sql.= ", ".($this->fk_statut > 1 ? $this->fk_statut:0);
|
$sql.= ", ".($this->fk_statut > 1 ? $this->fk_statut:0);
|
||||||
$sql.= ", ".($this->modepaymentid?$this->modepaymentid:"null");
|
$sql.= ", ".($this->modepaymentid?$this->modepaymentid:"null");
|
||||||
@ -386,6 +389,7 @@ class ExpenseReport extends CommonObject
|
|||||||
}
|
}
|
||||||
$sql.= " , fk_user_validator = ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
$sql.= " , fk_user_validator = ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
||||||
$sql.= " , fk_user_valid = ".($this->fk_user_valid > 0 ? $this->fk_user_valid:"null");
|
$sql.= " , fk_user_valid = ".($this->fk_user_valid > 0 ? $this->fk_user_valid:"null");
|
||||||
|
$sql.= " , fk_user_approve = ".($this->fk_user_approve > 0 ? $this->fk_user_approve:"null");
|
||||||
$sql.= " , fk_user_modif = ".$user->id;
|
$sql.= " , fk_user_modif = ".$user->id;
|
||||||
$sql.= " , fk_statut = ".($this->fk_statut >= 0 ? $this->fk_statut:'0');
|
$sql.= " , fk_statut = ".($this->fk_statut >= 0 ? $this->fk_statut:'0');
|
||||||
$sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
$sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
||||||
@ -495,7 +499,8 @@ class ExpenseReport extends CommonObject
|
|||||||
$this->user_author_infos = dolGetFirstLastname($user_author->firstname, $user_author->lastname);
|
$this->user_author_infos = dolGetFirstLastname($user_author->firstname, $user_author->lastname);
|
||||||
|
|
||||||
$user_approver = new User($this->db);
|
$user_approver = new User($this->db);
|
||||||
if ($this->fk_user_validator > 0) $user_approver->fetch($this->fk_user_validator);
|
if ($this->fk_user_approve > 0) $user_approver->fetch($this->fk_user_approve);
|
||||||
|
elseif ($this->fk_user_validator > 0) $user_approver->fetch($this->fk_user_validator); // For backward compatibility
|
||||||
$this->user_validator_infos = dolGetFirstLastname($user_approver->firstname, $user_approver->lastname);
|
$this->user_validator_infos = dolGetFirstLastname($user_approver->firstname, $user_approver->lastname);
|
||||||
|
|
||||||
$this->fk_statut = $obj->status;
|
$this->fk_statut = $obj->status;
|
||||||
@ -744,9 +749,9 @@ class ExpenseReport extends CommonObject
|
|||||||
$this->fk_statut = 5;
|
$this->fk_statut = 5;
|
||||||
|
|
||||||
$this->fk_user_author = $user->id;
|
$this->fk_user_author = $user->id;
|
||||||
|
$this->fk_user_validator = $user->id;
|
||||||
$this->fk_user_valid = $user->id;
|
$this->fk_user_valid = $user->id;
|
||||||
$this->fk_user_approve = $user->id;
|
$this->fk_user_approve = $user->id;
|
||||||
$this->fk_user_validator = $user->id;
|
|
||||||
|
|
||||||
$this->note_private='Private note';
|
$this->note_private='Private note';
|
||||||
$this->note_public='SPECIMEN';
|
$this->note_public='SPECIMEN';
|
||||||
|
|||||||
@ -50,6 +50,18 @@ $now=dol_now();
|
|||||||
|
|
||||||
$langs->load("holiday");
|
$langs->load("holiday");
|
||||||
|
|
||||||
|
$childids = $user->getAllChildIds(1);
|
||||||
|
|
||||||
|
$cancreate = 0;
|
||||||
|
if (! empty($user->rights->holiday->write_all)) $cancreate=1;
|
||||||
|
if (! empty($user->rights->holiday->write) && in_array($fuserid, $childids)) $cancreate=1;
|
||||||
|
|
||||||
|
$candelete = 0;
|
||||||
|
if (! empty($user->rights->holiday->delete)) $candelete=1;
|
||||||
|
|
||||||
|
$morefilter = 'AND employee = 1';
|
||||||
|
if (! empty($conf->global->HOLIDAY_FOR_NON_SALARIES_TOO)) $morefilter = '';
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -61,8 +73,7 @@ if ($action == 'create')
|
|||||||
$object = new Holiday($db);
|
$object = new Holiday($db);
|
||||||
|
|
||||||
// If no right to create a request
|
// If no right to create a request
|
||||||
$fuserid = GETPOST('fuserid','int');
|
if (! $cancreate)
|
||||||
if (($fuserid == $user->id && empty($user->rights->holiday->write)) || ($fuserid != $user->id && empty($user->rights->holiday->write_all)))
|
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans('CantCreateCP'), null, 'errors');
|
setEventMessages($langs->trans('CantCreateCP'), null, 'errors');
|
||||||
@ -201,13 +212,11 @@ if ($action == 'update')
|
|||||||
$object = new Holiday($db);
|
$object = new Holiday($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$canedit=(($user->id == $object->fk_user && $user->rights->holiday->write) || ($user->id != $object->fk_user && $user->rights->holiday->write_all));
|
|
||||||
|
|
||||||
// If under validation
|
// If under validation
|
||||||
if ($object->statut == 1)
|
if ($object->statut == 1)
|
||||||
{
|
{
|
||||||
// If this is the requestor or has read/write rights
|
// If this is the requestor or has read/write rights
|
||||||
if ($canedit)
|
if ($cancreate)
|
||||||
{
|
{
|
||||||
$valideur = $_POST['valideur'];
|
$valideur = $_POST['valideur'];
|
||||||
$description = trim($_POST['description']);
|
$description = trim($_POST['description']);
|
||||||
@ -280,13 +289,11 @@ if ($action == 'confirm_delete' && GETPOST('confirm') == 'yes' && $user->rights-
|
|||||||
$object = new Holiday($db);
|
$object = new Holiday($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$canedit=(($user->id == $object->fk_user && $user->rights->holiday->write) || ($user->id != $object->fk_user && $user->rights->holiday->write_all));
|
|
||||||
|
|
||||||
// If this is a rough draft, approved, canceled or refused
|
// If this is a rough draft, approved, canceled or refused
|
||||||
if ($object->statut == 1 || $object->statut == 4 || $object->statut == 5)
|
if ($object->statut == 1 || $object->statut == 4 || $object->statut == 5)
|
||||||
{
|
{
|
||||||
// Si l'utilisateur à le droit de lire cette demande, il peut la supprimer
|
// Si l'utilisateur à le droit de lire cette demande, il peut la supprimer
|
||||||
if ($canedit)
|
if ($candelete)
|
||||||
{
|
{
|
||||||
$result=$object->delete($user);
|
$result=$object->delete($user);
|
||||||
}
|
}
|
||||||
@ -314,10 +321,8 @@ if ($action == 'confirm_send')
|
|||||||
$object = new Holiday($db);
|
$object = new Holiday($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$canedit=(($user->id == $object->fk_user && $user->rights->holiday->write) || ($user->id != $object->fk_user && $user->rights->holiday->write_all));
|
|
||||||
|
|
||||||
// Si brouillon et créateur
|
// Si brouillon et créateur
|
||||||
if($object->statut == 1 && $canedit)
|
if($object->statut == 1 && $cancreate)
|
||||||
{
|
{
|
||||||
$object->statut = 2;
|
$object->statut = 2;
|
||||||
|
|
||||||
@ -615,7 +620,7 @@ if ($action == 'confirm_cancel' && GETPOST('confirm') == 'yes')
|
|||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
// Si statut en attente de validation et valideur = valideur ou utilisateur, ou droits de faire pour les autres
|
// Si statut en attente de validation et valideur = valideur ou utilisateur, ou droits de faire pour les autres
|
||||||
if (($object->statut == 2 || $object->statut == 3) && ($user->id == $object->fk_validator || $user->id == $object->fk_user || ! empty($user->rights->holiday->write_all)))
|
if (($object->statut == 2 || $object->statut == 3) && ($user->id == $object->fk_validator || in_array($object->fk_user, $childids) || ! empty($user->rights->holiday->write_all)))
|
||||||
{
|
{
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
@ -814,21 +819,27 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'" onsubmit="return valider()" name="demandeCP">'."\n";
|
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'" onsubmit="return valider()" name="demandeCP">'."\n";
|
||||||
print '<input type="hidden" name="action" value="create" />'."\n";
|
print '<input type="hidden" name="action" value="create" />'."\n";
|
||||||
|
|
||||||
dol_fiche_head('', '', '', -1);
|
if (empty($conf->global->HOLIDAY_HIDE_BALANCE))
|
||||||
|
{
|
||||||
|
dol_fiche_head('', '', '', -1);
|
||||||
|
|
||||||
$out='';
|
$out='';
|
||||||
$typeleaves=$object->getTypes(1,1);
|
$typeleaves=$object->getTypes(1,1);
|
||||||
foreach($typeleaves as $key => $val)
|
foreach($typeleaves as $key => $val)
|
||||||
{
|
{
|
||||||
$nb_type = $object->getCPforUser($user->id, $val['rowid']);
|
$nb_type = $object->getCPforUser($user->id, $val['rowid']);
|
||||||
$nb_holiday += $nb_type;
|
$nb_holiday += $nb_type;
|
||||||
$out .= ' - '.$val['label'].': <strong>'.($nb_type?price2num($nb_type):0).'</strong><br>';
|
$out .= ' - '.$val['label'].': <strong>'.($nb_type?price2num($nb_type):0).'</strong><br>';
|
||||||
}
|
}
|
||||||
print $langs->trans('SoldeCPUser', round($nb_holiday,5)).'<br>';
|
print $langs->trans('SoldeCPUser', round($nb_holiday,5)).'<br>';
|
||||||
print $out;
|
print $out;
|
||||||
|
|
||||||
dol_fiche_end();
|
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
}
|
||||||
|
elseif(! is_numeric($conf->global->HOLIDAY_HIDE_BALANCE))
|
||||||
|
{
|
||||||
|
print $langs->trans($conf->global->HOLIDAY_HIDE_BALANCE).'<br>';
|
||||||
|
}
|
||||||
|
|
||||||
dol_fiche_head();
|
dol_fiche_head();
|
||||||
|
|
||||||
@ -843,10 +854,10 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
if (empty($user->rights->holiday->write_all))
|
if (empty($user->rights->holiday->write_all))
|
||||||
{
|
{
|
||||||
print $form->select_dolusers($fuserid, 'useridbis', 0, '', 1, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
print $form->select_dolusers(($fuserid?$fuserid:$user->id), 'fuserid', 0, '', 0, 'hierarchyme', '', 0, 0, 0, $morefilter, 0, '', 'maxwidth300');
|
||||||
print '<input type="hidden" name="fuserid" value="'.($fuserid?$fuserid:$user->id).'">';
|
//print '<input type="hidden" name="fuserid" value="'.($fuserid?$fuserid:$user->id).'">';
|
||||||
}
|
}
|
||||||
else print $form->select_dolusers(GETPOST('fuserid','int')?GETPOST('fuserid','int'):$user->id,'fuserid',0,'',0);
|
else print $form->select_dolusers(GETPOST('fuserid','int')?GETPOST('fuserid','int'):$user->id, 'fuserid', 0, '', 0, '', '', 0, 0, 0, $morefilter, 0, '', 'maxwidth300');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -858,11 +869,11 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
$arraytypeleaves=array();
|
$arraytypeleaves=array();
|
||||||
foreach($typeleaves as $key => $val)
|
foreach($typeleaves as $key => $val)
|
||||||
{
|
{
|
||||||
$labeltoshow = $val['label'];
|
$labeltoshow = ($langs->trans($val['code'])!=$val['code'] ? $langs->trans($val['code']) : $val['label']);
|
||||||
$labeltoshow .= ($val['delay'] > 0 ? ' ('.$langs->trans("NoticePeriod").': '.$val['delay'].' '.$langs->trans("days").')':'');
|
$labeltoshow .= ($val['delay'] > 0 ? ' ('.$langs->trans("NoticePeriod").': '.$val['delay'].' '.$langs->trans("days").')':'');
|
||||||
$arraytypeleaves[$val['rowid']]=$labeltoshow;
|
$arraytypeleaves[$val['rowid']]=$labeltoshow;
|
||||||
}
|
}
|
||||||
print $form->selectarray('type', $arraytypeleaves, (GETPOST('type')?GETPOST('type'):''), 1);
|
print $form->selectarray('type', $arraytypeleaves, (GETPOST('type','alpha')?GETPOST('type','alpha'):''), 1);
|
||||||
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
|
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -878,11 +889,11 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
if (! GETPOST('date_debut_')) {
|
if (! GETPOST('date_debut_')) {
|
||||||
$form->select_date(-1, 'date_debut_', 0, 0, 0, '', 1, 1);
|
$form->select_date(-1, 'date_debut_', 0, 0, 0, '', 1, 1);
|
||||||
} else {
|
} else {
|
||||||
$tmpdate = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year'));
|
$tmpdate = dol_mktime(0, 0, 0, GETPOST('date_debut_month','int'), GETPOST('date_debut_day','int'), GETPOST('date_debut_year','int'));
|
||||||
$form->select_date($tmpdate, 'date_debut_', 0, 0, 0, '', 1, 1);
|
$form->select_date($tmpdate, 'date_debut_', 0, 0, 0, '', 1, 1);
|
||||||
}
|
}
|
||||||
print ' ';
|
print ' ';
|
||||||
print $form->selectarray('starthalfday', $listhalfday, (GETPOST('starthalfday')?GETPOST('starthalfday'):'morning'));
|
print $form->selectarray('starthalfday', $listhalfday, (GETPOST('starthalfday','alpha')?GETPOST('starthalfday','alpha'):'morning'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -897,11 +908,11 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
if (! GETPOST('date_fin_')) {
|
if (! GETPOST('date_fin_')) {
|
||||||
$form->select_date(-1,'date_fin_', 0, 0, 0, '', 1, 1);
|
$form->select_date(-1,'date_fin_', 0, 0, 0, '', 1, 1);
|
||||||
} else {
|
} else {
|
||||||
$tmpdate = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year'));
|
$tmpdate = dol_mktime(0, 0, 0, GETPOST('date_fin_month','int'), GETPOST('date_fin_day','int'), GETPOST('date_fin_year','int'));
|
||||||
$form->select_date($tmpdate,'date_fin_', 0, 0, 0, '', 1, 1);
|
$form->select_date($tmpdate,'date_fin_', 0, 0, 0, '', 1, 1);
|
||||||
}
|
}
|
||||||
print ' ';
|
print ' ';
|
||||||
print $form->selectarray('endhalfday', $listhalfday, (GETPOST('endhalfday')?GETPOST('endhalfday'):'afternoon'));
|
print $form->selectarray('endhalfday', $listhalfday, (GETPOST('endhalfday','alpha')?GETPOST('endhalfday','alpha'):'afternoon'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -909,7 +920,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="fieldrequired">'.$langs->trans("ReviewedByCP").'</td>';
|
print '<td class="fieldrequired">'.$langs->trans("ReviewedByCP").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->select_dolusers((GETPOST('valideur')>0?GETPOST('valideur'):$user->fk_user), "valideur", 1, ($user->admin ? '' : array($user->id)), 0, '', 0, 0, 0, 0, '', 0, '', '', 1); // By default, hierarchical parent
|
print $form->select_dolusers((GETPOST('valideur','int')>0?GETPOST('valideur','int'):$user->fk_user), "valideur", 1, ($user->admin ? '' : array($user->id)), 0, '', 0, 0, 0, 0, '', 0, '', '', 1); // By default, hierarchical parent
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -917,7 +928,7 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create
|
|||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("DescCP").'</td>';
|
print '<td>'.$langs->trans("DescCP").'</td>';
|
||||||
print '<td class="tdtop">';
|
print '<td class="tdtop">';
|
||||||
$doleditor = new DolEditor('description', GETPOST('description'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
|
$doleditor = new DolEditor('description', GETPOST('description','none'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
|
||||||
print $doleditor->Create(1);
|
print $doleditor->Create(1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -951,8 +962,6 @@ else
|
|||||||
{
|
{
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$canedit=(($user->id == $object->fk_user && $user->rights->holiday->write) || ($user->id != $object->fk_user && $user->rights->holiday->write_all));
|
|
||||||
|
|
||||||
$valideur = new User($db);
|
$valideur = new User($db);
|
||||||
$valideur->fetch($object->fk_validator);
|
$valideur->fetch($object->fk_validator);
|
||||||
|
|
||||||
@ -999,7 +1008,7 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
// On vérifie si l'utilisateur à le droit de lire cette demande
|
// On vérifie si l'utilisateur à le droit de lire cette demande
|
||||||
if ($canedit)
|
if ($cancreate)
|
||||||
{
|
{
|
||||||
if ($action == 'delete')
|
if ($action == 'delete')
|
||||||
{
|
{
|
||||||
@ -1065,6 +1074,7 @@ else
|
|||||||
print '<table class="border centpercent">';
|
print '<table class="border centpercent">';
|
||||||
print '<tbody>';
|
print '<tbody>';
|
||||||
|
|
||||||
|
// User
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">'.$langs->trans("User").'</td>';
|
print '<td class="titlefield">'.$langs->trans("User").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
@ -1076,7 +1086,8 @@ else
|
|||||||
print '<td>'.$langs->trans("Type").'</td>';
|
print '<td>'.$langs->trans("Type").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$typeleaves=$object->getTypes(1,-1);
|
$typeleaves=$object->getTypes(1,-1);
|
||||||
print empty($typeleaves[$object->fk_type]['label']) ? $langs->trans("TypeWasDisabledOrRemoved",$object->fk_type) : $typeleaves[$object->fk_type]['label'];
|
$labeltoshow = (($typeleaves[$object->fk_type]['code'] && $langs->trans($typeleaves[$object->fk_type]['code'])!=$typeleaves[$object->fk_type]['code']) ? $langs->trans($typeleaves[$object->fk_type]['code']) : $typeleaves[$object->fk_type]['label']);
|
||||||
|
print empty($labeltoshow) ? $langs->trans("TypeWasDisabledOrRemoved",$object->fk_type) : $labeltoshow;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -1086,7 +1097,7 @@ else
|
|||||||
if(!$edit)
|
if(!$edit)
|
||||||
{
|
{
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('DateDebCP').' ('.$langs->trans("FirstDayOfHoliday").')</td>';
|
print '<td class="nowrap">'.$langs->trans('DateDebCP').' ('.$langs->trans("FirstDayOfHoliday").')</td>';
|
||||||
print '<td>'.dol_print_date($object->date_debut,'day');
|
print '<td>'.dol_print_date($object->date_debut,'day');
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<span class="opacitymedium">'.$langs->trans($listhalfday[$starthalfday]).'</span>';
|
print '<span class="opacitymedium">'.$langs->trans($listhalfday[$starthalfday]).'</span>';
|
||||||
@ -1096,7 +1107,7 @@ else
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('DateDebCP').' ('.$langs->trans("FirstDayOfHoliday").')</td>';
|
print '<td class="nowrap">'.$langs->trans('DateDebCP').' ('.$langs->trans("FirstDayOfHoliday").')</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$form->select_date($object->date_debut,'date_debut_');
|
$form->select_date($object->date_debut,'date_debut_');
|
||||||
print ' ';
|
print ' ';
|
||||||
@ -1108,7 +1119,7 @@ else
|
|||||||
if (!$edit)
|
if (!$edit)
|
||||||
{
|
{
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('DateFinCP').' ('.$langs->trans("LastDayOfHoliday").')</td>';
|
print '<td class="nowrap">'.$langs->trans('DateFinCP').' ('.$langs->trans("LastDayOfHoliday").')</td>';
|
||||||
print '<td>'.dol_print_date($object->date_fin,'day');
|
print '<td>'.dol_print_date($object->date_fin,'day');
|
||||||
print ' ';
|
print ' ';
|
||||||
print '<span class="opacitymedium">'.$langs->trans($listhalfday[$endhalfday]).'</span>';
|
print '<span class="opacitymedium">'.$langs->trans($listhalfday[$endhalfday]).'</span>';
|
||||||
@ -1118,7 +1129,7 @@ else
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('DateFinCP').' ('.$langs->trans("LastDayOfHoliday").')</td>';
|
print '<td class="nowrap">'.$langs->trans('DateFinCP').' ('.$langs->trans("LastDayOfHoliday").')</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$form->select_date($object->date_fin,'date_fin_');
|
$form->select_date($object->date_fin,'date_fin_');
|
||||||
print ' ';
|
print ' ';
|
||||||
@ -1126,6 +1137,7 @@ else
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
// Nb of days
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('NbUseDaysCP').'</td>';
|
print '<td>'.$langs->trans('NbUseDaysCP').'</td>';
|
||||||
print '<td>'.num_open_day($object->date_debut_gmt, $object->date_fin_gmt, 0, 1, $object->halfday).'</td>';
|
print '<td>'.num_open_day($object->date_debut_gmt, $object->date_fin_gmt, 0, 1, $object->halfday).'</td>';
|
||||||
@ -1183,11 +1195,14 @@ else
|
|||||||
// Validator
|
// Validator
|
||||||
if (!$edit) {
|
if (!$edit) {
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">'.$langs->trans('ReviewedByCP').'</td>';
|
print '<td class="titlefield">';
|
||||||
|
if ($object->statut == 3 || $object->statut == 4) print $langs->trans('ApprovedBy');
|
||||||
|
else print $langs->trans('ReviewedByCP');
|
||||||
|
print '</td>';
|
||||||
print '<td>'.$valideur->getNomUrl(-1).'</td>';
|
print '<td>'.$valideur->getNomUrl(-1).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
} else {
|
} else {
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td class="titlefield">'.$langs->trans('ReviewedByCP').'</td>';
|
print '<td class="titlefield">'.$langs->trans('ReviewedByCP').'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->select_dolusers($object->fk_validator, "valideur", 1, ($user->admin ? '' : array($user->id))); // By default, hierarchical parent
|
print $form->select_dolusers($object->fk_validator, "valideur", 1, ($user->admin ? '' : array($user->id))); // By default, hierarchical parent
|
||||||
@ -1199,10 +1214,10 @@ else
|
|||||||
print '<td>'.$langs->trans('DateCreateCP').'</td>';
|
print '<td>'.$langs->trans('DateCreateCP').'</td>';
|
||||||
print '<td>'.dol_print_date($object->date_create,'dayhour').'</td>';
|
print '<td>'.dol_print_date($object->date_create,'dayhour').'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
if ($object->statut == 3) {
|
if ($object->statut == 3 || $object->statut == 4) {
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('DateValidCP').'</td>';
|
print '<td>'.$langs->trans('DateValidCP').'</td>';
|
||||||
print '<td>'.dol_print_date($object->date_valid,'dayhour').'</td>';
|
print '<td>'.dol_print_date($object->date_valid,'dayhour').'</td>'; // warning: date_valid is approval date on holiday module
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
if ($object->statut == 4) {
|
if ($object->statut == 4) {
|
||||||
@ -1232,7 +1247,7 @@ else
|
|||||||
if ($action == 'edit' && $object->statut == 1)
|
if ($action == 'edit' && $object->statut == 1)
|
||||||
{
|
{
|
||||||
print '<div align="center">';
|
print '<div align="center">';
|
||||||
if ($canedit && $object->statut == 1)
|
if ($cancreate && $object->statut == 1)
|
||||||
{
|
{
|
||||||
print '<input type="submit" value="'.$langs->trans("Save").'" class="button">';
|
print '<input type="submit" value="'.$langs->trans("Save").'" class="button">';
|
||||||
}
|
}
|
||||||
@ -1247,11 +1262,11 @@ else
|
|||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
// Boutons d'actions
|
// Boutons d'actions
|
||||||
if ($canedit && $object->statut == 1)
|
if ($cancreate && $object->statut == 1)
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit" class="butAction">'.$langs->trans("EditCP").'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit" class="butAction">'.$langs->trans("EditCP").'</a>';
|
||||||
}
|
}
|
||||||
if ($canedit && $object->statut == 1)
|
if ($cancreate && $object->statut == 1) // If draft
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=sendToValidate" class="butAction">'.$langs->trans("Validate").'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=sendToValidate" class="butAction">'.$langs->trans("Validate").'</a>';
|
||||||
}
|
}
|
||||||
@ -1260,7 +1275,7 @@ else
|
|||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete" class="butActionDelete">'.$langs->trans("DeleteCP").'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete" class="butActionDelete">'.$langs->trans("DeleteCP").'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($object->statut == 2)
|
if ($object->statut == 2) // If validated
|
||||||
{
|
{
|
||||||
if ($user->id == $object->fk_validator)
|
if ($user->id == $object->fk_validator)
|
||||||
{
|
{
|
||||||
@ -1274,13 +1289,13 @@ else
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($user->id == $object->fk_validator || $user->id == $object->fk_user || ! empty($user->rights->holiday->write_all)) && ($object->statut == 2 || $object->statut == 3)) // Status validated or approved
|
if (($user->id == $object->fk_validator || in_array($object->fk_user, $childids) || ! empty($user->rights->holiday->write_all)) && ($object->statut == 2 || $object->statut == 3)) // Status validated or approved
|
||||||
{
|
{
|
||||||
if (($object->date_debut > dol_now()) || $user->admin) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=cancel" class="butAction">'.$langs->trans("ActionCancelCP").'</a>';
|
if (($object->date_debut > dol_now()) || $user->admin) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=cancel" class="butAction">'.$langs->trans("ActionCancelCP").'</a>';
|
||||||
else print '<a href="#" class="butActionRefused" title="'.$langs->trans("HolidayStarted").'">'.$langs->trans("ActionCancelCP").'</a>';
|
else print '<a href="#" class="butActionRefused" title="'.$langs->trans("HolidayStarted").'">'.$langs->trans("ActionCancelCP").'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($canedit && $object->statut == 4)
|
if ($cancreate && $object->statut == 4)
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=backtodraft" class="butAction">'.$langs->trans("SetToDraft").'</a>';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=backtodraft" class="butAction">'.$langs->trans("SetToDraft").'</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,7 +50,7 @@ class Holiday extends CommonObject
|
|||||||
var $date_fin=''; // Date end in PHP server TZ
|
var $date_fin=''; // Date end in PHP server TZ
|
||||||
var $date_debut_gmt=''; // Date start in GMT
|
var $date_debut_gmt=''; // Date start in GMT
|
||||||
var $date_fin_gmt=''; // Date end in GMT
|
var $date_fin_gmt=''; // Date end in GMT
|
||||||
var $halfday='';
|
var $halfday=''; // 0:Full days, 2:Start afternoon end morning, -1:Start afternoon end afternoon, 1:Start morning end morning
|
||||||
var $statut=''; // 1=draft, 2=validated, 3=approved
|
var $statut=''; // 1=draft, 2=validated, 3=approved
|
||||||
var $fk_validator;
|
var $fk_validator;
|
||||||
var $date_valid='';
|
var $date_valid='';
|
||||||
@ -957,10 +957,11 @@ class Holiday extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Affiche un select HTML des statuts de congés payés
|
* Affiche un select HTML des statuts de congés payés
|
||||||
*
|
*
|
||||||
* @param int $selected int du statut séléctionné par défaut
|
* @param int $selected Id of preselected status
|
||||||
* @return string affiche le select des statuts
|
* @param string $htmlname Name of HTML select field
|
||||||
|
* @return string Show select of status
|
||||||
*/
|
*/
|
||||||
function selectStatutCP($selected='') {
|
function selectStatutCP($selected='', $htmlname='select_statut') {
|
||||||
|
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
@ -969,7 +970,7 @@ class Holiday extends CommonObject
|
|||||||
$nb = count($name)+1;
|
$nb = count($name)+1;
|
||||||
|
|
||||||
// Select HTML
|
// Select HTML
|
||||||
$statut = '<select name="select_statut" class="flat">'."\n";
|
$statut = '<select name="'.$htmlname.'" class="flat">'."\n";
|
||||||
$statut.= '<option value="-1"> </option>'."\n";
|
$statut.= '<option value="-1"> </option>'."\n";
|
||||||
|
|
||||||
// Boucle des statuts
|
// Boucle des statuts
|
||||||
|
|||||||
@ -286,7 +286,8 @@ else
|
|||||||
{
|
{
|
||||||
foreach($typeleaves as $key => $val)
|
foreach($typeleaves as $key => $val)
|
||||||
{
|
{
|
||||||
print_liste_field_titre($val['label'], $_SERVER["PHP_SELF"], '', '', '', 'align="center"');
|
$labeltype = ($langs->trans($val['code'])!=$val['code']) ? $langs->trans($val['code']) : $langs->trans($val['label']);
|
||||||
|
print_liste_field_titre($labeltype, $_SERVER["PHP_SELF"], '', '', '', 'align="center"');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -48,6 +48,18 @@ $contextpage= GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'myobjectl
|
|||||||
$backtopage = GETPOST('backtopage','alpha'); // Go back to a dedicated page
|
$backtopage = GETPOST('backtopage','alpha'); // Go back to a dedicated page
|
||||||
$optioncss = GETPOST('optioncss','aZ'); // Option for the css output (always '' except when 'print')
|
$optioncss = GETPOST('optioncss','aZ'); // Option for the css output (always '' except when 'print')
|
||||||
|
|
||||||
|
$childis = $user->getAllChildIds(1);
|
||||||
|
|
||||||
|
// Security check
|
||||||
|
$socid=0;
|
||||||
|
if ($user->societe_id > 0) // Protection if external user
|
||||||
|
{
|
||||||
|
//$socid = $user->societe_id;
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
$result = restrictedArea($user, 'holiday', $id, '');
|
||||||
|
$id = GETPOST('id','int');
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
||||||
$sortfield = GETPOST('sortfield','alpha');
|
$sortfield = GETPOST('sortfield','alpha');
|
||||||
@ -71,20 +83,22 @@ $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search
|
|||||||
if (! $sortfield) $sortfield="cp.rowid";
|
if (! $sortfield) $sortfield="cp.rowid";
|
||||||
if (! $sortorder) $sortorder="DESC";
|
if (! $sortorder) $sortorder="DESC";
|
||||||
|
|
||||||
$id = GETPOST('id','int');
|
|
||||||
|
|
||||||
$sall = trim((GETPOST('search_all', 'alphanohtml')!='')?GETPOST('search_all', 'alphanohtml'):GETPOST('sall', 'alphanohtml'));
|
$sall = trim((GETPOST('search_all', 'alphanohtml')!='')?GETPOST('search_all', 'alphanohtml'):GETPOST('sall', 'alphanohtml'));
|
||||||
$search_ref = GETPOST('search_ref');
|
$search_ref = GETPOST('search_ref','alpha');
|
||||||
$month_create = GETPOST('month_create');
|
$search_day_create = GETPOST('search_day_create','int');
|
||||||
$year_create = GETPOST('year_create');
|
$search_month_create = GETPOST('search_month_create','int');
|
||||||
$month_start = GETPOST('month_start');
|
$search_year_create = GETPOST('search_year_create','int');
|
||||||
$year_start = GETPOST('year_start');
|
$search_day_start = GETPOST('search_day_start','int');
|
||||||
$month_end = GETPOST('month_end');
|
$search_month_start = GETPOST('search_month_start','int');
|
||||||
$year_end = GETPOST('year_end');
|
$search_year_start = GETPOST('search_year_start','int');
|
||||||
$search_employee = GETPOST('search_employee');
|
$search_day_end = GETPOST('search_day_end','int');
|
||||||
$search_valideur = GETPOST('search_valideur');
|
$search_month_end = GETPOST('search_month_end','int');
|
||||||
$search_statut = GETPOST('select_statut');
|
$search_year_end = GETPOST('search_year_end','int');
|
||||||
$search_type = GETPOST('search_type','int');
|
$search_employee = GETPOST('search_employee','int');
|
||||||
|
$search_valideur = GETPOST('search_valideur','int');
|
||||||
|
$search_statut = GETPOST('search_statut','int');
|
||||||
|
$search_type = GETPOST('search_type','int');
|
||||||
|
|
||||||
// List of fields to search into when doing a "search in all"
|
// List of fields to search into when doing a "search in all"
|
||||||
$fieldstosearchall = array(
|
$fieldstosearchall = array(
|
||||||
@ -93,6 +107,7 @@ $fieldstosearchall = array(
|
|||||||
'uu.firstname'=>'EmployeeFirstname'
|
'uu.firstname'=>'EmployeeFirstname'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$childids = $user->getAllChildIds(1);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -115,12 +130,12 @@ if (empty($reshook))
|
|||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') ||GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') ||GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
$search_ref="";
|
$search_ref="";
|
||||||
$month_create="";
|
$search_month_create="";
|
||||||
$year_create="";
|
$search_year_create="";
|
||||||
$month_start="";
|
$search_month_start="";
|
||||||
$year_start="";
|
$search_year_start="";
|
||||||
$month_end="";
|
$search_month_end="";
|
||||||
$year_end="";
|
$search_year_end="";
|
||||||
$search_employee="";
|
$search_employee="";
|
||||||
$search_valideur="";
|
$search_valideur="";
|
||||||
$search_statut="";
|
$search_statut="";
|
||||||
@ -157,9 +172,6 @@ $holiday = new Holiday($db);
|
|||||||
$holidaystatic=new Holiday($db);
|
$holidaystatic=new Holiday($db);
|
||||||
$fuser = new User($db);
|
$fuser = new User($db);
|
||||||
|
|
||||||
$childids = $user->getAllChildIds();
|
|
||||||
$childids[]=$user->id;
|
|
||||||
|
|
||||||
// Update sold
|
// Update sold
|
||||||
$result = $holiday->updateBalance();
|
$result = $holiday->updateBalance();
|
||||||
|
|
||||||
@ -178,47 +190,47 @@ if(!empty($search_ref))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start date
|
// Start date
|
||||||
if($year_start > 0) {
|
if($search_year_start > 0) {
|
||||||
if($month_start > 0) {
|
if($search_month_start > 0) {
|
||||||
$filter .= " AND (cp.date_debut BETWEEN '".$db->idate(dol_get_first_day($year_start,$month_start,1))."' AND '".$db->idate(dol_get_last_day($year_start,$month_start,1))."')";
|
$filter .= " AND (cp.date_debut BETWEEN '".$db->idate(dol_get_first_day($search_year_start,$search_month_start,1))."' AND '".$db->idate(dol_get_last_day($search_year_start,$search_month_start,1))."')";
|
||||||
//$filter.= " AND date_format(cp.date_debut, '%Y-%m') = '$year_start-$month_start'";
|
//$filter.= " AND date_format(cp.date_debut, '%Y-%m') = '$search_year_start-$search_month_start'";
|
||||||
} else {
|
} else {
|
||||||
$filter .= " AND (cp.date_debut BETWEEN '".$db->idate(dol_get_first_day($year_start,1,1))."' AND '".$db->idate(dol_get_last_day($year_start,12,1))."')";
|
$filter .= " AND (cp.date_debut BETWEEN '".$db->idate(dol_get_first_day($search_year_start,1,1))."' AND '".$db->idate(dol_get_last_day($search_year_start,12,1))."')";
|
||||||
//$filter.= " AND date_format(cp.date_debut, '%Y') = '$year_start'";
|
//$filter.= " AND date_format(cp.date_debut, '%Y') = '$search_year_start'";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if($month_start > 0) {
|
if($search_month_start > 0) {
|
||||||
$filter.= " AND date_format(cp.date_debut, '%m') = '".$db->escape($month_start)."'";
|
$filter.= " AND date_format(cp.date_debut, '%m') = '".$db->escape($search_month_start)."'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// End date
|
// End date
|
||||||
if($year_end > 0) {
|
if($search_year_end > 0) {
|
||||||
if($month_end > 0) {
|
if($search_month_end > 0) {
|
||||||
$filter .= " AND (cp.date_fin BETWEEN '".$db->idate(dol_get_first_day($year_end,$month_end,1))."' AND '".$db->idate(dol_get_last_day($year_end,$month_end,1))."')";
|
$filter .= " AND (cp.date_fin BETWEEN '".$db->idate(dol_get_first_day($search_year_end,$search_month_end,1))."' AND '".$db->idate(dol_get_last_day($search_year_end,$search_month_end,1))."')";
|
||||||
//$filter.= " AND date_format(cp.date_fin, '%Y-%m') = '$year_end-$month_end'";
|
//$filter.= " AND date_format(cp.date_fin, '%Y-%m') = '$search_year_end-$search_month_end'";
|
||||||
} else {
|
} else {
|
||||||
$filter .= " AND (cp.date_fin BETWEEN '".$db->idate(dol_get_first_day($year_end,1,1))."' AND '".$db->idate(dol_get_last_day($year_end,12,1))."')";
|
$filter .= " AND (cp.date_fin BETWEEN '".$db->idate(dol_get_first_day($search_year_end,1,1))."' AND '".$db->idate(dol_get_last_day($search_year_end,12,1))."')";
|
||||||
//$filter.= " AND date_format(cp.date_fin, '%Y') = '$year_end'";
|
//$filter.= " AND date_format(cp.date_fin, '%Y') = '$search_year_end'";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if($month_end > 0) {
|
if($search_month_end > 0) {
|
||||||
$filter.= " AND date_format(cp.date_fin, '%m') = '".$db->escape($month_end)."'";
|
$filter.= " AND date_format(cp.date_fin, '%m') = '".$db->escape($search_month_end)."'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create date
|
// Create date
|
||||||
if($year_create > 0) {
|
if($search_year_create > 0) {
|
||||||
if($month_create > 0) {
|
if($search_month_create > 0) {
|
||||||
$filter .= " AND (cp.date_create BETWEEN '".$db->idate(dol_get_first_day($year_create,$month_create,1))."' AND '".$db->idate(dol_get_last_day($year_create,$month_create,1))."')";
|
$filter .= " AND (cp.date_create BETWEEN '".$db->idate(dol_get_first_day($search_year_create,$search_month_create,1))."' AND '".$db->idate(dol_get_last_day($search_year_create,$search_month_create,1))."')";
|
||||||
//$filter.= " AND date_format(cp.date_create, '%Y-%m') = '$year_create-$month_create'";
|
//$filter.= " AND date_format(cp.date_create, '%Y-%m') = '$search_year_create-$search_month_create'";
|
||||||
} else {
|
} else {
|
||||||
$filter .= " AND (cp.date_create BETWEEN '".$db->idate(dol_get_first_day($year_create,1,1))."' AND '".$db->idate(dol_get_last_day($year_create,12,1))."')";
|
$filter .= " AND (cp.date_create BETWEEN '".$db->idate(dol_get_first_day($search_year_create,1,1))."' AND '".$db->idate(dol_get_last_day($search_year_create,12,1))."')";
|
||||||
//$filter.= " AND date_format(cp.date_create, '%Y') = '$year_create'";
|
//$filter.= " AND date_format(cp.date_create, '%Y') = '$search_year_create'";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if($month_create > 0) {
|
if($search_month_create > 0) {
|
||||||
$filter.= " AND date_format(cp.date_create, '%m') = '".$db->escape($month_create)."'";
|
$filter.= " AND date_format(cp.date_create, '%m') = '".$db->escape($search_month_create)."'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,9 +301,23 @@ $num = count($holiday->holiday);
|
|||||||
$arrayofselected=is_array($toselect)?$toselect:array();
|
$arrayofselected=is_array($toselect)?$toselect:array();
|
||||||
|
|
||||||
$param='';
|
$param='';
|
||||||
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage;
|
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit;
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||||
if ($optioncss != '') $param.='&optioncss='.$optioncss;
|
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
||||||
|
if ($search_ref) $param.='&search_ref='.urlencode($search_ref);
|
||||||
|
if ($search_day_create) $param.='&search_day_create='.urlencode($search_day_create);
|
||||||
|
if ($search_month_create) $param.='&search_month_create='.urlencode($search_month_create);
|
||||||
|
if ($search_year_create) $param.='&search_year_create='.urlencode($search_year_create);
|
||||||
|
if ($search_search_day_start) $param.='&search_day_start='.urlencode($search_day_start);
|
||||||
|
if ($search_month_start) $param.='&search_month_start='.urlencode($search_month_start);
|
||||||
|
if ($search_year_start) $param.='&search_year_start='.urlencode($search_year_start);
|
||||||
|
if ($search_day_end) $param.='&search_day_end='.urlencode($search_day_end);
|
||||||
|
if ($search_month_end) $param.='&search_month_end='.urlencode($search_month_end);
|
||||||
|
if ($search_year_end) $param.='&search_year_end='.urlencode($search_year_end);
|
||||||
|
if ($search_employee > 0) $param.='&search_employee='.urlencode($search_employee);
|
||||||
|
if ($search_valideur > 0) $param.='&search_valideur='.urlencode($search_valideur);
|
||||||
|
if ($search_type > 0) $param.='&search_type='.urlencode($search_type);
|
||||||
|
if ($search_statut > 0) $param.='&search_statut='.urlencode($search_statut);
|
||||||
|
|
||||||
// List of mass actions available
|
// List of mass actions available
|
||||||
$arrayofmassactions = array(
|
$arrayofmassactions = array(
|
||||||
@ -380,27 +406,39 @@ print '</td>';
|
|||||||
|
|
||||||
// Create date
|
// Create date
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre" align="center">';
|
||||||
print '<input class="flat" type="text" size="1" maxlength="2" name="month_create" value="'.dol_escape_htmltag($month_create).'">';
|
print '<input class="flat" type="text" size="1" maxlength="2" name="search_month_create" value="'.dol_escape_htmltag($search_month_create).'">';
|
||||||
$formother->select_year($year_create,'year_create',1, $min_year, 0);
|
$formother->select_year($search_year_create,'search_year_create',1, $min_year, 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
|
||||||
|
$morefilter = 'AND employee = 1';
|
||||||
|
if (! empty($conf->global->HOLIDAY_FOR_NON_SALARIES_TOO)) $morefilter = '';
|
||||||
|
|
||||||
// User
|
// User
|
||||||
if ($user->rights->holiday->write_all)
|
$disabled=0;
|
||||||
|
// If into the tab holiday of a user ($id is set in such a case)
|
||||||
|
if ($id && ! GETPOSTISSET('search_employee'))
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre maxwidthonsmartphone" align="left">';
|
$search_employee=$id;
|
||||||
print $form->select_dolusers($search_employee,"search_employee",1,"",0,'','',0,0,0,'',0,'','maxwidth200');
|
$disabled=1;
|
||||||
|
}
|
||||||
|
if (! empty($user->rights->holiday->read_all)) // Can see all
|
||||||
|
{
|
||||||
|
if (GETPOSTISSET('search_employee')) $search_employee=GETPOST('search_employee','int');
|
||||||
|
print '<td class="liste_titre maxwidthonsmartphone" align="left">';
|
||||||
|
print $form->select_dolusers($search_employee, "search_employee", 1, "", $disabled, '', '', 0, 0, 0, $morefilter, 0, '', 'maxwidth200');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//print '<td class="liste_titre"> </td>';
|
if (GETPOSTISSET('search_employee')) $search_employee=GETPOST('search_employee','int');
|
||||||
print '<td class="liste_titre maxwidthonsmartphone" align="left">';
|
print '<td class="liste_titre maxwidthonsmartphone" align="left">';
|
||||||
print $form->select_dolusers($user->id,"search_employee",1,"",1,'','',0,0,0,'',0,'','maxwidth200');
|
print $form->select_dolusers($search_employee, "search_employee", 1, "", $disabled, 'hierarchyme', '', 0, 0, 0, $morefilter, 0, '', 'maxwidth200');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Approve
|
// Approve
|
||||||
if($user->rights->holiday->write_all)
|
if ($user->rights->holiday->read_all)
|
||||||
{
|
{
|
||||||
print '<td class="liste_titre maxwidthonsmartphone" align="left">';
|
print '<td class="liste_titre maxwidthonsmartphone" align="left">';
|
||||||
|
|
||||||
@ -409,7 +447,7 @@ if($user->rights->holiday->write_all)
|
|||||||
$valideurobjects = $validator->listUsersForGroup($excludefilter);
|
$valideurobjects = $validator->listUsersForGroup($excludefilter);
|
||||||
$valideurarray = array();
|
$valideurarray = array();
|
||||||
foreach($valideurobjects as $val) $valideurarray[$val->id]=$val->id;
|
foreach($valideurobjects as $val) $valideurarray[$val->id]=$val->id;
|
||||||
print $form->select_dolusers($search_valideur,"search_valideur",1,"",0,$valideurarray,'', 0, 0, 0, '', 0, '', 'maxwidth200');
|
print $form->select_dolusers($search_valideur, "search_valideur", 1, "", 0, $valideurarray, '', 0, 0, 0, $morefilter, 0, '', 'maxwidth200');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -423,7 +461,7 @@ $typeleaves=$holidaystatic->getTypes(1,-1);
|
|||||||
$arraytypeleaves=array();
|
$arraytypeleaves=array();
|
||||||
foreach($typeleaves as $key => $val)
|
foreach($typeleaves as $key => $val)
|
||||||
{
|
{
|
||||||
$labeltoshow = $val['label'];
|
$labeltoshow = ($langs->trans($val['code'])!=$val['code'] ? $langs->trans($val['code']) : $val['label']);
|
||||||
//$labeltoshow .= ($val['delay'] > 0 ? ' ('.$langs->trans("NoticePeriod").': '.$val['delay'].' '.$langs->trans("days").')':'');
|
//$labeltoshow .= ($val['delay'] > 0 ? ' ('.$langs->trans("NoticePeriod").': '.$val['delay'].' '.$langs->trans("days").')':'');
|
||||||
$arraytypeleaves[$val['rowid']]=$labeltoshow;
|
$arraytypeleaves[$val['rowid']]=$labeltoshow;
|
||||||
}
|
}
|
||||||
@ -435,19 +473,19 @@ print '<td class="liste_titre"> </td>';
|
|||||||
|
|
||||||
// Start date
|
// Start date
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre" align="center">';
|
||||||
print '<input class="flat" type="text" size="1" maxlength="2" name="month_start" value="'.dol_escape_htmltag($month_start).'">';
|
print '<input class="flat" type="text" size="1" maxlength="2" name="search_month_start" value="'.dol_escape_htmltag($search_month_start).'">';
|
||||||
$formother->select_year($year_start,'year_start',1, $min_year, $max_year);
|
$formother->select_year($search_year_start,'search_year_start',1, $min_year, $max_year);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// End date
|
// End date
|
||||||
print '<td class="liste_titre" align="center">';
|
print '<td class="liste_titre" align="center">';
|
||||||
print '<input class="flat" type="text" size="1" maxlength="2" name="month_end" value="'.dol_escape_htmltag($month_end).'">';
|
print '<input class="flat" type="text" size="1" maxlength="2" name="search_month_end" value="'.dol_escape_htmltag($search_month_end).'">';
|
||||||
$formother->select_year($year_end,'year_end',1, $min_year, $max_year);
|
$formother->select_year($search_year_end,'search_year_end',1, $min_year, $max_year);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
print '<td class="liste_titre maxwidthonsmartphone maxwidth200" align="right">';
|
print '<td class="liste_titre maxwidthonsmartphone maxwidth200" align="right">';
|
||||||
$holiday->selectStatutCP($search_statut);
|
$holiday->selectStatutCP($search_statut, 'search_statut');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
@ -464,17 +502,25 @@ print_liste_field_titre("DateCreateCP",$_SERVER["PHP_SELF"],"cp.date_create","",
|
|||||||
print_liste_field_titre("Employee",$_SERVER["PHP_SELF"],"cp.fk_user","",$param,'',$sortfield,$sortorder);
|
print_liste_field_titre("Employee",$_SERVER["PHP_SELF"],"cp.fk_user","",$param,'',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("ValidatorCP",$_SERVER["PHP_SELF"],"cp.fk_validator","",$param,'',$sortfield,$sortorder);
|
print_liste_field_titre("ValidatorCP",$_SERVER["PHP_SELF"],"cp.fk_validator","",$param,'',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("Type",$_SERVER["PHP_SELF"],'','',$param,'',$sortfield,$sortorder);
|
print_liste_field_titre("Type",$_SERVER["PHP_SELF"],'','',$param,'',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("Duration",$_SERVER["PHP_SELF"],'','',$pram,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre("NbUseDaysCPShort",$_SERVER["PHP_SELF"],'','',$pram,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("DateDebCP",$_SERVER["PHP_SELF"],"cp.date_debut","",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre("DateDebCP",$_SERVER["PHP_SELF"],"cp.date_debut","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("DateFinCP",$_SERVER["PHP_SELF"],"cp.date_fin","",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre("DateFinCP",$_SERVER["PHP_SELF"],"cp.date_fin","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("Status",$_SERVER["PHP_SELF"],"cp.statut","",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre("Status",$_SERVER["PHP_SELF"],"cp.statut","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n";
|
print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"],"",'',$param,'align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$listhalfday=array('morning'=>$langs->trans("Morning"),"afternoon"=>$langs->trans("Afternoon"));
|
$listhalfday=array('morning'=>$langs->trans("Morning"),"afternoon"=>$langs->trans("Afternoon"));
|
||||||
|
|
||||||
|
|
||||||
|
// If we ask a dedicated card and not allow to see it, we forc on user.
|
||||||
|
if ($id && empty($user->rights->holiday->read_all) && ! in_array($id, $childids))
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
print '<tr class="oddeven opacitymediuem"><td colspan="10">'.$langs->trans("NotEnoughPermissions").'</td></tr>';
|
||||||
|
$result = 0;
|
||||||
|
}
|
||||||
// Lines
|
// Lines
|
||||||
if (! empty($holiday->holiday))
|
elseif (! empty($holiday->holiday))
|
||||||
{
|
{
|
||||||
$userstatic = new User($db);
|
$userstatic = new User($db);
|
||||||
$approbatorstatic = new User($db);
|
$approbatorstatic = new User($db);
|
||||||
@ -510,13 +556,14 @@ if (! empty($holiday->holiday))
|
|||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $holidaystatic->getNomUrl(1);
|
print $holidaystatic->getNomUrl(1, 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td style="text-align: center;">'.dol_print_date($date,'day').'</td>';
|
print '<td style="text-align: center;">'.dol_print_date($date,'day').'</td>';
|
||||||
print '<td>'.$userstatic->getNomUrl(-1, 'leave').'</td>';
|
print '<td>'.$userstatic->getNomUrl(-1, 'leave').'</td>';
|
||||||
print '<td>'.$approbatorstatic->getNomUrl(-1).'</td>';
|
print '<td>'.$approbatorstatic->getNomUrl(-1).'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print empty($typeleaves[$infos_CP['fk_type']]['label']) ? $langs->trans("TypeWasDisabledOrRemoved",$infos_CP['fk_type']) : $typeleaves[$infos_CP['fk_type']]['label'];
|
$labeltypeleavetoshow = ($langs->trans($typeleaves[$infos_CP['fk_type']]['code'])!=$typeleaves[$infos_CP['fk_type']]['code'] ? $langs->trans($typeleaves[$infos_CP['fk_type']]['code']) : $typeleaves[$infos_CP['fk_type']]['label']);
|
||||||
|
print empty($typeleaves[$infos_CP['fk_type']]['label']) ? $langs->trans("TypeWasDisabledOrRemoved",$infos_CP['fk_type']) : $labeltypeleavetoshow;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
$nbopenedday=num_open_day($infos_CP['date_debut_gmt'], $infos_CP['date_fin_gmt'], 0, 1, $infos_CP['halfday']);
|
$nbopenedday=num_open_day($infos_CP['date_debut_gmt'], $infos_CP['date_fin_gmt'], 0, 1, $infos_CP['halfday']);
|
||||||
|
|||||||
198
htdocs/holiday/month_report.php
Normal file
198
htdocs/holiday/month_report.php
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2011 François Legastelois <flegastelois@teclib.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file month_report.php
|
||||||
|
* \ingroup holiday
|
||||||
|
* \brief Monthly report of leave requests.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require('../main.inc.php');
|
||||||
|
require_once(DOL_DOCUMENT_ROOT.'/holiday/class/holiday.class.php');
|
||||||
|
require_once(DOL_DOCUMENT_ROOT.'/user/class/user.class.php');
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
|
||||||
|
$langs->loadLangs(array("holiday"));
|
||||||
|
|
||||||
|
// Security check
|
||||||
|
$socid=0;
|
||||||
|
if ($user->societe_id > 0) // Protection if external user
|
||||||
|
{
|
||||||
|
//$socid = $user->societe_id;
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
$result = restrictedArea($user, 'holiday', $id, '');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$holidaystatic = new Holiday($db);
|
||||||
|
|
||||||
|
$listhalfday=array('morning'=>$langs->trans("Morning"),"afternoon"=>$langs->trans("Afternoon"));
|
||||||
|
|
||||||
|
|
||||||
|
llxHeader('', $langs->trans('CPTitreMenu'));
|
||||||
|
|
||||||
|
print_fiche_titre($langs->trans('MenuReportMonth'));
|
||||||
|
|
||||||
|
$html = new Form($db);
|
||||||
|
$formother = new FormOther($db);
|
||||||
|
|
||||||
|
|
||||||
|
// Selection filter
|
||||||
|
print '<div class="tabBar">';
|
||||||
|
|
||||||
|
print '<form method="POST" action="' . $_SERVER["PHP_SELF"] . '">' . "\n";
|
||||||
|
|
||||||
|
$search_month = GETPOST("remonth",'int')?GETPOST("remonth",'int'):date("m", time());
|
||||||
|
$search_year = GETPOST("reyear",'int')?GETPOST("reyear",'int'):date("Y", time());
|
||||||
|
|
||||||
|
$month_year = sprintf("%02d",$search_month).'-'.sprintf("%04d",$search_year);
|
||||||
|
$year_month = sprintf("%04d",$search_year).'-'.sprintf("%02d",$search_month);
|
||||||
|
|
||||||
|
print $formother->select_month($search_month,'remonth');
|
||||||
|
|
||||||
|
print $formother->select_year($search_year,'reyear');
|
||||||
|
|
||||||
|
print '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Search")).'" />';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
|
||||||
|
$sql = "SELECT cp.rowid, cp.fk_user, cp.date_debut, cp.date_fin, ct.label, cp.description, cp.halfday";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."holiday cp";
|
||||||
|
$sql .= " LEFT JOIN llx_user u ON cp.fk_user = u.rowid";
|
||||||
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_holiday_types ct ON cp.fk_type = ct.rowid";
|
||||||
|
$sql .= " WHERE cp.rowid > 0";
|
||||||
|
$sql .= " AND cp.statut = 3"; // Approved
|
||||||
|
$sql .= " AND (date_format(cp.date_debut, '%Y-%m') = '".$db->escape($year_month)."' OR date_format(cp.date_fin, '%Y-%m') = '".$db->escape($year_month)."')";
|
||||||
|
$sql .= " ORDER BY u.lastname, cp.date_debut";
|
||||||
|
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if (empty($resql))
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive">';
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>' . $langs->trans('Ref') . '</td>';
|
||||||
|
print '<td>' . $langs->trans('Employee') . '</td>';
|
||||||
|
print '<td>' . $langs->trans('Type') . '</td>';
|
||||||
|
print '<td align="center">' . $langs->trans('DateDebCP') . '</td>';
|
||||||
|
print '<td align="center">' . $langs->trans('DateFinCP') . '</td>';
|
||||||
|
print '<td align="right">' . $langs->trans('NbUseDaysCPShort') . '</td>';
|
||||||
|
print '<td align="center">' . $langs->trans('DateStartInMonth') . '</td>';
|
||||||
|
print '<td align="center">' . $langs->trans('DateEndInMonth') . '</td>';
|
||||||
|
print '<td align="right">' . $langs->trans('NbUseDaysCPShortInMonth') . '</td>';
|
||||||
|
print '<td class="maxwidth300">' . $langs->trans('DescCP') . '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
if ($num == 0)
|
||||||
|
{
|
||||||
|
print '<tr><td colspan="6" class="opacitymedium">'.$langs->trans('None').'</td></tr>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ($obj = $db->fetch_object($resql))
|
||||||
|
{
|
||||||
|
$user = new User($db);
|
||||||
|
$user->fetch($obj->fk_user);
|
||||||
|
|
||||||
|
$date_start = $db->jdate($obj->date_debut, true);
|
||||||
|
$date_end = $db->jdate($obj->date_fin, true);
|
||||||
|
|
||||||
|
$tmpstart = dol_getdate($date_start);
|
||||||
|
$tmpend = dol_getdate($date_end);
|
||||||
|
|
||||||
|
$starthalfday=($obj->halfday == -1 || $obj->halfday == 2)?'afternoon':'morning';
|
||||||
|
$endhalfday=($obj->halfday == 1 || $obj->halfday == 2)?'morning':'afternoon';
|
||||||
|
|
||||||
|
$halfdayinmonth = $obj->halfday;
|
||||||
|
$starthalfdayinmonth = $starthalfday;
|
||||||
|
$endhalfdayinmonth = $endhalfday;
|
||||||
|
|
||||||
|
//0:Full days, 2:Start afternoon end morning, -1:Start afternoon end afternoon, 1:Start morning end morning
|
||||||
|
|
||||||
|
// Set date_start_gmt and date_end_gmt that are date to show for the selected month
|
||||||
|
$date_start_inmonth = $db->jdate($obj->date_debut, true);
|
||||||
|
$date_end_inmonth = $db->jdate($obj->date_fin, true);
|
||||||
|
if ($tmpstart['year'] < $search_year || $tmpstart['mon'] < $search_month)
|
||||||
|
{
|
||||||
|
$date_start_inmonth = dol_get_first_day($search_year, $search_month, true);
|
||||||
|
$starthalfdayinmonth = 'morning';
|
||||||
|
if ($halfdayinmonth == 2) $halfdayinmonth=1;
|
||||||
|
if ($halfdayinmonth == -1) $halfdayinmonth=0;
|
||||||
|
}
|
||||||
|
if ($tmpend['year'] > $search_year || $tmpend['mon'] > $search_month)
|
||||||
|
{
|
||||||
|
$date_end_inmonth = dol_get_last_day($search_year, $search_month, true) - ((24 * 3600) - 1);
|
||||||
|
$endhalfdayinmonth = 'afternoon';
|
||||||
|
if ($halfdayinmonth == 2) $halfdayinmonth=-1;
|
||||||
|
if ($halfdayinmonth == 1) $halfdayinmonth=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Leave request
|
||||||
|
$holidaystatic->id=$obj->rowid;
|
||||||
|
$holidaystatic->ref=$obj->rowid;
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>';
|
||||||
|
print $holidaystatic->getNomUrl(1, 1);
|
||||||
|
print '</td>';
|
||||||
|
print '<td>' . $user->getFullName($langs) . '</td>';
|
||||||
|
print '<td>' . $obj->label . '</td>';
|
||||||
|
print '<td align="center">' . dol_print_date($obj->date_debut, 'day');
|
||||||
|
print ' <span class="opacitymedium">('.$langs->trans($listhalfday[$starthalfday]).')</span>';
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="center">' . dol_print_date($obj->date_fin, 'day');
|
||||||
|
print ' <span class="opacitymedium">('.$langs->trans($listhalfday[$endhalfday]).')</span>';
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="right">' . num_open_day($date_start, $date_end, 0, 1, $obj->halfday) . '</td>';
|
||||||
|
print '<td align="center">' . dol_print_date($date_start_inmonth, 'day');
|
||||||
|
print ' <span class="opacitymedium">('.$langs->trans($listhalfday[$starthalfdayinmonth]).')</span>';
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="center">' . dol_print_date($date_end_inmonth, 'day');
|
||||||
|
print ' <span class="opacitymedium">('.$langs->trans($listhalfday[$endhalfdayinmonth]).')</span>';
|
||||||
|
print '</td>';
|
||||||
|
print '<td align="right">' . num_open_day($date_start_inmonth, $date_end_inmonth, 0, 1, $halfdayinmonth) . '</td>';
|
||||||
|
print '<td class="maxwidth300">' . dol_escape_htmltag(dolGetFirstLineOfText($obj->description)) . '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
// Fin de page
|
||||||
|
$db->close();
|
||||||
|
llxFooter();
|
||||||
@ -117,7 +117,7 @@ foreach($cp->logs as $logs_CP)
|
|||||||
print '<td>'.$user_update->getNomUrl(-1).'</td>';
|
print '<td>'.$user_update->getNomUrl(-1).'</td>';
|
||||||
print '<td>'.$logs_CP['type_action'].'</td>';
|
print '<td>'.$logs_CP['type_action'].'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$label=$alltypeleaves[$logs_CP['fk_type']]['label'];
|
$label = (($alltypeleaves[$logs_CP['fk_type']]['code'] && $langs->trans($alltypeleaves[$logs_CP['fk_type']]['code'])!=$alltypeleaves[$logs_CP['fk_type']]['code']) ? $langs->trans($alltypeleaves[$logs_CP['fk_type']]['code']) : $alltypeleaves[$logs_CP['fk_type']]['label']);
|
||||||
print $label?$label:$logs_CP['fk_type'];
|
print $label?$label:$logs_CP['fk_type'];
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td style="text-align: right;">'.price2num($logs_CP['prev_solde'],5).' '.$langs->trans('days').'</td>';
|
print '<td style="text-align: right;">'.price2num($logs_CP['prev_solde'],5).' '.$langs->trans('days').'</td>';
|
||||||
|
|||||||
@ -130,27 +130,34 @@ if (! empty($conf->global->MAIN_SEARCH_FORM_ON_HOME_AREAS)) // This is usele
|
|||||||
|
|
||||||
if (! empty($conf->holiday->enabled))
|
if (! empty($conf->holiday->enabled))
|
||||||
{
|
{
|
||||||
$user_id = $user->id;
|
if (empty($conf->global->HOLIDAY_HIDE_BALANCE))
|
||||||
|
{
|
||||||
|
$user_id = $user->id;
|
||||||
|
|
||||||
print '<table class="noborder nohover" width="100%">';
|
print '<table class="noborder nohover" width="100%">';
|
||||||
print '<tr class="liste_titre"><th colspan="3">'.$langs->trans("Holidays").'</th></tr>';
|
print '<tr class="liste_titre"><th colspan="3">'.$langs->trans("Holidays").'</th></tr>';
|
||||||
print "<tr ".$bc[0].">";
|
print "<tr ".$bc[0].">";
|
||||||
print '<td colspan="3">';
|
print '<td colspan="3">';
|
||||||
|
|
||||||
$out='';
|
$out='';
|
||||||
$typeleaves=$holiday->getTypes(1,1);
|
$typeleaves=$holiday->getTypes(1,1);
|
||||||
foreach($typeleaves as $key => $val)
|
foreach($typeleaves as $key => $val)
|
||||||
{
|
{
|
||||||
$nb_type = $holiday->getCPforUser($user->id, $val['rowid']);
|
$nb_type = $holiday->getCPforUser($user->id, $val['rowid']);
|
||||||
$nb_holiday += $nb_type;
|
$nb_holiday += $nb_type;
|
||||||
$out .= ' - '.$val['label'].': <strong>'.($nb_type?price2num($nb_type):0).'</strong><br>';
|
$out .= ' - '.$val['label'].': <strong>'.($nb_type?price2num($nb_type):0).'</strong><br>';
|
||||||
}
|
}
|
||||||
print $langs->trans('SoldeCPUser', round($nb_holiday,5)).'<br>';
|
print $langs->trans('SoldeCPUser', round($nb_holiday,5)).'<br>';
|
||||||
print $out;
|
print $out;
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
print '</table><br>';
|
print '</table><br>';
|
||||||
|
}
|
||||||
|
elseif (! is_numeric($conf->global->HOLIDAY_HIDE_BALANCE))
|
||||||
|
{
|
||||||
|
print $langs->trans($conf->global->HOLIDAY_HIDE_BALANCE).'<br>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -189,6 +189,8 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i',$action))
|
|||||||
else
|
else
|
||||||
dolibarr_set_const($db, "MAIN_SECURITY_HASH_ALGO", 'sha1md5', 'chaine', 0, '', 0); // All entities
|
dolibarr_set_const($db, "MAIN_SECURITY_HASH_ALGO", 'sha1md5', 'chaine', 0, '', 0); // All entities
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dolibarr_install_syslog('step5: DATABASE_PWD_ENCRYPTED = '.$conf->global->DATABASE_PWD_ENCRYPTED.' MAIN_SECURITY_HASH_ALGO = '.$conf->global->MAIN_SECURITY_HASH_ALGO, LOG_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create user used to create the admin user
|
// Create user used to create the admin user
|
||||||
|
|||||||
@ -149,7 +149,6 @@ ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold servi
|
|||||||
Doctype=Type of document
|
Doctype=Type of document
|
||||||
Docdate=Date
|
Docdate=Date
|
||||||
Docref=Reference
|
Docref=Reference
|
||||||
Code_tiers=Thirdparty
|
|
||||||
LabelAccount=Label account
|
LabelAccount=Label account
|
||||||
LabelOperation=Label operation
|
LabelOperation=Label operation
|
||||||
Sens=Sens
|
Sens=Sens
|
||||||
@ -180,7 +179,7 @@ ProductAccountNotDefined=Account for product not defined
|
|||||||
FeeAccountNotDefined=Account for fee not defined
|
FeeAccountNotDefined=Account for fee not defined
|
||||||
BankAccountNotDefined=Account for bank not defined
|
BankAccountNotDefined=Account for bank not defined
|
||||||
CustomerInvoicePayment=Payment of invoice customer
|
CustomerInvoicePayment=Payment of invoice customer
|
||||||
ThirdPartyAccount=Thirdparty account
|
ThirdPartyAccount=Third party account
|
||||||
NewAccountingMvt=New transaction
|
NewAccountingMvt=New transaction
|
||||||
NumMvts=Numero of transaction
|
NumMvts=Numero of transaction
|
||||||
ListeMvts=List of movements
|
ListeMvts=List of movements
|
||||||
|
|||||||
@ -837,11 +837,11 @@ Permission1251=Run mass imports of external data into database (data load)
|
|||||||
Permission1321=Export customer invoices, attributes and payments
|
Permission1321=Export customer invoices, attributes and payments
|
||||||
Permission1322=Reopen a paid bill
|
Permission1322=Reopen a paid bill
|
||||||
Permission1421=Export customer orders and attributes
|
Permission1421=Export customer orders and attributes
|
||||||
Permission20001=Read leave requests (yours and your subordinates)
|
Permission20001=Read leave requests (your leaves and the one of your subordinates)
|
||||||
Permission20002=Create/modify your leave requests
|
Permission20002=Create/modify your leave requests (yours leaves and the one of your subordinates)
|
||||||
Permission20003=Delete leave requests
|
Permission20003=Delete leave requests
|
||||||
Permission20004=Read all leave requests (even user not subordinates)
|
Permission20004=Read all leave requests (even of user not subordinates)
|
||||||
Permission20005=Create/modify leave requests for everybody
|
Permission20005=Create/modify leave requests for everybody (even of user not subordinates)
|
||||||
Permission20006=Admin leave requests (setup and update balance)
|
Permission20006=Admin leave requests (setup and update balance)
|
||||||
Permission23001=Read Scheduled job
|
Permission23001=Read Scheduled job
|
||||||
Permission23002=Create/update Scheduled job
|
Permission23002=Create/update Scheduled job
|
||||||
@ -1054,6 +1054,7 @@ AreaForAdminOnly=Setup parameters can be set by <b>administrator users</b> only.
|
|||||||
SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only.
|
SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only.
|
||||||
SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit.
|
SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit.
|
||||||
CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" or "Save" button at bottom of page)
|
CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" or "Save" button at bottom of page)
|
||||||
|
AccountantDesc=Edit on this page all known information of your accountant/auditor to manage (For this, click on "Modify" or "Save" button at bottom of page)
|
||||||
DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here
|
DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here
|
||||||
AvailableModules=Available app/modules
|
AvailableModules=Available app/modules
|
||||||
ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules).
|
ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules).
|
||||||
|
|||||||
@ -389,8 +389,8 @@ NoDolibarrAccess=No Dolibarr access
|
|||||||
ExportDataset_company_1=Third parties (Companies / foundations / physical people) and properties
|
ExportDataset_company_1=Third parties (Companies / foundations / physical people) and properties
|
||||||
ExportDataset_company_2=Contacts and properties
|
ExportDataset_company_2=Contacts and properties
|
||||||
ImportDataset_company_1=Third parties (Companies / foundations / physical people) and properties
|
ImportDataset_company_1=Third parties (Companies / foundations / physical people) and properties
|
||||||
ImportDataset_company_2=Contacts/Addresses (of thirdparties or not) and attributes
|
ImportDataset_company_2=Contacts/Addresses (of third parties or not) and attributes
|
||||||
ImportDataset_company_3=Bank accounts of thirdparties
|
ImportDataset_company_3=Bank accounts of third parties
|
||||||
ImportDataset_company_4=Third parties/Sales representatives (Assign sales representatives users to companies)
|
ImportDataset_company_4=Third parties/Sales representatives (Assign sales representatives users to companies)
|
||||||
PriceLevel=Price level
|
PriceLevel=Price level
|
||||||
DeliveryAddress=Delivery address
|
DeliveryAddress=Delivery address
|
||||||
@ -425,9 +425,9 @@ ManagingDirectors=Manager(s) name (CEO, director, president...)
|
|||||||
MergeOriginThirdparty=Duplicate third party (third party you want to delete)
|
MergeOriginThirdparty=Duplicate third party (third party you want to delete)
|
||||||
MergeThirdparties=Merge third parties
|
MergeThirdparties=Merge third parties
|
||||||
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one? All linked objects (invoices, orders, ...) will be moved to current third party, then the thirdparty will be deleted.
|
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one? All linked objects (invoices, orders, ...) will be moved to current third party, then the thirdparty will be deleted.
|
||||||
ThirdpartiesMergeSuccess=Thirdparties have been merged
|
ThirdpartiesMergeSuccess=Third parties have been merged
|
||||||
SaleRepresentativeLogin=Login of sales representative
|
SaleRepresentativeLogin=Login of sales representative
|
||||||
SaleRepresentativeFirstname=First name of sales representative
|
SaleRepresentativeFirstname=First name of sales representative
|
||||||
SaleRepresentativeLastname=Last name of sales representative
|
SaleRepresentativeLastname=Last name of sales representative
|
||||||
ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted.
|
ErrorThirdpartiesMerge=There was an error when deleting the third parties. Please check the log. Changes have been reverted.
|
||||||
NewCustomerSupplierCodeProposed=New customer or supplier code suggested on duplicate code
|
NewCustomerSupplierCodeProposed=New customer or supplier code suggested on duplicate code
|
||||||
|
|||||||
@ -237,3 +237,4 @@ ErrorBankAccountNotFound=Error: Bank account not found
|
|||||||
FiscalPeriod=Accounting period
|
FiscalPeriod=Accounting period
|
||||||
ListSocialContributionAssociatedProject=List of social contributions associated with the project
|
ListSocialContributionAssociatedProject=List of social contributions associated with the project
|
||||||
DeleteFromCat=Remove from accounting group
|
DeleteFromCat=Remove from accounting group
|
||||||
|
AccountingAffectation=Accounting assignement
|
||||||
|
|||||||
@ -39,6 +39,10 @@ TypeOfLeaveId=Type of leave ID
|
|||||||
TypeOfLeaveCode=Type of leave code
|
TypeOfLeaveCode=Type of leave code
|
||||||
TypeOfLeaveLabel=Type of leave label
|
TypeOfLeaveLabel=Type of leave label
|
||||||
NbUseDaysCP=Number of days of vacation consumed
|
NbUseDaysCP=Number of days of vacation consumed
|
||||||
|
NbUseDaysCPShort=Days consumed
|
||||||
|
NbUseDaysCPShortInMonth=Days consumed in month
|
||||||
|
DateStartInMonth=Start date in month
|
||||||
|
DateEndInMonth=End date in month
|
||||||
EditCP=Edit
|
EditCP=Edit
|
||||||
DeleteCP=Delete
|
DeleteCP=Delete
|
||||||
ActionRefuseCP=Refuse
|
ActionRefuseCP=Refuse
|
||||||
@ -67,6 +71,7 @@ DateRefusCP=Date of refusal
|
|||||||
DateCancelCP=Date of cancellation
|
DateCancelCP=Date of cancellation
|
||||||
DefineEventUserCP=Assign an exceptional leave for a user
|
DefineEventUserCP=Assign an exceptional leave for a user
|
||||||
addEventToUserCP=Assign leave
|
addEventToUserCP=Assign leave
|
||||||
|
NotTheAssignedApprover=You are not the assigned approver
|
||||||
MotifCP=Reason
|
MotifCP=Reason
|
||||||
UserCP=User
|
UserCP=User
|
||||||
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
|
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
|
||||||
@ -91,7 +96,10 @@ LastHolidays=Latest %s leave requests
|
|||||||
AllHolidays=All leave requests
|
AllHolidays=All leave requests
|
||||||
HalfDay=Half day
|
HalfDay=Half day
|
||||||
NotTheAssignedApprover=You are not the assigned approver
|
NotTheAssignedApprover=You are not the assigned approver
|
||||||
|
LEAVE_PAID=Paid vacation
|
||||||
|
LEAVE_SICK=Sick leave
|
||||||
|
LEAVE_OTHER=Other leave
|
||||||
|
LEAVE_PAID_FR=Paid vacation
|
||||||
## Configuration du Module ##
|
## Configuration du Module ##
|
||||||
LastUpdateCP=Latest automatic update of leaves allocation
|
LastUpdateCP=Latest automatic update of leaves allocation
|
||||||
MonthOfLastMonthlyUpdate=Month of latest automatic update of leaves allocation
|
MonthOfLastMonthlyUpdate=Month of latest automatic update of leaves allocation
|
||||||
|
|||||||
@ -135,7 +135,7 @@ NbOfTargetedContacts=Current number of targeted contact emails
|
|||||||
UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;firstname;other</strong>
|
UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;firstname;other</strong>
|
||||||
UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong>
|
UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong>
|
||||||
MailAdvTargetRecipients=Recipients (advanced selection)
|
MailAdvTargetRecipients=Recipients (advanced selection)
|
||||||
AdvTgtTitle=Fill input fields to preselect the thirdparties or contacts/addresses to target
|
AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target
|
||||||
AdvTgtSearchTextHelp=Use %% as magic caracters. For exemple to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For exemple <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everythnig taht start by jima
|
AdvTgtSearchTextHelp=Use %% as magic caracters. For exemple to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For exemple <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everythnig taht start by jima
|
||||||
AdvTgtSearchIntHelp=Use interval to select int or float value
|
AdvTgtSearchIntHelp=Use interval to select int or float value
|
||||||
AdvTgtMinVal=Minimum value
|
AdvTgtMinVal=Minimum value
|
||||||
|
|||||||
@ -185,6 +185,7 @@ ToLink=Link
|
|||||||
Select=Select
|
Select=Select
|
||||||
Choose=Choose
|
Choose=Choose
|
||||||
Resize=Resize
|
Resize=Resize
|
||||||
|
ResizeOrCrop=Resize or Crop
|
||||||
Recenter=Recenter
|
Recenter=Recenter
|
||||||
Author=Author
|
Author=Author
|
||||||
User=User
|
User=User
|
||||||
@ -426,6 +427,7 @@ ActionDoneShort=Finished
|
|||||||
ActionUncomplete=Uncomplete
|
ActionUncomplete=Uncomplete
|
||||||
LatestLinkedEvents=Latest %s linked events
|
LatestLinkedEvents=Latest %s linked events
|
||||||
CompanyFoundation=Company/Organization
|
CompanyFoundation=Company/Organization
|
||||||
|
Accountant=Accountant
|
||||||
ContactsForCompany=Contacts for this third party
|
ContactsForCompany=Contacts for this third party
|
||||||
ContactsAddressesForCompany=Contacts/addresses for this third party
|
ContactsAddressesForCompany=Contacts/addresses for this third party
|
||||||
AddressesForCompany=Addresses for this third party
|
AddressesForCompany=Addresses for this third party
|
||||||
@ -904,7 +906,7 @@ Select2MoreCharacters=or more characters
|
|||||||
Select2MoreCharactersMore=<strong>Search syntax:</strong><br><kbd><strong> |</strong></kbd><kbd> OR</kbd> (a|b)<br><kbd><strong>*</strong></kbd><kbd> Any character</kbd> (a*b)<br><kbd><strong>^</strong></kbd><kbd> Start with</kbd> (^ab)<br><kbd><strong>$</strong></kbd><kbd> End with</kbd> (ab$)<br>
|
Select2MoreCharactersMore=<strong>Search syntax:</strong><br><kbd><strong> |</strong></kbd><kbd> OR</kbd> (a|b)<br><kbd><strong>*</strong></kbd><kbd> Any character</kbd> (a*b)<br><kbd><strong>^</strong></kbd><kbd> Start with</kbd> (^ab)<br><kbd><strong>$</strong></kbd><kbd> End with</kbd> (ab$)<br>
|
||||||
Select2LoadingMoreResults=Loading more results...
|
Select2LoadingMoreResults=Loading more results...
|
||||||
Select2SearchInProgress=Search in progress...
|
Select2SearchInProgress=Search in progress...
|
||||||
SearchIntoThirdparties=Thirdparties
|
SearchIntoThirdparties=Third parties
|
||||||
SearchIntoContacts=Contacts
|
SearchIntoContacts=Contacts
|
||||||
SearchIntoMembers=Members
|
SearchIntoMembers=Members
|
||||||
SearchIntoUsers=Users
|
SearchIntoUsers=Users
|
||||||
|
|||||||
@ -41,4 +41,4 @@ rateMustBeNumeric=Rate must be a numeric value
|
|||||||
markRateShouldBeLesserThan100=Mark rate should be lower than 100
|
markRateShouldBeLesserThan100=Mark rate should be lower than 100
|
||||||
ShowMarginInfos=Show margin infos
|
ShowMarginInfos=Show margin infos
|
||||||
CheckMargins=Margins detail
|
CheckMargins=Margins detail
|
||||||
MarginPerSaleRepresentativeWarning=The report of margin per user use the link between thirdparties and sale representatives to calculate the margin of each salerepresentaive. Because some thirdparties may not have any ddiated sale representative and some thirdparties may be linked to several, some amounts may not be included into this report (if there is no sale representative) and some may appear on different lines (for each sale representative).
|
MarginPerSaleRepresentativeWarning=The report of margin per user use the link between third parties and sale representatives to calculate the margin of each salerepresentaive. Because some thirdparties may not have any ddiated sale representative and some thirdparties may be linked to several, some amounts may not be included into this report (if there is no sale representative) and some may appear on different lines (for each sale representative).
|
||||||
|
|||||||
@ -39,7 +39,7 @@ STRIPE_TEST_WEBHOOK_KEY=Webhook test key
|
|||||||
STRIPE_LIVE_SECRET_KEY=Secret live key
|
STRIPE_LIVE_SECRET_KEY=Secret live key
|
||||||
STRIPE_LIVE_PUBLISHABLE_KEY=Publishable live key
|
STRIPE_LIVE_PUBLISHABLE_KEY=Publishable live key
|
||||||
STRIPE_LIVE_WEBHOOK_KEY=Webhook live key
|
STRIPE_LIVE_WEBHOOK_KEY=Webhook live key
|
||||||
ONLINE_PAYMENT_WAREHOUSE=Stock to use for stock decrease when payment online payment is done<br>(TODO When option to decrease stock is done on an action on invoice and the online payment generate itself the invoice ?)
|
ONLINE_PAYMENT_WAREHOUSE=Stock to use for stock decrease when online payment is done<br>(TODO When option to decrease stock is done on an action on invoice and the online payment generate itself the invoice ?)
|
||||||
StripeLiveEnabled=Stripe live enabled (otherwise test/sandbox mode)
|
StripeLiveEnabled=Stripe live enabled (otherwise test/sandbox mode)
|
||||||
StripeImportPayment=Import Stripe payments
|
StripeImportPayment=Import Stripe payments
|
||||||
ExampleOfTestCreditCard=Example of credit card for test: %s (valid), %s (error CVC), %s (expired), %s (charge fails)
|
ExampleOfTestCreditCard=Example of credit card for test: %s (valid), %s (error CVC), %s (expired), %s (charge fails)
|
||||||
|
|||||||
@ -25,7 +25,7 @@ Permission56001=See tickets
|
|||||||
Permission56002=Modify tickets
|
Permission56002=Modify tickets
|
||||||
Permission56003=Delete tickets
|
Permission56003=Delete tickets
|
||||||
Permission56004=Manage tickets
|
Permission56004=Manage tickets
|
||||||
Permission56005=See tickets of all thirdparties (not effective for external users, always be limited to the thirdparty they depend on)
|
Permission56005=See tickets of all third parties (not effective for external users, always be limited to the thirdparty they depend on)
|
||||||
|
|
||||||
TicketsupDictType=Tickets type
|
TicketsupDictType=Tickets type
|
||||||
TicketsupDictCategory=Tickets categories
|
TicketsupDictCategory=Tickets categories
|
||||||
|
|||||||
@ -21,17 +21,17 @@ ListToApprove=Waiting for approval
|
|||||||
ExpensesArea=Expense reports area
|
ExpensesArea=Expense reports area
|
||||||
ClassifyRefunded=Classify 'Refunded'
|
ClassifyRefunded=Classify 'Refunded'
|
||||||
ExpenseReportWaitingForApproval=A new expense report has been submitted for approval
|
ExpenseReportWaitingForApproval=A new expense report has been submitted for approval
|
||||||
ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n - User: %s\n - Period: %s\nClick here to validate: %s
|
ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.<br> - User: %s<br> - Period: %s<br>Click here to validate: %s
|
||||||
ExpenseReportWaitingForReApproval=An expense report has been submitted for re-approval
|
ExpenseReportWaitingForReApproval=An expense report has been submitted for re-approval
|
||||||
ExpenseReportWaitingForReApprovalMessage=An expense report has been submitted and is waiting for re-approval.\nThe %s, you refused to approve the expense report for this reason: %s.\nA new version has been proposed and waiting for your approval.\n - User: %s\n - Period: %s\nClick here to validate: %s
|
ExpenseReportWaitingForReApprovalMessage=An expense report has been submitted and is waiting for re-approval.<br>The %s, you refused to approve the expense report for this reason: %s.<br>A new version has been proposed and waiting for your approval.<br> - User: %s<br> - Period: %s<br>Click here to validate: %s
|
||||||
ExpenseReportApproved=An expense report was approved
|
ExpenseReportApproved=An expense report was approved
|
||||||
ExpenseReportApprovedMessage=The expense report %s was approved.\n - User: %s\n - Approved by: %s\nClick here to show the expense report: %s
|
ExpenseReportApprovedMessage=The expense report %s was approved.<br> - User: %s<br> - Approved by: %s<br>Click here to show the expense report: %s
|
||||||
ExpenseReportRefused=An expense report was refused
|
ExpenseReportRefused=An expense report was refused
|
||||||
ExpenseReportRefusedMessage=The expense report %s was refused.\n - User: %s\n - Refused by: %s\n - Motive for refusal: %s\nClick here to show the expense report: %s
|
ExpenseReportRefusedMessage=The expense report %s was refused.<br> - User: %s<br> - Refused by: %s<br> - Motive for refusal: %s<br>Click here to show the expense report: %s
|
||||||
ExpenseReportCanceled=An expense report was canceled
|
ExpenseReportCanceled=An expense report was canceled
|
||||||
ExpenseReportCanceledMessage=The expense report %s was canceled.\n - User: %s\n - Canceled by: %s\n - Motive for cancellation: %s\nClick here to show the expense report: %s
|
ExpenseReportCanceledMessage=The expense report %s was canceled.<br> - User: %s<br> - Canceled by: %s<br> - Motive for cancellation: %s<br>Click here to show the expense report: %s
|
||||||
ExpenseReportPaid=An expense report was paid
|
ExpenseReportPaid=An expense report was paid
|
||||||
ExpenseReportPaidMessage=The expense report %s was paid.\n - User: %s\n - Paid by: %s\nClick here to show the expense report: %s
|
ExpenseReportPaidMessage=The expense report %s was paid.<br> - User: %s<br> - Paid by: %s<br>Click here to show the expense report: %s
|
||||||
TripId=Id expense report
|
TripId=Id expense report
|
||||||
AnyOtherInThisListCanValidate=Person to inform for validation.
|
AnyOtherInThisListCanValidate=Person to inform for validation.
|
||||||
TripSociete=Information company
|
TripSociete=Information company
|
||||||
|
|||||||
@ -31,6 +31,10 @@ InfosWorkflowCP=Informations du workflow
|
|||||||
RequestByCP=Demandée par
|
RequestByCP=Demandée par
|
||||||
TitreRequestCP=Demande de congés
|
TitreRequestCP=Demande de congés
|
||||||
NbUseDaysCP=Nombre de jours de congés consommés
|
NbUseDaysCP=Nombre de jours de congés consommés
|
||||||
|
NbUseDaysCPShort=Jours consommés
|
||||||
|
NbUseDaysCPShortInMonth=Jours consommés dans le mois
|
||||||
|
DateStartInMonth=Start date in month
|
||||||
|
DateEndInMonth=End date in month
|
||||||
EditCP=Modifier
|
EditCP=Modifier
|
||||||
DeleteCP=Supprimer
|
DeleteCP=Supprimer
|
||||||
ActionRefuseCP=Refuser
|
ActionRefuseCP=Refuser
|
||||||
|
|||||||
@ -98,14 +98,14 @@ $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search
|
|||||||
if (! $sortfield) $sortfield="t.".key($object->fields); // Set here default search field. By default 1st field in definition.
|
if (! $sortfield) $sortfield="t.".key($object->fields); // Set here default search field. By default 1st field in definition.
|
||||||
if (! $sortorder) $sortorder="ASC";
|
if (! $sortorder) $sortorder="ASC";
|
||||||
|
|
||||||
// Protection if external user
|
// Security check
|
||||||
$socid=0;
|
$socid=0;
|
||||||
if ($user->societe_id > 0)
|
if ($user->societe_id > 0) // Protection if external user
|
||||||
{
|
{
|
||||||
//$socid = $user->societe_id;
|
//$socid = $user->societe_id;
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
//$result = restrictedArea($user, 'mymodule', $id,'');
|
//$result = restrictedArea($user, 'mymodule', $id, '');
|
||||||
|
|
||||||
// Initialize array of search criterias
|
// Initialize array of search criterias
|
||||||
$search_all=trim(GETPOST("search_all",'alpha'));
|
$search_all=trim(GETPOST("search_all",'alpha'));
|
||||||
|
|||||||
@ -648,45 +648,13 @@ class Project extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete tasks
|
// Fetch tasks
|
||||||
if (! $error)
|
$this->getLinesArray($user);
|
||||||
{
|
|
||||||
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "projet_task_time";
|
|
||||||
$sql.= " WHERE fk_task IN (SELECT rowid FROM " . MAIN_DB_PREFIX . "projet_task WHERE fk_projet=" . $this->id . ")";
|
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
// Delete tasks
|
||||||
if (!$resql)
|
foreach($this->lines as &$task) {
|
||||||
{
|
$task->delete($user);
|
||||||
$this->errors[] = $this->db->lasterror();
|
}
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "projet_task_extrafields";
|
|
||||||
$sql.= " WHERE fk_object IN (SELECT rowid FROM " . MAIN_DB_PREFIX . "projet_task WHERE fk_projet=" . $this->id . ")";
|
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
|
||||||
if (!$resql)
|
|
||||||
{
|
|
||||||
$this->errors[] = $this->db->lasterror();
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error)
|
|
||||||
{
|
|
||||||
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "projet_task";
|
|
||||||
$sql.= " WHERE fk_projet=" . $this->id;
|
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
|
||||||
if (!$resql)
|
|
||||||
{
|
|
||||||
$this->errors[] = $this->db->lasterror();
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete project
|
// Delete project
|
||||||
if (! $error)
|
if (! $error)
|
||||||
|
|||||||
@ -435,8 +435,8 @@ $arrayofmassactions = array(
|
|||||||
// 'builddoc'=>$langs->trans("PDFMerge"),
|
// 'builddoc'=>$langs->trans("PDFMerge"),
|
||||||
);
|
);
|
||||||
//if($user->rights->societe->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer");
|
//if($user->rights->societe->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer");
|
||||||
if ($user->rights->societe->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
|
||||||
if ($user->rights->projet->creer) $arrayofmassactions['close']=$langs->trans("Close");
|
if ($user->rights->projet->creer) $arrayofmassactions['close']=$langs->trans("Close");
|
||||||
|
if ($user->rights->societe->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete");
|
||||||
if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
|
||||||
|
|
||||||
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|||||||
@ -41,17 +41,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/societeaccount.class.php';
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
// No check on module enabled. Done later according to $validpaymentmethod
|
// No check on module enabled. Done later according to $validpaymentmethod
|
||||||
|
|
||||||
$langs->load("main");
|
$langs->loadLangs(array("main","other","dict","bills","companies","errors","paybox")); // File with generic data
|
||||||
$langs->load("other");
|
|
||||||
$langs->load("dict");
|
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("errors");
|
|
||||||
$langs->load("paybox"); // File with generic data
|
|
||||||
|
|
||||||
$action=GETPOST('action','aZ09');
|
$action=GETPOST('action','aZ09');
|
||||||
|
|
||||||
@ -273,16 +268,17 @@ if ($action == 'dopayment')
|
|||||||
$PAYPAL_PAYMENT_TYPE='Sale';
|
$PAYPAL_PAYMENT_TYPE='Sale';
|
||||||
|
|
||||||
$origfulltag=GETPOST("fulltag",'alpha');
|
$origfulltag=GETPOST("fulltag",'alpha');
|
||||||
$shipToName=GETPOST("shipToName");
|
$shipToName=GETPOST("shipToName",'alpha');
|
||||||
$shipToStreet=GETPOST("shipToStreet");
|
$shipToStreet=GETPOST("shipToStreet",'alpha');
|
||||||
$shipToCity=GETPOST("shipToCity");
|
$shipToCity=GETPOST("shipToCity",'alpha');
|
||||||
$shipToState=GETPOST("shipToState");
|
$shipToState=GETPOST("shipToState",'alpha');
|
||||||
$shipToCountryCode=GETPOST("shipToCountryCode");
|
$shipToCountryCode=GETPOST("shipToCountryCode",'alpha');
|
||||||
$shipToZip=GETPOST("shipToZip");
|
$shipToZip=GETPOST("shipToZip",'alpha');
|
||||||
$shipToStreet2=GETPOST("shipToStreet2");
|
$shipToStreet2=GETPOST("shipToStreet2",'alpha');
|
||||||
$phoneNum=GETPOST("phoneNum");
|
$phoneNum=GETPOST("phoneNum",'alpha');
|
||||||
$email=GETPOST("email");
|
$email=GETPOST("email",'alpha');
|
||||||
$desc=GETPOST("desc",'alpha');
|
$desc=GETPOST("desc",'alpha');
|
||||||
|
$thirdparty_id=GETPOST('thirdparty_id', 'int');
|
||||||
|
|
||||||
$mesg='';
|
$mesg='';
|
||||||
if (empty($PAYPAL_API_PRICE) || ! is_numeric($PAYPAL_API_PRICE))
|
if (empty($PAYPAL_API_PRICE) || ! is_numeric($PAYPAL_API_PRICE))
|
||||||
@ -347,7 +343,8 @@ if ($action == 'dopayment')
|
|||||||
if ($paymentmethod == 'paybox')
|
if ($paymentmethod == 'paybox')
|
||||||
{
|
{
|
||||||
$PRICE=price2num(GETPOST("newamount"),'MT');
|
$PRICE=price2num(GETPOST("newamount"),'MT');
|
||||||
$email=GETPOST("email");
|
$email=GETPOST("email",'alpha');
|
||||||
|
$thirdparty_id=GETPOST('thirdparty_id', 'int');
|
||||||
|
|
||||||
$origfulltag=GETPOST("fulltag",'alpha');
|
$origfulltag=GETPOST("fulltag",'alpha');
|
||||||
|
|
||||||
@ -388,7 +385,7 @@ if ($action == 'dopayment')
|
|||||||
|
|
||||||
|
|
||||||
// Called when choosing Stripe mode, after the 'dopayment'
|
// Called when choosing Stripe mode, after the 'dopayment'
|
||||||
if ($action == 'charge')
|
if ($action == 'charge' && ! empty($conf->stripe->enabled))
|
||||||
{
|
{
|
||||||
$amountstripe = $amount;
|
$amountstripe = $amount;
|
||||||
|
|
||||||
@ -401,36 +398,112 @@ if ($action == 'charge')
|
|||||||
dol_syslog("POST values: ".join(',', $_POST), LOG_DEBUG, 0, '_stripe');
|
dol_syslog("POST values: ".join(',', $_POST), LOG_DEBUG, 0, '_stripe');
|
||||||
|
|
||||||
$stripeToken = GETPOST("stripeToken",'alpha');
|
$stripeToken = GETPOST("stripeToken",'alpha');
|
||||||
$email = GETPOST("stripeEmail",'alpha');
|
$email = GETPOST("email",'alpha');
|
||||||
|
$thirdparty_id=GETPOST('thirdparty_id', 'int');
|
||||||
$vatnumber = GETPOST('vatnumber','alpha');
|
$vatnumber = GETPOST('vatnumber','alpha');
|
||||||
|
|
||||||
dol_syslog("stripeToken = ".$stripeToken, LOG_DEBUG, 0, '_stripe');
|
dol_syslog("stripeToken = ".$stripeToken, LOG_DEBUG, 0, '_stripe');
|
||||||
dol_syslog("email = ".$email, LOG_DEBUG, 0, '_stripe');
|
dol_syslog("email = ".$email, LOG_DEBUG, 0, '_stripe');
|
||||||
|
dol_syslog("thirdparty_id = ".$thirdparty_id, LOG_DEBUG, 0, '_stripe');
|
||||||
dol_syslog("vatnumber = ".$vatnumber, LOG_DEBUG, 0, '_stripe');
|
dol_syslog("vatnumber = ".$vatnumber, LOG_DEBUG, 0, '_stripe');
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
dol_syslog("Create customer card profile", LOG_DEBUG, 0, '_stripe');
|
$metadata = array(
|
||||||
$customer = \Stripe\Customer::create(array(
|
'dol_version'=>DOL_VERSION,
|
||||||
'email' => $email,
|
'dol_entity'=>$conf->entity,
|
||||||
'description' => ($email?'Customer card profile for '.$email:null),
|
'ipaddress'=>(empty($_SERVER['REMOTE_ADDR'])?'':$_SERVER['REMOTE_ADDR'])
|
||||||
'metadata' => array('ipaddress'=>$_SERVER['REMOTE_ADDR']),
|
);
|
||||||
'business_vat_id' => ($vatnumber?$vatnumber:null),
|
if (! empty($dol_id)) $metadata["dol_id"] = $dol_id;
|
||||||
'source' => $stripeToken // source can be a token OR array('object'=>'card', 'exp_month'=>xx, 'exp_year'=>xxxx, 'number'=>xxxxxxx, 'cvc'=>xxx, 'name'=>'Cardholder's full name', zip ?)
|
if (! empty($dol_type)) $metadata["dol_type"] = $dol_type;
|
||||||
));
|
if (! empty($thirdparty_id)) $metadata["dol_thirdparty_id"] = $thirdparty_id;
|
||||||
// Return $customer = array('id'=>'cus_XXXX', ...)
|
|
||||||
|
|
||||||
dol_syslog("Create charge", LOG_DEBUG, 0, '_stripe');
|
if ($thirdparty_id > 0)
|
||||||
$charge = \Stripe\Charge::create(array(
|
{
|
||||||
'customer' => $customer->id,
|
dol_syslog("Search existing customer profile for thirdparty_id=".$thirdparty_id, LOG_DEBUG, 0, '_stripe');
|
||||||
'amount' => price2num($amountstripe, 'MU'),
|
|
||||||
'currency' => $currency,
|
$service = 'StripeTest';
|
||||||
'description' => 'Stripe payment: '.$FULLTAG,
|
$servicestatus = 0;
|
||||||
'metadata' => array("FULLTAG" => $FULLTAG, 'Recipient' => $mysoc->name),
|
if (! empty($conf->global->STRIPE_LIVE) && ! GETPOST('forcesandbox','alpha'))
|
||||||
'statement_descriptor' => dol_trunc(dol_trunc(dol_string_unaccent($mysoc->name), 6, 'right', 'UTF-8', 1).' '.$FULLTAG, 22, 'right', 'UTF-8', 1) // 22 chars that appears on bank receipt
|
{
|
||||||
));
|
$service = 'StripeLive';
|
||||||
// Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
|
$servicestatus = 1;
|
||||||
|
}
|
||||||
|
$stripeacc = null; // No Oauth/connect use for public pages
|
||||||
|
|
||||||
|
$thirdparty = new Societe($db);
|
||||||
|
$thirdparty->fetch($thirdparty_id);
|
||||||
|
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php';
|
||||||
|
$stripe = new Stripe($db);
|
||||||
|
$customer = $stripe->customerStripe($thirdparty, $stripeacc, $servicestatus, 1);
|
||||||
|
|
||||||
|
$card = $customer->sources->create(array("source" => $stripeToken, "metadata" => $metadata));
|
||||||
|
|
||||||
|
if (empty($card))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
dol_syslog('Failed to create card record', LOG_WARNING, 0, '_stripe');
|
||||||
|
setEventMessages('Failed to create card record', null, 'errors');
|
||||||
|
$action='';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_syslog("Create charge on card ".$card->id, LOG_DEBUG, 0, '_stripe');
|
||||||
|
$charge = \Stripe\Charge::create(array(
|
||||||
|
'amount' => price2num($amountstripe, 'MU'),
|
||||||
|
'currency' => $currency,
|
||||||
|
'capture' => true, // Charge immediatly
|
||||||
|
'description' => 'Stripe payment: '.$FULLTAG,
|
||||||
|
'metadata' => array("FULLTAG" => $FULLTAG, 'Recipient' => $mysoc->name, 'dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>(empty($_SERVER['REMOTE_ADDR'])?'':$_SERVER['REMOTE_ADDR'])),
|
||||||
|
'customer' => $customer->id,
|
||||||
|
'source' => $card,
|
||||||
|
'statement_descriptor' => dol_trunc(dol_trunc(dol_string_unaccent($mysoc->name), 6, 'right', 'UTF-8', 1).' '.$FULLTAG, 22, 'right', 'UTF-8', 1) // 22 chars that appears on bank receipt
|
||||||
|
));
|
||||||
|
// Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
|
||||||
|
if (empty($charge))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
dol_syslog('Failed to charge card', LOG_WARNING, 0, '_stripe');
|
||||||
|
setEventMessages('Failed to charge card', null, 'errors');
|
||||||
|
$action='';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_syslog("Create anonymous customer card profile", LOG_DEBUG, 0, '_stripe');
|
||||||
|
$customer = \Stripe\Customer::create(array(
|
||||||
|
'email' => $email,
|
||||||
|
'description' => ($email?'Anonymous customer for '.$email:'Anonymous customer'),
|
||||||
|
'metadata' => $metadata,
|
||||||
|
'business_vat_id' => ($vatnumber?$vatnumber:null),
|
||||||
|
'source' => $stripeToken // source can be a token OR array('object'=>'card', 'exp_month'=>xx, 'exp_year'=>xxxx, 'number'=>xxxxxxx, 'cvc'=>xxx, 'name'=>'Cardholder's full name', zip ?)
|
||||||
|
));
|
||||||
|
// Return $customer = array('id'=>'cus_XXXX', ...)
|
||||||
|
|
||||||
|
// The customer was just created with a source, so we can make a charge
|
||||||
|
// with no card defined, the source just used for customer creation will be used.
|
||||||
|
dol_syslog("Create charge", LOG_DEBUG, 0, '_stripe');
|
||||||
|
$charge = \Stripe\Charge::create(array(
|
||||||
|
'customer' => $customer->id,
|
||||||
|
'amount' => price2num($amountstripe, 'MU'),
|
||||||
|
'currency' => $currency,
|
||||||
|
'capture' => true, // Charge immediatly
|
||||||
|
'description' => 'Stripe payment: '.$FULLTAG,
|
||||||
|
'metadata' => array("FULLTAG" => $FULLTAG, 'Recipient' => $mysoc->name, 'dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>(empty($_SERVER['REMOTE_ADDR'])?'':$_SERVER['REMOTE_ADDR'])),
|
||||||
|
'statement_descriptor' => dol_trunc(dol_trunc(dol_string_unaccent($mysoc->name), 6, 'right', 'UTF-8', 1).' '.$FULLTAG, 22, 'right', 'UTF-8', 1) // 22 chars that appears on bank receipt
|
||||||
|
));
|
||||||
|
// Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
|
||||||
|
if (empty($charge))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
dol_syslog('Failed to charge card', LOG_WARNING, 0, '_stripe');
|
||||||
|
setEventMessages('Failed to charge card', null, 'errors');
|
||||||
|
$action='';
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch(\Stripe\Error\Card $e) {
|
} catch(\Stripe\Error\Card $e) {
|
||||||
// Since it's a decline, \Stripe\Error\Card will be caught
|
// Since it's a decline, \Stripe\Error\Card will be caught
|
||||||
$body = $e->getJsonBody();
|
$body = $e->getJsonBody();
|
||||||
@ -444,8 +517,8 @@ if ($action == 'charge')
|
|||||||
print('Message is:' . $err['message'] . "\n");
|
print('Message is:' . $err['message'] . "\n");
|
||||||
|
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($e->getMessage(), null, 'errors');
|
|
||||||
dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe');
|
dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe');
|
||||||
|
setEventMessages($e->getMessage(), null, 'errors');
|
||||||
$action='';
|
$action='';
|
||||||
} catch (\Stripe\Error\RateLimit $e) {
|
} catch (\Stripe\Error\RateLimit $e) {
|
||||||
// Too many requests made to the API too quickly
|
// Too many requests made to the API too quickly
|
||||||
@ -794,8 +867,9 @@ if ($source == 'order')
|
|||||||
{
|
{
|
||||||
print '<!-- Shipping address not complete, so we don t use it -->'."\n";
|
print '<!-- Shipping address not complete, so we don t use it -->'."\n";
|
||||||
}
|
}
|
||||||
|
print '<input type="hidden" name="thirdparty_id" value="'.$order->thirdparty->id.'">'."\n";
|
||||||
print '<input type="hidden" name="email" value="'.$order->thirdparty->email.'">'."\n";
|
print '<input type="hidden" name="email" value="'.$order->thirdparty->email.'">'."\n";
|
||||||
print '<input type="hidden" name="vatnumber" value="'.$order->thirdparty->tva_intra.'">'."\n";
|
print '<input type="hidden" name="vatnumber" value="'.$order->thirdparty->tva_intra.'">'."\n";
|
||||||
$labeldesc=$langs->trans("Order").' '.$order->ref;
|
$labeldesc=$langs->trans("Order").' '.$order->ref;
|
||||||
if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha');
|
if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha');
|
||||||
print '<input type="hidden" name="desc" value="'.dol_escape_htmltag($labeldesc).'">'."\n";
|
print '<input type="hidden" name="desc" value="'.dol_escape_htmltag($labeldesc).'">'."\n";
|
||||||
@ -928,8 +1002,9 @@ if ($source == 'invoice')
|
|||||||
{
|
{
|
||||||
print '<!-- Shipping address not complete, so we don t use it -->'."\n";
|
print '<!-- Shipping address not complete, so we don t use it -->'."\n";
|
||||||
}
|
}
|
||||||
|
print '<input type="hidden" name="thirdparty_id" value="'.$invoice->thirdparty->id.'">'."\n";
|
||||||
print '<input type="hidden" name="email" value="'.$invoice->thirdparty->email.'">'."\n";
|
print '<input type="hidden" name="email" value="'.$invoice->thirdparty->email.'">'."\n";
|
||||||
print '<input type="hidden" name="vatnumber" value="'.$invoice->thirdparty->tva_intra.'">'."\n";
|
print '<input type="hidden" name="vatnumber" value="'.$invoice->thirdparty->tva_intra.'">'."\n";
|
||||||
$labeldesc=$langs->trans("Invoice").' '.$invoice->ref;
|
$labeldesc=$langs->trans("Invoice").' '.$invoice->ref;
|
||||||
if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha');
|
if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha');
|
||||||
print '<input type="hidden" name="desc" value="'.dol_escape_htmltag($labeldesc).'">'."\n";
|
print '<input type="hidden" name="desc" value="'.dol_escape_htmltag($labeldesc).'">'."\n";
|
||||||
@ -1135,8 +1210,9 @@ if ($source == 'contractline')
|
|||||||
{
|
{
|
||||||
print '<!-- Shipping address not complete, so we don t use it -->'."\n";
|
print '<!-- Shipping address not complete, so we don t use it -->'."\n";
|
||||||
}
|
}
|
||||||
|
print '<input type="hidden" name="thirdparty_id" value="'.$contract->thirdparty->id.'">'."\n";
|
||||||
print '<input type="hidden" name="email" value="'.$contract->thirdparty->email.'">'."\n";
|
print '<input type="hidden" name="email" value="'.$contract->thirdparty->email.'">'."\n";
|
||||||
print '<input type="hidden" name="vatnumber" value="'.$contract->thirdparty->tva_intra.'">'."\n";
|
print '<input type="hidden" name="vatnumber" value="'.$contract->thirdparty->tva_intra.'">'."\n";
|
||||||
$labeldesc=$langs->trans("Contract").' '.$contract->ref;
|
$labeldesc=$langs->trans("Contract").' '.$contract->ref;
|
||||||
if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha');
|
if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha');
|
||||||
print '<input type="hidden" name="desc" value="'.dol_escape_htmltag($labeldesc).'">'."\n";
|
print '<input type="hidden" name="desc" value="'.dol_escape_htmltag($labeldesc).'">'."\n";
|
||||||
@ -1438,6 +1514,8 @@ if (preg_match('/^dopayment/',$action))
|
|||||||
print '<input type="hidden" name="amount" value="'.$amount.'">'."\n";
|
print '<input type="hidden" name="amount" value="'.$amount.'">'."\n";
|
||||||
print '<input type="hidden" name="currency" value="'.$currency.'">'."\n";
|
print '<input type="hidden" name="currency" value="'.$currency.'">'."\n";
|
||||||
print '<input type="hidden" name="forcesandbox" value="'.GETPOST('forcesandbox','alpha').'" />';
|
print '<input type="hidden" name="forcesandbox" value="'.GETPOST('forcesandbox','alpha').'" />';
|
||||||
|
print '<input type="hidden" name="email" value="'.GETPOST('email','alpha').'" />';
|
||||||
|
print '<input type="hidden" name="thirdparty_id" value="'.GETPOST('thirdparty_id','int').'" />';
|
||||||
|
|
||||||
print '
|
print '
|
||||||
<table id="dolpaymenttable" summary="Payment form" class="center">
|
<table id="dolpaymenttable" summary="Payment form" class="center">
|
||||||
|
|||||||
@ -219,7 +219,7 @@ if ($action == 'charge')
|
|||||||
dol_syslog("POST values: ".join(',', $_POST), LOG_DEBUG, 0, '_stripe');
|
dol_syslog("POST values: ".join(',', $_POST), LOG_DEBUG, 0, '_stripe');
|
||||||
|
|
||||||
$stripeToken = GETPOST("stripeToken",'alpha');
|
$stripeToken = GETPOST("stripeToken",'alpha');
|
||||||
$email = GETPOST("stripeEmail",'alpha');
|
$email = GETPOST("email",'alpha');
|
||||||
$vatnumber = GETPOST('vatnumber','alpha');
|
$vatnumber = GETPOST('vatnumber','alpha');
|
||||||
|
|
||||||
dol_syslog("stripeToken = ".$stripeToken, LOG_DEBUG, 0, '_stripe');
|
dol_syslog("stripeToken = ".$stripeToken, LOG_DEBUG, 0, '_stripe');
|
||||||
@ -1149,6 +1149,8 @@ if (preg_match('/^dopayment/',$action))
|
|||||||
print '<input type="hidden" name="amount" value="'.$amount.'">'."\n";
|
print '<input type="hidden" name="amount" value="'.$amount.'">'."\n";
|
||||||
print '<input type="hidden" name="currency" value="'.$currency.'">'."\n";
|
print '<input type="hidden" name="currency" value="'.$currency.'">'."\n";
|
||||||
print '<input type="hidden" name="forcesandbox" value="'.GETPOST('forcesandbox','alpha').'" />';
|
print '<input type="hidden" name="forcesandbox" value="'.GETPOST('forcesandbox','alpha').'" />';
|
||||||
|
print '<input type="hidden" name="email" value="'.GETPOST('email','alpha').'" />';
|
||||||
|
print '<input type="hidden" name="thirdparty_id" value="'.GETPOST('thirdparty_id','int').'" />';
|
||||||
|
|
||||||
print '
|
print '
|
||||||
<table id="dolpaymenttable" summary="Payment form" class="center">
|
<table id="dolpaymenttable" summary="Payment form" class="center">
|
||||||
|
|||||||
@ -46,11 +46,7 @@ require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
|
|
||||||
$langs->load("companies");
|
$langs->loadLangs(array("companies","commercial","bills","banks","users"));
|
||||||
$langs->load("commercial");
|
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("banks");
|
|
||||||
$langs->load("users");
|
|
||||||
if (! empty($conf->categorie->enabled)) $langs->load("categories");
|
if (! empty($conf->categorie->enabled)) $langs->load("categories");
|
||||||
if (! empty($conf->incoterm->enabled)) $langs->load("incoterm");
|
if (! empty($conf->incoterm->enabled)) $langs->load("incoterm");
|
||||||
if (! empty($conf->notification->enabled)) $langs->load("mails");
|
if (! empty($conf->notification->enabled)) $langs->load("mails");
|
||||||
|
|||||||
@ -278,7 +278,9 @@ input.select2-input {
|
|||||||
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
||||||
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month], .liste_titre select[name=month],
|
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month], .liste_titre select[name=month],
|
||||||
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
||||||
.liste_titre input[name=search_day_date_when], .liste_titre input[name=search_month_date_when], .liste_titre input[name=search_year_date_when] {
|
.liste_titre input[name=search_day_date_when], .liste_titre input[name=search_month_date_when], .liste_titre input[name=search_year_date_when],
|
||||||
|
.liste_titre input[name=search_month_create], .liste_titre input[name=search_month_start], .liste_titre input[name=search_month_end]
|
||||||
|
{
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
input[type=submit] {
|
input[type=submit] {
|
||||||
|
|||||||
@ -291,7 +291,9 @@ textarea.cke_source:focus
|
|||||||
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
||||||
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month],
|
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month],
|
||||||
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
||||||
.liste_titre input[name=search_day_date_when], .liste_titre input[name=search_month_date_when], .liste_titre input[name=search_year_date_when] {
|
.liste_titre input[name=search_day_date_when], .liste_titre input[name=search_month_date_when], .liste_titre input[name=search_year_date_when],
|
||||||
|
.liste_titre input[name=search_month_create], .liste_titre input[name=search_month_start], .liste_titre input[name=search_month_end]
|
||||||
|
{
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {
|
input, input.flat, textarea, textarea.flat, form.flat select, select, select.flat, .dataTables_length label select {
|
||||||
|
|||||||
@ -33,12 +33,10 @@ require_once DOL_DOCUMENT_ROOT . '/core/lib/images.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . "/core/lib/company.lib.php";
|
require_once DOL_DOCUMENT_ROOT . "/core/lib/company.lib.php";
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
|
||||||
|
|
||||||
$langs->load("companies");
|
$langs->loadLangs(array("companies","other","ticketsup"));
|
||||||
$langs->load('other');
|
|
||||||
$langs->load("ticketsup");
|
|
||||||
|
|
||||||
$action = GETPOST('action');
|
$action = GETPOST('action','alpha');
|
||||||
$confirm = GETPOST('confirm');
|
$confirm = GETPOST('confirm','alpha');
|
||||||
$id = GETPOST('id', 'int');
|
$id = GETPOST('id', 'int');
|
||||||
$track_id = GETPOST('track_id', 'alpha');
|
$track_id = GETPOST('track_id', 'alpha');
|
||||||
$ref = GETPOST('ref', 'alpha');
|
$ref = GETPOST('ref', 'alpha');
|
||||||
@ -61,7 +59,6 @@ $pagenext = $page + 1;
|
|||||||
if (!$sortorder) {
|
if (!$sortorder) {
|
||||||
$sortorder = "ASC";
|
$sortorder = "ASC";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$sortfield) {
|
if (!$sortfield) {
|
||||||
$sortfield = "name";
|
$sortfield = "name";
|
||||||
}
|
}
|
||||||
@ -75,22 +72,22 @@ $object->ref = $object->track_id;
|
|||||||
|
|
||||||
|
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
setEventMessage($object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
} else {
|
} else {
|
||||||
$upload_dir = $conf->ticketsup->dir_output . "/" . dol_sanitizeFileName($object->track_id);
|
$upload_dir = $conf->ticketsup->dir_output . "/" . dol_sanitizeFileName($object->track_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
// Included file moved into Dolibarr 4, keep it for compatibility
|
|
||||||
$res=@include_once DOL_DOCUMENT_ROOT . '/core/actions_linkedfiles.inc.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/actions_linkedfiles.inc.php';
|
||||||
if (! $res) {
|
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php';
|
|
||||||
}
|
|
||||||
|
|
||||||
$object->ref = $old_ref;
|
$object->ref = $old_ref;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
@ -155,10 +152,12 @@ if ($object->id) {
|
|||||||
foreach ($filearray as $key => $file) {
|
foreach ($filearray as $key => $file) {
|
||||||
$totalsize += $file['size'];
|
$totalsize += $file['size'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// For compatibility we use track ID for directory
|
// For compatibility we use track ID for directory
|
||||||
$object->ref = $object->track_id;
|
$object->ref = $object->track_id;
|
||||||
$modulepart = 'ticketsup';
|
$modulepart = 'ticketsup';
|
||||||
$permission = $user->rights->ticketsup->write;
|
$permission = $user->rights->ticketsup->write;
|
||||||
|
$permtoedit = $user->rights->ticketsup->write;
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -460,7 +460,7 @@ else
|
|||||||
if (! empty($user->admin))
|
if (! empty($user->admin))
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=removeuser&user='.$useringroup->id.'">';
|
print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=removeuser&user='.$useringroup->id.'">';
|
||||||
print img_delete($langs->trans("RemoveFromGroup"));
|
print img_picto($langs->trans("RemoveFromGroup"), 'unlink');
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user