diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php
index c20f11857..b3b12c870 100755
--- a/modules/anagrafiche/actions.php
+++ b/modules/anagrafiche/actions.php
@@ -270,7 +270,7 @@ switch (post('op')) {
$dbo->query('UPDATE zz_users SET enabled = 0 WHERE idanagrafica = '.prepare($id_record));
// Disabilito anche il token
$dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id_utente = '.prepare($id_utente));
-
+
flash()->info(tr('Anagrafica eliminata!'));
}
diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php
index 0db94105d..28901fe13 100755
--- a/modules/anagrafiche/ajax/select.php
+++ b/modules/anagrafiche/ajax/select.php
@@ -226,7 +226,7 @@ switch ($resource) {
case 'sedi':
if (isset($superselect['idanagrafica'])) {
- $query = "SELECT * FROM (SELECT '0' AS id, CONCAT_WS(' - ', 'Sede legale' , (SELECT CONCAT (citta, ' (', ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab HAVING descrizione LIKE ".prepare('%'.$search.'%')." ORDER BY descrizione";
+ $query = "SELECT * FROM (SELECT '0' AS id, CONCAT_WS(' - ', 'Sede legale' , (SELECT CONCAT (citta, ' (', ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, CONCAT_WS(' - ', nomesede, citta) FROM an_sedi |where|) AS tab HAVING descrizione LIKE ".prepare('%'.$search.'%').' ORDER BY descrizione';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php
index ee5c9ca9a..f8716a0d2 100755
--- a/modules/anagrafiche/src/Anagrafica.php
+++ b/modules/anagrafiche/src/Anagrafica.php
@@ -3,6 +3,7 @@
namespace Modules\Anagrafiche;
use Common\Model;
+use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletes;
use Modules\Contratti\Contratto;
use Modules\DDT\DDT;
@@ -277,6 +278,20 @@ class Anagrafica extends Model
return $this->hasMany(Fattura::class, 'idanagrafica');
}
+ public function fattureVendita()
+ {
+ return $this->fatture()->whereHas('tipo', function (Builder $query) {
+ $query->where('dir', 'entrata');
+ });
+ }
+
+ public function fattureAcquisto()
+ {
+ return $this->fatture()->whereHas('tipo', function (Builder $query) {
+ $query->where('dir', 'uscita');
+ });
+ }
+
public function ordini()
{
return $this->hasMany(Ordine::class, 'idanagrafica');
diff --git a/modules/fatture/src/Components/RelationTrait.php b/modules/fatture/src/Components/RelationTrait.php
index 527999578..88dcb0272 100755
--- a/modules/fatture/src/Components/RelationTrait.php
+++ b/modules/fatture/src/Components/RelationTrait.php
@@ -129,7 +129,7 @@ trait RelationTrait
public function getIdContoAttribute()
{
- return $this->idconto;
+ return $this->attributes['idconto'];
}
public function setIdContoAttribute($value)
diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php
index c1969b8b4..490ce8a31 100755
--- a/modules/fatture/src/Fattura.php
+++ b/modules/fatture/src/Fattura.php
@@ -6,6 +6,7 @@ use Auth;
use Carbon\Carbon;
use Common\Components\Description;
use Common\Document;
+use Illuminate\Database\Eloquent\Builder;
use Modules\Anagrafiche\Anagrafica;
use Modules\Fatture\Components\Riga;
use Modules\Pagamenti\Pagamento;
@@ -592,6 +593,20 @@ class Fattura extends Document
return $result;
}
+ /**
+ * Scope a query to only include popular users.
+ *
+ * @param \Illuminate\Database\Eloquent\Builder $query
+ *
+ * @return \Illuminate\Database\Eloquent\Builder
+ */
+ public function scopeContabile($query)
+ {
+ return $query->whereHas('stato', function (Builder $query) {
+ $query->whereIn('descrizione', ['Emessa', 'Parzialmente pagato', 'Pagato']);
+ });
+ }
+
/**
* Restituisce i dati bancari in base al pagamento.
*
diff --git a/modules/scadenzario/edit.php b/modules/scadenzario/edit.php
index 86e42ff7f..bb55ab08d 100755
--- a/modules/scadenzario/edit.php
+++ b/modules/scadenzario/edit.php
@@ -185,11 +185,11 @@ echo '
'.tr('Elimina').'
';
-}
+ }
echo '
diff --git a/modules/utenti/actions.php b/modules/utenti/actions.php
index 576a0a309..c8725ed56 100755
--- a/modules/utenti/actions.php
+++ b/modules/utenti/actions.php
@@ -119,7 +119,7 @@ switch (filter('op')) {
$utente = User::find($id_utente);
$tokens = $utente->getApiTokens();
- foreach ($tokens as $token){
+ foreach ($tokens as $token) {
$dbo->query('UPDATE zz_tokens SET enabled = 1 WHERE id = '.prepare($token['id']));
}
@@ -131,7 +131,7 @@ switch (filter('op')) {
$utente = User::find($id_utente);
$tokens = $utente->getApiTokens();
- foreach ($tokens as $token){
+ foreach ($tokens as $token) {
$dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id = '.prepare($token['id']));
}
diff --git a/modules/utenti/edit.php b/modules/utenti/edit.php
index 9b028ed97..a5bfdb98b 100755
--- a/modules/utenti/edit.php
+++ b/modules/utenti/edit.php
@@ -75,15 +75,13 @@ if (!empty($utenti)) {
// Disabilitazione token API, se diverso da id_utente #1 (admin)
$token = $dbo->fetchOne('SELECT `enabled` FROM `zz_tokens` WHERE `id_utente` = '.prepare($utente['id']).'')['enabled'];
-
+
if ($utente['id'] == '1') {
echo '
';
} elseif (!empty($token)) {
-
-
echo '
diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php
index 2e076b002..567e36359 100755
--- a/plugins/exportFE/src/FatturaElettronica.php
+++ b/plugins/exportFE/src/FatturaElettronica.php
@@ -589,7 +589,6 @@ class FatturaElettronica
}
//Rimuovo eventuali idicazioni relative alla nazione
$result['IdFiscaleIVA']['IdCodice'] = str_replace($anagrafica->nazione->iso2, '', $anagrafica['piva']);
-
}
// Codice fiscale
@@ -598,9 +597,9 @@ class FatturaElettronica
$result['CodiceFiscale'] = preg_replace('/\s+/', '', $anagrafica['codice_fiscale']);
//$result['CodiceFiscale'] = str_replace($anagrafica->nazione->iso2, '', $result['CodiceFiscale']);
-
+
//Rimuovo eventuali idicazioni relative all'iso2 della nazione, solo se la stringa inizia con quest'ultima.
- $result['CodiceFiscale'] = preg_replace('/^' . preg_quote($anagrafica->nazione->iso2, '/') . '/', '', $anagrafica['codice_fiscale']);
+ $result['CodiceFiscale'] = preg_replace('/^'.preg_quote($anagrafica->nazione->iso2, '/').'/', '', $anagrafica['codice_fiscale']);
}
if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])) {
diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php
index 45077f2aa..fb2a41311 100755
--- a/plugins/importFE/actions.php
+++ b/plugins/importFE/actions.php
@@ -166,4 +166,78 @@ switch (filter('op')) {
}
break;
+
+ case 'compile':
+ $fatture = $anagrafica->fattureAcquisto()
+ ->contabile()
+ ->orderByDesc('created_at')
+ ->take(10)
+ ->get();
+
+ $righe = collect();
+ foreach ($fatture as $fattura) {
+ $righe->push($fattura->righe);
+ $righe->push($fattura->articoli);
+ }
+ $righe = $righe->flatten();
+
+ // Ricerca del tipo di documento più utilizzato
+ $tipi = $fatture->groupBy(function ($item, $key) {
+ return $item->tipo->id;
+ })->transform(function ($item, $key) {
+ return $item->count();
+ });
+ $id_tipo = $tipi->sort()->keys()->last();
+
+ // Ricerca del tipo di pagamento più utilizzato
+ $pagamenti = $fatture->mapToGroups(function ($item, $key) {
+ return [$item->pagamento->id => $item->pagamento];
+ });
+ $id_pagamento = $pagamenti->map(function ($item, $key) {
+ return $item->count();
+ })->sort()->keys()->last();
+ $pagamento = $pagamenti[$id_pagamento]->first();
+
+ // Ricerca del conto più utilizzato
+ $conti = $righe->groupBy(function ($item, $key) {
+ return $item->idconto;
+ })->transform(function ($item, $key) {
+ return $item->count();
+ });
+ $id_conto = $conti->sort()->keys()->last();
+ $conto = $dbo->fetchOne('SELECT * FROM co_pianodeiconti3 WHERE id = '.prepare($id_conto));
+
+ // Ricerca dell'IVA più utilizzata secondo percentuali
+ $iva = [];
+ $percentuali_iva = $righe->groupBy(function ($item, $key) {
+ return $item->aliquota->percentuale;
+ });
+ foreach ($percentuali_iva as $key => $values) {
+ $aliquote = $values->mapToGroups(function ($item, $key) {
+ return [$item->aliquota->id => $item->aliquota];
+ });
+ $id_aliquota = $aliquote->map(function ($item, $key) {
+ return $item->count();
+ })->sort()->keys()->last();
+ $aliquota = $aliquote[$id_aliquota]->first();
+
+ $iva[$key] = [
+ 'id' => $aliquota->id,
+ 'descrizione' => $aliquota->descrizione,
+ ];
+ }
+
+ echo json_encode([
+ 'id_tipo' => $id_tipo,
+ 'pagamento' => [
+ 'id' => $pagamento->id,
+ 'descrizione' => $pagamento->descrizione,
+ ],
+ 'conto' => [
+ 'id' => $conto['id'],
+ 'descrizione' => $conto['descrizione'],
+ ],
+ 'iva' => $iva,
+ ]);
+ break;
}
diff --git a/plugins/importFE/buttons.php b/plugins/importFE/buttons.php
new file mode 100644
index 000000000..8c6c34ed1
--- /dev/null
+++ b/plugins/importFE/buttons.php
@@ -0,0 +1,47 @@
+
+ '.tr('Compila automaticamente').'
+
+
+';
diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php
index ed60d30e0..d5c54e398 100755
--- a/plugins/importFE/generate.php
+++ b/plugins/importFE/generate.php
@@ -310,6 +310,8 @@ if (!empty($righe)) {
'_VALUE_' => empty($riga['Natura']) ? numberFormat($riga['AliquotaIVA']).'%' : $riga['Natura'],
'_DESC_' => $riga['RiferimentoNormativo'] ? ' - '.$riga['RiferimentoNormativo'] : '',
]).'
+
+ '.$riga['AliquotaIVA'].'
{[ "type": "select", "name": "iva['.$key.']", "values": "query='.str_replace('"', '\"', $query).'", "required": 1, "placeholder": "Aliquota iva" ]}
diff --git a/src/Models/User.php b/src/Models/User.php
index 2091e4722..ab54cfa74 100755
--- a/src/Models/User.php
+++ b/src/Models/User.php
@@ -172,7 +172,8 @@ class User extends Model
return $anagrafica->ragione_sociale.' ('.$this->username.')';
}
- public function getApiTokens(){
+ public function getApiTokens()
+ {
$query = 'SELECT * FROM `zz_tokens` WHERE `enabled` = 1 AND `id_utente` = '.prepare($this->id);
$database = database();
|