Fix: On informe utilisateur que rapport TVA est faux en mode CREANCE-DETTE.

This commit is contained in:
Laurent Destailleur 2006-05-19 20:38:46 +00:00
parent 316dafdc95
commit ecc3a39578
3 changed files with 134 additions and 94 deletions

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Éric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -32,23 +32,37 @@
require("./pre.inc.php");
require("../../tva.class.php");
$modecompta = $conf->compta->mode;
/*
* On récupère la tva à collecter
*/
function tva_coll($db, $y,$m)
$year=$_GET["year"];
if ($year == 0 )
{
if ($modecompta=="CREANCES-DETTES")
$year_current = strftime("%Y",time());
$year_start = $year_current;
} else {
$year_current = $year;
$year_start = $year;
}
/**
* \brief On cherche la tva à collecter
* \param db Handle accès base
* \param y Année
* \param m Mois
*/
function tva_coll($db,$y,$m)
{
global $conf;
if ($conf->compta->mode == "CREANCES-DETTES")
{
// Si on paye la tva sur les factures dues (non brouillon)
$sql = "SELECT sum(f.tva) as amount";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql.= " WHERE ";
$sql.= " f.fk_statut = 1";
$sql.= " AND date_format(f.datef,'%Y') = $y";
$sql.= " AND date_format(f.datef,'%m') = $m";
$sql.= " AND date_format(f.datef,'%Y') = ".$y;
$sql.= " AND date_format(f.datef,'%m') = ".$m;
}
else
{
@ -56,19 +70,23 @@ function tva_coll($db, $y,$m)
// \todo a ce jour on se sait pas la compter car le montant tva d'un payment
// n'est pas stocké dans la table des payments.
// Il faut quand un payment a lieu, stocker en plus du montant du paiement le
// detail part tva et part ht.
// Seul le module compta expert peut résoudre ce problème.
// (Il faut quand un payment a lieu, stocker en plus du montant du paiement le
// detail part tva et part ht).
// En attendant, on renvoi tva sur factures payés
/*
// Tva sur factures payés
$sql = "SELECT sum(f.tva) as amount";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql.= " WHERE ";
$sql.= " f.paye = 1";
$sql.= " AND date_format(f.datef,'%Y') = $y";
$sql.= " AND date_format(f.datef,'%m') = $m";
$sql.= " AND date_format(f.datef,'%Y') = ".$y;
$sql.= " AND date_format(f.datef,'%m') = ".$m;
*/
}
$resql = $db->query($sql);
if ($resql)
{
$obj = $db->fetch_object($resql);
@ -81,12 +99,17 @@ function tva_coll($db, $y,$m)
}
/*
* On récupère la tva à payer
/**
* \brief On récupère la tva à payer
* \param db Handle accès base
* \param y Année
* \param m Mois
*/
function tva_paye($db, $y,$m)
{
if ($modecompta=="CREANCES-DETTES")
global $conf;
if ($conf->compta->mode == "CREANCES-DETTES")
{
// Si on paye la tva sur les factures dues (non brouillon)
$sql = "SELECT sum(f.total_tva) as amount";
@ -100,12 +123,20 @@ function tva_paye($db, $y,$m)
{
// Si on paye la tva sur les payments
// \todo a ce jour on se sait pas la compter car le montant tva d'un payment
// n'est pas stocké dans la table des payments.
// Seul le module compta expert peut résoudre ce problème.
// (Il faut quand un payment a lieu, stocker en plus du montant du paiement le
// detail part tva et part ht).
/*
// \todo a ce jour on se sait pas la compter car le montant tva d'un payment
// n'est pas stocké dans la table des payments.
// Il faut quand un payment a lieu, stocker en plus du montant du paiement le
// detail part tva et part ht.
// En attendant, on renvoi tva sur factures payés
// Tva sur factures payés
$sql = "SELECT sum(f.total_tva) as amount";
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
// $sql.= " WHERE ";
@ -114,6 +145,7 @@ function tva_paye($db, $y,$m)
$sql.= " AND date_format(f.datef,'%Y') = $y";
$sql.= " AND date_format(f.datef,'%m') = $m";
//print "xx $sql";
*/
}
$resql = $db->query($sql);
@ -129,11 +161,13 @@ function tva_paye($db, $y,$m)
}
function pt ($db, $sql, $date) {
global $bc,$langs;
function pt ($db, $sql, $date)
{
global $conf, $bc,$langs;
$result = $db->query($sql);
if ($result) {
if ($result)
{
$num = $db->num_rows($result);
$i = 0;
$total = 0;
@ -144,7 +178,8 @@ function pt ($db, $sql, $date) {
print "<td>&nbsp;</td>\n";
print "</tr>\n";
$var=True;
while ($i < $num) {
while ($i < $num)
{
$obj = $db->fetch_object($result);
$var=!$var;
print "<tr $bc[$var]>";
@ -160,10 +195,11 @@ function pt ($db, $sql, $date) {
print "</table>";
$db->free($result);
} else {
dolibar_print_error($db);
}
}
else {
dolibar_print_error($db);
}
}
/*
@ -174,14 +210,6 @@ llxHeader();
$tva = new Tva($db);
$year=$_GET["year"];
if ($year == 0 ) {
$year_current = strftime("%Y",time());
$year_start = $year_current;
} else {
$year_current = $year;
$year_start = $year;
}
$textprevyear="<a href=\"index.php?year=" . ($year_current-1) . "\">".img_previous()."</a>";
$textnextyear=" <a href=\"index.php?year=" . ($year_current+1) . "\">".img_next()."</a>";
@ -196,74 +224,84 @@ echo '</td><td>';
print_fiche_titre($langs->trans("VATPayed"));
echo '</td></tr>';
for ($y = $year_current ; $y >= $year_start ; $y=$y-1 ) {
echo '<tr><td width="50%" valign="top">';
echo '<tr><td width="50%" valign="top">';
print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
print "<td width=\"30%\">".$langs->trans("Year")." $y</td>";
print "<td align=\"right\">".$langs->trans("VATToPay")."</td>";
print "<td align=\"right\">".$langs->trans("VATToCollect")."</td>";
print "<td align=\"right\">".$langs->trans("TotalToPay")."</td>";
print "</tr>\n";
print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
print "<td width=\"30%\">".$langs->trans("Year")." $y</td>";
print "<td align=\"right\">".$langs->trans("VATToPay")."</td>";
print "<td align=\"right\">".$langs->trans("VATToCollect")."</td>";
print "<td align=\"right\">".$langs->trans("TotalToPay")."</td>";
print "</tr>\n";
$var=True;
$total = 0; $subtotal = 0;
$i=0;
for ($m = 1 ; $m < 13 ; $m++ ) {
$var=!$var;
print "<tr $bc[$var]>";
print '<td nowrap>'.strftime("%b %Y",mktime(0,0,0,$m,1,$y)).'</td>';
$x_coll = tva_coll($db, $y, $m);
print "<td nowrap align=\"right\">".price($x_coll)."</td>";
$x_paye = tva_paye($db, $y, $m);
print "<td nowrap align=\"right\">".price($x_paye)."</td>";
$diff = $x_coll - $x_paye;
$total = $total + $diff;
$subtotal = $subtotal + $diff;
print "<td nowrap align=\"right\">".price($diff)."</td>\n";
print "</tr>\n";
$i++;
if ($i > 2) {
print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("SubTotal").':</td><td nowrap align="right">'.price($subtotal).'</td></tr>';
$i = 0;
$subtotal = 0;
}
}
print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("TotalToPay").':</td><td nowrap align="right"><b>'.price($total).'</b></td>';
print "<td>&nbsp;</td>\n";
print "</table>";
if ($conf->compta->mode == "CREANCES-DETTES")
{
$y = $year_current ;
$var=True;
$total = 0; $subtotal = 0;
$i=0;
for ($m = 1 ; $m < 13 ; $m++ )
{
$var=!$var;
print "<tr $bc[$var]>";
print '<td nowrap>'.strftime("%b %Y",mktime(0,0,0,$m,1,$y)).'</td>';
$x_coll = tva_coll($db, $y, $m);
print "<td nowrap align=\"right\">".price($x_coll)."</td>";
$x_paye = tva_paye($db, $y, $m);
print "<td nowrap align=\"right\">".price($x_paye)."</td>";
$diff = $x_coll - $x_paye;
$total = $total + $diff;
$subtotal = $subtotal + $diff;
print "<td nowrap align=\"right\">".price($diff)."</td>\n";
print "</tr>\n";
$i++;
if ($i > 2) {
print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("SubTotal").':</td><td nowrap align="right">'.price($subtotal).'</td></tr>';
$i = 0;
$subtotal = 0;
}
}
print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("TotalToPay").':</td><td nowrap align="right"><b>'.price($total).'</b></td>';
print "<td>&nbsp;</td>\n";
print '</tr>';
echo '</td><td valign="top" width="50%">';
/*
* Réglée
*/
$sql = "SELECT amount, date_format(f.datev,'%Y-%m') as dm";
$sql .= " FROM ".MAIN_DB_PREFIX."tva as f WHERE f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' ";
$sql .= " GROUP BY dm DESC";
pt($db, $sql,$langs->trans("Year")." $y");
print "</td></tr></table>";
echo '</td></tr>';
}
else
{
print '<tr><td colspan="5">'.$langs->trans("FeatureNotYetAvailable").'</td></tr>';
print '<tr><td colspan="5">'.$langs->trans("FeatureIsSupportedInInOutModeOnly").'</td></tr>';
}
print '</table>';
echo '</td><td valign="top" width="50%">';
/*
* Réglée
*/
$sql = "SELECT amount, date_format(f.datev,'%Y-%m') as dm";
$sql .= " FROM ".MAIN_DB_PREFIX."tva as f WHERE f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' ";
$sql .= " GROUP BY dm DESC";
pt($db, $sql,$langs->trans("Year")." $y");
print "</td></tr></table>";
echo '</td></tr>';
echo '</table>';
$db->close();
llxFooter('$Date$ - $Revision$');

View File

@ -7,6 +7,7 @@ OptionModeTrue=Option Recettes-D
OptionModeVirtual=Option Créances-Dettes
OptionModeTrueDesc=Dans ce mode, le CA est calculé sur la base des factures payées.\nLa validité des chiffres n'est donc assurée que si la tenue de la comptabilité passe rigoureusement par des entrées/sorties sur les comptes via des factures.\nRemarque, dans cette version, Dolibarr utilise la date de passage de la facture à l'état 'Validé' et non la date de passage à l'état 'Payé'.
OptionModeVirtualDesc=Dans ce mode, le CA est calculé sur la base des factures validées. Qu'elles soient ou non payés, dès lors qu'elles sont dues, elles apparaissent dans le résultat.
FeatureIsSupportedInInOutModeOnly=Feature only available in IN-OUT accountancy mode (See Accountancy module configuration)
Param=Setup
BillsForSuppliers=Bills for suppliers
Income=Income

View File

@ -7,6 +7,7 @@ OptionModeTrue=Option Recettes-D
OptionModeVirtual=Option Créances-Dettes
OptionModeTrueDesc=Dans ce mode, le CA est calculé sur la base des factures payées.\nLa validité des chiffres n'est donc assurée que si la tenue de la comptabilité passe rigoureusement par des entrées/sorties sur les comptes via des factures.\nRemarque : dans cette version, Dolibarr utilise la date de passage de la facture à l'état 'Validée' et non la date de passage à l'état 'Payée'.
OptionModeVirtualDesc=Dans ce mode, le CA est calculé sur la base des factures validées. Payées ou non, elles apparaissent dans le résultat dès qu'elles sont dues.
FeatureIsSupportedInInOutModeOnly=Fonction disponible uniquement en mode compta RECETTE-DEPENSE (Voir configuration du module compta)
Param=Paramétrage
BillsForSuppliers=Factures des fournisseurs
Income=Recettes