30if ((array_key_exists(
'action', $_GET) && $_GET[
'action'] ==
'dl') || (array_key_exists(
'action', $_POST) && $_POST[
'action'] ==
'dl')) {
31 if (!defined(
'NOTOKENRENEWAL')) {
32 define(
'NOTOKENRENEWAL',
'1');
37require
'../main.inc.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/paymentvarious.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
51require_once DOL_DOCUMENT_ROOT.
'/loan/class/paymentloan.class.php';
53if (isModEnabled(
'project')) {
54 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
55 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
62$langs->loadLangs(array(
"accountancy",
"bills",
"companies",
"salaries",
"compta",
"trips",
"banks",
"loan"));
64$date_start =
GETPOST(
'date_start',
'alpha');
66$date_startMonth =
GETPOSTINT(
'date_startmonth');
68$date_start =
dol_mktime(0, 0, 0, $date_startMonth, $date_startDay, $date_startYear,
'tzuserrel');
69$date_stop =
GETPOST(
'date_stop',
'alpha');
73$date_stop =
dol_mktime(23, 59, 59, $date_stopMonth, $date_stopDay, $date_stopYear,
'tzuserrel');
74$action =
GETPOST(
'action',
'aZ09');
78$hookmanager->initHooks(array(
'comptafileslist',
'globallist'));
82$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
83$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
85if (empty($page) || $page == -1) {
88$offset = $limit * $page;
92 $sortfield =
"date,item";
100 'type' => array(
'label' =>
"Type",
'checked' => 1),
101 'date' => array(
'label' =>
"Date",
'checked' => 1),
102 'date_due' => array(
'label' =>
"DateDue",
'checked' => 1),
103 'ref' => array(
'label' =>
"Ref",
'checked' => 1),
104 'documents' => array(
'label' =>
"Documents",
'checked' => 1),
105 'paid' => array(
'label' =>
"Paid",
'checked' => 1),
106 'total_ht' => array(
'label' =>
"TotalHT",
'checked' => 1),
107 'total_ttc' => array(
'label' =>
"TotalTTC",
'checked' => 1),
108 'total_vat' => array(
'label' =>
"TotalVAT",
'checked' => 1),
113if (!isModEnabled(
'comptabilite') && !isModEnabled(
'accounting')) {
116if ($user->socid > 0) {
121$arrayofentities = array();
122if (isModEnabled(
'multicompany') && is_object($mc)) {
123 $arrayofentities = $mc->getEntitiesList();
126$entity = (GETPOSTISSET(
'entity') ?
GETPOSTINT(
'entity') : (GETPOSTISSET(
'search_entity') ?
GETPOSTINT(
'search_entity') : $conf->entity));
127if (isModEnabled(
'multicompany') && is_object($mc)) {
128 if (empty($entity) &&
getDolGlobalString(
'MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES')) {
129 $entity =
'0,'.implode(
',', array_keys($arrayofentities));
133 $entity = $conf->entity;
138$listofchoices = array(
139 'selectinvoices' => array(
'label' =>
'Invoices',
'picto' =>
'bill',
'lang' =>
'bills',
'enabled' => isModEnabled(
'invoice'),
'perms' => $user->hasRight(
'facture',
'lire')),
140 'selectsupplierinvoices' => array(
'label' =>
'BillsSuppliers',
'picto' =>
'supplier_invoice',
'lang' =>
'bills',
'enabled' => isModEnabled(
'supplier_invoice'),
'perms' => $user->hasRight(
'fournisseur',
'facture',
'lire')),
141 'selectexpensereports' => array(
'label' =>
'ExpenseReports',
'picto' =>
'expensereport',
'lang' =>
'trips',
'enabled' => isModEnabled(
'expensereport'),
'perms' => $user->hasRight(
'expensereport',
'lire')),
142 'selectdonations' => array(
'label' =>
'Donations',
'picto' =>
'donation',
'lang' =>
'donation',
'enabled' => isModEnabled(
'don'),
'perms' => $user->hasRight(
'don',
'lire')),
143 'selectsocialcontributions' => array(
'label' =>
'SocialContributions',
'picto' =>
'bill',
'enabled' => isModEnabled(
'tax'),
'perms' => $user->hasRight(
'tax',
'charges',
'lire')),
144 'selectpaymentsofsalaries' => array(
'label' =>
'SalariesPayments',
'picto' =>
'salary',
'lang' =>
'salaries',
'enabled' => isModEnabled(
'salaries'),
'perms' => $user->hasRight(
'salaries',
'read')),
145 'selectvariouspayment' => array(
'label' =>
'VariousPayment',
'picto' =>
'payment',
'enabled' => isModEnabled(
'bank'),
'perms' => $user->hasRight(
'banque',
'lire')),
146 'selectloanspayment' => array(
'label' =>
'PaymentLoan',
'picto' =>
'loan',
'enabled' => isModEnabled(
'don'),
'perms' => $user->hasRight(
'loan',
'read')),
160$filesarray = array();
162'@phan-var-force array<string,array{id:string,entity:string,date:string,date_due:string,paid:float|int,amount_ht:float|int,amount_ttc:float|int,amount_vat:float|int,amount_localtax1:float|int,amount_localtax2:float|int,amount_revenuestamp:float|int,ref:string,fk:string,item:string,thirdparty_name:string,thirdparty_code:string,country_code:string,vatnum:string,sens:string,currency:string,line?:string,name?:string,files?:mixed}> $filesarray';
165if (($action ==
'searchfiles' || $action ==
'dl')) {
166 if (empty($date_start)) {
167 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DateStart")),
null,
'errors');
170 if (empty($date_stop)) {
171 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DateEnd")),
null,
'errors');
178 $wheretail =
" '".$db->idate($date_start).
"' AND '".$db->idate($date_stop).
"'";
181 if (
GETPOST(
'selectinvoices') && !empty($listofchoices[
'selectinvoices'][
'perms'])) {
183 $sql .=
" UNION ALL";
185 $sql .=
"SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total_ht, t.total_ttc, t.total_tva as total_vat,";
186 $sql .=
" t.localtax1, t.localtax2, t.revenuestamp,";
187 $sql .=
" t.multicurrency_code as currency, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum, ".PAY_CREDIT.
" as sens";
188 $sql .=
" FROM ".MAIN_DB_PREFIX.
"facture as t LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON c.rowid = s.fk_pays";
189 $sql .=
" WHERE datef between ".$wheretail;
190 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
191 $sql .=
" AND t.fk_statut <> ".Facture::STATUS_DRAFT;
192 if (!empty($projectid)) {
193 $sql .=
" AND fk_projet = ".((int) $projectid);
197 if (
GETPOST(
'selectsupplierinvoices') && !empty($listofchoices[
'selectsupplierinvoices'][
'perms'])) {
199 $sql .=
" UNION ALL";
201 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, t.paye as paid, t.total_ht, t.total_ttc, t.total_tva as total_vat,";
202 $sql .=
" t.localtax1, t.localtax2, 0 as revenuestamp,";
203 $sql .=
" t.multicurrency_code as currency, t.fk_soc, t.datef as date, t.date_lim_reglement as date_due, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum, ".PAY_DEBIT.
" as sens";
204 $sql .=
" FROM ".MAIN_DB_PREFIX.
"facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON c.rowid = s.fk_pays";
205 $sql .=
" WHERE datef between ".$wheretail;
206 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
207 $sql .=
" AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
208 if (!empty($projectid)) {
209 $sql .=
" AND fk_projet = ".((int) $projectid);
213 if (
GETPOST(
'selectexpensereports') && !empty($listofchoices[
'selectexpensereports'][
'perms'])) {
215 $sql .=
" UNION ALL";
219 if (!empty($projectid)) {
220 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, t.paid, SUM(td.total_ht) as total_ht, SUM(td.total_ttc) as total_ttc, SUM(td.total_tva) as total_vat,";
221 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
222 $sql .=
" td.multicurrency_code as currency, t.fk_user_author as fk_soc, t.date_fin as date, t.date_fin as date_due, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, " . PAY_DEBIT .
" as sens";
223 $sql .=
" FROM " . MAIN_DB_PREFIX .
"expensereport as t";
224 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"expensereport_det as td ON t.rowid = td.fk_expensereport";
225 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"user as u ON u.rowid = t.fk_user_author";
226 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"c_country as c ON c.rowid = u.fk_country";
227 $sql .=
" WHERE date_fin between " . $wheretail;
228 $sql .=
" AND t.entity IN (" . $db->sanitize($entity == 1 ?
'0,1' : $entity) .
')';
230 $sql .=
" AND fk_projet = ".((int) $projectid);
232 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, t.paid, t.total_ht, t.total_ttc, t.total_tva as total_vat,";
233 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
234 $sql .=
" t.multicurrency_code as currency, t.fk_user_author as fk_soc, t.date_fin as date, t.date_fin as date_due, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, " . PAY_DEBIT .
" as sens";
235 $sql .=
" FROM " . MAIN_DB_PREFIX .
"expensereport as t LEFT JOIN " . MAIN_DB_PREFIX .
"user as u ON u.rowid = t.fk_user_author LEFT JOIN " . MAIN_DB_PREFIX .
"c_country as c ON c.rowid = u.fk_country";
236 $sql .=
" WHERE date_fin between " . $wheretail;
237 $sql .=
" AND t.entity IN (" . $db->sanitize($entity == 1 ?
'0,1' : $entity) .
')';
242 if (
GETPOST(
'selectdonations') && !empty($listofchoices[
'selectdonations'][
'perms'])) {
244 $sql .=
" UNION ALL";
246 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat,";
247 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
248 $sql .=
" '".$db->escape($conf->currency).
"' as currency, 0 as fk_soc, t.datedon as date, t.datedon as date_due, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, ".PAY_CREDIT.
" as sens";
249 $sql .=
" FROM ".MAIN_DB_PREFIX.
"don as t LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON c.rowid = t.fk_country";
250 $sql .=
" WHERE datedon between ".$wheretail;
251 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
252 $sql .=
" AND t.fk_statut <> ".Don::STATUS_DRAFT;
253 if (!empty($projectid)) {
254 $sql .=
" AND fk_projet = ".((int) $projectid);
258 if (
GETPOST(
'selectpaymentsofsalaries') && !empty($listofchoices[
'selectpaymentsofsalaries'][
'perms'])) {
260 $sql .=
" UNION ALL";
262 $sql .=
" SELECT t.rowid as id, t.entity, t.label as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat,";
263 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
264 $sql .=
" '".$db->escape($conf->currency).
"' as currency, t.fk_user as fk_soc, t.datep as date, t.dateep as date_due, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum, ".PAY_DEBIT.
" as sens";
265 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX.
"user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON c.rowid = u.fk_country";
266 $sql .=
" WHERE datep between ".$wheretail;
267 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
269 if (!empty($projectid)) {
270 $sql .=
" AND fk_projet = ".((int) $projectid);
274 if (
GETPOST(
'selectsocialcontributions') && !empty($listofchoices[
'selectsocialcontributions'][
'perms'])) {
276 $sql .=
" UNION ALL";
278 $sql .=
" SELECT t.rowid as id, t.entity, t.libelle as ref, t.paye as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_vat,";
279 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
280 $sql .=
" '".$db->escape($conf->currency).
"' as currency, 0 as fk_soc, t.date_ech as date, t.periode as date_due, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, ".PAY_DEBIT.
" as sens";
281 $sql .=
" FROM ".MAIN_DB_PREFIX.
"chargesociales as t";
282 $sql .=
" WHERE t.date_ech between ".$wheretail;
283 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
285 if (!empty($projectid)) {
286 $sql .=
" AND fk_projet = ".((int) $projectid);
290 if (
GETPOST(
'selectvariouspayment') && !empty($listofchoices[
'selectvariouspayment'][
'perms'])) {
292 $sql .=
" UNION ALL";
294 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, 1 as paid, t.amount as total_ht, t.amount as total_ttc, 0 as total_vat,";
295 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
296 $sql .=
" '".$db->escape($conf->currency).
"' as currency, 0 as fk_soc, t.datep as date, t.datep as date_due, 'VariousPayment' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, sens";
297 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_various as t";
298 $sql .=
" WHERE datep between ".$wheretail;
299 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
300 if (!empty($projectid)) {
301 $sql .=
" AND fk_projet = ".((int) $projectid);
305 if (
GETPOST(
'selectloanspayment') && !empty($listofchoices[
'selectloanspayment'][
'perms']) && empty($projectid)) {
307 $sql .=
" UNION ALL";
309 $sql .=
" SELECT t.rowid as id, l.entity, l.label as ref, 1 as paid, (t.amount_capital+t.amount_insurance+t.amount_interest) as total_ht, (t.amount_capital+t.amount_insurance+t.amount_interest) as total_ttc, 0 as total_vat,";
310 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
311 $sql .=
" '".$db->escape($conf->currency).
"' as currency, 0 as fk_soc, t.datep as date, t.datep as date_due, 'LoanPayment' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum, ".PAY_DEBIT.
" as sens";
312 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_loan as t LEFT JOIN ".MAIN_DB_PREFIX.
"loan as l ON l.rowid = t.fk_loan";
313 $sql .=
" WHERE datep between ".$wheretail;
314 $sql .=
" AND l.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
318 $sql .= $db->order($sortfield, $sortorder);
321 $resd = $db->query($sql);
326 $numd = $db->num_rows($resd);
328 $tmpinvoice =
new Facture($db);
330 $tmpdonation =
new Don($db);
335 $objd = $db->fetch_object($resd);
337 switch ($objd->item) {
341 $upload_dir = $conf->facture->dir_output.
'/'.$subdir;
342 $link =
"document.php?modulepart=facture&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
343 $modulepart =
"facture";
345 case "SupplierInvoice":
346 $tmpinvoicesupplier->fetch($objd->id);
347 $subdir =
get_exdir($tmpinvoicesupplier->id, 2, 0, 1, $tmpinvoicesupplier,
'invoice_supplier');
349 $upload_dir = $conf->fournisseur->facture->dir_output.
'/'.$subdir;
350 $link =
"document.php?modulepart=facture_fournisseur&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
351 $modulepart =
"facture_fournisseur";
353 case "ExpenseReport":
356 $upload_dir = $conf->expensereport->dir_output.
'/'.$subdir;
357 $link =
"document.php?modulepart=expensereport&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
358 $modulepart =
"expensereport";
360 case "SalaryPayment":
363 $upload_dir = $conf->salaries->dir_output.
'/'.$subdir;
364 $link =
"document.php?modulepart=salaries&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
365 $modulepart =
"salaries";
368 $tmpdonation->fetch($objp->id);
369 $subdir =
get_exdir(0, 0, 0, 0, $tmpdonation,
'donation');
371 $upload_dir = $conf->don->dir_output.
'/'.$subdir;
372 $link =
"document.php?modulepart=don&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
375 case "SocialContributions":
378 $upload_dir = $conf->tax->dir_output.
'/'.$subdir;
379 $link =
"document.php?modulepart=tax&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
382 case "VariousPayment":
385 $upload_dir = $conf->bank->dir_output.
'/'.$subdir;
386 $link =
"document.php?modulepart=banque&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
387 $modulepart =
"banque";
392 $upload_dir = $conf->loan->dir_output.
'/'.$subdir;
403 if (!empty($upload_dir)) {
406 $files =
dol_dir_list($upload_dir,
"files", 0,
'',
'(\.meta|_preview.*\.png)$',
'', SORT_ASC, 1);
409 if (count($files) < 1) {
411 $nofile[
'id'] = $objd->id;
412 $nofile[
'entity'] = $objd->entity;
413 $nofile[
'date'] = $db->jdate($objd->date);
414 $nofile[
'date_due'] = $db->jdate($objd->date_due);
415 $nofile[
'paid'] = $objd->paid;
416 $nofile[
'amount_ht'] = $objd->total_ht;
417 $nofile[
'amount_ttc'] = $objd->total_ttc;
418 $nofile[
'amount_vat'] = $objd->total_vat;
419 $nofile[
'amount_localtax1'] = $objd->localtax1;
420 $nofile[
'amount_localtax2'] = $objd->localtax2;
421 $nofile[
'amount_revenuestamp'] = $objd->revenuestamp;
422 $nofile[
'ref'] = ($objd->ref ? $objd->ref : $objd->id);
423 $nofile[
'fk'] = $objd->fk_soc;
424 $nofile[
'item'] = $objd->item;
425 $nofile[
'thirdparty_name'] = $objd->thirdparty_name;
426 $nofile[
'thirdparty_code'] = $objd->thirdparty_code;
427 $nofile[
'country_code'] = $objd->country_code;
428 $nofile[
'vatnum'] = $objd->vatnum;
429 $nofile[
'sens'] = $objd->sens;
430 $nofile[
'currency'] = $objd->currency;
431 $nofile[
'link'] =
'';
432 $nofile[
'name'] =
'';
435 $filesarray[$nofile[
'item'].
'_'.$nofile[
'id']] = $nofile;
437 foreach ($files as $key => $file) {
438 $file[
'id'] = $objd->id;
439 $file[
'entity'] = $objd->entity;
440 $file[
'date'] = $db->jdate($objd->date);
441 $file[
'date_due'] = $db->jdate($objd->date_due);
442 $file[
'paid'] = $objd->paid;
443 $file[
'amount_ht'] = $objd->total_ht;
444 $file[
'amount_ttc'] = $objd->total_ttc;
445 $file[
'amount_vat'] = $objd->total_vat;
446 $file[
'amount_localtax1'] = $objd->localtax1;
447 $file[
'amount_localtax2'] = $objd->localtax2;
448 $file[
'amount_revenuestamp'] = $objd->revenuestamp;
449 $file[
'ref'] = ($objd->ref ? $objd->ref : $objd->id);
450 $file[
'fk'] = $objd->fk_soc;
451 $file[
'item'] = $objd->item;
452 $file[
'thirdparty_name'] = $objd->thirdparty_name;
453 $file[
'thirdparty_code'] = $objd->thirdparty_code;
454 $file[
'country_code'] = $objd->country_code;
455 $file[
'vatnum'] = $objd->vatnum;
456 $file[
'sens'] = $objd->sens;
457 $file[
'currency'] = $objd->currency;
460 if (empty($filesarray[$file[
'item'].
'_'.$file[
'id']])) {
461 $filesarray[$file[
'item'].
'_'.$file[
'id']] = $file;
465 if (empty($filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'])) {
466 $filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'] = array();
468 $filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'][] = array(
469 'link' => $link.urlencode($file[
'name']),
470 'name' => $file[
'name'],
471 'ref' => $file[
'ref'],
472 'fullname' => $file[
'fullname'],
473 'relpath' =>
'/'.$file[
'name'],
474 'relpathnamelang' => $langs->trans($file[
'item']).
'/'.$file[
'name'],
475 'modulepart' => $modulepart,
477 'currency' => $file[
'currency']
504$dirfortmpfile = (!empty($conf->accounting->dir_temp) ? $conf->accounting->dir_temp : $conf->comptabilite->dir_temp);
505if (empty($dirfortmpfile)) {
506 setEventMessages($langs->trans(
"ErrorNoAccountingModuleEnabled"),
null,
'errors');
511if ($result && $action ==
"dl" && !$error) {
512 if (!extension_loaded(
'zip')) {
517 $log = $langs->transnoentitiesnoconv(
"Type");
518 if (isModEnabled(
'multicompany') && is_object($mc)) {
519 $log .=
','.$langs->transnoentitiesnoconv(
"Entity");
521 $log .=
','.$langs->transnoentitiesnoconv(
"Date");
522 $log .=
','.$langs->transnoentitiesnoconv(
"DateDue");
523 $log .=
','.$langs->transnoentitiesnoconv(
"Ref");
524 $log .=
','.$langs->transnoentitiesnoconv(
"TotalHT");
525 $log .=
','.$langs->transnoentitiesnoconv(
"TotalTTC");
526 $log .=
','.$langs->transnoentitiesnoconv(
"TotalVAT");
527 $log .=
','.$langs->transcountrynoentities(
"TotalLT1", $mysoc->country_code);
528 $log .=
','.$langs->transcountrynoentities(
"TotalLT2", $mysoc->country_code);
529 $log .=
','.$langs->transnoentitiesnoconv(
"RevenueStamp");
530 $log .=
','.$langs->transnoentitiesnoconv(
"Paid");
531 $log .=
','.$langs->transnoentitiesnoconv(
"Document");
532 $log .=
','.$langs->transnoentitiesnoconv(
"ItemID");
533 $log .=
','.$langs->transnoentitiesnoconv(
"ThirdParty");
534 $log .=
','.$langs->transnoentitiesnoconv(
"Code");
535 $log .=
','.$langs->transnoentitiesnoconv(
"Country");
536 $log .=
','.$langs->transnoentitiesnoconv(
"VATIntra");
537 $log .=
','.$langs->transnoentitiesnoconv(
"Sens").
"\n";
539 if (!empty($projectid)) {
541 $project->fetch($projectid);
543 $zipname .=
'_'.$project->ref;
546 $zipname .=
'_export.zip';
550 $zip =
new ZipArchive();
551 $res = $zip->open($zipname, ZipArchive::OVERWRITE | ZipArchive::CREATE);
553 foreach ($filesarray as $key => $file) {
554 if (!empty($file[
'files'])) {
555 foreach ($file[
'files'] as $filecursor) {
556 if (file_exists($filecursor[
"fullname"])) {
557 $zip->addFile($filecursor[
"fullname"], $filecursor[
"relpathnamelang"]);
562 $log .=
'"'.$langs->transnoentitiesnoconv($file[
'item']).
'"';
563 if (isModEnabled(
'multicompany') && is_object($mc)) {
564 $log .=
',"'.(empty($arrayofentities[$file[
'entity']]) ? $file[
'entity'] : $arrayofentities[$file[
'entity']]).
'"';
566 $log .=
','.dol_print_date($file[
'date'],
'dayrfc');
567 $log .=
','.dol_print_date($file[
'date_due'],
'dayrfc');
568 $log .=
',"'.$file[
'ref'].
'"';
569 $log .=
','.$file[
'amount_ht'];
570 $log .=
','.$file[
'amount_ttc'];
571 $log .=
','.$file[
'amount_vat'];
572 $log .=
','.$file[
'amount_localtax1'];
573 $log .=
','.$file[
'amount_localtax2'];
574 $log .=
','.$file[
'amount_revenuestamp'];
575 $log .=
','.$file[
'paid'];
576 $log .=
',"'.$file[
"name"].
'"';
577 $log .=
','.$file[
'fk'];
578 $log .=
',"'.$file[
'thirdparty_name'].
'"';
579 $log .=
',"'.$file[
'thirdparty_code'].
'"';
580 $log .=
',"'.$file[
'country_code'].
'"';
581 $log .=
',"'.$file[
'vatnum'].
'"';
582 $log .=
',"'.$file[
'sens'].
'"';
585 $zip->addFromString(
'transactions.csv', $log);
589 header(
'Content-Type: application/zip');
590 header(
'Content-disposition: attachment; filename='.basename($zipname));
591 header(
'Content-Length: '.filesize($zipname));
598 setEventMessages($langs->trans(
"FailedToOpenFile", $zipname),
null,
'errors');
608$form =
new Form($db);
610$userstatic =
new User($db);
620$title = $langs->trans(
"ComptaFiles").
' - '.$langs->trans(
"List");
627$head[$h][0] = $_SERVER[
"PHP_SELF"];
628$head[$h][1] = $langs->trans(
"AccountantFiles");
629$head[$h][2] =
'AccountancyFiles';
634print
'<form name="searchfiles" action="?action=searchfiles" method="POST">'.
"\n";
635print
'<input type="hidden" name="token" value="'.newToken().
'">';
637print
'<span class="opacitymedium">'.$langs->trans(
"ExportAccountingSourceDocHelp");
638if (isModEnabled(
'accounting')) {
639 print
' '.$langs->trans(
"ExportAccountingSourceDocHelp2", $langs->transnoentitiesnoconv(
"Accounting"), $langs->transnoentitiesnoconv(
"Journals"));
644print $langs->trans(
"ReportPeriod").
': ';
645print $form->selectDate($date_start,
'date_start', 0, 0, 0,
"", 1, 1, 0,
'',
'',
'',
'', 1,
'',
'',
'tzuserrel');
647print $form->selectDate($date_stop,
'date_stop', 0, 0, 0,
"", 1, 1, 0,
'',
'',
'',
'', 1,
'',
'',
'tzuserrel');
652if (isModEnabled(
'multicompany') && is_object($mc)) {
653 $mc->getInfo($conf->entity);
654 print
' <span class="marginleftonly marginrightonly'.(!
getDolGlobalString(
'MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES') ?
' opacitymedium' :
'').
'">'.$langs->trans(
"Entity").
' : ';
655 if (
getDolGlobalString(
'MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES')) {
657 print $mc->select_entities(GETPOSTISSET(
'search_entity') ?
GETPOSTINT(
'search_entity') : $mc->id,
'search_entity',
'', false, false, false, false, true);
667if (isModEnabled(
'project')) {
669 $langs->load(
'projects');
670 print
'<span class="marginrightonly">'.$langs->trans(
'Project').
":</span>";
671 print
img_picto(
'',
'project').$formproject->select_projects(($socid > 0 ? $socid : -1), $projectid,
'projectid', 0, 0, 1, 0, 0, 0, 0,
'', 1, 0,
'');
672 print
'<span class="classfortooltip" style="padding: 0px; padding: 0px; padding-right: 3px !important;" title="'.$langs->trans(
'ExportAccountingProjectHelp').
'"><span class="fas fa-info-circle em088 opacityhigh" style=" vertical-align: middle; cursor: help"></span></span>';
677foreach ($listofchoices as $choice => $val) {
678 if (empty($val[
'enabled'])) {
682 if (empty($val[
'perms'])) {
683 $disabled =
' disabled';
685 $checked = (((!GETPOSTISSET(
'search') && $action !=
'searchfiles') ||
GETPOST($choice)) ?
' checked="checked"' :
'');
686 print
'<div class="inline-block marginrightonlylarge paddingright margintoponly"><input type="checkbox" id="'.$choice.
'" name="'.$choice.
'" value="1"'.$checked.$disabled.
'><label for="'.$choice.
'"> ';
687 print
img_picto($langs->trans($val[
'label']), $val[
'picto'],
'class=""').
' '.$langs->trans($val[
'label']);
688 print
'</label></div>';
692print
'<input type="submit" class="button small" name="search" value="'.$langs->trans(
"Search").
'">';
699if (!empty($date_start) && !empty($date_stop)) {
700 $param .=
'&date_startday='.GETPOSTINT(
'date_startday');
701 $param .=
'&date_startmonth='.GETPOSTINT(
'date_startmonth');
702 $param .=
'&date_startyear='.GETPOSTINT(
'date_startyear');
703 $param .=
'&date_stopday='.GETPOSTINT(
'date_stopday');
704 $param .=
'&date_stopmonth='.GETPOSTINT(
'date_stopmonth');
705 $param .=
'&date_stopyear='.GETPOSTINT(
'date_stopyear');
706 foreach ($listofchoices as $choice => $val) {
708 $param .=
'&'.$choice.
'=1';
713 '@phan-var-force array<string,array{id:string,entity:string,date:string,date_due:string,paid:float|int,amount_ht:float|int,amount_ttc:float|int,amount_vat:float|int,amount_localtax1:float|int,amount_localtax2:float|int,amount_revenuestamp:float|int,ref:string,fk:string,item:string,thirdparty_name:string,thirdparty_code:string,country_code:string,vatnum:string,sens:string,currency:string,line?:string,name?:string,files?:mixed}> $TData';
720 print
'<a class="marginleftonly small'.(empty($TData) ?
' butActionRefused' :
' butAction').
'" href="'.$_SERVER[
"PHP_SELF"].
'?action=dl&token='.
currentToken().
'&projectid='.((int) $projectid).
'&output=file&file='.urlencode($filename).$param.
'"';
725 print $langs->trans(
"Download");
728 $param .=
'&action=searchfiles';
752 print
'<div class="div-table-responsive">';
753 print
'<table class="noborder centpercent">';
754 print
'<tr class="liste_titre">';
755 print_liste_field_titre($arrayfields[
'type'][
'label'], $_SERVER[
"PHP_SELF"],
"item",
"", $param,
'', $sortfield, $sortorder,
'nowrap ');
756 print_liste_field_titre($arrayfields[
'date'][
'label'], $_SERVER[
"PHP_SELF"],
"date",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
757 print_liste_field_titre($arrayfields[
'date_due'][
'label'], $_SERVER[
"PHP_SELF"],
"date_due",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
758 print_liste_field_titre($arrayfields[
'ref'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"", $param,
'', $sortfield, $sortorder,
'nowraponall ');
759 print
'<th>'.$langs->trans(
"Document").
'</th>';
760 print
'<th>'.$langs->trans(
"Paid").
'</th>';
761 print
'<th class="right">'.$langs->trans(
"TotalHT").(isModEnabled(
'multicurrency') ?
' ('.$langs->getCurrencySymbol($conf->currency).
')' :
'').
'</th>';
762 print
'<th class="right">'.$langs->trans(
"TotalTTC").(isModEnabled(
'multicurrency') ?
' ('.$langs->getCurrencySymbol($conf->currency).
')' :
'').
'</th>';
763 print
'<th class="right">'.$langs->trans(
"TotalVAT").(isModEnabled(
'multicurrency') ?
' ('.$langs->getCurrencySymbol($conf->currency).
')' :
'').
'</th>';
765 print
'<th>'.$langs->trans(
"ThirdParty").
'</th>';
766 print
'<th class="center">'.$langs->trans(
"Code").
'</th>';
767 print
'<th class="center">'.$langs->trans(
"Country").
'</th>';
768 print
'<th class="center">'.$langs->trans(
"VATIntra").
'</th>';
769 if (isModEnabled(
'multicurrency')) {
770 print
'<th class="center">'.$langs->trans(
"Currency").
'</th>';
775 print
'<tr class="oddeven"><td colspan="13"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td>';
776 if (isModEnabled(
'multicurrency')) {
788 $totalVAT_credit = 0;
791 foreach ($TData as $data) {
795 print
'<tr class="oddeven '.$html_class.
'">';
798 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($langs->trans($data[
'item'])).
'">'.$langs->trans($data[
'item']).
'</td>';
801 print
'<td class="center">';
806 print
'<td class="center">';
811 print
'<td class="nowraponall tdoverflowmax150">';
813 if ($data[
'item'] ==
'Invoice') {
814 $invoice->id = $data[
'id'];
815 $invoice->ref = $data[
'ref'];
816 $invoice->total_ht = $data[
'amount_ht'];
817 $invoice->total_ttc = $data[
'amount_ttc'];
818 $invoice->total_tva = $data[
'amount_vat'];
819 $invoice->total_localtax1 = $data[
'amount_localtax1'];
820 $invoice->total_localtax2 = $data[
'amount_localtax2'];
821 $invoice->revenuestamp = $data[
'amount_revenuestamp'];
822 $invoice->multicurrency_code = $data[
'currency'];
823 print $invoice->getNomUrl(1,
'', 0, 0,
'', 0, 0, 0);
824 } elseif ($data[
'item'] ==
'SupplierInvoice') {
825 $supplier_invoice->id = $data[
'id'];
826 $supplier_invoice->ref = $data[
'ref'];
827 $supplier_invoice->total_ht = $data[
'amount_ht'];
828 $supplier_invoice->total_ttc = $data[
'amount_ttc'];
829 $supplier_invoice->total_tva = $data[
'amount_vat'];
830 $supplier_invoice->total_localtax1 = $data[
'amount_localtax1'];
831 $supplier_invoice->total_localtax2 = $data[
'amount_localtax2'];
832 $supplier_invoice->revenuestamp = $data[
'amount_revenuestamp'];
833 $supplier_invoice->multicurrency_code = $data[
'currency'];
834 print $supplier_invoice->getNomUrl(1,
'', 0, 0,
'', 0, 0, 0);
835 } elseif ($data[
'item'] ==
'ExpenseReport') {
836 $expensereport->id = $data[
'id'];
837 $expensereport->ref = $data[
'ref'];
838 print $expensereport->getNomUrl(1, 0, 0,
'', 0, 0);
839 } elseif ($data[
'item'] ==
'SalaryPayment') {
840 $salary_payment->id = $data[
'id'];
841 $salary_payment->ref = $data[
'ref'];
842 print $salary_payment->getNomUrl(1);
843 } elseif ($data[
'item'] ==
'Donation') {
844 $don->id = $data[
'id'];
845 $don->ref = $data[
'ref'];
846 print $don->getNomUrl(1, 0,
'', 0);
847 } elseif ($data[
'item'] ==
'SocialContributions') {
848 $charge_sociales->id = $data[
'id'];
849 $charge_sociales->ref = $data[
'ref'];
850 print $charge_sociales->getNomUrl(1, 0, 0, 0, 0);
851 } elseif ($data[
'item'] ==
'VariousPayment') {
852 $various_payment->id = $data[
'id'];
853 $various_payment->ref = $data[
'ref'];
854 print $various_payment->getNomUrl(1,
'', 0, 0);
855 } elseif ($data[
'item'] ==
'LoanPayment') {
856 $payment_loan->id = $data[
'id'];
857 $payment_loan->ref = $data[
'ref'];
858 print $payment_loan->getNomUrl(1, 0, 0,
'', 0);
865 print
'<td class="tdoverflowmax150">';
866 if (!empty($data[
'files'])) {
867 foreach ($data[
'files'] as $id => $filecursor) {
868 $tmppreview = $formfile->showPreview($filecursor, $filecursor[
'modulepart'], $filecursor[
'subdir'].
'/'.$filecursor[
'name'], 0);
872 $filename = ($filecursor[
'name'] ? $filecursor[
'name'] : $filecursor[
'ref']);
873 print
'<a href='.DOL_URL_ROOT.
'/'.$filecursor[
'link'].
' target="_blank" rel="noopener noreferrer" title="'.
dol_escape_htmltag($filename).
'">';
874 if (empty($tmppreview)) {
875 print
img_picto(
'',
'generic',
'',
false, 0, 0,
'',
'pictonopreview pictofixedwidth paddingright');
884 print
'<td class="center">'.($data[
'paid'] ?
yn($data[
'paid']) :
'').
'</td>';
887 print
'<td class="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_ht'] : -$data[
'amount_ht'],
'MT')).
"</span></td>\n";
889 print
'<td class="right"><span class="amount">';
890 $tooltip = $langs->trans(
"TotalVAT").
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_vat'] : -$data[
'amount_vat'],
'MT'));
891 if (!empty($data[
'amount_localtax1'])) {
892 $tooltip .=
'<br>'.$langs->transcountrynoentities(
"TotalLT1", $mysoc->country_code).
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_localtax1'] : -$data[
'amount_localtax1'],
'MT'));
894 if (!empty($data[
'amount_localtax2'])) {
895 $tooltip .=
'<br>'.$langs->transcountrynoentities(
"TotalLT2", $mysoc->country_code).
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_localtax2'] : -$data[
'amount_localtax2'],
'MT'));
897 if (!empty($data[
'amount_revenuestamp'])) {
898 $tooltip .=
'<br>'.$langs->trans(
"RevenueStamp").
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_revenuestamp'] : -$data[
'amount_revenuestamp'],
'MT'));
900 print
'<span class="classfortooltip" title="'.dol_escape_htmltag($tooltip).
'">'.
price(
price2num($data[
'sens'] ? $data[
'amount_ttc'] : -$data[
'amount_ttc'],
'MT')).
'</span>';
901 print
"</span></td>\n";
903 print
'<td class="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_vat'] : -$data[
'amount_vat'],
'MT')).
"</span></td>\n";
905 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($data[
'thirdparty_name']).
'">'.
dol_escape_htmltag($data[
'thirdparty_name']).
"</td>\n";
907 print
'<td class="center">'.$data[
'thirdparty_code'].
"</td>\n";
909 print
'<td class="center">'.$data[
'country_code'].
"</td>\n";
912 print
'<td class="tdoverflowmax150 right" title="'.dol_escape_htmltag($data[
'vatnum']).
'">'.
dol_escape_htmltag($data[
'vatnum']).
"</td>\n";
915 $totalET_credit += $data[
'amount_ht'];
916 $totalIT_credit += $data[
'amount_ttc'];
917 $totalVAT_credit += $data[
'amount_vat'];
919 $totalET_debit -= $data[
'amount_ht'];
920 $totalIT_debit -= $data[
'amount_ttc'];
921 $totalVAT_debit -= $data[
'amount_vat'];
924 if (isModEnabled(
'multicurrency')) {
925 print
'<td class="center">'.$data[
'currency'].
"</td>\n";
932 print
'<tr class="liste_total">';
933 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
' '.$langs->trans(
'Income').
'</td>';
934 print
'<td class="right">'.price(
price2num($totalET_credit,
'MT')).
'</td>';
935 print
'<td class="right">'.price(
price2num($totalIT_credit,
'MT')).
'</td>';
936 print
'<td class="right">'.price(
price2num($totalVAT_credit,
'MT')).
'</td>';
937 print
'<td colspan="4"></td>';
938 if (isModEnabled(
'multicurrency')) {
943 print
'<tr class="liste_total">';
944 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
' '.$langs->trans(
'Outcome').
'</td>';
945 print
'<td class="right">'.price(
price2num($totalET_debit,
'MT')).
'</td>';
946 print
'<td class="right">'.price(
price2num($totalIT_debit,
'MT')).
'</td>';
947 print
'<td class="right">'.price(
price2num($totalVAT_debit,
'MT')).
'</td>';
948 print
'<td colspan="4"></td>';
949 if (isModEnabled(
'multicurrency')) {
954 print
'<tr class="liste_total">';
955 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
'</td>';
956 print
'<td class="right">'.price(
price2num($totalET_credit + $totalET_debit,
'MT')).
'</td>';
957 print
'<td class="right">'.price(
price2num($totalIT_credit + $totalIT_debit,
'MT')).
'</td>';
958 print
'<td class="right">'.price(
price2num($totalVAT_credit + $totalVAT_debit,
'MT')).
'</td>';
959 print
'<td colspan="4"></td>';
960 if (isModEnabled(
'multicurrency')) {
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class for managing the social charges.
Class to manage donations.
Class to manage Trips and Expenses.
const STATUS_DRAFT
Draft status.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage payments of loans.
Class to manage payments of salaries.
Class to manage various payments.
Class to manage projects.
Class to manage Dolibarr users.
dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1, $nolog=0)
Remove a file or several files with a mask.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
currentToken()
Return the value of token currently saved into session with name 'token'.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.