120 global
$conf, $hookmanager;
121 $hookmanager->initHooks(array(
'taxvatlist'));
124 if ((
$date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
125 dol_print_error(
null,
'Bad value of input parameter for tax_by_thirdparty');
129 if ($direction ==
'sell') {
130 $invoicetable =
'facture';
131 $invoicedettable =
'facturedet';
132 $fk_facture =
'fk_facture';
133 $fk_facture2 =
'fk_facture';
134 $fk_payment =
'fk_paiement';
135 $total_tva =
'total_tva';
136 $paymenttable =
'paiement';
137 $paymentfacturetable =
'paiement_facture';
138 $invoicefieldref =
'ref';
139 } elseif ($direction ==
'buy') {
140 $invoicetable =
'facture_fourn';
141 $invoicedettable =
'facture_fourn_det';
142 $fk_facture =
'fk_facture_fourn';
143 $fk_facture2 =
'fk_facturefourn';
144 $fk_payment =
'fk_paiementfourn';
146 $paymenttable =
'paiementfourn';
147 $paymentfacturetable =
'paiementfourn_facturefourn';
148 $invoicefieldref =
'ref';
150 dol_print_error(
null,
'Invalid "direction" - must be buy or sell - found ' . $direction);
154 if (strpos($type,
'localtax') === 0) {
155 $f_rate = $type.
'_tx';
160 $total_localtax1 =
'total_localtax1';
161 $total_localtax2 =
'total_localtax2';
168 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
169 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
171 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
172 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
173 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
174 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
175 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
176 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
177 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
178 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
179 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
180 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
181 $sql .=
" ,'' as datep";
182 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
183 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
184 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
185 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
186 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
188 if ($direction ==
'buy') {
201 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
202 $sql .=
" AND s.rowid = f.fk_soc";
205 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
208 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
211 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
212 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
215 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
217 $sql .=
" AND (d.product_type = 0";
218 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
220 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
223 $parameters = array(
'invoicealias' =>
'f',
'issupplier' => ($direction ==
'buy' ? 1 : 0),
'datefield' =>
'datef');
224 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
225 $sql .= $hookmanager->resPrint;
226 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
229 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
230 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
231 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
232 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
233 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
234 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
235 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
236 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
237 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
238 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
239 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
240 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
241 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf,";
242 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa,";
243 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
244 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
245 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
246 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
248 if ($direction ==
'buy') {
261 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
262 $sql .=
" AND s.rowid = f.fk_soc";
263 $sql .=
" AND pf.".$db->sanitize($fk_facture2).
" = f.rowid";
264 $sql .=
" AND pa.rowid = pf.".$db->sanitize($fk_payment);
267 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
270 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
273 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
274 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
277 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
279 $sql .=
" AND (d.product_type = 0";
280 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
282 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
285 $parameters = array(
'invoicealias' =>
'f',
'issupplier' => ($direction ==
'buy' ? 1 : 0),
'datefield' =>
'datef');
286 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
287 $sql .= $hookmanager->resPrint;
288 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
291 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
293 $resql = $db->query($sql);
297 while ($assoc = $db->fetch_array($resql)) {
298 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
299 $list[$assoc[
'company_id']][
'totalht'] = 0;
301 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
302 $list[$assoc[
'company_id']][
'vat'] = 0;
304 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
305 $list[$assoc[
'company_id']][
'localtax1'] = 0;
307 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
308 $list[$assoc[
'company_id']][
'localtax2'] = 0;
311 if ($assoc[
'rowid'] != $oldrowid) {
312 $oldrowid = $assoc[
'rowid'];
313 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
314 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
315 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
316 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
319 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
320 $list[$assoc[
'company_id']][
'dtype'][] = (int) $assoc[
'dtype'];
321 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
322 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
324 $list[$assoc[
'company_id']][
'company_name'][] = (string) $assoc[
'company_name'];
325 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
326 $list[$assoc[
'company_id']][
'company_alias'][] = (string) $assoc[
'company_alias'];
327 $list[$assoc[
'company_id']][
'company_email'][] = (string) $assoc[
'company_email'];
328 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
329 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
330 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
331 $list[$assoc[
'company_id']][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
332 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
333 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
334 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
335 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
337 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
338 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
339 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
341 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
342 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
343 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
344 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
345 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
347 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
348 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
349 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
350 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
352 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
353 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
354 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
355 $list[$assoc[
'company_id']][
'pstatus'][] = (int) $assoc[
'pstatus'];
356 $list[$assoc[
'company_id']][
'pstatusbuy'][] = (int) $assoc[
'pstatusbuy'];
358 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
359 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
360 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
362 $company_id = $assoc[
'company_id'];
365 dol_print_error($db);
374 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
375 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
377 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
378 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
379 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
380 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
381 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
382 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
383 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
384 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
385 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
386 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
387 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
388 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
389 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
390 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
391 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
393 if ($direction ==
'buy') {
406 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
407 $sql .=
" AND s.rowid = f.fk_soc";
410 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
413 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
416 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
417 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
420 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
422 $sql .=
" AND (d.product_type = 1";
423 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
425 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
428 $parameters = array(
'invoicealias' =>
'f',
'issupplier' => ($direction ==
'buy' ? 1 : 0),
'datefield' =>
'datef');
429 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
430 $sql .= $hookmanager->resPrint;
431 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
434 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
435 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
436 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
437 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
438 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
439 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
440 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
441 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
442 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
443 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
444 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
445 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
446 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf,";
447 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa,";
448 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
449 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
450 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
451 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
454 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
455 $sql .=
" AND s.rowid = f.fk_soc";
456 $sql .=
" AND pf.".$db->sanitize($fk_facture2).
" = f.rowid";
457 $sql .=
" AND pa.rowid = pf.".$db->sanitize($fk_payment);
460 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
463 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
466 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
467 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
470 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
472 $sql .=
" AND (d.product_type = 1";
473 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
475 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
477 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
480 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
481 $resql = $db->query($sql);
485 while ($assoc = $db->fetch_array($resql)) {
486 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
487 $list[$assoc[
'company_id']][
'totalht'] = 0;
489 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
490 $list[$assoc[
'company_id']][
'vat'] = 0;
492 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
493 $list[$assoc[
'company_id']][
'localtax1'] = 0;
495 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
496 $list[$assoc[
'company_id']][
'localtax2'] = 0;
499 if ($assoc[
'rowid'] != $oldrowid) {
500 $oldrowid = $assoc[
'rowid'];
501 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
502 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
503 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
504 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
506 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
507 $list[$assoc[
'company_id']][
'dtype'][] = $assoc[
'dtype'];
508 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
509 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
511 $list[$assoc[
'company_id']][
'company_name'][] = (string) $assoc[
'company_name'];
512 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
513 $list[$assoc[
'company_id']][
'company_alias'][] = (string) $assoc[
'company_alias'];
514 $list[$assoc[
'company_id']][
'company_email'][] = (string) $assoc[
'company_email'];
515 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
516 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
517 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
518 $list[$assoc[
'company_id']][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
519 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
520 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
521 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
522 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
524 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
525 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
526 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
528 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
529 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
530 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
531 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
532 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
534 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
535 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
536 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
537 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
539 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
540 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
541 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
542 $list[$assoc[
'company_id']][
'pstatus'][] = (int) $assoc[
'pstatus'];
543 $list[$assoc[
'company_id']][
'pstatusbuy'][] = (int) $assoc[
'pstatusbuy'];
545 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
546 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
547 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
549 $company_id = $assoc[
'company_id'];
552 dol_print_error($db);
559 if ($direction ==
'buy') {
564 $sql =
"SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.".$db->sanitize($f_rate).
" as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.total_tva as total_vat, e.note_private as descr,";
565 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
566 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
567 $sql .=
" e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
568 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
569 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
570 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid ";
571 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid ";
572 $sql .=
" WHERE e.entity = ".((int)
$conf->entity);
576 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
579 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
582 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
583 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
586 $sql .=
" AND p.datep >= '".$db->idate(
$date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
588 $sql .=
" AND (d.product_type = -1";
589 $sql .=
" OR e.date_debut IS NOT NULL OR e.date_fin IS NOT NULL)";
591 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.total_tva <> 0)";
593 $sql .=
" ORDER BY e.rowid";
595 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
596 $resql = $db->query($sql);
600 while ($assoc = $db->fetch_array($resql)) {
601 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
602 $list[$assoc[
'company_id']][
'totalht'] = 0;
604 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
605 $list[$assoc[
'company_id']][
'vat'] = 0;
607 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
608 $list[$assoc[
'company_id']][
'localtax1'] = 0;
610 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
611 $list[$assoc[
'company_id']][
'localtax2'] = 0;
614 if ($assoc[
'rowid'] != $oldrowid) {
615 $oldrowid = $assoc[
'rowid'];
616 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
617 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
618 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
619 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
622 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
623 $list[$assoc[
'company_id']][
'dtype'][] =
'ExpenseReportPayment';
624 $list[$assoc[
'company_id']][
'datef'][] = (int) $assoc[
'datef'];
626 $list[$assoc[
'company_id']][
'company_name'][] =
'';
627 $list[$assoc[
'company_id']][
'company_id'][] = 0;
628 $list[$assoc[
'company_id']][
'company_alias'][] =
'';
629 $list[$assoc[
'company_id']][
'company_email'][] =
'';
630 $list[$assoc[
'company_id']][
'company_tva_intra'][] =
'';
631 $list[$assoc[
'company_id']][
'company_client'][] = 0;
632 $list[$assoc[
'company_id']][
'company_fournisseur'][] = 0;
633 $list[$assoc[
'company_id']][
'company_customer_code'][] =
'';
634 $list[$assoc[
'company_id']][
'company_supplier_code'][] =
'';
635 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] =
'';
636 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] =
'';
637 $list[$assoc[
'company_id']][
'company_status'][] = 0;
639 $list[$assoc[
'company_id']][
'user_id'][] = (int) $assoc[
'fk_user_author'];
640 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
641 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
642 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
644 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
645 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
646 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
647 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
648 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
650 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
651 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
652 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
653 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
655 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
656 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
657 $list[$assoc[
'company_id']][
'ptype'][] =
'ExpenseReportPayment';
659 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
660 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
661 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
663 $company_id = $assoc[
'company_id'];
666 dol_print_error($db);
693 global
$conf, $hookmanager;
694 $hookmanager->initHooks(array(
'taxvatlist'));
697 if ((
$date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
698 dol_print_error(
null,
'Bad value of input parameter for tax_by_rate');
703 if ($direction ==
'sell') {
704 $invoicetable =
'facture';
705 $invoicedettable =
'facturedet';
706 $fk_facture =
'fk_facture';
707 $fk_facture2 =
'fk_facture';
708 $fk_payment =
'fk_paiement';
709 $total_tva =
'total_tva';
710 $paymenttable =
'paiement';
711 $paymentfacturetable =
'paiement_facture';
712 $invoicefieldref =
'ref';
714 $invoicetable =
'facture_fourn';
715 $invoicedettable =
'facture_fourn_det';
716 $fk_facture =
'fk_facture_fourn';
717 $fk_facture2 =
'fk_facturefourn';
718 $fk_payment =
'fk_paiementfourn';
720 $paymenttable =
'paiementfourn';
721 $paymentfacturetable =
'paiementfourn_facturefourn';
722 $invoicefieldref =
'ref';
725 if (strpos($type,
'localtax') === 0) {
726 $f_rate = $type.
'_tx';
731 $total_localtax1 =
'total_localtax1';
732 $total_localtax2 =
'total_localtax2';
739 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
740 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
742 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.vat_src_code as vat_src_code, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
743 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
744 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
745 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
746 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
747 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
748 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
749 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
750 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
751 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount,";
752 $sql .=
" '' as datep";
753 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
754 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
755 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".$db->sanitize($fk_facture).
" = f.rowid";
756 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
757 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
759 if ($direction ==
'buy') {
774 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
777 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
780 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
781 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
784 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
786 $sql .=
" AND (d.product_type = 0";
787 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
789 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
792 $parameters = array(
'invoicealias' =>
'f',
'issupplier' => ($direction ==
'buy' ? 1 : 0),
'datefield' =>
'datef');
793 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
794 $sql .= $hookmanager->resPrint;
795 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
798 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.vat_src_code as vat_src_code, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
799 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
800 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
801 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
802 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
803 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
804 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
805 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
806 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
807 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
808 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
809 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
810 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf ON pf.".$db->sanitize($fk_facture2).
" = f.rowid";
811 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa ON pa.rowid = pf.".$db->sanitize($fk_payment);
812 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
813 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".$db->sanitize($fk_facture).
" = f.rowid";
814 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
815 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
820 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
823 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
826 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
827 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
830 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
832 $sql .=
" AND (d.product_type = 0";
833 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
835 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
837 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
840 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
842 $resql = $db->query($sql);
846 while ($assoc = $db->fetch_array($resql)) {
847 $rate_key = $assoc[
'rate'];
848 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
849 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
853 if (!isset($list[$rate_key][
'totalht'])) {
854 $list[$rate_key][
'totalht'] = 0;
856 if (!isset($list[$rate_key][
'vat'])) {
857 $list[$rate_key][
'vat'] = 0;
859 if (!isset($list[$rate_key][
'localtax1'])) {
860 $list[$rate_key][
'localtax1'] = 0;
862 if (!isset($list[$rate_key][
'localtax2'])) {
863 $list[$rate_key][
'localtax2'] = 0;
866 if ($assoc[
'rowid'] != $oldrowid) {
867 $oldrowid = $assoc[
'rowid'];
868 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
869 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
870 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
871 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
873 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
874 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
875 $list[$rate_key][
'datef'][] = $db->jdate($assoc[
'datef']);
876 $list[$rate_key][
'datep'][] = $db->jdate($assoc[
'datep']);
878 $list[$rate_key][
'company_name'][] = (string) $assoc[
'company_name'];
879 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
880 $list[$rate_key][
'company_alias'][] = (string) $assoc[
'company_alias'];
881 $list[$rate_key][
'company_email'][] = (string) $assoc[
'company_email'];
882 $list[$rate_key][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
883 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
884 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
885 $list[$rate_key][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
886 $list[$rate_key][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
887 $list[$rate_key][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
888 $list[$rate_key][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
889 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
891 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
892 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
894 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
895 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
896 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
897 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
898 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
900 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
901 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
902 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
903 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
905 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
906 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
907 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
909 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
910 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
911 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
913 $rate = $assoc[
'rate'];
916 dol_print_error($db);
924 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
925 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
927 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.vat_src_code as vat_src_code, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
928 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
929 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
930 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
931 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
932 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
933 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
934 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
935 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
936 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
937 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
938 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
939 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".$db->sanitize($fk_facture).
" = f.rowid";
940 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
941 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
943 if ($direction ==
'buy') {
958 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
961 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
964 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
965 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
968 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
970 $sql .=
" AND (d.product_type = 1";
971 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
973 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
976 $parameters = array(
'invoicealias' =>
'f',
'issupplier' => ($direction ==
'buy' ? 1 : 0),
'datefield' =>
'datef');
977 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
978 $sql .= $hookmanager->resPrint;
979 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
982 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$db->sanitize($fk_facture).
" as facid, d.".$db->sanitize($f_rate).
" as rate, d.vat_src_code as vat_src_code, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$db->sanitize($total_tva).
" as total_vat, d.description as descr,";
983 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".$db->sanitize($total_localtax2).
" as total_localtax2, ";
984 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
985 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
986 $sql .=
" s.nom as company_name, s.name_alias as company_alias, s.rowid as company_id, s.client as company_client, s.fournisseur as company_fournisseur, s.email as company_email,";
987 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
988 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
989 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
990 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
991 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
992 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
993 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
994 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf ON pf.".$db->sanitize($fk_facture2).
" = f.rowid";
995 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa ON pa.rowid = pf.".$db->sanitize($fk_payment);
996 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
997 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".$db->sanitize($fk_facture).
" = f.rowid";
998 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
999 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
1004 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
1007 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
1010 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
1011 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
1014 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
1016 $sql .=
" AND (d.product_type = 1";
1017 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
1019 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".$db->sanitize($total_tva).
" <> 0)";
1021 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
1024 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
1025 $resql = $db->query($sql);
1029 while ($assoc = $db->fetch_array($resql)) {
1030 $rate_key = $assoc[
'rate'];
1031 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1032 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1036 if (!isset($list[$rate_key][
'totalht'])) {
1037 $list[$rate_key][
'totalht'] = 0;
1039 if (!isset($list[$rate_key][
'vat'])) {
1040 $list[$rate_key][
'vat'] = 0;
1042 if (!isset($list[$rate_key][
'localtax1'])) {
1043 $list[$rate_key][
'localtax1'] = 0;
1045 if (!isset($list[$rate_key][
'localtax2'])) {
1046 $list[$rate_key][
'localtax2'] = 0;
1049 if ($assoc[
'rowid'] != $oldrowid) {
1050 $oldrowid = $assoc[
'rowid'];
1051 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1052 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1053 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1054 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1056 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1057 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
1058 $list[$rate_key][
'datef'][] = $db->jdate($assoc[
'datef']);
1059 $list[$rate_key][
'datep'][] = $db->jdate($assoc[
'datep']);
1061 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
1062 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
1064 $list[$rate_key][
'company_name'][] = (string) $assoc[
'company_name'];
1065 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
1066 $list[$rate_key][
'company_alias'][] = (string) $assoc[
'company_alias'];
1067 $list[$rate_key][
'company_email'][] = (string) $assoc[
'company_email'];
1068 $list[$rate_key][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
1069 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
1070 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
1071 $list[$rate_key][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
1072 $list[$rate_key][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
1073 $list[$rate_key][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
1074 $list[$rate_key][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
1075 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
1077 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1078 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
1079 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1080 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1081 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
1083 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1084 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1085 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1086 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1088 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1089 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
1090 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
1092 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1093 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
1094 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1096 $rate = $assoc[
'rate'];
1099 dol_print_error($db);
1105 if ($direction ==
'buy') {
1110 $sql =
"SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.".$db->sanitize($f_rate).
" as rate, d.vat_src_code as vat_src_code, d.total_ht as total_ht, d.total_ttc as total_ttc, d.total_tva as total_vat, e.note_private as descr,";
1111 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
1112 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
1113 $sql .=
" e.ref as facnum, e.ref as pref, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
1114 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid";
1115 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
1116 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid";
1117 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid";
1118 $sql .=
" WHERE e.entity = ".((int)
$conf->entity);
1122 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
1125 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
1128 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
1129 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
1132 $sql .=
" AND p.datep >= '".$db->idate(
$date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
1134 $sql .=
" AND (d.product_type = -1";
1135 $sql .=
" OR e.date_debut IS NOT NULL OR e.date_fin IS NOT NULL)";
1137 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.total_tva <> 0)";
1139 $sql .=
" ORDER BY e.rowid";
1141 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
1142 $resql = $db->query($sql);
1146 while ($assoc = $db->fetch_array($resql)) {
1147 $rate_key = $assoc[
'rate'];
1148 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1149 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1153 if (!isset($list[$rate_key][
'totalht'])) {
1154 $list[$rate_key][
'totalht'] = 0;
1156 if (!isset($list[$rate_key][
'vat'])) {
1157 $list[$rate_key][
'vat'] = 0;
1159 if (!isset($list[$rate_key][
'localtax1'])) {
1160 $list[$rate_key][
'localtax1'] = 0;
1162 if (!isset($list[$rate_key][
'localtax2'])) {
1163 $list[$rate_key][
'localtax2'] = 0;
1166 if ($assoc[
'rowid'] != $oldrowid) {
1167 $oldrowid = $assoc[
'rowid'];
1168 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1169 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1170 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1171 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1174 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1175 $list[$rate_key][
'dtype'][] =
'ExpenseReportPayment';
1176 $list[$rate_key][
'datef'][] = (int) $assoc[
'datef'];
1177 $list[$rate_key][
'company_name'][] =
'';
1178 $list[$rate_key][
'company_id'][] = 0;
1179 $list[$rate_key][
'user_id'][] = (int) $assoc[
'fk_user_author'];
1180 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
1181 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
1183 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1184 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
1185 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1186 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1187 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
1189 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1190 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1191 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1192 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1194 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1195 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
1196 $list[$rate_key][
'ptype'][] =
'ExpenseReportPayment';
1198 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1199 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
1200 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1202 $rate = $assoc[
'rate'];
1205 dol_print_error($db);
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.