26 require
'../../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
28 require_once DOL_DOCUMENT_ROOT.
'/core/lib/tax.lib.php';
29 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
30 require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
31 require_once DOL_DOCUMENT_ROOT.
'/compta/localtax/class/localtax.class.php';
34 $langs->loadLangs(array(
"other",
"compta",
"banks",
"bills",
"companies",
"product",
"trips",
"admin"));
36 $local =
GETPOST(
'localTaxType',
'int');
41 $year_current = strftime(
"%Y",
dol_now());
42 $year_start = $year_current;
44 $year_current = $year;
50 if (empty($date_start) || empty($date_end)) {
57 $date_start =
dol_get_first_day($year_start, empty($conf->global->SOCIETE_FISCAL_MONTH_START) ? 1 : $conf->global->SOCIETE_FISCAL_MONTH_START,
false);
58 if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) {
60 } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) {
62 } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) {
93 $modetax = $conf->global->TAX_MODE;
95 $modetax =
GETPOST(
"modetax",
'int');
97 if (empty($modetax)) {
102 $socid =
GETPOST(
'socid',
'int');
104 $socid = $user->socid;
120 $company_static =
new Societe($db);
122 $morequerystring =
'';
123 $listofparams = array(
'date_startmonth',
'date_startyear',
'date_startday',
'date_endmonth',
'date_endyear',
'date_endday');
124 foreach ($listofparams as $param) {
126 $morequerystring .= ($morequerystring ?
'&' :
'').$param.
'='.
GETPOST($param);
130 llxHeader(
'',
'',
'',
'', 0, 0,
'',
'', $morequerystring);
133 $name = $langs->transcountry($local == 1 ?
"LT1ReportByCustomers" :
"LT2ReportByCustomers", $mysoc->country_code);
135 $fsearch =
'<!-- hidden fields for form -->';
136 $fsearch .=
'<input type="hidden" name="token" value="'.newToken().
'">';
137 $fsearch .=
'<input type="hidden" name="modetax" value="'.$modetax.
'">';
138 $fsearch .=
'<input type="hidden" name="localTaxType" value="'.$local.
'">';
139 $fsearch .= $langs->trans(
"SalesTurnoverMinimum").
': ';
140 $fsearch .=
'<input type="text" name="min" id="min" value="'.$min.
'" size="6">';
142 $calc = $conf->global->MAIN_INFO_LOCALTAX_CALC.$local;
144 if ($calc == 0 || $calc == 1) {
145 $calcmode = $calc == 0 ? $langs->trans(
"CalcModeLT".$local) : $langs->trans(
"CalcModeLT".$local.
"Rec");
146 $calcmode .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
147 $period =
$form->selectDate($date_start,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.
$form->selectDate($date_end,
'date_end', 0, 0, 0,
'', 1, 0);
148 if (!empty($conf->global->MAIN_MODULE_COMPTABILITE)) {
149 $description .=
'<br>'.$langs->trans(
"WarningDepositsNotIncluded");
151 $description .= $fsearch;
152 $description .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
155 $elementcust = $langs->trans(
"CustomersInvoices");
156 $productcust = $langs->trans(
"Description");
157 $amountcust = $langs->trans(
"AmountHT");
158 $elementsup = $langs->trans(
"SuppliersInvoices");
159 $productsup = $langs->trans(
"Description");
160 $amountsup = $langs->trans(
"AmountHT");
163 $calcmode = $langs->trans(
"CalcModeLT2Debt");
164 $calcmode .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
165 $period =
$form->selectDate($date_start,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.
$form->selectDate($date_end,
'date_end', 0, 0, 0,
'', 1, 0);
166 if (!empty($conf->global->MAIN_MODULE_COMPTABILITE)) {
167 $description .=
'<br>'.$langs->trans(
"WarningDepositsNotIncluded");
169 $description .= $fsearch;
170 $description .=
'<span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRulesLT", DOL_URL_ROOT.
'/admin/company.php').
')</span>';
173 $elementcust = $langs->trans(
"CustomersInvoices");
174 $productcust = $langs->trans(
"Description");
175 $amountcust = $langs->trans(
"AmountHT");
176 $elementsup = $langs->trans(
"SuppliersInvoices");
177 $productsup = $langs->trans(
"Description");
178 $amountsup = $langs->trans(
"AmountHT");
180 report_header($name,
'', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode);
183 $vatcust = $langs->transcountry($local == 1 ?
"LT1" :
"LT2", $mysoc->country_code);
184 $vatsup = $langs->transcountry($local == 1 ?
"LT1" :
"LT2", $mysoc->country_code);
186 print
'<div class="div-table-responsive">';
187 print
'<table class="noborder centpercent">';
190 if ($calc == 0 || $calc == 2) {
191 print
'<tr class="liste_titre">';
192 print
'<td class="left">'.$langs->trans(
"Num").
'</td>';
193 print
'<td class="left">'.$langs->trans(
"Customer").
'</td>';
194 print
'<td>'.$langs->transcountry(
"ProfId1", $mysoc->country_code).
'</td>';
195 print
'<td class="right">'.$langs->trans(
"TotalHT").
'</td>';
196 print
'<td class="right">'.$vatcust.
'</td>';
199 $coll_list =
tax_by_thirdparty(
'localtax'.$local, $db, 0, $date_start, $date_end, $modetax,
'sell');
201 $action =
"tvaclient";
202 $object = &$coll_list;
203 $parameters[
"mode"] = $modetax;
204 $parameters[
"start"] = $date_start;
205 $parameters[
"end"] = $date_end;
206 $parameters[
"direction"] =
'sell';
207 $parameters[
"type"] =
'localtax'.$local;
210 $hookmanager->initHooks(array(
'externalbalance'));
211 $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters, $object, $action);
213 if (is_array($coll_list)) {
217 foreach ($coll_list as $coll) {
218 if (($min == 0 || ($min > 0 && $coll->amount > $min)) && ($local == 1 ? $coll->localtax1 : $coll->localtax2) != 0) {
219 $intra = str_replace($find, $replace, $coll->tva_intra);
221 if ($coll->assuj ==
'1') {
222 $intra = $langs->trans(
'Unknown');
227 print
'<tr class="oddeven">';
228 print
'<td class="nowrap">'.$i.
"</td>";
229 $company_static->id = $coll->socid;
230 $company_static->name = $coll->name;
231 print
'<td class="nowrap">'.$company_static->getNomUrl(1).
'</td>';
232 $find = array(
' ',
'.');
233 $replace = array(
'',
'');
234 print
'<td class="nowrap">'.$intra.
'</td>';
235 print
'<td class="nowrap right">'.price($coll->amount).
'</td>';
236 print
'<td class="nowrap right">'.price($local == 1 ? $coll->localtax1 : $coll->localtax2).
'</td>';
237 $totalamount = $totalamount + $coll->amount;
238 $total = $total + ($local == 1 ? $coll->localtax1 : $coll->localtax2);
243 $x_coll_sum = $total;
245 print
'<tr class="liste_total"><td class="right" colspan="3">'.$langs->trans(
"Total").
':</td>';
246 print
'<td class="nowrap right">'.price($totalamount).
'</td>';
247 print
'<td class="nowrap right">'.price($total).
'</td>';
250 $langs->load(
"errors");
251 if ($coll_list == -1) {
252 print
'<tr><td colspan="5">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
253 } elseif ($coll_list == -2) {
254 print
'<tr><td colspan="5">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
256 print
'<tr><td colspan="5">'.$langs->trans(
"Error").
'</td></tr>';
262 if ($calc == 0 || $calc == 1) {
263 print
'<tr class="liste_titre">';
264 print
'<td class="left">'.$langs->trans(
"Num").
"</td>";
265 print
'<td class="left">'.$langs->trans(
"Supplier").
"</td>";
266 print
'<td>'.$langs->transcountry(
"ProfId1", $mysoc->country_code).
'</td>';
267 print
'<td class="right">'.$langs->trans(
"TotalHT").
'</td>';
268 print
'<td class="right">'.$vatsup.
'</td>';
271 $company_static =
new Societe($db);
273 $coll_list =
tax_by_thirdparty(
'localtax'.$local, $db, 0, $date_start, $date_end, $modetax,
'buy');
274 $parameters[
"direction"] =
'buy';
275 $parameters[
"type"] =
'localtax'.$local;
277 $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters, $object, $action);
278 if (is_array($coll_list)) {
282 foreach ($coll_list as $coll) {
283 if (($min == 0 || ($min > 0 && $coll->amount > $min)) && ($local == 1 ? $coll->localtax1 : $coll->localtax2) != 0) {
284 $intra = str_replace($find, $replace, $coll->tva_intra);
286 if ($coll->assuj ==
'1') {
287 $intra = $langs->trans(
'Unknown');
292 print
'<tr class="oddeven">';
293 print
'<td class="nowrap">'.$i.
"</td>";
294 $company_static->id = $coll->socid;
295 $company_static->name = $coll->name;
296 print
'<td class="nowrap">'.$company_static->getNomUrl(1).
'</td>';
297 $find = array(
' ',
'.');
298 $replace = array(
'',
'');
299 print
'<td class="nowrap">'.$intra.
"</td>";
300 print
'<td class="nowrap right">'.price($coll->amount).
'</td>';
301 print
'<td class="nowrap right">'.price($local == 1 ? $coll->localtax1 : $coll->localtax2).
'</td>';
302 $totalamount = $totalamount + $coll->amount;
303 $total = $total + ($local == 1 ? $coll->localtax1 : $coll->localtax2);
308 $x_paye_sum = $total;
310 print
'<tr class="liste_total"><td class="right" colspan="3">'.$langs->trans(
"Total").
':</td>';
311 print
'<td class="nowrap right">'.price($totalamount).
'</td>';
312 print
'<td class="nowrap right">'.price($total).
'</td>';
315 $langs->load(
"errors");
316 if ($coll_list == -1) {
317 print
'<tr><td colspan="5">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
318 } elseif ($coll_list == -2) {
319 print
'<tr><td colspan="5">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
321 print
'<tr><td colspan="5">'.$langs->trans(
"Error").
'</td></tr>';
328 print
'<tr><td colspan="5"></td></tr>';
330 $diff = $x_coll_sum - $x_paye_sum;
331 print
'<tr class="liste_total">';
332 print
'<td class="liste_total" colspan="4">'.$langs->trans(
"TotalToPay").($q ?
', '.$langs->trans(
"Quadri").
' '.$q :
'').
'</td>';
333 print
'<td class="liste_total nowrap right"><b>'.price(
price2num($diff,
'MT')).
"</b></td>\n";