29if ((array_key_exists(
'action', $_GET) && $_GET[
'action'] ==
'dl') || (array_key_exists(
'action', $_POST) && $_POST[
'action'] ==
'dl')) {
30 if (!defined(
'NOTOKENRENEWAL')) {
31 define(
'NOTOKENRENEWAL',
'1');
36require
'../main.inc.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/paymentvarious.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/loan/class/paymentloan.class.php';
52if (isModEnabled(
'project')) {
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');
83$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) :
GETPOST(
"page",
'int');
84if (empty($page) || $page == -1) {
87$offset = $limit * $page;
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),
112if (!isModEnabled(
'comptabilite') && !isModEnabled(
'accounting')) {
115if ($user->socid > 0) {
120$arrayofentities = array();
121if (isModEnabled(
'multicompany') && is_object($mc)) {
122 $arrayofentities = $mc->getEntitiesList();
125$entity = (GETPOSTISSET(
'entity') ?
GETPOST(
'entity',
'int') : (GETPOSTISSET(
'search_entity') ?
GETPOST(
'search_entity',
'int') : $conf->entity));
126if (isModEnabled(
'multicompany') && is_object($mc)) {
127 if (empty($entity) && !empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
128 $entity =
'0,'.join(
',', array_keys($arrayofentities));
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();
161if (($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,";
182 $sql .=
" t.localtax1, t.localtax2, t.revenuestamp,";
183 $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";
184 $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";
185 $sql .=
" WHERE datef between ".$wheretail;
186 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
187 $sql .=
" AND t.fk_statut <> ".Facture::STATUS_DRAFT;
188 if (!empty($projectid)) $sql .=
" AND fk_projet = ".((int) $projectid);
191 if (
GETPOST(
'selectsupplierinvoices') && !empty($listofchoices[
'selectsupplierinvoices'][
'perms'])) {
193 $sql .=
" UNION ALL";
195 $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,";
196 $sql .=
" t.localtax1, t.localtax2, 0 as revenuestamp,";
197 $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";
198 $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";
199 $sql .=
" WHERE datef between ".$wheretail;
200 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
201 $sql .=
" AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
202 if (!empty($projectid)) $sql .=
" AND fk_projet = ".((int) $projectid);
205 if (
GETPOST(
'selectexpensereports') && !empty($listofchoices[
'selectexpensereports'][
'perms']) && empty($projectid)) {
207 $sql .=
" UNION ALL";
209 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, t.paid, t.total_ht, t.total_ttc, t.total_tva as total_vat,";
210 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
211 $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";
212 $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";
213 $sql .=
" WHERE date_fin between ".$wheretail;
214 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
215 $sql .=
" AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
218 if (
GETPOST(
'selectdonations') && !empty($listofchoices[
'selectdonations'][
'perms'])) {
220 $sql .=
" UNION ALL";
222 $sql .=
" SELECT t.rowid as id, t.entity, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat,";
223 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
224 $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";
225 $sql .=
" FROM ".MAIN_DB_PREFIX.
"don as t LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as c ON c.rowid = t.fk_country";
226 $sql .=
" WHERE datedon between ".$wheretail;
227 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
228 $sql .=
" AND t.fk_statut <> ".Don::STATUS_DRAFT;
229 if (!empty($projectid)) $sql .=
" AND fk_projet = ".((int) $projectid);
232 if (
GETPOST(
'selectpaymentsofsalaries') && !empty($listofchoices[
'selectpaymentsofsalaries'][
'perms'])) {
234 $sql .=
" UNION ALL";
236 $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,";
237 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
238 $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";
239 $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";
240 $sql .=
" WHERE datep between ".$wheretail;
241 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
243 if (!empty($projectid)) $sql .=
" AND fk_projet = ".((int) $projectid);
246 if (
GETPOST(
'selectsocialcontributions') && !empty($listofchoices[
'selectsocialcontributions'][
'perms'])) {
248 $sql .=
" UNION ALL";
250 $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,";
251 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
252 $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";
253 $sql .=
" FROM ".MAIN_DB_PREFIX.
"chargesociales as t";
254 $sql .=
" WHERE t.date_ech between ".$wheretail;
255 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
257 if (!empty($projectid)) $sql .=
" AND fk_projet = ".((int) $projectid);
260 if (
GETPOST(
'selectvariouspayment') && !empty($listofchoices[
'selectvariouspayment'][
'perms'])) {
262 $sql .=
" UNION ALL";
264 $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,";
265 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
266 $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";
267 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_various as t";
268 $sql .=
" WHERE datep between ".$wheretail;
269 $sql .=
" AND t.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
270 if (!empty($projectid)) $sql .=
" AND fk_projet = ".((int) $projectid);
273 if (
GETPOST(
'selectloanspayment') && !empty($listofchoices[
'selectloanspayment'][
'perms']) && empty($projectid)) {
275 $sql .=
" UNION ALL";
277 $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,";
278 $sql .=
" 0 as localtax1, 0 as localtax2, 0 as revenuestamp,";
279 $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";
280 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_loan as t LEFT JOIN ".MAIN_DB_PREFIX.
"loan as l ON l.rowid = t.fk_loan";
281 $sql .=
" WHERE datep between ".$wheretail;
282 $sql .=
" AND l.entity IN (".$db->sanitize($entity == 1 ?
'0,1' : $entity).
')';
286 $sql .= $db->order($sortfield, $sortorder);
289 $resd = $db->query($sql);
294 $numd = $db->num_rows($resd);
296 $tmpinvoice =
new Facture($db);
298 $tmpdonation =
new Don($db);
303 $objd = $db->fetch_object($resd);
305 switch ($objd->item) {
309 $upload_dir = $conf->facture->dir_output.
'/'.$subdir;
310 $link =
"document.php?modulepart=facture&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
311 $modulepart =
"facture";
313 case "SupplierInvoice":
314 $tmpinvoicesupplier->fetch($objd->id);
315 $subdir =
get_exdir($tmpinvoicesupplier->id, 2, 0, 1, $tmpinvoicesupplier,
'invoice_supplier');
317 $upload_dir = $conf->fournisseur->facture->dir_output.
'/'.$subdir;
318 $link =
"document.php?modulepart=facture_fournisseur&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
319 $modulepart =
"facture_fournisseur";
321 case "ExpenseReport":
324 $upload_dir = $conf->expensereport->dir_output.
'/'.$subdir;
325 $link =
"document.php?modulepart=expensereport&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
326 $modulepart =
"expensereport";
328 case "SalaryPayment":
331 $upload_dir = $conf->salaries->dir_output.
'/'.$subdir;
332 $link =
"document.php?modulepart=salaries&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
333 $modulepart =
"salaries";
336 $tmpdonation->fetch($objp->id);
337 $subdir =
get_exdir(0, 0, 0, 0, $tmpdonation,
'donation');
339 $upload_dir = $conf->don->dir_output.
'/'.$subdir;
340 $link =
"document.php?modulepart=don&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
343 case "SocialContributions":
346 $upload_dir = $conf->tax->dir_output.
'/'.$subdir;
347 $link =
"document.php?modulepart=tax&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
350 case "VariousPayment":
353 $upload_dir = $conf->bank->dir_output.
'/'.$subdir;
354 $link =
"document.php?modulepart=banque&file=".str_replace(
'/',
'%2F', $subdir).
'%2F';
355 $modulepart =
"banque";
360 $upload_dir = $conf->loan->dir_output.
'/'.$subdir;
371 if (!empty($upload_dir)) {
374 $files =
dol_dir_list($upload_dir,
"files", 0,
'',
'(\.meta|_preview.*\.png)$',
'', SORT_ASC, 1);
377 if (count($files) < 1) {
379 $nofile[
'id'] = $objd->id;
380 $nofile[
'entity'] = $objd->entity;
381 $nofile[
'date'] = $db->jdate($objd->date);
382 $nofile[
'date_due'] = $db->jdate($objd->date_due);
383 $nofile[
'paid'] = $objd->paid;
384 $nofile[
'amount_ht'] = $objd->total_ht;
385 $nofile[
'amount_ttc'] = $objd->total_ttc;
386 $nofile[
'amount_vat'] = $objd->total_vat;
387 $nofile[
'amount_localtax1'] = $objd->localtax1;
388 $nofile[
'amount_localtax2'] = $objd->localtax2;
389 $nofile[
'amount_revenuestamp'] = $objd->revenuestamp;
390 $nofile[
'ref'] = ($objd->ref ? $objd->ref : $objd->id);
391 $nofile[
'fk'] = $objd->fk_soc;
392 $nofile[
'item'] = $objd->item;
393 $nofile[
'thirdparty_name'] = $objd->thirdparty_name;
394 $nofile[
'thirdparty_code'] = $objd->thirdparty_code;
395 $nofile[
'country_code'] = $objd->country_code;
396 $nofile[
'vatnum'] = $objd->vatnum;
397 $nofile[
'sens'] = $objd->sens;
398 $nofile[
'currency'] = $objd->currency;
399 $nofile[
'link'] =
'';
400 $nofile[
'name'] =
'';
402 $filesarray[$nofile[
'item'].
'_'.$nofile[
'id']] = $nofile;
404 foreach ($files as $key => $file) {
405 $file[
'id'] = $objd->id;
406 $file[
'entity'] = $objd->entity;
407 $file[
'date'] = $db->jdate($objd->date);
408 $file[
'date_due'] = $db->jdate($objd->date_due);
409 $file[
'paid'] = $objd->paid;
410 $file[
'amount_ht'] = $objd->total_ht;
411 $file[
'amount_ttc'] = $objd->total_ttc;
412 $file[
'amount_vat'] = $objd->total_vat;
413 $file[
'amount_localtax1'] = $objd->localtax1;
414 $file[
'amount_localtax2'] = $objd->localtax2;
415 $file[
'amount_revenuestamp'] = $objd->revenuestamp;
416 $file[
'ref'] = ($objd->ref ? $objd->ref : $objd->id);
417 $file[
'fk'] = $objd->fk_soc;
418 $file[
'item'] = $objd->item;
419 $file[
'thirdparty_name'] = $objd->thirdparty_name;
420 $file[
'thirdparty_code'] = $objd->thirdparty_code;
421 $file[
'country_code'] = $objd->country_code;
422 $file[
'vatnum'] = $objd->vatnum;
423 $file[
'sens'] = $objd->sens;
424 $file[
'currency'] = $objd->currency;
427 if (empty($filesarray[$file[
'item'].
'_'.$file[
'id']])) {
428 $filesarray[$file[
'item'].
'_'.$file[
'id']] = $file;
432 if (empty($filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'])) {
433 $filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'] = array();
435 $filesarray[$file[
'item'].
'_'.$file[
'id']][
'files'][] = array(
436 'link' => $link.urlencode($file[
'name']),
437 'name'=>$file[
'name'],
439 'fullname' => $file[
'fullname'],
440 'relpath' =>
'/'.$file[
'name'],
441 'relpathnamelang' => $langs->trans($file[
'item']).
'/'.$file[
'name'],
442 'modulepart' => $modulepart,
444 'currency' => $file[
'currency']
471$dirfortmpfile = ($conf->accounting->dir_temp ? $conf->accounting->dir_temp : $conf->comptabilite->dir_temp);
472if (empty($dirfortmpfile)) {
473 setEventMessages($langs->trans(
"ErrorNoAccountingModuleEnabled"),
null,
'errors');
478if ($result && $action ==
"dl" && !$error) {
479 if (!extension_loaded(
'zip')) {
484 $log = $langs->transnoentitiesnoconv(
"Type");
485 if (isModEnabled(
'multicompany') && is_object($mc)) {
486 $log .=
','.$langs->transnoentitiesnoconv(
"Entity");
488 $log .=
','.$langs->transnoentitiesnoconv(
"Date");
489 $log .=
','.$langs->transnoentitiesnoconv(
"DateDue");
490 $log .=
','.$langs->transnoentitiesnoconv(
"Ref");
491 $log .=
','.$langs->transnoentitiesnoconv(
"TotalHT");
492 $log .=
','.$langs->transnoentitiesnoconv(
"TotalTTC");
493 $log .=
','.$langs->transnoentitiesnoconv(
"TotalVAT");
494 $log .=
','.$langs->transcountrynoentities(
"TotalLT1", $mysoc->country_code);
495 $log .=
','.$langs->transcountrynoentities(
"TotalLT2", $mysoc->country_code);
496 $log .=
','.$langs->transnoentitiesnoconv(
"RevenueStamp");
497 $log .=
','.$langs->transnoentitiesnoconv(
"Paid");
498 $log .=
','.$langs->transnoentitiesnoconv(
"Document");
499 $log .=
','.$langs->transnoentitiesnoconv(
"ItemID");
500 $log .=
','.$langs->transnoentitiesnoconv(
"ThirdParty");
501 $log .=
','.$langs->transnoentitiesnoconv(
"Code");
502 $log .=
','.$langs->transnoentitiesnoconv(
"Country");
503 $log .=
','.$langs->transnoentitiesnoconv(
"VATIntra");
504 $log .=
','.$langs->transnoentitiesnoconv(
"Sens").
"\n";
506 if (!empty($projectid)) {
508 $project->fetch($projectid);
510 $zipname .=
'_'.$project->ref;
513 $zipname .=
'_export.zip';
517 $zip =
new ZipArchive;
518 $res = $zip->open($zipname, ZipArchive::OVERWRITE | ZipArchive::CREATE);
520 foreach ($filesarray as $key => $file) {
521 if (!empty($file[
'files'])) {
522 foreach ($file[
'files'] as $filecursor) {
523 if (file_exists($filecursor[
"fullname"])) {
524 $zip->addFile($filecursor[
"fullname"], $filecursor[
"relpathnamelang"]);
529 $log .=
'"'.$langs->trans($file[
'item']).
'"';
530 if (isModEnabled(
'multicompany') && is_object($mc)) {
531 $log .=
',"'.(empty($arrayofentities[$file[
'entity']]) ? $file[
'entity'] : $arrayofentities[$file[
'entity']]).
'"';
533 $log .=
','.dol_print_date($file[
'date'],
'dayrfc');
534 $log .=
','.dol_print_date($file[
'date_due'],
'dayrfc');
535 $log .=
',"'.$file[
'ref'].
'"';
536 $log .=
','.$file[
'amount_ht'];
537 $log .=
','.$file[
'amount_ttc'];
538 $log .=
','.$file[
'amount_vat'];
539 $log .=
','.$file[
'amount_localtax1'];
540 $log .=
','.$file[
'amount_localtax2'];
541 $log .=
','.$file[
'amount_revenuestamp'];
542 $log .=
','.$file[
'paid'];
543 $log .=
',"'.$file[
"name"].
'"';
544 $log .=
','.$file[
'fk'];
545 $log .=
',"'.$file[
'thirdparty_name'].
'"';
546 $log .=
',"'.$file[
'thirdparty_code'].
'"';
547 $log .=
',"'.$file[
'country_code'].
'"';
548 $log .=
',"'.$file[
'vatnum'].
'"';
549 $log .=
',"'.$file[
'sens'].
'"';
552 $zip->addFromString(
'transactions.csv', $log);
556 header(
'Content-Type: application/zip');
557 header(
'Content-disposition: attachment; filename='.basename($zipname));
558 header(
'Content-Length: '.filesize($zipname));
565 setEventMessages($langs->trans(
"FailedToOpenFile", $zipname),
null,
'errors');
575$form =
new Form($db);
577$userstatic =
new User($db);
587$title = $langs->trans(
"ComptaFiles").
' - '.$langs->trans(
"List");
594$head[$h][0] = $_SERVER[
"PHP_SELF"];
595$head[$h][1] = $langs->trans(
"AccountantFiles");
596$head[$h][2] =
'AccountancyFiles';
601print
'<form name="searchfiles" action="?action=searchfiles" method="POST">'.
"\n";
602print
'<input type="hidden" name="token" value="'.newToken().
'">';
604print
'<span class="opacitymedium">'.$langs->trans(
"ExportAccountingSourceDocHelp");
605if (isModEnabled(
'accounting')) {
606 print
' '.$langs->trans(
"ExportAccountingSourceDocHelp2", $langs->transnoentitiesnoconv(
"Accounting"), $langs->transnoentitiesnoconv(
"Journals"));
611print $langs->trans(
"ReportPeriod").
': ';
612print $form->selectDate($date_start,
'date_start', 0, 0, 0,
"", 1, 1, 0,
'',
'',
'',
'', 1,
'',
'',
'tzuserrel');
614print $form->selectDate($date_stop,
'date_stop', 0, 0, 0,
"", 1, 1, 0,
'',
'',
'',
'', 1,
'',
'',
'tzuserrel');
619if (isModEnabled(
'multicompany') && is_object($mc)) {
620 $mc->getInfo($conf->entity);
621 print
'<span class="marginleftonly marginrightonly'.(empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES) ?
' opacitymedium' :
'').
'">('.$langs->trans(
"Entity").
' : ';
623 if (!empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) {
625 print $mc->select_entities(GETPOSTISSET(
'search_entity') ?
GETPOST(
'search_entity',
'int') : $mc->id,
'search_entity',
'', false, false, false, false, true);
636if (isModEnabled(
'projet')) {
638 $langs->load(
'projects');
639 print
'<span class="marginrightonly">'.$langs->trans(
'Project').
":</span>";
640 print
img_picto(
'',
'project').$formproject->select_projects(($socid > 0 ? $socid : -1), $projectid,
'projectid', 0, 0, 1, 0, 0, 0, 0,
'', 1, 0,
'');
641 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>';
646foreach ($listofchoices as $choice => $val) {
647 if (empty($val[
'enabled'])) {
651 if (empty($val[
'perms'])) {
652 $disabled =
' disabled';
654 $checked = (((!GETPOSTISSET(
'search') && $action !=
'searchfiles') ||
GETPOST($choice)) ?
' checked="checked"' :
'');
655 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.
'"> ';
656 print
img_picto($langs->trans($val[
'label']), $val[
'picto'],
'class=""').
' '.$langs->trans($val[
'label']);
657 print
'</label></div>';
661print
'<input type="submit" class="button small" name="search" value="'.$langs->trans(
"Search").
'">';
668if (!empty($date_start) && !empty($date_stop)) {
669 $param .=
'&date_startday='.GETPOST(
'date_startday',
'int');
670 $param .=
'&date_startmonth='.GETPOST(
'date_startmonth',
'int');
671 $param .=
'&date_startyear='.GETPOST(
'date_startyear',
'int');
672 $param .=
'&date_stopday='.GETPOST(
'date_stopday',
'int');
673 $param .=
'&date_stopmonth='.GETPOST(
'date_stopmonth',
'int');
674 $param .=
'&date_stopyear='.GETPOST(
'date_stopyear',
'int');
675 foreach ($listofchoices as $choice => $val) {
677 $param .=
'&'.$choice.
'=1';
688 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.
'"';
693 print $langs->trans(
"Download");
696 $param .=
'&action=searchfiles';
720 print
'<div class="div-table-responsive">';
721 print
'<table class="noborder centpercent">';
722 print
'<tr class="liste_titre">';
723 print_liste_field_titre($arrayfields[
'type'][
'label'], $_SERVER[
"PHP_SELF"],
"item",
"", $param,
'', $sortfield, $sortorder,
'nowrap ');
724 print_liste_field_titre($arrayfields[
'date'][
'label'], $_SERVER[
"PHP_SELF"],
"date",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
725 print_liste_field_titre($arrayfields[
'date_due'][
'label'], $_SERVER[
"PHP_SELF"],
"date_due",
"", $param,
'', $sortfield, $sortorder,
'center nowrap ');
726 print_liste_field_titre($arrayfields[
'ref'][
'label'], $_SERVER[
"PHP_SELF"],
"",
"", $param,
'', $sortfield, $sortorder,
'nowraponall ');
727 print
'<th>'.$langs->trans(
"Document").
'</th>';
728 print
'<th>'.$langs->trans(
"Paid").
'</th>';
729 print
'<th class="right">'.$langs->trans(
"TotalHT").(isModEnabled(
'multicurrency') ?
' ('.$langs->getCurrencySymbol($conf->currency).
')' :
'').
'</th>';
730 print
'<th class="right">'.$langs->trans(
"TotalTTC").(isModEnabled(
'multicurrency') ?
' ('.$langs->getCurrencySymbol($conf->currency).
')' :
'').
'</th>';
731 print
'<th class="right">'.$langs->trans(
"TotalVAT").(isModEnabled(
'multicurrency') ?
' ('.$langs->getCurrencySymbol($conf->currency).
')' :
'').
'</th>';
733 print
'<th>'.$langs->trans(
"ThirdParty").
'</th>';
734 print
'<th class="center">'.$langs->trans(
"Code").
'</th>';
735 print
'<th class="center">'.$langs->trans(
"Country").
'</th>';
736 print
'<th class="center">'.$langs->trans(
"VATIntra").
'</th>';
737 if (isModEnabled(
'multicurrency')) {
738 print
'<th class="center">'.$langs->trans(
"Currency").
'</th>';
743 print
'<tr class="oddeven"><td colspan="13"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td>';
744 if (isModEnabled(
'multicurrency')) {
756 $totalVAT_credit = 0;
759 foreach ($TData as $data) {
763 print
'<tr class="oddeven '.$html_class.
'">';
766 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($langs->trans($data[
'item'])).
'">'.$langs->trans($data[
'item']).
'</td>';
769 print
'<td class="center">';
774 print
'<td class="center">';
779 print
'<td class="nowraponall tdoverflowmax150">';
781 if ($data[
'item'] ==
'Invoice') {
782 $invoice->id = $data[
'id'];
783 $invoice->ref = $data[
'ref'];
784 $invoice->total_ht = $data[
'amount_ht'];
785 $invoice->total_ttc = $data[
'amount_ttc'];
786 $invoice->total_tva = $data[
'amount_vat'];
787 $invoice->total_localtax1 = $data[
'amount_localtax1'];
788 $invoice->total_localtax2 = $data[
'amount_localtax2'];
789 $invoice->revenuestamp = $data[
'amount_revenuestamp'];
790 $invoice->multicurrency_code = $data[
'currency'];
791 print $invoice->getNomUrl(1,
'', 0, 0,
'', 0, 0, 0);
792 } elseif ($data[
'item'] ==
'SupplierInvoice') {
793 $supplier_invoice->id = $data[
'id'];
794 $supplier_invoice->ref = $data[
'ref'];
795 $supplier_invoice->total_ht = $data[
'amount_ht'];
796 $supplier_invoice->total_ttc = $data[
'amount_ttc'];
797 $supplier_invoice->total_tva = $data[
'amount_vat'];
798 $supplier_invoice->total_localtax1 = $data[
'amount_localtax1'];
799 $supplier_invoice->total_localtax2 = $data[
'amount_localtax2'];
800 $supplier_invoice->revenuestamp = $data[
'amount_revenuestamp'];
801 $supplier_invoice->multicurrency_code = $data[
'currency'];
802 print $supplier_invoice->getNomUrl(1,
'', 0, 0,
'', 0, 0, 0);
803 } elseif ($data[
'item'] ==
'ExpenseReport') {
804 $expensereport->id = $data[
'id'];
805 $expensereport->ref = $data[
'ref'];
806 print $expensereport->getNomUrl(1, 0, 0,
'', 0, 0);
807 } elseif ($data[
'item'] ==
'SalaryPayment') {
808 $salary_payment->id = $data[
'id'];
809 $salary_payment->ref = $data[
'ref'];
810 print $salary_payment->getNomUrl(1);
811 } elseif ($data[
'item'] ==
'Donation') {
812 $don->id = $data[
'id'];
813 $don->ref = $data[
'ref'];
814 print $don->getNomUrl(1, 0,
'', 0);
815 } elseif ($data[
'item'] ==
'SocialContributions') {
816 $charge_sociales->id = $data[
'id'];
817 $charge_sociales->ref = $data[
'ref'];
818 print $charge_sociales->getNomUrl(1, 0, 0, 0, 0);
819 } elseif ($data[
'item'] ==
'VariousPayment') {
820 $various_payment->id = $data[
'id'];
821 $various_payment->ref = $data[
'ref'];
822 print $various_payment->getNomUrl(1,
'', 0, 0);
823 } elseif ($data[
'item'] ==
'LoanPayment') {
824 $payment_loan->id = $data[
'id'];
825 $payment_loan->ref = $data[
'ref'];
826 print $payment_loan->getNomUrl(1, 0, 0,
'', 0);
833 print
'<td class="tdoverflowmax150">';
834 if (!empty($data[
'files'])) {
835 foreach ($data[
'files'] as $id => $filecursor) {
836 $tmppreview = $formfile->showPreview($filecursor, $filecursor[
'modulepart'], $filecursor[
'subdir'].
'/'.$filecursor[
'name'], 0);
840 $filename = ($filecursor[
'name'] ? $filecursor[
'name'] : $filecursor[
'ref']);
841 print
'<a href='.DOL_URL_ROOT.
'/'.$filecursor[
'link'].
' target="_blank" rel="noopener noreferrer" title="'.
dol_escape_htmltag($filename).
'">';
842 if (empty($tmppreview)) {
843 print
img_picto(
'',
'generic',
'',
false, 0, 0,
'',
'pictonopreview pictofixedwidth paddingright');
852 print
'<td class="center">'.($data[
'paid'] ?
yn($data[
'paid']) :
'').
'</td>';
855 print
'<td class="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_ht'] : -$data[
'amount_ht'],
'MT')).
"</span></td>\n";
857 print
'<td class="right"><span class="amount">';
858 $tooltip = $langs->trans(
"TotalVAT").
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_vat'] : -$data[
'amount_vat'],
'MT'));
859 if (!empty($data[
'amount_localtax1'])) {
860 $tooltip .=
'<br>'.$langs->transcountrynoentities(
"TotalLT1", $mysoc->country_code).
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_localtax1'] : -$data[
'amount_localtax1'],
'MT'));
862 if (!empty($data[
'amount_localtax2'])) {
863 $tooltip .=
'<br>'.$langs->transcountrynoentities(
"TotalLT2", $mysoc->country_code).
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_localtax2'] : -$data[
'amount_localtax2'],
'MT'));
865 if (!empty($data[
'amount_revenuestamp'])) {
866 $tooltip .=
'<br>'.$langs->trans(
"RevenueStamp").
' : '.
price(
price2num($data[
'sens'] ? $data[
'amount_revenuestamp'] : -$data[
'amount_revenuestamp'],
'MT'));
868 print
'<span class="classfortooltip" title="'.dol_escape_htmltag($tooltip).
'">'.
price(
price2num($data[
'sens'] ? $data[
'amount_ttc'] : -$data[
'amount_ttc'],
'MT')).
'</span>';
869 print
"</span></td>\n";
871 print
'<td class="right"><span class="amount">'.price(
price2num($data[
'sens'] ? $data[
'amount_vat'] : -$data[
'amount_vat'],
'MT')).
"</span></td>\n";
873 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($data[
'thirdparty_name']).
'">'.
dol_escape_htmltag($data[
'thirdparty_name']).
"</td>\n";
875 print
'<td class="center">'.$data[
'thirdparty_code'].
"</td>\n";
877 print
'<td class="center">'.$data[
'country_code'].
"</td>\n";
880 print
'<td class="tdoverflowmax150 right" title="'.dol_escape_htmltag($data[
'vatnum']).
'">'.
dol_escape_htmltag($data[
'vatnum']).
"</td>\n";
883 $totalET_credit += $data[
'amount_ht'];
884 $totalIT_credit += $data[
'amount_ttc'];
885 $totalVAT_credit += $data[
'amount_vat'];
887 $totalET_debit -= $data[
'amount_ht'];
888 $totalIT_debit -= $data[
'amount_ttc'];
889 $totalVAT_debit -= $data[
'amount_vat'];
892 if (isModEnabled(
'multicurrency')) {
893 print
'<td class="center">'.$data[
'currency'].
"</td>\n";
900 print
'<tr class="liste_total">';
901 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
' '.$langs->trans(
'Income').
'</td>';
902 print
'<td class="right">'.price(
price2num($totalET_credit,
'MT')).
'</td>';
903 print
'<td class="right">'.price(
price2num($totalIT_credit,
'MT')).
'</td>';
904 print
'<td class="right">'.price(
price2num($totalVAT_credit,
'MT')).
'</td>';
905 print
'<td colspan="4"></td>';
906 if (isModEnabled(
'multicurrency')) {
911 print
'<tr class="liste_total">';
912 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
' '.$langs->trans(
'Outcome').
'</td>';
913 print
'<td class="right">'.price(
price2num($totalET_debit,
'MT')).
'</td>';
914 print
'<td class="right">'.price(
price2num($totalIT_debit,
'MT')).
'</td>';
915 print
'<td class="right">'.price(
price2num($totalVAT_debit,
'MT')).
'</td>';
916 print
'<td colspan="4"></td>';
917 if (isModEnabled(
'multicurrency')) {
922 print
'<tr class="liste_total">';
923 print
'<td colspan="6" class="right">'.$langs->trans(
'Total').
'</td>';
924 print
'<td class="right">'.price(
price2num($totalET_credit + $totalET_debit,
'MT')).
'</td>';
925 print
'<td class="right">'.price(
price2num($totalIT_credit + $totalIT_debit,
'MT')).
'</td>';
926 print
'<td class="right">'.price(
price2num($totalVAT_credit + $totalVAT_debit,
'MT')).
'</td>';
927 print
'<td colspan="4"></td>';
928 if (isModEnabled(
'multicurrency')) {
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Classe permettant la gestion des paiements des charges La tva collectee n'est calculee que sur les fa...
Class to manage donations.
Class to manage Trips and Expenses.
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($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 informations (by default a local PHP server timestamp) Re...
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 '.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
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.
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.