Aggiunto export stampe per le fatture
This commit is contained in:
parent
287995f785
commit
46910d85d6
|
@ -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
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -22,5 +22,5 @@ switch (post('op')) {
|
|||
}
|
||||
|
||||
return [
|
||||
tr('Elimina selezione') => 'delete-bulk',
|
||||
'delete-bulk' => tr('Elimina selezione'),
|
||||
];
|
||||
|
|
|
@ -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!');
|
||||
|
|
|
@ -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>';
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
],
|
||||
],
|
||||
];
|
|
@ -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>';
|
||||
|
||||
|
|
|
@ -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>';
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue