fix: stampa fattura e ordine con riferimenti raggruppati

This commit is contained in:
valentina 2024-11-07 11:07:38 +01:00
parent 4d6e768844
commit 4e40f492d5
3 changed files with 25 additions and 34 deletions

View File

@ -49,12 +49,10 @@ class Autofill
{ {
$count = ceil(strlen((string) $text) / $this->char_number); $count = ceil(strlen((string) $text) / $this->char_number);
// Ricerca dei caratteri a capo // Ricerca dei caratteri a capo e <br>
preg_match_all("/(\r\n|\r|\n)/", (string) $text, $matches); preg_match_all("/(\r\n|\r|\n|<br\s*\/?>)/", (string) $text, $matches);
$count += count($matches[0]); $count += count($matches[0]);
if ($small) { if ($small || $count != 1) {
$count *= 1.5;
} elseif ($count != 1) {
$count /= 1.538461538; $count /= 1.538461538;
} }

View File

@ -77,8 +77,6 @@ foreach ($righe as $riga) {
++$num; ++$num;
$r = $riga->toArray(); $r = $riga->toArray();
$autofill->count($r['descrizione']);
$v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $riga->iva); $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $riga->iva);
$v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], $riga->totale_imponibile); $v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], $riga->totale_imponibile);
@ -97,11 +95,11 @@ foreach ($righe as $riga) {
$text = $text.'<b>Ordine n. '.$riga_ordine['numero_cliente'].' del '.Translator::dateToLocale($riga_ordine['data_cliente']).'</b><br>'; $text = $text.'<b>Ordine n. '.$riga_ordine['numero_cliente'].' del '.Translator::dateToLocale($riga_ordine['data_cliente']).'</b><br>';
} }
} }
$r['descrizione'] = str_replace('Rif. '.strtolower((string) $key), '', $r['descrizione']); $r['descrizione'] = str_replace("\nRif. ".strtolower((string) $key), '', $r['descrizione']);
if (preg_match("/Rif\.(.*)/s", $r['descrizione'], $rif2)) { if (preg_match("/Rif\.(.*)/s", $r['descrizione'], $rif2)) {
$r['descrizione'] = str_replace('Rif.'.strtolower($rif2[1] ?: ''), '', $r['descrizione']); $r['descrizione'] = str_replace('\nRif.'.strtolower($rif2[1] ?: ''), '', $r['descrizione']);
$text .= '<b>'.$rif2[0].'</b>'; $text .= '<b>'.$rif2[0].'</b><br>';
} }
$text .= '<b>'.$key.'</b></td><td></td><td></td><td></td><td></td></tr><tr><td class="text-center" nowrap="nowrap" style="vertical-align: middle">'; $text .= '<b>'.$key.'</b></td><td></td><td></td><td></td><td></td></tr><tr><td class="text-center" nowrap="nowrap" style="vertical-align: middle">';
@ -111,26 +109,23 @@ foreach ($righe as $riga) {
<td> <td>
'.nl2br($text); '.nl2br($text);
$autofill->count($text);
} }
} }
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", ' ', (string) $r['descrizione']); $r['descrizione'] = preg_replace("/(\r\n|\r|\n)Rif\.(.*)/s", '', (string) $r['descrizione']);
$autofill->count($r['descrizione']);
} }
$source_type = $riga::class; $source_type = $riga::class;
if (setting('Visualizza riferimento su ogni riga in stampa')) {
$autofill->count($r['descrizione']);
echo $num.' echo $num.'
</td> </td>
<td>'.nl2br((string) $r['descrizione']).'<br>'; <td>'.nl2br((string) $r['descrizione']);
} else {
echo $num.'
</td>
<td>'.nl2br((string) $r['descrizione']);
}
if ($riga->isArticolo()) { if ($riga->isArticolo()) {
echo '<small>'.$riga->codice.'</small>'; echo '<small><br>'.$riga->codice.'</small>';
} $autofill->count($riga->codice, true);
}
if ($riga->isArticolo()) { if ($riga->isArticolo()) {
// Seriali // Seriali
@ -252,7 +247,7 @@ echo '
if (!empty($record['note'])) { if (!empty($record['note'])) {
echo ' echo '
<p class="small-bold text-muted">'.tr('Note', [], ['upper' => true]).':</p> <p class="small-bold text-muted">'.tr('Note', [], ['upper' => true]).':</p>
<p>'.nl2br((string) $record['note']).'</p>'; <p><small>'.nl2br((string) $record['note']).'</small></p>';
$autofill->count($record['note'], true); $autofill->count($record['note'], true);
} }

View File

@ -54,15 +54,13 @@ if ($has_image) {
if ($documento->direzione == 'uscita') { if ($documento->direzione == 'uscita') {
$columns += 2; $columns += 2;
$char_number = $options['pricing'] ? 26 : 63; }
} else {
$char_number = $options['pricing'] ? 45 : 82;
}
$columns = $options['pricing'] ? $columns : $columns - 3; $columns = $options['pricing'] ? $columns : $columns - 3;
// Creazione righe fantasma // Creazione righe fantasma
$autofill = new Util\Autofill($columns); $autofill = new Util\Autofill($columns);
$autofill->setRows(20, 10); $autofill->setRows(30, 0, 34);
// Intestazione tabella per righe // Intestazione tabella per righe
echo " echo "
@ -107,8 +105,6 @@ foreach ($righe as $riga) {
++$num; ++$num;
$r = $riga->toArray(); $r = $riga->toArray();
$autofill->count($r['descrizione']);
echo ' echo '
<tr> <tr>
<td class="text-center" style="vertical-align: middle">'; <td class="text-center" style="vertical-align: middle">';
@ -122,11 +118,11 @@ foreach ($righe as $riga) {
if (!empty($riga_ordine['numero_cliente']) && !empty($riga_ordine['data_cliente'])) { if (!empty($riga_ordine['numero_cliente']) && !empty($riga_ordine['data_cliente'])) {
$text = $text.'<b>Ordine n. '.$riga_ordine['numero_cliente'].' del '.Translator::dateToLocale($riga_ordine['data_cliente']).'</b><br>'; $text = $text.'<b>Ordine n. '.$riga_ordine['numero_cliente'].' del '.Translator::dateToLocale($riga_ordine['data_cliente']).'</b><br>';
} }
$r['descrizione'] = str_replace('Rif. '.strtolower((string) $key), '', $r['descrizione']); $r['descrizione'] = str_replace("\nRif. ".strtolower((string) $key), '', $r['descrizione']);
if (preg_match("/Rif\.(.*)/s", $r['descrizione'], $rif2)) { if (preg_match("/Rif\.(.*)/s", $r['descrizione'], $rif2)) {
$r['descrizione'] = str_replace('Rif.'.strtolower($rif2[1] ?: ''), '', $r['descrizione']); $r['descrizione'] = str_replace('\nRif.'.strtolower($rif2[1] ?: ''), '', $r['descrizione']);
$text .= '<b>'.$rif2[0].'</b>'; $text .= '<b>'.$rif2[0].'</b><br>';
} }
$text .= '<b>'.$key.'</b></td>'; $text .= '<b>'.$key.'</b></td>';
@ -151,7 +147,7 @@ foreach ($righe as $riga) {
'.nl2br($text); '.nl2br($text);
} }
} }
$r['descrizione'] = preg_replace("/Rif\.(.*)/s", '', (string) $r['descrizione']); $r['descrizione'] = preg_replace("/(\r\n|\r|\n)Rif\.(.*)/s", '', (string) $r['descrizione']);
$autofill->count($r['descrizione']); $autofill->count($r['descrizione']);
} }
@ -172,6 +168,7 @@ foreach ($righe as $riga) {
echo ' echo '
<td>'.$r['descrizione']; <td>'.$r['descrizione'];
} else { } else {
$autofill->count($r['descrizione']);
echo $num.' echo $num.'
</td>'; </td>';
if ($has_image) { if ($has_image) {
@ -282,6 +279,7 @@ foreach ($righe as $riga) {
echo ' echo '
<td></td> <td></td>
<td></td> <td></td>
<td></td>
<td></td>'; <td></td>';
} }
} }