31require
'../../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/tax.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/compta/localtax/class/localtax.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/fourn/class/paiementfourn.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/paymentexpensereport.class.php';
55$langs->loadLangs(array(
"other",
"compta",
"banks",
"bills",
"companies",
"product",
"trips",
"admin"));
57include DOL_DOCUMENT_ROOT.
'/compta/tva/initdatesforvat.inc.php';
59@phan-var-force int $date_start
60@phan-var-force int $date_end
61@phan-var-force string $date_start_month
62@phan-var-force string $date_start_year
63@phan-var-force string $date_start_day
64@phan-var-force string $date_end_month
65@phan-var-force string $date_end_year
66@phan-var-force string $date_end_day
67@phan-var-force int $year_current
78if (GETPOSTISSET(
"modetax")) {
88 $socid = $user->socid;
99$company_static =
new Societe($db);
100$invoice_customer =
new Facture($db);
103$product_static =
new Product($db);
107$user_static =
new User($db);
109$morequerystring =
'';
110$listofparams = array(
'date_startmonth',
'date_startyear',
'date_startday',
'date_endmonth',
'date_endyear',
'date_endday');
111foreach ($listofparams as $param) {
113 $morequerystring .= ($morequerystring ?
'&' :
'').$param.
'='.
GETPOST($param);
117$special_report =
false;
118if (isset($_REQUEST[
'extra_report']) && $_REQUEST[
'extra_report'] == 1) {
119 $special_report =
true;
122llxHeader(
'', $langs->trans(
"VATReport"),
'',
'', 0, 0,
'',
'', $morequerystring);
124$fsearch =
'<!-- hidden fields for form -->';
125$fsearch .=
'<input type="hidden" name="token" value="'.newToken().
'">';
126$fsearch .=
'<input type="hidden" name="modetax" value="'.$modetax.
'">';
127$fsearch .= $langs->trans(
"SalesTurnoverMinimum").
': ';
128$fsearch .=
'<input type="text" name="min" id="min" value="'.$min.
'" size="6">';
131$name = $langs->trans(
"VATReportByThirdParties");
134 $calcmode = $langs->trans(
'OptionVATDefault');
137 $calcmode = $langs->trans(
'OptionVATDebitOption');
140 $calcmode = $langs->trans(
'OptionPaymentForProductAndServices');
142$calcmode .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRules", DOL_URL_ROOT.
'/admin/taxes.php').
')</span>';
144$period = $form->selectDate($date_start,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.$form->selectDate($date_end,
'date_end', 0, 0, 0,
'', 1, 0);
145$prevyear = $date_start_year;
148if ($prevquarter > 1) {
154$nextyear = $date_start_year;
156if ($nextquarter < 4) {
165 $description = $langs->trans(
"RulesVATDueProducts");
168 $description .= $langs->trans(
"RulesVATInProducts");
171 $description .=
'<br>'.$langs->trans(
"RulesVATDueServices");
174 $description .=
'<br>'.$langs->trans(
"RulesVATInServices");
177 $description .=
'<br>'.$langs->trans(
"DepositsAreNotIncluded");
180 $description .= $langs->trans(
"SupplierDepositsAreNotIncluded");
182if (isModEnabled(
'accounting')) {
183 $description .=
'<br>'.$langs->trans(
"ThisIsAnEstimatedValue");
187$description .= ($description ?
'<br>' :
'').$fsearch;
189 $description .=
'<br>';
190 $description .=
'<input type="radio" name="extra_report" value="0" '.($special_report ?
'' :
'checked="checked"').
'> ';
191 $description .= $langs->trans(
'SimpleReport');
192 $description .=
'</input>';
193 $description .=
'<br>';
194 $description .=
'<input type="radio" name="extra_report" value="1" '.($special_report ?
'checked="checked"' :
'').
'> ';
195 $description .= $langs->trans(
'AddExtraReport');
196 $description .=
'</input>';
197 $description .=
'<br>';
200$elementcust = $langs->trans(
"CustomersInvoices");
201$productcust = $langs->trans(
"Description");
202$namerate = $langs->trans(
"VATRate");
203$amountcust = $langs->trans(
"AmountHT");
204if ($mysoc->tva_assuj) {
205 $vatcust =
' ('.$langs->trans(
"StatusToPay").
')';
207$elementsup = $langs->trans(
"SuppliersInvoices");
208$productsup = $langs->trans(
"Description");
209$amountsup = $langs->trans(
"AmountHT");
210if ($mysoc->tva_assuj) {
211 $vatsup =
' ('.$langs->trans(
"ToGetBack").
')';
216report_header($name,
'', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode);
218$vatcust = $langs->trans(
"VATReceived");
219$vatsup = $langs->trans(
"VATPaid");
223print
'<div class="div-table-responsive">';
224print
"<table class=\"noborder\" width=\"100%\">";
236$x_coll =
tax_by_thirdparty(
'vat', $db, 0, $date_start, $date_end, $modetax,
'sell');
237$x_paye =
tax_by_thirdparty(
'vat', $db, 0, $date_start, $date_end, $modetax,
'buy');
239if (!is_array($x_coll) || !is_array($x_paye)) {
240 $langs->load(
"errors");
242 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
243 } elseif ($x_coll == -2) {
244 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
246 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"Error").
'</td></tr>';
251 foreach (array_keys($x_coll) as $my_coll_thirdpartyid) {
252 $x_both[$my_coll_thirdpartyid] = array(
256 $x_both[$my_coll_thirdpartyid][
'coll'][
'totalht'] = $x_coll[$my_coll_thirdpartyid][
'totalht'];
257 $x_both[$my_coll_thirdpartyid][
'coll'][
'vat'] = $x_coll[$my_coll_thirdpartyid][
'vat'];
258 $x_both[$my_coll_thirdpartyid][
'paye'][
'totalht'] = 0;
259 $x_both[$my_coll_thirdpartyid][
'paye'][
'vat'] = 0;
260 $x_both[$my_coll_thirdpartyid][
'coll'][
'links'] =
'';
261 $x_both[$my_coll_thirdpartyid][
'coll'][
'detail'] = array();
262 foreach ($x_coll[$my_coll_thirdpartyid][
'facid'] as
$id => $dummy) {
263 $invoice_customer->id = $x_coll[$my_coll_thirdpartyid][
'facid'][
$id];
264 $invoice_customer->ref = $x_coll[$my_coll_thirdpartyid][
'facnum'][
$id];
265 $invoice_customer->type = $x_coll[$my_coll_thirdpartyid][
'type'][
$id];
268 $company_static->id = $x_coll[$my_coll_thirdpartyid][
'company_id'][
$id];
269 $company_static->name = $x_coll[$my_coll_thirdpartyid][
'company_name'][
$id];
270 $company_static->name_alias = $x_coll[$my_coll_thirdpartyid][
'company_alias'][
$id];
271 $company_static->email = $x_coll[$my_coll_thirdpartyid][
'company_email'][
$id];
272 $company_static->tva_intra = isset($x_coll[$my_coll_thirdpartyid][
'tva_intra'][
$id]) ? $x_coll[$my_coll_thirdpartyid][
'tva_intra'][
$id] :
'0';
273 $company_static->client = $x_coll[$my_coll_thirdpartyid][
'company_client'][
$id];
274 $company_static->fournisseur = $x_coll[$my_coll_thirdpartyid][
'company_fournisseur'][
$id];
275 $company_static->status = $x_coll[$my_coll_thirdpartyid][
'company_status'][
$id];
276 $company_static->code_client = $x_coll[$my_coll_thirdpartyid][
'company_customer_code'][
$id];
277 $company_static->code_compta_client = $x_coll[$my_coll_thirdpartyid][
'company_customer_accounting_code'][
$id];
278 $company_static->code_fournisseur = $x_coll[$my_coll_thirdpartyid][
'company_supplier_code'][
$id];
279 $company_static->code_compta_fournisseur = $x_coll[$my_coll_thirdpartyid][
'company_supplier_accounting_code'][
$id];
281 $x_both[$my_coll_thirdpartyid][
'coll'][
'detail'][] = array(
282 'id' => $x_coll[$my_coll_thirdpartyid][
'facid'][
$id],
283 'descr' => $x_coll[$my_coll_thirdpartyid][
'descr'][
$id],
285 'pid' => $x_coll[$my_coll_thirdpartyid][
'pid'][
$id],
286 'pref' => isset($x_coll[$my_coll_thirdpartyid][
'pref'][
$id]) ? $x_coll[$my_coll_thirdpartyid][
'pref'][
$id] :
'',
287 'ptype' => $x_coll[$my_coll_thirdpartyid][
'ptype'][
$id],
288 'pstatus' => isset($x_paye[$my_coll_thirdpartyid][
'pstatus'][
$id]) ? $x_paye[$my_coll_thirdpartyid][
'pstatus'][
$id] :
'',
289 'pstatusbuy' => isset($x_paye[$my_coll_thirdpartyid][
'pstatusbuy'][
$id]) ? $x_paye[$my_coll_thirdpartyid][
'pstatusbuy'][
$id] :
'',
291 'payment_id' => $x_coll[$my_coll_thirdpartyid][
'payment_id'][
$id],
292 'payment_ref' => isset($x_coll[$my_coll_thirdpartyid][
'payment_ref'][
$id]) ? $x_coll[$my_coll_thirdpartyid][
'payment_ref'][
$id] :
'',
293 'payment_amount' => $x_coll[$my_coll_thirdpartyid][
'payment_amount'][
$id],
294 'ftotal_ttc' => $x_coll[$my_coll_thirdpartyid][
'ftotal_ttc'][
$id],
295 'dtotal_ttc' => $x_coll[$my_coll_thirdpartyid][
'dtotal_ttc'][
$id],
296 'dtype' => $x_coll[$my_coll_thirdpartyid][
'dtype'][
$id],
297 'drate' => $x_coll[$my_coll_thirdpartyid][
'drate'][
$id],
298 'datef' => $x_coll[$my_coll_thirdpartyid][
'datef'][
$id],
299 'datep' => $x_coll[$my_coll_thirdpartyid][
'datep'][
$id],
301 'company_link' => $company_static->getNomUrl(1,
'', 20),
303 'ddate_start' => $x_coll[$my_coll_thirdpartyid][
'ddate_start'][
$id],
304 'ddate_end' => $x_coll[$my_coll_thirdpartyid][
'ddate_end'][
$id],
305 'totalht' => $x_coll[$my_coll_thirdpartyid][
'totalht_list'][
$id],
306 'vat' => $x_coll[$my_coll_thirdpartyid][
'vat_list'][
$id],
307 'link' => $invoice_customer->getNomUrl(1,
'', 12)
312 foreach (array_keys($x_paye) as $my_paye_thirdpartyid) {
313 $x_both[$my_paye_thirdpartyid][
'paye'][
'totalht'] = $x_paye[$my_paye_thirdpartyid][
'totalht'];
314 $x_both[$my_paye_thirdpartyid][
'paye'][
'vat'] = $x_paye[$my_paye_thirdpartyid][
'vat'];
315 if (!isset($x_both[$my_paye_thirdpartyid][
'coll'][
'totalht'])) {
316 $x_both[$my_paye_thirdpartyid][
'coll'][
'totalht'] = 0;
317 $x_both[$my_paye_thirdpartyid][
'coll'][
'vat'] = 0;
319 $x_both[$my_paye_thirdpartyid][
'paye'][
'links'] =
'';
320 $x_both[$my_paye_thirdpartyid][
'paye'][
'detail'] = array();
322 foreach ($x_paye[$my_paye_thirdpartyid][
'facid'] as
$id => $dummy) {
324 if ($x_paye[$my_paye_thirdpartyid][
'ptype'][
$id] ==
'ExpenseReportPayment') {
325 $expensereport->id = $x_paye[$my_paye_thirdpartyid][
'facid'][
$id];
326 $expensereport->ref = $x_paye[$my_paye_thirdpartyid][
'facnum'][
$id];
327 $expensereport->type = $x_paye[$my_paye_thirdpartyid][
'type'][
$id];
329 $x_both[$my_paye_thirdpartyid][
'paye'][
'detail'][] = array(
330 'id' => $x_paye[$my_paye_thirdpartyid][
'facid'][
$id],
331 'descr' => $x_paye[$my_paye_thirdpartyid][
'descr'][
$id],
333 'pid' => $x_paye[$my_paye_thirdpartyid][
'pid'][
$id],
334 'pref' => $x_paye[$my_paye_thirdpartyid][
'pref'][
$id],
335 'ptype' => $x_paye[$my_paye_thirdpartyid][
'ptype'][
$id],
336 'pstatus' => $x_paye[$my_paye_thirdpartyid][
'pstatus'][
$id],
337 'pstatusbuy' => $x_paye[$my_paye_thirdpartyid][
'pstatusbuy'][
$id],
339 'payment_id' => $x_paye[$my_paye_thirdpartyid][
'payment_id'][
$id],
340 'payment_ref' => $x_paye[$my_paye_thirdpartyid][
'payment_ref'][
$id],
341 'payment_amount' => $x_paye[$my_paye_thirdpartyid][
'payment_amount'][
$id],
342 'ftotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'ftotal_ttc'][
$id]),
343 'dtotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'dtotal_ttc'][
$id]),
344 'dtype' => $x_paye[$my_paye_thirdpartyid][
'dtype'][
$id],
345 'drate' => $x_paye[$my_paye_thirdpartyid][
'drate'][
$id],
346 'ddate_start' => $x_paye[$my_paye_thirdpartyid][
'ddate_start'][
$id],
347 'ddate_end' => $x_paye[$my_paye_thirdpartyid][
'ddate_end'][
$id],
348 'totalht' =>
price2num($x_paye[$my_paye_thirdpartyid][
'totalht_list'][
$id]),
349 'vat' => $x_paye[$my_paye_thirdpartyid][
'vat_list'][
$id],
350 'link' => $expensereport->getNomUrl(1)
353 $invoice_supplier->id = $x_paye[$my_paye_thirdpartyid][
'facid'][
$id];
354 $invoice_supplier->ref = $x_paye[$my_paye_thirdpartyid][
'facnum'][
$id];
355 $invoice_supplier->type = $x_paye[$my_paye_thirdpartyid][
'type'][
$id];
358 $company_static->id = $x_paye[$my_paye_thirdpartyid][
'company_id'][
$id];
359 $company_static->name = $x_paye[$my_paye_thirdpartyid][
'company_name'][
$id];
360 $company_static->name_alias = $x_paye[$my_paye_thirdpartyid][
'company_alias'][
$id];
361 $company_static->email = $x_paye[$my_paye_thirdpartyid][
'company_email'][
$id];
362 $company_static->tva_intra = $x_paye[$my_paye_thirdpartyid][
'tva_intra'][
$id];
363 $company_static->client = $x_paye[$my_paye_thirdpartyid][
'company_client'][
$id];
364 $company_static->fournisseur = $x_paye[$my_paye_thirdpartyid][
'company_fournisseur'][
$id];
365 $company_static->status = $x_paye[$my_paye_thirdpartyid][
'company_status'][
$id];
366 $company_static->code_client = $x_paye[$my_paye_thirdpartyid][
'company_customer_code'][
$id];
367 $company_static->code_compta_client = $x_paye[$my_paye_thirdpartyid][
'company_customer_accounting_code'][
$id];
368 $company_static->code_fournisseur = $x_paye[$my_paye_thirdpartyid][
'company_supplier_code'][
$id];
369 $company_static->code_compta_fournisseur = $x_paye[$my_paye_thirdpartyid][
'company_supplier_accounting_code'][
$id];
371 $x_both[$my_paye_thirdpartyid][
'paye'][
'detail'][] = array(
372 'id' => $x_paye[$my_paye_thirdpartyid][
'facid'][
$id],
373 'descr' => $x_paye[$my_paye_thirdpartyid][
'descr'][
$id],
375 'pid' => $x_paye[$my_paye_thirdpartyid][
'pid'][
$id],
376 'pref' => $x_paye[$my_paye_thirdpartyid][
'pref'][
$id],
377 'ptype' => $x_paye[$my_paye_thirdpartyid][
'ptype'][
$id],
378 'pstatus' => (
int) $x_paye[$my_paye_thirdpartyid][
'pstatus'][
$id],
379 'pstatusbuy' => (
int) $x_paye[$my_paye_thirdpartyid][
'pstatusbuy'][
$id],
381 'payment_id' => $x_paye[$my_paye_thirdpartyid][
'payment_id'][
$id],
382 'payment_ref' => $x_paye[$my_paye_thirdpartyid][
'payment_ref'][
$id],
383 'payment_amount' => $x_paye[$my_paye_thirdpartyid][
'payment_amount'][
$id],
384 'ftotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'ftotal_ttc'][
$id]),
385 'dtotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'dtotal_ttc'][
$id]),
386 'dtype' => $x_paye[$my_paye_thirdpartyid][
'dtype'][
$id],
387 'drate' => $x_paye[$my_paye_thirdpartyid][
'drate'][
$id],
388 'datef' => $x_paye[$my_paye_thirdpartyid][
'datef'][
$id],
389 'datep' => $x_paye[$my_paye_thirdpartyid][
'datep'][
$id],
391 'company_link' => $company_static->getNomUrl(1,
'', 20),
393 'ddate_start' => $x_paye[$my_paye_thirdpartyid][
'ddate_start'][
$id],
394 'ddate_end' => $x_paye[$my_paye_thirdpartyid][
'ddate_end'][
$id],
395 'totalht' =>
price2num($x_paye[$my_paye_thirdpartyid][
'totalht_list'][
$id]),
396 'vat' => $x_paye[$my_paye_thirdpartyid][
'vat_list'][
$id],
397 'link' => $invoice_supplier->getNomUrl(1,
'', 12)
415 print
'<tr class="liste_titre">';
416 print
'<td class="left">'.$elementcust.
'</td>';
417 print
'<td class="left">'.$langs->trans(
"DateInvoice").
'</td>';
419 print
'<td class="left">'.$langs->trans(
"DatePayment").
'</td>';
423 print
'<td class="right"></td>';
424 print
'<td class="left">'.$productcust.
'</td>';
426 print
'<td class="right">'.$amountcust.
'</td>';
427 print
'<td class="right">'.$langs->trans(
"Payment").
' ('.$langs->trans(
"PercentOfInvoice").
')</td>';
429 print
'<td class="right">'.$langs->trans(
"AmountHTVATRealReceived").
'</td>';
430 print
'<td class="right">'.$vatcust.
'</td>';
433 $action =
"tvadetail";
434 $parameters[
"mode"] = $modetax;
435 $parameters[
"start"] = $date_start;
436 $parameters[
"end"] = $date_end;
437 $parameters[
"type"] =
'vat';
439 $object = array(&$x_coll, &$x_paye, &$x_both);
441 $hookmanager->initHooks(array(
'externalbalance'));
442 $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters,
$object, $action);
444 foreach (array_keys($x_coll) as $thirdparty_id) {
445 $subtot_coll_total_ht = 0;
446 $subtot_coll_vat = 0;
448 if ($min == 0 || ($min > 0 && $x_both[$thirdparty_id][
'coll'][
'totalht'] > $min)) {
449 if (is_array($x_both[$thirdparty_id][
'coll'][
'detail'])) {
452 print
'<td class="tax_rate">';
453 if (is_numeric($thirdparty_id)) {
454 $company_static->fetch($thirdparty_id);
455 print $langs->trans(
"ThirdParty").
': '.$company_static->getNomUrl(1);
457 $tmpid = preg_replace(
'/userid_/',
'', $thirdparty_id);
458 $user_static->fetch($tmpid);
459 print $langs->trans(
"User").
': '.$user_static->getNomUrl(1);
461 print
'</td><td colspan="'.($span + 1).
'"></td>';
464 foreach ($x_both[$thirdparty_id][
'coll'][
'detail'] as $index => $fields) {
467 $type = (isset($fields[
'dtype']) ? $fields[
'dtype'] : $fields[
'ptype']);
470 if (!empty($fields[
'ddate_start'])) {
473 if (!empty($fields[
'ddate_end'])) {
477 print
'<tr class="oddeven">';
480 print
'<td class="nowrap left">'.$fields[
'link'].
'</td>';
483 print
'<td class="left">'.dol_print_date($fields[
'datef'],
'day').
'</td>';
487 print
'<td class="left">'.dol_print_date($fields[
'datep'],
'day').
'</td>';
493 print
'<td class="right">'.$fields[
'drate'].
'</td>';
496 print
'<td class="left">';
497 if ($fields[
'pid']) {
498 $product_static->id = $fields[
'pid'];
499 $product_static->ref = $fields[
'pref'];
500 $product_static->type = $fields[
'dtype'];
501 $product_static->status = (int) $fields[
'pstatus'];
502 $product_static->status_buy = (int) $fields[
'pstatusbuy'];
504 print $product_static->getNomUrl(1);
510 $text =
img_object($langs->trans(
'Service'),
'service');
512 $text =
img_object($langs->trans(
'Product'),
'product');
514 if (preg_match(
'/^\((.*)\)$/', $fields[
'descr'], $reg)) {
515 if ($reg[1] ==
'DEPOSIT') {
516 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'Deposit');
517 } elseif ($reg[1] ==
'CREDIT_NOTE') {
518 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'CreditNote');
520 $fields[
'descr'] = $langs->transnoentitiesnoconv($reg[1]);
532 print
'<td class="nowrap right"><span class="amount">';
533 print
price($fields[
'totalht']);
536 $ratiolineinvoice = ($fields[
'dtotal_ttc'] / $fields[
'ftotal_ttc']);
539 print
'</span></td>';
543 $ratiopaymentinvoice = 1;
545 print
'<td class="nowrap right">';
547 if ($fields[
'payment_amount'] && $fields[
'ftotal_ttc']) {
548 $payment_static->id = $fields[
'payment_id'];
549 $payment_static->ref = $fields[
'payment_ref'];
550 print $payment_static->getNomUrl(2,
'',
'', 0).
' ';
554 print $langs->trans(
"NA");
556 if (isset($fields[
'payment_amount']) &&
price2num($fields[
'ftotal_ttc'])) {
557 $ratiopaymentinvoice = ($fields[
'payment_amount'] / $fields[
'ftotal_ttc']);
559 print
'<span class="amount">'.price(
price2num($fields[
'payment_amount'],
'MT')).
'</span>';
560 if (isset($fields[
'payment_amount'])) {
561 print
' ('.round($ratiopaymentinvoice * 100, 2).
'%)';
568 print
'<td class="nowrap right"><span class="amount">';
569 $temp_ht = (float) $fields[
'totalht'] * $ratiopaymentinvoice;
571 print
'</span></td>';
574 print
'<td class="nowrap right"><span class="amount">';
575 $temp_vat = $fields[
'vat'] * $ratiopaymentinvoice;
578 print
'</span></td>';
581 $subtot_coll_total_ht += $temp_ht;
582 $subtot_coll_vat += $temp_vat;
583 $x_coll_sum += $temp_vat;
588 print
'<tr class="liste_total">';
589 print
'<td colspan="4"></td>';
590 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
592 print
'<td class="nowrap right"> </td>';
593 print
'<td class="right"> </td>';
595 print
'<td class="right"><span class="amount">'.price(
price2num($subtot_coll_total_ht,
'MT')).
'</span></td>';
596 print
'<td class="nowrap right"><span class="amount">'.price(
price2num($subtot_coll_vat,
'MT')).
'</span></td>';
601 if (count($x_coll) == 0) {
602 print
'<tr class="liste_total">';
603 print
'<td colspan="4"></td>';
604 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
606 print
'<td class="nowrap right"> </td>';
607 print
'<td class="right"> </td>';
609 print
'<td class="right">'.price(
price2num(0,
'MT')).
'</td>';
610 print
'<td class="nowrap right">'.price(
price2num(0,
'MT')).
'</td>';
615 print
'<tr><td colspan="'.($span + 1).
'"> </td></tr>';
618 print
'<tr class="liste_titre liste_titre_topborder">';
619 print
'<td class="left">'.$elementsup.
'</td>';
620 print
'<td class="left">'.$langs->trans(
"DateInvoice").
'</td>';
622 print
'<td class="left">'.$langs->trans(
"DatePayment").
'</td>';
626 print
'<td class="left"></td>';
627 print
'<td class="left">'.$productsup.
'</td>';
629 print
'<td class="right">'.$amountsup.
'</td>';
630 print
'<td class="right">'.$langs->trans(
"Payment").
' ('.$langs->trans(
"PercentOfInvoice").
')</td>';
632 print
'<td class="right">'.$langs->trans(
"AmountHTVATRealPaid").
'</td>';
633 print
'<td class="right">'.$vatsup.
'</td>';
636 foreach (array_keys($x_paye) as $thirdparty_id) {
637 $subtot_paye_total_ht = 0;
638 $subtot_paye_vat = 0;
640 if ($min == 0 || ($min > 0 && $x_both[$thirdparty_id][
'paye'][
'totalht'] > $min)) {
641 if (is_array($x_both[$thirdparty_id][
'paye'][
'detail'])) {
643 print
'<td class="tax_rate">';
644 if (is_numeric($thirdparty_id)) {
645 $company_static->fetch($thirdparty_id);
646 print $langs->trans(
"ThirdParty").
': '.$company_static->getNomUrl(1);
648 $tmpid = preg_replace(
'/userid_/',
'', $thirdparty_id);
649 $user_static->fetch($tmpid);
650 print $langs->trans(
"User").
': '.$user_static->getNomUrl(1);
652 print
'<td colspan="'.($span + 1).
'"></td>';
655 foreach ($x_both[$thirdparty_id][
'paye'][
'detail'] as $index => $fields) {
658 $type = (isset($fields[
'dtype']) ? $fields[
'dtype'] : $fields[
'ptype']);
661 if (!empty($fields[
'ddate_start'])) {
664 if (!empty($fields[
'ddate_end'])) {
669 print
'<tr class="oddeven">';
672 print
'<td class="nowrap left">'.$fields[
'link'].
'</td>';
675 print
'<td class="left">'.dol_print_date($fields[
'datef'],
'day').
'</td>';
679 print
'<td class="left">'.dol_print_date($fields[
'datep'],
'day').
'</td>';
685 print
'<td class="tdmaxoverflow150">';
686 print $fields[
'company_link'];
690 print
'<td class="left">';
691 if ($fields[
'pid']) {
692 $product_static->id = $fields[
'pid'];
693 $product_static->ref = $fields[
'pref'];
694 $product_static->type = $fields[
'dtype'];
695 print $product_static->getNomUrl(1);
701 $text =
img_object($langs->trans(
'Service'),
'service');
703 $text =
img_object($langs->trans(
'Product'),
'product');
705 if (preg_match(
'/^\((.*)\)$/', $fields[
'descr'], $reg)) {
706 if ($reg[1] ==
'DEPOSIT') {
707 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'Deposit');
708 } elseif ($reg[1] ==
'CREDIT_NOTE') {
709 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'CreditNote');
711 $fields[
'descr'] = $langs->transnoentitiesnoconv($reg[1]);
723 print
'<td class="nowrap right"><span class="amount">';
724 print
price($fields[
'totalht']);
727 $ratiolineinvoice = ((float) $fields[
'dtotal_ttc'] / (
float) $fields[
'ftotal_ttc']);
730 print
'</span></td>';
734 $ratiopaymentinvoice = 1;
736 print
'<td class="nowrap right">';
737 if ($fields[
'payment_amount'] && $fields[
'ftotal_ttc']) {
738 $paymentfourn_static->id = $fields[
'payment_id'];
739 $paymentfourn_static->ref = $fields[
'payment_ref'];
740 print $paymentfourn_static->getNomUrl(2,
'',
'', 0);
745 print $langs->trans(
"NA");
747 if (isset($fields[
'payment_amount']) && $fields[
'ftotal_ttc']) {
748 $ratiopaymentinvoice = ($fields[
'payment_amount'] / (float) $fields[
'ftotal_ttc']);
750 print
'<span class="amount">'.price(
price2num($fields[
'payment_amount'],
'MT')).
'</span>';
751 if (isset($fields[
'payment_amount'])) {
752 print
' ('.round($ratiopaymentinvoice * 100, 2).
'%)';
759 print
'<td class="nowrap right"><span class="amount">';
760 $temp_ht = (float) $fields[
'totalht'] * $ratiopaymentinvoice;
762 print
'</span></td>';
765 print
'<td class="nowrap right"><span class="amount">';
766 $temp_vat = $fields[
'vat'] * $ratiopaymentinvoice;
769 print
'</span></td>';
772 $subtot_paye_total_ht += $temp_ht;
773 $subtot_paye_vat += $temp_vat;
774 $x_paye_sum += $temp_vat;
778 print
'<tr class="liste_total">';
779 print
'<td colspan="4"></td>';
780 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
782 print
'<td class="nowrap right"> </td>';
783 print
'<td class="right"> </td>';
785 print
'<td class="right"><span class="amount">'.price(
price2num($subtot_paye_total_ht,
'MT')).
'</span></td>';
786 print
'<td class="nowrap right"><span class="amount">'.price(
price2num($subtot_paye_vat,
'MT')).
'</span></td>';
791 if (count($x_paye) == 0) {
792 print
'<tr class="liste_total">';
793 print
'<td colspan="4"></td>';
794 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
796 print
'<td class="nowrap right"> </td>';
797 print
'<td class="right"> </td>';
799 print
'<td class="right">'.price(
price2num(0,
'MT')).
'</td>';
800 print
'<td class="nowrap right">'.price(
price2num(0,
'MT')).
'</td>';
805 print
'<tr><td colspan="'.($span + 2).
'"></td></tr>';
807 $diff = $x_coll_sum - $x_paye_sum;
808 print
'<tr class="liste_total">';
809 print
'<td class="liste_total" colspan="'.($span + 1).
'">'.$langs->trans(
"TotalToPay").($q ?
', '.$langs->trans(
"Quadri").
' '.$q :
'').
'</td>';
810 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 Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage payments for supplier invoices.
Class to manage payments of customer invoices.
Class to manage payments of expense report.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
print_date_range($date_start, $date_end, $format='', $outputlangs=null)
Format output for start and end date.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return a 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.
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)