50 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/card.php?id='.
$object->id;
51 $head[$h][1] = $langs->trans(
'SocialContribution');
52 $head[$h][2] =
'card';
61 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
62 require_once DOL_DOCUMENT_ROOT.
'/core/class/link.class.php';
64 $nbFiles = count(
dol_dir_list($upload_dir,
'files', 0,
'',
'(\.meta|_preview.*\.png)$'));
66 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/document.php?id='.
$object->id;
67 $head[$h][1] = $langs->trans(
"Documents");
68 if (($nbFiles + $nbLinks) > 0) {
69 $head[$h][1] .=
'<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).
'</span>';
71 $head[$h][2] =
'documents';
76 if (!empty(
$object->note_private)) {
79 if (!empty(
$object->note_public)) {
82 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/note.php?id='.
$object->id;
83 $head[$h][1] = $langs->trans(
'Notes');
85 $head[$h][1] .= (!
getDolGlobalString(
'MAIN_OPTIMIZEFORTEXTBROWSER') ?
'<span class="badge marginleftonlyshort">'.$nbNote.
'</span>' :
'');
87 $head[$h][2] =
'note';
91 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/info.php?id='.
$object->id;
92 $head[$h][1] = $langs->trans(
"Info");
93 $head[$h][2] =
'info';
122 if ((
$date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
123 dol_print_error(
null,
'Bad value of input parameter for tax_by_thirdparty');
127 if ($direction ==
'sell') {
128 $invoicetable =
'facture';
129 $invoicedettable =
'facturedet';
130 $fk_facture =
'fk_facture';
131 $fk_facture2 =
'fk_facture';
132 $fk_payment =
'fk_paiement';
133 $total_tva =
'total_tva';
134 $paymenttable =
'paiement';
135 $paymentfacturetable =
'paiement_facture';
136 $invoicefieldref =
'ref';
137 } elseif ($direction ==
'buy') {
138 $invoicetable =
'facture_fourn';
139 $invoicedettable =
'facture_fourn_det';
140 $fk_facture =
'fk_facture_fourn';
141 $fk_facture2 =
'fk_facturefourn';
142 $fk_payment =
'fk_paiementfourn';
144 $paymenttable =
'paiementfourn';
145 $paymentfacturetable =
'paiementfourn_facturefourn';
146 $invoicefieldref =
'ref';
148 dol_print_error(
null,
'Invalid "direction" - must be buy or sell - found ' . $direction);
152 if (strpos($type,
'localtax') === 0) {
153 $f_rate = $type.
'_tx';
158 $total_localtax1 =
'total_localtax1';
159 $total_localtax2 =
'total_localtax2';
166 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
167 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
169 $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,";
170 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
171 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
172 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
173 $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,";
174 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
175 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
176 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
177 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
178 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
179 $sql .=
" ,'' as datep";
180 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
181 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
182 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
183 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
184 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
186 if ($direction ==
'buy') {
199 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
200 $sql .=
" AND s.rowid = f.fk_soc";
203 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
206 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
209 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
210 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
213 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".
$db->idate($date_end).
"'";
215 $sql .=
" AND (d.product_type = 0";
216 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
218 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
220 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
223 $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,";
224 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
225 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
226 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
227 $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,";
228 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
229 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
230 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
231 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
232 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
233 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
234 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
235 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf,";
236 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa,";
237 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
238 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
239 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
240 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
242 if ($direction ==
'buy') {
255 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
256 $sql .=
" AND s.rowid = f.fk_soc";
257 $sql .=
" AND pf.".$db->sanitize($fk_facture2).
" = f.rowid";
258 $sql .=
" AND pa.rowid = pf.".$db->sanitize($fk_payment);
261 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
264 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
267 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
268 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
271 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".
$db->idate($date_end).
"'";
273 $sql .=
" AND (d.product_type = 0";
274 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
276 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
278 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
281 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
283 $resql =
$db->query($sql);
287 while ($assoc =
$db->fetch_array($resql)) {
288 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
289 $list[$assoc[
'company_id']][
'totalht'] = 0;
291 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
292 $list[$assoc[
'company_id']][
'vat'] = 0;
294 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
295 $list[$assoc[
'company_id']][
'localtax1'] = 0;
297 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
298 $list[$assoc[
'company_id']][
'localtax2'] = 0;
301 if ($assoc[
'rowid'] != $oldrowid) {
302 $oldrowid = $assoc[
'rowid'];
303 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
304 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
305 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
306 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
309 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
310 $list[$assoc[
'company_id']][
'dtype'][] = (int) $assoc[
'dtype'];
311 $list[$assoc[
'company_id']][
'datef'][] =
$db->jdate($assoc[
'datef']);
312 $list[$assoc[
'company_id']][
'datep'][] =
$db->jdate($assoc[
'datep']);
314 $list[$assoc[
'company_id']][
'company_name'][] = (
string) $assoc[
'company_name'];
315 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
316 $list[$assoc[
'company_id']][
'company_alias'][] = (
string) $assoc[
'company_alias'];
317 $list[$assoc[
'company_id']][
'company_email'][] = (
string) $assoc[
'company_email'];
318 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (
string) $assoc[
'company_tva_intra'];
319 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
320 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
321 $list[$assoc[
'company_id']][
'company_customer_code'][] = (
string) $assoc[
'company_customer_code'];
322 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (
string) $assoc[
'company_supplier_code'];
323 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (
string) $assoc[
'company_customer_accounting_code'];
324 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (
string) $assoc[
'company_supplier_accounting_code'];
325 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
327 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
328 $list[$assoc[
'company_id']][
'ddate_start'][] =
$db->jdate($assoc[
'date_start']);
329 $list[$assoc[
'company_id']][
'ddate_end'][] =
$db->jdate($assoc[
'date_end']);
331 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
332 $list[$assoc[
'company_id']][
'facnum'][] = (
string) $assoc[
'facnum'];
333 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
334 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
335 $list[$assoc[
'company_id']][
'descr'][] = (
string) $assoc[
'descr'];
337 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
338 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
339 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
340 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
342 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
343 $list[$assoc[
'company_id']][
'pref'][] = (
string) $assoc[
'pref'];
344 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
346 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
347 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
349 $company_id = $assoc[
'company_id'];
361 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
362 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
364 $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,";
365 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
366 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
367 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
368 $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,";
369 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
370 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
371 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
372 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
373 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
374 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
375 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
376 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
377 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
378 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
380 if ($direction ==
'buy') {
393 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
394 $sql .=
" AND s.rowid = f.fk_soc";
397 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
400 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
403 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
404 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
407 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".
$db->idate($date_end).
"'";
409 $sql .=
" AND (d.product_type = 1";
410 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
412 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
414 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
417 $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,";
418 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
419 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
420 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
421 $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,";
422 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
423 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
424 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
425 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
426 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
427 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
428 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f,";
429 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf,";
430 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa,";
431 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
432 $sql .=
" ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d";
433 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
434 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
437 $sql .=
" AND f.rowid = d.".$db->sanitize($fk_facture);
438 $sql .=
" AND s.rowid = f.fk_soc";
439 $sql .=
" AND pf.".$db->sanitize($fk_facture2).
" = f.rowid";
440 $sql .=
" AND pa.rowid = pf.".$db->sanitize($fk_payment);
443 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
446 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
449 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
450 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
453 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".
$db->idate($date_end).
"'";
455 $sql .=
" AND (d.product_type = 1";
456 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
458 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
460 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
463 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
464 $resql =
$db->query($sql);
468 while ($assoc =
$db->fetch_array($resql)) {
469 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
470 $list[$assoc[
'company_id']][
'totalht'] = 0;
472 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
473 $list[$assoc[
'company_id']][
'vat'] = 0;
475 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
476 $list[$assoc[
'company_id']][
'localtax1'] = 0;
478 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
479 $list[$assoc[
'company_id']][
'localtax2'] = 0;
482 if ($assoc[
'rowid'] != $oldrowid) {
483 $oldrowid = $assoc[
'rowid'];
484 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
485 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
486 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
487 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
489 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
490 $list[$assoc[
'company_id']][
'dtype'][] = $assoc[
'dtype'];
491 $list[$assoc[
'company_id']][
'datef'][] =
$db->jdate($assoc[
'datef']);
492 $list[$assoc[
'company_id']][
'datep'][] =
$db->jdate($assoc[
'datep']);
494 $list[$assoc[
'company_id']][
'company_name'][] = (
string) $assoc[
'company_name'];
495 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
496 $list[$assoc[
'company_id']][
'company_alias'][] = (
string) $assoc[
'company_alias'];
497 $list[$assoc[
'company_id']][
'company_email'][] = (
string) $assoc[
'company_email'];
498 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (
string) $assoc[
'company_tva_intra'];
499 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
500 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
501 $list[$assoc[
'company_id']][
'company_customer_code'][] = (
string) $assoc[
'company_customer_code'];
502 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (
string) $assoc[
'company_supplier_code'];
503 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (
string) $assoc[
'company_customer_accounting_code'];
504 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (
string) $assoc[
'company_supplier_accounting_code'];
505 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
507 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
508 $list[$assoc[
'company_id']][
'ddate_start'][] =
$db->jdate($assoc[
'date_start']);
509 $list[$assoc[
'company_id']][
'ddate_end'][] =
$db->jdate($assoc[
'date_end']);
511 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
512 $list[$assoc[
'company_id']][
'facnum'][] = (
string) $assoc[
'facnum'];
513 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
514 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
515 $list[$assoc[
'company_id']][
'descr'][] = (
string) $assoc[
'descr'];
517 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
518 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
519 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
520 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
522 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
523 $list[$assoc[
'company_id']][
'pref'][] = (
string) $assoc[
'pref'];
524 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
526 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
527 $list[$assoc[
'company_id']][
'payment_ref'][] = (
string) $assoc[
'payment_ref'];
528 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
530 $company_id = $assoc[
'company_id'];
540 if ($direction ==
'buy') {
545 $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,";
546 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
547 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
548 $sql .=
" e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
549 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
550 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
551 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid ";
552 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid ";
553 $sql .=
" WHERE e.entity = ".((int)
$conf->entity);
557 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
560 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
563 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
564 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
567 $sql .=
" AND p.datep >= '".$db->idate(
$date_start).
"' AND p.datep <= '".
$db->idate($date_end).
"'";
569 $sql .=
" AND (d.product_type = -1";
570 $sql .=
" OR e.date_debut IS NOT NULL OR e.date_fin IS NOT NULL)";
572 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.total_tva <> 0)";
574 $sql .=
" ORDER BY e.rowid";
576 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
577 $resql =
$db->query($sql);
581 while ($assoc =
$db->fetch_array($resql)) {
582 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
583 $list[$assoc[
'company_id']][
'totalht'] = 0;
585 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
586 $list[$assoc[
'company_id']][
'vat'] = 0;
588 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
589 $list[$assoc[
'company_id']][
'localtax1'] = 0;
591 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
592 $list[$assoc[
'company_id']][
'localtax2'] = 0;
595 if ($assoc[
'rowid'] != $oldrowid) {
596 $oldrowid = $assoc[
'rowid'];
597 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
598 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
599 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
600 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
603 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
604 $list[$assoc[
'company_id']][
'dtype'][] =
'ExpenseReportPayment';
605 $list[$assoc[
'company_id']][
'datef'][] = (int) $assoc[
'datef'];
607 $list[$assoc[
'company_id']][
'company_name'][] =
'';
608 $list[$assoc[
'company_id']][
'company_id'][] = 0;
609 $list[$assoc[
'company_id']][
'company_alias'][] =
'';
610 $list[$assoc[
'company_id']][
'company_email'][] =
'';
611 $list[$assoc[
'company_id']][
'company_tva_intra'][] =
'';
612 $list[$assoc[
'company_id']][
'company_client'][] = 0;
613 $list[$assoc[
'company_id']][
'company_fournisseur'][] = 0;
614 $list[$assoc[
'company_id']][
'company_customer_code'][] =
'';
615 $list[$assoc[
'company_id']][
'company_supplier_code'][] =
'';
616 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] =
'';
617 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] =
'';
618 $list[$assoc[
'company_id']][
'company_status'][] = 0;
620 $list[$assoc[
'company_id']][
'user_id'][] = (int) $assoc[
'fk_user_author'];
621 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
622 $list[$assoc[
'company_id']][
'ddate_start'][] =
$db->jdate($assoc[
'date_start']);
623 $list[$assoc[
'company_id']][
'ddate_end'][] =
$db->jdate($assoc[
'date_end']);
625 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
626 $list[$assoc[
'company_id']][
'facnum'][] = (
string) $assoc[
'facnum'];
627 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
628 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
629 $list[$assoc[
'company_id']][
'descr'][] = (
string) $assoc[
'descr'];
631 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
632 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
633 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
634 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
636 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
637 $list[$assoc[
'company_id']][
'pref'][] = (
string) $assoc[
'pref'];
638 $list[$assoc[
'company_id']][
'ptype'][] =
'ExpenseReportPayment';
640 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
641 $list[$assoc[
'company_id']][
'payment_ref'][] = (
string) $assoc[
'payment_ref'];
642 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
644 $company_id = $assoc[
'company_id'];
677 if ((
$date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
683 if ($direction ==
'sell') {
684 $invoicetable =
'facture';
685 $invoicedettable =
'facturedet';
686 $fk_facture =
'fk_facture';
687 $fk_facture2 =
'fk_facture';
688 $fk_payment =
'fk_paiement';
689 $total_tva =
'total_tva';
690 $paymenttable =
'paiement';
691 $paymentfacturetable =
'paiement_facture';
692 $invoicefieldref =
'ref';
694 $invoicetable =
'facture_fourn';
695 $invoicedettable =
'facture_fourn_det';
696 $fk_facture =
'fk_facture_fourn';
697 $fk_facture2 =
'fk_facturefourn';
698 $fk_payment =
'fk_paiementfourn';
700 $paymenttable =
'paiementfourn';
701 $paymentfacturetable =
'paiementfourn_facturefourn';
702 $invoicefieldref =
'ref';
705 if (strpos($type,
'localtax') === 0) {
706 $f_rate = $type.
'_tx';
711 $total_localtax1 =
'total_localtax1';
712 $total_localtax2 =
'total_localtax2';
719 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
720 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
722 $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,";
723 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
724 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
725 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
726 $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,";
727 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
728 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
729 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
730 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
731 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount,";
732 $sql .=
" '' as datep";
733 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
734 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
735 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".
$db->sanitize($fk_facture).
" = f.rowid";
736 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
737 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
739 if ($direction ==
'buy') {
754 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
757 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
760 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
761 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
764 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".
$db->idate($date_end).
"'";
766 $sql .=
" AND (d.product_type = 0";
767 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
769 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
771 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
774 $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,";
775 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
776 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
777 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
778 $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,";
779 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
780 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
781 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
782 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
783 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
784 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
785 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
786 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf ON pf.".
$db->sanitize($fk_facture2).
" = f.rowid";
787 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa ON pa.rowid = pf.".
$db->sanitize($fk_payment);
788 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
789 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".
$db->sanitize($fk_facture).
" = f.rowid";
790 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
791 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
796 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
799 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
802 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
803 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
806 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".
$db->idate($date_end).
"'";
808 $sql .=
" AND (d.product_type = 0";
809 $sql .=
" AND d.date_start IS NULL AND d.date_end IS NULL)";
811 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
813 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
816 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
818 $resql =
$db->query($sql);
822 while ($assoc =
$db->fetch_array($resql)) {
823 $rate_key = $assoc[
'rate'];
824 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
825 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
829 if (!isset($list[$rate_key][
'totalht'])) {
830 $list[$rate_key][
'totalht'] = 0;
832 if (!isset($list[$rate_key][
'vat'])) {
833 $list[$rate_key][
'vat'] = 0;
835 if (!isset($list[$rate_key][
'localtax1'])) {
836 $list[$rate_key][
'localtax1'] = 0;
838 if (!isset($list[$rate_key][
'localtax2'])) {
839 $list[$rate_key][
'localtax2'] = 0;
842 if ($assoc[
'rowid'] != $oldrowid) {
843 $oldrowid = $assoc[
'rowid'];
844 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
845 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
846 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
847 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
849 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
850 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
851 $list[$rate_key][
'datef'][] =
$db->jdate($assoc[
'datef']);
852 $list[$rate_key][
'datep'][] =
$db->jdate($assoc[
'datep']);
854 $list[$rate_key][
'company_name'][] = (
string) $assoc[
'company_name'];
855 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
856 $list[$rate_key][
'company_alias'][] = (
string) $assoc[
'company_alias'];
857 $list[$rate_key][
'company_email'][] = (
string) $assoc[
'company_email'];
858 $list[$rate_key][
'company_tva_intra'][] = (
string) $assoc[
'company_tva_intra'];
859 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
860 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
861 $list[$rate_key][
'company_customer_code'][] = (
string) $assoc[
'company_customer_code'];
862 $list[$rate_key][
'company_supplier_code'][] = (
string) $assoc[
'company_supplier_code'];
863 $list[$rate_key][
'company_customer_accounting_code'][] = (
string) $assoc[
'company_customer_accounting_code'];
864 $list[$rate_key][
'company_supplier_accounting_code'][] = (
string) $assoc[
'company_supplier_accounting_code'];
865 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
867 $list[$rate_key][
'ddate_start'][] =
$db->jdate($assoc[
'date_start']);
868 $list[$rate_key][
'ddate_end'][] =
$db->jdate($assoc[
'date_end']);
870 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
871 $list[$rate_key][
'facnum'][] = (
string) $assoc[
'facnum'];
872 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
873 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
874 $list[$rate_key][
'descr'][] = (
string) $assoc[
'descr'];
876 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
877 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
878 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
879 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
881 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
882 $list[$rate_key][
'pref'][] = (
string) $assoc[
'pref'];
883 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
885 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
886 $list[$rate_key][
'payment_ref'][] = (
string) $assoc[
'payment_ref'];
887 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
889 $rate = $assoc[
'rate'];
900 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
901 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
903 $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,";
904 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
905 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
906 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
907 $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,";
908 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
909 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
910 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
911 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
912 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
913 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
914 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
915 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".
$db->sanitize($fk_facture).
" = f.rowid";
916 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
917 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
919 if ($direction ==
'buy') {
934 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
937 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
940 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
941 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
944 $sql .=
" AND f.datef >= '".$db->idate(
$date_start).
"' AND f.datef <= '".
$db->idate($date_end).
"'";
946 $sql .=
" AND (d.product_type = 1";
947 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
949 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
951 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture);
954 $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,";
955 $sql .=
" d.".$db->sanitize($total_localtax1).
" as total_localtax1, d.".
$db->sanitize($total_localtax2).
" as total_localtax2, ";
956 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
957 $sql .=
" f.".$db->sanitize($invoicefieldref).
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
958 $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,";
959 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
960 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
961 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
962 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
963 $sql .=
" pf.".$db->sanitize($fk_payment).
" as payment_id, pf.amount as payment_amount,";
964 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
965 $sql .=
" FROM ".MAIN_DB_PREFIX.$db->sanitize($invoicetable).
" as f";
966 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymentfacturetable).
" as pf ON pf.".
$db->sanitize($fk_facture2).
" = f.rowid";
967 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($paymenttable).
" as pa ON pa.rowid = pf.".
$db->sanitize($fk_payment);
968 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
969 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$db->sanitize($invoicedettable).
" as d ON d.".
$db->sanitize($fk_facture).
" = f.rowid";
970 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
971 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
976 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
979 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
982 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
983 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
986 $sql .=
" AND pa.datep >= '".$db->idate(
$date_start).
"' AND pa.datep <= '".
$db->idate($date_end).
"'";
988 $sql .=
" AND (d.product_type = 1";
989 $sql .=
" OR d.date_start IS NOT NULL OR d.date_end IS NOT NULL)";
991 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.".
$db->sanitize($total_tva).
" <> 0)";
993 $sql .=
" ORDER BY d.rowid, d.".$db->sanitize($fk_facture).
", pf.rowid";
996 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
997 $resql =
$db->query($sql);
1001 while ($assoc =
$db->fetch_array($resql)) {
1002 $rate_key = $assoc[
'rate'];
1003 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1004 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1008 if (!isset($list[$rate_key][
'totalht'])) {
1009 $list[$rate_key][
'totalht'] = 0;
1011 if (!isset($list[$rate_key][
'vat'])) {
1012 $list[$rate_key][
'vat'] = 0;
1014 if (!isset($list[$rate_key][
'localtax1'])) {
1015 $list[$rate_key][
'localtax1'] = 0;
1017 if (!isset($list[$rate_key][
'localtax2'])) {
1018 $list[$rate_key][
'localtax2'] = 0;
1021 if ($assoc[
'rowid'] != $oldrowid) {
1022 $oldrowid = $assoc[
'rowid'];
1023 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1024 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1025 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1026 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1028 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1029 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
1030 $list[$rate_key][
'datef'][] =
$db->jdate($assoc[
'datef']);
1031 $list[$rate_key][
'datep'][] =
$db->jdate($assoc[
'datep']);
1033 $list[$rate_key][
'ddate_start'][] =
$db->jdate($assoc[
'date_start']);
1034 $list[$rate_key][
'ddate_end'][] =
$db->jdate($assoc[
'date_end']);
1036 $list[$rate_key][
'company_name'][] = (
string) $assoc[
'company_name'];
1037 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
1038 $list[$rate_key][
'company_alias'][] = (
string) $assoc[
'company_alias'];
1039 $list[$rate_key][
'company_email'][] = (
string) $assoc[
'company_email'];
1040 $list[$rate_key][
'company_tva_intra'][] = (
string) $assoc[
'company_tva_intra'];
1041 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
1042 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
1043 $list[$rate_key][
'company_customer_code'][] = (
string) $assoc[
'company_customer_code'];
1044 $list[$rate_key][
'company_supplier_code'][] = (
string) $assoc[
'company_supplier_code'];
1045 $list[$rate_key][
'company_customer_accounting_code'][] = (
string) $assoc[
'company_customer_accounting_code'];
1046 $list[$rate_key][
'company_supplier_accounting_code'][] = (
string) $assoc[
'company_supplier_accounting_code'];
1047 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
1049 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1050 $list[$rate_key][
'facnum'][] = (
string) $assoc[
'facnum'];
1051 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1052 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1053 $list[$rate_key][
'descr'][] = (
string) $assoc[
'descr'];
1055 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1056 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1057 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1058 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1060 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1061 $list[$rate_key][
'pref'][] = (
string) $assoc[
'pref'];
1062 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
1064 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1065 $list[$rate_key][
'payment_ref'][] = (
string) $assoc[
'payment_ref'];
1066 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1068 $rate = $assoc[
'rate'];
1077 if ($direction ==
'buy') {
1082 $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,";
1083 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
1084 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
1085 $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,";
1086 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid";
1087 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
1088 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid";
1089 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid";
1090 $sql .=
" WHERE e.entity = ".((int)
$conf->entity);
1094 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
1097 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
1100 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
1101 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
1104 $sql .=
" AND p.datep >= '".$db->idate(
$date_start).
"' AND p.datep <= '".
$db->idate($date_end).
"'";
1106 $sql .=
" AND (d.product_type = -1";
1107 $sql .=
" OR e.date_debut IS NOT NULL OR e.date_fin IS NOT NULL)";
1109 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.total_tva <> 0)";
1111 $sql .=
" ORDER BY e.rowid";
1113 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
1114 $resql =
$db->query($sql);
1118 while ($assoc =
$db->fetch_array($resql)) {
1119 $rate_key = $assoc[
'rate'];
1120 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1121 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1125 if (!isset($list[$rate_key][
'totalht'])) {
1126 $list[$rate_key][
'totalht'] = 0;
1128 if (!isset($list[$rate_key][
'vat'])) {
1129 $list[$rate_key][
'vat'] = 0;
1131 if (!isset($list[$rate_key][
'localtax1'])) {
1132 $list[$rate_key][
'localtax1'] = 0;
1134 if (!isset($list[$rate_key][
'localtax2'])) {
1135 $list[$rate_key][
'localtax2'] = 0;
1138 if ($assoc[
'rowid'] != $oldrowid) {
1139 $oldrowid = $assoc[
'rowid'];
1140 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1141 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1142 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1143 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1146 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1147 $list[$rate_key][
'dtype'][] =
'ExpenseReportPayment';
1148 $list[$rate_key][
'datef'][] = (int) $assoc[
'datef'];
1149 $list[$rate_key][
'company_name'][] =
'';
1150 $list[$rate_key][
'company_id'][] = 0;
1151 $list[$rate_key][
'user_id'][] = (int) $assoc[
'fk_user_author'];
1152 $list[$rate_key][
'ddate_start'][] =
$db->jdate($assoc[
'date_start']);
1153 $list[$rate_key][
'ddate_end'][] =
$db->jdate($assoc[
'date_end']);
1155 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1156 $list[$rate_key][
'facnum'][] = (
string) $assoc[
'facnum'];
1157 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1158 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1159 $list[$rate_key][
'descr'][] = (
string) $assoc[
'descr'];
1161 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1162 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1163 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1164 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1166 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1167 $list[$rate_key][
'pref'][] = (
string) $assoc[
'pref'];
1168 $list[$rate_key][
'ptype'][] =
'ExpenseReportPayment';
1170 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1171 $list[$rate_key][
'payment_ref'][] = (
string) $assoc[
'payment_ref'];
1172 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1174 $rate = $assoc[
'rate'];
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.
complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type, $mode='add', $filterorigmodule='')
Complete or removed entries into a head array (used to build tabs).
tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $direction, $m=0)
Gets Tax to collect for the given year (and given quarter or month) The function gets the Tax in spli...
tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $direction, $m=0, $q=0)
Look for collectable VAT clients in the chosen year (and month)