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