Aggiornamento hook Ricevute per l'importazione

This commit is contained in:
Thomas Zilio 2020-03-09 15:53:07 +01:00
parent 997085a195
commit 8ca6af2539
3 changed files with 80 additions and 29 deletions

View File

@ -16,7 +16,7 @@ switch (filter('op')) {
$fattura = null;
try {
$receipt = new Ricevuta($name, $content);
$receipt = new Ricevuta($name);
$receipt->save();
$fattura = $receipt->getFattura()->numero_esterno;
@ -50,7 +50,7 @@ switch (filter('op')) {
$fattura = null;
try {
$receipt = new Ricevuta($name, $content);
$receipt = new Ricevuta($name);
$receipt->save();
$fattura = $receipt->getFattura()->numero_esterno;

View File

@ -2,48 +2,97 @@
namespace Plugins\ReceiptFE;
use Hooks\CachedManager;
use Modules;
use Hooks\Manager;
use Models\Cache;
class ReceiptHook extends CachedManager
class ReceiptHook extends Manager
{
public function getCacheName()
public function isSingleton()
{
return 'Ricevute Elettroniche';
return true;
}
public function cacheData()
public function needsExecution()
{
return Interaction::getReceiptList();
// Lettura cache
$todo_cache = Cache::get('Ricevute Elettroniche');
return !$todo_cache->isValid() || !empty($todo_cache->content);
}
public function execute()
{
// Lettura cache
$todo_cache = Cache::get('Ricevute Elettroniche');
$completed_cache = Cache::get('Ricevute Elettroniche importate');
// Refresh cache
if (!$todo_cache->isValid()) {
$list = Interaction::getRemoteList();
$todo_cache->set($list);
$completed_cache->set([]);
return;
}
// Caricamento elenco di importazione
$todo = $todo_cache->content;
if (empty($todo)) {
return;
}
// Caricamento elenco di ricevute imporate
$completed = $completed_cache->content;
$count = count($todo);
// Esecuzione di 10 imporazioni
for ($i = 0; $i < 10 && $i < $count; ++$i) {
$element = $todo[$i];
// Importazione ricevuta
$name = $element['name'];
Interaction::getReceiptList($name);
try {
$receipt = new Ricevuta($name);
$receipt->save();
$receipt->delete();
Interaction::processReceipt($name);
$completed[] = $element;
unset($todo[$i]);
} catch (UnexpectedValueException $e) {
}
}
// Aggiornamento cache
$todo_cache->set($todo);
$completed_cache->set($completed);
}
public function response()
{
$results = $this->getCache()->content;
// Lettura cache
$todo_cache = Cache::get('Ricevute Elettroniche');
$completed_cache = Cache::get('Ricevute Elettroniche importate');
$count = count($results);
$notify = false;
$completed_number = count($completed_cache->content);
$total_number = $completed_number + count($todo_cache->content);
$module = Modules::get('Fatture di vendita');
$plugins = $module->plugins;
if (!empty($plugins)) {
$notify = !empty($count);
$plugin = $plugins->first(function ($value, $key) {
return $value->name == 'Ricevute FE';
});
$link = ROOTDIR.'/controller.php?id_module='.$module->id.'#tab_'.$plugin->id;
}
$message = tr('Ci sono _NUM_ ricevute da importare', [
'_NUM_' => $count,
// Messaggio di importazione
$message = tr('Sono state importate _NUM_ ricevute su _TOT_', [
'_NUM_' => $completed_number,
'_TOT_' => $total_number,
]);
// Notifica sullo stato dell'importazione
$notify = $total_number != 0;
$color = $total_number == $completed_number ? 'success' : 'yellow';
return [
'icon' => 'fa fa-ticket text-yellow',
'link' => $link,
'icon' => 'fa fa-ticket text-'.$color,
'message' => $message,
'show' => $notify,
];

View File

@ -436,10 +436,12 @@ CREATE TABLE IF NOT EXISTS `zz_cache` (
INSERT INTO `zz_cache` (`id`, `name`, `content`, `valid_time`, `expire_at`) VALUES
(NULL, 'Ricevute Elettroniche', '', '1 day', NULL),
(NULL, 'Ricevute Elettroniche importate', '', '1 day', NULL),
(NULL, 'Fatture Elettroniche', '', '1 day', NULL),
(NULL, 'Ultima versione di OpenSTAManager disponibile', '', '7 day', NULL);
DROP TABLE IF EXISTS `zz_hook_cache`;
ALTER TABLE `zz_hooks` DROP `frequency`;
-- Fix nome hook Aggiornamenti
UPDATE `zz_hooks` SET `name` = 'Aggiornamenti' WHERE `class` = 'Modules\\Aggiornamenti\\UpdateHook';