Estrazione ZIP per import FE

This commit is contained in:
Thomas Zilio 2019-11-15 15:11:20 +01:00
parent 5bbada6ebf
commit 618e195c34
17 changed files with 69 additions and 78 deletions

View File

@ -44,6 +44,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Supporto alla selezione della lingua durante la configurazione
- Gestione dei permessi per gruppi all'interno del sistema di **Gestione documentale**
- Supporto agli sconti combinati nel modulo **Listini**
- Supporto al caricamento di archivi ZIP per le *Fatture Elettroniche* di acquisto da importare (solo estrazione)
### Modificato (Changed)

View File

@ -266,7 +266,6 @@ switch (post('op')) {
SELECT `in_interventi`.`codice` AS `codice`, `in_interventi`.`id` AS `id`, 0 AS `numero`, 0 AS `numero_esterno`, `in_interventi`.`data_richiesta` AS `data`, 0 AS `tipo_documento`, 0 AS `dir` FROM `in_interventi` WHERE `in_interventi`.`id_contratto` = '.prepare($id_record).' ORDER BY `data` ');
if (empty($elementi)) {
try {
$contratto->delete();
@ -278,7 +277,6 @@ switch (post('op')) {
} catch (InvalidArgumentException $e) {
flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
}
}
break;

View File

@ -2,13 +2,11 @@
include_once __DIR__.'/../../core.php';
$rs_documento = $dbo->fetchArray('SELECT * FROM co_righe_contratti WHERE idcontratto='.prepare($id_record));
$disabled = $record['is_fatturabile'] && !empty($rs_documento);
$stati_fatturabili= $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_abilitati FROM `co_staticontratti` WHERE `is_fatturabile` = 1')['stati_abilitati'];
$stati_fatturabili = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_abilitati FROM `co_staticontratti` WHERE `is_fatturabile` = 1')['stati_abilitati'];
/* permetto di fatturare il contratto solo se contiene righe e si trova in uno stato fatturabile */
echo '
@ -16,22 +14,19 @@ echo '
<i class="fa fa-magic"></i> '.tr('Crea fattura').'
</button>';
$rinnova = !empty($record['data_accettazione']) && !empty($record['data_conclusione']) && $record['data_accettazione'] != '0000-00-00' && $record['data_conclusione'] != '0000-00-00' && $record['is_pianificabile'] && $record['rinnovabile'];
$stati_pianificabili = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_pianificabili FROM `co_staticontratti` WHERE `is_pianificabile` = 1')['stati_pianificabili'];
echo '
<button type="button" class="btn btn-warning ask '.($rinnova ? '' : 'disabled tip').'" data-backto="record-edit" data-op="renew" data-msg="'.tr('Rinnovare questo contratto?').'" data-button="'.tr('Rinnova').'" data-class="btn btn-lg btn-warning" '.($rinnova ? '' : 'disabled').' title="'.( ($rinnova) ? '' : tr('Il contratto è rinnovabile se sono definite le date di accettazione e conclusione e si trova in uno stato di questi stati: '.$stati_pianificabili)).'">
<button type="button" class="btn btn-warning ask '.($rinnova ? '' : 'disabled tip').'" data-backto="record-edit" data-op="renew" data-msg="'.tr('Rinnovare questo contratto?').'" data-button="'.tr('Rinnova').'" data-class="btn btn-lg btn-warning" '.($rinnova ? '' : 'disabled').' title="'.(($rinnova) ? '' : tr('Il contratto è rinnovabile se sono definite le date di accettazione e conclusione e si trova in uno stato di questi stati: '.$stati_pianificabili)).'">
<i class="fa fa-refresh"></i> '.tr('Rinnova').'...
</button>';
// Duplica contratto
echo'
<button type="button" class="btn btn-primary" onclick="if( confirm(\''.tr('Duplicare questo contratto?').'\') ){ $(\'#copia-contratto\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica contratto').'</button>';
echo '
<form action="" method="post" id="copia-contratto">
<input type="hidden" name="backto" value="record-edit">

View File

@ -105,7 +105,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
</div>
<div class="col-md-3">
{[ "type": "number", "label": "<?php echo tr('Ore rimanenti rinnovo'); ?>", "name": "ore_preavviso_rinnovo", "decimals": "0", "value": "$ore_preavviso_rinnovo$", "icon-after": "ore", "disabled": <?php echo $record['rinnovabile'] ? 0 : 1; ?>, "help": "<?php echo tr("Ore residue nel contratto prima di visualizzare una avviso per un eventuale rinnovo anticipato."); ?>" ]}
{[ "type": "number", "label": "<?php echo tr('Ore rimanenti rinnovo'); ?>", "name": "ore_preavviso_rinnovo", "decimals": "0", "value": "$ore_preavviso_rinnovo$", "icon-after": "ore", "disabled": <?php echo $record['rinnovabile'] ? 0 : 1; ?>, "help": "<?php echo tr('Ore residue nel contratto prima di visualizzare una avviso per un eventuale rinnovo anticipato.'); ?>" ]}
</div>
</div>
@ -391,7 +391,6 @@ $elementi = $dbo->fetchArray('SELECT 0 AS `codice`, `co_documenti`.`id` AS `id`,
UNION
SELECT `in_interventi`.`codice` AS `codice`, `in_interventi`.`id` AS `id`, 0 AS `numero`, 0 AS `numero_esterno`, `in_interventi`.`data_richiesta` AS `data`, 0 AS `tipo_documento`, 0 AS `dir` FROM `in_interventi` WHERE `in_interventi`.`id_contratto` = '.prepare($id_record).' ORDER BY `data` ');
if (!empty($elementi)) {
echo '
<div class="box box-warning collapsable collapsed-box">
@ -408,8 +407,7 @@ if (!empty($elementi)) {
// Elenco attività o contratti collegati
foreach ($elementi as $riga) {
if (!empty($riga['dir'])){
if (!empty($riga['dir'])) {
$descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [
'_DOC_' => $riga['tipo_documento'],
'_NUM_' => !empty($riga['numero_esterno']) ? $riga['numero_esterno'] : $riga['numero'],
@ -421,9 +419,7 @@ if (!empty($elementi)) {
echo '
<li>'.Modules::link($modulo, $id, $descrizione).'</li>';
}else{
} else {
$descrizione = tr('Intervento num. _NUM_ del _DATE_', [
'_NUM_' => $riga['codice'],
'_DATE_' => Translator::dateToLocale($riga['data']),
@ -434,9 +430,7 @@ if (!empty($elementi)) {
echo '
<li>'.Modules::link($modulo, $id, $descrizione).'</li>';
}
}
echo '
@ -450,16 +444,13 @@ if (!empty($elementi)) {
<div class="alert alert-error">
'.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale').'.
</div>';
}else{
?>
} else {
?>
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
</a>
<?php
}
}
?>

View File

@ -54,7 +54,7 @@ switch (post('op')) {
if ($dir == 'entrata') {
$fattura->data_registrazione = post('data');
}else{
} else {
$fattura->data_registrazione = post('data_registrazione');
}

View File

@ -147,7 +147,7 @@ if (empty($record['is_fiscale'])) {
?>
<?php if ($dir == 'entrata') {
$readonly = '"readonly":1,';
}
}
?>
<div class="col-md-2">

View File

@ -2,8 +2,8 @@
include_once __DIR__.'/../../core.php';
use Modules\Fatture\Fattura;
use Modules\Anagrafiche\Anagrafica;
use Modules\Fatture\Fattura;
$module = Modules::get('Prima nota');
@ -92,9 +92,9 @@ foreach ($id_documenti as $id_documento) {
continue;
}
if($fattura->idanagrafica!=$idanagrafica_mov && $idanagrafica_mov!=''){
if ($fattura->idanagrafica != $idanagrafica_mov && $idanagrafica_mov != '') {
$idanagrafica_mov = 0;
}else{
} else {
$idanagrafica_mov = $fattura->idanagrafica;
}
@ -176,11 +176,11 @@ $righe = array_merge($righe, $riga_documento);
$numero_scadenze = count($id_scadenze);
$numero_documenti = count($id_documenti);
if ($numero_documenti + $numero_scadenze > 1) {
if($idanagrafica_mov!=0){
if ($idanagrafica_mov != 0) {
$an = Anagrafica::find($idanagrafica_mov);
$descrizione = 'Pag. fatture '.$an->ragione_sociale.' num. '.implode(', ', $numeri);
}else{
} else {
$descrizione = 'Pag. fatture num. '.implode(', ', $numeri);
}
} elseif ($numero_documenti == 1) {

View File

@ -57,8 +57,6 @@ if (!empty($contratti)) {
</div>';
}
if (!empty($record['can_delete'])) {
echo '
<a class="btn btn-danger ask" data-backto="record-list">

View File

@ -1,7 +1,6 @@
<?php
include_once __DIR__.'/../../core.php';
if ($record['can_delete']) {
$attr = '';
} else {
@ -58,7 +57,6 @@ if (!empty($preventivi)) {
</div>';
}
if (!empty($record['can_delete'])) {
echo '
<a class="btn btn-danger ask" data-backto="record-list">

View File

@ -66,10 +66,7 @@ switch (post('op')) {
SELECT `co_contratti_tipiintervento`.`idtipointervento` FROM `co_contratti_tipiintervento` WHERE `co_contratti_tipiintervento`.`idtipointervento` = '.prepare($id_record).'
ORDER BY `idtipointervento`');
if (empty($elementi)) {
$query = 'DELETE FROM in_tipiintervento WHERE idtipointervento='.prepare($id_record);
$dbo->query($query);
@ -79,9 +76,9 @@ switch (post('op')) {
flash()->info(tr('Tipo di intervento eliminato!'));
break;
}
// no break
case 'import':
$values = [
'costo_ore' => $record['costo_orario'],

View File

@ -85,7 +85,6 @@ UNION
SELECT `co_contratti_tipiintervento`.`idtipointervento` FROM `co_contratti_tipiintervento` WHERE `co_contratti_tipiintervento`.`idtipointervento` = '.prepare($id_record).'
ORDER BY `idtipointervento`');
if (!empty($elementi)) {
echo '
<div class="alert alert-danger">

View File

@ -84,8 +84,8 @@ if (!empty($options) && $options != 'custom' && $options != 'menu') {
echo '
<div class="nav-tabs-custom">
<ul class="nav nav-tabs nav-justified">
<li class="active"><a data-toggle="tab" href="#fields">'.tr('Campi').' <span class="badge">'.( $dbo->fetchNum('SELECT * FROM zz_views WHERE id_module='.prepare($record['id']).' ORDER BY `order` ASC')).'</a></li>
<li><a data-toggle="tab" href="#filters">'.tr('Filtri').' <span class="badge">'.( $dbo->fetchNum('SELECT * FROM zz_group_module WHERE idmodule='.prepare($record['id']).' ORDER BY `id` ASC')).'</span></a></li>
<li class="active"><a data-toggle="tab" href="#fields">'.tr('Campi').' <span class="badge">'.($dbo->fetchNum('SELECT * FROM zz_views WHERE id_module='.prepare($record['id']).' ORDER BY `order` ASC')).'</a></li>
<li><a data-toggle="tab" href="#filters">'.tr('Filtri').' <span class="badge">'.($dbo->fetchNum('SELECT * FROM zz_group_module WHERE idmodule='.prepare($record['id']).' ORDER BY `id` ASC')).'</span></a></li>
</ul>
<div class="tab-content">

View File

@ -10,10 +10,8 @@ echo '
$num = 0;
$additionals = $dbo->fetchArray('SELECT * FROM zz_group_module WHERE idmodule='.prepare($record['id']).' ORDER BY `id` ASC');
if (!empty($additionals)){
foreach ($additionals as $num => $additional) {
if (!empty($additionals)) {
foreach ($additionals as $num => $additional) {
$editable = !($additional['default'] && $enable_readonly);
echo '
@ -68,15 +66,13 @@ foreach ($additionals as $num => $additional) {
</div>
</div>';
}
}else{
}
} else {
echo '<br>
<div class="alert alert-info">
<i class="fa fa-info-circle"></i>
<b>'.tr('Informazione:').'</b> '.tr('Nessun filtro per questo modulo').'.
</div>';
}
echo '

View File

@ -15,8 +15,24 @@ switch (filter('op')) {
break;
case 'save':
$content = file_get_contents($_FILES['blob']['tmp_name']);
$temp_name = $_FILES['blob']['tmp_name'];
$name = $_FILES['blob']['name'];
if (ends_with($name, '.zip')) {
$directory = FatturaElettronica::getImportDirectory();
Util\Zip::extract($temp_name, $directory);
// Redirect forzato per l'importazione
echo json_encode([
'id' => 1,
]);
exit();
} else {
$content = file_get_contents($temp_name);
$file = FatturaElettronica::store($_FILES['blob']['name'], $content);
}
// no break
case 'prepare':
@ -106,10 +122,10 @@ switch (filter('op')) {
$fattura_pa->delete();
//Aggiorno la tipologia di anagrafica fornitore
$anagrafica = $dbo->fetchOne("SELECT idanagrafica FROM co_documenti WHERE co_documenti.id=".prepare($id_fattura));
$anagrafica = $dbo->fetchOne('SELECT idanagrafica FROM co_documenti WHERE co_documenti.id='.prepare($id_fattura));
$rs_t = $dbo->fetchOne("SELECT * FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica=(SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore') AND idanagrafica=".prepare($anagrafica['idanagrafica']));
if( !$rs_t ){
if (!$rs_t) {
$dbo->query("INSERT INTO an_tipianagrafiche_anagrafiche (idtipoanagrafica, idanagrafica) VALUES ((SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore'), ".prepare($anagrafica['idanagrafica']));
}

View File

@ -20,7 +20,10 @@ if (isset($id_record)) {
$error = true;
}
if(empty($record)){
// Rimozione .p7m dal nome del file (causa eventuale estrazione da ZIP)
$record['name'] = str_replace('.p7m', '', $record['name']);
if (empty($record)) {
flash()->warning(tr('Nessuna fattura da importare!'));
redirect(ROOTDIR.'/controller.php?id_module='.$id_module);

View File

@ -7,11 +7,10 @@ use Plugins\ReceiptFE\Interaction;
echo '
<p>'.tr('Le ricevute delle Fatture Elettroniche permettono di individuare se una determinata fattura tramessa è stata accettata dal Sistema Di Interscambio').'.</p>';
if (Interaction::isEnabled()) {
echo '
echo '
<p>'.tr('Tramite il pulsante _BTN_ è possibile procedere al recupero delle ricevute, aggiornando automaticamente lo stato delle relative fatture e allegandole ad esse', [
'_BTN_' => '<b>'.tr('Ricerca ricevute').'</b>',
]).'.</p>';
}
echo '
<div class="box box-success">