diff --git a/config/namespaces.php b/config/namespaces.php
index b70f22330..c2f3b04fe 100644
--- a/config/namespaces.php
+++ b/config/namespaces.php
@@ -1,10 +1,10 @@
'Modules\\Anagrafiche\\',
- 'modules/articoli' => 'Modules\\Articoli\\',
- 'modules/fatture' => 'Modules\\Fatture\\',
- 'modules/interventi' => 'Modules\\Interventi\\',
- 'plugins/exportPA' => 'Plugins\\ExportPA\\',
- 'plugins/importPA' => 'Plugins\\ImportPA\\',
+ 'modules/anagrafiche' => 'Modules\Anagrafiche',
+ 'modules/articoli' => 'Modules\Articoli',
+ 'modules/fatture' => 'Modules\Fatture',
+ 'modules/interventi' => 'Modules\Interventi',
+ 'plugins/exportPA' => 'Plugins\ExportPA',
+ 'plugins/importPA' => 'Plugins\ImportPA',
];
diff --git a/core.php b/core.php
index 5e8bddf38..d38fe8d72 100644
--- a/core.php
+++ b/core.php
@@ -26,8 +26,8 @@ $loader = require_once __DIR__.'/vendor/autoload.php';
$namespaces = require_once __DIR__.'/config/namespaces.php';
foreach ($namespaces as $path => $namespace) {
- $loader->addPsr4($namespace, $path.'/custom/src');
- $loader->addPsr4($namespace, $path.'/src');
+ $loader->addPsr4($namespace.'\\', $path.'/custom/src');
+ $loader->addPsr4($namespace.'\\', $path.'/src');
}
// Individuazione dei percorsi di base
diff --git a/include/common/conti.php b/include/common/conti.php
index bc84f3940..09fd00a5d 100644
--- a/include/common/conti.php
+++ b/include/common/conti.php
@@ -1,123 +1,71 @@
';
// Rivalsa INPS
- if ($show_idrivalsainps == 1) {
+ if ($show_rivalsa_inps == 1) {
echo '
- {[ "type": "select", "label": "'.tr('Rivalsa INPS').'", "name": "idrivalsainps", "value": "'.$idrivalsainps.'", "values": "query=SELECT * FROM co_rivalsainps" ]}
+ {[ "type": "select", "label": "'.tr('Rivalsa INPS').'", "name": "idrivalsainps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalsainps" ]}
';
}
// Ritenuta d'acconto
- if ($show_idritenutaacconto == 1) {
+ if ($show_ritenuta_acconto == 1) {
echo '
- {[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "idritenutaacconto", "value": "'.$idritenutaacconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
+ {[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "idritenutaacconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
';
}
// Calcola ritenuta d'acconto su
- if ($show_calcolo_ritenutaacconto == 1) {
+ if ($show_calcolo_ritenuta_acconto == 1) {
echo '
- {[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenutaacconto", "value": "'.((empty($calcolo_ritenutaacconto)) ? 'Imponibile' : $calcolo_ritenutaacconto).'", "values": "list=\"Imponibile\":\"Imponibile\", \"Imponibile + rivalsa inps\":\"Imponibile + rivalsa inps\"", "required": "1" ]}
+ {[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenutaacconto", "value": "'.((empty($calcolo_ritenuta_acconto)) ? 'Imponibile' : $calcolo_ritenuta_acconto).'", "values": "list=\"Imponibile\":\"Imponibile\", \"Imponibile + rivalsa inps\":\"Imponibile + rivalsa inps\"", "required": "1" ]}
';
}
@@ -132,4 +80,3 @@ if ($module['name'] == 'Fatture di acquisto' || $module['name'] == 'Fatture di v
{[ "type": "select", "label": "'.tr('Conto').'", "name": "idconto", "required": 1, "value": "'.$result['idconto'].'", "ajax-source": "'.$options['conti'].'" ]}
';
-}
diff --git a/modules/fatture/row-add.php b/modules/fatture/row-add.php
index 51eabf898..5731f7957 100644
--- a/modules/fatture/row-add.php
+++ b/modules/fatture/row-add.php
@@ -47,8 +47,8 @@ $iva = $dbo->fetchArray('SELECT idiva_'.($dir == 'uscita' ? 'acquisti' : 'vendit
$result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
// Leggo la ritenuta d'acconto predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
-$ritenuta_acconto = $dbo->fetchArray('SELECT id_ritenuta_acconto_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS id_ritenuta_acconto FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica));
-$result['id_ritenuta_acconto'] = $ritenuta_acconto[0]['id_ritenuta_acconto'] ?: setting("Percentuale ritenuta d'acconto");
+$ritenuta_acconto = $dbo->fetchOne('SELECT id_ritenuta_acconto_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS id_ritenuta_acconto FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica));
+$result['id_ritenuta_acconto_predefined'] = $ritenuta_acconto['id_ritenuta_acconto'];
// Sconto unitario
$rss = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).')');
diff --git a/modules/fatture/src/Articolo.php b/modules/fatture/src/Articolo.php
index ec6576982..c6347085c 100644
--- a/modules/fatture/src/Articolo.php
+++ b/modules/fatture/src/Articolo.php
@@ -42,10 +42,10 @@ class Articolo extends Article
$data = $fattura->data;
$carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_');
- $scarico = ($tipo->dir == 'uscita') ? tr('Rimozione articolo da _TYPE_ _NUM_') : tr('Scarico magazzino per _TYPE_ numero _NUM_');
+ $scarico = ($tipo->dir == 'entrata') ? tr('Scarico magazzino per _TYPE_ numero _NUM_') : tr('Rimozione articolo da _TYPE_ _NUM_') ;
- $movimento = ($qta > 0) ? $carico : $scarico;
$qta = ($tipo->dir == 'uscita') ? -$qta : $qta;
+ $movimento = ($qta < 0) ? $carico : $scarico;
$movimento = replace($movimento, [
'_TYPE_' => $tipo->descrizione,
diff --git a/plugins/importPA/actions.php b/plugins/importPA/actions.php
index e298ac340..dda54a83d 100644
--- a/plugins/importPA/actions.php
+++ b/plugins/importPA/actions.php
@@ -49,4 +49,9 @@ switch (filter('op')) {
redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record);
break;
+
+ case 'list':
+ include __DIR__.'/rows.php';
+
+ break;
}
diff --git a/plugins/importPA/edit.php b/plugins/importPA/edit.php
index ed3fc1387..832f92b30 100644
--- a/plugins/importPA/edit.php
+++ b/plugins/importPA/edit.php
@@ -24,7 +24,7 @@ echo '
data = JSON.parse(data);
if (!data.already) {
- launch_modal("'.tr('Righe fattura').'", globals.rootdir + "/plugins/importPA/rows.php?id_module=" + globals.id_module + "&id_plugin=" + '.$id_plugin.' + "&id=" + data.id + "&filename=" + data.filename + "&id_segment=" + data.id_segment)
+ launch_modal("'.tr('Righe fattura').'", globals.rootdir + "/actions.php?id_module=" + globals.id_module + "&id_plugin=" + '.$id_plugin.' + "&op=list&id=" + data.id + "&filename=" + data.filename + "&id_segment=" + data.id_segment);
} else {
swal({
title: "'.tr('Fattura già importata!').'",
diff --git a/src/Base/Description.php b/src/Base/Description.php
index ff9e61d9a..1d824d630 100644
--- a/src/Base/Description.php
+++ b/src/Base/Description.php
@@ -6,12 +6,14 @@ use Illuminate\Database\Eloquent\Builder;
abstract class Description extends Model
{
- protected static function boot()
+ protected static function boot($bypass)
{
parent::boot();
- static::addGlobalScope('descriptions', function (Builder $builder) {
- $builder->where('is_descrizione', '=', 0);
- });
+ if (!$bypass) {
+ static::addGlobalScope('descriptions', function (Builder $builder) {
+ $builder->where('is_descrizione', '=', 0);
+ });
+ }
}
}
diff --git a/src/base/Article.php b/src/base/Article.php
index 82773e310..d250790d6 100644
--- a/src/base/Article.php
+++ b/src/base/Article.php
@@ -13,7 +13,7 @@ abstract class Article extends Row
protected static function boot()
{
- parent::boot();
+ parent::boot(true);
static::addGlobalScope('articles', function (Builder $builder) {
$builder->whereNotNull('idarticolo')->where('idarticolo', '<>', 0);
diff --git a/src/base/Row.php b/src/base/Row.php
index 54618be87..7582fdbcf 100644
--- a/src/base/Row.php
+++ b/src/base/Row.php
@@ -4,15 +4,17 @@ namespace Base;
use Illuminate\Database\Eloquent\Builder;
-abstract class Row extends Model
+abstract class Row extends Description
{
- protected static function boot()
+ protected static function boot($bypass)
{
- parent::boot();
+ parent::boot($bypass);
- static::addGlobalScope('rows', function (Builder $builder) {
- $builder->whereNull('idarticolo')->where('idarticolo', '=', 0);
- });
+ if (!$bypass) {
+ static::addGlobalScope('rows', function (Builder $builder) {
+ $builder->whereNull('idarticolo')->where('idarticolo', '=', 0);
+ });
+ }
}
/*
@@ -96,12 +98,10 @@ abstract class Row extends Model
$this->attributes['sconto'] = $this->sconto;
}
- public function setIdIvaAttribute($value)
+ protected function fixIva()
{
- $this->attributes['idiva'] = $value;
-
$iva = database()->fetchOne('SELECT * FROM co_iva WHERE id = :id_iva', [
- ':id_iva' => $value,
+ ':id_iva' => $this->idiva,
]);
$descrizione = $iva['descrizione'];
@@ -114,6 +114,15 @@ abstract class Row extends Model
if (!isset($this->prezzo_vendita)) {
$this->iva_indetraibile = $valore / 100 * $iva['indetraibile'];
}
+
+ $this->attributes['sconto'] = $this->sconto;
+ }
+
+ public function setIdIvaAttribute($value)
+ {
+ $this->attributes['idiva'] = $value;
+
+ $this->fixIva();
}
public function getPrezzoAttribute()
@@ -126,5 +135,7 @@ abstract class Row extends Model
$this->qta = $qta;
$this->subtotale = $prezzo * $qta;
+
+ $this->fixIva();
}
}