diff --git a/include/common/importa.php b/include/common/importa.php
index afd52aa04..e981d1209 100755
--- a/include/common/importa.php
+++ b/include/common/importa.php
@@ -72,17 +72,12 @@ if (!empty($options['create_document'])) {
// Opzioni aggiuntive per le Fatture
if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'])) {
- if ($options['op'] == 'nota_accredito' && !empty($segmenti)) {
- $segmento = $database->fetchOne("SELECT * FROM zz_segments WHERE predefined_accredito='1'");
-
- $id_segment = $segmento['id'];
- } else {
- $id_segment = $_SESSION['module_'.$final_module['id']]['id_segment'];
- }
-
- $stato_predefinito = $database->fetchOne("SELECT * FROM co_statidocumento WHERE descrizione = 'Bozza'");
+ $id_segment = $_SESSION['module_'.$final_module['id']]['id_segment'];
+ $stato_predefinito = $database->fetchOne("SELECT id FROM co_statidocumento WHERE descrizione = 'Bozza'");
+
echo '
+
{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT * FROM co_statidocumento WHERE descrizione IN (\'Emessa\', \'Bozza\')", "value": "'.$stato_predefinito['id'].'"]}
diff --git a/modules/causali/actions.php b/modules/causali/actions.php
index 971c91c20..016250618 100755
--- a/modules/causali/actions.php
+++ b/modules/causali/actions.php
@@ -33,6 +33,7 @@ switch (filter('op')) {
$dbo->update('dt_causalet', [
'descrizione' => $descrizione,
'is_importabile' => filter('is_importabile'),
+ 'reversed' => filter('reversed'),
'predefined' => $predefined,
], ['id' => $id_record]);
diff --git a/modules/causali/edit.php b/modules/causali/edit.php
index a4929d068..f075774e2 100755
--- a/modules/causali/edit.php
+++ b/modules/causali/edit.php
@@ -46,6 +46,9 @@ include_once __DIR__.'/../../core.php';
{[ "type": "checkbox", "label": "", "name": "is_importabile", "value": "$is_importabile$", "help": "", "placeholder": "" ]}
+
+ {[ "type": "checkbox", "label": "", "name": "reversed", "value": "$reversed$", "help": "", "placeholder": "" ]}
+
diff --git a/modules/ddt/buttons.php b/modules/ddt/buttons.php
index b90d8da64..6abd69b3f 100755
--- a/modules/ddt/buttons.php
+++ b/modules/ddt/buttons.php
@@ -23,7 +23,6 @@ echo '
'Evaso, Parzialmente evaso, Parzialmente fatturato',
]).'">
-
';
diff --git a/modules/ddt/crea_documento.php b/modules/ddt/crea_documento.php
index cdaff883b..9373c0211 100755
--- a/modules/ddt/crea_documento.php
+++ b/modules/ddt/crea_documento.php
@@ -21,14 +21,24 @@ include_once __DIR__.'/../../core.php';
use Modules\DDT\DDT;
use Modules\Fatture\Fattura;
-
$documento = DDT::find($id_record);
$module = Modules::get($id_module);
-
-$final_module = $module['name'] == 'Ddt di vendita' ? 'Fatture di vendita' : 'Fatture di acquisto';
-$dir = $module['name'] == 'Ddt di vendita' ? 'entrata' : 'uscita';
-$tipo_documento_finale = Fattura::class;
+if($documento->reversed){
+ if($module['name'] == 'Ddt di vendita'){
+ $final_module = 'Fatture di acquisto';
+ $dir = 'uscita';
+ } else {
+ $final_module = 'Fatture di vendita';
+ $dir = 'entrata';
+ }
+} elseif($module['name'] == 'Ddt di vendita'){
+ $final_module = 'Fatture di vendita';
+ $dir = 'entrata';
+} else {
+ $final_module = 'Fatture di acquisto';
+ $dir = 'uscita';
+}
$options = [
'op' => 'add_documento',
@@ -40,6 +50,7 @@ $options = [
'create_document' => true,
'documento' => $documento,
'tipo_documento_finale' => $tipo_documento_finale,
+ 'reversed' => $documento->reversed,
];
-echo App::load('importa.php', [], $options, true);
+echo App::load('importa.php', [], $options, true);
\ No newline at end of file
diff --git a/modules/ddt/src/DDT.php b/modules/ddt/src/DDT.php
index 0f75f7dba..e7066195d 100755
--- a/modules/ddt/src/DDT.php
+++ b/modules/ddt/src/DDT.php
@@ -133,6 +133,14 @@ class DDT extends Document
return $causale['is_importabile'] && !in_array($this->stato->descrizione, $stati_non_importabili);
}
+ public function getReversedAttribute()
+ {
+ $database = database();
+ $causale = $database->fetchOne('SELECT * FROM `dt_causalet` WHERE `id` = '.prepare($this->idcausalet));
+
+ return $causale['reversed'];
+ }
+
/**
* Restituisce il peso calcolato sulla base degli articoli del documento.
*
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php
index 3eb910fd0..02a03f9cb 100755
--- a/modules/fatture/actions.php
+++ b/modules/fatture/actions.php
@@ -676,6 +676,7 @@ switch (post('op')) {
case 'add_documento':
$class = post('class');
$id_documento = post('id_documento');
+ $reversed = post('reversed');
// Individuazione del documento originale
if (!is_subclass_of($class, \Common\Document::class)) {
@@ -691,7 +692,12 @@ switch (post('op')) {
// Creazione della fattura al volo
if (post('create_document') == 'on') {
$descrizione = ($documento->direzione == 'entrata') ? 'Fattura immediata di vendita' : 'Fattura immediata di acquisto';
- $tipo = Tipo::where('descrizione', $descrizione)->first();
+
+ if($reversed){
+ $tipo = Tipo::where('descrizione', 'Nota di credito')->where('dir', '!=', $documento->direzione)->first();
+ } else {
+ $tipo = Tipo::where('descrizione', $descrizione)->first();
+ }
$fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment'));
@@ -714,6 +720,9 @@ switch (post('op')) {
foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on') {
$qta = post('qta_da_evadere')[$riga->id];
+ if($reversed){
+ $qta = -$qta;
+ }
$copia = $riga->copiaIn($fattura, $qta);
$copia->id_conto = $id_conto;
diff --git a/update/2_4_21.sql b/update/2_4_21.sql
index 15901623e..5162ebe04 100644
--- a/update/2_4_21.sql
+++ b/update/2_4_21.sql
@@ -90,4 +90,8 @@ WHERE
WHERE
`id_articolo` = `mg_articoli`.`id`
) AND `id_fornitore` IS NOT NULL
-);
\ No newline at end of file
+);
+
+-- Aggiunta colonna reversed
+ALTER TABLE `dt_causalet` ADD `reversed` TINYINT(1) NOT NULL AFTER `is_importabile`;
+UPDATE `dt_causalet` SET `reversed`=1 WHERE `descrizione`='Reso';
\ No newline at end of file