Miglioramenti per importazione FE

This commit is contained in:
Dasc3er 2020-09-16 09:14:00 +02:00
parent 6abdf26098
commit fa1c9b9b83
9 changed files with 107 additions and 47 deletions

View File

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

View File

@ -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()) {

View File

@ -63,28 +63,31 @@ foreach ($righe as $riga) {
'.$num.'
</td>
<td>';
// Aggiunta dei riferimenti ai documenti
if ($riga->hasOriginal()) {
echo '
<small class="pull-right text-right text-muted">'.reference($riga->getOriginal()->parent, tr('Origine')).'</small>';
}
if ($riga->isArticolo()) {
echo Modules::link('Articoli', $riga->idarticolo, $riga->codice.' - '.$riga->descrizione);
} else {
echo nl2br($riga->descrizione);
}
<td>
<small class="pull-right text-right text-muted">';
$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 '
<button type="button" class="btn btn-xs btn-'.($riferimenti_presenti ? 'primary' : 'info').' pull-right" onclick="apriRiferimenti(this)">
<i class="fa fa-chevron-right"></i> '.tr('Riferimenti').' '.$testo_aggiuntivo.'
</button>';
<button type="button" class="btn btn-xs btn-'.($riferimenti_presenti ? 'primary' : 'info').'" onclick="apriRiferimenti(this)">
<i class="fa fa-chevron-right"></i> '.tr('Riferimenti').' '.$testo_aggiuntivo.'
</button>';
// Aggiunta dei riferimenti ai documenti
if ($riga->hasOriginal()) {
echo '
<br>'.reference($riga->getOriginal()->parent, tr('Origine'));
}
echo '
</small>';
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)) {

View File

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

View File

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

View File

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

View File

@ -322,11 +322,13 @@ if (!empty($righe)) {
echo '
<tr data-id="'.$key.'" data-qta="'.$qta.'" data-prezzo_unitario="'.$prezzo_unitario.'" data-iva_percentuale="'.$riga['AliquotaIVA'].'">
<td>
<small class="pull-right text-muted" id="riferimento_'.$key.'"></small>
'.$riga['Descrizione'].'<br>
'.(!empty($codici_articoli) ? '<small>'.implode(', ', $codici_articoli).'</small><br>' : '').'
<span id="riferimento_'.$key.'_descrizione"></span>
<b id="riferimento_'.$key.'"></b>
<b id="riferimento_'.$key.'_descrizione"></b>
</td>
<td class="text-center">
@ -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

View File

@ -41,7 +41,10 @@ echo '
<table class="table table-striped table-hover table-condensed table-bordered">
<tr>
<th>'.tr('Descrizione').'</th>
<th width="120">'.tr('Q.').' <i title="'.tr('da evadere').' / '.tr('totale').'" class="tip fa fa-question-circle-o"></i></th>
<th class="text-center" width="120">
'.tr('Q.').' <i title="'.tr('da evadere').' / '.tr('totale').'" class="tip fa fa-question-circle-o"></i>
</th>
<th class="text-center" width="120">'.tr('Prezzo unitario').'</th>
<th class="text-center" width="60">#</th>
</tr>
@ -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 '
<tr '.($id_riferimento == $riga->id ? 'class="success"' : '').' data-dettagli='.json_encode($dettagli).'>
<td>'.(!empty($riga->codice) ? $riga->codice.' - ' : '').$riga->descrizione.'</td>
<td>'.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').'</td>
<td>'.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').' '.$riga->um.'</td>
<td class="text-right">'.moneyFormat($riga->prezzo_unitario_corrente).'</td>
<td class="text-center">';
if ($qta_rimanente >= $qta) {
@ -85,11 +90,13 @@ echo '
</tbody>
</table>
<script>$(document).ready(init)</script>
<script>
var documento_importazione = {
tipo: "'.$tipo_documento.'",
id: "'.$id_documento.'",
descrizione: "'.$documento->getReference().'",
descrizione: '.json_encode(reference($documento, tr('Origine'))).',
};
function selezionaRiga(button) {
@ -100,4 +107,12 @@ function selezionaRiga(button) {
$(button).closest(".modal").modal("hide");
}
// Deselezione del riferimento in caso di selezione riga non effettuata
$("#modals > div").on("hidden.bs.modal", function () {
if(!$("#id_riferimento_'.$id_riga.'").val()) {
input("selezione_riferimento['.$id_riga.']").enable()
.getElement().selectReset();
}
});
</script>';

View File

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