Miglioramenti per importazione FE
This commit is contained in:
parent
6abdf26098
commit
fa1c9b9b83
|
@ -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();
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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']).')');
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.tà').' <i title="'.tr('da evadere').' / '.tr('totale').'" class="tip fa fa-question-circle-o"></i></th>
|
||||
<th class="text-center" width="120">
|
||||
'.tr('Q.tà').' <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>';
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
Loading…
Reference in New Issue