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';
46$langs->loadLangs(array(
"other",
"compta",
"banks",
"bills",
"companies",
"product",
"trips",
"admin"));
48include DOL_DOCUMENT_ROOT.
'/compta/tva/initdatesforvat.inc.php';
58if (GETPOSTISSET(
"modetax")) {
68 $socid = $user->socid;
79$company_static =
new Societe($db);
80$invoice_customer =
new Facture($db);
83$product_static =
new Product($db);
87$user_static =
new User($db);
90$listofparams = array(
'date_startmonth',
'date_startyear',
'date_startday',
'date_endmonth',
'date_endyear',
'date_endday');
91foreach ($listofparams as $param) {
93 $morequerystring .= ($morequerystring ?
'&' :
'').$param.
'='.
GETPOST($param);
97$special_report =
false;
98if (isset($_REQUEST[
'extra_report']) && $_REQUEST[
'extra_report'] == 1) {
99 $special_report =
true;
102llxHeader(
'', $langs->trans(
"VATReport"),
'',
'', 0, 0,
'',
'', $morequerystring);
104$fsearch =
'<!-- hidden fields for form -->';
105$fsearch .=
'<input type="hidden" name="token" value="'.newToken().
'">';
106$fsearch .=
'<input type="hidden" name="modetax" value="'.$modetax.
'">';
107$fsearch .= $langs->trans(
"SalesTurnoverMinimum").
': ';
108$fsearch .=
'<input type="text" name="min" id="min" value="'.$min.
'" size="6">';
111$name = $langs->trans(
"VATReportByThirdParties");
114 $calcmode = $langs->trans(
'OptionVATDefault');
117 $calcmode = $langs->trans(
'OptionVATDebitOption');
120 $calcmode = $langs->trans(
'OptionPaymentForProductAndServices');
122$calcmode .=
' <span class="opacitymedium">('.$langs->trans(
"TaxModuleSetupToModifyRules", DOL_URL_ROOT.
'/admin/taxes.php').
')</span>';
124$period = $form->selectDate($date_start,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.$form->selectDate($date_end,
'date_end', 0, 0, 0,
'', 1, 0);
125$prevyear = $date_start_year;
128if ($prevquarter > 1) {
134$nextyear = $date_start_year;
136if ($nextquarter < 4) {
145 $description = $langs->trans(
"RulesVATDueProducts");
148 $description .= $langs->trans(
"RulesVATInProducts");
151 $description .=
'<br>'.$langs->trans(
"RulesVATDueServices");
154 $description .=
'<br>'.$langs->trans(
"RulesVATInServices");
157 $description .=
'<br>'.$langs->trans(
"DepositsAreNotIncluded");
160 $description .= $langs->trans(
"SupplierDepositsAreNotIncluded");
162if (isModEnabled(
'accounting')) {
163 $description .=
'<br>'.$langs->trans(
"ThisIsAnEstimatedValue");
167$description .= ($description ?
'<br>' :
'').$fsearch;
169 $description .=
'<br>';
170 $description .=
'<input type="radio" name="extra_report" value="0" '.($special_report ?
'' :
'checked="checked"').
'> ';
171 $description .= $langs->trans(
'SimpleReport');
172 $description .=
'</input>';
173 $description .=
'<br>';
174 $description .=
'<input type="radio" name="extra_report" value="1" '.($special_report ?
'checked="checked"' :
'').
'> ';
175 $description .= $langs->trans(
'AddExtraReport');
176 $description .=
'</input>';
177 $description .=
'<br>';
180$elementcust = $langs->trans(
"CustomersInvoices");
181$productcust = $langs->trans(
"Description");
182$namerate = $langs->trans(
"VATRate");
183$amountcust = $langs->trans(
"AmountHT");
184if ($mysoc->tva_assuj) {
185 $vatcust =
' ('.$langs->trans(
"StatusToPay").
')';
187$elementsup = $langs->trans(
"SuppliersInvoices");
188$productsup = $langs->trans(
"Description");
189$amountsup = $langs->trans(
"AmountHT");
190if ($mysoc->tva_assuj) {
191 $vatsup =
' ('.$langs->trans(
"ToGetBack").
')';
196report_header($name,
'', $period, $periodlink, $description, $builddate, $exportlink, array(), $calcmode);
198$vatcust = $langs->trans(
"VATReceived");
199$vatsup = $langs->trans(
"VATPaid");
203print
'<div class="div-table-responsive">';
204print
"<table class=\"noborder\" width=\"100%\">";
216$x_coll =
tax_by_thirdparty(
'vat', $db, 0, $date_start, $date_end, $modetax,
'sell');
217$x_paye =
tax_by_thirdparty(
'vat', $db, 0, $date_start, $date_end, $modetax,
'buy');
219if (!is_array($x_coll) || !is_array($x_paye)) {
220 $langs->load(
"errors");
222 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"ErrorNoAccountancyModuleLoaded").
'</td></tr>';
223 } elseif ($x_coll == -2) {
224 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"FeatureNotYetAvailable").
'</td></tr>';
226 print
'<tr><td colspan="'.$columns.
'">'.$langs->trans(
"Error").
'</td></tr>';
231 foreach (array_keys($x_coll) as $my_coll_thirdpartyid) {
232 $x_both[$my_coll_thirdpartyid] = array(
236 $x_both[$my_coll_thirdpartyid][
'coll'][
'totalht'] = $x_coll[$my_coll_thirdpartyid][
'totalht'];
237 $x_both[$my_coll_thirdpartyid][
'coll'][
'vat'] = $x_coll[$my_coll_thirdpartyid][
'vat'];
238 $x_both[$my_coll_thirdpartyid][
'paye'][
'totalht'] = 0;
239 $x_both[$my_coll_thirdpartyid][
'paye'][
'vat'] = 0;
240 $x_both[$my_coll_thirdpartyid][
'coll'][
'links'] =
'';
241 $x_both[$my_coll_thirdpartyid][
'coll'][
'detail'] = array();
242 foreach ($x_coll[$my_coll_thirdpartyid][
'facid'] as
$id => $dummy) {
243 $invoice_customer->id = $x_coll[$my_coll_thirdpartyid][
'facid'][
$id];
244 $invoice_customer->ref = $x_coll[$my_coll_thirdpartyid][
'facnum'][
$id];
245 $invoice_customer->type = $x_coll[$my_coll_thirdpartyid][
'type'][
$id];
248 $company_static->id = $x_coll[$my_coll_thirdpartyid][
'company_id'][
$id];
249 $company_static->name = $x_coll[$my_coll_thirdpartyid][
'company_name'][
$id];
250 $company_static->name_alias = $x_coll[$my_coll_thirdpartyid][
'company_alias'][
$id];
251 $company_static->email = $x_coll[$my_coll_thirdpartyid][
'company_email'][
$id];
252 $company_static->tva_intra = isset($x_coll[$my_coll_thirdpartyid][
'tva_intra'][
$id]) ? $x_coll[$my_coll_thirdpartyid][
'tva_intra'][
$id] :
'0';
253 $company_static->client = $x_coll[$my_coll_thirdpartyid][
'company_client'][
$id];
254 $company_static->fournisseur = $x_coll[$my_coll_thirdpartyid][
'company_fournisseur'][
$id];
255 $company_static->status = $x_coll[$my_coll_thirdpartyid][
'company_status'][
$id];
256 $company_static->code_client = $x_coll[$my_coll_thirdpartyid][
'company_customer_code'][
$id];
257 $company_static->code_compta_client = $x_coll[$my_coll_thirdpartyid][
'company_customer_accounting_code'][
$id];
258 $company_static->code_fournisseur = $x_coll[$my_coll_thirdpartyid][
'company_supplier_code'][
$id];
259 $company_static->code_compta_fournisseur = $x_coll[$my_coll_thirdpartyid][
'company_supplier_accounting_code'][
$id];
261 $x_both[$my_coll_thirdpartyid][
'coll'][
'detail'][] = array(
262 'id' => $x_coll[$my_coll_thirdpartyid][
'facid'][
$id],
263 'descr' => $x_coll[$my_coll_thirdpartyid][
'descr'][
$id],
265 'pid' => $x_coll[$my_coll_thirdpartyid][
'pid'][
$id],
266 'pref' => isset($x_coll[$my_coll_thirdpartyid][
'pref'][
$id]) ? $x_coll[$my_coll_thirdpartyid][
'pref'][
$id] :
'',
267 'ptype' => $x_coll[$my_coll_thirdpartyid][
'ptype'][
$id],
268 'pstatus' => isset($x_paye[$my_coll_thirdpartyid][
'pstatus'][
$id]) ? $x_paye[$my_coll_thirdpartyid][
'pstatus'][
$id] :
'',
269 'pstatusbuy' => isset($x_paye[$my_coll_thirdpartyid][
'pstatusbuy'][
$id]) ? $x_paye[$my_coll_thirdpartyid][
'pstatusbuy'][
$id] :
'',
271 'payment_id' => $x_coll[$my_coll_thirdpartyid][
'payment_id'][
$id],
272 'payment_ref' => isset($x_coll[$my_coll_thirdpartyid][
'payment_ref'][
$id]) ? $x_coll[$my_coll_thirdpartyid][
'payment_ref'][
$id] :
'',
273 'payment_amount' => $x_coll[$my_coll_thirdpartyid][
'payment_amount'][
$id],
274 'ftotal_ttc' => $x_coll[$my_coll_thirdpartyid][
'ftotal_ttc'][
$id],
275 'dtotal_ttc' => $x_coll[$my_coll_thirdpartyid][
'dtotal_ttc'][
$id],
276 'dtype' => $x_coll[$my_coll_thirdpartyid][
'dtype'][
$id],
277 'drate' => $x_coll[$my_coll_thirdpartyid][
'drate'][
$id],
278 'datef' => $x_coll[$my_coll_thirdpartyid][
'datef'][
$id],
279 'datep' => $x_coll[$my_coll_thirdpartyid][
'datep'][
$id],
281 'company_link' => $company_static->getNomUrl(1,
'', 20),
283 'ddate_start' => $x_coll[$my_coll_thirdpartyid][
'ddate_start'][
$id],
284 'ddate_end' => $x_coll[$my_coll_thirdpartyid][
'ddate_end'][
$id],
285 'totalht' => $x_coll[$my_coll_thirdpartyid][
'totalht_list'][
$id],
286 'vat' => $x_coll[$my_coll_thirdpartyid][
'vat_list'][
$id],
287 'link' => $invoice_customer->getNomUrl(1,
'', 12)
292 foreach (array_keys($x_paye) as $my_paye_thirdpartyid) {
293 $x_both[$my_paye_thirdpartyid][
'paye'][
'totalht'] = $x_paye[$my_paye_thirdpartyid][
'totalht'];
294 $x_both[$my_paye_thirdpartyid][
'paye'][
'vat'] = $x_paye[$my_paye_thirdpartyid][
'vat'];
295 if (!isset($x_both[$my_paye_thirdpartyid][
'coll'][
'totalht'])) {
296 $x_both[$my_paye_thirdpartyid][
'coll'][
'totalht'] = 0;
297 $x_both[$my_paye_thirdpartyid][
'coll'][
'vat'] = 0;
299 $x_both[$my_paye_thirdpartyid][
'paye'][
'links'] =
'';
300 $x_both[$my_paye_thirdpartyid][
'paye'][
'detail'] = array();
302 foreach ($x_paye[$my_paye_thirdpartyid][
'facid'] as
$id => $dummy) {
304 if ($x_paye[$my_paye_thirdpartyid][
'ptype'][
$id] ==
'ExpenseReportPayment') {
305 $expensereport->id = $x_paye[$my_paye_thirdpartyid][
'facid'][
$id];
306 $expensereport->ref = $x_paye[$my_paye_thirdpartyid][
'facnum'][
$id];
307 $expensereport->type = $x_paye[$my_paye_thirdpartyid][
'type'][
$id];
309 $x_both[$my_paye_thirdpartyid][
'paye'][
'detail'][] = array(
310 'id' => $x_paye[$my_paye_thirdpartyid][
'facid'][
$id],
311 'descr' => $x_paye[$my_paye_thirdpartyid][
'descr'][
$id],
313 'pid' => $x_paye[$my_paye_thirdpartyid][
'pid'][
$id],
314 'pref' => $x_paye[$my_paye_thirdpartyid][
'pref'][
$id],
315 'ptype' => $x_paye[$my_paye_thirdpartyid][
'ptype'][
$id],
316 'pstatus' => $x_paye[$my_paye_thirdpartyid][
'pstatus'][
$id],
317 'pstatusbuy' => $x_paye[$my_paye_thirdpartyid][
'pstatusbuy'][
$id],
319 'payment_id' => $x_paye[$my_paye_thirdpartyid][
'payment_id'][
$id],
320 'payment_ref' => $x_paye[$my_paye_thirdpartyid][
'payment_ref'][
$id],
321 'payment_amount' => $x_paye[$my_paye_thirdpartyid][
'payment_amount'][
$id],
322 'ftotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'ftotal_ttc'][
$id]),
323 'dtotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'dtotal_ttc'][
$id]),
324 'dtype' => $x_paye[$my_paye_thirdpartyid][
'dtype'][
$id],
325 'drate' => $x_paye[$my_coll_thirdpartyid][
'drate'][
$id],
326 'ddate_start' => $x_paye[$my_paye_thirdpartyid][
'ddate_start'][
$id],
327 'ddate_end' => $x_paye[$my_paye_thirdpartyid][
'ddate_end'][
$id],
328 'totalht' =>
price2num($x_paye[$my_paye_thirdpartyid][
'totalht_list'][
$id]),
329 'vat' => $x_paye[$my_paye_thirdpartyid][
'vat_list'][
$id],
330 'link' => $expensereport->getNomUrl(1)
333 $invoice_supplier->id = $x_paye[$my_paye_thirdpartyid][
'facid'][
$id];
334 $invoice_supplier->ref = $x_paye[$my_paye_thirdpartyid][
'facnum'][
$id];
335 $invoice_supplier->type = $x_paye[$my_paye_thirdpartyid][
'type'][
$id];
338 $company_static->id = $x_paye[$my_paye_thirdpartyid][
'company_id'][
$id];
339 $company_static->name = $x_paye[$my_paye_thirdpartyid][
'company_name'][
$id];
340 $company_static->name_alias = $x_paye[$my_paye_thirdpartyid][
'company_alias'][
$id];
341 $company_static->email = $x_paye[$my_paye_thirdpartyid][
'company_email'][
$id];
342 $company_static->tva_intra = $x_paye[$my_paye_thirdpartyid][
'tva_intra'][
$id];
343 $company_static->client = $x_paye[$my_paye_thirdpartyid][
'company_client'][
$id];
344 $company_static->fournisseur = $x_paye[$my_paye_thirdpartyid][
'company_fournisseur'][
$id];
345 $company_static->status = $x_paye[$my_paye_thirdpartyid][
'company_status'][
$id];
346 $company_static->code_client = $x_paye[$my_paye_thirdpartyid][
'company_customer_code'][
$id];
347 $company_static->code_compta_client = $x_paye[$my_paye_thirdpartyid][
'company_customer_accounting_code'][
$id];
348 $company_static->code_fournisseur = $x_paye[$my_paye_thirdpartyid][
'company_supplier_code'][
$id];
349 $company_static->code_compta_fournisseur = $x_paye[$my_paye_thirdpartyid][
'company_supplier_accounting_code'][
$id];
351 $x_both[$my_paye_thirdpartyid][
'paye'][
'detail'][] = array(
352 'id' => $x_paye[$my_paye_thirdpartyid][
'facid'][
$id],
353 'descr' => $x_paye[$my_paye_thirdpartyid][
'descr'][
$id],
355 'pid' => $x_paye[$my_paye_thirdpartyid][
'pid'][
$id],
356 'pref' => $x_paye[$my_paye_thirdpartyid][
'pref'][
$id],
357 'ptype' => $x_paye[$my_paye_thirdpartyid][
'ptype'][
$id],
358 'pstatus' => (
int) $x_paye[$my_paye_thirdpartyid][
'pstatus'][
$id],
359 'pstatusbuy' => (
int) $x_paye[$my_paye_thirdpartyid][
'pstatusbuy'][
$id],
361 'payment_id' => $x_paye[$my_paye_thirdpartyid][
'payment_id'][
$id],
362 'payment_ref' => $x_paye[$my_paye_thirdpartyid][
'payment_ref'][
$id],
363 'payment_amount' => $x_paye[$my_paye_thirdpartyid][
'payment_amount'][
$id],
364 'ftotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'ftotal_ttc'][
$id]),
365 'dtotal_ttc' =>
price2num($x_paye[$my_paye_thirdpartyid][
'dtotal_ttc'][
$id]),
366 'dtype' => $x_paye[$my_paye_thirdpartyid][
'dtype'][
$id],
367 'drate' => $x_paye[$my_coll_thirdpartyid][
'drate'][
$id],
368 'datef' => $x_paye[$my_paye_thirdpartyid][
'datef'][
$id],
369 'datep' => $x_paye[$my_paye_thirdpartyid][
'datep'][
$id],
371 'company_link' => $company_static->getNomUrl(1,
'', 20),
373 'ddate_start' => $x_paye[$my_paye_thirdpartyid][
'ddate_start'][
$id],
374 'ddate_end' => $x_paye[$my_paye_thirdpartyid][
'ddate_end'][
$id],
375 'totalht' =>
price2num($x_paye[$my_paye_thirdpartyid][
'totalht_list'][
$id]),
376 'vat' => $x_paye[$my_paye_thirdpartyid][
'vat_list'][
$id],
377 'link' => $invoice_supplier->getNomUrl(1,
'', 12)
395 print
'<tr class="liste_titre">';
396 print
'<td class="left">'.$elementcust.
'</td>';
397 print
'<td class="left">'.$langs->trans(
"DateInvoice").
'</td>';
399 print
'<td class="left">'.$langs->trans(
"DatePayment").
'</td>';
403 print
'<td class="right"></td>';
404 print
'<td class="left">'.$productcust.
'</td>';
406 print
'<td class="right">'.$amountcust.
'</td>';
407 print
'<td class="right">'.$langs->trans(
"Payment").
' ('.$langs->trans(
"PercentOfInvoice").
')</td>';
409 print
'<td class="right">'.$langs->trans(
"AmountHTVATRealReceived").
'</td>';
410 print
'<td class="right">'.$vatcust.
'</td>';
413 $action =
"tvadetail";
414 $parameters[
"mode"] = $modetax;
415 $parameters[
"start"] = $date_start;
416 $parameters[
"end"] = $date_end;
417 $parameters[
"type"] =
'vat';
419 $object = array(&$x_coll, &$x_paye, &$x_both);
421 $hookmanager->initHooks(array(
'externalbalance'));
422 $reshook = $hookmanager->executeHooks(
'addVatLine', $parameters,
$object, $action);
424 foreach (array_keys($x_coll) as $thirdparty_id) {
425 $subtot_coll_total_ht = 0;
426 $subtot_coll_vat = 0;
428 if ($min == 0 || ($min > 0 && $x_both[$thirdparty_id][
'coll'][
'totalht'] > $min)) {
429 if (is_array($x_both[$thirdparty_id][
'coll'][
'detail'])) {
432 print
'<td class="tax_rate">';
433 if (is_numeric($thirdparty_id)) {
434 $company_static->fetch($thirdparty_id);
435 print $langs->trans(
"ThirdParty").
': '.$company_static->getNomUrl(1);
437 $tmpid = preg_replace(
'/userid_/',
'', $thirdparty_id);
438 $user_static->fetch($tmpid);
439 print $langs->trans(
"User").
': '.$user_static->getNomUrl(1);
441 print
'</td><td colspan="'.($span + 1).
'"></td>';
444 foreach ($x_both[$thirdparty_id][
'coll'][
'detail'] as $index => $fields) {
447 $type = (isset($fields[
'dtype']) ? $fields[
'dtype'] : $fields[
'ptype']);
450 if (!empty($fields[
'ddate_start'])) {
453 if (!empty($fields[
'ddate_end'])) {
457 print
'<tr class="oddeven">';
460 print
'<td class="nowrap left">'.$fields[
'link'].
'</td>';
463 print
'<td class="left">'.dol_print_date($fields[
'datef'],
'day').
'</td>';
467 print
'<td class="left">'.dol_print_date($fields[
'datep'],
'day').
'</td>';
473 print
'<td class="right">'.$fields[
'drate'].
'</td>';
476 print
'<td class="left">';
477 if ($fields[
'pid']) {
478 $product_static->id = $fields[
'pid'];
479 $product_static->ref = $fields[
'pref'];
480 $product_static->type = $fields[
'dtype'];
481 $product_static->status = (int) $fields[
'pstatus'];
482 $product_static->status_buy = (int) $fields[
'pstatusbuy'];
484 print $product_static->getNomUrl(1);
490 $text =
img_object($langs->trans(
'Service'),
'service');
492 $text =
img_object($langs->trans(
'Product'),
'product');
494 if (preg_match(
'/^\((.*)\)$/', $fields[
'descr'], $reg)) {
495 if ($reg[1] ==
'DEPOSIT') {
496 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'Deposit');
497 } elseif ($reg[1] ==
'CREDIT_NOTE') {
498 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'CreditNote');
500 $fields[
'descr'] = $langs->transnoentitiesnoconv($reg[1]);
512 print
'<td class="nowrap right"><span class="amount">';
513 print
price($fields[
'totalht']);
516 $ratiolineinvoice = ($fields[
'dtotal_ttc'] / $fields[
'ftotal_ttc']);
519 print
'</span></td>';
523 $ratiopaymentinvoice = 1;
525 print
'<td class="nowrap right">';
527 if ($fields[
'payment_amount'] && $fields[
'ftotal_ttc']) {
528 $payment_static->id = $fields[
'payment_id'];
529 $payment_static->ref = $fields[
'payment_ref'];
530 print $payment_static->getNomUrl(2,
'',
'', 0).
' ';
534 print $langs->trans(
"NA");
536 if (isset($fields[
'payment_amount']) &&
price2num($fields[
'ftotal_ttc'])) {
537 $ratiopaymentinvoice = ($fields[
'payment_amount'] / $fields[
'ftotal_ttc']);
539 print
'<span class="amount">'.price(
price2num($fields[
'payment_amount'],
'MT')).
'</span>';
540 if (isset($fields[
'payment_amount'])) {
541 print
' ('.round($ratiopaymentinvoice * 100, 2).
'%)';
548 print
'<td class="nowrap right"><span class="amount">';
549 $temp_ht = (float) $fields[
'totalht'] * $ratiopaymentinvoice;
551 print
'</span></td>';
554 print
'<td class="nowrap right"><span class="amount">';
555 $temp_vat = $fields[
'vat'] * $ratiopaymentinvoice;
558 print
'</span></td>';
561 $subtot_coll_total_ht += $temp_ht;
562 $subtot_coll_vat += $temp_vat;
563 $x_coll_sum += $temp_vat;
568 print
'<tr class="liste_total">';
569 print
'<td colspan="4"></td>';
570 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
572 print
'<td class="nowrap right"> </td>';
573 print
'<td class="right"> </td>';
575 print
'<td class="right"><span class="amount">'.price(
price2num($subtot_coll_total_ht,
'MT')).
'</span></td>';
576 print
'<td class="nowrap right"><span class="amount">'.price(
price2num($subtot_coll_vat,
'MT')).
'</span></td>';
581 if (count($x_coll) == 0) {
582 print
'<tr class="liste_total">';
583 print
'<td colspan="4"></td>';
584 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
586 print
'<td class="nowrap right"> </td>';
587 print
'<td class="right"> </td>';
589 print
'<td class="right">'.price(
price2num(0,
'MT')).
'</td>';
590 print
'<td class="nowrap right">'.price(
price2num(0,
'MT')).
'</td>';
595 print
'<tr><td colspan="'.($span + 1).
'"> </td></tr>';
598 print
'<tr class="liste_titre liste_titre_topborder">';
599 print
'<td class="left">'.$elementsup.
'</td>';
600 print
'<td class="left">'.$langs->trans(
"DateInvoice").
'</td>';
602 print
'<td class="left">'.$langs->trans(
"DatePayment").
'</td>';
606 print
'<td class="left"></td>';
607 print
'<td class="left">'.$productsup.
'</td>';
609 print
'<td class="right">'.$amountsup.
'</td>';
610 print
'<td class="right">'.$langs->trans(
"Payment").
' ('.$langs->trans(
"PercentOfInvoice").
')</td>';
612 print
'<td class="right">'.$langs->trans(
"AmountHTVATRealPaid").
'</td>';
613 print
'<td class="right">'.$vatsup.
'</td>';
616 foreach (array_keys($x_paye) as $thirdparty_id) {
617 $subtot_paye_total_ht = 0;
618 $subtot_paye_vat = 0;
620 if ($min == 0 || ($min > 0 && $x_both[$thirdparty_id][
'paye'][
'totalht'] > $min)) {
621 if (is_array($x_both[$thirdparty_id][
'paye'][
'detail'])) {
623 print
'<td class="tax_rate">';
624 if (is_numeric($thirdparty_id)) {
625 $company_static->fetch($thirdparty_id);
626 print $langs->trans(
"ThirdParty").
': '.$company_static->getNomUrl(1);
628 $tmpid = preg_replace(
'/userid_/',
'', $thirdparty_id);
629 $user_static->fetch($tmpid);
630 print $langs->trans(
"User").
': '.$user_static->getNomUrl(1);
632 print
'<td colspan="'.($span + 1).
'"></td>';
635 foreach ($x_both[$thirdparty_id][
'paye'][
'detail'] as $index => $fields) {
638 $type = (isset($fields[
'dtype']) ? $fields[
'dtype'] : $fields[
'ptype']);
641 if (!empty($fields[
'ddate_start'])) {
644 if (!empty($fields[
'ddate_end'])) {
649 print
'<tr class="oddeven">';
652 print
'<td class="nowrap left">'.$fields[
'link'].
'</td>';
655 print
'<td class="left">'.dol_print_date($fields[
'datef'],
'day').
'</td>';
659 print
'<td class="left">'.dol_print_date($fields[
'datep'],
'day').
'</td>';
665 print
'<td class="tdmaxoverflow150">';
666 print $fields[
'company_link'];
670 print
'<td class="left">';
671 if ($fields[
'pid']) {
672 $product_static->id = $fields[
'pid'];
673 $product_static->ref = $fields[
'pref'];
674 $product_static->type = $fields[
'dtype'];
675 print $product_static->getNomUrl(1);
681 $text =
img_object($langs->trans(
'Service'),
'service');
683 $text =
img_object($langs->trans(
'Product'),
'product');
685 if (preg_match(
'/^\((.*)\)$/', $fields[
'descr'], $reg)) {
686 if ($reg[1] ==
'DEPOSIT') {
687 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'Deposit');
688 } elseif ($reg[1] ==
'CREDIT_NOTE') {
689 $fields[
'descr'] = $langs->transnoentitiesnoconv(
'CreditNote');
691 $fields[
'descr'] = $langs->transnoentitiesnoconv($reg[1]);
703 print
'<td class="nowrap right"><span class="amount">';
704 print
price($fields[
'totalht']);
707 $ratiolineinvoice = ((float) $fields[
'dtotal_ttc'] / (
float) $fields[
'ftotal_ttc']);
710 print
'</span></td>';
714 $ratiopaymentinvoice = 1;
716 print
'<td class="nowrap right">';
717 if ($fields[
'payment_amount'] && $fields[
'ftotal_ttc']) {
718 $paymentfourn_static->id = $fields[
'payment_id'];
719 $paymentfourn_static->ref = $fields[
'payment_ref'];
720 print $paymentfourn_static->getNomUrl(2,
'',
'', 0);
725 print $langs->trans(
"NA");
727 if (isset($fields[
'payment_amount']) && $fields[
'ftotal_ttc']) {
728 $ratiopaymentinvoice = ($fields[
'payment_amount'] / (float) $fields[
'ftotal_ttc']);
730 print
'<span class="amount">'.price(
price2num($fields[
'payment_amount'],
'MT')).
'</span>';
731 if (isset($fields[
'payment_amount'])) {
732 print
' ('.round($ratiopaymentinvoice * 100, 2).
'%)';
739 print
'<td class="nowrap right"><span class="amount">';
740 $temp_ht = (float) $fields[
'totalht'] * $ratiopaymentinvoice;
742 print
'</span></td>';
745 print
'<td class="nowrap right"><span class="amount">';
746 $temp_vat = $fields[
'vat'] * $ratiopaymentinvoice;
749 print
'</span></td>';
752 $subtot_paye_total_ht += $temp_ht;
753 $subtot_paye_vat += $temp_vat;
754 $x_paye_sum += $temp_vat;
758 print
'<tr class="liste_total">';
759 print
'<td colspan="4"></td>';
760 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
762 print
'<td class="nowrap right"> </td>';
763 print
'<td class="right"> </td>';
765 print
'<td class="right"><span class="amount">'.price(
price2num($subtot_paye_total_ht,
'MT')).
'</span></td>';
766 print
'<td class="nowrap right"><span class="amount">'.price(
price2num($subtot_paye_vat,
'MT')).
'</span></td>';
771 if (count($x_paye) == 0) {
772 print
'<tr class="liste_total">';
773 print
'<td colspan="4"></td>';
774 print
'<td class="right">'.$langs->trans(
"Total").
':</td>';
776 print
'<td class="nowrap right"> </td>';
777 print
'<td class="right"> </td>';
779 print
'<td class="right">'.price(
price2num(0,
'MT')).
'</td>';
780 print
'<td class="nowrap right">'.price(
price2num(0,
'MT')).
'</td>';
785 print
'<tr><td colspan="'.($span + 2).
'"></td></tr>';
787 $diff = $x_coll_sum - $x_paye_sum;
788 print
'<tr class="liste_total">';
789 print
'<td class="liste_total" colspan="'.($span + 1).
'">'.$langs->trans(
"TotalToPay").($q ?
', '.$langs->trans(
"Quadri").
' '.$q :
'').
'</td>';
790 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)