From fa1c9b9b83ea6d7755f4c6f9229d7d3245c810e2 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Wed, 16 Sep 2020 09:14:00 +0200 Subject: [PATCH] Miglioramenti per importazione FE --- include/src/Components/Description.php | 54 +++++++++++++++++------ modules/ddt/bulk.php | 3 +- modules/ddt/row-list.php | 35 ++++++++------- modules/fatture/ajax/select.php | 6 +++ modules/preventivi/bulk.php | 2 +- plugins/importFE/actions.php | 4 +- plugins/importFE/generate.php | 17 +++++-- plugins/importFE/riferimento.php | 21 +++++++-- plugins/importFE/src/FatturaOrdinaria.php | 12 ++--- 9 files changed, 107 insertions(+), 47 deletions(-) diff --git a/include/src/Components/Description.php b/include/src/Components/Description.php index 1cab6b028..0fecba35a 100755 --- a/include/src/Components/Description.php +++ b/include/src/Components/Description.php @@ -183,8 +183,6 @@ abstract class Description extends Model // Attributi dell'oggetto da copiare $attributes = $this->getAttributes(); unset($attributes['id']); - unset($attributes['original_id']); - unset($attributes['original_type']); unset($attributes['order']); if ($qta !== null) { @@ -202,21 +200,19 @@ abstract class Description extends Model // Riferimento di origine per l'evasione automatica della riga $is_evasione = true; if ($is_evasione) { - $model->original_id = $this->id; - $model->original_type = $current; + // Mantenimento dell'origine della riga precedente + $model->original_id = $attributes['original_id']; + $model->original_type = $attributes['original_type']; - // Rimozione del riferimento precedente dalla descrizione - if ($this->hasOriginal()) { - $riferimento = $this->getOriginal()->parent->getReference(); - $attributes['descrizione'] = str_replace(' -Rif. '.strtolower($riferimento), '', $attributes['descrizione']); - } + // Aggiornamento dei riferimenti + list($riferimento_precedente, $nuovo_riferimento) = $model->impostaOrigine($current, $this->id); - // Aggiunta del riferimento nella descrizione - $riferimento = $this->parent->getReference(); - $attributes['descrizione'] .= ' -Rif. '.strtolower($riferimento); + // Correzione della descrizione + $attributes['descrizione'] = str_replace($riferimento_precedente, '', $attributes['descrizione']); + $attributes['descrizione'] .= $nuovo_riferimento; } + unset($attributes['original_id']); + unset($attributes['original_type']); // Impostazione del genitore $model->setParent($document); @@ -244,6 +240,36 @@ Rif. '.strtolower($riferimento); return $model; } + /** + * Imposta l'origine dell'elemento, restituendo un array contenente i replace da effettuare per modificare la descrizione in modo coerente. + * + * @param $type + * @param $id + */ + public function impostaOrigine($type, $id) + { + $riferimento_precedente = null; + $nuovo_riferimento = null; + + // Rimozione del riferimento precedente dalla descrizione + if ($this->hasOriginal()) { + $riferimento = $this->getOriginal()->parent->getReference(); + $riferimento_precedente = "\nRif. ".strtolower($riferimento); + } + + $this->original_id = $id; + $this->original_type = $type; + + // Aggiunta del riferimento nella descrizione + $origine = $type::find($id); + if (!empty($origine)) { + $riferimento = $origine->parent->getReference(); + $nuovo_riferimento = "\nRif. ".strtolower($riferimento); + } + + return [$riferimento_precedente, $nuovo_riferimento]; + } + abstract public function parent(); abstract public function getParentID(); diff --git a/modules/ddt/bulk.php b/modules/ddt/bulk.php index a2710b156..4ca071bf3 100755 --- a/modules/ddt/bulk.php +++ b/modules/ddt/bulk.php @@ -101,9 +101,8 @@ switch (post('op')) { if ($qta > 0) { //Fix per idconto righe fattura - $riga->idconto = $fattura->idconto; + $riga->idconto = $fattura->idconto; $copia = $riga->copiaIn($fattura, $qta); - // Aggiornamento seriali dalla riga dell'ordine if ($copia->isArticolo()) { diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php index 6bc010d9b..3b8672f9d 100755 --- a/modules/ddt/row-list.php +++ b/modules/ddt/row-list.php @@ -63,28 +63,31 @@ foreach ($righe as $riga) { '.$num.' - '; - - // Aggiunta dei riferimenti ai documenti - if ($riga->hasOriginal()) { - echo ' - '.reference($riga->getOriginal()->parent, tr('Origine')).''; - } - - if ($riga->isArticolo()) { - echo Modules::link('Articoli', $riga->idarticolo, $riga->codice.' - '.$riga->descrizione); - } else { - echo nl2br($riga->descrizione); - } + + '; $numero_riferimenti_riga = $riga->referenceTargets()->count(); $numero_riferimenti_collegati = $riga->referenceSources()->count(); $riferimenti_presenti = $numero_riferimenti_riga; $testo_aggiuntivo = $riferimenti_presenti ? $numero_riferimenti_riga : ''; echo ' - '; + '; + + // Aggiunta dei riferimenti ai documenti + if ($riga->hasOriginal()) { + echo ' +
'.reference($riga->getOriginal()->parent, tr('Origine')); + } + echo ' +
'; + + if ($riga->isArticolo()) { + echo Modules::link('Articoli', $riga->idarticolo, $riga->codice.' - '.$riga->descrizione); + } else { + echo nl2br($riga->descrizione); + } if ($riga->isArticolo() && !empty($riga->abilita_serial)) { if (!empty($mancanti)) { diff --git a/modules/fatture/ajax/select.php b/modules/fatture/ajax/select.php index 12f15892d..e39e58f78 100644 --- a/modules/fatture/ajax/select.php +++ b/modules/fatture/ajax/select.php @@ -29,6 +29,7 @@ switch ($resource) { 'Ordini' AS optgroup, 'ordine' AS tipo FROM or_ordini + INNER JOIN or_righe_ordini ON or_righe_ordini.idordine = or_ordini.id WHERE idanagrafica = ".prepare($id_anagrafica)." AND idstatoordine IN ( SELECT id FROM or_statiordine WHERE descrizione != 'Fatturato' @@ -36,6 +37,8 @@ switch ($resource) { idtipoordine IN ( SELECT id FROM or_tipiordine WHERE dir = ".prepare($direzione).' ) AND |where| + GROUP BY or_ordini.id + HAVING SUM(or_righe_ordini.qta - or_righe_ordini.qta_evasa) > 0 ORDER BY data DESC, numero DESC'; $query_ddt = "SELECT dt_ddt.id, @@ -43,6 +46,7 @@ switch ($resource) { 'DDT' AS optgroup, 'ddt' AS tipo FROM dt_ddt + INNER JOIN dt_righe_ddt ON dt_righe_ddt.idddt = dt_ddt.id WHERE idanagrafica = ".prepare($id_anagrafica)." AND idstatoddt IN ( SELECT id FROM dt_statiddt WHERE descrizione != 'Fatturato' @@ -50,6 +54,8 @@ switch ($resource) { idtipoddt IN ( SELECT id FROM dt_tipiddt WHERE dir=".prepare($direzione).' ) AND |where| + GROUP BY dt_ddt.id + HAVING SUM(dt_righe_ddt.qta - dt_righe_ddt.qta_evasa) > 0 ORDER BY data DESC, numero DESC'; // Sostituzione per la ricerca diff --git a/modules/preventivi/bulk.php b/modules/preventivi/bulk.php index a24f15bd9..e6ff6ec7a 100755 --- a/modules/preventivi/bulk.php +++ b/modules/preventivi/bulk.php @@ -93,7 +93,7 @@ switch (post('op')) { if ($qta > 0) { //Fix per idconto righe fattura - $riga->idconto = $fattura->idconto; + $riga->idconto = $fattura->idconto; $copia = $riga->copiaIn($fattura, $qta); // Aggiornamento seriali dalla riga dell'ordine diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php index 32cf26c8b..5529923bc 100755 --- a/plugins/importFE/actions.php +++ b/plugins/importFE/actions.php @@ -140,11 +140,11 @@ switch (filter('op')) { $fattura_pa->delete(); - //Aggiorno la tipologia di anagrafica fornitore + // Aggiorno la tipologia di anagrafica fornitore $anagrafica = $dbo->fetchOne('SELECT idanagrafica FROM co_documenti WHERE co_documenti.id='.prepare($id_fattura)); $rs_t = $dbo->fetchOne("SELECT * FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica=(SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore') AND idanagrafica=".prepare($anagrafica['idanagrafica'])); - //Se non trovo corrispondenza aggiungo all'anagrafica la tipologia fornitore + // Se non trovo corrispondenza aggiungo all'anagrafica la tipologia fornitore if (empty($rs_t)) { $dbo->query("INSERT INTO an_tipianagrafiche_anagrafiche (idtipoanagrafica, idanagrafica) VALUES ((SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore'), ".prepare($anagrafica['idanagrafica']).')'); } diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 8afac0f47..598cc0c02 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -322,11 +322,13 @@ if (!empty($righe)) { echo ' + + '.$riga['Descrizione'].'
'.(!empty($codici_articoli) ? ''.implode(', ', $codici_articoli).'
' : '').' - - + + @@ -417,7 +419,6 @@ if (!empty($righe)) { // Selezione generale per il conto if (conto_selezionato) { - console.log(conto_selezionato); conti.each(function() { $(this).selectSetNew(conto_selezionato.id, conto_selezionato.text, conto_selezionato); }); @@ -463,6 +464,7 @@ function rimuoviRiferimento(button) { input("selezione_riferimento[" + id_riga + "]").enable() .getElement().selectReset(); $(button).addClass("disabled"); + riga.removeClass("success").removeClass("warning"); } function selezionaRiferimento(riga, tipo_documento, id_documento) { @@ -540,6 +542,15 @@ function impostaRiferimento(id_riga, documento, riga) { impostaContenuto(riga_fe.data("iva_percentuale"), riga.iva_percentuale, "%", "#riferimento_" + id_riga + "_iva"); $("#riferimento_" + id_riga).html(documento.descrizione ? documento.descrizione : ""); + $("#riferimento_" + id_riga + "_descrizione").html(riga.descrizione ? riga.descrizione : ""); + + // Colorazione dell\'intera riga + let warnings = riga_fe.find(".text-warning"); + if (warnings.length === 0) { + riga_fe.addClass("success").removeClass("warning"); + } else { + riga_fe.removeClass("success").addClass("warning"); + } } // Informazioni visibili sull\'aliquota IVA diff --git a/plugins/importFE/riferimento.php b/plugins/importFE/riferimento.php index 4d28ca4ab..ad4cca9b0 100755 --- a/plugins/importFE/riferimento.php +++ b/plugins/importFE/riferimento.php @@ -41,7 +41,10 @@ echo ' - + + @@ -56,6 +59,7 @@ foreach ($righe as $riga) { $dettagli = [ 'tipo' => get_class($riga), 'id' => $riga->id, + 'descrizione' => $riga->descrizione, 'qta' => $riga->qta, 'um' => $riga->um, 'prezzo_unitario' => $riga->prezzo_unitario ?: $riga_origine->prezzo_unitario, @@ -66,7 +70,8 @@ foreach ($righe as $riga) { echo ' id ? 'class="success"' : '').' data-dettagli='.json_encode($dettagli).'> - + +
'.tr('Descrizione').''.tr('Q.tà').' + '.tr('Q.tà').' + '.tr('Prezzo unitario').' #
'.(!empty($riga->codice) ? $riga->codice.' - ' : '').$riga->descrizione.''.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').''.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').' '.$riga->um.''.moneyFormat($riga->prezzo_unitario_corrente).' '; if ($qta_rimanente >= $qta) { @@ -85,11 +90,13 @@ echo '
+ + '; diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index a30553c8e..67ba0fe4e 100755 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -152,17 +152,17 @@ class FatturaOrdinaria extends FatturaElettronica $obj = Riga::build($fattura); } + $obj->descrizione = $riga['Descrizione']; + // Collegamento al documento di riferimento if (!empty($tipi_riferimenti[$key])) { - $obj->original_id = $id_riferimenti[$key]; - $obj->original_type = $tipi_riferimenti[$key]; + list($riferimento_precedente, $nuovo_riferimento) = $obj->impostaOrigine($tipi_riferimenti[$key], $id_riferimenti[$key]); - // Riferimenti deprecati - //$id_rif = strpos($tipi_riferimenti[$key], 'Ordini') === false ? 'idddt' : 'idordine'; - //$obj->{$id_rif} = $obj->original_id; + // Correzione della descrizione + $obj->descrizione = str_replace($riferimento_precedente, '', $obj->descrizione); + $obj->descrizione .= $nuovo_riferimento; } - $obj->descrizione = $riga['Descrizione']; $obj->id_iva = $iva[$key]; $obj->idconto = $conto[$key];