Aggiornamento dei pulsanti stampe

Aggiornamento dei pulsanti stampe, ora gestiti attraverso HTMLBuilder e non con la classe principale per permettere il futuro ampliamento con le email.
Fix sui numeri di pagina per le stampe con HTML2PDF.
This commit is contained in:
Thomas Zilio 2018-02-04 17:26:25 +01:00
parent a9efec9849
commit cbabe27966
14 changed files with 215 additions and 147 deletions

View File

@ -27,10 +27,10 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<i class=\"fa fa-refresh\"></i> ".tr('Rinnova').'...
</button>';
}
echo Prints::getDropdown($id_module, $id_record);
?>
{( "name": "button", "type": "print", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
<br><br>
</div>
@ -51,8 +51,9 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="col-md-3">
<?php
if($records[0]['idagente']!=0)
if ($records[0]['idagente'] != 0) {
echo Modules::link('Anagrafiche', $records[0]['idagente'], null, null, 'class="pull-right"');
}
?>
{[ "type": "select", "label": "<?php echo tr('Agente'); ?>", "name": "idagente", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Agente' AND deleted=0 ORDER BY ragione_sociale", "value": "$idagente$" ]}
</div>
@ -117,8 +118,8 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="col-md-3">
{[ "type": "number", "label": "<?php echo tr('Sconto incondizionato') ?>", "name": "sconto_generico", "value": "$sconto_globale$", "help": "<?php echo tr('Sconto complessivo del contratto'); ?>", "icon-after": "choice|untprc|$tipo_sconto_globale$"<?php
if ($records[0]['stato'] == 'Emessa') {
echo ', "disabled" : 1';
}
echo ', "disabled" : 1';
}
?> ]}
</div>
</div>
@ -282,7 +283,6 @@ if ($records[0]['stato'] != 'Pagato') {
<a class="btn btn-primary" data-href="<?php echo $rootdir ?>/modules/contratti/add_riga.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>" data-toggle="modal" data-title="Aggiungi riga" data-target="#bs-popup"><i class="fa fa-plus"></i> <?php echo tr('Riga'); ?></a>
<a class="btn btn-primary" data-href="<?php echo $rootdir ?>/modules/contratti/add_descrizione.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>" data-toggle="modal" data-title="Aggiungi descrizione" data-target="#bs-popup"><i class="fa fa-plus"></i> <?php echo tr('Descrizione'); ?></a>
<?php
}
?>
<div class="clearfix"></div>
@ -386,7 +386,7 @@ if (!empty($fatture)) {
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
'_I_' => (count($fatture) > 1) ? tr('i') : tr('o'),
]).':</p>
<ul>';

View File

@ -58,12 +58,10 @@ if ($dir == 'uscita') {
?>
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "clienti" ]}
<?php
} else {
?>
{[ "type": "select", "label": "<?php echo tr('Fornitore'); ?>", "name": "idanagrafica", "required": 1, "value": "$idanagrafica$", "ajax-source": "fornitori" ]}
<?php
}
?>
</div>
@ -149,7 +147,6 @@ if ($records[0]['stato'] != 'Evaso') {
<i class="fa fa-plus"></i> <?php echo tr('Descrizione'); ?>
</a>
<?php
}
?>
</div>
@ -158,18 +155,16 @@ if ($records[0]['stato'] != 'Evaso') {
<!-- Stampe -->
<?php
if( !in_array( $records[0]['stato'], array( 'Bozza', 'Fatturato')) ) {
if (!in_array($records[0]['stato'], ['Bozza', 'Fatturato'])) {
?>
<a class="btn btn-sm btn-info" data-href="<?php echo $rootdir ?>/modules/fatture/crea_documento.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>&documento=fattura" data-toggle="modal" data-title="Crea fattura" data-target="#bs-popup">
<i class="fa fa-magic"></i> <?php echo tr('Crea fattura da ddt'); ?>...</i>
</a>
<?php
}
echo Prints::getDropdown($id_module, $id_record);
?>
{( "name": "button", "type": "print", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
</div>
<div class="clearfix"></div>
@ -206,9 +201,9 @@ if (!empty($fatture)) {
echo '
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
]).':</p>
'_NUM_' => count($fatture),
'_I_' => (count($fatture) > 1) ? tr('i') : tr('o'),
]).':</p>
<ul>';
foreach ($fatture as $fattura) {

View File

@ -42,7 +42,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
</div>';
$label = tr('Numero secondario');
} else {
$label = tr('Numero fattura');
$label = tr('Numero fattura');
}
?>
<div class="col-md-3">
@ -302,7 +302,7 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
<a class="btn btn-sm btn-primary" data-href="'.$rootdir.'/modules/fatture/add_riga.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi riga" data-target="#bs-popup">
<i class="fa fa-plus"></i> Riga generica
</a>';
echo '
<a class="btn btn-sm btn-primary" data-href="'.$rootdir.'/modules/fatture/add_descrizione.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi descrizione" data-target="#bs-popup">
<i class="fa fa-plus"></i> Descrizione
@ -339,7 +339,7 @@ if ($dir == 'entrata') {
echo "<div class='alert alert-warning'><i class='fa fa-warning'></i> Prima di procedere alla stampa completa i seguenti campi dell'anagrafica:<br/><b>".implode(', ', $campi_mancanti).'</b><br/>
'.Modules::link('Anagrafiche', $records[0]['idanagrafica'], tr('Vai alla scheda anagrafica'), null).'</div>';
} else {
echo Prints::getDropdown($id_module, $id_record);
echo '{( "name": "button", "type": "print", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}';
}
}
}

