Generalizzazione procedura importazione documenti

This commit is contained in:
Thomas Zilio 2020-07-02 15:27:18 +02:00
parent c610b3bfbe
commit 3f7c3e42c1
9 changed files with 112 additions and 125 deletions

View File

@ -34,7 +34,8 @@ echo '
<input type="hidden" name="backto" value="record-edit"> <input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_documento" value="'.$documento->id.'"> <input type="hidden" name="id_documento" value="'.$documento->id.'">
<input type="hidden" name="type" value="'.$options['type'].'">'; <input type="hidden" name="type" value="'.$options['type'].'">
<input type="hidden" name="class" value="'.get_class($documento).'">';
// Creazione fattura dal documento // Creazione fattura dal documento
if (!empty($options['create_document'])) { if (!empty($options['create_document'])) {

View File

@ -121,7 +121,7 @@ function discountInfo(\Common\Components\Row $riga, $mostra_maggiorazione = true
function reference($document) function reference($document)
{ {
if (!empty($document) && !($document instanceof \Common\ReferenceInterface)) { if (!empty($document) && !($document instanceof \Common\ReferenceInterface)) {
return; return null;
} }
$extra = ''; $extra = '';
@ -129,15 +129,19 @@ function reference($document)
$document_id = null; $document_id = null;
if (empty($document)) { if (empty($document)) {
$description = tr('Documento di riferimento non disponibile'); $content = tr('non disponibile');
$extra = 'class="disabled"'; $extra = 'class="disabled"';
} else { } else {
$module_id = $document->module; $module_id = $document->module;
$document_id = $document->id; $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); return Modules::link($module_id, $document_id, $description, $description, $extra);
} }

View File

@ -385,32 +385,39 @@ $riga = $contratto->getRiga($type, $id_riga);
break; break;
// Aggiunta di un documento in contratto
case 'add_preventivo': 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 // Creazione del contratto al volo
if (post('create_document') == 'on') { if (post('create_document') == 'on') {
$contratto = Contratto::build($preventivo->anagrafica, $preventivo->nome); $contratto = Contratto::build($documento->anagrafica, $documento->nome);
$contratto->idpagamento = $preventivo->idpagamento; $contratto->idpagamento = $documento->idpagamento;
$contratto->idsede = $preventivo->idsede; $contratto->idsede = $documento->idsede;
$contratto->id_documento_fe = $preventivo->id_documento_fe; $contratto->id_documento_fe = $documento->id_documento_fe;
$contratto->codice_cup = $preventivo->codice_cup; $contratto->codice_cup = $documento->codice_cup;
$contratto->codice_cig = $preventivo->codice_cig; $contratto->codice_cig = $documento->codice_cig;
$contratto->num_item = $preventivo->num_item; $contratto->num_item = $documento->num_item;
$contratto->descrizione = $preventivo->descrizione; $contratto->descrizione = $documento->descrizione;
$contratto->esclusioni = $preventivo->esclusioni; $contratto->esclusioni = $documento->esclusioni;
$contratto->save(); $contratto->save();
$id_record = $contratto->id; $id_record = $contratto->id;
} }
$parziale = false; $righe = $documento->getRighe();
$righe = $preventivo->getRighe();
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) { if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
$qta = 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(); $copia->save();
} }
if ($riga->qta != $riga->qta_evasa) {
$parziale = true;
}
} }
ricalcola_costiagg_ordine($id_record); ricalcola_costiagg_ordine($id_record);
flash()->info(tr('Preventivo _NUM_ aggiunto!', [ // Messaggio informativo
'_NUM_' => $preventivo->numero, $message = tr('_DOC_ aggiunto!', [
])); '_DOC_' => $documento->getReference(),
]);
flash()->info($message);
break; break;
} }

View File

