From 3f7c3e42c1f05e036c9f3c49ce927c73232124a9 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Thu, 2 Jul 2020 15:27:18 +0200 Subject: [PATCH] Generalizzazione procedura importazione documenti --- include/common/importa.php | 3 +- lib/common.php | 10 ++++-- modules/contratti/actions.php | 43 ++++++++++++---------- modules/ddt/actions.php | 38 ++++++++++++-------- modules/fatture/actions.php | 51 ++++++--------------------- modules/ordini/actions.php | 47 ++++++++++++------------ modules/preventivi/buttons.php | 8 ++++- modules/preventivi/crea_documento.php | 3 ++ src/Traits/ReferenceTrait.php | 34 +++++++----------- 9 files changed, 112 insertions(+), 125 deletions(-) diff --git a/include/common/importa.php b/include/common/importa.php index 7ccafb138..166a5bfb2 100755 --- a/include/common/importa.php +++ b/include/common/importa.php @@ -34,7 +34,8 @@ echo ' - '; + + '; // Creazione fattura dal documento if (!empty($options['create_document'])) { diff --git a/lib/common.php b/lib/common.php index dbc251b32..dea332d33 100755 --- a/lib/common.php +++ b/lib/common.php @@ -121,7 +121,7 @@ function discountInfo(\Common\Components\Row $riga, $mostra_maggiorazione = true function reference($document) { if (!empty($document) && !($document instanceof \Common\ReferenceInterface)) { - return; + return null; } $extra = ''; @@ -129,15 +129,19 @@ function reference($document) $document_id = null; if (empty($document)) { - $description = tr('Documento di riferimento non disponibile'); + $content = tr('non disponibile'); $extra = 'class="disabled"'; } else { $module_id = $document->module; $document_id = $document->id; - $description = $document->getReference(); + $content = $document->getReference(); } + $description = tr('Rif. _DOCUMENT_', [ + '_DOCUMENT_' => strtolower($content), + ]); + return Modules::link($module_id, $document_id, $description, $description, $extra); } diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 9ec27f5f2..288d514e8 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -385,32 +385,39 @@ $riga = $contratto->getRiga($type, $id_riga); break; + // Aggiunta di un documento in contratto case 'add_preventivo': + case 'add_documento': + $class = post('class'); + $id_documento = post('id_documento'); - $preventivo = \Modules\Preventivi\Preventivo::find(post('id_documento')); + // Individuazione del documento originale + if (!is_subclass_of($class, \Common\Document::class)) { + return; + } + $documento = $class::find($id_documento); // Creazione del contratto al volo if (post('create_document') == 'on') { - $contratto = Contratto::build($preventivo->anagrafica, $preventivo->nome); + $contratto = Contratto::build($documento->anagrafica, $documento->nome); - $contratto->idpagamento = $preventivo->idpagamento; - $contratto->idsede = $preventivo->idsede; + $contratto->idpagamento = $documento->idpagamento; + $contratto->idsede = $documento->idsede; - $contratto->id_documento_fe = $preventivo->id_documento_fe; - $contratto->codice_cup = $preventivo->codice_cup; - $contratto->codice_cig = $preventivo->codice_cig; - $contratto->num_item = $preventivo->num_item; + $contratto->id_documento_fe = $documento->id_documento_fe; + $contratto->codice_cup = $documento->codice_cup; + $contratto->codice_cig = $documento->codice_cig; + $contratto->num_item = $documento->num_item; - $contratto->descrizione = $preventivo->descrizione; - $contratto->esclusioni = $preventivo->esclusioni; + $contratto->descrizione = $documento->descrizione; + $contratto->esclusioni = $documento->esclusioni; $contratto->save(); $id_record = $contratto->id; } - $parziale = false; - $righe = $preventivo->getRighe(); + $righe = $documento->getRighe(); foreach ($righe as $riga) { if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) { $qta = post('qta_da_evadere')[$riga->id]; @@ -419,17 +426,15 @@ $riga = $contratto->getRiga($type, $id_riga); $copia->save(); } - - if ($riga->qta != $riga->qta_evasa) { - $parziale = true; - } } ricalcola_costiagg_ordine($id_record); - flash()->info(tr('Preventivo _NUM_ aggiunto!', [ - '_NUM_' => $preventivo->numero, - ])); + // Messaggio informativo + $message = tr('_DOC_ aggiunto!', [ + '_DOC_' => $documento->getReference(), + ]); + flash()->info($message); break; } diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 779255181..33dc01950 100755 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -239,29 +239,37 @@ switch (post('op')) { break; - // Aggiunta di un ordine in ddt + // Aggiunta di un documento in ddt case 'add_ordine': - $ordine = \Modules\Ordini\Ordine::find(post('id_documento')); + case 'add_documento': + $class = post('class'); + $id_documento = post('id_documento'); + + // Individuazione del documento originale + if (!is_subclass_of($class, \Common\Document::class)) { + return; + } + $documento = $class::find($id_documento); // Creazione del ddt al volo if (post('create_document') == 'on') { $tipo = Tipo::where('dir', $dir)->first(); - $ddt = DDT::build($ordine->anagrafica, $tipo, post('data')); - $ddt->idpagamento = $ordine->idpagamento; + $ddt = DDT::build($documento->anagrafica, $tipo, post('data')); + $ddt->idpagamento = $documento->idpagamento; - $ddt->id_documento_fe = $ordine->id_documento_fe; - $ddt->codice_cup = $ordine->codice_cup; - $ddt->codice_cig = $ordine->codice_cig; - $ddt->num_item = $ordine->num_item; - $ddt->idsede_destinazione = $ordine->idsede; + $ddt->id_documento_fe = $documento->id_documento_fe; + $ddt->codice_cup = $documento->codice_cup; + $ddt->codice_cig = $documento->codice_cig; + $ddt->num_item = $documento->num_item; + $ddt->idsede_destinazione = $documento->idsede; $ddt->save(); $id_record = $ddt->id; } - $righe = $ordine->getRighe(); + $righe = $documento->getRighe(); foreach ($righe as $riga) { if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) { $qta = post('qta_da_evadere')[$riga->id]; @@ -270,8 +278,6 @@ switch (post('op')) { // Aggiornamento seriali dalla riga dell'ordine if ($copia->isArticolo()) { - //$copia->movimenta($copia->qta); - $serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : []; $copia->serials = $serials; @@ -283,9 +289,11 @@ switch (post('op')) { ricalcola_costiagg_ddt($id_record); - flash()->info(tr('Ordine _NUM_ aggiunto!', [ - '_NUM_' => $ordine->numero, - ])); + // Messaggio informativo + $message = tr('_DOC_ aggiunto!', [ + '_DOC_' => $documento->getReference(), + ]); + flash()->info($message); break; diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 666508752..78335bfef 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -594,26 +594,14 @@ switch (post('op')) { // Aggiunta di un documento in fattura case 'add_documento': + $class = post('class'); $id_documento = post('id_documento'); - $type = post('type'); - $movimenta = true; - $idsede = 0; - - if ($type == 'ordine') { - $documento = \Modules\Ordini\Ordine::find($id_documento); - $idsede = $documento->idsede; - } elseif ($type == 'ddt') { - $documento = \Modules\DDT\DDT::find($id_documento); - $idsede = ($documento->direzione == 'entrata') ? $documento->idsede_destinazione : $documento->idsede_partenza; - $movimenta = false; - } elseif ($type == 'preventivo') { - $documento = \Modules\Preventivi\Preventivo::find($id_documento); - $idsede = $documento->idsede; - } elseif ($type == 'contratto') { - $documento = \Modules\Contratti\Contratto::find($id_documento); - $idsede = $documento->idsede; + // Individuazione del documento originale + if (!is_subclass_of($class, \Common\Document::class)) { + return; } + $documento = $class::find($id_documento); // Creazione della fattura al volo if (post('create_document') == 'on') { @@ -622,7 +610,7 @@ switch (post('op')) { $fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment')); $fattura->idpagamento = $documento->idpagamento; - $fattura->idsede_destinazione = $idsede; + $fattura->idsede_destinazione = $documento->idsede; $fattura->id_ritenuta_contributi = post('id_ritenuta_contributi') ?: null; $fattura->save(); @@ -650,10 +638,6 @@ switch (post('op')) { // Aggiornamento seriali dalla riga dell'ordine if ($copia->isArticolo()) { - if ($movimenta) { - //$copia->movimenta($copia->qta); - } - $serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : []; $copia->serials = $serials; @@ -665,25 +649,10 @@ switch (post('op')) { ricalcola_costiagg_fattura($id_record); - $message = ''; - if ($type == 'ordine') { - $message = tr('Ordine _NUM_ aggiunto!', [ - '_NUM_' => $ordine->numero, - ]); - } elseif ($type == 'ddt') { - $message = tr('DDT _NUM_ aggiunto!', [ - '_NUM_' => $ordine->numero, - ]); - } elseif ($type == 'preventivo') { - $message = tr('Preventivo _NUM_ aggiunto!', [ - '_NUM_' => $ordine->numero, - ]); - } elseif ($type == 'contratto') { - $message = tr('Contratto _NUM_ aggiunto!', [ - '_NUM_' => $ordine->numero, - ]); - } - + // Messaggio informativo + $message = tr('_DOC_ aggiunto!', [ + '_DOC_' => $documento->getReference(), + ]); flash()->info($message); break; diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 6fbadd94c..6f56aa7fd 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -278,54 +278,53 @@ $riga = $ordine->getRiga($type, $id_riga); break; - // Aggiunta di un preventivo in ordine + // Aggiunta di un documento in ordine case 'add_preventivo': - $preventivo = \Modules\Preventivi\Preventivo::find(post('id_documento')); + case 'add_documento': + $class = post('class'); + $id_documento = post('id_documento'); + + // Individuazione del documento originale + if (!is_subclass_of($class, \Common\Document::class)) { + return; + } + $documento = $class::find($id_documento); // Creazione dell' ordine al volo if (post('create_document') == 'on') { $tipo = Tipo::where('dir', $dir)->first(); - $ordine = Ordine::build($preventivo->anagrafica, $tipo, post('data')); - $ordine->idpagamento = $preventivo->idpagamento; - $ordine->idsede = $preventivo->idsede; + $ordine = Ordine::build($documento->anagrafica, $tipo, post('data')); + $ordine->idpagamento = $documento->idpagamento; + $ordine->idsede = $documento->idsede; - $ordine->id_documento_fe = $preventivo->id_documento_fe; - $ordine->codice_cup = $preventivo->codice_cup; - $ordine->codice_cig = $preventivo->codice_cig; - $ordine->num_item = $preventivo->num_item; + $ordine->id_documento_fe = $documento->id_documento_fe; + $ordine->codice_cup = $documento->codice_cup; + $ordine->codice_cig = $documento->codice_cig; + $ordine->num_item = $documento->num_item; $ordine->save(); $id_record = $ordine->id; } - $parziale = false; - $righe = $preventivo->getRighe(); + $righe = $documento->getRighe(); foreach ($righe as $riga) { if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) { $qta = post('qta_da_evadere')[$riga->id]; $copia = $riga->copiaIn($ordine, $qta); - - // Aggiornamento seriali dalla riga dell'ordine - if ($copia->isArticolo()) { - //$copia->movimenta($copia->qta); - } - $copia->save(); } - - if ($riga->qta != $riga->qta_evasa) { - $parziale = true; - } } ricalcola_costiagg_ordine($id_record); - flash()->info(tr('Preventivo _NUM_ aggiunto!', [ - '_NUM_' => $preventivo->numero, - ])); + // Messaggio informativo + $message = tr('_DOC_ aggiunto!', [ + '_DOC_' => $documento->getReference(), + ]); + flash()->info($message); break; diff --git a/modules/preventivi/buttons.php b/modules/preventivi/buttons.php index 76fbf221d..d588f98e9 100644 --- a/modules/preventivi/buttons.php +++ b/modules/preventivi/buttons.php @@ -23,12 +23,18 @@ echo '