Aggiunto export stampe per le fatture

This commit is contained in:
Thomas Zilio 2017-09-06 11:59:47 +02:00
parent 287995f785
commit 46910d85d6
10 changed files with 119 additions and 28 deletions

View File

@ -235,6 +235,7 @@ if (Modules::getPermission($permesso) == 'rw') {
// Esecuzione delle operazioni di gruppo
$id_records = post('id_records');
$id_records = is_array($id_records) ? $id_records : explode(',', $id_records);
$id_records = array_filter($id_records, function($var){return !empty($var);} );
$id_records = array_unique($id_records);
$bulk = null;
@ -245,7 +246,7 @@ if (Modules::getPermission($permesso) == 'rw') {
}
$bulk = (array) $bulk;
if (in_array(post('op'), $bulk)) {
if (in_array(post('op'), array_keys($bulk))) {
redirect(ROOTDIR.'/controller.php?id_module='.$id_module, 'js');
} else {
// Esecuzione delle operazioni del modulo

View File

@ -141,15 +141,23 @@ if (!empty($module_options) && $module_options != 'menu' && $module_options != '
<ul class="dropdown-menu" data-target="'.$table_id.'" role="menu">';
foreach ($bulk as $key => $value) {
$text = is_array($value) ? $value['text'] : $value;
$data = is_array($value) ? $value['data'] : [];
$extra = [];
foreach ($data as $k => $v) {
$extra[] = 'data-'.$k.'="'.$v.'"';
}
echo '
<li role="presentation"><a class="bulk-action" data-op="'.$value.'">'.$key.'</a></li>';
<li role="presentation"><a class="bulk-action" data-op="'.$key.'" '.implode(' ', $extra).'>'.$text.'</a></li>';
}
echo '
</ul>';
}
echo '
echo '
</div>
<div class="col-xs-12 col-md-5 text-right">

View File

@ -235,25 +235,24 @@ function do_backup()
}
// Creazione cartella temporanea
if (!file_exists($backup_dir.$tmp_backup_dir)) {
if (@mkdir($backup_dir.$tmp_backup_dir)) {
$do_backup = true;
} else {
$do_backup = false;
}
} else {
if (file_exists($backup_dir.$tmp_backup_dir) || @mkdir($backup_dir.$tmp_backup_dir)) {
$do_backup = true;
} else {
$do_backup = false;
}
if ($do_backup) {
$database_file = 'backup database.sql';
$backup_file = 'OSM backup '.date('Y-m-d').' '.date('H_i_s').'.zip';
// Dump database
$dump = "SET foreign_key_checks = 0;\n";
$dump .= backup_tables();
file_put_contents($backup_dir.$tmp_backup_dir.$database_file, $dump);
// Copia file di OSM (escludendo la cartella di backup)
copyr(DOCROOT, $backup_dir.$tmp_backup_dir, [slashes($backup_dir), '.svn', '.git', 'config.inc.php', 'node_modules']);
// Creazione zip
if (extension_loaded('zip')) {
if (create_zip($backup_dir.$tmp_backup_dir, $backup_dir.$backup_file)) {
@ -261,13 +260,13 @@ function do_backup()
} else {
$_SESSION['errors'][] = tr('Errore durante la creazione del backup!');
}
// Rimozione cartella temporanea
deltree($backup_dir.$tmp_backup_dir);
} else {
$_SESSION['infos'][] = tr('Nuovo backup creato!');
}
// Rimozione cartella temporanea
if (extension_loaded('zip')) {
deltree($backup_dir.$tmp_backup_dir);
}
// Eliminazione vecchi backup se ce ne sono
$max_backups = intval(get_var('Numero di backup da mantenere'));
// Lettura file di backup
@ -281,6 +280,7 @@ function do_backup()
}
}
closedir($handle);
if (count($backups) > $max_backups) {
// Fondo e ordino i backup dal più recente al più vecchio
arsort($backups);
@ -314,6 +314,7 @@ function do_backup()
function backup_tables($tables = '*')
{
$dbo = Database::getConnection();
if ($tables == '*') {
$tables = [];
$result = $dbo->fetchArray('SHOW TABLES', true);
@ -325,10 +326,12 @@ function backup_tables($tables = '*')
} else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
// Eliminazione di tutte le tabelle
foreach ($tables as $table) {
$return .= "DROP TABLE IF EXISTS `$table`;\n";
}
// Ricreazione della struttura di ogni tabella e ri-popolazione database
foreach ($tables as $table) {
$result = $dbo->fetchArray('SELECT * FROM '.$table, true);

View File

@ -22,5 +22,5 @@ switch (post('op')) {
}
return [
tr('Elimina selezione') => 'delete-bulk',
'delete-bulk' => tr('Elimina selezione'),
];

View File

@ -237,9 +237,12 @@ switch (post('op')) {
break;
case 'delete':
// Fix per i seriali utilizzati
$dbo->query('UPDATE mg_prodotti SET id_articolo = NULL WHERE id_articolo='.prepare($id_record));
$dbo->query('DELETE FROM mg_articoli WHERE id='.prepare($id_record));
$dbo->query('DELETE FROM mg_movimenti WHERE idarticolo='.prepare($id_record));
$dbo->query('DELETE FROM mg_prodotti WHERE id_articolo='.prepare($id_record));
//$dbo->query('DELETE FROM mg_prodotti WHERE id_articolo='.prepare($id_record));
$dbo->query('DELETE FROM mg_articoli_automezzi WHERE idarticolo='.prepare($id_record));
$_SESSION['infos'][] = tr('Articolo eliminato!');

View File

@ -80,17 +80,17 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr("Abilita serial number"); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>" ]}
{[ "type": "checkbox", "label": "<?php echo tr('Abilita serial number'); ?>", "name": "abilita_serial", "value": "$abilita_serial$", "help": "", "placeholder": "<?php echo tr('Abilita serial number in fase di aggiunta articolo in fattura o ddt'); ?>" ]}
</div>
<?php
if(empty($records[0]['abilita_serial'])){
$plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'");
if (empty($records[0]['abilita_serial'])) {
$plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Serial'");
echo '
echo '
<script>
$("#link-tab_'.$plugin[0]['id'].'").addClass("disabled");
</script>';
}
}
?>
</div>
@ -174,8 +174,8 @@ if(empty($records[0]['abilita_serial'])){
genera_form_componente($records[0]['contenuto']);
echo "
</div>";
echo '
</div>';
echo '
</div>
@ -190,7 +190,7 @@ echo '
$rsl = $dbo->fetchArray('SELECT * FROM mg_listini ORDER BY id ASC');
$rsart = $dbo->fetchArray("SELECT id, prezzo_vendita FROM mg_articoli WHERE id=".prepare($id_record));
$rsart = $dbo->fetchArray('SELECT id, prezzo_vendita FROM mg_articoli WHERE id='.prepare($id_record));
if (count($rsl) > 0) {
echo '
@ -234,7 +234,7 @@ echo '
<div class="panel-body">';
// Quantità nell'automezzo
$rsa = $dbo->fetchArray("SELECT qta, (SELECT nome FROM dt_automezzi WHERE id=idautomezzo) AS nome, (SELECT targa FROM dt_automezzi WHERE id=idautomezzo) AS targa FROM mg_articoli_automezzi WHERE idarticolo=".prepare($id_record));
$rsa = $dbo->fetchArray('SELECT qta, (SELECT nome FROM dt_automezzi WHERE id=idautomezzo) AS nome, (SELECT targa FROM dt_automezzi WHERE id=idautomezzo) AS targa FROM mg_articoli_automezzi WHERE idarticolo='.prepare($id_record));
if (count($rsa) > 0) {
echo '
@ -276,3 +276,21 @@ $("#categoria").change( function(){
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
$count = $dbo->fetchArray('SELECT COUNT(*) AS tot FROM (
SELECT `idarticolo` FROM `co_righe_documenti` WHERE `idarticolo` = '.prepare($id_record).' UNION
SELECT `idarticolo` FROM `dt_righe_ddt` WHERE `idarticolo` = '.prepare($id_record).' UNION
SELECT `idarticolo` FROM `or_righe_ordini` WHERE `idarticolo` = '.prepare($id_record).' UNION
SELECT `idarticolo` FROM `mg_articoli_interventi` WHERE `idarticolo` = '.prepare($id_record).'
) AS count');
$tot = $count[0]['tot'];
if ($tot > 0) {
echo '
<div class="alert alert-danger">
'.str_replace('_NUM_', $tot, tr('Ci sono _NUM_ righe di documenti collegate')).'.
'.tr('Eliminando questo articolo si potrebbero verificare problemi nelle altre sezioni del gestionale!').'
</div>';
}

55
modules/fatture/bulk.php Normal file
View File

@ -0,0 +1,55 @@
<?php
include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'export-bulk':
$dir = DOCROOT.'/files/export_fatture/';
// Selezione delle fatture da stampare
$records = $dbo->fetchArray('SELECT co_documenti.id, numero_esterno, data, ragione_sociale, co_tipidocumento.descrizione FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id IN('.implode(',', $id_records).')');
foreach ($records as $r) {
$numero = !empty($r['numero_esterno']) ? $r['numero_esterno'] : $r['numero'];
$numero = str_replace(['/', '\\'], '-', $numero);
// Gestione della stampa
$rapportino_nome = sanitizeFilename($numero.' '.$r['data'].' '.$r['ragione_sociale'].'.pdf');
$filename = slashes($dir.$rapportino_nome);
$_GET['iddocumento'] = $r['id']; // Fix temporaneo per la stampa
$iddocumento = $r['id']; // Fix temporaneo per la stampa
$ptype = ($r['descrizione'] == 'Fattura accompagnatoria di vendita') ? 'fatture_accompagnatorie' : 'fatture';
require DOCROOT.'/pdfgen.php';
}
$dir = slashes($dir);
$file = slashes($dir.'fatture.zip');
// Creazione zip
if (extension_loaded('zip')) {
create_zip($dir, $file);
} else {
system('zip -9 -r -j "'.$file.'" "'.$dir.'"');
}
// Invio al browser dello zip
force_download($dir.'/fatture.zip');
// Rimozione cartella temporeanea
deltree($dir);
break;
}
return [
'export-bulk' => [
'text' => tr('Esporta stampe'),
'data' => [
'msg' => tr('Vuoi davvero esportare tutte le stampe in un archivio?'),
'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning',
],
],
];

View File

@ -33,7 +33,7 @@ UNION SELECT id FROM co_documenti WHERE idporto='.prepare($id_record).'
UNION SELECT id FROM co_preventivi WHERE idporto='.prepare($id_record));
echo '
<div class="alert alert-danger" style="margin:0px;">
<div class="alert alert-danger">
'.str_replace('_NUM_', count($documenti), tr('Ci sono _NUM_ documenti collegati')).'.
</div>';

View File

@ -80,8 +80,8 @@ $interventi = $dbo->fetchArray('SELECT COUNT(*) AS tot_interventi FROM in_interv
$tot_interventi = $interventi[0]['tot_interventi'];
if ($tot_interventi > 0) {
echo '
<div class="alert alert-danger" style="margin:0px;">
<div class="alert alert-danger">
'.str_replace('_NUM_', $tot_interventi, tr('Ci sono _NUM_ interventi collegati')).'.
'.tr('Eliminando questo tipo di attività, vengono rimossi anche gli interventi collegati!').'.
'.tr('Eliminando questo tipo di attività, vengono rimossi anche gli interventi collegati!').'
</div>';
}

View File

@ -51,6 +51,9 @@ if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
} else {
include $docroot.'/templates/'.$ptype.'/pdfgen.'.$ptype.'.php';
}
// Operazioni di sostituzione
include $docroot.'/templates/pdfgen_variables.php';
}
// Sostituzione di variabili generiche