This commit is contained in:
Thomas Zilio 2019-07-05 09:53:53 +02:00
parent 5aa795553b
commit 4a6ac3c870
11 changed files with 86 additions and 61 deletions

View File

@ -2,9 +2,27 @@
namespace Common;
use Models\Hook;
abstract class HookManager
{
abstract public function manage();
abstract public function response($results);
public static function update($results)
{
$hook = self::getHook();
$hook->updateCache($results);
}
protected static function getHook()
{
$class = get_called_class();
$hook = Hook::where('class', $class)->first();
return $hook;
}
}

View File

@ -81,15 +81,13 @@ switch (post('op')) {
$idanagrafica = $dbo->fetchOne('SELECT GROUP_CONCAT(idanagrafica) AS idanagrafica FROM an_anagrafiche WHERE codice_fiscale = '.prepare(post('codice_fiscale')).' AND idanagrafica != '.prepare($id_record))['idanagrafica'];
if (!empty($idanagrafica)) {
$array = explode(',', $idanagrafica);
foreach ($array as $value) {
flash()->warning(tr('Attenzione: il codice fiscale _COD_ è già stato censito _LINK_', [
'_COD_' => post('codice_fiscale'),
'_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
'_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
]));
}
} else {
$anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));
}
@ -106,10 +104,9 @@ switch (post('op')) {
foreach ($array as $value) {
flash()->warning(tr('Attenzione: la partita IVA _IVA_ è già stata censita _LINK_', [
'_IVA_' => post('piva'),
'_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
'_LINK_' => Modules::link('Anagrafiche', $value, null, null, ''),
]));
}
} else {
$anagrafica->partita_iva = post('piva');
}

View File

