27require 
'../../main.inc.php';
 
   28require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
 
   29require_once DOL_DOCUMENT_ROOT.
'/core/lib/tax.lib.php';
 
   30require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
 
   31require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
 
   32require_once DOL_DOCUMENT_ROOT.
'/compta/localtax/class/localtax.class.php';
 
   35$langs->loadLangs(array(
"other", 
"compta", 
"banks", 
"bills", 
"companies", 
"product", 
"trips", 
"admin"));
 
   43  $year_start = $year_current;
 
   45  $year_current = $year;
 
   51if (empty($date_start) || empty($date_end)) { 
 
   95if (GETPOSTISSET(
"modetax")) {
 
  105  $socid = $user->socid;
 
  113$hookmanager->initHooks([
'customerlocaltaxlist']);
 
  120$form = 
new Form($db);
 
  121$company_static = 
new Societe($db);
 
  123$morequerystring = 
'';
 
  124$listofparams = array(
'date_startmonth', 
'date_startyear', 
'date_startday', 
'date_endmonth', 
'date_endyear', 
'date_endday');
 
  125foreach ($listofparams as $param) {
 
  127    $morequerystring .= ($morequerystring ? 
'&' : 
'').$param.
'='.
GETPOST($param);
 
  131llxHeader(
'', 
'', 
'', 
'', 0, 0, 
'', 
'', $morequerystring);
 
  134$name = $langs->transcountry($local == 1 ? 
"LT1ReportByCustomers" : 
"LT2ReportByCustomers", $mysoc->country_code);
 
  136$fsearch = 
'<!-- hidden fields for form -->';
 
  137$fsearch .= 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
  138$fsearch .= 
'<input type="hidden" name="modetax" value="'.$modetax.
'">';
 
  139$fsearch .= 
'<input type="hidden" name="localTaxType" value="'.$local.
'">';
 
  140$fsearch .= $langs->trans(
"SalesTurnoverMinimum").
': ';
 
  141$fsearch .= 
'<input type="text" name="min" id="min" value="'.$min.
'" size="6">';
 
  146if ($calc == 0 || $calc == 1) { 
 
  147  $calcmode = $calc == 0 ? $langs->trans(
"CalcModeLT".$local) : $langs->trans(
"CalcModeLT".$local.
"Rec");
 
  148  $calcmode .= 
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
 
  149  $period = $form->selectDate($date_start, 
'date_start', 0, 0, 0, 
'', 1, 0).
' - '.$form->selectDate($date_end, 
'date_end', 0, 0, 0, 
'', 1, 0);
 
  150  if (isModEnabled(
'comptabilite')) {
 
  151    $description .= 
'<br>'.$langs->trans(
"WarningDepositsNotIncluded");
 
  153  $description .= $fsearch;
 
  154  $description .= 
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
 
  157  $elementcust = $langs->trans(
"CustomersInvoices");
 
  158  $productcust = $langs->trans(
"Description");
 
  159  $amountcust = $langs->trans(
"AmountHT");
 
  160  $elementsup = $langs->trans(
"SuppliersInvoices");
 
  161  $productsup = $langs->trans(
"Description");
 
  162  $amountsup = $langs->trans(
"AmountHT");
 
  165  $calcmode = $langs->trans(
"CalcModeLT2Debt");
 
  166  $calcmode .= 
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
 
  167  $period = $form->selectDate($date_start, 
'date_start', 0, 0, 0, 
'', 1, 0).
' - '.$form->selectDate($date_end, 
'date_end', 0, 0, 0, 
'', 1, 0);
 
  168  if (isModEnabled(
'comptabilite')) {
 
  169    $description .= 
'<br>'.$langs->trans(
"WarningDepositsNotIncluded");
 
  171  $description .= $fsearch;
 
  172  $description .= 
'<span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
 
  175  $elementcust = $langs->trans(
"CustomersInvoices");
 
  176  $productcust = $langs->trans(
"Description");
 
  177  $amountcust = $langs->trans(
"AmountHT");
 
  178  $elementsup = $langs->trans(
"SuppliersInvoices");
 
  179  $productsup = $langs->trans(
"Description");
 
  180  $amountsup = $langs->trans(
"AmountHT");
 
  186report_header($name, 
'', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode);
 
  188$vatcust = $langs->transcountry($local == 1 ? 
"LT1" : 
"LT2", $mysoc->country_code);
 
  189$vatsup = $langs->transcountry($local == 1 ? 
"LT1" : 
"LT2", $mysoc->country_code);
 
  191print 
'<div class="div-table-responsive">';
 
  192print 
'<table class="liste noborder centpercent">';
 
  195if ($calc == 0 || $calc == 2) {
 
  196  print 
'<tr class="liste_titre">';
 
  197  print 
'<td class="left">'.$langs->trans(
"Num").
'</td>';
 
  198  print 
'<td class="left">'.$langs->trans(
"Customer").
'</td>';
 
  199  print 
'<td>'.$langs->transcountry(
"ProfId1", $mysoc->country_code).
'</td>';
 
  200  print 
'<td class="right">'.$langs->trans(
"TotalHT").
'</td>';
 
  201  print 
'<td class="right">'.$vatcust.
'</td>';
 
  204  $coll_list = 
tax_by_thirdparty(
'localtax'.$local, $db, 0, $date_start, $date_end, $modetax, 
'sell');
 
  206  $action = 
"tvaclient";
 
  208  $parameters[
"mode"] = $modetax;
 
  209  $parameters[
"start"] = $date_start;
 
  210  $parameters[
"end"] = $date_end;
 
  211  $parameters[
"direction"] = 
'sell';
 
  212  $parameters[
"type"] = 
'localtax'.$local;
 
  215  $hookmanager->initHooks(array(
'externalbalance'));
 
  216  $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters, 
$object, $action); 
 
  218  if (is_array($coll_list)) {
 
  222    foreach ($coll_list as $coll) {
 
  223      if (($min == 0 || ($min > 0 && $coll->amount > $min)) && ($local == 1 ? $coll->localtax1 : $coll->localtax2) != 0) {
 
  224        $intra = str_replace($find, $replace, $coll->tva_intra);
 
  226          if ($coll->assuj == 
'1') {
 
  227            $intra = $langs->trans(
'Unknown');
 
  232        print 
'<tr class="oddeven">';
 
  233        print 
'<td class="nowrap">'.$i.
"</td>";
 
  234        $company_static->id = $coll->socid;
 
  235        $company_static->name = $coll->name;
 
  236        print 
'<td class="nowrap">'.$company_static->getNomUrl(1).
'</td>';
 
  237        $find = array(
' ', 
'.');
 
  238        $replace = array(
'', 
'');
 
  239        print 
'<td class="nowrap">'.$intra.
'</td>';
 
  240        print 
'<td class="nowrap right">'.price($coll->amount).
'</td>';
 
  241        print 
'<td class="nowrap right">'.price($local == 1 ? $coll->localtax1 : $coll->localtax2).
'</td>';
 
  242        $totalamount = $totalamount + $coll->amount;
 
  243        $total = $total + ($local == 1 ? $coll->localtax1 : $coll->localtax2);
 
  248    $x_coll_sum = $total;
 
  250    print 
'<tr class="liste_total"><td class="right" colspan="3">'.$langs->trans(
"Total").
':</td>';
 
  251    print 
'<td class="nowrap right">'.price($totalamount).
'</td>';
 
  252    print 
'<td class="nowrap right">'.price($total).
'</td>';
 
  255    $langs->load(
"errors");
 
  256    if ($coll_list == -1) {
 
  257      print 
'<tr><td colspan="5">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
 
  258    } elseif ($coll_list == -2) {
 
  259      print 
'<tr><td colspan="5">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
 
  261      print 
'<tr><td colspan="5">'.$langs->trans(
"Error").
'</td></tr>';
 
  267if ($calc == 0 || $calc == 1) {
 
  268  print 
'<tr class="liste_titre">';
 
  269  print 
'<td class="left">'.$langs->trans(
"Num").
"</td>";
 
  270  print 
'<td class="left">'.$langs->trans(
"Supplier").
"</td>";
 
  271  print 
'<td>'.$langs->transcountry(
"ProfId1", $mysoc->country_code).
'</td>';
 
  272  print 
'<td class="right">'.$langs->trans(
"TotalHT").
'</td>';
 
  273  print 
'<td class="right">'.$vatsup.
'</td>';
 
  276  $company_static = 
new Societe($db);
 
  278  $coll_list = 
tax_by_thirdparty(
'localtax'.$local, $db, 0, $date_start, $date_end, $modetax, 
'buy');
 
  279  $parameters[
"direction"] = 
'buy';
 
  280  $parameters[
"type"] = 
'localtax'.$local;
 
  282  $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters, 
$object, $action); 
 
  283  if (is_array($coll_list)) {
 
  287    foreach ($coll_list as $coll) {
 
  288      if (($min == 0 || ($min > 0 && $coll->amount > $min)) && ($local == 1 ? $coll->localtax1 : $coll->localtax2) != 0) {
 
  289        $intra = str_replace($find, $replace, $coll->tva_intra);
 
  291          if ($coll->assuj == 
'1') {
 
  292            $intra = $langs->trans(
'Unknown');
 
  297        print 
'<tr class="oddeven">';
 
  298        print 
'<td class="nowrap">'.$i.
"</td>";
 
  299        $company_static->id = $coll->socid;
 
  300        $company_static->name = $coll->name;
 
  301        print 
'<td class="nowrap">'.$company_static->getNomUrl(1).
'</td>';
 
  302        $find = array(
' ', 
'.');
 
  303        $replace = array(
'', 
'');
 
  304        print 
'<td class="nowrap">'.$intra.
"</td>";
 
  305        print 
'<td class="nowrap right">'.price($coll->amount).
'</td>';
 
  306        print 
'<td class="nowrap right">'.price($local == 1 ? $coll->localtax1 : $coll->localtax2).
'</td>';
 
  307        $totalamount = $totalamount + $coll->amount;
 
  308        $total = $total + ($local == 1 ? $coll->localtax1 : $coll->localtax2);
 
  313    $x_paye_sum = $total;
 
  315    print 
'<tr class="liste_total"><td class="right" colspan="3">'.$langs->trans(
"Total").
':</td>';
 
  316    print 
'<td class="nowrap right">'.price($totalamount).
'</td>';
 
  317    print 
'<td class="nowrap right">'.price($total).
'</td>';
 
  320    $langs->load(
"errors");
 
  321    if ($coll_list == -1) {
 
  322      print 
'<tr><td colspan="5">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
 
  323    } elseif ($coll_list == -2) {
 
  324      print 
'<tr><td colspan="5">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
 
  326      print 
'<tr><td colspan="5">'.$langs->trans(
"Error").
'</td></tr>';
 
  333  print 
'<tr><td colspan="5"></td></tr>';
 
  335  $diff = $x_coll_sum - $x_paye_sum;
 
  336  print 
'<tr class="liste_total">';
 
  337  print 
'<td class="liste_total" colspan="4">'.$langs->trans(
"TotalToPay").($q ? 
', '.$langs->trans(
"Quadri").
' '.$q : 
'').
'</td>';
 
  338  print 
'<td class="liste_total nowrap right"><b>'.price(
price2num($diff, 
'MT')).
"</b></td>\n";
 
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
 
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
 
Class to manage third parties objects (customers, suppliers, prospects...)
 
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
 
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
 
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
 
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
 
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
 
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
 
dol_now($mode='auto')
Return date for now.
 
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
 
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
 
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
 
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
 
report_header($reportname, $notused, $period, $periodlink, $description, $builddate, $exportlink='', $moreparam=array(), $calcmode='', $varlink='')
Show header of a report.
 
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
 
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
 
tax_by_thirdparty($type, $db, $y, $date_start, $date_end, $modetax, $direction, $m=0, $q=0)
Look for collectable VAT clients in the chosen year (and month)