New: Amlioration rapports TVA
This commit is contained in:
parent
9ba95190e2
commit
dd0eed5d03
@ -687,7 +687,7 @@ else
|
||||
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("FiscalMonthStart").'</td><td>';
|
||||
$monthstart=! emptpy($conf->global->SOCIETE_FISCAL_MONTH_START)? $conf->global->SOCIETE_FISCAL_MONTH_START : 1;
|
||||
$monthstart=(! empty($conf->global->SOCIETE_FISCAL_MONTH_START)) ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1;
|
||||
print monthArrayOrSelected($monthstart) . '</td></tr>';
|
||||
|
||||
print "</table>";
|
||||
|
||||
@ -89,7 +89,18 @@ print '<td>'.$langs->trans('OptionMode').'</td><td>'.$langs->trans('Description'
|
||||
print '<td><input class="button" type="submit" value="'.$langs->trans('Modify').'"></td>';
|
||||
print "</tr>\n";
|
||||
print '<tr '.$bc[false].'><td width="200"><input type="radio" name="compta_mode" value="RECETTES-DEPENSES"'.($compta_mode != 'CREANCES-DETTES' ? ' checked' : '').'> '.$langs->trans('OptionModeTrue').'</td>';
|
||||
print '<td colspan="2">'.nl2br($langs->trans('OptionModeTrueDesc'))."</td></tr>\n";
|
||||
print '<td colspan="2">'.nl2br($langs->trans('OptionModeTrueDesc'));
|
||||
// Write info on way to count VAT
|
||||
print "<br>\n";
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE)
|
||||
{
|
||||
print nl2br($langs->trans('OptionModeTrueInfoModuleComptabilite'));
|
||||
}
|
||||
else
|
||||
{
|
||||
// print nl2br($langs->trans('OptionModeTrueInfoExpert'));
|
||||
}
|
||||
print "</td></tr>\n";
|
||||
print '<tr '.$bc[true].'><td width="200"><input type="radio" name="compta_mode" value="CREANCES-DETTES"'.($compta_mode == 'CREANCES-DETTES' ? ' checked' : '').'> '.$langs->trans('OptionModeVirtual').'</td>';
|
||||
print '<td colspan="2">'.nl2br($langs->trans('OptionModeVirtualDesc'))."</td></tr>\n";
|
||||
print '</form>';
|
||||
@ -170,5 +181,4 @@ $db->close();
|
||||
|
||||
|
||||
llxFooter('$Date$ - $Revision$');
|
||||
|
||||
?>
|
||||
|
||||
@ -38,6 +38,7 @@ if (!$user->rights->facture->lire)
|
||||
|
||||
$year=$_GET["year"];
|
||||
if (! $year) { $year = strftime("%Y", time()); }
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
@ -15,14 +15,12 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/resultat/index.php
|
||||
\brief Page reporting resultat
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
@ -48,6 +46,7 @@ if ($user->societe_id > 0)
|
||||
$socid = $user->societe_id;
|
||||
}
|
||||
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
@ -15,14 +15,12 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/stats/cabyuser.php
|
||||
\brief Page reporting CA par utilisateur
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
@ -31,6 +29,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/report.inc.php");
|
||||
|
||||
$year=$_GET["year"];
|
||||
if (! $year) { $year = strftime("%Y", time()); }
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
@ -33,6 +33,7 @@ $langs->load("companies");
|
||||
|
||||
$year=$_GET["year"];
|
||||
if (! $year) { $year = strftime("%Y", time()); }
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
@ -15,33 +15,30 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/stats/cumul.php
|
||||
\brief Page reporting compta chiffre affaire cumulé
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
|
||||
|
||||
llxHeader();
|
||||
|
||||
/*
|
||||
* Sécurité accés client
|
||||
*/
|
||||
// Sécurité accés client
|
||||
if ($user->societe_id > 0)
|
||||
{
|
||||
$socid = $user->societe_id;
|
||||
}
|
||||
|
||||
$mode='recettes';
|
||||
if ($conf->compta->mode == 'CREANCES-DETTES') { $mode='creances'; }
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
|
||||
llxHeader();
|
||||
|
||||
|
||||
print_titre("Chiffre d'affaire cumulé (".$langs->trans("Currency".$conf->monnaie)." HT)");
|
||||
|
||||
@ -50,7 +47,7 @@ print '<table width="100%"><tr><td valign="top">';
|
||||
$sql = "SELECT sum(f.total) as amount , date_format(f.datef,'%Y-%m') as dm";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " WHERE f.fk_statut in (1,2)";
|
||||
if ($conf->compta->mode != 'CREANCES-DETTES')
|
||||
if ($modecompta != 'CREANCES-DETTES')
|
||||
{
|
||||
$sql .= " AND f.paye = 1";
|
||||
}
|
||||
@ -67,7 +64,7 @@ print '</td><td valign="top">';
|
||||
$sql = "SELECT sum(f.total) as amount, year(f.datef) as dm";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " WHERE f.fk_statut in (1,2)";
|
||||
if ($conf->compta->mode != 'CREANCES-DETTES') {
|
||||
if ($modecompta != 'CREANCES-DETTES') {
|
||||
$sql .= " AND f.paye = 1";
|
||||
}
|
||||
if ($socid)
|
||||
|
||||
@ -15,33 +15,32 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/stats/exercices.php
|
||||
\brief Page ???
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
require("./lib.inc.php");
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
llxHeader();
|
||||
|
||||
/*
|
||||
* Sécurité accés client
|
||||
*/
|
||||
// Sécurité accés client
|
||||
if ($user->societe_id > 0)
|
||||
{
|
||||
$socid = $user->societe_id;
|
||||
}
|
||||
|
||||
$mode='recettes';
|
||||
if ($conf->compta->mode == 'CREANCES-DETTES') { $mode='creances'; }
|
||||
|
||||
|
||||
print_titre("Comparatif CA année en cours avec année précédente (".$langs->trans("Currency".$conf->monnaie)." HT, ".$mode.")");
|
||||
llxHeader();
|
||||
|
||||
print_titre("Comparatif CA année en cours avec année précédente (".$langs->trans("Currency".$conf->monnaie)." HT, ".$modecompta.")");
|
||||
print "<br>\n";
|
||||
|
||||
|
||||
@ -256,5 +255,5 @@ ppt($db, $cyear, $socid);
|
||||
$db->close();
|
||||
|
||||
|
||||
llxFooter("<em>Dernière modification $Date$ révision $Revision$</em>");
|
||||
llxFooter('$Date$ révision $Revision$');
|
||||
?>
|
||||
|
||||
@ -47,9 +47,11 @@ if ($user->societe_id > 0)
|
||||
$socid = $user->societe_id;
|
||||
}
|
||||
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
llxHeader();
|
||||
$html=new Form($db);
|
||||
|
||||
|
||||
@ -45,7 +45,8 @@ function get_ca_propal ($db, $year, $socid)
|
||||
|
||||
function get_ca ($db, $year, $socid)
|
||||
{
|
||||
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT sum(f.amount) as sum FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " WHERE f.fk_statut in (1,2)";
|
||||
if ($conf->compta->mode != 'CREANCES-DETTES') {
|
||||
|
||||
@ -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-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006 Yannick Warnier <ywarnier@beeznest.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -17,21 +17,21 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/tva/clients.php
|
||||
\ingroup compta
|
||||
\brief Page des societes
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
require("../../tva.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/report.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/tva.class.php");
|
||||
|
||||
$langs->load("compta");
|
||||
$langs->load("companies");
|
||||
|
||||
$year=$_GET["year"];
|
||||
if ($year == 0 or $year!=intval(strval($year)))
|
||||
@ -50,173 +50,10 @@ if($min == 0 or $min!=floatval(strval($min))){
|
||||
//keep min
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for collectable VAT clients in the chosen year
|
||||
* @param resource Database handle
|
||||
* @param int Year
|
||||
*/
|
||||
function tva_coll($db,$y)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
{
|
||||
// Si on paye la tva sur les factures dues (non brouillon)
|
||||
$sql = "SELECT s.nom as nom, s.tva_intra as tva_intra, sum(f.total) as amount, sum(f.tva) as tva, s.tva_assuj as assuj, s.rowid as socid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2)";
|
||||
$sql.= " AND date_format(f.datef,'%Y') = ".$y;
|
||||
$sql.= " AND s.rowid = f.fk_soc ";
|
||||
$sql.= " GROUP BY s.rowid";
|
||||
}
|
||||
else
|
||||
{
|
||||
// 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).
|
||||
|
||||
/*
|
||||
// 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;
|
||||
*/
|
||||
}
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
$resql = $db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
while($assoc = $db->fetch_array($resql)){
|
||||
$list[] = $assoc;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get payable VAT
|
||||
* @param resource Database handle
|
||||
* @param int Year
|
||||
*/
|
||||
function tva_paye($db, $y)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
{
|
||||
// Si on paye la tva sur les factures dues (non brouillon)
|
||||
$sql = "SELECT s.nom as nom, s.tva_intra as tva_intra, sum(f.total_ht) as amount, sum(f.tva) as tva, s.tva_assuj as assuj, s.rowid as socid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2)";
|
||||
$sql.= " AND date_format(f.datef,'%Y') = ".$y;
|
||||
$sql.= " AND s.rowid = f.fk_soc ";
|
||||
$sql.= " GROUP BY s.rowid";
|
||||
}
|
||||
else
|
||||
{
|
||||
// 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.
|
||||
|
||||
// Tva sur factures payés
|
||||
$sql = "SELECT sum(f.total_tva) as amount";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||
// $sql.= " WHERE ";
|
||||
$sql .= " WHERE f.fk_statut in (1,2)";
|
||||
// $sql.= " f.paye = 1";
|
||||
$sql.= " AND date_format(f.datef,'%Y') = $y";
|
||||
$sql.= " AND date_format(f.datef,'%m') = $m";
|
||||
//print "xx $sql";
|
||||
*/
|
||||
}
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
while($assoc = $db->fetch_array($resql)){
|
||||
$list[] = $assoc;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print VAT tables
|
||||
* @param resource Database handler
|
||||
* @param string SQL query
|
||||
* @param string Date
|
||||
*/
|
||||
function pt ($db, $sql, $date)
|
||||
{
|
||||
global $conf, $bc,$langs;
|
||||
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $db->num_rows($result);
|
||||
$i = 0;
|
||||
$total = 0;
|
||||
print "<table class=\"noborder\" width=\"100%\">";
|
||||
print "<tr class=\"liste_titre\">";
|
||||
print "<td nowrap width=\"60%\">$date</td>";
|
||||
print "<td align=\"right\">".$langs->trans("Amount")."</td>";
|
||||
print "<td> </td>\n";
|
||||
print "</tr>\n";
|
||||
$var=True;
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
$var=!$var;
|
||||
print "<tr $bc[$var]>";
|
||||
print "<td nowrap>$obj->dm</td>\n";
|
||||
$total = $total + $obj->amount;
|
||||
|
||||
print "<td nowrap align=\"right\">".price($obj->amount)."</td><td nowrap align=\"right\">".$total."</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
$i++;
|
||||
}
|
||||
print "<tr class=\"liste_total\"><td align=\"right\">".$langs->trans("Total")." :</td><td nowrap align=\"right\"><b>".price($total)."</b></td><td> </td></tr>";
|
||||
|
||||
print "</table>";
|
||||
$db->free($result);
|
||||
}
|
||||
else {
|
||||
dolibar_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@ -225,61 +62,85 @@ function pt ($db, $sql, $date)
|
||||
|
||||
llxHeader();
|
||||
|
||||
$textprevyear="<a href=\"clients.php?year=" . ($year_current-1) . "\">".img_previous()."</a>";
|
||||
$textnextyear=" <a href=\"clients.php?year=" . ($year_current+1) . "\">".img_next()."</a>";
|
||||
$company_static=new Societe($db);
|
||||
|
||||
print_fiche_titre($langs->trans("VAT"),"$textprevyear ".$langs->trans("Year")." $year_start $textnextyear");
|
||||
print_fiche_titre($langs->trans("VAT"),"");
|
||||
|
||||
echo '<form method="get" action="clients.php?year='.$year.'">';
|
||||
echo ' <input type="hidden" name="year" value="'.$year.'">';
|
||||
echo ' <label for="min">'.$langs->trans("Minimum").': </label>';
|
||||
echo ' <input type="text" name="min" value="'.$min.'">';
|
||||
echo ' <input type="submit" name="submit" value="'.$langs->trans("Chercher").'">';
|
||||
echo '</form>';
|
||||
$fsearch='<form method="get" action="clients.php?year='.$year.'">';
|
||||
$fsearch.=' <input type="hidden" name="year" value="'.$year.'">';
|
||||
$fsearch.=' '.$langs->trans("SalesTurnover").' '.$langs->trans("Minimum").': ';
|
||||
$fsearch.=' <input type="text" name="min" value="'.$min.'">';
|
||||
$fsearch.=' <input type="submit" class="button" name="submit" value="'.$langs->trans("Chercher").'">';
|
||||
$fsearch.='</form>';
|
||||
|
||||
echo '<table width="100%">';
|
||||
echo '<tr><td>';
|
||||
print_fiche_titre($langs->trans("VATSummary"));
|
||||
//echo '</td><td>';
|
||||
//print_fiche_titre($langs->trans("VATPayed"));
|
||||
echo '</td></tr>';
|
||||
// Affiche en-tête du rapport
|
||||
if ($modecompta=="CREANCES-DETTES")
|
||||
{
|
||||
$nom=$langs->trans("ReportByCustomers");
|
||||
$nom.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=RECETTES-DEPENSES">','</a>').')';
|
||||
$period=$year_start;
|
||||
$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modecompta=".$modecompta."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modecompta=".$modecompta."'>".img_next()."</a>":"");
|
||||
$description=$langs->trans("VATReportDesc");
|
||||
$description.=$fsearch;
|
||||
$builddate=time();
|
||||
$exportlink=$langs->trans("NotYetAvailable");
|
||||
}
|
||||
else {
|
||||
$nom=$langs->trans("ReportByCustomers");
|
||||
$nom.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=CREANCES-DETTES">','</a>').')';
|
||||
$period=$year_start;
|
||||
$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modecompta=".$modecompta."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modecompta=".$modecompta."'>".img_next()."</a>":"");
|
||||
$description=$langs->trans("VATReportDesc");
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE) $description.='<br>'.img_warning().' '.$langs->trans('OptionModeTrueInfoModuleComptabilite');
|
||||
$description.=$fsearch;
|
||||
$builddate=time();
|
||||
$exportlink=$langs->trans("NotYetAvailable");
|
||||
}
|
||||
report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportlink);
|
||||
|
||||
//echo '<tr><td width="50%" valign="top">';
|
||||
echo '<tr>';
|
||||
|
||||
// VAT Received
|
||||
|
||||
print "<br>";
|
||||
print_fiche_titre($langs->trans("VATReceived"));
|
||||
|
||||
print "<table class=\"noborder\" width=\"100%\">";
|
||||
print "<tr class=\"liste_titre\">";
|
||||
print "<td align=\"right\"></td>";
|
||||
print "<td>".$langs->trans("Name")."</td>";
|
||||
print '<td align="left">'.$langs->trans("Num")."</td>";
|
||||
print '<td align="left">'.$langs->trans("Company")."</td>";
|
||||
print "<td>".$langs->trans("VATIntra")."</td>";
|
||||
print "<td align=\"right\">".$langs->trans("CA")."</td>";
|
||||
print "<td align=\"right\">".$langs->trans("VATToPay")."</td>";
|
||||
print "<td align=\"right\">".$langs->trans("SalesTurnover")." ".$langs->trans("HT")."</td>";
|
||||
print "<td align=\"right\">".$langs->trans("VATReceived")."</td>";
|
||||
print "</tr>\n";
|
||||
|
||||
if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
$coll_list = tva_coll($db,$year_current);
|
||||
if (is_array($coll_list))
|
||||
{
|
||||
$y = $year_current ;
|
||||
|
||||
|
||||
$var=True;
|
||||
$var=true;
|
||||
$total = 0; $subtotal = 0;
|
||||
$var=!$var;
|
||||
$coll_list = tva_coll($db,$y);
|
||||
$i = 1;
|
||||
foreach($coll_list as $coll){
|
||||
if($min == 0 or ($min>0 and $coll[2]>$min)){
|
||||
foreach($coll_list as $coll)
|
||||
{
|
||||
if($min == 0 or ($min>0 and $coll[2]>$min))
|
||||
{
|
||||
$var=!$var;
|
||||
$intra = str_replace($find,$replace,$coll[1]);
|
||||
if(empty($intra)){
|
||||
if($coll[4] == '1'){
|
||||
if(empty($intra))
|
||||
{
|
||||
if($coll[4] == '1')
|
||||
{
|
||||
$intra = $langs->trans('Unknown');
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
$intra = $langs->trans('NotRegistered');
|
||||
}
|
||||
}
|
||||
print "<tr $bc[$var]>";
|
||||
print "<td nowrap>".$i."</td>";
|
||||
print '<td nowrap><a href="../../soc.php?socid='.$coll[5].'">'.$coll[0].'</td>';
|
||||
print "<td nowrap>".$i."</td>";
|
||||
$company_static->id=$coll[5];
|
||||
$company_static->nom=$coll[0];
|
||||
print '<td nowrap>'.$company_static->getNomUrl(1).'</td>';
|
||||
$find = array(' ','.');
|
||||
$replace = array('','');
|
||||
print "<td nowrap>".$intra."</td>";
|
||||
@ -291,9 +152,75 @@ if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
}
|
||||
}
|
||||
|
||||
print '<tr class="liste_total"><td align="right" colspan="4">'.$langs->trans("TotalToPay").':</td><td nowrap align="right"><b>'.price($total).'</b></td>';
|
||||
print '<tr class="liste_total"><td align="right" colspan="4">'.$langs->trans("TotalVATReceived").':</td><td nowrap align="right"><b>'.price($total).'</b></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<tr><td colspan="5">'.$langs->trans("FeatureNotYetAvailable").'</td></tr>';
|
||||
print '<tr><td colspan="5">'.$langs->trans("FeatureIsSupportedInInOutModeOnly").'</td></tr>';
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
|
||||
|
||||
// VAT Payed
|
||||
|
||||
print "<br>";
|
||||
print_fiche_titre($langs->trans("VATPayed"));
|
||||
|
||||
print "<table class=\"noborder\" width=\"100%\">";
|
||||
print "<tr class=\"liste_titre\">";
|
||||
print '<td align="left">'.$langs->trans("Num")."</td>";
|
||||
print '<td align="left">'.$langs->trans("Company")."</td>";
|
||||
print "<td>".$langs->trans("VATIntra")."</td>";
|
||||
print "<td align=\"right\">".$langs->trans("Outcome")." ".$langs->trans("HT")."</td>";
|
||||
print "<td align=\"right\">".$langs->trans("VATPayed")."</td>";
|
||||
print "</tr>\n";
|
||||
|
||||
$company_static=new Societe($db);
|
||||
|
||||
$coll_list = tva_paye($db,$year_current);
|
||||
if (is_array($coll_list))
|
||||
{
|
||||
$var=true;
|
||||
$total = 0; $subtotal = 0;
|
||||
$i = 1;
|
||||
foreach($coll_list as $coll)
|
||||
{
|
||||
if($min == 0 or ($min>0 and $coll[2]>$min))
|
||||
{
|
||||
$var=!$var;
|
||||
$intra = str_replace($find,$replace,$coll[1]);
|
||||
if(empty($intra))
|
||||
{
|
||||
if($coll[4] == '1')
|
||||
{
|
||||
$intra = $langs->trans('Unknown');
|
||||
}
|
||||
else
|
||||
{
|
||||
$intra = $langs->trans('NotRegistered');
|
||||
}
|
||||
}
|
||||
print "<tr $bc[$var]>";
|
||||
print "<td nowrap>".$i."</td>";
|
||||
$company_static->id=$coll[5];
|
||||
$company_static->nom=$coll[0];
|
||||
print '<td nowrap>'.$company_static->getNomUrl(1).'</td>';
|
||||
$find = array(' ','.');
|
||||
$replace = array('','');
|
||||
print "<td nowrap>".$intra."</td>";
|
||||
print "<td nowrap align=\"right\">".price($coll[2])."</td>";
|
||||
print "<td nowrap align=\"right\">".price($coll[3])."</td>";
|
||||
$total = $total + $coll[3];
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
print '<tr class="liste_total"><td align="right" colspan="4">'.$langs->trans("TotalVATReceived").':</td><td nowrap align="right"><b>'.price($total).'</b></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -303,29 +230,165 @@ else
|
||||
|
||||
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$');
|
||||
|
||||
|
||||
/**
|
||||
* \brief Look for collectable VAT clients in the chosen year
|
||||
* \param db Database handle
|
||||
* \param y Year
|
||||
* \return array Liste of third parties
|
||||
*/
|
||||
function tva_coll($db,$y)
|
||||
{
|
||||
global $conf, $modecompta;
|
||||
|
||||
// Define sql request
|
||||
$sql='';
|
||||
if ($modecompta == "CREANCES-DETTES")
|
||||
{
|
||||
// If vat payed on due invoices (non draft)
|
||||
$sql = "SELECT s.nom as nom, s.tva_intra as tva_intra,";
|
||||
$sql.= " sum(f.total) as amount, sum(f.tva) as tva,";
|
||||
$sql.= " s.tva_assuj as assuj, s.rowid as socid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2)"; // Validated or payed (partially or completely)
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND s.rowid = f.fk_soc";
|
||||
$sql.= " GROUP BY s.rowid";
|
||||
}
|
||||
else
|
||||
{
|
||||
// If vat payed on payments
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITEEXPERT)
|
||||
{
|
||||
// \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).
|
||||
}
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE)
|
||||
{
|
||||
// Tva sur factures payés (should be on payment)
|
||||
$sql = "SELECT s.nom as nom, s.tva_intra as tva_intra,";
|
||||
$sql.= " sum(f.total) as amount, sum(f.tva) as tva,";
|
||||
$sql.= " s.tva_assuj as assuj, s.rowid as socid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (2)"; // Payed (partially or completely)
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND s.rowid = f.fk_soc";
|
||||
$sql.= " GROUP BY s.rowid";
|
||||
}
|
||||
}
|
||||
|
||||
if ($sql)
|
||||
{
|
||||
dolibarr_syslog("Client::tva_coll sql=".$sql);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
while($assoc = $db->fetch_array($resql))
|
||||
{
|
||||
$list[] = $assoc;
|
||||
}
|
||||
$db->free();
|
||||
return $list;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get payable VAT
|
||||
* @param resource Database handle
|
||||
* @param int Year
|
||||
*/
|
||||
function tva_paye($db, $y)
|
||||
{
|
||||
global $conf, $modecompta;
|
||||
|
||||
// Define sql request
|
||||
$sql='';
|
||||
if ($modecompta == "CREANCES-DETTES")
|
||||
{
|
||||
// Si on paye la tva sur les factures dues (non brouillon)
|
||||
$sql = "SELECT s.nom as nom, s.tva_intra as tva_intra,";
|
||||
$sql.= " sum(f.total_ht) as amount, sum(f.total_tva) as tva,";
|
||||
$sql.= " s.tva_assuj as assuj, s.rowid as socid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2)"; // Validated or payed (partially or completely)
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND s.rowid = f.fk_soc ";
|
||||
$sql.= " GROUP BY s.rowid";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Si on paye la tva sur les payments
|
||||
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITEEXPERT)
|
||||
{
|
||||
// \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).
|
||||
}
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE)
|
||||
{
|
||||
// Tva sur factures payés
|
||||
$sql = "SELECT s.nom as nom, s.tva_intra as tva_intra,";
|
||||
$sql.= " sum(f.total_ht) as amount, sum(f.total_tva) as tva,";
|
||||
$sql.= " s.tva_assuj as assuj, s.rowid as socid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql.= " WHERE ";
|
||||
//$sql.= " f.fk_statut in (2)"; // Payed (partially or completely)
|
||||
$sql.= " f.paye in (1)"; // Payed (completely)
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND s.rowid = f.fk_soc ";
|
||||
$sql.= " GROUP BY s.rowid";
|
||||
}
|
||||
}
|
||||
|
||||
if ($sql)
|
||||
{
|
||||
dolibarr_syslog("Client::tva_paye sql=".$sql);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
while($assoc = $db->fetch_array($resql))
|
||||
{
|
||||
$list[] = $assoc;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -15,14 +15,13 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/tva/fiche.php
|
||||
\ingroup tax
|
||||
\brief Page des règlements de TVA
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
|
||||
/**
|
||||
\file htdocs/compta/tva/index.php
|
||||
\ingroup compta
|
||||
\ingroup tax
|
||||
\brief Page des societes
|
||||
\version $Revision$
|
||||
*/
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2008 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
|
||||
@ -15,11 +15,8 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*
|
||||
*/
|
||||
|
||||
require("../../main.inc.php");
|
||||
|
||||
function llxHeader($head = "") {
|
||||
|
||||
@ -17,18 +17,14 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/tva/quadri.php
|
||||
\ingroup compta
|
||||
\ingroup tax
|
||||
\brief Trimestrial page
|
||||
\version $Revision$
|
||||
@todo deal with recurrent invoices as well
|
||||
\version $Id$
|
||||
\todo Deal with recurrent invoices as well
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
|
||||
@ -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-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006-2007 Yannick Warnier <ywarnier@beeznest.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -17,23 +17,23 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/compta/tva/quadri_detail.php
|
||||
\ingroup compta
|
||||
\ingroup tax
|
||||
\brief Trimestrial page - detailed version
|
||||
\version $Revision$
|
||||
@todo deal with recurrent invoices as well
|
||||
\version $Id$
|
||||
\todo Deal with recurrent invoices as well
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
require("../../tva.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/report.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/tva.class.php");
|
||||
|
||||
$langs->load("bills");
|
||||
$langs->load("compta");
|
||||
$langs->load("companies");
|
||||
|
||||
$year=$_GET["year"];
|
||||
if ($year == 0 )
|
||||
@ -45,6 +45,218 @@ if ($year == 0 )
|
||||
$year_start = $year;
|
||||
}
|
||||
|
||||
// Define modecompta ('CREANCES-DETTES' or 'RECETTES-DEPENSES')
|
||||
$modecompta = $conf->compta->mode;
|
||||
if ($_GET["modecompta"]) $modecompta=$_GET["modecompta"];
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Affichage page
|
||||
*/
|
||||
|
||||
llxHeader();
|
||||
|
||||
$company_static=new Societe($db);
|
||||
|
||||
print_fiche_titre($langs->trans("VAT"),"");
|
||||
|
||||
// Affiche en-tête du rapport
|
||||
if ($modecompta=="CREANCES-DETTES")
|
||||
{
|
||||
$nom=$langs->trans("ReportByQuarter");
|
||||
$nom.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=RECETTES-DEPENSES">','</a>').')';
|
||||
$period=$year_start;
|
||||
$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modecompta=".$modecompta."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modecompta=".$modecompta."'>".img_next()."</a>":"");
|
||||
$description=$langs->trans("VATReportDesc");
|
||||
$description.=$fsearch;
|
||||
$builddate=time();
|
||||
$exportlink=$langs->trans("NotYetAvailable");
|
||||
}
|
||||
else {
|
||||
$nom=$langs->trans("ReportByQuarter");
|
||||
$nom.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modecompta=CREANCES-DETTES">','</a>').')';
|
||||
$period=$year_start;
|
||||
$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modecompta=".$modecompta."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modecompta=".$modecompta."'>".img_next()."</a>":"");
|
||||
$description=$langs->trans("VATReportDesc");
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE) $description.='<br>'.img_warning().' '.$langs->trans('OptionModeTrueInfoModuleComptabilite');
|
||||
$description.=$fsearch;
|
||||
$builddate=time();
|
||||
$exportlink=$langs->trans("NotYetAvailable");
|
||||
}
|
||||
report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportlink);
|
||||
|
||||
|
||||
// VAT Received and payed
|
||||
|
||||
echo '<table class="noborder" width="100%">';
|
||||
|
||||
$y = $year_current;
|
||||
for ($q = 1 ; $q <= 4 ; $q++ )
|
||||
{
|
||||
$total = 0; $subtotal = 0;
|
||||
$i=0;
|
||||
$subtot_coll_total = 0;
|
||||
$subtot_coll_vat = 0;
|
||||
$subtot_paye_total = 0;
|
||||
$subtot_paye_vat = 0;
|
||||
$var=true;
|
||||
$x_coll = tva_coll($db, $y, $q);
|
||||
$x_paye = tva_paye($db, $y, $q);
|
||||
|
||||
if (! is_array($x_coll))
|
||||
{
|
||||
print '<tr><td colspan="5">'.$langs->trans("FeatureNotYetAvailable").'</td></tr>';
|
||||
print '<tr><td colspan="5">'.$langs->trans("FeatureIsSupportedInInOutModeOnly").'</td></tr>';
|
||||
break;
|
||||
}
|
||||
|
||||
$x_both = array();
|
||||
//now, from these two arrays, get another array with one rate per line
|
||||
foreach(array_keys($x_coll) as $my_coll_rate){
|
||||
$x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht'];
|
||||
$x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat'];
|
||||
$x_both[$my_coll_rate]['paye']['totalht'] = 0;
|
||||
$x_both[$my_coll_rate]['paye']['vat'] = 0;
|
||||
$x_both[$my_coll_rate]['coll']['links'] = '';
|
||||
$x_both[$my_coll_rate]['coll']['detail'] = array();
|
||||
foreach($x_coll[$my_coll_rate]['facid'] as $id=>$dummy){
|
||||
$x_both[$my_coll_rate]['coll']['detail'][] = array(
|
||||
'id'=>$x_coll[$my_coll_rate]['facid'][$id],
|
||||
'descr'=>$x_coll[$my_coll_rate]['descr'][$id],
|
||||
'link'=>'<a href="../facture.php?facid='.$x_coll[$my_coll_rate]['facid'][$id].'" title="'.$langs->trans("Invoice").' '.$x_coll[$my_coll_rate]['facnum'][$id].'">'.$x_coll[$my_coll_rate]['facnum'][$id].'</a> ',
|
||||
'totalht'=>$x_coll[$my_coll_rate]['totalht_list'][$id],
|
||||
'vat'=>$x_coll[$my_coll_rate]['vat_list'][$id]);
|
||||
//$x_both[$my_coll_rate]['coll']['links'] .= '<a href="../facture.php?facid='.$x_coll[$my_coll_rate]['facid'][$id].'" title="'.$x_coll[$my_coll_rate]['facnum'][$id].'">..'.substr($x_coll[$my_coll_rate]['facnum'][$id],-2).'</a> ';
|
||||
}
|
||||
}
|
||||
// tva payed
|
||||
foreach(array_keys($x_paye) as $my_paye_rate){
|
||||
$x_both[$my_paye_rate]['paye']['totalht'] = $x_paye[$my_paye_rate]['totalht'];
|
||||
$x_both[$my_paye_rate]['paye']['vat'] = $x_paye[$my_paye_rate]['vat'];
|
||||
if(!isset($x_both[$my_paye_rate]['coll']['totalht'])){
|
||||
$x_both[$my_paye_rate]['coll']['totalht'] = 0;
|
||||
$x_both[$my_paye_rate]['coll']['vat'] = 0;
|
||||
}
|
||||
$x_both[$my_paye_rate]['paye']['links'] = '';
|
||||
$x_both[$my_paye_rate]['paye']['detail'] = array();
|
||||
foreach($x_paye[$my_paye_rate]['facid'] as $id=>$dummy){
|
||||
$x_both[$my_paye_rate]['paye']['detail'][] = array(
|
||||
'id'=>$x_paye[$my_paye_rate]['facid'][$id],
|
||||
'descr'=>$x_paye[$my_paye_rate]['descr'][$id],
|
||||
'link'=>'<a href="../../fourn/facture/fiche.php?facid='.$x_paye[$my_paye_rate]['facid'][$id].'" title="'.$langs->trans("Invoice").' '.$x_paye[$my_paye_rate]['facnum'][$id].'">'.$x_paye[$my_paye_rate]['facnum'][$id].'</a> ',
|
||||
'totalht'=>$x_paye[$my_paye_rate]['totalht_list'][$id],
|
||||
'vat'=>$x_paye[$my_paye_rate]['vat_list'][$id]);
|
||||
//$x_both[$my_paye_rate]['paye']['links'] .= '<a href="../../fourn/facture/fiche.php?facid='.$x_paye[$my_paye_rate]['facid'][$id].'" title="'.$x_paye[$my_paye_rate]['facnum'][$id].'">..'.substr($x_paye[$my_paye_rate]['facnum'][$id],-2).'</a> ';
|
||||
}
|
||||
}
|
||||
//now we have an array (x_both) indexed by rates for coll and paye
|
||||
|
||||
//print table headers for this quadri - incomes first
|
||||
//imprime les en-tete de tables pour ce quadri - d'abord les revenus
|
||||
|
||||
$x_coll_sum = 0;
|
||||
$x_coll_ht = 0;
|
||||
$x_paye_sum = 0;
|
||||
$x_paye_ht = 0;
|
||||
|
||||
print '<tr><td colspan="4">'.$langs->trans("Quadri")." $q (".strftime("%b %Y",dolibarr_mktime(0,0,0,(($q-1)*3)+1,1,$y)).' - '.strftime("%b %Y",mktime(0,0,0,($q*3),1,$y)).')</td></tr>';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td align="left">'.$langs->trans("CustomersInvoices").'</td>';
|
||||
print '<td align="left"> '.$langs->trans("Description").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Income").'</td>';
|
||||
print '<td align="right">'.$langs->trans("VATToPay").'</td>';
|
||||
print '</tr>';
|
||||
//foreach($x_both as $rate => $both){
|
||||
foreach(array_keys($x_coll) as $rate){
|
||||
$var=!$var;
|
||||
if(is_array($x_both[$rate]['coll']['detail'])){
|
||||
print "<tr>";
|
||||
print '<td class="tax_rate">'.$langs->trans("Rate").': '.$rate.'%</td><td colspan="3"></td>';
|
||||
print '</tr>'."\n";
|
||||
foreach($x_both[$rate]['coll']['detail'] as $index=>$fields){
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td nowrap align="left">'.$fields['link'].'</td>';
|
||||
print '<td align="left">'.$fields['descr'].'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['totalht']).'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['vat']).'</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
$x_coll_sum += $x_both[$rate]['coll']['vat'];
|
||||
$subtot_coll_total += $x_both[$rate]['coll']['totalht'];
|
||||
$subtot_coll_vat += $x_both[$rate]['coll']['vat'];
|
||||
}
|
||||
print '<tr class="liste_total">' .
|
||||
'<td></td>' .
|
||||
'<td align="right">'.$langs->trans("Total").':</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_coll_total).'</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_coll_vat).'</td>' .
|
||||
'</tr>' ;
|
||||
|
||||
//print table headers for this quadri - expenses now
|
||||
//imprime les en-tete de tables pour ce quadri - maintenant les dépenses
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td align="left">'.$langs->trans("SuppliersInvoices").'</td>';
|
||||
print '<td align="left">'.$langs->trans("Description").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Outcome").'</td>';
|
||||
print '<td align="right">'.$langs->trans("VATToCollect").'</td>';
|
||||
print '</tr>'."\n";
|
||||
foreach(array_keys($x_paye) as $rate){
|
||||
$var=!$var;
|
||||
if(is_array($x_both[$rate]['paye']['detail']))
|
||||
{
|
||||
print "<tr>";
|
||||
print '<td class="tax_rate">'.$langs->trans("Rate").': '.$rate.'%</td><td colspan="3"></td>';
|
||||
print '</tr>'."\n";
|
||||
foreach($x_both[$rate]['paye']['detail'] as $index=>$fields){
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td nowrap align="left">'.$fields['link'].'</td>';
|
||||
print '<td align="left">'.$fields['descr'].'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['totalht']).'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['vat']).'</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
$x_paye_sum += $x_both[$rate]['paye']['vat'];
|
||||
$subtot_paye_total += $x_both[$rate]['paye']['totalht'];
|
||||
$subtot_paye_vat += $x_both[$rate]['paye']['vat'];
|
||||
}
|
||||
print '<tr class="liste_total">' .
|
||||
'<td></td>' .
|
||||
'<td align="right">'.$langs->trans("Total").':</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_paye_total).'</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_paye_vat).'</td>' .
|
||||
'</tr>';
|
||||
|
||||
print '<tr>';
|
||||
print '<td colspan="3"></td><td align="right">'.$langs->trans("TotalToPay").' - '.$langs->trans("Quadri").$q.'</td>';
|
||||
print '</tr>'."\n";
|
||||
|
||||
$diff = $x_coll_sum - $x_paye_sum;
|
||||
//$total = $total + $diff;
|
||||
//$subtotal = $subtotal + $diff;
|
||||
|
||||
print "<tr>";
|
||||
print '<td colspan="3"></td>';
|
||||
//print '<td nowrap align="right"><b>'.price($total).'</b></td>' .
|
||||
print '<td nowrap align="right"><b>'.price($diff)."</b></td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
print '</tr><tr><td colspan="4"> </td></tr>'."\n";
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
echo '</table>';
|
||||
|
||||
|
||||
$db->close();
|
||||
|
||||
llxFooter('$Date$ - $Revision$');
|
||||
|
||||
|
||||
/**
|
||||
@ -59,54 +271,85 @@ if ($year == 0 )
|
||||
*/
|
||||
function tva_coll($db,$y,$q)
|
||||
{
|
||||
global $conf;
|
||||
if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
global $conf, $modecompta;
|
||||
|
||||
// Define sql request
|
||||
$sql='';
|
||||
if ($modecompta == "CREANCES-DETTES")
|
||||
{
|
||||
// if vat payed on due invoices
|
||||
$sql = "SELECT d.fk_facture as facid, f.facnumber as facnum, d.tva_taux as rate, d.total_ht as totalht, d.total_tva as amount, d.description as descr";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ";
|
||||
$sql.= MAIN_DB_PREFIX."facturedet as d " ;
|
||||
// If vat payed on due invoices (non draft)
|
||||
$sql = "SELECT d.rowid, d.fk_facture as facid, f.facnumber as facnum, d.tva_taux as rate, d.total_ht as totalht, d.total_tva as amount, d.description as descr";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."facturedet as d" ;
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2) ";
|
||||
$sql.= " AND f.rowid = d.fk_facture ";
|
||||
$sql.= " AND date_format(f.datef,'%Y') = ".$y;
|
||||
$sql.= " f.fk_statut in (1,2)"; // Validated or payed (partially or completely)
|
||||
$sql.= " AND f.rowid = d.fk_facture";
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
|
||||
$sql.= " ORDER BY rate, facid";
|
||||
|
||||
$sql.= " ORDER BY rate, facid, d.rowid";
|
||||
}
|
||||
else
|
||||
{
|
||||
// if vat payed on paiments
|
||||
// If vat payed on payments
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITEEXPERT)
|
||||
{
|
||||
// \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).
|
||||
}
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE)
|
||||
{
|
||||
// Tva sur factures payés (should be on payment)
|
||||
$sql = "SELECT d.rowid, d.fk_facture as facid, f.facnumber as facnum, d.tva_taux as rate, d.total_ht as totalht, d.total_tva as amount, d.description as descr";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."facturedet as d" ;
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (2)"; // Payed (partially or completely)
|
||||
$sql.= " AND f.rowid = d.fk_facture";
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
|
||||
$sql.= " ORDER BY d.rowid, rate, facid";
|
||||
}
|
||||
}
|
||||
|
||||
$resql = $db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
$rate = -1;
|
||||
while($assoc = $db->fetch_array($resql))
|
||||
{
|
||||
if($assoc['rate'] != $rate){ //new rate
|
||||
$list[$assoc['rate']]['totalht'] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] = $assoc['amount'];
|
||||
}else{
|
||||
$list[$assoc['rate']]['totalht'] += $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] += $assoc['amount'];
|
||||
}
|
||||
$list[$assoc['rate']]['facid'][] = $assoc['facid'];
|
||||
$list[$assoc['rate']]['facnum'][] = $assoc['facnum'];
|
||||
$list[$assoc['rate']]['descr'][] = $assoc['descr'];
|
||||
$list[$assoc['rate']]['totalht_list'][] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat_list'][] = $assoc['amount'];
|
||||
$rate = $assoc['rate'];
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
if ($sql)
|
||||
{
|
||||
dolibarr_syslog("Client::tva_coll sql=".$sql);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
$rate = -1;
|
||||
while($assoc = $db->fetch_array($resql))
|
||||
{
|
||||
if($assoc['rate'] != $rate){ //new rate
|
||||
$list[$assoc['rate']]['totalht'] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] = $assoc['amount'];
|
||||
}else{
|
||||
$list[$assoc['rate']]['totalht'] += $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] += $assoc['amount'];
|
||||
}
|
||||
$list[$assoc['rate']]['facid'][] = $assoc['facid'];
|
||||
$list[$assoc['rate']]['facnum'][] = $assoc['facnum'];
|
||||
$list[$assoc['rate']]['descr'][] = $assoc['descr'];
|
||||
$list[$assoc['rate']]['totalht_list'][] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat_list'][] = $assoc['amount'];
|
||||
$rate = $assoc['rate'];
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -121,235 +364,88 @@ function tva_coll($db,$y,$q)
|
||||
*/
|
||||
function tva_paye($db, $y,$q)
|
||||
{
|
||||
global $conf;
|
||||
global $conf, $modecompta;
|
||||
|
||||
if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
// Define sql request
|
||||
$sql='';
|
||||
if ($modecompta == "CREANCES-DETTES")
|
||||
{
|
||||
// Si on paye la tva sur les factures dues (non brouillon)
|
||||
$sql = "SELECT d.fk_facture_fourn as facid, f.facnumber as facnum, d.tva_taux as rate, d.total_ht as totalht, d.tva as amount, d.description as descr ";
|
||||
$sql = "SELECT d.rowid, d.fk_facture_fourn as facid, f.facnumber as facnum, d.tva_taux as rate, d.total_ht as totalht, d.tva as amount, d.description as descr ";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ";
|
||||
$sql.= MAIN_DB_PREFIX."facture_fourn_det as d " ;
|
||||
$sql.= " ".MAIN_DB_PREFIX."facture_fourn_det as d " ;
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2) ";
|
||||
$sql.= " f.fk_statut in (1,2)"; // Validated or payed (partially or completely)
|
||||
$sql.= " AND f.rowid = d.fk_facture_fourn ";
|
||||
$sql.= " AND date_format(f.datef,'%Y') = ".$y;
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
|
||||
$sql.= " ORDER BY rate, facid ";
|
||||
$sql.= " ORDER BY d.rowid, rate, facid ";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Si on paye la tva sur les payments
|
||||
}
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
$rate = -1;
|
||||
while($assoc = $db->fetch_array($resql))
|
||||
{
|
||||
if($assoc['rate'] != $rate){ //new rate
|
||||
$list[$assoc['rate']]['totalht'] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] = $assoc['amount'];
|
||||
}else{
|
||||
$list[$assoc['rate']]['totalht'] += $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] += $assoc['amount'];
|
||||
}
|
||||
$list[$assoc['rate']]['facid'][] = $assoc['facid'];
|
||||
$list[$assoc['rate']]['facnum'][] = $assoc['facnum'];
|
||||
$list[$assoc['rate']]['descr'][] = $assoc['descr'];
|
||||
$list[$assoc['rate']]['totalht_list'][] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat_list'][] = $assoc['amount'];
|
||||
$rate = $assoc['rate'];
|
||||
}
|
||||
return $list;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Main script
|
||||
*/
|
||||
|
||||
llxHeader();
|
||||
|
||||
$textprevyear="<a href=\"quadri_detail.php?year=" . ($year_current-1) . "\">".img_previous()."</a>";
|
||||
$textnextyear=" <a href=\"quadri_detail.php?year=" . ($year_current+1) . "\">".img_next()."</a>";
|
||||
|
||||
print_fiche_titre($langs->trans("VAT"),"$textprevyear ".$langs->trans("Year")." $year_start $textnextyear");
|
||||
print '<br>';
|
||||
|
||||
echo '<table class="noborder" width="100%">';
|
||||
|
||||
if ($conf->compta->mode == "CREANCES-DETTES")
|
||||
{
|
||||
$y = $year_current ;
|
||||
|
||||
|
||||
for ($q = 1 ; $q <= 4 ; $q++ )
|
||||
{
|
||||
$total = 0; $subtotal = 0;
|
||||
$i=0;
|
||||
$subtot_coll_total = 0;
|
||||
$subtot_coll_vat = 0;
|
||||
$subtot_paye_total = 0;
|
||||
$subtot_paye_vat = 0;
|
||||
$var=true;
|
||||
$x_coll = tva_coll($db, $y, $q);
|
||||
$x_paye = tva_paye($db, $y, $q);
|
||||
$x_both = array();
|
||||
//now, from these two arrays, get another array with one rate per line
|
||||
foreach(array_keys($x_coll) as $my_coll_rate){
|
||||
$x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht'];
|
||||
$x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat'];
|
||||
$x_both[$my_coll_rate]['paye']['totalht'] = 0;
|
||||
$x_both[$my_coll_rate]['paye']['vat'] = 0;
|
||||
$x_both[$my_coll_rate]['coll']['links'] = '';
|
||||
$x_both[$my_coll_rate]['coll']['detail'] = array();
|
||||
foreach($x_coll[$my_coll_rate]['facid'] as $id=>$dummy){
|
||||
$x_both[$my_coll_rate]['coll']['detail'][] = array(
|
||||
'id'=>$x_coll[$my_coll_rate]['facid'][$id],
|
||||
'descr'=>$x_coll[$my_coll_rate]['descr'][$id],
|
||||
'link'=>'<a href="../facture.php?facid='.$x_coll[$my_coll_rate]['facid'][$id].'" title="'.$langs->trans("Invoice").' '.$x_coll[$my_coll_rate]['facnum'][$id].'">'.$x_coll[$my_coll_rate]['facnum'][$id].'</a> ',
|
||||
'totalht'=>$x_coll[$my_coll_rate]['totalht_list'][$id],
|
||||
'vat'=>$x_coll[$my_coll_rate]['vat_list'][$id]);
|
||||
//$x_both[$my_coll_rate]['coll']['links'] .= '<a href="../facture.php?facid='.$x_coll[$my_coll_rate]['facid'][$id].'" title="'.$x_coll[$my_coll_rate]['facnum'][$id].'">..'.substr($x_coll[$my_coll_rate]['facnum'][$id],-2).'</a> ';
|
||||
}
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITEEXPERT)
|
||||
{
|
||||
// \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).
|
||||
}
|
||||
// tva payed
|
||||
foreach(array_keys($x_paye) as $my_paye_rate){
|
||||
$x_both[$my_paye_rate]['paye']['totalht'] = $x_paye[$my_paye_rate]['totalht'];
|
||||
$x_both[$my_paye_rate]['paye']['vat'] = $x_paye[$my_paye_rate]['vat'];
|
||||
if(!isset($x_both[$my_paye_rate]['coll']['totalht'])){
|
||||
$x_both[$my_paye_rate]['coll']['totalht'] = 0;
|
||||
$x_both[$my_paye_rate]['coll']['vat'] = 0;
|
||||
}
|
||||
$x_both[$my_paye_rate]['paye']['links'] = '';
|
||||
$x_both[$my_paye_rate]['paye']['detail'] = array();
|
||||
foreach($x_paye[$my_paye_rate]['facid'] as $id=>$dummy){
|
||||
$x_both[$my_paye_rate]['paye']['detail'][] = array(
|
||||
'id'=>$x_paye[$my_paye_rate]['facid'][$id],
|
||||
'descr'=>$x_paye[$my_paye_rate]['descr'][$id],
|
||||
'link'=>'<a href="../../fourn/facture/fiche.php?facid='.$x_paye[$my_paye_rate]['facid'][$id].'" title="'.$langs->trans("Invoice").' '.$x_paye[$my_paye_rate]['facnum'][$id].'">'.$x_paye[$my_paye_rate]['facnum'][$id].'</a> ',
|
||||
'totalht'=>$x_paye[$my_paye_rate]['totalht_list'][$id],
|
||||
'vat'=>$x_paye[$my_paye_rate]['vat_list'][$id]);
|
||||
//$x_both[$my_paye_rate]['paye']['links'] .= '<a href="../../fourn/facture/fiche.php?facid='.$x_paye[$my_paye_rate]['facid'][$id].'" title="'.$x_paye[$my_paye_rate]['facnum'][$id].'">..'.substr($x_paye[$my_paye_rate]['facnum'][$id],-2).'</a> ';
|
||||
}
|
||||
if ($conf->global->MAIN_MODULE_COMPTABILITE)
|
||||
{
|
||||
// Tva sur factures payés
|
||||
$sql = "SELECT d.rowid, d.fk_facture_fourn as facid, f.facnumber as facnum, d.tva_taux as rate, d.total_ht as totalht, d.tva as amount, d.description as descr ";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ";
|
||||
$sql.= " ".MAIN_DB_PREFIX."facture_fourn_det as d " ;
|
||||
$sql.= " WHERE ";
|
||||
//$sql.= " f.fk_statut in (1,2)"; // Validated or payed (partially or completely)
|
||||
$sql.= " f.paye in (1)"; // Payed (completely)
|
||||
$sql.= " AND f.rowid = d.fk_facture_fourn ";
|
||||
$sql.= " AND f.datef >= '".$y."0101000000' AND f.datef <= '".$y."1231235959'";
|
||||
$sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")";
|
||||
$sql.= " ORDER BY d.rowid, rate, facid ";
|
||||
}
|
||||
//now we have an array (x_both) indexed by rates for coll and paye
|
||||
|
||||
//print table headers for this quadri - incomes first
|
||||
//imprime les en-tete de tables pour ce quadri - d'abord les revenus
|
||||
|
||||
$x_coll_sum = 0;
|
||||
$x_coll_ht = 0;
|
||||
$x_paye_sum = 0;
|
||||
$x_paye_ht = 0;
|
||||
print '<tr class="liste_titre"><td colspan="4">'.$langs->trans("Quadri")." $q (".strftime("%b %Y",dolibarr_mktime(0,0,0,(($q-1)*3)+1,1,$y)).' - '.strftime("%b %Y",mktime(0,0,0,($q*3),1,$y)).')</td></tr>';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td align="left">'.$langs->trans("CustomersInvoices").'</td>';
|
||||
print '<td align="left"> '.$langs->trans("Description").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Income").'</td>';
|
||||
print '<td align="right">'.$langs->trans("VATToPay").'</td>';
|
||||
print '</tr>';
|
||||
//foreach($x_both as $rate => $both){
|
||||
foreach(array_keys($x_coll) as $rate){
|
||||
$var=!$var;
|
||||
if(is_array($x_both[$rate]['coll']['detail'])){
|
||||
print "<tr>";
|
||||
print '<td class="tax_rate">'.$langs->trans("Rate").': '.$rate.'%</td><td colspan="3"></td>';
|
||||
print '</tr>'."\n";
|
||||
foreach($x_both[$rate]['coll']['detail'] as $index=>$fields){
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td nowrap align="left">'.$fields['link'].'</td>';
|
||||
print '<td align="left">'.$fields['descr'].'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['totalht']).'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['vat']).'</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
$x_coll_sum += $x_both[$rate]['coll']['vat'];
|
||||
$subtot_coll_total += $x_both[$rate]['coll']['totalht'];
|
||||
$subtot_coll_vat += $x_both[$rate]['coll']['vat'];
|
||||
}
|
||||
print '<tr class="liste_total">' .
|
||||
'<td></td>' .
|
||||
'<td align="right">'.$langs->trans("Total").':</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_coll_total).'</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_coll_vat).'</td>' .
|
||||
'</tr>' ;
|
||||
|
||||
//print table headers for this quadri - expenses now
|
||||
//imprime les en-tete de tables pour ce quadri - maintenant les dépenses
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td align="left">'.$langs->trans("SuppliersInvoices").'</td>';
|
||||
print '<td align="left">'.$langs->trans("Description").'</td>';
|
||||
print '<td align="right">'.$langs->trans("Outcome").'</td>';
|
||||
print '<td align="right">'.$langs->trans("VATToCollect").'</td>';
|
||||
print '</tr>'."\n";
|
||||
foreach(array_keys($x_paye) as $rate){
|
||||
$var=!$var;
|
||||
if(is_array($x_both[$rate]['paye']['detail']))
|
||||
{
|
||||
print "<tr>";
|
||||
print '<td class="tax_rate">'.$langs->trans("Rate").': '.$rate.'%</td><td colspan="3"></td>';
|
||||
print '</tr>'."\n";
|
||||
foreach($x_both[$rate]['paye']['detail'] as $index=>$fields){
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td nowrap align="left">'.$fields['link'].'</td>';
|
||||
print '<td align="left">'.$fields['descr'].'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['totalht']).'</td>';
|
||||
print '<td nowrap align="right">'.price($fields['vat']).'</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
$x_paye_sum += $x_both[$rate]['paye']['vat'];
|
||||
$subtot_paye_total += $x_both[$rate]['paye']['totalht'];
|
||||
$subtot_paye_vat += $x_both[$rate]['paye']['vat'];
|
||||
}
|
||||
print '<tr class="liste_total">' .
|
||||
'<td></td>' .
|
||||
'<td align="right">'.$langs->trans("Total").':</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_paye_total).'</td>' .
|
||||
'<td nowrap align="right">'.price($subtot_paye_vat).'</td>' .
|
||||
'</tr>';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="3"></td><td align="right">'.$langs->trans("TotalToPay").' - '.$langs->trans("Quadri").$q.'</td>';
|
||||
print '</tr>'."\n";
|
||||
|
||||
$diff = $x_coll_sum - $x_paye_sum;
|
||||
//$total = $total + $diff;
|
||||
//$subtotal = $subtotal + $diff;
|
||||
|
||||
print "<tr>";
|
||||
print '<td colspan="3"></td>';
|
||||
//print '<td nowrap align="right"><b>'.price($total).'</b></td>' .
|
||||
print '<td nowrap align="right"><b>'.price($diff)."</b></td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
print '</tr><tr><td colspan="4"> </td></tr>'."\n";
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<tr><td colspan="5">'.$langs->trans("FeatureNotYetAvailable").'</td></tr>';
|
||||
print '<tr><td colspan="5">'.$langs->trans("FeatureIsSupportedInInOutModeOnly").'</td></tr>';
|
||||
if ($sql)
|
||||
{
|
||||
dolibarr_syslog("Client::tva_paye sql=".$sql);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$list = array();
|
||||
$rate = -1;
|
||||
while($assoc = $db->fetch_array($resql))
|
||||
{
|
||||
if($assoc['rate'] != $rate){ //new rate
|
||||
$list[$assoc['rate']]['totalht'] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] = $assoc['amount'];
|
||||
}else{
|
||||
$list[$assoc['rate']]['totalht'] += $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat'] += $assoc['amount'];
|
||||
}
|
||||
$list[$assoc['rate']]['facid'][] = $assoc['facid'];
|
||||
$list[$assoc['rate']]['facnum'][] = $assoc['facnum'];
|
||||
$list[$assoc['rate']]['descr'][] = $assoc['descr'];
|
||||
$list[$assoc['rate']]['totalht_list'][] = $assoc['totalht'];
|
||||
$list[$assoc['rate']]['vat_list'][] = $assoc['amount'];
|
||||
$rate = $assoc['rate'];
|
||||
}
|
||||
return $list;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
echo '</table>';
|
||||
|
||||
|
||||
$db->close();
|
||||
|
||||
llxFooter('$Date$ - $Revision$');
|
||||
?>
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
|
||||
/**
|
||||
\file htdocs/compta/tva/reglement.php
|
||||
\ingroup tax
|
||||
\brief Liste des règlements de TVA effectués
|
||||
\version $Revision$
|
||||
*/
|
||||
|
||||
@ -380,15 +380,16 @@ class Conf
|
||||
if (empty($this->global->MAIN_MONNAIE)) $this->global->MAIN_MONNAIE='EUR';
|
||||
$this->monnaie=$this->global->MAIN_MONNAIE;
|
||||
|
||||
// $this->compta->mode = Option du module Compta: Defini le mode de calcul des etats comptables (CA,...)
|
||||
$this->compta->mode = 'RECETTES-DEPENSES'; // Par defaut
|
||||
if (defined('COMPTA_MODE') && COMPTA_MODE) {
|
||||
// $this->compta->mode = Option du module Comptabilite (simple ou expert):
|
||||
// Defini le mode de calcul des etats comptables (CA,...)
|
||||
$this->compta->mode = 'RECETTES-DEPENSES'; // By default
|
||||
if (isset($this->global->COMPTA_MODE)) {
|
||||
// Peut etre 'RECETTES-DEPENSES' ou 'CREANCES-DETTES'
|
||||
$this->compta->mode = COMPTA_MODE;
|
||||
$this->compta->mode = $this->global->COMPTA_MODE;
|
||||
}
|
||||
|
||||
// $this->defaulttx
|
||||
if (defined('FACTURE_TVAOPTION') && FACTURE_TVAOPTION == 'franchise')
|
||||
if (isset($this->global->FACTURE_TVAOPTION) && $this->global->FACTURE_TVAOPTION == 'franchise')
|
||||
{
|
||||
$this->defaulttx='0'; // Taux par defaut des factures clients
|
||||
}
|
||||
@ -454,7 +455,7 @@ class Conf
|
||||
|
||||
/* \todo Ajouter une option Gestion de la TVA dans le module compta qui permet de desactiver la fonction TVA
|
||||
* (pour particuliers ou liberaux en franchise)
|
||||
* En attendant, valeur forcee a 1
|
||||
* En attendant, valeur forcee a 1 car toujours interessant a avoir meme ceux qui veulent pas.
|
||||
*/
|
||||
$this->compta->tva=1;
|
||||
|
||||
|
||||
@ -21,15 +21,13 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/facture.class.php
|
||||
\ingroup facture
|
||||
\brief Fichier de la classe des factures clients
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require_once(DOL_DOCUMENT_ROOT ."/commonobject.class.php");
|
||||
|
||||
@ -18,16 +18,13 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/fourn/fournisseur.facture.class.php
|
||||
\ingroup fournisseur,facture
|
||||
\brief Fichier de la classe des factures fournisseurs
|
||||
\version $Revision$
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
include_once(DOL_DOCUMENT_ROOT."/facture.class.php");
|
||||
@ -43,8 +40,15 @@ class FactureFournisseur extends Facture
|
||||
var $id;
|
||||
var $db;
|
||||
var $socid;
|
||||
|
||||
//! 0=brouillon,
|
||||
//! 1=validée,
|
||||
//! TODO Ce statut doit etre 2 et non 1 classée payée partiellement (close_code='discount_vat','badcustomer') ou complètement (close_code=null),
|
||||
//! TODO Ce statut doit etre 2 et non 1 classée abandonnée et aucun paiement n'a eu lieu (close_code='badcustomer','abandon' ou 'replaced')
|
||||
var $statut;
|
||||
//! 1 si facture payée COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant)
|
||||
var $paye;
|
||||
|
||||
var $author;
|
||||
var $libelle;
|
||||
var $date;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
*
|
||||
@ -17,12 +17,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/** \defgroup comptabilite Module comptabilite
|
||||
\brief Module pour inclure des fonctions de comptabilit<EFBFBD> (gestion de comptes comptables et rapports)
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@ -17,12 +17,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/** \defgroup comptabilite_expert Module comptabilite expert
|
||||
\brief Module pour inclure des fonctions de comptabilit<EFBFBD> (gestion de comptes comptables et rapports)
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@ -6,8 +6,10 @@ MenuFinancial=Financial
|
||||
OptionMode=Option for accountancy
|
||||
OptionModeTrue=Option Input-Ouput
|
||||
OptionModeVirtual=Option Credits-Debits
|
||||
OptionModeTrueDesc=In this context, the turnover is calculated over paid invoices. \nThe validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. \nRemarks: in this version, Dolibarr use the passed date of invoices with state 'Validated' and not passed date with state 'Paid'.
|
||||
OptionModeTrueDesc=In this context, the turnover is calculated over paid invoices. \nThe validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices.
|
||||
OptionModeTrueInfoModuleComptabilite=Remarks: In this accountancy module, Dolibarr use the passed date of invoices with state 'Validated' and not passed date of real individual payments.
|
||||
OptionModeVirtualDesc=In this context, the turnover is calculated over validated invoices. When these invoices are due, whether they have been paid or not, they are listed in the turnover output.
|
||||
VATReportDesc=This report sows VAT received and payed.
|
||||
FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration)
|
||||
Param=Setup
|
||||
AccountsGeneral=Accounts
|
||||
@ -24,6 +26,7 @@ Withdrawal=Withdrawal
|
||||
Withdrawals=Withdrawals
|
||||
VAT=VAT
|
||||
VATToPay=VAT to pay
|
||||
VATReceived=VAT received
|
||||
VATToCollect=VAT to collect
|
||||
VATSummary=VAT Summary
|
||||
VATPayed=VAT payed
|
||||
@ -49,6 +52,7 @@ NewVATPayment=New VAT payment
|
||||
VATPayment=VAT Payment
|
||||
VATPayments=VAT Payments
|
||||
TotalToPay=Total to pay
|
||||
TotalVATReceived=Total VAT received
|
||||
CustomerAccountancyCode=Customer accountancy code
|
||||
SupplierAccountancyCode=Supplier accountacy code
|
||||
AlreadyPayed=Already payed
|
||||
|
||||
@ -6,7 +6,8 @@ MenuFinancial=Financier
|
||||
OptionMode=Option de tenue de comptabilité
|
||||
OptionModeTrue=Option Recettes-Dépenses
|
||||
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'.
|
||||
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.
|
||||
OptionModeTrueInfoModuleComptabilite=Remarque : Dans ce module comptabilite, 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. Qu'elles soient ou non payés, dès lors qu'elles sont dues, elles apparaissent dans le résultat.
|
||||
FeatureIsSupportedInInOutModeOnly=Fonctionnalité disponible uniquement en mode de comptabilité CREDITS-DEBITS (voir configuration du module Comptabilité)
|
||||
Param=Configuration
|
||||
|
||||
@ -6,8 +6,10 @@ MenuFinancial=Compta/Tr
|
||||
OptionMode=Option de tenue de comptabilité
|
||||
OptionModeTrue=Option Recettes-Dépenses
|
||||
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'.
|
||||
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.
|
||||
OptionModeTrueInfoModuleComptabilite=Remarque : Dans le module comptabilite actif, Dolibarr utilise la date de passage de la facture à l'état 'Validée' et non la date des paiements individuels.
|
||||
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.
|
||||
VATReportDesc=Cet écran présente le rapport des TVA perçus et payés.
|
||||
FeatureIsSupportedInInOutModeOnly=Fonction disponible uniquement en mode compta CREANCES-DETTES (Voir configuration du module compta)
|
||||
Param=Paramétrage
|
||||
AccountsGeneral=Comptes généraux
|
||||
@ -24,6 +26,7 @@ Withdrawl=Pr
|
||||
Withdrawls=Prélèvements
|
||||
VAT=TVA
|
||||
VATToPay=TVA à payer
|
||||
VATReceived=TVA perçue
|
||||
VATToCollect=TVA à récupérer
|
||||
VATSummary=Résumé TVA
|
||||
VATPayed=TVA payée
|
||||
@ -49,6 +52,7 @@ NewVATPayment=Nouveau r
|
||||
VATPayment=Réglement TVA
|
||||
VATPayments=Réglements TVA
|
||||
TotalToPay=Total à payer
|
||||
TotalVATReceived=Total TVA perçue
|
||||
CustomerAccountancyCode=Code compta client
|
||||
SupplierAccountancyCode=Code compta fournisseur
|
||||
AlreadyPayed=Déjà réglé
|
||||
|
||||
Loading…
Reference in New Issue
Block a user