39 global $db, $langs, $conf, $user;
44 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/card.php?id='.$object->id;
45 $head[$h][1] = $langs->trans(
'SocialContribution');
46 $head[$h][2] =
'card';
55 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
56 require_once DOL_DOCUMENT_ROOT.
'/core/class/link.class.php';
58 $nbFiles = count(
dol_dir_list($upload_dir,
'files', 0,
'',
'(\.meta|_preview.*\.png)$'));
59 $nbLinks =
Link::count($db, $object->element, $object->id);
60 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/document.php?id='.$object->id;
61 $head[$h][1] = $langs->trans(
"Documents");
62 if (($nbFiles + $nbLinks) > 0) $head[$h][1] .=
'<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).
'</span>';
63 $head[$h][2] =
'documents';
66 $head[$h][0] = DOL_URL_ROOT.
'/compta/sociales/info.php?id='.$object->id;
67 $head[$h][1] = $langs->trans(
"Info");
68 $head[$h][2] =
'info';
91 function tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $direction, $m = 0, $q = 0)
96 if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q)))
102 if ($direction ==
'sell')
104 $invoicetable =
'facture';
105 $invoicedettable =
'facturedet';
106 $fk_facture =
'fk_facture';
107 $fk_facture2 =
'fk_facture';
108 $fk_payment =
'fk_paiement';
109 $total_tva =
'total_tva';
110 $paymenttable =
'paiement';
111 $paymentfacturetable =
'paiement_facture';
112 $invoicefieldref =
'ref';
113 } elseif ($direction ==
'buy')
115 $invoicetable =
'facture_fourn';
116 $invoicedettable =
'facture_fourn_det';
117 $fk_facture =
'fk_facture_fourn';
118 $fk_facture2 =
'fk_facturefourn';
119 $fk_payment =
'fk_paiementfourn';
121 $paymenttable =
'paiementfourn';
122 $paymentfacturetable =
'paiementfourn_facturefourn';
123 $invoicefieldref =
'ref';
126 if (strpos($type,
'localtax') === 0) {
127 $f_rate = $type.
'_tx';
132 $total_localtax1 =
'total_localtax1';
133 $total_localtax2 =
'total_localtax2';
140 if (($direction ==
'sell' && $conf->global->TAX_MODE_SELL_PRODUCT ==
'invoice')
141 || ($direction ==
'buy' && $conf->global->TAX_MODE_BUY_PRODUCT ==
'invoice'))
144 $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,";
145 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
146 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
147 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
148 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
149 $sql .=
" 0 as payment_id, 0 as payment_amount";
150 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
151 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
152 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
153 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
154 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
155 $sql .=
" AND f.fk_statut in (1,2)";
156 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
157 else $sql .=
" AND f.type IN (0,1,2,3,5)";
158 $sql .=
" AND f.rowid = d.".$fk_facture;
159 $sql .=
" AND s.rowid = f.fk_soc";
163 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
167 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
169 if ($q) $sql .=
" AND (date_format(f.datef,'%m') > ".(($q - 1) * 3).
" AND date_format(f.datef,'%m') <= ".($q * 3).
")";
170 if ($date_start && $date_end) $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
171 $sql .=
" AND (d.product_type = 0";
172 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
173 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
174 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
177 $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,";
178 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
179 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
180 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
181 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
182 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
183 $sql .=
" pa.datep as datep";
184 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
185 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
186 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
187 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
188 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
189 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
190 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
191 $sql .=
" AND f.fk_statut in (1,2)";
192 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
193 else $sql .=
" AND f.type IN (0,1,2,3,5)";
194 $sql .=
" AND f.rowid = d.".$fk_facture;
195 $sql .=
" AND s.rowid = f.fk_soc";
196 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
197 $sql .=
" AND pa.rowid = pf.".$fk_payment;
201 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
205 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
207 if ($q) $sql .=
" AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3).
" AND date_format(pa.datep,'%m') <= ".($q * 3).
")";
208 if ($date_start && $date_end) $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
209 $sql .=
" AND (d.product_type = 0";
210 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
211 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
212 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
215 if (!$sql)
return -1;
216 if ($sql ==
'TODO')
return -2;
219 dol_syslog(
"Tax.lib.php::tax_by_thirdparty", LOG_DEBUG);
221 $resql = $db->query($sql);
226 while ($assoc = $db->fetch_array(
$resql))
228 if (!isset($list[$assoc[
'company_id']][
'totalht'])) $list[$assoc[
'company_id']][
'totalht'] = 0;
229 if (!isset($list[$assoc[
'company_id']][
'vat'])) $list[$assoc[
'company_id']][
'vat'] = 0;
230 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) $list[$assoc[
'company_id']][
'localtax1'] = 0;
231 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) $list[$assoc[
'company_id']][
'localtax2'] = 0;
233 if ($assoc[
'rowid'] != $oldrowid)
235 $oldrowid = $assoc[
'rowid'];
236 $list[$assoc[
'company_id']][
'totalht'] += $assoc[
'total_ht'];
237 $list[$assoc[
'company_id']][
'vat'] += $assoc[
'total_vat'];
238 $list[$assoc[
'company_id']][
'localtax1'] += $assoc[
'total_localtax1'];
239 $list[$assoc[
'company_id']][
'localtax2'] += $assoc[
'total_localtax2'];
241 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = $assoc[
'total_ttc'];
242 $list[$assoc[
'company_id']][
'dtype'][] = $assoc[
'dtype'];
243 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
244 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
245 $list[$assoc[
'company_id']][
'company_name'][] = $assoc[
'company_name'];
246 $list[$assoc[
'company_id']][
'company_id'][] = $assoc[
'company_id'];
247 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
248 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
249 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
251 $list[$assoc[
'company_id']][
'facid'][] = $assoc[
'facid'];
252 $list[$assoc[
'company_id']][
'facnum'][] = $assoc[
'facnum'];
253 $list[$assoc[
'company_id']][
'type'][] = $assoc[
'type'];
254 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = $assoc[
'ftotal_ttc'];
255 $list[$assoc[
'company_id']][
'descr'][] = $assoc[
'descr'];
257 $list[$assoc[
'company_id']][
'totalht_list'][] = $assoc[
'total_ht'];
258 $list[$assoc[
'company_id']][
'vat_list'][] = $assoc[
'total_vat'];
259 $list[$assoc[
'company_id']][
'localtax1_list'][] = $assoc[
'total_localtax1'];
260 $list[$assoc[
'company_id']][
'localtax2_list'][] = $assoc[
'total_localtax2'];
262 $list[$assoc[
'company_id']][
'pid'][] = $assoc[
'pid'];
263 $list[$assoc[
'company_id']][
'pref'][] = $assoc[
'pref'];
264 $list[$assoc[
'company_id']][
'ptype'][] = $assoc[
'ptype'];
266 $list[$assoc[
'company_id']][
'payment_id'][] = $assoc[
'payment_id'];
267 $list[$assoc[
'company_id']][
'payment_amount'][] = $assoc[
'payment_amount'];
269 $company_id = $assoc[
'company_id'];
282 if (($direction ==
'sell' && $conf->global->TAX_MODE_SELL_SERVICE ==
'invoice')
283 || ($direction ==
'buy' && $conf->global->TAX_MODE_BUY_SERVICE ==
'invoice'))
286 $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,";
287 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
288 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
289 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
290 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
291 $sql .=
" 0 as payment_id, 0 as payment_amount";
292 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
293 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
294 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
295 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
296 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
297 $sql .=
" AND f.fk_statut in (1,2)";
298 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
299 else $sql .=
" AND f.type IN (0,1,2,3,5)";
300 $sql .=
" AND f.rowid = d.".$fk_facture;
301 $sql .=
" AND s.rowid = f.fk_soc";
305 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
309 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
311 if ($q) $sql .=
" AND (date_format(f.datef,'%m') > ".(($q - 1) * 3).
" AND date_format(f.datef,'%m') <= ".($q * 3).
")";
312 if ($date_start && $date_end) $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
313 $sql .=
" AND (d.product_type = 1";
314 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
315 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
316 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
319 $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,";
320 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
321 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
322 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
323 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
324 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
325 $sql .=
" pa.datep as datep";
326 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
327 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
328 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
329 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
330 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
331 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
332 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
333 $sql .=
" AND f.fk_statut in (1,2)";
334 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
335 else $sql .=
" AND f.type IN (0,1,2,3,5)";
336 $sql .=
" AND f.rowid = d.".$fk_facture;
337 $sql .=
" AND s.rowid = f.fk_soc";
338 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
339 $sql .=
" AND pa.rowid = pf.".$fk_payment;
343 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
347 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
349 if ($q) $sql .=
" AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3).
" AND date_format(pa.datep,'%m') <= ".($q * 3).
")";
350 if ($date_start && $date_end) $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
351 $sql .=
" AND (d.product_type = 1";
352 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
353 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
354 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
359 dol_syslog(
"Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR);
362 if ($sql ==
'TODO')
return -2;
365 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
366 $resql = $db->query($sql);
371 while ($assoc = $db->fetch_array(
$resql))
373 if (!isset($list[$assoc[
'company_id']][
'totalht'])) $list[$assoc[
'company_id']][
'totalht'] = 0;
374 if (!isset($list[$assoc[
'company_id']][
'vat'])) $list[$assoc[
'company_id']][
'vat'] = 0;
375 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) $list[$assoc[
'company_id']][
'localtax1'] = 0;
376 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) $list[$assoc[
'company_id']][
'localtax2'] = 0;
378 if ($assoc[
'rowid'] != $oldrowid)
380 $oldrowid = $assoc[
'rowid'];
381 $list[$assoc[
'company_id']][
'totalht'] += $assoc[
'total_ht'];
382 $list[$assoc[
'company_id']][
'vat'] += $assoc[
'total_vat'];
383 $list[$assoc[
'company_id']][
'localtax1'] += $assoc[
'total_localtax1'];
384 $list[$assoc[
'company_id']][
'localtax2'] += $assoc[
'total_localtax2'];
386 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = $assoc[
'total_ttc'];
387 $list[$assoc[
'company_id']][
'dtype'][] = $assoc[
'dtype'];
388 $list[$assoc[
'company_id']][
'datef'][] = $db->jdate($assoc[
'datef']);
389 $list[$assoc[
'company_id']][
'datep'][] = $db->jdate($assoc[
'datep']);
390 $list[$assoc[
'company_id']][
'company_name'][] = $assoc[
'company_name'];
391 $list[$assoc[
'company_id']][
'company_id'][] = $assoc[
'company_id'];
392 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
393 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
394 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
396 $list[$assoc[
'company_id']][
'facid'][] = $assoc[
'facid'];
397 $list[$assoc[
'company_id']][
'facnum'][] = $assoc[
'facnum'];
398 $list[$assoc[
'company_id']][
'type'][] = $assoc[
'type'];
399 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = $assoc[
'ftotal_ttc'];
400 $list[$assoc[
'company_id']][
'descr'][] = $assoc[
'descr'];
402 $list[$assoc[
'company_id']][
'totalht_list'][] = $assoc[
'total_ht'];
403 $list[$assoc[
'company_id']][
'vat_list'][] = $assoc[
'total_vat'];
404 $list[$assoc[
'company_id']][
'localtax1_list'][] = $assoc[
'total_localtax1'];
405 $list[$assoc[
'company_id']][
'localtax2_list'][] = $assoc[
'total_localtax2'];
407 $list[$assoc[
'company_id']][
'pid'][] = $assoc[
'pid'];
408 $list[$assoc[
'company_id']][
'pref'][] = $assoc[
'pref'];
409 $list[$assoc[
'company_id']][
'ptype'][] = $assoc[
'ptype'];
411 $list[$assoc[
'company_id']][
'payment_id'][] = $assoc[
'payment_id'];
412 $list[$assoc[
'company_id']][
'payment_amount'][] = $assoc[
'payment_amount'];
414 $company_id = $assoc[
'company_id'];
425 if ($direction ==
'buy')
431 $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,";
432 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
433 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
434 $sql .=
" e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
435 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
436 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
437 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid ";
438 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid ";
439 $sql .=
" WHERE e.entity = ".$conf->entity;
440 $sql .=
" AND e.fk_statut in (6)";
444 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
448 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
450 if ($q) $sql .=
" AND (date_format(p.datep,'%m') > ".(($q - 1) * 3).
" AND date_format(p.datep,'%m') <= ".($q * 3).
")";
451 if ($date_start && $date_end) $sql .=
" AND p.datep >= '".$db->idate($date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
452 $sql .=
" AND (d.product_type = -1";
453 $sql .=
" OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)";
454 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.total_tva <> 0)";
455 $sql .=
" ORDER BY e.rowid";
459 dol_syslog(
"Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR);
462 if ($sql ==
'TODO')
return -2;
465 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
466 $resql = $db->query($sql);
471 while ($assoc = $db->fetch_array(
$resql))
473 if (!isset($list[$assoc[
'company_id']][
'totalht'])) $list[$assoc[
'company_id']][
'totalht'] = 0;
474 if (!isset($list[$assoc[
'company_id']][
'vat'])) $list[$assoc[
'company_id']][
'vat'] = 0;
475 if (!isset($list[$assoc[
'company_id']][
'localtax1'])) $list[$assoc[
'company_id']][
'localtax1'] = 0;
476 if (!isset($list[$assoc[
'company_id']][
'localtax2'])) $list[$assoc[
'company_id']][
'localtax2'] = 0;
478 if ($assoc[
'rowid'] != $oldrowid)
480 $oldrowid = $assoc[
'rowid'];
481 $list[$assoc[
'company_id']][
'totalht'] += $assoc[
'total_ht'];
482 $list[$assoc[
'company_id']][
'vat'] += $assoc[
'total_vat'];
483 $list[$assoc[
'company_id']][
'localtax1'] += $assoc[
'total_localtax1'];
484 $list[$assoc[
'company_id']][
'localtax2'] += $assoc[
'total_localtax2'];
487 $list[$assoc[
'company_id']][
'dtotal_ttc'][] = $assoc[
'total_ttc'];
488 $list[$assoc[
'company_id']][
'dtype'][] =
'ExpenseReportPayment';
489 $list[$assoc[
'company_id']][
'datef'][] = $assoc[
'datef'];
490 $list[$assoc[
'company_id']][
'company_name'][] =
'';
491 $list[$assoc[
'company_id']][
'company_id'][] =
'';
492 $list[$assoc[
'company_id']][
'user_id'][] = $assoc[
'fk_user_author'];
493 $list[$assoc[
'company_id']][
'drate'][] = $assoc[
'rate'];
494 $list[$assoc[
'company_id']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
495 $list[$assoc[
'company_id']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
497 $list[$assoc[
'company_id']][
'facid'][] = $assoc[
'facid'];
498 $list[$assoc[
'company_id']][
'facnum'][] = $assoc[
'facnum'];
499 $list[$assoc[
'company_id']][
'type'][] = $assoc[
'type'];
500 $list[$assoc[
'company_id']][
'ftotal_ttc'][] = $assoc[
'ftotal_ttc'];
501 $list[$assoc[
'company_id']][
'descr'][] = $assoc[
'descr'];
503 $list[$assoc[
'company_id']][
'totalht_list'][] = $assoc[
'total_ht'];
504 $list[$assoc[
'company_id']][
'vat_list'][] = $assoc[
'total_vat'];
505 $list[$assoc[
'company_id']][
'localtax1_list'][] = $assoc[
'total_localtax1'];
506 $list[$assoc[
'company_id']][
'localtax2_list'][] = $assoc[
'total_localtax2'];
508 $list[$assoc[
'company_id']][
'pid'][] = $assoc[
'pid'];
509 $list[$assoc[
'company_id']][
'pref'][] = $assoc[
'pref'];
510 $list[$assoc[
'company_id']][
'ptype'][] =
'ExpenseReportPayment';
512 $list[$assoc[
'company_id']][
'payment_id'][] = $assoc[
'payment_id'];
513 $list[$assoc[
'company_id']][
'payment_amount'][] = $assoc[
'payment_amount'];
515 $company_id = $assoc[
'company_id'];
543 function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $direction, $m = 0)
548 if (($date_start || $date_end) && (!empty($y) || !empty($m) || !empty($q)))
555 if ($direction ==
'sell')
557 $invoicetable =
'facture';
558 $invoicedettable =
'facturedet';
559 $fk_facture =
'fk_facture';
560 $fk_facture2 =
'fk_facture';
561 $fk_payment =
'fk_paiement';
562 $total_tva =
'total_tva';
563 $paymenttable =
'paiement';
564 $paymentfacturetable =
'paiement_facture';
565 $invoicefieldref =
'ref';
567 $invoicetable =
'facture_fourn';
568 $invoicedettable =
'facture_fourn_det';
569 $fk_facture =
'fk_facture_fourn';
570 $fk_facture2 =
'fk_facturefourn';
571 $fk_payment =
'fk_paiementfourn';
573 $paymenttable =
'paiementfourn';
574 $paymentfacturetable =
'paiementfourn_facturefourn';
575 $invoicefieldref =
'ref';
578 if (strpos($type,
'localtax') === 0) {
579 $f_rate = $type.
'_tx';
584 $total_localtax1 =
'total_localtax1';
585 $total_localtax2 =
'total_localtax2';
592 if (($direction ==
'sell' && $conf->global->TAX_MODE_SELL_PRODUCT ==
'invoice')
593 || ($direction ==
'buy' && $conf->global->TAX_MODE_BUY_PRODUCT ==
'invoice'))
596 $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,";
597 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
598 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
599 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
600 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
601 $sql .=
" 0 as payment_id, 0 as payment_amount";
602 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
603 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
604 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
605 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
606 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
607 $sql .=
" AND f.fk_statut in (1,2)";
608 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
609 else $sql .=
" AND f.type IN (0,1,2,3,5)";
610 $sql .=
" AND f.rowid = d.".$fk_facture;
611 $sql .=
" AND s.rowid = f.fk_soc";
615 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
619 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
621 if ($q) $sql .=
" AND (date_format(f.datef,'%m') > ".(($q - 1) * 3).
" AND date_format(f.datef,'%m') <= ".($q * 3).
")";
622 if ($date_start && $date_end) $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
623 $sql .=
" AND (d.product_type = 0";
624 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
625 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
626 $sql .=
" ORDER BY d.rowid, d.".$fk_facture;
629 $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,";
630 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
631 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
632 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
633 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
634 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
635 $sql .=
" pa.datep as datep";
636 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
637 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
638 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
639 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
640 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
641 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
642 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
643 $sql .=
" AND f.fk_statut in (1,2)";
644 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
645 else $sql .=
" AND f.type IN (0,1,2,3,5)";
646 $sql .=
" AND f.rowid = d.".$fk_facture;
647 $sql .=
" AND s.rowid = f.fk_soc";
648 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
649 $sql .=
" AND pa.rowid = pf.".$fk_payment;
653 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
657 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
659 if ($q) $sql .=
" AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3).
" AND date_format(pa.datep,'%m') <= ".($q * 3).
")";
660 if ($date_start && $date_end) $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
661 $sql .=
" AND (d.product_type = 0";
662 $sql .=
" AND d.date_start is null AND d.date_end IS NULL)";
663 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
664 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
667 if (!$sql)
return -1;
668 if ($sql ==
'TODO')
return -2;
671 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
673 $resql = $db->query($sql);
678 while ($assoc = $db->fetch_array(
$resql))
681 if (!isset($list[$assoc[
'rate']][
'totalht'])) $list[$assoc[
'rate']][
'totalht'] = 0;
682 if (!isset($list[$assoc[
'rate']][
'vat'])) $list[$assoc[
'rate']][
'vat'] = 0;
683 if (!isset($list[$assoc[
'rate']][
'localtax1'])) $list[$assoc[
'rate']][
'localtax1'] = 0;
684 if (!isset($list[$assoc[
'rate']][
'localtax2'])) $list[$assoc[
'rate']][
'localtax2'] = 0;
686 if ($assoc[
'rowid'] != $oldrowid)
688 $oldrowid = $assoc[
'rowid'];
689 $list[$assoc[
'rate']][
'totalht'] += $assoc[
'total_ht'];
690 $list[$assoc[
'rate']][
'vat'] += $assoc[
'total_vat'];
691 $list[$assoc[
'rate']][
'localtax1'] += $assoc[
'total_localtax1'];
692 $list[$assoc[
'rate']][
'localtax2'] += $assoc[
'total_localtax2'];
694 $list[$assoc[
'rate']][
'dtotal_ttc'][] = $assoc[
'total_ttc'];
695 $list[$assoc[
'rate']][
'dtype'][] = $assoc[
'dtype'];
696 $list[$assoc[
'rate']][
'datef'][] = $db->jdate($assoc[
'datef']);
697 $list[$assoc[
'rate']][
'datep'][] = $db->jdate($assoc[
'datep']);
698 $list[$assoc[
'rate']][
'company_name'][] = $assoc[
'company_name'];
699 $list[$assoc[
'rate']][
'company_id'][] = $assoc[
'company_id'];
700 $list[$assoc[
'rate']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
701 $list[$assoc[
'rate']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
703 $list[$assoc[
'rate']][
'facid'][] = $assoc[
'facid'];
704 $list[$assoc[
'rate']][
'facnum'][] = $assoc[
'facnum'];
705 $list[$assoc[
'rate']][
'type'][] = $assoc[
'type'];
706 $list[$assoc[
'rate']][
'ftotal_ttc'][] = $assoc[
'ftotal_ttc'];
707 $list[$assoc[
'rate']][
'descr'][] = $assoc[
'descr'];
709 $list[$assoc[
'rate']][
'totalht_list'][] = $assoc[
'total_ht'];
710 $list[$assoc[
'rate']][
'vat_list'][] = $assoc[
'total_vat'];
711 $list[$assoc[
'rate']][
'localtax1_list'][] = $assoc[
'total_localtax1'];
712 $list[$assoc[
'rate']][
'localtax2_list'][] = $assoc[
'total_localtax2'];
714 $list[$assoc[
'rate']][
'pid'][] = $assoc[
'pid'];
715 $list[$assoc[
'rate']][
'pref'][] = $assoc[
'pref'];
716 $list[$assoc[
'rate']][
'ptype'][] = $assoc[
'ptype'];
718 $list[$assoc[
'rate']][
'payment_id'][] = $assoc[
'payment_id'];
719 $list[$assoc[
'rate']][
'payment_amount'][] = $assoc[
'payment_amount'];
721 $rate = $assoc[
'rate'];
734 if (($direction ==
'sell' && $conf->global->TAX_MODE_SELL_SERVICE ==
'invoice')
735 || ($direction ==
'buy' && $conf->global->TAX_MODE_BUY_SERVICE ==
'invoice'))
738 $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,";
739 $sql .=
" d.".$total_localtax1.
" as total_localtax1, d.".$total_localtax2.
" as total_localtax2, ";
740 $sql .=
" d.date_start as date_start, d.date_end as date_end,";
741 $sql .=
" f.".$invoicefieldref.
" as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
742 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
743 $sql .=
" 0 as payment_id, 0 as payment_amount";
744 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
745 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
746 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
747 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
748 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
749 $sql .=
" AND f.fk_statut in (1,2)";
750 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
751 else $sql .=
" AND f.type IN (0,1,2,3,5)";
752 $sql .=
" AND f.rowid = d.".$fk_facture;
753 $sql .=
" AND s.rowid = f.fk_soc";
757 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
761 $sql .=
" AND f.datef <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
763 if ($q) $sql .=
" AND (date_format(f.datef,'%m') > ".(($q - 1) * 3).
" AND date_format(f.datef,'%m') <= ".($q * 3).
")";
764 if ($date_start && $date_end) $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
765 $sql .=
" AND (d.product_type = 1";
766 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
767 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $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.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, s.nom as company_name, s.rowid as company_id,";
775 $sql .=
" p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
776 $sql .=
" pf.".$fk_payment.
" as payment_id, pf.amount as payment_amount,";
777 $sql .=
" pa.datep as datep";
778 $sql .=
" FROM ".MAIN_DB_PREFIX.$invoicetable.
" as f,";
779 $sql .=
" ".MAIN_DB_PREFIX.$paymentfacturetable.
" as pf,";
780 $sql .=
" ".MAIN_DB_PREFIX.$paymenttable.
" as pa,";
781 $sql .=
" ".MAIN_DB_PREFIX.
"societe as s,";
782 $sql .=
" ".MAIN_DB_PREFIX.$invoicedettable.
" as d";
783 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p on d.fk_product = p.rowid";
784 $sql .=
" WHERE f.entity IN (".getEntity($invoicetable).
")";
785 $sql .=
" AND f.fk_statut in (1,2)";
786 if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql .=
" AND f.type IN (0,1,2,5)";
787 else $sql .=
" AND f.type IN (0,1,2,3,5)";
788 $sql .=
" AND f.rowid = d.".$fk_facture;
789 $sql .=
" AND s.rowid = f.fk_soc";
790 $sql .=
" AND pf.".$fk_facture2.
" = f.rowid";
791 $sql .=
" AND pa.rowid = pf.".$fk_payment;
795 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
799 $sql .=
" AND pa.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
801 if ($q) $sql .=
" AND (date_format(pa.datep,'%m') > ".(($q - 1) * 3).
" AND date_format(pa.datep,'%m') <= ".($q * 3).
")";
802 if ($date_start && $date_end) $sql .=
" AND pa.datep >= '".$db->idate($date_start).
"' AND pa.datep <= '".$db->idate($date_end).
"'";
803 $sql .=
" AND (d.product_type = 1";
804 $sql .=
" OR d.date_start is NOT null OR d.date_end IS NOT NULL)";
805 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.".$total_tva.
" <> 0)";
806 $sql .=
" ORDER BY d.rowid, d.".$fk_facture.
", pf.rowid";
811 dol_syslog(
"Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR);
814 if ($sql ==
'TODO')
return -2;
817 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
818 $resql = $db->query($sql);
823 while ($assoc = $db->fetch_array(
$resql))
826 if (!isset($list[$assoc[
'rate']][
'totalht'])) $list[$assoc[
'rate']][
'totalht'] = 0;
827 if (!isset($list[$assoc[
'rate']][
'vat'])) $list[$assoc[
'rate']][
'vat'] = 0;
828 if (!isset($list[$assoc[
'rate']][
'localtax1'])) $list[$assoc[
'rate']][
'localtax1'] = 0;
829 if (!isset($list[$assoc[
'rate']][
'localtax2'])) $list[$assoc[
'rate']][
'localtax2'] = 0;
831 if ($assoc[
'rowid'] != $oldrowid)
833 $oldrowid = $assoc[
'rowid'];
834 $list[$assoc[
'rate']][
'totalht'] += $assoc[
'total_ht'];
835 $list[$assoc[
'rate']][
'vat'] += $assoc[
'total_vat'];
836 $list[$assoc[
'rate']][
'localtax1'] += $assoc[
'total_localtax1'];
837 $list[$assoc[
'rate']][
'localtax2'] += $assoc[
'total_localtax2'];
839 $list[$assoc[
'rate']][
'dtotal_ttc'][] = $assoc[
'total_ttc'];
840 $list[$assoc[
'rate']][
'dtype'][] = $assoc[
'dtype'];
841 $list[$assoc[
'rate']][
'datef'][] = $db->jdate($assoc[
'datef']);
842 $list[$assoc[
'rate']][
'datep'][] = $db->jdate($assoc[
'datep']);
843 $list[$assoc[
'rate']][
'company_name'][] = $assoc[
'company_name'];
844 $list[$assoc[
'rate']][
'company_id'][] = $assoc[
'company_id'];
845 $list[$assoc[
'rate']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
846 $list[$assoc[
'rate']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
848 $list[$assoc[
'rate']][
'facid'][] = $assoc[
'facid'];
849 $list[$assoc[
'rate']][
'facnum'][] = $assoc[
'facnum'];
850 $list[$assoc[
'rate']][
'type'][] = $assoc[
'type'];
851 $list[$assoc[
'rate']][
'ftotal_ttc'][] = $assoc[
'ftotal_ttc'];
852 $list[$assoc[
'rate']][
'descr'][] = $assoc[
'descr'];
854 $list[$assoc[
'rate']][
'totalht_list'][] = $assoc[
'total_ht'];
855 $list[$assoc[
'rate']][
'vat_list'][] = $assoc[
'total_vat'];
856 $list[$assoc[
'rate']][
'localtax1_list'][] = $assoc[
'total_localtax1'];
857 $list[$assoc[
'rate']][
'localtax2_list'][] = $assoc[
'total_localtax2'];
859 $list[$assoc[
'rate']][
'pid'][] = $assoc[
'pid'];
860 $list[$assoc[
'rate']][
'pref'][] = $assoc[
'pref'];
861 $list[$assoc[
'rate']][
'ptype'][] = $assoc[
'ptype'];
863 $list[$assoc[
'rate']][
'payment_id'][] = $assoc[
'payment_id'];
864 $list[$assoc[
'rate']][
'payment_amount'][] = $assoc[
'payment_amount'];
866 $rate = $assoc[
'rate'];
877 if ($direction ==
'buy')
883 $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,";
884 $sql .=
" d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, ";
885 $sql .=
" e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
886 $sql .=
" e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
887 $sql .=
" p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
888 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e ";
889 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"expensereport_det as d ON d.fk_expensereport = e.rowid ";
890 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_expensereport as p ON p.fk_expensereport = e.rowid ";
891 $sql .=
" WHERE e.entity = ".$conf->entity;
892 $sql .=
" AND e.fk_statut in (6)";
896 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, $m,
false)).
"'";
900 $sql .=
" AND p.datep <= '".$db->idate(
dol_get_last_day($y, 12,
false)).
"'";
902 if ($q) $sql .=
" AND (date_format(p.datep,'%m') > ".(($q - 1) * 3).
" AND date_format(p.datep,'%m') <= ".($q * 3).
")";
903 if ($date_start && $date_end) $sql .=
" AND p.datep >= '".$db->idate($date_start).
"' AND p.datep <= '".$db->idate($date_end).
"'";
904 $sql .=
" AND (d.product_type = -1";
905 $sql .=
" OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)";
906 if (!empty($conf->global->MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS)) $sql .=
" AND (d.".$f_rate.
" <> 0 OR d.total_tva <> 0)";
907 $sql .=
" ORDER BY e.rowid";
911 dol_syslog(
"Tax.lib.php::tax_by_rate no accountancy module enabled".$sql, LOG_ERR);
914 if ($sql ==
'TODO')
return -2;
917 dol_syslog(
"Tax.lib.php::tax_by_rate", LOG_DEBUG);
918 $resql = $db->query($sql);
923 while ($assoc = $db->fetch_array(
$resql))
926 if (!isset($list[$assoc[
'rate']][
'totalht'])) $list[$assoc[
'rate']][
'totalht'] = 0;
927 if (!isset($list[$assoc[
'rate']][
'vat'])) $list[$assoc[
'rate']][
'vat'] = 0;
928 if (!isset($list[$assoc[
'rate']][
'localtax1'])) $list[$assoc[
'rate']][
'localtax1'] = 0;
929 if (!isset($list[$assoc[
'rate']][
'localtax2'])) $list[$assoc[
'rate']][
'localtax2'] = 0;
931 if ($assoc[
'rowid'] != $oldrowid)
933 $oldrowid = $assoc[
'rowid'];
934 $list[$assoc[
'rate']][
'totalht'] += $assoc[
'total_ht'];
935 $list[$assoc[
'rate']][
'vat'] += $assoc[
'total_vat'];
936 $list[$assoc[
'rate']][
'localtax1'] += $assoc[
'total_localtax1'];
937 $list[$assoc[
'rate']][
'localtax2'] += $assoc[
'total_localtax2'];
940 $list[$assoc[
'rate']][
'dtotal_ttc'][] = $assoc[
'total_ttc'];
941 $list[$assoc[
'rate']][
'dtype'][] =
'ExpenseReportPayment';
942 $list[$assoc[
'rate']][
'datef'][] = $assoc[
'datef'];
943 $list[$assoc[
'rate']][
'company_name'][] =
'';
944 $list[$assoc[
'rate']][
'company_id'][] =
'';
945 $list[$assoc[
'rate']][
'user_id'][] = $assoc[
'fk_user_author'];
946 $list[$assoc[
'rate']][
'ddate_start'][] = $db->jdate($assoc[
'date_start']);
947 $list[$assoc[
'rate']][
'ddate_end'][] = $db->jdate($assoc[
'date_end']);
949 $list[$assoc[
'rate']][
'facid'][] = $assoc[
'facid'];
950 $list[$assoc[
'rate']][
'facnum'][] = $assoc[
'facnum'];
951 $list[$assoc[
'rate']][
'type'][] = $assoc[
'type'];
952 $list[$assoc[
'rate']][
'ftotal_ttc'][] = $assoc[
'ftotal_ttc'];
953 $list[$assoc[
'rate']][
'descr'][] = $assoc[
'descr'];
955 $list[$assoc[
'rate']][
'totalht_list'][] = $assoc[
'total_ht'];
956 $list[$assoc[
'rate']][
'vat_list'][] = $assoc[
'total_vat'];
957 $list[$assoc[
'rate']][
'localtax1_list'][] = $assoc[
'total_localtax1'];
958 $list[$assoc[
'rate']][
'localtax2_list'][] = $assoc[
'total_localtax2'];
960 $list[$assoc[
'rate']][
'pid'][] = $assoc[
'pid'];
961 $list[$assoc[
'rate']][
'pref'][] = $assoc[
'pref'];
962 $list[$assoc[
'rate']][
'ptype'][] =
'ExpenseReportPayment';
964 $list[$assoc[
'rate']][
'payment_id'][] = $assoc[
'payment_id'];
965 $list[$assoc[
'rate']][
'payment_amount'][] = $assoc[
'payment_amount'];
967 $rate = $assoc[
'rate'];
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)
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
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...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
dol_sanitizeFileName($str, $newstr= '_', $unaccent=1)
Clean a string to use it as a file name.
dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0)
Scan a directory and return a list of files/directories.
tax_prepare_head(ChargeSociales $object)
Prepare array with list of tabs.
static count($db, $objecttype, $objectid)
Return nb of links.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->lire) if(!empty($conf->tax->enabled)&&$user->rights->tax->charges->lire) if(!empty($conf->facture->enabled)&&!empty($conf->commande->enabled)&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
dol_print_error($db= '', $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')
Complete or removed entries into a head array (used to build tabs).
Classe permettant la gestion des paiements des charges La tva collectee n'est calculee que sur les fa...