@ -234,13 +234,6 @@ class Anagrafica extends Model
return $this;
}
protected function fixRagioneSociale()
{
if (!empty($this->cognome) || !empty($this->nome)) {
$this->ragione_sociale = $this->cognome.' '.$this->nome;
}
}
// Metodi statici
/**
@ -262,5 +255,10 @@ class Anagrafica extends Model
return $codice;
}
protected function fixRagioneSociale()
{
if (!empty($this->cognome) || !empty($this->nome)) {
$this->ragione_sociale = $this->cognome.' '.$this->nome;
}
}
}

View File

@ -308,10 +308,8 @@ echo '<div class="panel panel-primary">
<div class="panel-body">';
$rs_prezzo_medio = $dbo->fetchOne('SELECT ((SUM(subtotale)-SUM(sconto))/SUM(qta)) AS prezzo FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record));
$rs_prezzo_min = $dbo->fetchOne('SELECT ((subtotale-sconto)/qta) AS prezzo, co_documenti.data FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record).' ORDER BY ((subtotale-sconto)/qta) ASC' );
$rs_prezzo_max = $dbo->fetchOne('SELECT ((subtotale-sconto)/qta) AS prezzo, co_documenti.data FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record).' ORDER BY ((subtotale-sconto)/qta) DESC' );
$rs_prezzo_min = $dbo->fetchOne('SELECT ((subtotale-sconto)/qta) AS prezzo, co_documenti.data FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record).' ORDER BY ((subtotale-sconto)/qta) ASC');
$rs_prezzo_max = $dbo->fetchOne('SELECT ((subtotale-sconto)/qta) AS prezzo, co_documenti.data FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento = co_documenti.id WHERE co_documenti.idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = \'uscita\') AND idarticolo='.prepare($id_record).' ORDER BY ((subtotale-sconto)/qta) DESC');
if (count($rs_prezzo_min) > 0) {
echo '
@ -327,27 +325,26 @@ if (count($rs_prezzo_min) > 0) {
<th>'.tr('Andamento prezzo').'</th>
</tr>';
echo '
echo '
<tr>
<td>'.moneyFormat($rs_prezzo_min['prezzo']).'</td>
<td>'.moneyFormat($rs_prezzo_medio['prezzo']).'</td>
<td>'.moneyFormat($rs_prezzo_max['prezzo']).'</td>
<td>'.moneyFormat($rs_prezzo_max['prezzo']-$rs_prezzo_min['prezzo']).'</td>
<td>'.Translator::numberToLocale(((($rs_prezzo_max['prezzo']-$rs_prezzo_min['prezzo'])*100)/$rs_prezzo_medio['prezzo']), '2').' %</td>
<td>'.((strtotime($rs_prezzo_min['data'])==strtotime($rs_prezzo_max['data'])) ? 'N.D.' : ((strtotime($rs_prezzo_min['data'])<strtotime($rs_prezzo_max['data'])) ? 'in aumento': 'in diminuzione')).'</td>
<td>'.moneyFormat($rs_prezzo_max['prezzo'] - $rs_prezzo_min['prezzo']).'</td>
<td>'.Translator::numberToLocale(((($rs_prezzo_max['prezzo'] - $rs_prezzo_min['prezzo']) * 100) / $rs_prezzo_medio['prezzo']), '2').' %</td>
<td>'.((strtotime($rs_prezzo_min['data']) == strtotime($rs_prezzo_max['data'])) ? 'N.D.' : ((strtotime($rs_prezzo_min['data']) < strtotime($rs_prezzo_max['data'])) ? 'in aumento' : 'in diminuzione')).'</td>
</tr>';
echo '
echo '
</table>
</div>
</div>';
} else {
echo '
} else {
echo '
<div class="alert alert-info">
'.tr('Questo articolo non è mai stato acquistato').'
</div>';
}
}
echo '
</div>
@ -445,9 +442,8 @@ 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'); ?>

View File

@ -22,15 +22,15 @@ $sedi = $dbo->fetchArray('(SELECT "0" AS id, "Sede legale" AS nomesede) UNION (S
<tbody>
<?php
foreach ($sedi as $sede) {
// Lettura movimenti delle mie sedi
$qta_azienda = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_azienda= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_azienda='.prepare($sede['id']).' GROUP BY idsede_azienda');
// Lettura movimenti delle mie sedi
$qta_azienda = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_azienda= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_azienda WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_azienda='.prepare($sede['id']).' GROUP BY idsede_azienda');
// Lettura eventuali movimenti ad una propria sede (nel caso di movimenti fra sedi della mia azienda)
if($sede['id'] != 0){
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo=".prepare($id_record)." AND idsede_controparte=".prepare($sede['id'])." GROUP BY idsede_controparte");
}else{
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo=".prepare($id_record)." AND idsede_controparte=".prepare($sede['id'])." AND IFNULL( dt_ddt.idanagrafica, co_documenti.idanagrafica ) = ".prepare(setting('Azienda predefinita'))." GROUP BY idsede_controparte");
}
// Lettura eventuali movimenti ad una propria sede (nel caso di movimenti fra sedi della mia azienda)
if ($sede['id'] != 0) {
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_controparte='.prepare($sede['id']).' GROUP BY idsede_controparte');
} else {
$qta_controparte = $dbo->fetchOne("SELECT SUM(mg_movimenti.qta) AS qta, IF(mg_movimenti.idsede_controparte= 0,'Sede legale',(CONCAT_WS(' - ',an_sedi.nomesede,an_sedi.citta))) as sede FROM ((( mg_movimenti LEFT JOIN an_sedi ON an_sedi.id = mg_movimenti.idsede_controparte ) LEFT JOIN dt_ddt ON mg_movimenti.idddt = dt_ddt.id ) LEFT JOIN co_documenti ON mg_movimenti.iddocumento = co_documenti.id ) WHERE mg_movimenti.idarticolo=".prepare($id_record).' AND idsede_controparte='.prepare($sede['id']).' AND IFNULL( dt_ddt.idanagrafica, co_documenti.idanagrafica ) = '.prepare(setting('Azienda predefinita')).' GROUP BY idsede_controparte');
}
echo '
<tr>

View File

@ -167,8 +167,7 @@ switch (get('op')) {
(!empty($r['data_scadenza'] and $r['data_scadenza'] != '0000-00-00 00:00:00') ? '<br><small>'.tr('entro il: ').''.Translator::dateToLocale($r['data_scadenza']).'</small>' : '').'
</div>';
}
}
?>
} ?>
<script type="text/javascript">
$(".request").shorten({
moreText: '<?php echo tr('Mostra tutto'); ?>',

View File

@ -118,17 +118,17 @@ function aggiungi_scadenza($iddocumento, $pagamento = '', $pagato = false)
* @param $totale_pagato float Totale importo pagato
* @param $data_pagamento datetime Data in cui avviene il pagamento (yyyy-mm-dd)
*/
function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento, $idscadenza='')
function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento, $idscadenza = '')
{
$dbo = database();
if ($totale_pagato > 0) {
// Lettura righe scadenziario
if($idscadenza!=''){
if ($idscadenza != '') {
$add_query = 'AND id='.prepare($idscadenza);
}
$query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato) < ABS(da_pagare) ".$add_query." ORDER BY scadenza ASC";
$query = "SELECT * FROM co_scadenziario WHERE iddocumento='$iddocumento' AND ABS(pagato) < ABS(da_pagare) ".$add_query.' ORDER BY scadenza ASC';
$rs = $dbo->fetchArray($query);
$rimanente_da_pagare = abs($rs[0]['pagato']) + $totale_pagato;

View File

@ -3,8 +3,13 @@
include_once __DIR__.'/../../core.php';
use Plugins\ImportFE\Interaction;
use Plugins\ImportFE\InvoiceHook;
$list = Interaction::listToImport();
// Aggiornamento cache hook
InvoiceHook::update($list);
$directory = Plugins\ImportFE\FatturaElettronica::getImportDirectory();
if (!empty($list)) {

View File

@ -69,11 +69,14 @@ class FatturaElettronica
if (!isset(self::$directory)) {
$module = Modules::get('Fatture di acquisto');
$plugin = $module->plugins->first(function ($value, $key) {
return $value->name == 'Fatturazione Elettronica';
});
$plugins = $module->plugins;
if (!empty($plugins)) {
$plugin = $plugins->first(function ($value, $key) {
return $value->name == 'Fatturazione Elettronica';
});
self::$directory = DOCROOT.'/'.$plugin->upload_directory;
self::$directory = DOCROOT.'/'.$plugin->upload_directory;
}
}
return self::$directory;

View File

@ -3,12 +3,16 @@
include_once __DIR__.'/../../core.php';
use Plugins\ReceiptFE\Interaction;
use Plugins\ReceiptFE\ReceiptHook;
use Plugins\ReceiptFE\Ricevuta;
switch (filter('op')) {
case 'import':
$list = Interaction::getReceiptList();
// Aggiornamento cache hook
ReceiptHook::update($list);
$results = [];
foreach ($list as $name) {
Interaction::getReceipt($name);

View File

@ -66,26 +66,31 @@ class Hook extends Model
} else {
$results = $hook->manage();
// Rimozione cache precedente
$database = database();
$database->delete('zz_hook_cache', [
'hook_id' => $this->id,
]);
// Aggiunta del risultato come cache
$cache = json_encode($results);
$database->insert('zz_hook_cache', [
'hook_id' => $this->id,
'results' => $cache,
]);
$this->cached = null;
$this->getCacheAttribute();
$this->updateCache($results);
}
return $hook->response($results);
}
public function updateCache($results)
{
// Rimozione cache precedente
$database = database();
$database->delete('zz_hook_cache', [
'hook_id' => $this->id,
]);
// Aggiunta del risultato come cache
$cache = json_encode($results);
$database->insert('zz_hook_cache', [
'hook_id' => $this->id,
'results' => $cache,
]);
$this->cached = null;
$this->getCacheAttribute();
}
public function getCacheAttribute()
{
if (!isset($this->cached)) {