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";
278 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
280 $resql = $db->query($sql);
284 while ($assoc = $db->fetch_array($resql)) {
285 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
286 $list[$assoc[
'company_id']][
'totalht'] = 0;
288 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
289 $list[$assoc[
'company_id']][
'vat'] = 0;
291 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
292 $list[$assoc[
'company_id']][
'localtax1'] = 0;
294 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
295 $list[$assoc[
'company_id']][
'localtax2'] = 0;
298 if ($assoc[
'rowid'] != $oldrowid) {
299 $oldrowid = $assoc[
'rowid'];
300 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
301 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
302 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
303 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
306 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
307 $list[$assoc[
'company_id']][
'dtype'][] = (int) $assoc[
'dtype'];
308 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
309 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
311 $list[$assoc[
'company_id']][
'company_name'][] = (string) $assoc[
'company_name'];
312 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
313 $list[$assoc[
'company_id']][
'company_alias'][] = (string) $assoc[
'company_alias'];
314 $list[$assoc[
'company_id']][
'company_email'][] = (string) $assoc[
'company_email'];
315 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
316 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
317 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
318 $list[$assoc[
'company_id']][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
319 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
320 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
321 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
322 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
324 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
325 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
326 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
328 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
329 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
330 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
331 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
332 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
334 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
335 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
336 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
337 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
339 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
340 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
341 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
343 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
344 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
346 $company_id = $assoc[
'company_id'];
358 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
359 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
361 $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,";
362 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
363 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
364 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
365 $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,";
366 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
367 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
368 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
369 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
370 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
371 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
372 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
373 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
374 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
375 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
376 $sql .=
" AND f.fk_statut in (1,2)";
377 if ($direction ==
'buy') {
379 $sql .=
" AND f.type IN (0,1,2,5)";
381 $sql .=
" AND f.type IN (0,1,2,3,5)";
385 $sql .=
" AND f.type IN (0,1,2,5)";
387 $sql .=
" AND f.type IN (0,1,2,3,5)";
390 $sql .=
" AND f.rowid = d.".$fk_facture;
391 $sql .=
" AND s.rowid = f.fk_soc";
394 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
397 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
400 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
401 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
403 if ($date_start && $date_end) {
404 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
406 $sql .=
" AND (d.product_type = 1";
407 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
409 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
411 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
414 $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,";
415 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
416 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
417 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
418 $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,";
419 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
420 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
421 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
422 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype, p.tosell as pstatus, p.tobuy as pstatusbuy,";
423 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
424 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
425 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
426 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
427 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
428 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
429 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
430 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
431 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
432 $sql .=
" AND f.fk_statut in (1,2)";
433 $sql .=
" AND f.type IN (0,1,2,3,5)";
434 $sql .=
" AND f.rowid = d.".$fk_facture;
435 $sql .=
" AND s.rowid = f.fk_soc";
436 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
437 $sql .=
" AND pa.rowid = pf.".$fk_payment;
440 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
443 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
446 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
447 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
449 if ($date_start && $date_end) {
450 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
452 $sql .=
" AND (d.product_type = 1";
453 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
455 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
457 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
460 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
461 $resql = $db->query($sql);
465 while ($assoc = $db->fetch_array($resql)) {
466 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
467 $list[$assoc[
'company_id']][
'totalht'] = 0;
469 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
470 $list[$assoc[
'company_id']][
'vat'] = 0;
472 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
473 $list[$assoc[
'company_id']][
'localtax1'] = 0;
475 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
476 $list[$assoc[
'company_id']][
'localtax2'] = 0;
479 if ($assoc[
'rowid'] != $oldrowid) {
480 $oldrowid = $assoc[
'rowid'];
481 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
482 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
483 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
484 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
486 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
487 $list[$assoc[
'company_id']][
'dtype'][] = $assoc[
'dtype'];
488 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
489 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
491 $list[$assoc[
'company_id']][
'company_name'][] = (string) $assoc[
'company_name'];
492 $list[$assoc[
'company_id']][
'company_id'][] = (int) $assoc[
'company_id'];
493 $list[$assoc[
'company_id']][
'company_alias'][] = (string) $assoc[
'company_alias'];
494 $list[$assoc[
'company_id']][
'company_email'][] = (string) $assoc[
'company_email'];
495 $list[$assoc[
'company_id']][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
496 $list[$assoc[
'company_id']][
'company_client'][] = (int) $assoc[
'company_client'];
497 $list[$assoc[
'company_id']][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
498 $list[$assoc[
'company_id']][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
499 $list[$assoc[
'company_id']][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
500 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
501 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
502 $list[$assoc[
'company_id']][
'company_status'][] = (int) $assoc[
'company_status'];
504 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
505 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
506 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
508 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
509 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
510 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
511 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
512 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
514 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
515 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
516 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
517 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
519 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
520 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
521 $list[$assoc[
'company_id']][
'ptype'][] = (int) $assoc[
'ptype'];
523 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
524 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
525 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
527 $company_id = $assoc[
'company_id'];
537 if ($direction ==
'buy') {
542 $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,";
543 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
544 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
545 $sql .=
" e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
546 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
547 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
548 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid ";
549 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid ";
550 $sql .=
" WHERE e.entity = ".$conf->entity;
551 $sql .=
" AND e.fk_statut in (6)";
554 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
557 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
560 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
561 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
563 if ($date_start && $date_end) {
564 $sql .=
" AND p.datep >= '".$db->idate($date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
566 $sql .=
" AND (d.product_type = -1";
567 $sql .=
" OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)";
569 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.total_tva <> 0)";
571 $sql .=
" ORDER BY e.rowid";
573 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
574 $resql = $db->query($sql);
578 while ($assoc = $db->fetch_array($resql)) {
579 if (!isset($list[$assoc[
'company_id']][
'totalht'])) {
580 $list[$assoc[
'company_id']][
'totalht'] = 0;
582 if (!isset($list[$assoc[
'company_id']][
'vat'])) {
583 $list[$assoc[
'company_id']][
'vat'] = 0;
585 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) {
586 $list[$assoc[
'company_id']][
'localtax1'] = 0;
588 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) {
589 $list[$assoc[
'company_id']][
'localtax2'] = 0;
592 if ($assoc[
'rowid'] != $oldrowid) {
593 $oldrowid = $assoc[
'rowid'];
594 $list[$assoc[
'company_id']][
'totalht'] += (float) $assoc[
'total_ht'];
595 $list[$assoc[
'company_id']][
'vat'] += (float) $assoc[
'total_vat'];
596 $list[$assoc[
'company_id']][
'localtax1'] += (float) $assoc[
'total_localtax1'];
597 $list[$assoc[
'company_id']][
'localtax2'] += (float) $assoc[
'total_localtax2'];
600 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
601 $list[$assoc[
'company_id']][
'dtype'][] =
'ExpenseReportPayment';
602 $list[$assoc[
'company_id']][
'datef'][] = (int) $assoc[
'datef'];
604 $list[$assoc[
'company_id']][
'company_name'][] =
'';
605 $list[$assoc[
'company_id']][
'company_id'][] = 0;
606 $list[$assoc[
'company_id']][
'company_alias'][] =
'';
607 $list[$assoc[
'company_id']][
'company_email'][] =
'';
608 $list[$assoc[
'company_id']][
'company_tva_intra'][] =
'';
609 $list[$assoc[
'company_id']][
'company_client'][] = 0;
610 $list[$assoc[
'company_id']][
'company_fournisseur'][] = 0;
611 $list[$assoc[
'company_id']][
'company_customer_code'][] =
'';
612 $list[$assoc[
'company_id']][
'company_supplier_code'][] =
'';
613 $list[$assoc[
'company_id']][
'company_customer_accounting_code'][] =
'';
614 $list[$assoc[
'company_id']][
'company_supplier_accounting_code'][] =
'';
615 $list[$assoc[
'company_id']][
'company_status'][] = 0;
617 $list[$assoc[
'company_id']][
'user_id'][] = (int) $assoc[
'fk_user_author'];
618 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
619 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
620 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
622 $list[$assoc[
'company_id']][
'facid'][] = (int) $assoc[
'facid'];
623 $list[$assoc[
'company_id']][
'facnum'][] = (string) $assoc[
'facnum'];
624 $list[$assoc[
'company_id']][
'type'][] = (int) $assoc[
'type'];
625 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
626 $list[$assoc[
'company_id']][
'descr'][] = (string) $assoc[
'descr'];
628 $list[$assoc[
'company_id']][
'totalht_list'][] = (float) $assoc[
'total_ht'];
629 $list[$assoc[
'company_id']][
'vat_list'][] = (float) $assoc[
'total_vat'];
630 $list[$assoc[
'company_id']][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
631 $list[$assoc[
'company_id']][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
633 $list[$assoc[
'company_id']][
'pid'][] = (int) $assoc[
'pid'];
634 $list[$assoc[
'company_id']][
'pref'][] = (string) $assoc[
'pref'];
635 $list[$assoc[
'company_id']][
'ptype'][] =
'ExpenseReportPayment';
637 $list[$assoc[
'company_id']][
'payment_id'][] = (int) $assoc[
'payment_id'];
638 $list[$assoc[
'company_id']][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
639 $list[$assoc[
'company_id']][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
641 $company_id = $assoc[
'company_id'];
669function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $direction, $m = 0)
674 if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q))) {
680 if ($direction ==
'sell') {
681 $invoicetable =
'facture';
682 $invoicedettable =
'facturedet';
683 $fk_facture =
'fk_facture';
684 $fk_facture2 =
'fk_facture';
685 $fk_payment =
'fk_paiement';
686 $total_tva =
'total_tva';
687 $paymenttable =
'paiement';
688 $paymentfacturetable =
'paiement_facture';
689 $invoicefieldref =
'ref';
691 $invoicetable =
'facture_fourn';
692 $invoicedettable =
'facture_fourn_det';
693 $fk_facture =
'fk_facture_fourn';
694 $fk_facture2 =
'fk_facturefourn';
695 $fk_payment =
'fk_paiementfourn';
697 $paymenttable =
'paiementfourn';
698 $paymentfacturetable =
'paiementfourn_facturefourn';
699 $invoicefieldref =
'ref';
702 if (strpos($type,
'localtax') === 0) {
703 $f_rate = $type.
'_tx';
708 $total_localtax1 =
'total_localtax1';
709 $total_localtax2 =
'total_localtax2';
716 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_PRODUCT') ==
'invoice')
717 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_PRODUCT') ==
'invoice')) {
719 $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,";
720 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
721 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
722 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
723 $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,";
724 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
725 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
726 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
727 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
728 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount,";
729 $sql .=
" '' as datep";
730 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
731 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
732 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
"=f.rowid";
733 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
734 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
735 $sql .=
" AND f.fk_statut in (1,2)";
736 if ($direction ==
'buy') {
738 $sql .=
" AND f.type IN (0,1,2,5)";
740 $sql .=
" AND f.type IN (0,1,2,3,5)";
744 $sql .=
" AND f.type IN (0,1,2,5)";
746 $sql .=
" AND f.type IN (0,1,2,3,5)";
751 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
754 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
757 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
758 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
760 if ($date_start && $date_end) {
761 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
763 $sql .=
" AND (d.product_type = 0";
764 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
766 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
768 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
771 $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,";
772 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
773 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
774 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
775 $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,";
776 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
777 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
778 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
779 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
780 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
781 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
782 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
783 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf ON pf.".$fk_facture2.
" = f.rowid";
784 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymenttable.
" as pa ON pa.rowid = pf.".$fk_payment;
785 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
786 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
" = f.rowid";
787 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
788 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
789 $sql .=
" AND f.fk_statut in (1,2)";
790 $sql .=
" AND f.type IN (0,1,2,3,5)";
793 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
796 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
799 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
800 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
802 if ($date_start && $date_end) {
803 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
805 $sql .=
" AND (d.product_type = 0";
806 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
808 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
810 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
813 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
815 $resql = $db->query($sql);
819 while ($assoc = $db->fetch_array($resql)) {
820 $rate_key = $assoc[
'rate'];
821 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
822 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
826 if (!isset($list[$rate_key][
'totalht'])) {
827 $list[$rate_key][
'totalht'] = 0;
829 if (!isset($list[$rate_key][
'vat'])) {
830 $list[$rate_key][
'vat'] = 0;
832 if (!isset($list[$rate_key][
'localtax1'])) {
833 $list[$rate_key][
'localtax1'] = 0;
835 if (!isset($list[$rate_key][
'localtax2'])) {
836 $list[$rate_key][
'localtax2'] = 0;
839 if ($assoc[
'rowid'] != $oldrowid) {
840 $oldrowid = $assoc[
'rowid'];
841 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
842 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
843 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
844 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
846 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
847 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
848 $list[$rate_key][
'datef'][] = $db->jdate($assoc[
'datef']);
849 $list[$rate_key][
'datep'][] = $db->jdate($assoc[
'datep']);
851 $list[$rate_key][
'company_name'][] = (string) $assoc[
'company_name'];
852 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
853 $list[$rate_key][
'company_alias'][] = (string) $assoc[
'company_alias'];
854 $list[$rate_key][
'company_email'][] = (string) $assoc[
'company_email'];
855 $list[$rate_key][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
856 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
857 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
858 $list[$rate_key][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
859 $list[$rate_key][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
860 $list[$rate_key][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
861 $list[$rate_key][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
862 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
864 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
865 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
867 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
868 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
869 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
870 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
871 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
873 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
874 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
875 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
876 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
878 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
879 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
880 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
882 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
883 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
884 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
886 $rate = $assoc[
'rate'];
897 if (($direction ==
'sell' &&
getDolGlobalString(
'TAX_MODE_SELL_SERVICE') ==
'invoice')
898 || ($direction ==
'buy' &&
getDolGlobalString(
'TAX_MODE_BUY_SERVICE') ==
'invoice')) {
900 $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,";
901 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
902 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
903 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
904 $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,";
905 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
906 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
907 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
908 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
909 $sql .=
" 0 as payment_id, '' as payment_ref, 0 as payment_amount";
910 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
911 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
912 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
" = f.rowid";
913 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
914 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
915 $sql .=
" AND f.fk_statut in (1,2)";
916 if ($direction ==
'buy') {
918 $sql .=
" AND f.type IN (0,1,2,5)";
920 $sql .=
" AND f.type IN (0,1,2,3,5)";
924 $sql .=
" AND f.type IN (0,1,2,5)";
926 $sql .=
" AND f.type IN (0,1,2,3,5)";
931 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
934 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
937 $sql .=
" AND f.datef > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
938 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
940 if ($date_start && $date_end) {
941 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
943 $sql .=
" AND (d.product_type = 1";
944 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
946 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
948 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
951 $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,";
952 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
953 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
954 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef,";
955 $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,";
956 $sql .=
" s.code_client as company_customer_code, s.code_fournisseur as company_supplier_code,";
957 $sql .=
" s.code_compta as company_customer_accounting_code, s.code_compta_fournisseur as company_supplier_accounting_code,";
958 $sql .=
" s.status as company_status, s.tva_intra as company_tva_intra,";
959 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
960 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
961 $sql .=
" pa.datep as datep, pa.ref as payment_ref";
962 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f";
963 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf ON pf.".$fk_facture2.
" = f.rowid";
964 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$paymenttable.
" as pa ON pa.rowid = pf.".$fk_payment;
965 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
966 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable.
" as d ON d.".$fk_facture.
" = f.rowid";
967 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
968 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
969 $sql .=
" AND f.fk_statut in (1,2)";
970 $sql .=
" AND f.type IN (0,1,2,3,5)";
973 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
976 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
979 $sql .=
" AND pa.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
980 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
982 if ($date_start && $date_end) {
983 $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
985 $sql .=
" AND (d.product_type = 1";
986 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
988 $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
990 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
993 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
994 $resql = $db->query($sql);
998 while ($assoc = $db->fetch_array($resql)) {
999 $rate_key = $assoc[
'rate'];
1000 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1001 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1005 if (!isset($list[$rate_key][
'totalht'])) {
1006 $list[$rate_key][
'totalht'] = 0;
1008 if (!isset($list[$rate_key][
'vat'])) {
1009 $list[$rate_key][
'vat'] = 0;
1011 if (!isset($list[$rate_key][
'localtax1'])) {
1012 $list[$rate_key][
'localtax1'] = 0;
1014 if (!isset($list[$rate_key][
'localtax2'])) {
1015 $list[$rate_key][
'localtax2'] = 0;
1018 if ($assoc[
'rowid'] != $oldrowid) {
1019 $oldrowid = $assoc[
'rowid'];
1020 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1021 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1022 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1023 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1025 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1026 $list[$rate_key][
'dtype'][] = (int) $assoc[
'dtype'];
1027 $list[$rate_key][
'datef'][] = $db->jdate($assoc[
'datef']);
1028 $list[$rate_key][
'datep'][] = $db->jdate($assoc[
'datep']);
1030 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
1031 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
1033 $list[$rate_key][
'company_name'][] = (string) $assoc[
'company_name'];
1034 $list[$rate_key][
'company_id'][] = (int) $assoc[
'company_id'];
1035 $list[$rate_key][
'company_alias'][] = (string) $assoc[
'company_alias'];
1036 $list[$rate_key][
'company_email'][] = (string) $assoc[
'company_email'];
1037 $list[$rate_key][
'company_tva_intra'][] = (string) $assoc[
'company_tva_intra'];
1038 $list[$rate_key][
'company_client'][] = (int) $assoc[
'company_client'];
1039 $list[$rate_key][
'company_fournisseur'][] = (int) $assoc[
'company_fournisseur'];
1040 $list[$rate_key][
'company_customer_code'][] = (string) $assoc[
'company_customer_code'];
1041 $list[$rate_key][
'company_supplier_code'][] = (string) $assoc[
'company_supplier_code'];
1042 $list[$rate_key][
'company_customer_accounting_code'][] = (string) $assoc[
'company_customer_accounting_code'];
1043 $list[$rate_key][
'company_supplier_accounting_code'][] = (string) $assoc[
'company_supplier_accounting_code'];
1044 $list[$rate_key][
'company_status'][] = (int) $assoc[
'company_status'];
1046 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1047 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
1048 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1049 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1050 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
1052 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1053 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1054 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1055 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1057 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1058 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
1059 $list[$rate_key][
'ptype'][] = (int) $assoc[
'ptype'];
1061 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1062 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
1063 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1065 $rate = $assoc[
'rate'];
1074 if ($direction ==
'buy') {
1079 $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,";
1080 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
1081 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
1082 $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,";
1083 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid";
1084 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
1085 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid";
1086 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid";
1087 $sql .=
" WHERE e.entity = ".$conf->entity;
1088 $sql .=
" AND e.fk_statut in (6)";
1091 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
1094 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
1097 $sql .=
" AND p.datep > '".$db->idate(
dol_get_first_day($y, (($q - 1) * 3) + 1,
false)).
"'";
1098 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, ($q * 3),
false)).
"'";
1100 if ($date_start && $date_end) {
1101 $sql .=
" AND p.datep >= '".$db->idate($date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
1103 $sql .=
" AND (d.product_type = -1";
1104 $sql .=
" OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)";
1106 $sql .=
" AND (d.".$db->sanitize($f_rate).
" <> 0 OR d.total_tva <> 0)";
1108 $sql .=
" ORDER BY e.rowid";
1110 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
1111 $resql = $db->query($sql);
1115 while ($assoc = $db->fetch_array($resql)) {
1116 $rate_key = $assoc[
'rate'];
1117 if ($f_rate ==
'tva_tx' && !empty($assoc[
'vat_src_code']) && !preg_match(
'/\(/', $rate_key)) {
1118 $rate_key .=
' (' . $assoc[
'vat_src_code'] .
')';
1122 if (!isset($list[$rate_key][
'totalht'])) {
1123 $list[$rate_key][
'totalht'] = 0;
1125 if (!isset($list[$rate_key][
'vat'])) {
1126 $list[$rate_key][
'vat'] = 0;
1128 if (!isset($list[$rate_key][
'localtax1'])) {
1129 $list[$rate_key][
'localtax1'] = 0;
1131 if (!isset($list[$rate_key][
'localtax2'])) {
1132 $list[$rate_key][
'localtax2'] = 0;
1135 if ($assoc[
'rowid'] != $oldrowid) {
1136 $oldrowid = $assoc[
'rowid'];
1137 $list[$rate_key][
'totalht'] += (float) $assoc[
'total_ht'];
1138 $list[$rate_key][
'vat'] += (float) $assoc[
'total_vat'];
1139 $list[$rate_key][
'localtax1'] += (float) $assoc[
'total_localtax1'];
1140 $list[$rate_key][
'localtax2'] += (float) $assoc[
'total_localtax2'];
1143 $list[$rate_key][
'dtotal_ttc'][] = (float) $assoc[
'total_ttc'];
1144 $list[$rate_key][
'dtype'][] =
'ExpenseReportPayment';
1145 $list[$rate_key][
'datef'][] = (int) $assoc[
'datef'];
1146 $list[$rate_key][
'company_name'][] =
'';
1147 $list[$rate_key][
'company_id'][] = 0;
1148 $list[$rate_key][
'user_id'][] = (int) $assoc[
'fk_user_author'];
1149 $list[$rate_key][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
1150 $list[$rate_key][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
1152 $list[$rate_key][
'facid'][] = (int) $assoc[
'facid'];
1153 $list[$rate_key][
'facnum'][] = (string) $assoc[
'facnum'];
1154 $list[$rate_key][
'type'][] = (int) $assoc[
'type'];
1155 $list[$rate_key][
'ftotal_ttc'][] = (float) $assoc[
'ftotal_ttc'];
1156 $list[$rate_key][
'descr'][] = (string) $assoc[
'descr'];
1158 $list[$rate_key][
'totalht_list'][] = (float) $assoc[
'total_ht'];
1159 $list[$rate_key][
'vat_list'][] = (float) $assoc[
'total_vat'];
1160 $list[$rate_key][
'localtax1_list'][] = (float) $assoc[
'total_localtax1'];
1161 $list[$rate_key][
'localtax2_list'][] = (float) $assoc[
'total_localtax2'];
1163 $list[$rate_key][
'pid'][] = (int) $assoc[
'pid'];
1164 $list[$rate_key][
'pref'][] = (string) $assoc[
'pref'];
1165 $list[$rate_key][
'ptype'][] =
'ExpenseReportPayment';
1167 $list[$rate_key][
'payment_id'][] = (int) $assoc[
'payment_id'];
1168 $list[$rate_key][
'payment_ref'][] = (string) $assoc[
'payment_ref'];
1169 $list[$rate_key][
'payment_amount'][] = (float) $assoc[
'payment_amount'];
1171 $rate = $assoc[
'rate'];
if(! $sortfield) if(! $sortorder) $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_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
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).
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.
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.