@ -239,29 +239,37 @@ switch (post('op')) {
break; break;
// Aggiunta di un ordine in ddt // Aggiunta di un documento in ddt
case 'add_ordine': 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 // Creazione del ddt al volo
if (post('create_document') == 'on') { if (post('create_document') == 'on') {
$tipo = Tipo::where('dir', $dir)->first(); $tipo = Tipo::where('dir', $dir)->first();
$ddt = DDT::build($ordine->anagrafica, $tipo, post('data')); $ddt = DDT::build($documento->anagrafica, $tipo, post('data'));
$ddt->idpagamento = $ordine->idpagamento; $ddt->idpagamento = $documento->idpagamento;
$ddt->id_documento_fe = $ordine->id_documento_fe; $ddt->id_documento_fe = $documento->id_documento_fe;
$ddt->codice_cup = $ordine->codice_cup; $ddt->codice_cup = $documento->codice_cup;
$ddt->codice_cig = $ordine->codice_cig; $ddt->codice_cig = $documento->codice_cig;
$ddt->num_item = $ordine->num_item; $ddt->num_item = $documento->num_item;
$ddt->idsede_destinazione = $ordine->idsede; $ddt->idsede_destinazione = $documento->idsede;
$ddt->save(); $ddt->save();
$id_record = $ddt->id; $id_record = $ddt->id;
} }
$righe = $ordine->getRighe(); $righe = $documento->getRighe();
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) { if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
$qta = 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 // Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) { if ($copia->isArticolo()) {
//$copia->movimenta($copia->qta);
$serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : []; $serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : [];
$copia->serials = $serials; $copia->serials = $serials;
@ -283,9 +289,11 @@ switch (post('op')) {
ricalcola_costiagg_ddt($id_record); ricalcola_costiagg_ddt($id_record);
flash()->info(tr('Ordine _NUM_ aggiunto!', [ // Messaggio informativo
'_NUM_' => $ordine->numero, $message = tr('_DOC_ aggiunto!', [
])); '_DOC_' => $documento->getReference(),
]);
flash()->info($message);
break; break;

View File

@ -594,26 +594,14 @@ switch (post('op')) {
// Aggiunta di un documento in fattura // Aggiunta di un documento in fattura
case 'add_documento': case 'add_documento':
$class = post('class');
$id_documento = post('id_documento'); $id_documento = post('id_documento');
$type = post('type');
$movimenta = true; // Individuazione del documento originale
$idsede = 0; if (!is_subclass_of($class, \Common\Document::class)) {
return;
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;
} }
$documento = $class::find($id_documento);
// Creazione della fattura al volo // Creazione della fattura al volo
if (post('create_document') == 'on') { if (post('create_document') == 'on') {
@ -622,7 +610,7 @@ switch (post('op')) {
$fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment')); $fattura = Fattura::build($documento->anagrafica, $tipo, post('data'), post('id_segment'));
$fattura->idpagamento = $documento->idpagamento; $fattura->idpagamento = $documento->idpagamento;
$fattura->idsede_destinazione = $idsede; $fattura->idsede_destinazione = $documento->idsede;
$fattura->id_ritenuta_contributi = post('id_ritenuta_contributi') ?: null; $fattura->id_ritenuta_contributi = post('id_ritenuta_contributi') ?: null;
$fattura->save(); $fattura->save();
@ -650,10 +638,6 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine // Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) { if ($copia->isArticolo()) {
if ($movimenta) {
//$copia->movimenta($copia->qta);
}
$serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : []; $serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : [];
$copia->serials = $serials; $copia->serials = $serials;
@ -665,25 +649,10 @@ switch (post('op')) {
ricalcola_costiagg_fattura($id_record); ricalcola_costiagg_fattura($id_record);
$message = ''; // Messaggio informativo
if ($type == 'ordine') { $message = tr('_DOC_ aggiunto!', [
$message = tr('Ordine _NUM_ aggiunto!', [ '_DOC_' => $documento->getReference(),
'_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,
]);
}
flash()->info($message); flash()->info($message);
break; break;

View File

@ -278,54 +278,53 @@ $riga = $ordine->getRiga($type, $id_riga);
break; break;
// Aggiunta di un preventivo in ordine // Aggiunta di un documento in ordine
case 'add_preventivo': 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 // Creazione dell' ordine al volo
if (post('create_document') == 'on') { if (post('create_document') == 'on') {
$tipo = Tipo::where('dir', $dir)->first(); $tipo = Tipo::where('dir', $dir)->first();
$ordine = Ordine::build($preventivo->anagrafica, $tipo, post('data')); $ordine = Ordine::build($documento->anagrafica, $tipo, post('data'));
$ordine->idpagamento = $preventivo->idpagamento; $ordine->idpagamento = $documento->idpagamento;
$ordine->idsede = $preventivo->idsede; $ordine->idsede = $documento->idsede;
$ordine->id_documento_fe = $preventivo->id_documento_fe; $ordine->id_documento_fe = $documento->id_documento_fe;
$ordine->codice_cup = $preventivo->codice_cup; $ordine->codice_cup = $documento->codice_cup;
$ordine->codice_cig = $preventivo->codice_cig; $ordine->codice_cig = $documento->codice_cig;
$ordine->num_item = $preventivo->num_item; $ordine->num_item = $documento->num_item;
$ordine->save(); $ordine->save();
$id_record = $ordine->id; $id_record = $ordine->id;
} }
$parziale = false; $righe = $documento->getRighe();
$righe = $preventivo->getRighe();
foreach ($righe as $riga) { foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) { if (post('evadere')[$riga->id] == 'on' and !empty(post('qta_da_evadere')[$riga->id])) {
$qta = post('qta_da_evadere')[$riga->id]; $qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($ordine, $qta); $copia = $riga->copiaIn($ordine, $qta);
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
//$copia->movimenta($copia->qta);
}
$copia->save(); $copia->save();
} }
if ($riga->qta != $riga->qta_evasa) {
$parziale = true;
}
} }
ricalcola_costiagg_ordine($id_record); ricalcola_costiagg_ordine($id_record);
flash()->info(tr('Preventivo _NUM_ aggiunto!', [ // Messaggio informativo
'_NUM_' => $preventivo->numero, $message = tr('_DOC_ aggiunto!', [
])); '_DOC_' => $documento->getReference(),
]);
flash()->info($message);
break; break;

View File

@ -23,6 +23,12 @@ echo '
<span class="caret"></span> <span class="caret"></span>
</button> </button>
<ul class="dropdown-menu dropdown-menu-right"> <ul class="dropdown-menu dropdown-menu-right">
<li>
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
<i class="fa fa-truck"></i>&nbsp;'.tr('DDT in uscita').'
</a>
</li>
<li> <li>
<a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'"> <a class="'.($disabled ? '' : 'disabled').'" data-href="'.$structure->fileurl('crea_documento.php').'?id_module='.$id_module.'&id_record='.$id_record.'&documento=ordine" data-toggle="modal" data-title="'.tr('Crea ordine cliente').'">
<i class="fa fa-file-o"></i>&nbsp;'.tr('Ordine cliente').' <i class="fa fa-file-o"></i>&nbsp;'.tr('Ordine cliente').'

View File

@ -12,6 +12,9 @@ if (get('documento') == 'fattura') {
} elseif (get('documento') == 'ordine') { } elseif (get('documento') == 'ordine') {
$final_module = 'Ordini cliente'; $final_module = 'Ordini cliente';
$op = 'add_preventivo'; $op = 'add_preventivo';
} elseif (get('documento') == 'ddt') {
$final_module = 'Ddt di vendita';
$op = 'add_documento';
} else { } else {
$final_module = 'Contratti'; $final_module = 'Contratti';
$op = 'add_preventivo'; $op = 'add_preventivo';

View File

@ -2,8 +2,6 @@
namespace Traits; namespace Traits;
use Stringy\Stringy;
trait ReferenceTrait trait ReferenceTrait
{ {
abstract public function getReferenceName(); abstract public function getReferenceName();
@ -14,34 +12,28 @@ trait ReferenceTrait
public function getReference() public function getReference()
{ {
// Informazioni disponibili
$name = $this->getReferenceName(); $name = $this->getReferenceName();
$number = $this->getReferenceNumber(); $number = $this->getReferenceNumber();
$date = $this->getReferenceDate(); $date = $this->getReferenceDate();
// Testo relativo // Testi predefiniti
$name = Stringy::create($name)->toLowerCase();
if (!empty($date) && !empty($number)) { if (!empty($date) && !empty($number)) {
$description = tr('Rif. _DOC_ num. _NUM_ del _DATE_', [ $description = tr('_DOC_ num. _NUM_ del _DATE_');
'_DOC_' => $name,
'_NUM_' => $number,
'_DATE_' => dateFormat($date),
]);
} elseif (!empty($number)) { } elseif (!empty($number)) {
$description = tr('Rif. _DOC_ num. _NUM_', [ $description = tr('_DOC_ num. _NUM_');
} elseif (!empty($date)) {
$description = tr('_DOC_ del _DATE_');
} else {
$description = tr('_DOC_');
}
// Creazione descrizione
$description = replace($description, [
'_DOC_' => $name, '_DOC_' => $name,
'_NUM_' => $number, '_NUM_' => $number,
]);
} elseif (!empty($date)) {
$description = tr('Rif. _DOC_ del _DATE_', [
'_DOC_' => $name,
'_DATE_' => dateFormat($date), '_DATE_' => dateFormat($date),
]); ]);
} else {
$description = tr('Rif. _DOC_', [
'_DOC_' => $name,
]);
}
return $description; return $description;
} }