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="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
if (!empty($options['create_document'])) {

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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,
// Messaggio informativo
$message = tr('_DOC_ aggiunto!', [
'_DOC_' => $documento->getReference(),
]);
} 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);
break;

View File

@ -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;

View File

@ -23,6 +23,12 @@ echo '
<span class="caret"></span>
</button>
<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>
<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').'

View File

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

View File

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