28require
'../../main.inc.php';
29require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
30require_once DOL_DOCUMENT_ROOT.
'/core/lib/tax.lib.php';
31require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
32require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/compta/localtax/class/localtax.class.php';
45$langs->loadLangs(array(
"other",
"compta",
"banks",
"bills",
"companies",
"product",
"trips",
"admin"));
53 $year_start = $year_current;
55 $year_current = $year;
62if (empty($date_start) || empty($date_end)) {
106if (GETPOSTISSET(
"modetax")) {
109if (empty($modetax)) {
116 $socid = $user->socid;
120$hookmanager->initHooks([
'customerlocaltaxlist']);
130$calcmode =
"Unknown";
138$form =
new Form($db);
139$company_static =
new Societe($db);
141$morequerystring =
'';
142$listofparams = array(
'date_startmonth',
'date_startyear',
'date_startday',
'date_endmonth',
'date_endyear',
'date_endday');
143foreach ($listofparams as $param) {
145 $morequerystring .= ($morequerystring ?
'&' :
'').$param.
'='.
GETPOST($param);
149llxHeader(
'',
'',
'',
'', 0, 0,
'',
'', $morequerystring);
152$name = $langs->transcountry($local == 1 ?
"LT1ReportByCustomers" :
"LT2ReportByCustomers", $mysoc->country_code);
154$fsearch =
'<!-- hidden fields for form -->';
155$fsearch .=
'<input type="hidden" name="token" value="'.newToken().
'">';
156$fsearch .=
'<input type="hidden" name="modetax" value="'.$modetax.
'">';
157$fsearch .=
'<input type="hidden" name="localTaxType" value="'.$local.
'">';
158$fsearch .= $langs->trans(
"SalesTurnoverMinimum").
': ';
159$fsearch .=
'<input type="text" name="min" id="min" value="'.$min.
'" size="6">';
164if ($calc == 0 || $calc == 1) {
165 $calcmode = $calc == 0 ? $langs->trans(
"CalcModeLT".$local) : $langs->trans(
"CalcModeLT".$local.
"Rec");
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");
183 $calcmode = $langs->trans(
"CalcModeLT2Debt");
184 $calcmode .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
185 $period = $form->selectDate($date_start,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.$form->selectDate($date_end,
'date_end', 0, 0, 0,
'', 1, 0);
186 if (isModEnabled(
'comptabilite')) {
187 $description .=
'<br>'.$langs->trans(
"WarningDepositsNotIncluded");
189 $description .= $fsearch;
190 $description .=
'<span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
193 $elementcust = $langs->trans(
"CustomersInvoices");
194 $productcust = $langs->trans(
"Description");
195 $amountcust = $langs->trans(
"AmountHT");
196 $elementsup = $langs->trans(
"SuppliersInvoices");
197 $productsup = $langs->trans(
"Description");
198 $amountsup = $langs->trans(
"AmountHT");
204report_header($name,
'', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode);
206$vatcust = $langs->transcountry($local == 1 ?
"LT1" :
"LT2", $mysoc->country_code);
207$vatsup = $langs->transcountry($local == 1 ?
"LT1" :
"LT2", $mysoc->country_code);
209print
'<div class="div-table-responsive">';
210print
'<table class="liste noborder centpercent">';
216if ($calc == 0 || $calc == 2) {
217 print
'<tr class="liste_titre">';
218 print
'<td class="left">'.$langs->trans(
"Num").
'</td>';
219 print
'<td class="left">'.$langs->trans(
"Customer").
'</td>';
220 print
'<td>'.$langs->transcountry(
"ProfId1", $mysoc->country_code).
'</td>';
221 print
'<td class="right">'.$langs->trans(
"TotalHT").
'</td>';
222 print
'<td class="right">'.$vatcust.
'</td>';
225 $coll_list =
tax_by_thirdparty(
'localtax'.$local, $db, 0, $date_start, $date_end, $modetax,
'sell');
227 $action =
"tvaclient";
229 $parameters[
"mode"] = $modetax;
230 $parameters[
"start"] = $date_start;
231 $parameters[
"end"] = $date_end;
232 $parameters[
"direction"] =
'sell';
233 $parameters[
"type"] =
'localtax'.$local;
236 $hookmanager->initHooks(array(
'externalbalance'));
237 $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters,
$object, $action);
239 if (is_array($coll_list)) {
243 foreach ($coll_list as $coll_obj) {
244 if (($min == 0 || ($min > 0 && $coll_obj->amount > $min)) && ($local == 1 ? $coll_obj->localtax1 : $coll_obj->localtax2) != 0) {
245 $intra = str_replace($find, $replace, $coll_obj->tva_intra);
247 if ($coll_obj->assuj ==
'1') {
248 $intra = $langs->trans(
'Unknown');
253 print
'<tr class="oddeven">';
254 print
'<td class="nowrap">'.$i.
"</td>";
255 $company_static->id = $coll_obj->socid;
256 $company_static->name = $coll_obj->name;
257 print
'<td class="nowrap">'.$company_static->getNomUrl(1).
'</td>';
258 $find = array(
' ',
'.');
259 $replace = array(
'',
'');
260 print
'<td class="nowrap">'.$intra.
'</td>';
261 print
'<td class="nowrap right">'.price($coll_obj->amount).
'</td>';
262 print
'<td class="nowrap right">'.price($local == 1 ? $coll_obj->localtax1 : $coll_obj->localtax2).
'</td>';
263 $totalamount += $coll_obj->amount;
264 $total += ($local == 1 ? $coll_obj->localtax1 : $coll_obj->localtax2);
269 $x_coll_sum = $total;
271 print
'<tr class="liste_total"><td class="right" colspan="3">'.$langs->trans(
"Total").
':</td>';
272 print
'<td class="nowrap right">'.price($totalamount).
'</td>';
273 print
'<td class="nowrap right">'.price($total).
'</td>';
276 $langs->load(
"errors");
277 if ($coll_list == -1) {
278 print
'<tr><td colspan="5">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
279 } elseif ($coll_list == -2) {
280 print
'<tr><td colspan="5">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
282 print
'<tr><td colspan="5">'.$langs->trans(
"Error").
'</td></tr>';
288if ($calc == 0 || $calc == 1) {
289 print
'<tr class="liste_titre">';
290 print
'<td class="left">'.$langs->trans(
"Num").
"</td>";
291 print
'<td class="left">'.$langs->trans(
"Supplier").
"</td>";
292 print
'<td>'.$langs->transcountry(
"ProfId1", $mysoc->country_code).
'</td>';
293 print
'<td class="right">'.$langs->trans(
"TotalHT").
'</td>';
294 print
'<td class="right">'.$vatsup.
'</td>';
297 $company_static =
new Societe($db);
299 $coll_list =
tax_by_thirdparty(
'localtax'.$local, $db, 0, $date_start, $date_end, $modetax,
'buy');
300 $parameters[
"direction"] =
'buy';
301 $parameters[
"type"] =
'localtax'.$local;
303 $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters,
$object, $action);
304 if (is_array($coll_list)) {
308 foreach ($coll_list as $coll_obj) {
309 if (($min == 0 || ($min > 0 && $coll_obj->amount > $min)) && ($local == 1 ? $coll_obj->localtax1 : $coll_obj->localtax2) != 0) {
310 $intra = str_replace($find, $replace, $coll_obj->tva_intra);
312 if ($coll_obj->assuj ==
'1') {
313 $intra = $langs->trans(
'Unknown');
318 print
'<tr class="oddeven">';
319 print
'<td class="nowrap">'.$i.
"</td>";
320 $company_static->id = $coll_obj->socid;
321 $company_static->name = $coll_obj->name;
322 print
'<td class="nowrap">'.$company_static->getNomUrl(1).
'</td>';
323 $find = array(
' ',
'.');
324 $replace = array(
'',
'');
325 print
'<td class="nowrap">'.$intra.
"</td>";
326 print
'<td class="nowrap right">'.price($coll_obj->amount).
'</td>';
327 print
'<td class="nowrap right">'.price($local == 1 ? $coll_obj->localtax1 : $coll_obj->localtax2).
'</td>';
328 $totalamount += $coll_obj->amount;
329 $total += ($local == 1 ? $coll_obj->localtax1 : $coll_obj->localtax2);
334 $x_paye_sum = $total;
336 print
'<tr class="liste_total"><td class="right" colspan="3">'.$langs->trans(
"Total").
':</td>';
337 print
'<td class="nowrap right">'.price($totalamount).
'</td>';
338 print
'<td class="nowrap right">'.price($total).
'</td>';
341 $langs->load(
"errors");
342 if ($coll_list == -1) {
343 print
'<tr><td colspan="5">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
344 } elseif ($coll_list == -2) {
345 print
'<tr><td colspan="5">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
347 print
'<tr><td colspan="5">'.$langs->trans(
"Error").
'</td></tr>';
354 print
'<tr><td colspan="5"></td></tr>';
356 $diff = $x_coll_sum - $x_paye_sum;
357 print
'<tr class="liste_total">';
358 print
'<td class="liste_total" colspan="4">'.$langs->trans(
"TotalToPay").($q ?
', '.$langs->trans(
"Quadri").
' '.$q :
'').
'</td>';
359 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($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
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 a Dolibarr global constant string value.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
report_header($reportname, $notused, $period, $periodlink, $description, $builddate, $exportlink='', $moreparam=array(), $calcmode='', $varlink='')
Show header of a report.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
tax_by_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)