From cec23023d18ca5a92a9641ac71b39938ede0f67e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Mon, 18 Jul 2011 11:11:19 +0000 Subject: [PATCH] Fix: Several fix in vat calculation. Add warning to say deposit invoices are not included. --- htdocs/compta/tva/clients.php | 78 ++++++++++------ htdocs/compta/tva/quadri_detail.php | 133 +++++++++++++++++----------- htdocs/langs/en_US/compta.lang | 1 + htdocs/langs/fr_FR/compta.lang | 3 +- htdocs/lib/tax.lib.php | 14 +-- 5 files changed, 141 insertions(+), 88 deletions(-) diff --git a/htdocs/compta/tva/clients.php b/htdocs/compta/tva/clients.php index fea0d14f3c2..13c5aa77226 100644 --- a/htdocs/compta/tva/clients.php +++ b/htdocs/compta/tva/clients.php @@ -23,7 +23,7 @@ * \file htdocs/compta/tva/clients.php * \ingroup tax * \brief Page des societes - * \version $Id$ + * \version $Id: clients.php,v 1.31 2011/07/18 11:11:19 eldy Exp $ */ require('../../main.inc.php'); @@ -38,7 +38,7 @@ $langs->load("companies"); $langs->load("products"); // Date range -$year=$_REQUEST["year"]; +$year=GETPOST("year"); if (empty($year)) { $year_current = strftime("%Y",dol_now()); @@ -52,24 +52,26 @@ $date_end=dol_mktime(23,59,59,$_REQUEST["date_endmonth"],$_REQUEST["date_endday" // Quarter if (empty($date_start) || empty($date_end)) // We define date_start and date_end { - $q=(! empty($_REQUEST["q"]))?$_REQUEST["q"]:0; - if ($q==0) + $q=GETPOST("q"); + if (empty($q)) { if (isset($_REQUEST["month"])) { $date_start=dol_get_first_day($year_start,$_REQUEST["month"],false); $date_end=dol_get_last_day($year_start,$_REQUEST["month"],false); } - else $q=1; + else + { + $month_current = strftime("%m",dol_now()); + if ($month_current >= 10) $q=4; + elseif ($month_current >= 7) $q=3; + elseif ($month_current >= 4) $q=2; + else $q=1; + } } if ($q==1) { $date_start=dol_get_first_day($year_start,1,false); $date_end=dol_get_last_day($year_start,3,false); } if ($q==2) { $date_start=dol_get_first_day($year_start,4,false); $date_end=dol_get_last_day($year_start,6,false); } if ($q==3) { $date_start=dol_get_first_day($year_start,7,false); $date_end=dol_get_last_day($year_start,9,false); } if ($q==4) { $date_start=dol_get_first_day($year_start,10,false); $date_end=dol_get_last_day($year_start,12,false); } } -else -{ - // TODO We define q - -} -$min = $_REQUEST["min"]; +$min = GETPOST("min"); if (empty($min)) $min = 0; // Define modetax (0 or 1) @@ -78,7 +80,7 @@ $modetax = $conf->global->TAX_MODE; if (isset($_REQUEST["modetax"])) $modetax=$_REQUEST["modetax"]; // Security check -$socid = isset($_REQUEST["socid"])?$_REQUEST["socid"]:''; +$socid = GETPOST("socid"); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'tax', '', '', 'charges'); @@ -104,7 +106,7 @@ $fsearch.='<br>'; $fsearch.=' <input type="hidden" name="year" value="'.$year.'">'; $fsearch.=' <input type="hidden" name="modetax" value="'.$modetax.'">'; $fsearch.=' '.$langs->trans("SalesTurnover").' '.$langs->trans("Minimum").': '; -$fsearch.=' <input type="text" name="min" value="'.$min.'">'; +$fsearch.=' <input type="text" name="min" id="min" value="'.$min.'" size="6">'; // Affiche en-tete du rapport if ($modetax==1) // Calculate on invoice for goods and services @@ -115,7 +117,8 @@ if ($modetax==1) // Calculate on invoice for goods and services //$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modetax=".$modetax."'>".img_next()."</a>":""); $description=$langs->trans("RulesVATDue"); //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - $description.=$fsearch; + if ($conf->global->MAIN_MODULE_COMPTABILITE) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded"); + $description.=$fsearch; $description.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')'; $builddate=time(); //$exportlink=$langs->trans("NotYetAvailable"); @@ -137,9 +140,10 @@ if ($modetax==0) // Invoice for goods, payment for services //$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modetax=".$modetax."'>".img_next()."</a>":""); $description=$langs->trans("RulesVATIn"); //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - $description.=$fsearch; + if ($conf->global->MAIN_MODULE_COMPTABILITE) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded"); + $description.=$fsearch; $description.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')'; - $builddate=time(); + $builddate=time(); //$exportlink=$langs->trans("NotYetAvailable"); $elementcust=$langs->trans("CustomersInvoices"); @@ -167,7 +171,7 @@ print "<tr class=\"liste_titre\">"; print '<td align="left">'.$langs->trans("Num")."</td>"; print '<td align="left">'.$langs->trans("Customer")."</td>"; print "<td>".$langs->trans("VATIntra")."</td>"; -print "<td align=\"right\">".$langs->trans("SalesTurnover")." ".$langs->trans("HT")."</td>"; +print "<td align=\"right\">".$langs->trans("AmountHTVATRealReceived")."</td>"; print "<td align=\"right\">".$vatcust."</td>"; print "</tr>\n"; @@ -175,7 +179,7 @@ $coll_list = vat_by_thirdparty($db,0,$date_start,$date_end,$modetax,'sell'); if (is_array($coll_list)) { $var=true; - $total = 0; $subtotal = 0; + $total = 0; $totalamount = 0; $i = 1; foreach($coll_list as $coll) { @@ -191,10 +195,11 @@ if (is_array($coll_list)) } else { - $intra = $langs->trans('NotRegistered'); + //$intra = $langs->trans('NotRegistered'); + $intra = ''; } } - print "<tr $bc[$var]>"; + print "<tr ".$bc[$var].">"; print "<td nowrap>".$i."</td>"; $company_static->id=$coll->socid; $company_static->nom=$coll->nom; @@ -204,13 +209,17 @@ if (is_array($coll_list)) print "<td nowrap>".$intra."</td>"; print "<td nowrap align=\"right\">".price($coll->amount)."</td>"; print "<td nowrap align=\"right\">".price($coll->tva)."</td>"; + $totalamount = $totalamount + $coll->amount; $total = $total + $coll->tva; print "</tr>\n"; $i++; } } + $x_coll_sum = $total; - print '<tr class="liste_total"><td align="right" colspan="4">'.$langs->trans("Total").':</td><td nowrap align="right"><b>'.price($total).'</b></td>'; + print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("Total").':</td>'; + print '<td nowrap align="right">'.price($totalamount).'</td>'; + print '<td nowrap align="right">'.price($total).'</td>'; print '</tr>'; } else @@ -237,7 +246,7 @@ print "<tr class=\"liste_titre\">"; print '<td align="left">'.$langs->trans("Num")."</td>"; print '<td align="left">'.$langs->trans("Supplier")."</td>"; print "<td>".$langs->trans("VATIntra")."</td>"; -print "<td align=\"right\">".$langs->trans("Outcome")." ".$langs->trans("HT")."</td>"; +print "<td align=\"right\">".$langs->trans("AmountHTVATRealPaid")."</td>"; print "<td align=\"right\">".$vatsup."</td>"; print "</tr>\n"; @@ -247,7 +256,7 @@ $coll_list = vat_by_thirdparty($db,0,$date_start,$date_end,$modetax,'buy'); if (is_array($coll_list)) { $var=true; - $total = 0; $subtotal = 0; + $total = 0; $totalamount = 0; $i = 1; foreach($coll_list as $coll) { @@ -263,7 +272,8 @@ if (is_array($coll_list)) } else { - $intra = $langs->trans('NotRegistered'); + //$intra = $langs->trans('NotRegistered'); + $intra = ''; } } print "<tr $bc[$var]>"; @@ -276,14 +286,30 @@ if (is_array($coll_list)) print "<td nowrap>".$intra."</td>"; print "<td nowrap align=\"right\">".price($coll->amount)."</td>"; print "<td nowrap align=\"right\">".price($coll->tva)."</td>"; + $totalamount = $totalamount + $coll->amount; $total = $total + $coll->tva; print "</tr>\n"; $i++; } } + $x_paye_sum = $total; - print '<tr class="liste_total"><td align="right" colspan="4">'.$langs->trans("Total").':</td><td nowrap align="right"><b>'.price($total).'</b></td>'; + print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("Total").':</td>'; + print '<td nowrap align="right">'.price($totalamount).'</td>'; + print '<td nowrap align="right">'.price($total).'</td>'; print '</tr>'; + + print '</table>'; + + // Total to pay + print '<br><br>'; + print '<table class="noborder" width="100%">'; + $diff = $x_coll_sum - $x_paye_sum; + print '<tr class="liste_total">'; + print '<td class="liste_total" colspan="4">'.$langs->trans("TotalToPay").($q?', '.$langs->trans("Quadri").' '.$q:'').'</td>'; + print '<td class="liste_total" nowrap="nowrap" align="right"><b>'.price(price2num($diff,'MT'))."</b></td>\n"; + print "</tr>\n"; + } else { @@ -301,5 +327,5 @@ print '</table>'; $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/18 11:11:19 $ - $Revision: 1.31 $'); ?> diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index cecc88d2e9f..315069dc086 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -23,7 +23,7 @@ * \file htdocs/compta/tva/quadri_detail.php * \ingroup tax * \brief Trimestrial page - detailed version - * \version $Id$ + * \version $Id: quadri_detail.php,v 1.43 2011/07/18 11:11:19 eldy Exp $ * \todo Deal with recurrent invoices as well */ @@ -44,7 +44,7 @@ $langs->load("companies"); $langs->load("products"); // Date range -$year=$_REQUEST["year"]; +$year=GETPOST("year"); if (empty($year)) { $year_current = strftime("%Y",dol_now()); @@ -58,24 +58,26 @@ $date_end=dol_mktime(23,59,59,$_REQUEST["date_endmonth"],$_REQUEST["date_endday" // Quarter if (empty($date_start) || empty($date_end)) // We define date_start and date_end { - $q=(! empty($_REQUEST["q"]))?$_REQUEST["q"]:0; - if ($q==0) + $q=GETPOST("q"); + if (empty($q)) { if (isset($_REQUEST["month"])) { $date_start=dol_get_first_day($year_start,$_REQUEST["month"],false); $date_end=dol_get_last_day($year_start,$_REQUEST["month"],false); } - else $q=1; + else + { + $month_current = strftime("%m",dol_now()); + if ($month_current >= 10) $q=4; + elseif ($month_current >= 7) $q=3; + elseif ($month_current >= 4) $q=2; + else $q=1; + } } if ($q==1) { $date_start=dol_get_first_day($year_start,1,false); $date_end=dol_get_last_day($year_start,3,false); } if ($q==2) { $date_start=dol_get_first_day($year_start,4,false); $date_end=dol_get_last_day($year_start,6,false); } if ($q==3) { $date_start=dol_get_first_day($year_start,7,false); $date_end=dol_get_last_day($year_start,9,false); } if ($q==4) { $date_start=dol_get_first_day($year_start,10,false); $date_end=dol_get_last_day($year_start,12,false); } } -else -{ - // TODO We define q - -} -$min = $_REQUEST["min"]; +$min = GETPOST("min"); if (empty($min)) $min = 0; // Define modetax (0 or 1) @@ -85,7 +87,7 @@ if (isset($_REQUEST["modetax"])) $modetax=$_REQUEST["modetax"]; if (empty($modetax)) $modetax=0; // Security check -$socid = isset($_REQUEST["socid"])?$_REQUEST["socid"]:''; +$socid = GETPOST("socid"); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'tax', '', '', 'charges'); @@ -134,9 +136,10 @@ if ($modetax==1) // Calculate on invoice for goods and services else { $nextquarter=1; $nextyear++; } //$periodlink=($prevyear?"<a href='".$_SERVER["PHP_SELF"]."?year=".$prevyear."&q=".$prevquarter."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".$nextyear."&q=".$nextquarter."&modetax=".$modetax."'>".img_next()."</a>":""); $description=$langs->trans("RulesVATDue"); - $description.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')'; //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - $description.=$fsearch; + if ($conf->global->MAIN_MODULE_COMPTABILITE) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded"); + $description.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')'; + $description.=$fsearch; $builddate=time(); //$exportlink=$langs->trans("NotYetAvailable"); @@ -164,7 +167,8 @@ if ($modetax==0) // Invoice for goods, payment for services //$periodlink=($prevyear?"<a href='".$_SERVER["PHP_SELF"]."?year=".$prevyear."&q=".$prevquarter."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".$nextyear."&q=".$nextquarter."&modetax=".$modetax."'>".img_next()."</a>":""); $description=$langs->trans("RulesVATIn"); //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - $description.=$fsearch; + if ($conf->global->MAIN_MODULE_COMPTABILITE) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded"); + $description.=$fsearch; $description.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')'; $builddate=time(); //$exportlink=$langs->trans("NotYetAvailable"); @@ -188,14 +192,10 @@ $vatsup=$langs->trans("VATPaid"); // VAT Received and paid -//print "<br>"; -//print_titre($vatcust); - echo '<table class="noborder" width="100%">'; $y = $year_current; $total = 0; -$subtotal = 0; $i=0; // Load arrays of datas @@ -416,21 +416,36 @@ else $x_coll_sum += $temp_vat; } } - - // Total customers - print '<tr class="liste_total">'; - print '<td></td>'; - print '<td align="right">'.$langs->trans("Total").':</td>'; - if ($modetax == 0) - { - print '<td nowrap align="right"> </td>'; - print '<td align="right"> </td>'; - } - print '<td align="right">'.price(price2num($subtot_coll_total_ht,'MT')).'</td>'; - print '<td nowrap align="right">'.price(price2num($subtot_coll_vat,'MT')).'</td>'; - print '</tr>'; + // Total customers for this vat rate + print '<tr class="liste_total">'; + print '<td></td>'; + print '<td align="right">'.$langs->trans("Total").':</td>'; + if ($modetax == 0) + { + print '<td nowrap align="right"> </td>'; + print '<td align="right"> </td>'; + } + print '<td align="right">'.price(price2num($subtot_coll_total_ht,'MT')).'</td>'; + print '<td nowrap align="right">'.price(price2num($subtot_coll_vat,'MT')).'</td>'; + print '</tr>'; } + if (count($x_coll) == 0) // Show a total ine if nothing shown + { + print '<tr class="liste_total">'; + print '<td> </td>'; + print '<td align="right">'.$langs->trans("Total").':</td>'; + if ($modetax == 0) + { + print '<td nowrap align="right"> </td>'; + print '<td align="right"> </td>'; + } + print '<td align="right">'.price(price2num(0,'MT')).'</td>'; + print '<td nowrap align="right">'.price(price2num(0,'MT')).'</td>'; + print '</tr>'; + } + + // Blank line print '<tr><td colspan="'.($span+1).'"> </td></tr>'; //print table headers for this quadri - expenses now @@ -552,41 +567,51 @@ else $x_paye_sum += $temp_vat; } } + // Total suppliers for this vat rate + print '<tr class="liste_total">'; + print '<td> </td>'; + print '<td align="right">'.$langs->trans("Total").':</td>'; + if ($modetax == 0) + { + print '<td nowrap align="right"> </td>'; + print '<td align="right"> </td>'; + } + print '<td align="right">'.price(price2num($subtot_paye_total_ht,'MT')).'</td>'; + print '<td nowrap align="right">'.price(price2num($subtot_paye_vat,'MT')).'</td>'; + print '</tr>'; + } - // Total suppliers - print '<tr class="liste_total">'; - print '<td> </td>'; - print '<td align="right">'.$langs->trans("Total").':</td>'; - if ($modetax == 0) - { - print '<td nowrap align="right"> </td>'; - print '<td align="right"> </td>'; - } - print '<td align="right">'.price(price2num($subtot_paye_total_ht,'MT')).'</td>'; - print '<td nowrap align="right">'.price(price2num($subtot_paye_vat,'MT')).'</td>'; - print '</tr>'; + if (count($x_paye) == 0) // Show a total ine if nothing shown + { + print '<tr class="liste_total">'; + print '<td> </td>'; + print '<td align="right">'.$langs->trans("Total").':</td>'; + if ($modetax == 0) + { + print '<td nowrap align="right"> </td>'; + print '<td align="right"> </td>'; + } + print '<td align="right">'.price(price2num(0,'MT')).'</td>'; + print '<td nowrap align="right">'.price(price2num(0,'MT')).'</td>'; + print '</tr>'; } - print '<tr><td colspan="'.($span+1).'"> </td></tr>'; + print '</table>'; // Total to pay - print '<tr class="liste_titre">'; - print '<td class="liste_titre" colspan="'.($span-1).'"></td><td class="liste_titre" align="right" colspan="2">'.$langs->trans("TotalToPay").($q?', '.$langs->trans("Quadri").' '.$q:'').':</td>'; - print '</tr>'."\n"; - - $diff = $x_coll_sum - $x_paye_sum; + print '<br><br>'; + print '<table class="noborder" width="100%">'; + $diff = $x_coll_sum - $x_paye_sum; print '<tr class="liste_total">'; - print '<td class="liste_total" colspan="'.$span.'"></td>'; + print '<td class="liste_total" colspan="'.$span.'">'.$langs->trans("TotalToPay").($q?', '.$langs->trans("Quadri").' '.$q:'').'</td>'; print '<td class="liste_total" nowrap="nowrap" align="right"><b>'.price(price2num($diff,'MT'))."</b></td>\n"; print "</tr>\n"; - //print '<tr><td colspan="'.($span+1).'"> </td></tr>'."\n"; - $i++; } echo '</table>'; $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/18 11:11:19 $ - $Revision: 1.43 $'); ?> diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index a08d440d5ef..50c3f887959 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -128,3 +128,4 @@ InvoiceRef=Invoice ref. CodeNotDef=Not defined AddRemind=Dispatch available amount RemainToDivide= Remain to dispatch : +WarningDepositsNotIncluded=Deposits invoices are not included in this version with this accountancy module. \ No newline at end of file diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 143737924e3..f2d91f35f70 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -139,4 +139,5 @@ COMPTA_VAT_ACCOUNT=Code comptable par défaut pour TVA (si non défini dans dict COMPTA_ACCOUNT_CUSTOMER=Code comptable client par défaut (si non défini sur fiche tiers) COMPTA_ACCOUNT_SUPPLIER=Code comptable fournisseur par défaut (si non défini sur fiche tiers) AddRemind=Ventiler montant disponible -RemainToDivide=Reste à répartir : \ No newline at end of file +RemainToDivide=Reste à répartir : +WarningDepositsNotIncluded=Les factures d'accomptes ne sont pas encore prises en compte dans cette version avec ce module de comptabilité. \ No newline at end of file diff --git a/htdocs/lib/tax.lib.php b/htdocs/lib/tax.lib.php index 3a1ad141ebd..82e5cad0bc2 100644 --- a/htdocs/lib/tax.lib.php +++ b/htdocs/lib/tax.lib.php @@ -21,7 +21,7 @@ * \file htdocs/lib/tax.lib.php * \ingroup tax * \brief Library for tax module - * \version $Id: tax.lib.php,v 1.20 2011/07/04 09:01:37 eldy Exp $ + * \version $Id: tax.lib.php,v 1.21 2011/07/18 11:11:19 eldy Exp $ */ @@ -142,8 +142,8 @@ function vat_by_thirdparty($db, $y, $date_start, $date_end, $modetax, $direction } if (! $sql) return -1; - if ($sql && $sql=='TODO') return -2; - if ($sql && $sql!='TODO') + if ($sql == 'TODO') return -2; + if ($sql != 'TODO') { dol_syslog("Tax.lib:thirdparty sql=".$sql); $resql = $db->query($sql); @@ -316,8 +316,8 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction, //print $sql.'<br>'; if (! $sql) return -1; - if ($sql && $sql=='TODO') return -2; - if ($sql && $sql!='TODO') + if ($sql == 'TODO') return -2; + if ($sql != 'TODO') { dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); @@ -477,8 +477,8 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction, dol_syslog("Tax.lib.php::vat_by_date no accountancy module enabled".$sql,LOG_ERR); return -1; // -1 = Not accountancy module enabled } - if ($sql && $sql=='TODO') return -2; // -2 = Feature not yet available - if ($sql && $sql!='TODO') + if ($sql == 'TODO') return -2; // -2 = Feature not yet available + if ($sql != 'TODO') { dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); $resql = $db->query($sql); -- GitLab