Aggiunta possibilità di generazione massiva fatture elettroniche

This commit is contained in:
Luca 2019-06-13 15:57:55 +02:00
parent 058069915b
commit a0f1594e5e
2 changed files with 60 additions and 7 deletions

View File

@ -4,6 +4,7 @@ include_once __DIR__.'/../../core.php';
use Modules\Fatture\Fattura;
use Util\Zip;
use Plugins\ExportFE\FatturaElettronica;
switch (post('op')) {
case 'export-bulk':
@ -62,7 +63,44 @@ switch (post('op')) {
flash()->info(tr('Fatture eliminate!'));
break;
case 'genera-xml':
$failed = [];
$added = [];
foreach ($id_records as $id) {
$fattura = Fattura::find($id);
$fe = new \Plugins\ExportFE\FatturaElettronica($fattura->id);
//se la fattura è emessa e non è stata generata la fattura elettronica
if ($fattura->idstatodocumento==3 and !($fe->isGenerated())){
$fattura_pa = new FatturaElettronica($id);
if (!empty($fattura_pa)) {
$file = $fattura_pa->save($upload_dir);
$added[] = $fattura->numero_esterno;
}
}else{
$failed[] = $fattura->numero_esterno;
}
}
if (!empty($failed)) {
flash()->warning(tr('Le fatture elettroniche _LIST_ non sono state generate.', [
'_LIST_' => implode(', ', $failed),
]));
}
if (!empty($added)) {
flash()->info(tr('Le fatture elettroniche _LIST_ sono state generate.', [
'_LIST_' => implode(', ', $added),
]));
}
break;
case 'export-xml-bulk':
$dir = DOCROOT.'/files/export_fatture/';
directory($dir.'tmp/');
@ -301,9 +339,20 @@ $operations['registra-contabile'] = [
],
];
if ($module->name == 'Fatture di vendita') {
$operations['genera-xml'] = [
'text' => '<span><i class="fa fa-file-code-o" ></i> '.tr('Genera fatture elettroniche').'</span>',
'data' => [
'title' => '',
'msg' => tr('Generare le fatture elettroniche per i documenti selezionati?<br><small>(le fatture dovranno essere nello stato <i class="fa fa-clock-o text-info" title="Emessa"></i> <small>Emessa</small> e non essere mai state generate)</small>'),
'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning',
'blank' => true,
],
];
$operations['export-bulk'] = [
'text' => '<span class="'.((!extension_loaded('zip')) ? 'text-muted disabled' :'').'"><i class="fa fa-file-archive-o" ></i> '.tr('Esporta stampe').'</span>',
'data' => [

View File

@ -130,7 +130,7 @@ echo '
<div class="col-md-6">
<div class="box box-warning">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Clienti TOP').'</h3>
<h3 class="box-title">'.tr('Clienti TOP').'</h3><span class="tip" title="'.tr('Valori iva esclusa').'"> <i class="fa fa-question-circle-o" aria-hidden="true"></i></span>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
@ -170,13 +170,15 @@ echo '
</div>';
// Articoli più venduti
$articoli = $dbo->fetchArray("SELECT SUM(co_righe_documenti.qta) AS qta, SUM(subtotale) as subtotale ,SUM(sconto) AS sconto, mg_articoli.id, mg_articoli.codice, mg_articoli.descrizione, mg_articoli.um FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN mg_articoli ON mg_articoli.id=co_righe_documenti.idarticolo WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY co_righe_documenti.idarticolo ORDER BY SUM(co_righe_documenti.qta) DESC LIMIT 15');
$articoli = $dbo->fetchArray("SELECT SUM(co_righe_documenti.qta) AS qta, SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, mg_articoli.id, mg_articoli.codice, mg_articoli.descrizione, mg_articoli.um FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN mg_articoli ON mg_articoli.id=co_righe_documenti.idarticolo WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY co_righe_documenti.idarticolo ORDER BY SUM(co_righe_documenti.qta) DESC LIMIT 15');
$totale = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN mg_articoli ON mg_articoli.id=co_righe_documenti.idarticolo WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end));
echo '
<div class="col-md-6">
<div class="box box-danger">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Articoli più venduti').'</h3>
<h3 class="box-title">'.tr('Articoli più venduti').'</h3><span class="tip" title="'.tr('Valori iva esclusa').'"> <i class="fa fa-question-circle-o" aria-hidden="true"></i></span>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
@ -192,7 +194,8 @@ if (!empty($articoli)) {
<th>'.tr('Codice').'</th>
<th>'.tr('Descrizione').'</th>
<th class="text-right">'.tr('Q.').'</th>
<th class="text-right">'.tr('Valore').'<small><br>(iva escl.)</small></th>
<th class="text-right">'.tr('Totale').'</th>
<th class="text-right">'.tr('Percentuale').'</th>
</tr>';
foreach ($articoli as $articolo) {
echo '
@ -200,7 +203,8 @@ if (!empty($articoli)) {
<td>'.Modules::link('Articoli', $articolo['id'], $articolo['codice']).'</td>
<td>'.$articolo['descrizione'].'</td>
<td class="text-right">'.Translator::numberToLocale($articolo['qta']).' '.$articolo['um'].'</td>
<td class="text-right">'.Translator::moneyFormat( $articolo['subtotale']-$articolo['sconto']).' '.currency().'</td>
<td class="text-right">'.moneyFormat($articolo['totale']).' '.currency().'</td>
<td class="text-right">'.Translator::numberToLocale($articolo['totale'] * 100 / $totale[0]['totale']).' %</td>
</tr>';
}
echo '