View File

@ -34,9 +34,8 @@ if (empty($records[0]['firma_file'])) {
<div class="pull-right">
<button type="button" class="btn btn-primary " onclick="launch_modal( '<?php echo tr('Anteprima e firma') ?>', '<?php echo $rootdir ?>/modules/interventi/add_firma.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>&anteprima=1', 1 );"><i class="fa fa-desktop"></i> <?php echo $frase ?>...</button>
<?php
echo Prints::getDropdown($id_module, $id_record);
?>
{( "name": "button", "type": "print", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
<div class="clearfix" >&nbsp;</div>
</div>
@ -310,7 +309,7 @@ if (!empty($fatture)) {
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
'_I_' => (count($fatture) > 1) ? tr('i') : tr('o'),
]).':</p>
<ul>';

View File

@ -47,7 +47,7 @@ if ($module['name'] == 'Ordini cliente') {
echo Modules::link('Anagrafiche', $records[0]['idanagrafica'], null, null, 'class="pull-right"');
if ($dir == 'entrata') {
?>
?>
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted=0 ORDER BY ragione_sociale", "value": "$idanagrafica$", "ajax-source": "clienti" ]}
<?php
} else {
@ -109,10 +109,9 @@ if ($module['name'] == 'Ordini cliente') {
<a class="btn btn-sm btn-info" data-href="<?php echo $rootdir ?>/modules/fatture/crea_documento.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>&documento=fattura" data-toggle="modal" data-title="Crea fattura" data-target="#bs-popup" ><i class="fa fa-magic"></i> Crea fattura da ordine...</i></a>
<?php
}
?>
echo Prints::getDropdown($id_module, $id_record);
?>
{( "name": "button", "type": "print", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
</div>
<div class="clearfix"></div>
<br>
@ -137,7 +136,7 @@ if (!empty($elementi)) {
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($elementi),
'_I_' => (count($elementi)>1) ? tr('i') : tr('o')
'_I_' => (count($elementi) > 1) ? tr('i') : tr('o'),
]).':</p>
<ul>';

View File

@ -17,9 +17,9 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="panel-body">
<div class="pull-right">
<?php
echo Prints::getDropdown($id_module, $id_record);
?>
{( "name": "button", "type": "print", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
<br/><br/>
</div>
@ -39,8 +39,9 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="col-md-3">
<?php
if($records[0]['idagente']!=0)
if ($records[0]['idagente'] != 0) {
echo Modules::link('Anagrafiche', $records[0]['idagente'], null, null, 'class="pull-right"');
}
?>
{[ "type": "select", "label": "<?php echo tr('Agente'); ?>", "name": "idagente", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Agente' AND deleted=0 ORDER BY ragione_sociale", "value": "$idagente$" ]}
</div>
@ -140,19 +141,17 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="panel-body">
<?php if ($records[0]['stato'] != 'Pagato') {
?>
?>
<a class="btn btn-primary" data-href="<?php echo $rootdir ?>/modules/preventivi/edit_riga.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>" data-toggle="modal" data-title="Aggiungi riga" data-target="#bs-popup"><i class="fa fa-plus"></i> Riga</a>
<a class="btn btn-primary" data-href="<?php echo $rootdir ?>/modules/preventivi/add_descrizione.php?id_module=<?php echo $id_module ?>&id_record=<?php echo $id_record ?>" data-toggle="modal" data-title="Aggiungi descrizione" data-target="#bs-popup"><i class="fa fa-plus"></i> Descrizione</a>
<?php
} ?>
} ?>
<div class="pull-right">
<?php
echo Prints::getDropdown($id_module, $id_record);
?>
{( "name": "button", "type": "print", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
</div>
<div class="clearfix"></div>
<br>
@ -180,7 +179,7 @@ if (!empty($fatture)) {
<div class="alert alert-warning">
<p>'.tr('_NUM_ altr_I_ document_I_ collegat_I_', [
'_NUM_' => count($fatture),
'_I_' => (count($fatture)>1) ? tr('i') : tr('o')
'_I_' => (count($fatture) > 1) ? tr('i') : tr('o'),
]).':</p>
<ul>';

View File

@ -84,7 +84,7 @@ class AJAX
return $results;
}
private static function getSelectResults($file, $resource, $elements = [], $search = null)
protected static function getSelectResults($file, $resource, $elements = [], $search = null)
{
$superselect = self::getSelectInfo();
@ -110,7 +110,7 @@ class AJAX
return $results;
}
private static function getSelectInfo()
protected static function getSelectInfo()
{
return !empty($_SESSION['superselect']) ? $_SESSION['superselect'] : [];
}
@ -149,7 +149,7 @@ class AJAX
return $results;
}
private static function getSearchResults($file, $term)
protected static function getSearchResults($file, $term)
{
// Database
$database = Database::getConnection();
@ -208,7 +208,7 @@ class AJAX
return $result;
}
private static function getCompleteResults($file, $resource)
protected static function getCompleteResults($file, $resource)
{
// Database
$database = Database::getConnection();

View File

@ -74,6 +74,7 @@ class HTMLBuilder
protected static $managers = [
'list' => [
'filelist_and_upload' => 'HTMLBuilder\Manager\FileManager',
'button' => 'HTMLBuilder\Manager\ButtonManager',
'csrf' => 'HTMLBuilder\Manager\CSRFManager',
],
'instances' => [],

View File

@ -0,0 +1,133 @@
<?php
namespace HTMLBuilder\Manager;
/**
* @since 2.4
*/
class ButtonManager implements ManagerInterface
{
public function manage($options)
{
$result = '';
if (isset($options['id'])) {
$result = $this->link($options);
} else {
$result = $this->dropdown($options);
}
return $result;
}
protected function getInfo($options)
{
$result = [];
if ($options['type'] == 'print') {
$print = \Prints::get($options['id']);
$result = [
'link' => \Prints::getHref($options['id'], $options['id_record'], $options['parameters']),
'title' => $print['title'],
'icon' => $print['icon'],
];
}
return $result;
}
protected function link($options)
{
$info = $this->getInfo($options);
$class = isset($options['class']) ? $options['class'] : 'btn-info';
$class = !empty($class) ? ' class="btn '.$class.'" ' : '';
$title = isset($options['label']) ? $options['label'] : $info['title'];
$icon = !empty($options['icon']) ? $options['icon'] : $info['icon'];
$icon = str_replace('|default|', $info['icon'], $icon);
return '
<a '.$class.' href="'.$info['link'].'" target="_blank"><i class="'.$icon.'"></i> '.$title.'</a>';
}
protected function getList($options)
{
$results = [];
if ($options['type'] == 'print') {
$results = \Prints::getModulePrints($options['id_module']);
}
return $results;
}
protected function dropdown($options)
{
$list = $this->getList($options);
$options['class'] = isset($options['class']) ? $options['class'] : 'btn-info';
if (count($list) > 1) {
$result = '
<div class="btn-group">';
$main = array_search(1, array_column($list, 'main'));
if ($main !== false) {
$element = $list[$main];
$result .= $this->link([
'type' => $options['type'],
'id' => $element['id'],
'id_record' => $options['id_record'],
'class' => $options['class'],
]);
unset($list[$main]);
}
$result .= '
<button type="button" class="btn '.$options['class'].' dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
'.($main === false ? $this->defaultText($options).' ' : '').'<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">';
foreach ($list as $element) {
$result .= '
<li>'.$this->link([
'type' => $options['type'],
'id' => $element['id'],
'id_record' => $options['id_record'],
'class' => false,
]).'</li>';
}
$result .= '
</ul>
</div>';
} else {
$result = $this->link([
'type' => $options['type'],
'id' => $list[0]['id']['id'],
'id_record' => $options['id_record'],
'class' => $options['class'],
]);
}
return $result;
}
protected function defaultText($options)
{
$result = '';
if ($options['type'] == 'print') {
$result = '<i class="fa fa-print"></i> '.tr('Stampe');
}
return $result;
}
}

View File

@ -384,64 +384,6 @@ class Prints
public static function getLink($print, $id_record, $btn = null, $title = null, $icon = null, $get = '')
{
$print = self::get($print);
if (empty($print)) {
return false;
}
$class = isset($btn) ? $btn : 'btn-info';
$class = !empty($class) ? ' class="btn '.$class.'" ' : '';
$title = isset($title) ? $title : $print['title'];
$icon = !empty($icon) ? $icon : $print['icon'];
$icon = str_replace('|default|', $print['icon'], $icon);
return '
<a '.$class.' href="'.self::getHref($print['id'], $id_record, $get).'" target="_blank"><i class="'.$icon.'"></i> '.$title.'</a>';
}
public static function getDropdown($module, $id_record, $class = 'btn-info')
{
$prints = self::getModulePrints($module);
if (empty($prints) || empty($id_record)) {
return false;
}
if (count($prints) > 1) {
$result = '
<div class="btn-group">';
$main = array_search(1, array_column($prints, 'main'));
if ($main !== false) {
$print = $prints[$main];
$result .= self::getLink($print['id'], $id_record, $class);
unset($prints[$main]);
}
$result .= '
<button type="button" class="btn '.$class.' dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
'.($main === false ? '<i class="fa fa-print"></i> '.tr('Stampe').' ' : '').'<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">';
foreach ($prints as $print) {
$result .= '
<li>'.self::getLink($print['id'], $id_record, false).'</li>';
}
$result .= '
</ul>
</div>';
} else {
$result = self::getLink($prints[0]['id'], $id_record, $class);
}
return $result;
return '{( "name": "button", "type": "print", "id": "'.$print.'", "id_record": "'.$id_record.'", "label": "'.$title.'", "icon": "'.$icon.'", "parameters": "'.$get.'", "class": "'.$btn.'" )}';
}
}

View File

@ -33,19 +33,7 @@ $keys = [];
// Predisposizione delle informazioni delle anagrafiche per la sostituzione automatica
foreach ($replace as $prefix => $values) {
// Individuazione dei campi minimi
$values = (array) $values;
if ($prefix == 'c_') {
$keys = array_keys($values);
}
// Se l'azienda predefinita non è impostata
if (empty($values) && $prefix == 'f_') {
$values = [];
foreach ($keys as $key) {
$values[$key] = '';
}
}
// Rinominazione dei campi
foreach ($rename as $key => $value) {
@ -53,11 +41,6 @@ foreach ($replace as $prefix => $values) {
unset($values[$key]);
}
// Salvataggio dei campi come variabili PHP
foreach ($values as $key => $value) {
${$prefix.$key} = $value;
}
// Eventuali estensioni dei contenuti
$citta = '';
if (!empty($values['cap'])) {
@ -72,13 +55,25 @@ foreach ($replace as $prefix => $values) {
$values['citta_full'] = $citta;
// Completamento dei campi minimi
if ($key == 'c_') {
$keys = array_unique(array_merge($keys, array_keys($values)));
$replace[$prefix] = $values;
// Individuazione dei campi minimi
$keys = array_merge($keys, array_keys($values));
}
$keys = array_unique($keys);
foreach ($replace as $prefix => $values) {
// Impostazione di default per le informazioni mancanti
foreach ($keys as $key) {
if (!isset($values[$key])) {
$values[$key] = '';
}
}
// Aggiunta delle informazioni per la sostituzione automatica
// Salvataggio dei campi come variabili PHP e aggiunta delle informazioni per la sostituzione automatica
foreach ($values as $key => $value) {
${$prefix.$key} = $value;
$replaces[$prefix.$key] = $value;
}
}
@ -93,3 +88,5 @@ $replaces = array_merge($replaces, [
'footer' => !empty($footer) ? $footer : '',
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
]);
unset($replace);

View File

@ -7,7 +7,7 @@ include_once $docroot.'/modules/interventi/modutil.php';
$module_name = 'Interventi';
// carica intervento
$query = 'SELECT in_interventi.*, (SELECT numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_righe_contratti WHERE idintervento=in_interventi.id)) AS numero_contratto, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipointervento FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($idintervento).' '.Modules::getAdditionalsQuery('Interventi');
$query = 'SELECT in_interventi.*, (SELECT numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_righe_contratti WHERE idintervento=in_interventi.id)) AS numero_contratto, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipointervento FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery('Interventi');
$records = $dbo->fetchArray($query);
$costi_intervento = get_costi_intervento($id_record);

View File

@ -51,11 +51,11 @@ if ($_GET['lev'] == '3') {
<col width='80'><col width='452'><col width='80'><col width='80'>
<tbody>\n";
// Inizializzo saldo finale
$saldo_finale = 0;
// Inizializzo saldo finale
$saldo_finale = 0;
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
$saldo_iniziale = $rs[0]['totale'];
$saldo_finale = $saldo_iniziale;
@ -93,8 +93,8 @@ if ($_GET['lev'] == '3') {
$avere = '';
}
// Mostro il saldo finale
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO FINALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale(abs($dare))."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale(abs($avere))."</b></td></tr>\n";
// Mostro il saldo finale
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO FINALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale(abs($dare))."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale(abs($avere))."</b></td></tr>\n";
$body .= " </tbody>
</table>\n";
@ -106,15 +106,15 @@ elseif ($_GET['lev'] == '2') {
<col width='80'><col width='452'><col width='80'><col width='80'>
<tbody>\n";
// Ciclo fra i sotto-conti di livello 2
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
// Ciclo fra i sotto-conti di livello 2
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
for ($z = 0; $z < sizeof($rs3); ++$z) {
// Inizializzo saldo finale
$saldo_finale = 0;
$saldo_finale = 0;
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
// Calcolo saldo iniziale
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
$saldo_iniziale = $rs[0]['totale'];
$saldo_finale = $saldo_iniziale;
@ -146,8 +146,8 @@ elseif ($_GET['lev'] == '2') {
$avere = Translator::numberToLocale(abs($totale));
}
// Mostro il saldo finale del conto di livello 3
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
// Mostro il saldo finale del conto di livello 3
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
}
$body .= " </tbody>
@ -165,18 +165,18 @@ elseif ($_GET['lev'] == '1') {
<col width='80'><col width='452'><col width='80'><col width='80'>
<tbody>\n";
// Ciclo fra il conto principale scelto (Economico o Patrimoniale)
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC');
// Ciclo fra il conto principale scelto (Economico o Patrimoniale)
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC');
for ($x = 0; $x < sizeof($rs1); ++$x) {
// Ciclo fra i sotto-conti di livello 1
$rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"');
$rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"');
for ($y = 0; $y < sizeof($rs2); ++$y) {
$body .= " <tr><th class='bb padded' colspan='4'><b>".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']."</b></th></tr>\n";
// Ciclo fra i sotto-conti di livello 2
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
// Ciclo fra i sotto-conti di livello 2
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
for ($z = 0; $z < sizeof($rs3); ++$z) {
$dare = 0;
@ -206,8 +206,8 @@ elseif ($_GET['lev'] == '1') {
$ricavi += abs($avere);
}
// Mostro il saldo finale del conto di livello 3
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".Translator::numberToLocale(abs($dare))."</td><td class='bb padded text-right'>".Translator::numberToLocale(abs($avere))."</td></tr>\n";
// Mostro il saldo finale del conto di livello 3
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".Translator::numberToLocale(abs($dare))."</td><td class='bb padded text-right'>".Translator::numberToLocale(abs($avere))."</td></tr>\n";
}
}
}

View File

@ -3,7 +3,10 @@
include_once __DIR__.'/info.php';
// Retrocompatibilità con le stampe gestite da HTML2PDF
$replaces['pagination'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['pagination']);
$replaces['default_header'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['default_header']);
$replaces['footer'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['footer']);
$replaces['default_footer'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['default_footer']);
$prefixes = [
'c_',