FIX: The minimum amount filter does not work in the VAT report per customer

This commit is contained in:
Ferran Marcet 2019-03-22 09:28:50 +01:00
parent a39336c80d
commit f37c1b9287

View File

@ -372,126 +372,119 @@ if (! is_array($x_coll) || ! is_array($x_paye))
$subtot_coll_total_ht = 0; $subtot_coll_total_ht = 0;
$subtot_coll_vat = 0; $subtot_coll_vat = 0;
if (is_array($x_both[$thirdparty_id]['coll']['detail'])) if ($min == 0 || ($min > 0 && $x_both[$thirdparty_id]['coll']['totalht'] > $min)) {
{
if (is_array($x_both[$thirdparty_id]['coll']['detail'])) {
// VAT Rate // VAT Rate
print "<tr>"; print "<tr>";
print '<td class="tax_rate">'; print '<td class="tax_rate">';
if (is_numeric($thirdparty_id)) if (is_numeric($thirdparty_id)) {
{
$company_static->fetch($thirdparty_id); $company_static->fetch($thirdparty_id);
print $langs->trans("ThirdParty").': '.$company_static->getNomUrl(1); print $langs->trans("ThirdParty") . ': ' . $company_static->getNomUrl(1);
} } else {
else $tmpid = preg_replace('/userid_/', '', $thirdparty_id);
{
$tmpid = preg_replace('/userid_/','',$thirdparty_id);
$user_static->fetch($tmpid); $user_static->fetch($tmpid);
print $langs->trans("User").': '.$user_static->getNomUrl(1); print $langs->trans("User") . ': ' . $user_static->getNomUrl(1);
} }
print '</td><td colspan="'.($span+1).'"></td>'; print '</td><td colspan="' . ($span + 1) . '"></td>';
print '</tr>'."\n"; print '</tr>' . "\n";
foreach ($x_both[$thirdparty_id]['coll']['detail'] as $index => $fields) { foreach ($x_both[$thirdparty_id]['coll']['detail'] as $index => $fields) {
// Define type // Define type
// We MUST use dtype (type in line). We can use something else, only if dtype is really unknown. // We MUST use dtype (type in line). We can use something else, only if dtype is really unknown.
$type=(isset($fields['dtype'])?$fields['dtype']:$fields['ptype']); $type = (isset($fields['dtype']) ? $fields['dtype'] : $fields['ptype']);
// Try to enhance type detection using date_start and date_end for free lines where type // Try to enhance type detection using date_start and date_end for free lines where type
// was not saved. // was not saved.
if (!empty($fields['ddate_start'])) { if (!empty($fields['ddate_start'])) {
$type=1; $type = 1;
} }
if (!empty($fields['ddate_end'])) { if (!empty($fields['ddate_end'])) {
$type=1; $type = 1;
} }
print '<tr class="oddeven">'; print '<tr class="oddeven">';
// Ref // Ref
print '<td class="nowrap" align="left">'.$fields['link'].'</td>'; print '<td class="nowrap" align="left">' . $fields['link'] . '</td>';
// Invoice date // Invoice date
print '<td align="left">' . dol_print_date($fields['datef'], 'day') . '</td>'; print '<td align="left">' . dol_print_date($fields['datef'], 'day') . '</td>';
// Payment date // Payment date
if ($conf->global->TAX_MODE_SELL_PRODUCT == 'payment' || $conf->global->TAX_MODE_SELL_SERVICE == 'payment') print '<td align="left">' . dol_print_date($fields['datep'], 'day') . '</td>'; if ($conf->global->TAX_MODE_SELL_PRODUCT == 'payment' || $conf->global->TAX_MODE_SELL_SERVICE == 'payment') {
else print '<td></td>'; print '<td align="left">' . dol_print_date($fields['datep'], 'day') . '</td>';
} else {
print '<td></td>';
}
// Rate // Rate
print '<td align="right">' . $fields['drate'] . '</td>'; print '<td align="right">' . $fields['drate'] . '</td>';
// Description // Description
print '<td align="left">'; print '<td align="left">';
if ($fields['pid']) if ($fields['pid']) {
{ $product_static->id = $fields['pid'];
$product_static->id=$fields['pid']; $product_static->ref = $fields['pref'];
$product_static->ref=$fields['pref']; $product_static->type = $fields['dtype']; // We force with the type of line to have type how line is registered
$product_static->type=$fields['dtype']; // We force with the type of line to have type how line is registered
print $product_static->getNomUrl(1); print $product_static->getNomUrl(1);
if (dol_string_nohtmltag($fields['descr'])) { if (dol_string_nohtmltag($fields['descr'])) {
print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); print ' - ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
} }
} } else {
else
{
if ($type) { if ($type) {
$text = img_object($langs->trans('Service'),'service'); $text = img_object($langs->trans('Service'), 'service');
} else { } else {
$text = img_object($langs->trans('Product'),'product'); $text = img_object($langs->trans('Product'), 'product');
} }
if (preg_match('/^\((.*)\)$/',$fields['descr'],$reg)) { if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) {
if ($reg[1]=='DEPOSIT') { if ($reg[1] == 'DEPOSIT') {
$fields['descr']=$langs->transnoentitiesnoconv('Deposit'); $fields['descr'] = $langs->transnoentitiesnoconv('Deposit');
} elseif ($reg[1]=='CREDIT_NOTE') { } elseif ($reg[1] == 'CREDIT_NOTE') {
$fields['descr']=$langs->transnoentitiesnoconv('CreditNote'); $fields['descr'] = $langs->transnoentitiesnoconv('CreditNote');
} else { } else {
$fields['descr']=$langs->transnoentitiesnoconv($reg[1]); $fields['descr'] = $langs->transnoentitiesnoconv($reg[1]);
} }
} }
print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); print $text . ' ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
// Show range // Show range
print_date_range($fields['ddate_start'],$fields['ddate_end']); print_date_range($fields['ddate_start'], $fields['ddate_end']);
} }
print '</td>'; print '</td>';
// Total HT // Total HT
if ($modetax != 1) if ($modetax != 1) {
{
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
print price($fields['totalht']); print price($fields['totalht']);
if (price2num($fields['ftotal_ttc'])) if (price2num($fields['ftotal_ttc'])) {
{
//print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - "; //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
$ratiolineinvoice=($fields['dtotal_ttc']/$fields['ftotal_ttc']); $ratiolineinvoice = ($fields['dtotal_ttc'] / $fields['ftotal_ttc']);
//print ' ('.round($ratiolineinvoice*100,2).'%)'; //print ' ('.round($ratiolineinvoice*100,2).'%)';
} }
print '</td>'; print '</td>';
} }
// Payment // Payment
$ratiopaymentinvoice=1; $ratiopaymentinvoice = 1;
if ($modetax != 1) if ($modetax != 1) {
{
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
//print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc']; //print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc'];
if ($fields['payment_amount'] && $fields['ftotal_ttc']) if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
{ $payment_static->id = $fields['payment_id'];
$payment_static->id=$fields['payment_id'];
print $payment_static->getNomUrl(2); print $payment_static->getNomUrl(2);
} }
if (($type == 0 && $conf->global->TAX_MODE_SELL_PRODUCT == 'invoice') if (($type == 0 && $conf->global->TAX_MODE_SELL_PRODUCT == 'invoice')
|| ($type == 1 && $conf->global->TAX_MODE_SELL_SERVICE == 'invoice')) || ($type == 1 && $conf->global->TAX_MODE_SELL_SERVICE == 'invoice')) {
{
print $langs->trans("NA"); print $langs->trans("NA");
} else { } else {
if (isset($fields['payment_amount']) && price2num($fields['ftotal_ttc'])) { if (isset($fields['payment_amount']) && price2num($fields['ftotal_ttc'])) {
$ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']); $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']);
} }
print price(price2num($fields['payment_amount'],'MT')); print price(price2num($fields['payment_amount'], 'MT'));
if (isset($fields['payment_amount'])) { if (isset($fields['payment_amount'])) {
print ' ('.round($ratiopaymentinvoice*100,2).'%)'; print ' (' . round($ratiopaymentinvoice * 100, 2) . '%)';
} }
} }
print '</td>'; print '</td>';
@ -499,14 +492,14 @@ if (! is_array($x_coll) || ! is_array($x_paye))
// Total collected // Total collected
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
$temp_ht=$fields['totalht']*$ratiopaymentinvoice; $temp_ht = $fields['totalht'] * $ratiopaymentinvoice;
print price(price2num($temp_ht,'MT'),1); print price(price2num($temp_ht, 'MT'), 1);
print '</td>'; print '</td>';
// VAT // VAT
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
$temp_vat=$fields['vat']*$ratiopaymentinvoice; $temp_vat = $fields['vat'] * $ratiopaymentinvoice;
print price(price2num($temp_vat,'MT'),1); print price(price2num($temp_vat, 'MT'), 1);
//print price($fields['vat']); //print price($fields['vat']);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -515,19 +508,21 @@ if (! is_array($x_coll) || ! is_array($x_paye))
$subtot_coll_vat += $temp_vat; $subtot_coll_vat += $temp_vat;
$x_coll_sum += $temp_vat; $x_coll_sum += $temp_vat;
} }
} }
// Total customers for this vat rate // Total customers for this vat rate
print '<tr class="liste_total">'; print '<tr class="liste_total">';
print '<td colspan="4"></td>'; print '<td colspan="4"></td>';
print '<td align="right">'.$langs->trans("Total").':</td>'; print '<td align="right">' . $langs->trans("Total") . ':</td>';
if ($modetax != 1) { if ($modetax != 1) {
print '<td class="nowrap" align="right">&nbsp;</td>'; print '<td class="nowrap" align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>'; print '<td align="right">&nbsp;</td>';
} }
print '<td align="right">'.price(price2num($subtot_coll_total_ht,'MT')).'</td>'; print '<td align="right">' . price(price2num($subtot_coll_total_ht, 'MT')) . '</td>';
print '<td class="nowrap" align="right">'.price(price2num($subtot_coll_vat,'MT')).'</td>'; print '<td class="nowrap" align="right">' . price(price2num($subtot_coll_vat, 'MT')) . '</td>';
print '</tr>'; print '</tr>';
} }
}
if (count($x_coll) == 0) // Show a total ine if nothing shown if (count($x_coll) == 0) // Show a total ine if nothing shown
{ {
@ -567,126 +562,117 @@ if (! is_array($x_coll) || ! is_array($x_paye))
$subtot_paye_total_ht = 0; $subtot_paye_total_ht = 0;
$subtot_paye_vat = 0; $subtot_paye_vat = 0;
if (is_array($x_both[$thirdparty_id]['paye']['detail'])) if ($min == 0 || ($min > 0 && $x_both[$thirdparty_id]['paye']['totalht'] > $min)) {
{
if (is_array($x_both[$thirdparty_id]['paye']['detail'])) {
print "<tr>"; print "<tr>";
print '<td class="tax_rate">'; print '<td class="tax_rate">';
if (is_numeric($thirdparty_id)) if (is_numeric($thirdparty_id)) {
{
$company_static->fetch($thirdparty_id); $company_static->fetch($thirdparty_id);
print $langs->trans("ThirdParty").': '.$company_static->getNomUrl(1); print $langs->trans("ThirdParty") . ': ' . $company_static->getNomUrl(1);
} } else {
else $tmpid = preg_replace('/userid_/', '', $thirdparty_id);
{
$tmpid = preg_replace('/userid_/','',$thirdparty_id);
$user_static->fetch($tmpid); $user_static->fetch($tmpid);
print $langs->trans("User").': '.$user_static->getNomUrl(1); print $langs->trans("User") . ': ' . $user_static->getNomUrl(1);
} }
print '<td colspan="'.($span+1).'"></td>'; print '<td colspan="' . ($span + 1) . '"></td>';
print '</tr>'."\n"; print '</tr>' . "\n";
foreach ($x_both[$thirdparty_id]['paye']['detail'] as $index=>$fields) { foreach ($x_both[$thirdparty_id]['paye']['detail'] as $index => $fields) {
// Define type // Define type
// We MUST use dtype (type in line). We can use something else, only if dtype is really unknown. // We MUST use dtype (type in line). We can use something else, only if dtype is really unknown.
$type=(isset($fields['dtype'])?$fields['dtype']:$fields['ptype']); $type = (isset($fields['dtype']) ? $fields['dtype'] : $fields['ptype']);
// Try to enhance type detection using date_start and date_end for free lines where type // Try to enhance type detection using date_start and date_end for free lines where type
// was not saved. // was not saved.
if (!empty($fields['ddate_start'])) { if (!empty($fields['ddate_start'])) {
$type=1; $type = 1;
} }
if (!empty($fields['ddate_end'])) { if (!empty($fields['ddate_end'])) {
$type=1; $type = 1;
} }
print '<tr class="oddeven">'; print '<tr class="oddeven">';
// Ref // Ref
print '<td class="nowrap" align="left">'.$fields['link'].'</td>'; print '<td class="nowrap" align="left">' . $fields['link'] . '</td>';
// Invoice date // Invoice date
print '<td align="left">' . dol_print_date($fields['datef'], 'day') . '</td>'; print '<td align="left">' . dol_print_date($fields['datef'], 'day') . '</td>';
// Payment date // Payment date
if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment' || $conf->global->TAX_MODE_BUY_SERVICE == 'payment') print '<td align="left">' . dol_print_date($fields['datep'], 'day') . '</td>'; if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment' || $conf->global->TAX_MODE_BUY_SERVICE == 'payment') {
else print '<td></td>'; print '<td align="left">' . dol_print_date($fields['datep'], 'day') . '</td>';
} else {
print '<td></td>';
}
// Company name // Company name
print '<td align="left">' . $fields['company_link'] . '</td>'; print '<td align="left">' . $fields['company_link'] . '</td>';
// Description // Description
print '<td align="left">'; print '<td align="left">';
if ($fields['pid']) if ($fields['pid']) {
{ $product_static->id = $fields['pid'];
$product_static->id=$fields['pid']; $product_static->ref = $fields['pref'];
$product_static->ref=$fields['pref']; $product_static->type = $fields['dtype']; // We force with the type of line to have type how line is registered
$product_static->type=$fields['dtype']; // We force with the type of line to have type how line is registered
print $product_static->getNomUrl(1); print $product_static->getNomUrl(1);
if (dol_string_nohtmltag($fields['descr'])) { if (dol_string_nohtmltag($fields['descr'])) {
print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); print ' - ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
} }
} } else {
else
{
if ($type) { if ($type) {
$text = img_object($langs->trans('Service'),'service'); $text = img_object($langs->trans('Service'), 'service');
} else { } else {
$text = img_object($langs->trans('Product'),'product'); $text = img_object($langs->trans('Product'), 'product');
} }
if (preg_match('/^\((.*)\)$/',$fields['descr'],$reg)) { if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) {
if ($reg[1]=='DEPOSIT') { if ($reg[1] == 'DEPOSIT') {
$fields['descr']=$langs->transnoentitiesnoconv('Deposit'); $fields['descr'] = $langs->transnoentitiesnoconv('Deposit');
} elseif ($reg[1]=='CREDIT_NOTE') { } elseif ($reg[1] == 'CREDIT_NOTE') {
$fields['descr']=$langs->transnoentitiesnoconv('CreditNote'); $fields['descr'] = $langs->transnoentitiesnoconv('CreditNote');
} else { } else {
$fields['descr']=$langs->transnoentitiesnoconv($reg[1]); $fields['descr'] = $langs->transnoentitiesnoconv($reg[1]);
} }
} }
print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),24); print $text . ' ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
// Show range // Show range
print_date_range($fields['ddate_start'],$fields['ddate_end']); print_date_range($fields['ddate_start'], $fields['ddate_end']);
} }
print '</td>'; print '</td>';
// Total HT // Total HT
if ($modetax != 1) if ($modetax != 1) {
{
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
print price($fields['totalht']); print price($fields['totalht']);
if (price2num($fields['ftotal_ttc'])) if (price2num($fields['ftotal_ttc'])) {
{
//print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - "; //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
$ratiolineinvoice=($fields['dtotal_ttc']/$fields['ftotal_ttc']); $ratiolineinvoice = ($fields['dtotal_ttc'] / $fields['ftotal_ttc']);
//print ' ('.round($ratiolineinvoice*100,2).'%)'; //print ' ('.round($ratiolineinvoice*100,2).'%)';
} }
print '</td>'; print '</td>';
} }
// Payment // Payment
$ratiopaymentinvoice=1; $ratiopaymentinvoice = 1;
if ($modetax != 1) if ($modetax != 1) {
{
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
if ($fields['payment_amount'] && $fields['ftotal_ttc']) if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
{ $paymentfourn_static->id = $fields['payment_id'];
$paymentfourn_static->id=$fields['payment_id'];
print $paymentfourn_static->getNomUrl(2); print $paymentfourn_static->getNomUrl(2);
} }
if (($type == 0 && $conf->global->TAX_MODE_BUY_PRODUCT == 'invoice') if (($type == 0 && $conf->global->TAX_MODE_BUY_PRODUCT == 'invoice')
|| ($type == 1 && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) || ($type == 1 && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) {
{
print $langs->trans("NA"); print $langs->trans("NA");
} } else {
else
{
if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) {
$ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']); $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']);
} }
print price(price2num($fields['payment_amount'],'MT')); print price(price2num($fields['payment_amount'], 'MT'));
if (isset($fields['payment_amount'])) { if (isset($fields['payment_amount'])) {
print ' ('.round($ratiopaymentinvoice*100,2).'%)'; print ' (' . round($ratiopaymentinvoice * 100, 2) . '%)';
} }
} }
print '</td>'; print '</td>';
@ -694,14 +680,14 @@ if (! is_array($x_coll) || ! is_array($x_paye))
// VAT paid // VAT paid
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
$temp_ht=$fields['totalht']*$ratiopaymentinvoice; $temp_ht = $fields['totalht'] * $ratiopaymentinvoice;
print price(price2num($temp_ht,'MT'),1); print price(price2num($temp_ht, 'MT'), 1);
print '</td>'; print '</td>';
// VAT // VAT
print '<td class="nowrap" align="right">'; print '<td class="nowrap" align="right">';
$temp_vat=$fields['vat']*$ratiopaymentinvoice; $temp_vat = $fields['vat'] * $ratiopaymentinvoice;
print price(price2num($temp_vat,'MT'),1); print price(price2num($temp_vat, 'MT'), 1);
//print price($fields['vat']); //print price($fields['vat']);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -714,15 +700,16 @@ if (! is_array($x_coll) || ! is_array($x_paye))
// Total suppliers for this vat rate // Total suppliers for this vat rate
print '<tr class="liste_total">'; print '<tr class="liste_total">';
print '<td colspan="4"></td>'; print '<td colspan="4"></td>';
print '<td align="right">'.$langs->trans("Total").':</td>'; print '<td align="right">' . $langs->trans("Total") . ':</td>';
if ($modetax != 1) { if ($modetax != 1) {
print '<td class="nowrap" align="right">&nbsp;</td>'; print '<td class="nowrap" align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>'; print '<td align="right">&nbsp;</td>';
} }
print '<td align="right">'.price(price2num($subtot_paye_total_ht,'MT')).'</td>'; print '<td align="right">' . price(price2num($subtot_paye_total_ht, 'MT')) . '</td>';
print '<td class="nowrap" align="right">'.price(price2num($subtot_paye_vat,'MT')).'</td>'; print '<td class="nowrap" align="right">' . price(price2num($subtot_paye_vat, 'MT')) . '</td>';
print '</tr>'; print '</tr>';
} }
}
if (count($x_paye) == 0) { // Show a total line if nothing shown if (count($x_paye) == 0) { // Show a total line if nothing shown
print '<tr class="liste_total">'; print '<tr class="liste_total">';