29 if ((array_key_exists(
'action', $_GET) && $_GET[
'action'] ==
'dl') || (array_key_exists(
'action', $_POST) && $_POST[
'action'] ==
'dl')) {
30 if (!defined(
'NOTOKENRENEWAL')) {
31 define(
'NOTOKENRENEWAL',
'1');
36 require
'../main.inc.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
40 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
41 require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
42 require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
43 require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
44 require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
45 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
46 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
47 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
48 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/paymentvarious.class.php';
49 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
50 require_once DOL_DOCUMENT_ROOT.
'/loan/class/paymentloan.class.php';
53 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
54 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
61 $langs->loadLangs(array(
"accountancy",
"bills",
"companies",
"salaries",
"compta",
"trips",
"banks",
"loan"));
63 $date_start =
GETPOST(
'date_start',
'alpha');
64 $date_startDay =
GETPOST(
'date_startday',
'int');
65 $date_startMonth =
GETPOST(
'date_startmonth',
'int');
66 $date_startYear =
GETPOST(
'date_startyear',
'int');
67 $date_start =
dol_mktime(0, 0, 0, $date_startMonth, $date_startDay, $date_startYear,
'tzuserrel');
68 $date_stop =
GETPOST(
'date_stop',
'alpha');
69 $date_stopDay =
GETPOST(
'date_stopday',
'int');
70 $date_stopMonth =
GETPOST(
'date_stopmonth',
'int');
71 $date_stopYear =
GETPOST(
'date_stopyear',
'int');
72 $date_stop =
dol_mktime(23, 59, 59, $date_stopMonth, $date_stopDay, $date_stopYear,
'tzuserrel');
73 $action =
GETPOST(
'action',
'aZ09');
74 $projectid = (
GETPOST(
'projectid',
'int') ?
GETPOST(
'projectid',
'int') : 0);
77 $hookmanager->initHooks(array(
'comptafileslist',
'globallist'));
80 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
81 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
82 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
84 if (empty($page) || $page == -1) {
87 $offset = $limit * $page;
88 $pageprev = $page - 1;
89 $pagenext = $page + 1;
91 $sortfield =
"date,item";
99 'type'=>array(
'label'=>
"Type",
'checked'=>1),
100 'date'=>array(
'label'=>
"Date",
'checked'=>1),
101 'date_due'=>array(
'label'=>
"DateDue",
'checked'=>1),
102 'ref'=>array(
'label'=>
"Ref",
'checked'=>1),
103 'documents'=>array(
'label'=>
"Documents",
'checked'=>1),
104 'paid'=>array(
'label'=>
"Paid",
'checked'=>1),
105 'total_ht'=>array(
'label'=>
"TotalHT",
'checked'=>1),
106 'total_ttc'=>array(
'label'=>
"TotalTTC",
'checked'=>1),
107 'total_vat'=>array(
'label'=>
"TotalVAT",
'checked'=>1),
115 if ($user->socid > 0) {
120 $arrayofentities = array();
122 $arrayofentities = $mc->getEntitiesList();
127 if (empty($entity) && !empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
128 $entity =
'0,'.join(
',', array_keys($arrayofentities));
131 if (empty($entity)) {
132 $entity = $conf->entity;
137 $listofchoices = array(
138 'selectinvoices'=>array(
'label'=>
'Invoices',
'picto'=>
'bill',
'lang'=>
'bills',
'enabled' =>
isModEnabled(
'facture'),
'perms' => $user->hasRight(
'facture',
'lire')),
139 'selectsupplierinvoices'=>array(
'label'=>
'BillsSuppliers',
'picto'=>
'supplier_invoice',
'lang'=>
'bills',
'enabled' =>
isModEnabled(
'supplier_invoice'),
'perms' => !empty($user->rights->fournisseur->facture->lire)),
140 'selectexpensereports'=>array(
'label'=>
'ExpenseReports',
'picto'=>
'expensereport',
'lang'=>
'trips',
'enabled' =>
isModEnabled(
'expensereport'),
'perms' => !empty($user->rights->expensereport->lire)),
141 'selectdonations'=>array(
'label'=>
'Donations',
'picto'=>
'donation',
'lang'=>
'donation',
'enabled' =>
isModEnabled(
'don'),
'perms' => !empty($user->rights->don->lire)),
142 'selectsocialcontributions'=>array(
'label'=>
'SocialContributions',
'picto'=>
'bill',
'enabled' =>
isModEnabled(
'tax'),
'perms' => !empty($user->rights->tax->charges->lire)),
143 'selectpaymentsofsalaries'=>array(
'label'=>
'SalariesPayments',
'picto'=>
'salary',
'lang'=>
'salaries',
'enabled' =>
isModEnabled(
'salaries'),
'perms' => !empty($user->rights->salaries->read)),
144 'selectvariouspayment'=>array(
'label'=>
'VariousPayment',
'picto'=>
'payment',
'enabled' =>
isModEnabled(
'banque'),
'perms' => !empty($user->rights->banque->lire)),
145 'selectloanspayment'=>array(
'label'=>
'PaymentLoan',
'picto'=>
'loan',
'enabled' =>
isModEnabled(
'don'),
'perms' => !empty($user->rights->loan->read)),
159 $filesarray = array();
161 if (($action ==
'searchfiles' || $action ==
'dl')) {
162 if (empty($date_start)) {
163 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DateStart")),
null,
'errors');
166 if (empty($date_stop)) {
167 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DateEnd")),
null,
'errors');
174 $wheretail =
" '".$db->idate($date_start).
"' AND '".$db->idate($date_stop).
"'";
177 if (
GETPOST(
'selectinvoices') && !empty($listofchoices[
'selectinvoices'][
'perms'])) {
179 $sql .=
" UNION ALL";
181 $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, 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";
182 $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";
183 $sql .=
" WHERE datef between ".$wheretail;
184 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
185 $sql .=
" AND t.fk_statut <> ".Facture::STATUS_DRAFT;
186 if (!empty($projectid))
$sql .=
" AND fk_projet = ".((int) $projectid);
189 if (
GETPOST(
'selectsupplierinvoices') && !empty($listofchoices[
'selectsupplierinvoices'][
'perms'])) {
191 $sql .=
" UNION ALL";
193 $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, 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";
194 $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";
195 $sql .=
" WHERE datef between ".$wheretail;
196 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
197 $sql .=
" AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
198 if (!empty($projectid))
$sql .=
" AND fk_projet = ".((
int) $projectid);
201 if (
GETPOST(
'selectexpensereports') && !empty($listofchoices[
'selectexpensereports'][
'perms']) && empty($projectid)) {
203 $sql .=
" UNION ALL";
205 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, t.paid, t.total_ht, t.total_ttc, t.total_tva as total_vat, 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";
206 $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";
207 $sql .=
" WHERE date_fin between ".$wheretail;
208 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
209 $sql .=
" AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
212 if (
GETPOST(
'selectdonations') && !empty($listofchoices[
'selectdonations'][
'perms'])) {
214 $sql .=
" UNION ALL";
216 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, '".$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";
217 $sql .=
" FROM ".MAIN_DB_PREFIX.
"don as t LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON c.rowid = t.fk_country";
218 $sql .=
" WHERE datedon between ".$wheretail;
219 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
220 $sql .=
" AND t.fk_statut <> ".Don::STATUS_DRAFT;
221 if (!empty($projectid))
$sql .=
" AND fk_projet = ".((
int) $projectid);
224 if (
GETPOST(
'selectpaymentsofsalaries') && !empty($listofchoices[
'selectpaymentsofsalaries'][
'perms'])) {
226 $sql .=
" UNION ALL";
228 $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, '".$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";
229 $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";
230 $sql .=
" WHERE datep between ".$wheretail;
231 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
233 if (!empty($projectid))
$sql .=
" AND fk_projet = ".((
int) $projectid);
236 if (
GETPOST(
'selectsocialcontributions') && !empty($listofchoices[
'selectsocialcontributions'][
'perms'])) {
238 $sql .=
" UNION ALL";
240 $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, '".$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";
241 $sql .=
" FROM ".MAIN_DB_PREFIX.
"chargesociales as t";
242 $sql .=
" WHERE t.date_ech between ".$wheretail;
243 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
245 if (!empty($projectid))
$sql .=
" AND fk_projet = ".((
int) $projectid);
248 if (
GETPOST(
'selectvariouspayment') && !empty($listofchoices[
'selectvariouspayment'][
'perms'])) {
250 $sql .=
" UNION ALL";
252 $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, '".$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";
253 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_various as t";
254 $sql .=
" WHERE datep between ".$wheretail;
255 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
256 if (!empty($projectid))
$sql .=
" AND fk_projet = ".((
int) $projectid);
259 if (
GETPOST(
'selectloanspayment') && !empty($listofchoices[
'selectloanspayment'][
'perms']) && empty($projectid)) {
261 $sql .=
" UNION ALL";
263 $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, '".$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";
264 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_loan as t LEFT JOIN ".MAIN_DB_PREFIX.
"loan as l ON l.rowid = t.fk_loan";
265 $sql .=
" WHERE datep between ".$wheretail;
266 $sql .=
" AND l.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
270 $sql .= $db->order($sortfield, $sortorder);
273 $resd = $db->query(
$sql);
278 $numd = $db->num_rows($resd);
280 $tmpinvoice =
new Facture($db);
282 $tmpdonation =
new Don($db);
287 $objd = $db->fetch_object($resd);
289 switch ($objd->item) {
293 $upload_dir = $conf->facture->dir_output.
'/'.$subdir;
294 $link =
"document.php?modulepart=facture&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
295 $modulepart =
"facture";
297 case "SupplierInvoice":
298 $tmpinvoicesupplier->fetch($objd->id);
299 $subdir =
get_exdir($tmpinvoicesupplier->id, 2, 0, 1, $tmpinvoicesupplier,
'invoice_supplier');
301 $upload_dir = $conf->fournisseur->facture->dir_output.
'/'.$subdir;
302 $link =
"document.php?modulepart=facture_fournisseur&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
303 $modulepart =
"facture_fournisseur";
305 case "ExpenseReport":
308 $upload_dir = $conf->expensereport->dir_output.
'/'.$subdir;
309 $link =
"document.php?modulepart=expensereport&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
310 $modulepart =
"expensereport";
312 case "SalaryPayment":
315 $upload_dir = $conf->salaries->dir_output.
'/'.$subdir;
316 $link =
"document.php?modulepart=salaries&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
317 $modulepart =
"salaries";
320 $tmpdonation->fetch($objp->id);
321 $subdir =
get_exdir(0, 0, 0, 0, $tmpdonation,
'donation');
323 $upload_dir = $conf->don->dir_output.
'/'.$subdir;
324 $link =
"document.php?modulepart=don&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
327 case "SocialContributions":
330 $upload_dir = $conf->tax->dir_output.
'/'.$subdir;
331 $link =
"document.php?modulepart=tax&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
334 case "VariousPayment":
337 $upload_dir = $conf->bank->dir_output.
'/'.$subdir;
338 $link =
"document.php?modulepart=banque&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
339 $modulepart =
"banque";
344 $upload_dir = $conf->loan->dir_output.
'/'.$subdir;
355 if (!empty($upload_dir)) {
358 $files =
dol_dir_list($upload_dir,
"files", 0,
'',
'(\.meta|_preview.*\.png)$',
'', SORT_ASC, 1);
361 if (count($files) < 1) {
363 $nofile[
'id'] = $objd->id;
364 $nofile[
'entity'] = $objd->entity;
365 $nofile[
'date'] = $db->jdate($objd->date);
366 $nofile[
'date_due'] = $db->jdate($objd->date_due);
367 $nofile[
'paid'] = $objd->paid;
368 $nofile[
'amount_ht'] = $objd->total_ht;
369 $nofile[
'amount_ttc'] = $objd->total_ttc;
370 $nofile[
'amount_vat'] = $objd->total_vat;
371 $nofile[
'ref'] = ($objd->ref ? $objd->ref : $objd->id);
372 $nofile[
'fk'] = $objd->fk_soc;
373 $nofile[
'item'] = $objd->item;
374 $nofile[
'thirdparty_name'] = $objd->thirdparty_name;
375 $nofile[
'thirdparty_code'] = $objd->thirdparty_code;
376 $nofile[
'country_code'] = $objd->country_code;
377 $nofile[
'vatnum'] = $objd->vatnum;
378 $nofile[
'sens'] = $objd->sens;
379 $nofile[
'currency'] = $objd->currency;
380 $nofile[
'link'] =
'';
381 $nofile[
'name'] =
'';
383 $filesarray[$nofile[
'item'].
'_'.$nofile[
'id']] = $nofile;
385 foreach ($files as $key => $file) {
386 $file[
'id'] = $objd->id;
387 $file[
'entity'] = $objd->entity;
388 $file[
'date'] = $db->jdate($objd->date);
389 $file[
'date_due'] = $db->jdate($objd->date_due);
390 $file[
'paid'] = $objd->paid;
391 $file[
'amount_ht'] = $objd->total_ht;
392 $file[
'amount_ttc'] = $objd->total_ttc;
393 $file[
'amount_vat'] = $objd->total_vat;
394 $file[
'ref'] = ($objd->ref ? $objd->ref : $objd->id);
395 $file[
'fk'] = $objd->fk_soc;
396 $file[
'item'] = $objd->item;
397 $file[
'thirdparty_name'] = $objd->thirdparty_name;
398 $file[
'thirdparty_code'] = $objd->thirdparty_code;
399 $file[
'country_code'] = $objd->country_code;
400 $file[
'vatnum'] = $objd->vatnum;
401 $file[
'sens'] = $objd->sens;
402 $file[
'currency'] = $objd->currency;
405 if (empty($filesarray[$file[
'item'].
'_'.$file[
'id']])) {
406 $filesarray[$file[
'item'].
'_'.$file[
'id']] = $file;
410 if (empty($filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'])) {
411 $filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'] = array();
413 $filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'][] = array(
414 'link' => $link.urlencode($file[
'name']),
415 'name'=>$file[
'name'],
417 'fullname' => $file[
'fullname'],
418 'relpath' =>
'/'.$file[
'name'],
419 'relpathnamelang' => $langs->trans($file[
'item']).
'/'.$file[
'name'],
420 'modulepart' => $modulepart,
422 'currency' => $file[
'currency']
449 $dirfortmpfile = ($conf->accounting->dir_temp ? $conf->accounting->dir_temp : $conf->comptabilite->dir_temp);
450 if (empty($dirfortmpfile)) {
451 setEventMessages($langs->trans(
"ErrorNoAccountingModuleEnabled"),
null,
'errors');
456 if ($result && $action ==
"dl" && !$error) {
457 if (!extension_loaded(
'zip')) {
462 $log = $langs->transnoentitiesnoconv(
"Type");
464 $log .=
','.$langs->transnoentitiesnoconv(
"Entity");
466 $log .=
','.$langs->transnoentitiesnoconv(
"Date");
467 $log .=
','.$langs->transnoentitiesnoconv(
"DateDue");
468 $log .=
','.$langs->transnoentitiesnoconv(
"Ref");
469 $log .=
','.$langs->transnoentitiesnoconv(
"TotalHT");
470 $log .=
','.$langs->transnoentitiesnoconv(
"TotalTTC");
471 $log .=
','.$langs->transnoentitiesnoconv(
"TotalVAT");
472 $log .=
','.$langs->transnoentitiesnoconv(
"Paid");
473 $log .=
','.$langs->transnoentitiesnoconv(
"Document");
474 $log .=
','.$langs->transnoentitiesnoconv(
"ItemID");
475 $log .=
','.$langs->transnoentitiesnoconv(
"ThirdParty");
476 $log .=
','.$langs->transnoentitiesnoconv(
"Code");
477 $log .=
','.$langs->transnoentitiesnoconv(
"Country");
478 $log .=
','.$langs->transnoentitiesnoconv(
"VATIntra");
479 $log .=
','.$langs->transnoentitiesnoconv(
"Sens").
"\n";
481 if (!empty($projectid)) {
483 $project->fetch($projectid);
485 $zipname .=
'_'.$project->ref;
488 $zipname .=
'_export.zip';
492 $zip =
new ZipArchive;
493 $res = $zip->open($zipname, ZipArchive::OVERWRITE | ZipArchive::CREATE);
495 foreach ($filesarray as $key => $file) {
496 if (!empty($file[
'files'])) {
497 foreach ($file[
'files'] as $filecursor) {
498 if (file_exists($filecursor[
"fullname"])) {
499 $zip->addFile($filecursor[
"fullname"], $filecursor[
"relpathnamelang"]);
504 $log .=
'"'.$langs->trans($file[
'item']).
'"';
506 $log .=
',"'.(empty($arrayofentities[$file[
'entity']]) ? $file[
'entity'] : $arrayofentities[$file[
'entity']]).
'"';
508 $log .=
','.dol_print_date($file[
'date'],
'dayrfc');
509 $log .=
','.dol_print_date($file[
'date_due'],
'dayrfc');
510 $log .=
',"'.$file[
'ref'].
'"';
511 $log .=
','.$file[
'amount_ht'];
512 $log .=
','.$file[
'amount_ttc'];
513 $log .=
','.$file[
'amount_vat'];
514 $log .=
','.$file[
'paid'];
515 $log .=
',"'.$file[
"name"].
'"';
516 $log .=
','.$file[
'fk'];
517 $log .=
',"'.$file[
'thirdparty_name'].
'"';
518 $log .=
',"'.$file[
'thirdparty_code'].
'"';
519 $log .=
',"'.$file[
'country_code'].
'"';
520 $log .=
',"'.$file[
'vatnum'].
'"';
521 $log .=
',"'.$file[
'sens'].
'"';
524 $zip->addFromString(
'transactions.csv', $log);
528 header(
'Content-Type: application/zip');
529 header(
'Content-disposition: attachment; filename='.basename($zipname));
530 header(
'Content-Length: '.filesize($zipname));
537 setEventMessages($langs->trans(
"FailedToOpenFile", $zipname),
null,
'errors');
549 $userstatic =
new User($db);
559 $title = $langs->trans(
"ComptaFiles").
' - '.$langs->trans(
"List");
566 $head[$h][0] = $_SERVER[
"PHP_SELF"];
567 $head[$h][1] = $langs->trans(
"AccountantFiles");
568 $head[$h][2] =
'AccountancyFiles';
573 print
'<form name="searchfiles" action="?action=searchfiles" method="POST">'.
"\n";
574 print
'<input type="hidden" name="token" value="'.newToken().
'">';
576 print
'<span class="opacitymedium">'.$langs->trans(
"ExportAccountingSourceDocHelp");
578 print
' '.$langs->trans(
"ExportAccountingSourceDocHelp2", $langs->transnoentitiesnoconv(
"Accounting"), $langs->transnoentitiesnoconv(
"Journals"));
583 print $langs->trans(
"ReportPeriod").
': ';
584 print
$form->selectDate($date_start,
'date_start', 0, 0, 0,
"", 1, 1, 0,
'',
'',
'',
'', 1,
'',
'',
'tzuserrel');
586 print
$form->selectDate($date_stop,
'date_stop', 0, 0, 0,
"", 1, 1, 0,
'',
'',
'',
'', 1,
'',
'',
'tzuserrel');
592 $mc->getInfo($conf->entity);
593 print
'<span class="marginleftonly marginrightonly'.(empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES) ?
' opacitymedium' :
'').
'">('.$langs->trans(
"Entity").
' : ';
595 if (!empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
597 print $mc->select_entities(
GETPOSTISSET(
'search_entity') ?
GETPOST(
'search_entity',
'int') : $mc->id,
'search_entity',
'', false, false, false, false, true);
610 $langs->load(
'projects');
611 print
'<span class="marginrightonly">'.$langs->trans(
'Project').
":</span>";
612 print
img_picto(
'',
'project').$formproject->select_projects(($socid > 0 ? $socid : -1), $projectid,
'projectid', 0, 0, 1, 0, 0, 0, 0,
'', 1, 0,
'');
613 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>';
618 foreach ($listofchoices as $choice => $val) {
619 if (empty($val[
'enabled'])) {
623 if (empty($val[
'perms'])) {
624 $disabled =
' disabled';
626 $checked = (((!
GETPOSTISSET(
'search') && $action !=
'searchfiles') ||
GETPOST($choice)) ?
' checked="checked"' :
'');
627 print
'<div class="'.($i > 0 ?
'paddingleft marginleftonly' :
'').
' inline-block marginrightonly paddingright"><input type="checkbox" id="'.$choice.
'" name="'.$choice.
'" value="1"'.$checked.$disabled.
'><label for="'.$choice.
'"> ';
628 print
img_picto($langs->trans($val[
'label']), $val[
'picto'],
'class=""').
' '.$langs->trans($val[
'label']);
629 print
'</label></div>';
633 print
'<input type="submit" class="button small" name="search" value="'.$langs->trans(
"Search").
'">';
635 print
'</form>'.
"\n";
640 if (!empty($date_start) && !empty($date_stop)) {
641 $param .=
'&date_startday='.GETPOST(
'date_startday',
'int');
642 $param .=
'&date_startmonth='.GETPOST(
'date_startmonth',
'int');
643 $param .=
'&date_startyear='.GETPOST(
'date_startyear',
'int');
644 $param .=
'&date_stopday='.GETPOST(
'date_stopday',
'int');
645 $param .=
'&date_stopmonth='.GETPOST(
'date_stopmonth',
'int');
646 $param .=
'&date_stopyear='.GETPOST(
'date_stopyear',
'int');
647 foreach ($listofchoices as $choice => $val) {
649 $param .=
'&'.$choice.
'=1';
660 print
'<a class="marginleftonly small'.(empty($TData) ?
' butActionRefused' :
' butAction').
'" href="'.$_SERVER[
"PHP_SELF"].
'?action=dl&token='.
currentToken().
'&projectid='.$projectid.
'&output=file&file='.urlencode($filename).$param.
'"';
665 print $langs->trans(
"Download");
668 $param .=
'&action=searchfiles';
692 print
'<div class="div-table-responsive">';
693 print
'<table class="noborder centpercent">';
694 print
'<tr class="liste_titre">';
695 print_liste_field_titre($arrayfields[
'type'][
'label'], $_SERVER[
"PHP_SELF"],
"item",
"", $param,
'', $sortfield, $sortorder,
'nowrap ');
696 print_liste_field_titre($arrayfields[
'date'][
'label'], $_SERVER[
"PHP_SELF"],
"date",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
697 print_liste_field_titre($arrayfields[
'date_due'][
'label'], $_SERVER[
"PHP_SELF"],
"date_due",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
698 print_liste_field_titre($arrayfields[
'ref'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"", $param,
'', $sortfield, $sortorder,
'nowraponall ');
699 print
'<td>'.$langs->trans(
"Document").
'</td>';
700 print
'<td>'.$langs->trans(
"Paid").
'</td>';
701 print
'<td align="right">'.$langs->trans(
"TotalHT").(isModEnabled(
'multicurrency') ?
' ('.$conf->currency.
')' :
'').
'</td>';
702 print
'<td align="right">'.$langs->trans(
"TotalTTC").(isModEnabled(
'multicurrency') ?
' ('.$conf->currency.
')' :
'').
'</td>';
703 print
'<td align="right">'.$langs->trans(
"TotalVAT").(isModEnabled(
'multicurrency') ?
' ('.$conf->currency.
')' :
'').
'</td>';
704 print
'<td>'.$langs->trans(
"ThirdParty").
'</td>';
705 print
'<td class="center">'.$langs->trans(
"Code").
'</td>';
706 print
'<td class="center">'.$langs->trans(
"Country").
'</td>';
707 print
'<td class="center">'.$langs->trans(
"VATIntra").
'</td>';
709 print
'<td class="center">'.$langs->trans(
"Currency").
'</td>';
714 print
'<tr class="oddeven"><td colspan="13"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td>';
727 $totalVAT_credit = 0;
730 foreach ($TData as $data) {
734 print
'<tr class="oddeven '.$html_class.
'">';
737 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($langs->trans($data[
'item'])).
'">'.$langs->trans($data[
'item']).
'</td>';
740 print
'<td class="center">';
745 print
'<td class="center">';
750 print
'<td class="nowraponall tdoverflowmax150">';
752 if ($data[
'item'] ==
'Invoice') {
753 $invoice->id = $data[
'id'];
754 $invoice->ref = $data[
'ref'];
755 $invoice->total_ht = $data[
'amount_ht'];
756 $invoice->total_ttc = $data[
'amount_ttc'];
757 $invoice->total_tva = $data[
'amount_vat'];
758 $invoice->multicurrency_code = $data[
'currency'];
759 print $invoice->getNomUrl(1,
'', 0, 0,
'', 0, 0, 0);
760 } elseif ($data[
'item'] ==
'SupplierInvoice') {
761 $supplier_invoice->id = $data[
'id'];
762 $supplier_invoice->ref = $data[
'ref'];
763 $supplier_invoice->total_ht = $data[
'amount_ht'];
764 $supplier_invoice->total_ttc = $data[
'amount_ttc'];
765 $supplier_invoice->total_tva = $data[
'amount_vat'];
766 $supplier_invoice->multicurrency_code = $data[
'currency'];
767 print $supplier_invoice->getNomUrl(1,
'', 0, 0,
'', 0, 0, 0);
768 } elseif ($data[
'item'] ==
'ExpenseReport') {
769 $expensereport->id = $data[
'id'];
770 $expensereport->ref = $data[
'ref'];
771 print $expensereport->getNomUrl(1, 0, 0,
'', 0, 0);
772 } elseif ($data[
'item'] ==
'SalaryPayment') {
773 $salary_payment->id = $data[
'id'];
774 $salary_payment->ref = $data[
'ref'];
775 print $salary_payment->getNomUrl(1);
776 } elseif ($data[
'item'] ==
'Donation') {
777 $don->id = $data[
'id'];
778 $don->ref = $data[
'ref'];
779 print $don->getNomUrl(1, 0,
'', 0);
780 } elseif ($data[
'item'] ==
'SocialContributions') {
781 $charge_sociales->id = $data[
'id'];
782 $charge_sociales->ref = $data[
'ref'];
783 print $charge_sociales->getNomUrl(1, 0, 0, 0, 0);
784 } elseif ($data[
'item'] ==
'VariousPayment') {
785 $various_payment->id = $data[
'id'];
786 $various_payment->ref = $data[
'ref'];
787 print $various_payment->getNomUrl(1,
'', 0, 0);
788 } elseif ($data[
'item'] ==
'LoanPayment') {
789 $payment_loan->id = $data[
'id'];
790 $payment_loan->ref = $data[
'ref'];
791 print $payment_loan->getNomUrl(1, 0, 0,
'', 0);
798 print
'<td class="tdoverflowmax150">';
799 if (!empty($data[
'files'])) {
800 foreach ($data[
'files'] as $id => $filecursor) {
801 $tmppreview = $formfile->showPreview($filecursor, $filecursor[
'modulepart'], $filecursor[
'subdir'].
'/'.$filecursor[
'name'], 0);
805 $filename = ($filecursor[
'name'] ? $filecursor[
'name'] : $filecursor[
'ref']);
806 print
'<a href='.DOL_URL_ROOT.
'/'.$filecursor[
'link'].
' target="_blank" rel="noopener noreferrer" title="'.
dol_escape_htmltag($filename).
'">';
807 if (empty($tmppreview)) {
808 print
img_picto(
'',
'generic',
'',
false, 0, 0,
'',
'pictonopreview pictofixedwidth paddingright');
817 print
'<td class="center">'.($data[
'paid'] ?
yn($data[
'paid']) :
'').
'</td>';
820 print
'<td align="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_ht'] : -$data[
'amount_ht'],
'MT')).
"</span></td>\n";
822 print
'<td align="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_ttc'] : -$data[
'amount_ttc'],
'MT')).
"</span></td>\n";
824 print
'<td align="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_vat'] : -$data[
'amount_vat'],
'MT')).
"</span></td>\n";
826 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($data[
'thirdparty_name']).
'">'.
dol_escape_htmltag($data[
'thirdparty_name']).
"</td>\n";
828 print
'<td class="center">'.$data[
'thirdparty_code'].
"</td>\n";
830 print
'<td class="center">'.$data[
'country_code'].
"</td>\n";
833 print
'<td class="tdoverflowmax150 right" title="'.dol_escape_htmltag($data[
'vatnum']).
'">'.
dol_escape_htmltag($data[
'vatnum']).
"</td>\n";
836 $totalET_credit += $data[
'amount_ht'];
837 $totalIT_credit += $data[
'amount_ttc'];
838 $totalVAT_credit += $data[
'amount_vat'];
840 $totalET_debit -= $data[
'amount_ht'];
841 $totalIT_debit -= $data[
'amount_ttc'];
842 $totalVAT_debit -= $data[
'amount_vat'];
846 print
'<td class="center">'.$data[
'currency'].
"</td>\n";
853 print
'<tr class="liste_total">';
854 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
' '.$langs->trans(
'Income').
'</td>';
855 print
'<td align="right">'.price(
price2num($totalET_credit,
'MT')).
'</td>';
856 print
'<td align="right">'.price(
price2num($totalIT_credit,
'MT')).
'</td>';
857 print
'<td align="right">'.price(
price2num($totalVAT_credit,
'MT')).
'</td>';
858 print
'<td colspan="4"></td>';
864 print
'<tr class="liste_total">';
865 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
' '.$langs->trans(
'Outcome').
'</td>';
866 print
'<td align="right">'.price(
price2num($totalET_debit,
'MT')).
'</td>';
867 print
'<td align="right">'.price(
price2num($totalIT_debit,
'MT')).
'</td>';
868 print
'<td align="right">'.price(
price2num($totalVAT_debit,
'MT')).
'</td>';
869 print
'<td colspan="4"></td>';
875 print
'<tr class="liste_total">';
876 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
'</td>';
877 print
'<td align="right">'.price(
price2num($totalET_credit + $totalET_debit,
'MT')).
'</td>';
878 print
'<td align="right">'.price(
price2num($totalIT_credit + $totalIT_debit,
'MT')).
'</td>';
879 print
'<td align="right">'.price(
price2num($totalVAT_credit + $totalVAT_debit,
'MT')).
'</td>';
880 print
'<td colspan="4"></td>';