32require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/tax.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
36require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/compta/localtax/class/localtax.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/fourn/class/paiementfourn.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/paymentexpensereport.class.php';
56$langs->loadLangs(array(
"other",
"compta",
"banks",
"bills",
"companies",
"product",
"trips",
"admin"));
63 $year_start = $year_current;
65 $year_current = $year;
71if (empty($date_start) || empty($date_end)) {
117if (GETPOSTISSET(
"modetax")) {
120if (empty($modetax)) {
127 $socid = $user->socid;
141$form =
new Form($db);
142$company_static =
new Societe($db);
143$invoice_customer =
new Facture($db);
146$product_static =
new Product($db);
151$morequerystring =
'';
152$listofparams = array(
'date_startmonth',
'date_startyear',
'date_startday',
'date_endmonth',
'date_endyear',
'date_endday');
153foreach ($listofparams as $param) {
155 $morequerystring .= ($morequerystring ?
'&' :
'').$param.
'='.
GETPOST($param);
159llxHeader(
'', $langs->trans(
"LocalTaxReport"),
'',
'', 0, 0,
'',
'', $morequerystring);
161$fsearch =
'<!-- hidden fields for form -->';
162$fsearch .=
'<input type="hidden" name="token" value="'.newToken().
'">';
163$fsearch .=
'<input type="hidden" name="modetax" value="'.$modetax.
'">';
164$fsearch .=
'<input type="hidden" name="localTaxType" value="'.$local.
'">';
166$name = $langs->transcountry($local == 1 ?
"LT1ReportByQuarters" :
"LT2ReportByQuarters", $mysoc->country_code);
169 $calcmode = $langs->trans(
'OptionVATDefault');
172 $calcmode = $langs->trans(
'OptionVATDebitOption');
175 $calcmode = $langs->trans(
'OptionPaymentForProductAndServices');
177$calcmode .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRules", DOL_URL_ROOT.
'/admin/taxes.php').
')</span>';
179$period = $form->selectDate($date_start,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.$form->selectDate($date_end,
'date_end', 0, 0, 0,
'', 1, 0);
180$prevyear = $year_start;
183if ($prevquarter > 1) {
189$nextyear = $year_start;
191if ($nextquarter < 4) {
197$description = $fsearch;
211if (isModEnabled(
'accounting')) {
212 $description .= $langs->trans(
"ThisIsAnEstimatedValue");
216$elementcust = $langs->trans(
"CustomersInvoices");
217$productcust = $langs->trans(
"ProductOrService");
218$amountcust = $langs->trans(
"AmountHT");
219$vatcust = $langs->trans(
"VATReceived");
220$namecust = $langs->trans(
"Name");
221if ($mysoc->tva_assuj) {
222 $vatcust .=
' ('.$langs->trans(
"StatusToPay").
')';
226$elementsup = $langs->trans(
"SuppliersInvoices");
227$productsup = $productcust;
228$amountsup = $amountcust;
229$vatsup = $langs->trans(
"VATPaid");
231if ($mysoc->tva_assuj) {
232 $vatsup .=
' ('.$langs->trans(
"ToGetBack").
')';
238report_header($name,
'', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode);
241 $vatcust = $langs->transcountry(
"LT1", $mysoc->country_code);
242 $vatsup = $langs->transcountry(
"LT1", $mysoc->country_code);
243 $vatexpensereport = $langs->transcountry(
"LT1", $mysoc->country_code);
245 $vatcust = $langs->transcountry(
"LT2", $mysoc->country_code);
246 $vatsup = $langs->transcountry(
"LT2", $mysoc->country_code);
247 $vatexpensereport = $langs->transcountry(
"LT2", $mysoc->country_code);
251print
'<div class="div-table-responsive">';
252echo
'<table class="noborder centpercent">';
260$x_coll =
tax_by_rate(
'localtax'.$local, $db, 0, 0, $date_start, $date_end, $modetax,
'sell');
261$x_paye =
tax_by_rate(
'localtax'.$local, $db, 0, 0, $date_start, $date_end, $modetax,
'buy');
263if (!is_array($x_coll) || !is_array($x_paye)) {
264 $langs->load(
"errors");
266 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
267 } elseif ($x_coll == -2) {
268 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
270 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"Error").
'</td></tr>';
276 foreach (array_keys($x_coll) as $my_coll_rate) {
277 $x_both[$my_coll_rate][
'coll'][
'totalht'] = $x_coll[$my_coll_rate][
'totalht'];
278 $x_both[$my_coll_rate][
'coll'][
'localtax'.$local] = $x_coll[$my_coll_rate][
'localtax'.$local];
279 $x_both[$my_coll_rate][
'paye'][
'totalht'] = 0;
280 $x_both[$my_coll_rate][
'paye'][
'localtax'.$local] = 0;
281 $x_both[$my_coll_rate][
'coll'][
'links'] =
'';
282 $x_both[$my_coll_rate][
'coll'][
'detail'] = array();
283 foreach ($x_coll[$my_coll_rate][
'facid'] as
$id => $dummy) {
284 $invoice_customer->id = $x_coll[$my_coll_rate][
'facid'][
$id];
285 $invoice_customer->ref = $x_coll[$my_coll_rate][
'facnum'][
$id];
286 $invoice_customer->type = $x_coll[$my_coll_rate][
'type'][
$id];
287 $company_static->fetch($x_coll[$my_coll_rate][
'company_id'][
$id]);
288 $x_both[$my_coll_rate][
'coll'][
'detail'][] = array(
289 'id' => $x_coll[$my_coll_rate][
'facid'][
$id],
290 'descr' => $x_coll[$my_coll_rate][
'descr'][
$id],
291 'pid' => $x_coll[$my_coll_rate][
'pid'][
$id],
292 'pref' => $x_coll[$my_coll_rate][
'pref'][
$id],
293 'ptype' => $x_coll[$my_coll_rate][
'ptype'][
$id],
294 'payment_id' => $x_coll[$my_coll_rate][
'payment_id'][
$id],
295 'payment_amount' => $x_coll[$my_coll_rate][
'payment_amount'][
$id],
296 'ftotal_ttc' => $x_coll[$my_coll_rate][
'ftotal_ttc'][
$id],
297 'dtotal_ttc' => $x_coll[$my_coll_rate][
'dtotal_ttc'][
$id],
298 'dtype' => $x_coll[$my_coll_rate][
'dtype'][
$id],
299 'datef' => $x_coll[$my_coll_rate][
'datef'][
$id],
300 'datep' => $x_coll[$my_coll_rate][
'datep'][
$id],
301 'company_link' => $company_static->getNomUrl(1,
'', 20),
302 'ddate_start' => $x_coll[$my_coll_rate][
'ddate_start'][
$id],
303 'ddate_end' => $x_coll[$my_coll_rate][
'ddate_end'][
$id],
304 'totalht' => $x_coll[$my_coll_rate][
'totalht_list'][
$id],
305 'localtax1' => $x_coll[$my_coll_rate][
'localtax1_list'][
$id],
306 'localtax2' => $x_coll[$my_coll_rate][
'localtax2_list'][
$id],
307 'vat' => $x_coll[$my_coll_rate][
'vat_list'][
$id],
308 'link' => $invoice_customer->getNomUrl(1,
'', 12)
313 foreach (array_keys($x_paye) as $my_paye_rate) {
314 $x_both[$my_paye_rate][
'paye'][
'totalht'] = $x_paye[$my_paye_rate][
'totalht'];
315 $x_both[$my_paye_rate][
'paye'][
'vat'] = $x_paye[$my_paye_rate][
'vat'];
316 if (!isset($x_both[$my_paye_rate][
'coll'][
'totalht'])) {
317 $x_both[$my_paye_rate][
'coll'][
'totalht'] = 0;
318 $x_both[$my_paye_rate][
'coll'][
'vat'] = 0;
320 $x_both[$my_paye_rate][
'paye'][
'links'] =
'';
321 $x_both[$my_paye_rate][
'paye'][
'detail'] = array();
323 foreach ($x_paye[$my_paye_rate][
'facid'] as
$id => $dummy) {
324 $invoice_supplier->id = $x_paye[$my_paye_rate][
'facid'][
$id];
325 $invoice_supplier->ref = $x_paye[$my_paye_rate][
'facnum'][
$id];
326 $invoice_supplier->type = $x_paye[$my_paye_rate][
'type'][
$id];
327 $x_both[$my_paye_rate][
'paye'][
'detail'][] = array(
328 'id' => $x_paye[$my_paye_rate][
'facid'][
$id],
329 'descr' => $x_paye[$my_paye_rate][
'descr'][
$id],
330 'pid' => $x_paye[$my_paye_rate][
'pid'][
$id],
331 'pref' => $x_paye[$my_paye_rate][
'pref'][
$id],
332 'ptype' => $x_paye[$my_paye_rate][
'ptype'][
$id],
333 'payment_id' => $x_paye[$my_paye_rate][
'payment_id'][
$id],
334 'payment_amount' => $x_paye[$my_paye_rate][
'payment_amount'][
$id],
335 'ftotal_ttc' =>
price2num($x_paye[$my_paye_rate][
'ftotal_ttc'][
$id]),
336 'dtotal_ttc' =>
price2num($x_paye[$my_paye_rate][
'dtotal_ttc'][
$id]),
337 'dtype' => $x_paye[$my_paye_rate][
'dtype'][
$id],
338 'datef' => $x_paye[$my_paye_rate][
'datef'][
$id],
339 'datep' => $x_paye[$my_paye_rate][
'datep'][
$id],
340 'company_link' => $company_static->getNomUrl(1,
'', 20),
341 'ddate_start' => $x_paye[$my_paye_rate][
'ddate_start'][
$id],
342 'ddate_end' => $x_paye[$my_paye_rate][
'ddate_end'][
$id],
343 'totalht' =>
price2num($x_paye[$my_paye_rate][
'totalht_list'][
$id]),
344 'localtax1' => $x_paye[$my_paye_rate][
'localtax1_list'][
$id],
345 'localtax2' => $x_paye[$my_paye_rate][
'localtax2_list'][
$id],
346 'vat' => $x_paye[$my_paye_rate][
'vat_list'][
$id],
347 'link' => $invoice_supplier->getNomUrl(1,
'', 12)
360 $span = $columns - 1;
369 print
'<tr class="liste_titre">';
370 print
'<td class="left">'.$elementcust.
'</td>';
371 print
'<td class="left">'.$productcust.
'</td>';
373 print
'<td class="right">'.$amountcust.
'</td>';
376 print
'<td class="right">'.$langs->trans(
"Payment").
' ('.$langs->trans(
"PercentOfInvoice").
')</td>';
378 print
'<td class="right">'.$langs->trans(
"BI").
'</td>';
379 print
'<td class="right">'.$vatcust.
'</td>';
385 foreach (array_keys($x_coll) as $rate) {
386 $subtot_coll_total_ht = 0;
387 $subtot_coll_vat = 0;
389 if (is_array($x_both[$rate][
'coll'][
'detail'])) {
393 print
'<td class="tax_rate">'.$langs->trans(
"Rate").
': '.
vatrate($rate).
'%</td><td colspan="'.$span.
'"></td>';
396 foreach ($x_both[$rate][
'coll'][
'detail'] as $index => $fields) {
397 if (($local == 1 && $fields[
'localtax1'] != 0) || ($local == 2 && $fields[
'localtax2'] != 0)) {
399 $type = ($fields[
'dtype'] ? $fields[
'dtype'] : $fields[
'ptype']);
402 if (!empty($fields[
'ddate_start'])) {
405 if (!empty($fields[
'ddate_end'])) {
410 print
'<tr class="oddeven">';
413 print
'<td class="nowrap left">'.$fields[
'link'].
'</td>';
416 print
'<td class="left">';
417 if ($fields[
'pid']) {
418 $product_static->id = $fields[
'pid'];
419 $product_static->ref = $fields[
'pref'];
420 $product_static->type = $fields[
'ptype'];
421 print $product_static->getNomUrl(1);
427 $text =
img_object($langs->trans(
'Service'),
'service');
429 $text =
img_object($langs->trans(
'Product'),
'product');
431 if (preg_match(
'/^\((.*)\)$/', $fields[
'descr'], $reg)) {
432 if ($reg[1] ==
'DEPOSIT') {
433 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'Deposit');
434 } elseif ($reg[1] ==
'CREDIT_NOTE') {
435 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'CreditNote');
437 $fields[
'descr'] = $langs->transnoentitiesnoconv($reg[1]);
449 print
'<td class="nowrap right">';
450 print
price($fields[
'totalht']);
452 $ratiolineinvoice = ($fields[
'dtotal_ttc'] / $fields[
'ftotal_ttc']);
458 $ratiopaymentinvoice = 1;
460 if (isset($fields[
'payment_amount']) && $fields[
'ftotal_ttc']) {
461 $ratiopaymentinvoice = ($fields[
'payment_amount'] / $fields[
'ftotal_ttc']);
463 print
'<td class="nowrap right">';
464 if ($fields[
'payment_amount'] && $fields[
'ftotal_ttc']) {
465 $payment_static->id = $fields[
'payment_id'];
466 print $payment_static->getNomUrl(2);
469 print $langs->trans(
"NotUsedForGoods");
471 print
price($fields[
'payment_amount']);
472 if (isset($fields[
'payment_amount'])) {
473 print
' ('.round($ratiopaymentinvoice * 100, 2).
'%)';
480 print
'<td class="nowrap right">';
481 $temp_ht = $fields[
'totalht'];
483 $temp_ht = (float) $fields[
'totalht'] * $ratiopaymentinvoice;
489 print
'<td class="nowrap right">';
490 $temp_vat = $local == 1 ? $fields[
'localtax1'] : $fields[
'localtax2'];
496 $subtot_coll_total_ht += $temp_ht;
497 $subtot_coll_vat += $temp_vat;
498 $x_coll_sum += $temp_vat;
504 print
'<tr class="liste_total">';
506 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
508 print
'<td class="nowrap right"> </td>';
509 print
'<td class="right"> </td>';
511 print
'<td class="right"><span class="amount">'.price(
price2num($subtot_coll_total_ht,
'MT')).
'</span></td>';
512 print
'<td class="nowrap right"><span class="amount">'.price(
price2num($subtot_coll_vat,
'MT')).
'</span></td>';
516 if (count($x_coll) == 0) {
517 print
'<tr class="liste_total">';
518 print
'<td> </td>';
519 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
521 print
'<td class="nowrap right"> </td>';
522 print
'<td class="right"> </td>';
524 print
'<td class="right"><span class="amount">'.price(
price2num(0,
'MT')).
'</span></td>';
525 print
'<td class="nowrap right"><span class="amount">'.price(
price2num(0,
'MT')).
'</span></td>';
530 print
'<tr><td colspan="'.($span + 1).
'"> </td></tr>';
536 print
'<tr class="liste_titre">';
537 print
'<td class="left">'.$elementsup.
'</td>';
538 print
'<td class="left">'.$productsup.
'</td>';
540 print
'<td class="right">'.$amountsup.
'</td>';
541 print
'<td class="right">'.$langs->trans(
"Payment").
' ('.$langs->trans(
"PercentOfInvoice").
')</td>';
543 print
'<td class="right">'.$langs->trans(
"BI").
'</td>';
544 print
'<td class="right">'.$vatsup.
'</td>';
547 foreach (array_keys($x_paye) as $rate) {
548 $subtot_paye_total_ht = 0;
549 $subtot_paye_vat = 0;
551 if (is_array($x_both[$rate][
'paye'][
'detail'])) {
554 print
'<td class="tax_rate">'.$langs->trans(
"Rate").
': '.
vatrate($rate).
'%</td><td colspan="'.$span.
'"></td>';
557 foreach ($x_both[$rate][
'paye'][
'detail'] as $index => $fields) {
558 if (($local == 1 && $fields[
'localtax1'] != 0) || ($local == 2 && $fields[
'localtax2'] != 0)) {
560 $type = ($fields[
'dtype'] ? $fields[
'dtype'] : $fields[
'ptype']);
563 if (!empty($fields[
'ddate_start'])) {
566 if (!empty($fields[
'ddate_end'])) {
571 print
'<tr class="oddeven">';
574 print
'<td class="nowrap left">'.$fields[
'link'].
'</td>';
577 print
'<td class="left">';
578 if ($fields[
'pid']) {
579 $product_static->id = $fields[
'pid'];
580 $product_static->ref = $fields[
'pref'];
581 $product_static->type = $fields[
'ptype'];
582 print $product_static->getNomUrl(1);
588 $text =
img_object($langs->trans(
'Service'),
'service');
590 $text =
img_object($langs->trans(
'Product'),
'product');
601 print
'<td class="nowrap right">';
602 print
price($fields[
'totalht']);
605 $ratiolineinvoice = ((float) $fields[
'dtotal_ttc'] / (
float) $fields[
'ftotal_ttc']);
612 $ratiopaymentinvoice = 1;
614 print
'<td class="nowrap right">';
615 if (isset($fields[
'payment_amount']) && $fields[
'ftotal_ttc']) {
616 $ratiopaymentinvoice = ($fields[
'payment_amount'] / (float) $fields[
'ftotal_ttc']);
618 if ($fields[
'payment_amount'] && $fields[
'ftotal_ttc']) {
619 $paymentfourn_static->id = $fields[
'payment_id'];
620 print $paymentfourn_static->getNomUrl(2);
623 print $langs->trans(
"NA");
626 if (isset($fields[
'payment_amount'])) {
627 print
' ('.round($ratiopaymentinvoice * 100, 2).
'%)';
634 print
'<td class="nowrap right">';
635 $temp_ht = (float) $fields[
'totalht'] * $ratiopaymentinvoice;
640 print
'<td class="nowrap right">';
641 $temp_vat = ($local == 1 ? $fields[
'localtax1'] : $fields[
'localtax2']) * $ratiopaymentinvoice;
647 $subtot_paye_total_ht += $temp_ht;
648 $subtot_paye_vat += $temp_vat;
649 $x_paye_sum += $temp_vat;
655 print
'<tr class="liste_total">';
656 print
'<td> </td>';
657 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
659 print
'<td class="nowrap right"> </td>';
660 print
'<td class="right"> </td>';
662 print
'<td class="right"><span class="amount">'.price(
price2num($subtot_paye_total_ht,
'MT')).
'</span></td>';
663 print
'<td class="nowrap right"><span class="amount">'.price(
price2num($subtot_paye_vat,
'MT')).
'</span></td>';
667 if (count($x_paye) == 0) {
668 print
'<tr class="liste_total">';
669 print
'<td> </td>';
670 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
672 print
'<td class="nowrap right"> </td>';
673 print
'<td class="right"> </td>';
675 print
'<td class="right"><span class="amount">'.price(
price2num(0,
'MT')).
'</span></td>';
676 print
'<td class="nowrap right"><span class="amount">'.price(
price2num(0,
'MT')).
'</span></td>';
681 $diff = $x_coll_sum - $x_paye_sum;
682 print
'<tr class="liste_total">';
683 print
'<td class="liste_total" colspan="'.$span.
'">'.$langs->trans(
"TotalToPay").($q ?
', '.$langs->trans(
"Quadri").
' '.$q :
'').
'</td>';
684 print
'<td class="liste_total nowrap right"><b>'.price(
price2num($diff,
'MT')).
"</b></td>\n";
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage payments for supplier invoices.
Class to manage payments of customer invoices.
Class to manage payments of expense report.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0, $html=0)
Return a string with VAT rate label formatted for view output Used into pdf and HTML pages.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
print_date_range($date_start, $date_end, $format='', $outputlangs=null)
Format output for start and end date.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
report_header($reportname, $notused, $period, $periodlink, $description, $builddate, $exportlink='', $moreparam=array(), $calcmode='', $varlink='')
Show header of a report.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
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...