42 global $db, $langs,
$conf, $user;
47 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/card.php?id='.
$object->id;
48 $head[$h][1] = $langs->trans(
'SocialContribution');
49 $head[$h][2] =
'card';
58 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
59 require_once DOL_DOCUMENT_ROOT.
'/core/class/link.class.php';
61 $nbFiles = count(
dol_dir_list($upload_dir,
'files', 0,
'',
'(\.meta|_preview.*\.png)$'));
63 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/document.php?id='.
$object->id;
64 $head[$h][1] = $langs->trans(
"Documents");
65 if (($nbFiles + $nbLinks) > 0) {
66 $head[$h][1] .=
'<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).
'</span>';
68 $head[$h][2] =
'documents';
73 if (!empty(
$object->note_private)) {
76 if (!empty(
$object->note_public)) {
79 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/note.php?id='.
$object->id;
80 $head[$h][1] = $langs->trans(
'Notes');
82 $head[$h][1] .= (!
getDolGlobalString(
'MAIN_OPTIMIZEFORTEXTBROWSER') ?
'<span class="badge marginleftonlyshort">'.$nbNote.
'</span>' :
'');
84 $head[$h][2] =
'note';
88 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/info.php?id='.
$object->id;
89 $head[$h][1] = $langs->trans(
"Info");
90 $head[$h][2] =
'info';
114function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $direction, $m = 0, $q = 0)
119 if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
120 dol_print_error(
null,
'Bad value of input parameter for tax_by_thirdparty');
124 if ($direction ==
'sell') {
125 $invoicetable =
'facture';
126 $invoicedettable =
'facturedet';
127 $fk_facture =
'fk_facture';
128 $fk_facture2 =
'fk_facture';
129 $fk_payment =
'fk_paiement';
130 $total_tva =
'total_tva';
131 $paymenttable =
'paiement';
132 $paymentfacturetable =
'paiement_facture';
133 $invoicefieldref =
'ref';
134 } elseif ($direction ==
'buy') {
135 $invoicetable =
'facture_fourn';
136 $invoicedettable =
'facture_fourn_det';
137 $fk_facture =
'fk_facture_fourn';
138 $fk_facture2 =
'fk_facturefourn';
139 $fk_payment =
'fk_paiementfourn';
141 $paymenttable =
'paiementfourn';
142 $paymentfacturetable =
'paiementfourn_facturefourn';
143 $invoicefieldref =
'ref';
145 dol_print_error(
null,
'Invalid "direction" - must be buy or sell - found ' . $direction);
149 if (strpos($type,
'localtax') === 0) {
150 $f_rate = $type.
'_tx';
155 $total_localtax1 =
'total_localtax1';
156 $total_localtax2 =
'total_localtax2';
163 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
164 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
166 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva.
" as total_vat, d.description as descr,";
167 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
168 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
169 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
170 $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,";
171 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
172 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
173 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
174 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
175 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
176 $sql .=
" ,'' as datep";
177 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
178 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
179 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
180 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
181 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
182 $sql .=
" AND f.fk_statut in (1,2)";
183 if ($direction ==
'buy') {
185 $sql .=
" AND f.type IN (0,1,2,5)";
187 $sql .=
" AND f.type IN (0,1,2,3,5)";
191 $sql .=
" AND f.type IN (0,1,2,5)";
193 $sql .=
" AND f.type IN (0,1,2,3,5)";
196 $sql .=
" AND f.rowid = d.".$fk_facture;
197 $sql .=
" AND s.rowid = f.fk_soc";
200 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
203 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
206 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
207 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
209 if ($date_start && $date_end) {
210 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
212 $sql .=
" AND (d.product_type = 0";
213 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
215 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
217 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
220 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva.
" as total_vat, d.description as descr,";
221 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
222 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
223 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
224 $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,";
225 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
226 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
227 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
228 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
229 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
230 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
231 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
232 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
233 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
234 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
235 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
236 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
237 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
238 $sql .=
" AND f.fk_statut in (1,2)";
239 if ($direction ==
'buy') {
241 $sql .=
" AND f.type IN (0,1,2,5)";
243 $sql .=
" AND f.type IN (0,1,2,3,5)";
247 $sql .=
" AND f.type IN (0,1,2,5)";
249 $sql .=
" AND f.type IN (0,1,2,3,5)";
252 $sql .=
" AND f.rowid = d.".$fk_facture;
253 $sql .=
" AND s.rowid = f.fk_soc";
254 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
255 $sql .=
" AND pa.rowid = pf.".$fk_payment;
258 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
261 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
264 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
265 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
267 if ($date_start && $date_end) {
268 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
270 $sql .=
" AND (d.product_type = 0";
271 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
273 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
275 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
281 if ($sql ==
'TODO') {
284 if ($sql !=
'TODO') {
285 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
287 $resql = $db->query($sql);
291 while ($assoc = $db->fetch_array($resql)) {
292 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
293 $list[$assoc[
'company_id']][
'totalht'] = 0;
295 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
296 $list[$assoc[
'company_id']][
'vat'] = 0;
298 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
299 $list[$assoc[
'company_id']][
'localtax1'] = 0;
301 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
302 $list[$assoc[
'company_id']][
'localtax2'] = 0;
305 if ($assoc[
'rowid'] != $oldrowid) {
306 $oldrowid = $assoc[
'rowid'];
307 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
308 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
309 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
310 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
313 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
314 $list[$assoc[
'company_id']][
'dtype'][] = (int) $assoc[
'dtype'];
315 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
316 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
318 $list[$assoc[
'company_id']][
'company_name'][] = (string) $assoc[
'company_name'];
319 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
320 $list[$assoc[
'company_id']][
'company_alias'][] = (string) $assoc[
'company_alias'];
321 $list[$assoc[
'company_id']][
'company_email'][] = (string) $assoc[
'company_email'];
322 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
323 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
324 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
325 $list[$assoc[
'company_id']][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
326 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
327 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
328 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
329 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
331 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
332 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
333 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
335 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
336 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
337 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
338 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
339 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
341 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
342 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
343 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
344 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
346 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
347 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
348 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
350 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
351 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
353 $company_id = $assoc[
'company_id'];
366 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
367 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
369 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva.
" as total_vat, d.description as descr,";
370 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
371 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
372 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
373 $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,";
374 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
375 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
376 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
377 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
378 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
379 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
380 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
381 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
382 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
383 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
384 $sql .=
" AND f.fk_statut in (1,2)";
385 if ($direction ==
'buy') {
387 $sql .=
" AND f.type IN (0,1,2,5)";
389 $sql .=
" AND f.type IN (0,1,2,3,5)";
393 $sql .=
" AND f.type IN (0,1,2,5)";
395 $sql .=
" AND f.type IN (0,1,2,3,5)";
398 $sql .=
" AND f.rowid = d.".$fk_facture;
399 $sql .=
" AND s.rowid = f.fk_soc";
402 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
405 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
408 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
409 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
411 if ($date_start && $date_end) {
412 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
414 $sql .=
" AND (d.product_type = 1";
415 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
417 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
419 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
422 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$f_rate as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva.
" as total_vat, d.description as descr,";
423 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
424 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
425 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
426 $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,";
427 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
428 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
429 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
430 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
431 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
432 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
433 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
434 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
435 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
436 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
437 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
438 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
439 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
440 $sql .=
" AND f.fk_statut in (1,2)";
441 $sql .=
" AND f.type IN (0,1,2,3,5)";
442 $sql .=
" AND f.rowid = d.".$fk_facture;
443 $sql .=
" AND s.rowid = f.fk_soc";
444 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
445 $sql .=
" AND pa.rowid = pf.".$fk_payment;
448 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
451 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
454 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
455 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
457 if ($date_start && $date_end) {
458 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
460 $sql .=
" AND (d.product_type = 1";
461 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
463 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
465 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
469 dol_syslog(
"Tax.lib.php::tax_by_thirdparty no accountancy module enabled".$sql, LOG_ERR);
472 if ($sql ==
'TODO') {
475 if ($sql !=
'TODO') {
476 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
477 $resql = $db->query($sql);
481 while ($assoc = $db->fetch_array($resql)) {
482 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
483 $list[$assoc[
'company_id']][
'totalht'] = 0;
485 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
486 $list[$assoc[
'company_id']][
'vat'] = 0;
488 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
489 $list[$assoc[
'company_id']][
'localtax1'] = 0;
491 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
492 $list[$assoc[
'company_id']][
'localtax2'] = 0;
495 if ($assoc[
'rowid'] != $oldrowid) {
496 $oldrowid = $assoc[
'rowid'];
497 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
498 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
499 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
500 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
502 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
503 $list[$assoc[
'company_id']][
'dtype'][] = $assoc[
'dtype'];
504 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
505 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
507 $list[$assoc[
'company_id']][
'company_name'][] = (string) $assoc[
'company_name'];
508 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
509 $list[$assoc[
'company_id']][
'company_alias'][] = (string) $assoc[
'company_alias'];
510 $list[$assoc[
'company_id']][
'company_email'][] = (string) $assoc[
'company_email'];
511 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
512 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
513 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
514 $list[$assoc[
'company_id']][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
515 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
516 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
517 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
518 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
520 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
521 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
522 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
524 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
525 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
526 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
527 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
528 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
530 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
531 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
532 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
533 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
535 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
536 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
537 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
539 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
540 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
541 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
543 $company_id = $assoc[
'company_id'];
554 if ($direction ==
'buy') {
559 $sql =
"SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.$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,";
560 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
561 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
562 $sql .=
" e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
563 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
564 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
565 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid ";
566 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid ";
567 $sql .=
" WHERE e.entity = ".$conf->entity;
568 $sql .=
" AND e.fk_statut in (6)";
571 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
574 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
577 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
578 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
580 if ($date_start && $date_end) {
581 $sql .=
" AND p.datep >= '".$db->idate($date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
583 $sql .=
" AND (d.product_type = -1";
584 $sql .=
" OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)";
586 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.total_tva <> 0)";
588 $sql .=
" ORDER BY e.rowid";
591 dol_syslog(
"Tax.lib.php::tax_by_thirdparty no accountancy module enabled".$sql, LOG_ERR);
594 if ($sql ==
'TODO') {
597 if ($sql !=
'TODO') {
598 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
599 $resql = $db->query($sql);
603 while ($assoc = $db->fetch_array($resql)) {
604 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
605 $list[$assoc[
'company_id']][
'totalht'] = 0;
607 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
608 $list[$assoc[
'company_id']][
'vat'] = 0;
610 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
611 $list[$assoc[
'company_id']][
'localtax1'] = 0;
613 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
614 $list[$assoc[
'company_id']][
'localtax2'] = 0;
617 if ($assoc[
'rowid'] != $oldrowid) {
618 $oldrowid = $assoc[
'rowid'];
619 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
620 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
621 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
622 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
625 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
626 $list[$assoc[
'company_id']][
'dtype'][] =
'ExpenseReportPayment';
627 $list[$assoc[
'company_id']][
'datef'][] = (int) $assoc[
'datef'];
629 $list[$assoc[
'company_id']][
'company_name'][] =
'';
630 $list[$assoc[
'company_id']][
'company_id'][] = 0;
631 $list[$assoc[
'company_id']][
'company_alias'][] =
'';
632 $list[$assoc[
'company_id']][
'company_email'][] =
'';
633 $list[$assoc[
'company_id']][
'company_tva_intra'][] =
'';
634 $list[$assoc[
'company_id']][
'company_client'][] = 0;
635 $list[$assoc[
'company_id']][
'company_fournisseur'][] = 0;
636 $list[$assoc[
'company_id']][
'company_customer_code'][] =
'';
637 $list[$assoc[
'company_id']][
'company_supplier_code'][] =
'';
638 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] =
'';
639 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] =
'';
640 $list[$assoc[
'company_id']][
'company_status'][] = 0;
642 $list[$assoc[
'company_id']][
'user_id'][] = (int) $assoc[
'fk_user_author'];
643 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
644 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
645 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
647 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
648 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
649 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
650 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
651 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
653 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
654 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
655 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
656 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
658 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
659 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
660 $list[$assoc[
'company_id']][
'ptype'][] =
'ExpenseReportPayment';
662 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
663 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
664 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
666 $company_id = $assoc[
'company_id'];
695function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $direction, $m = 0)
700 if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
706 if ($direction ==
'sell') {
707 $invoicetable =
'facture';
708 $invoicedettable =
'facturedet';
709 $fk_facture =
'fk_facture';
710 $fk_facture2 =
'fk_facture';
711 $fk_payment =
'fk_paiement';
712 $total_tva =
'total_tva';
713 $paymenttable =
'paiement';
714 $paymentfacturetable =
'paiement_facture';
715 $invoicefieldref =
'ref';
717 $invoicetable =
'facture_fourn';
718 $invoicedettable =
'facture_fourn_det';
719 $fk_facture =
'fk_facture_fourn';
720 $fk_facture2 =
'fk_facturefourn';
721 $fk_payment =
'fk_paiementfourn';
723 $paymenttable =
'paiementfourn';
724 $paymentfacturetable =
'paiementfourn_facturefourn';
725 $invoicefieldref =
'ref';
728 if (strpos($type,
'localtax') === 0) {
729 $f_rate = $type.
'_tx';
734 $total_localtax1 =
'total_localtax1';
735 $total_localtax2 =
'total_localtax2';
742 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
743 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
745 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$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, d.description as descr,";
746 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
747 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
748 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
749 $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,";
750 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
751 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
752 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
753 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
754 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount,";
755 $sql .=
" '' as datep";
756 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
757 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
758 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
"=f.rowid";
759 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
760 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
761 $sql .=
" AND f.fk_statut in (1,2)";
762 if ($direction ==
'buy') {
764 $sql .=
" AND f.type IN (0,1,2,5)";
766 $sql .=
" AND f.type IN (0,1,2,3,5)";
770 $sql .=
" AND f.type IN (0,1,2,5)";
772 $sql .=
" AND f.type IN (0,1,2,3,5)";
777 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
780 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
783 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
784 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
786 if ($date_start && $date_end) {
787 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
789 $sql .=
" AND (d.product_type = 0";
790 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
792 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
794 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
797 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$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, d.description as descr,";
798 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
799 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
800 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
801 $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,";
802 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
803 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
804 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
805 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
806 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
807 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
808 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
809 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf ON pf.".$fk_facture2.
" = f.rowid";
810 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymenttable.
" as pa ON pa.rowid = pf.".$fk_payment;
811 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
812 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
" = f.rowid";
813 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
814 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
815 $sql .=
" AND f.fk_statut in (1,2)";
816 $sql .=
" AND f.type IN (0,1,2,3,5)";
819 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
822 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
825 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
826 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
828 if ($date_start && $date_end) {
829 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
831 $sql .=
" AND (d.product_type = 0";
832 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
834 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
836 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
842 if ($sql ==
'TODO') {
845 if ($sql !=
'TODO') {
846 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
848 $resql = $db->query($sql);
852 while ($assoc = $db->fetch_array($resql)) {
853 $rate_key = $assoc[
'rate'];
854 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
855 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
859 if (!isset($list[$rate_key][
'totalht'])) {
860 $list[$rate_key][
'totalht'] = 0;
862 if (!isset($list[$rate_key][
'vat'])) {
863 $list[$rate_key][
'vat'] = 0;
865 if (!isset($list[$rate_key][
'localtax1'])) {
866 $list[$rate_key][
'localtax1'] = 0;
868 if (!isset($list[$rate_key][
'localtax2'])) {
869 $list[$rate_key][
'localtax2'] = 0;
872 if ($assoc[
'rowid'] != $oldrowid) {
873 $oldrowid = $assoc[
'rowid'];
874 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
875 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
876 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
877 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
879 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
880 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
881 $list[$rate_key][
'datef'][] = $db->jdate($assoc[
'datef']);
882 $list[$rate_key][
'datep'][] = $db->jdate($assoc[
'datep']);
884 $list[$rate_key][
'company_name'][] = (string) $assoc[
'company_name'];
885 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
886 $list[$rate_key][
'company_alias'][] = (string) $assoc[
'company_alias'];
887 $list[$rate_key][
'company_email'][] = (string) $assoc[
'company_email'];
888 $list[$rate_key][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
889 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
890 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
891 $list[$rate_key][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
892 $list[$rate_key][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
893 $list[$rate_key][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
894 $list[$rate_key][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
895 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
897 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
898 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
900 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
901 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
902 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
903 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
904 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
906 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
907 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
908 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
909 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
911 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
912 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
913 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
915 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
916 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
917 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
919 $rate = $assoc[
'rate'];
932 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
933 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
935 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$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, d.description as descr,";
936 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
937 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
938 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
939 $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,";
940 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
941 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
942 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
943 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
944 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
945 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
946 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
947 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
" = f.rowid";
948 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
949 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
950 $sql .=
" AND f.fk_statut in (1,2)";
951 if ($direction ==
'buy') {
953 $sql .=
" AND f.type IN (0,1,2,5)";
955 $sql .=
" AND f.type IN (0,1,2,3,5)";
959 $sql .=
" AND f.type IN (0,1,2,5)";
961 $sql .=
" AND f.type IN (0,1,2,3,5)";
966 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
969 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
972 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
973 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
975 if ($date_start && $date_end) {
976 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
978 $sql .=
" AND (d.product_type = 1";
979 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
981 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
983 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
986 $sql =
"SELECT d.rowid, d.product_type as dtype, d.".$fk_facture.
" as facid, d.$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, d.description as descr,";
987 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
988 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
989 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
990 $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,";
991 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
992 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
993 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
994 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
995 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
996 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
997 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
998 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf ON pf.".$fk_facture2.
" = f.rowid";
999 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymenttable.
" as pa ON pa.rowid = pf.".$fk_payment;
1000 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
1001 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
" = f.rowid";
1002 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
1003 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
1004 $sql .=
" AND f.fk_statut in (1,2)";
1005 $sql .=
" AND f.type IN (0,1,2,3,5)";
1008 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
1011 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
1014 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
1015 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
1017 if ($date_start && $date_end) {
1018 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
1020 $sql .=
" AND (d.product_type = 1";
1021 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
1023 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
1025 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
1029 dol_syslog(
"Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR);
1032 if ($sql ==
'TODO') {
1035 if ($sql !=
'TODO') {
1036 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
1037 $resql = $db->query($sql);
1041 while ($assoc = $db->fetch_array($resql)) {
1042 $rate_key = $assoc[
'rate'];
1043 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1044 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1048 if (!isset($list[$rate_key][
'totalht'])) {
1049 $list[$rate_key][
'totalht'] = 0;
1051 if (!isset($list[$rate_key][
'vat'])) {
1052 $list[$rate_key][
'vat'] = 0;
1054 if (!isset($list[$rate_key][
'localtax1'])) {
1055 $list[$rate_key][
'localtax1'] = 0;
1057 if (!isset($list[$rate_key][
'localtax2'])) {
1058 $list[$rate_key][
'localtax2'] = 0;
1061 if ($assoc[
'rowid'] != $oldrowid) {
1062 $oldrowid = $assoc[
'rowid'];
1063 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1064 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1065 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1066 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1068 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1069 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
1070 $list[$rate_key][
'datef'][] = $db->jdate($assoc[
'datef']);
1071 $list[$rate_key][
'datep'][] = $db->jdate($assoc[
'datep']);
1073 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
1074 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
1076 $list[$rate_key][
'company_name'][] = (string) $assoc[
'company_name'];
1077 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
1078 $list[$rate_key][
'company_alias'][] = (string) $assoc[
'company_alias'];
1079 $list[$rate_key][
'company_email'][] = (string) $assoc[
'company_email'];
1080 $list[$rate_key][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
1081 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
1082 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
1083 $list[$rate_key][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
1084 $list[$rate_key][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
1085 $list[$rate_key][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
1086 $list[$rate_key][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
1087 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
1089 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1090 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
1091 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1092 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1093 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
1095 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1096 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1097 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1098 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1100 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1101 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
1102 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
1104 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1105 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
1106 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1108 $rate = $assoc[
'rate'];
1119 if ($direction ==
'buy') {
1124 $sql =
"SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.$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,";
1125 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
1126 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
1127 $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,";
1128 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid";
1129 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
1130 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid";
1131 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid";
1132 $sql .=
" WHERE e.entity = ".$conf->entity;
1133 $sql .=
" AND e.fk_statut in (6)";
1136 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
1139 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
1142 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
1143 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
1145 if ($date_start && $date_end) {
1146 $sql .=
" AND p.datep >= '".$db->idate($date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
1148 $sql .=
" AND (d.product_type = -1";
1149 $sql .=
" OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)";
1151 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.total_tva <> 0)";
1153 $sql .=
" ORDER BY e.rowid";
1156 dol_syslog(
"Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR);
1159 if ($sql ==
'TODO') {
1162 if ($sql !=
'TODO') {
1163 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
1164 $resql = $db->query($sql);
1168 while ($assoc = $db->fetch_array($resql)) {
1169 $rate_key = $assoc[
'rate'];
1170 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1171 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1175 if (!isset($list[$rate_key][
'totalht'])) {
1176 $list[$rate_key][
'totalht'] = 0;
1178 if (!isset($list[$rate_key][
'vat'])) {
1179 $list[$rate_key][
'vat'] = 0;
1181 if (!isset($list[$rate_key][
'localtax1'])) {
1182 $list[$rate_key][
'localtax1'] = 0;
1184 if (!isset($list[$rate_key][
'localtax2'])) {
1185 $list[$rate_key][
'localtax2'] = 0;
1188 if ($assoc[
'rowid'] != $oldrowid) {
1189 $oldrowid = $assoc[
'rowid'];
1190 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1191 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1192 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1193 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1196 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1197 $list[$rate_key][
'dtype'][] =
'ExpenseReportPayment';
1198 $list[$rate_key][
'datef'][] = (int) $assoc[
'datef'];
1199 $list[$rate_key][
'company_name'][] =
'';
1200 $list[$rate_key][
'company_id'][] = 0;
1201 $list[$rate_key][
'user_id'][] = (int) $assoc[
'fk_user_author'];
1202 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
1203 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
1205 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1206 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
1207 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1208 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1209 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
1211 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1212 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1213 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1214 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1216 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1217 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
1218 $list[$rate_key][
'ptype'][] =
'ExpenseReportPayment';
1220 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1221 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
1222 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1224 $rate = $assoc[
'rate'];
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Class for managing the social charges.
static count($dbs, $objecttype, $objectid)
Return nb of links.
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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).
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
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)
tax_prepare_head(ChargeSociales $object)
Prepare array with list of tabs.