Aggiunta dei riferimenti a DDT e Ordini FE
This commit is contained in:
parent
c0f34697e8
commit
886a8920ba
|
@ -76,7 +76,7 @@ foreach ($righe as $riga) {
|
|||
<td class="text-center">';
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
<span >'.Translator::numberToLocale($r['qta'] - $r['qta_evasa'], 'qta').' / '.Translator::numberToLocale($r['qta'], 'qta').'</span>';
|
||||
<span>'.Translator::numberToLocale($r['qta'] - $r['qta_evasa'], 'qta').' / '.Translator::numberToLocale($r['qta'], 'qta').'</span>';
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
|
|
@ -106,6 +106,8 @@ switch (filter('op')) {
|
|||
'articoli' => post('articoli'),
|
||||
'iva' => post('iva'),
|
||||
'conto' => post('conto'),
|
||||
'tipo_riga_riferimento' => post('tipo_riga_riferimento'),
|
||||
'id_riga_riferimento' => post('id_riga_riferimento'),
|
||||
'movimentazione' => post('movimentazione'),
|
||||
'crea_articoli' => post('crea_articoli'),
|
||||
];
|
||||
|
|
|
@ -320,6 +320,19 @@ if (!empty($righe)) {
|
|||
</td>
|
||||
<td>
|
||||
{[ "type": "select", "name": "articoli['.$key.']", "ajax-source": "articoli", "icon-after": "add|'.Modules::get('Articoli')['id'].'|codice='.htmlentities($codice_principale).'&descrizione='.htmlentities($riga['Descrizione']).'", "value": "'.$id_articolo.'" ]}
|
||||
|
||||
<br>
|
||||
<span id="riferimento_'.$key.'"></span>
|
||||
<button type="button" class="btn btn-info pull-right btn-xs" onclick="selezionaRiferimento('.$key.')">
|
||||
<i class="fa fa-chevron-right"></i> '.tr('Riferimenti').'
|
||||
</button>
|
||||
|
||||
<input type="hidden" name="qta_riferimento['.$key.']" id="qta_riferimento_'.$key.'" value="'.$riga['Quantita'].'">
|
||||
|
||||
<input type="hidden" name="tipo_riferimento['.$key.']" id="tipo_riferimento_'.$key.'" value="">
|
||||
<input type="hidden" name="id_riferimento['.$key.']" id="id_riferimento_'.$key.'" value="">
|
||||
<input type="hidden" name="id_riga_riferimento['.$key.']" id="id_riga_riferimento_'.$key.'" value="">
|
||||
<input type="hidden" name="tipo_riga_riferimento['.$key.']" id="tipo_riga_riferimento_'.$key.'" value="">
|
||||
</td>
|
||||
</tr>';
|
||||
}
|
||||
|
@ -380,4 +393,28 @@ echo '
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
</form>
|
||||
|
||||
<script>
|
||||
function selezionaRiferimento(id_riga, qta) {
|
||||
var qta = $("#qta_riferimento_" + id_riga).val();
|
||||
|
||||
var tipo = $("#tipo_riferimento_" + id_riga).val();
|
||||
var id_documento = $("#id_riferimento_" + id_riga).val();
|
||||
var id_riga_riferimento = $("#id_riga_riferimento_" + id_riga).val();
|
||||
|
||||
openModal("'.tr('Selezione riferimento').'", "'.$structure->fileurl('riferimento.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'&id_record='.$id_record.'&id_riga=" + id_riga + "&qta=" + qta + "&tipo_riferimento=" + tipo + "&id_documento=" + id_documento + "&id_riga_riferimento=" + id_riga_riferimento);
|
||||
impostaRiferimento(id_riga, "", "", null);
|
||||
$("#riferimento_" + id_riga).html("");
|
||||
}
|
||||
|
||||
function impostaRiferimento(id_riga, tipo, id_documento, tipo_riga_riferimento, id_riga_riferimento, testo) {
|
||||
$("#tipo_riferimento_" + id_riga).val(tipo);
|
||||
$("#id_riferimento_" + id_riga).val(id_documento);
|
||||
|
||||
$("#tipo_riga_riferimento_" + id_riga).val(tipo_riga_riferimento);
|
||||
$("#id_riga_riferimento_" + id_riga).val(id_riga_riferimento);
|
||||
|
||||
$("#riferimento_" + id_riga).html(testo);
|
||||
}
|
||||
</script>';
|
||||
|
|
|
@ -0,0 +1,169 @@
|
|||
<?php
|
||||
|
||||
use Modules\DDT\DDT;
|
||||
use Modules\Ordini\Ordine;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
include_once __DIR__.'/init.php';
|
||||
|
||||
$direzione = 'uscita';
|
||||
$id_anagrafica = $anagrafica->id;
|
||||
$id_riga = get('id_riga');
|
||||
$qta = get('qta');
|
||||
|
||||
$id_documento = get('id_documento');
|
||||
$tipo_documento = get('tipo_documento');
|
||||
if (!empty($tipo_documento)) {
|
||||
if ($tipo_documento == 'ordine') {
|
||||
$documento = Ordine::find($id_documento);
|
||||
$righe_utilizzate = get('righe_ordini');
|
||||
} else {
|
||||
$documento = DDT::find($id_documento);
|
||||
$righe_utilizzate = get('righe_ddt');
|
||||
}
|
||||
|
||||
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="60">#</th>
|
||||
</tr>
|
||||
|
||||
<tbody>';
|
||||
|
||||
$id_riferimento = get('id_riferimento');
|
||||
$righe = $documento->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$qta_rimanente = $riga->qta_rimanente - $righe_utilizzate[$riga->id];
|
||||
|
||||
echo '
|
||||
<tr '.($id_riferimento == $riga->id ? 'class="success"' : '').'>
|
||||
<td>'.$riga->descrizione.'</td>
|
||||
<td>'.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').'</td>
|
||||
<td class="text-center">';
|
||||
|
||||
if ($qta_rimanente >= $qta) {
|
||||
echo '
|
||||
<button type="button" class="btn btn-info btn-xs" onclick="selezionaRiga(\''.$tipo_documento.'\',\''.$id_documento.'\', \''.addslashes(get_class($riga)).'\', \''.$riga->id.'\', \'Rif. '.$tipo_documento.' num. '.$documento->numero.'\')">
|
||||
<i class="fa fa-check"></i>
|
||||
</button>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Ordine').'", "name": "id_ordine", "values": "query=SELECT or_ordini.id, CONCAT(\'Ordine num. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\'), \' [\', (SELECT descrizione FROM or_statiordine WHERE id = idstatoordine) , \']\') AS descrizione FROM or_ordini WHERE idanagrafica = '.prepare($id_anagrafica).' AND idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione IN(\'Bozza\', \'Accettato\', \'Parzialmente evaso\')) AND idtipoordine IN (SELECT id FROM or_tipiordine WHERE dir='.prepare($direzione).') ORDER BY data DESC, numero DESC", "value": "" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_ddt", "values": "query=SELECT dt_ddt.id, CONCAT(\'DDT num. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\'), \' [\', (SELECT descrizione FROM dt_statiddt WHERE id = idstatoddt) , \']\') AS descrizione FROM dt_ddt WHERE idanagrafica = '.prepare($id_anagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente evaso\')) AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='.prepare($direzione).') ORDER BY data DESC, numero DESC" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="righe_documento">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" id="box-loading">
|
||||
<i class="fa fa-spinner fa-spin"></i> '.tr('Caricamento in corso').'...
|
||||
</div>';
|
||||
|
||||
$file = basename(__FILE__);
|
||||
echo '
|
||||
<script>$(document).ready(init)</script>
|
||||
|
||||
<script>
|
||||
var content = $("#righe_documento");
|
||||
var loader = $("#box-loading");
|
||||
|
||||
var id_riga_riferimento = "'.get('id_riga_riferimento').'";
|
||||
|
||||
$(document).ready(function(){
|
||||
loader.hide();';
|
||||
|
||||
$tipo_riferimento = get('tipo_riferimento');
|
||||
if (!empty($tipo_riferimento)) {
|
||||
echo '
|
||||
$("#id_'.$tipo_riferimento.'").val('.$id_documento.').trigger("change");';
|
||||
}
|
||||
|
||||
echo '
|
||||
});
|
||||
|
||||
$("#id_ddt").on("change", function(){
|
||||
var value = $(this).val();
|
||||
if (value) {
|
||||
caricaRighe("ddt", value);
|
||||
$("#id_ordine").selectClear();
|
||||
}
|
||||
});
|
||||
|
||||
$("#id_ordine").on("change", function(){
|
||||
var value = $(this).val();
|
||||
if (value) {
|
||||
caricaRighe("ordine", value);
|
||||
$("#id_ddt").selectClear();
|
||||
}
|
||||
});
|
||||
|
||||
function caricaRighe(tipo_documento, id_documento){
|
||||
loader.show();
|
||||
|
||||
var righe_ordini = {};
|
||||
var righe_ddt = {};
|
||||
$("[id^=tipo_riferimento_]").each(function(index, item) {
|
||||
var tipo = $(item).val();
|
||||
var c = $(item).closest("tr");
|
||||
|
||||
var qta = parseFloat(c.find("[id^=qta_riferimento_]").val());
|
||||
var id_riga = c.find("[id^=id_riga_riferimento_]").val();
|
||||
if (tipo == "ordine") {
|
||||
righe_ordini[id_riga] = righe_ordini[id_riga] ? righe_ordini[id_riga] : 0;
|
||||
righe_ordini[id_riga] += qta;
|
||||
} else if (tipo == "ddt") {
|
||||
righe_ddt[id_riga] = righe_ddt[id_riga] ? righe_ddt[id_riga] : 0;
|
||||
righe_ddt[id_riga] += qta;
|
||||
}
|
||||
});
|
||||
|
||||
content.html("");
|
||||
$.ajax({
|
||||
url: "'.$structure->fileurl($file).'",
|
||||
cache: false,
|
||||
type: "GET",
|
||||
data: {
|
||||
id_module: '.$id_module.',
|
||||
id_record: '.$id_record.',
|
||||
qta: '.$qta.',
|
||||
id_riferimento: id_riga_riferimento,
|
||||
id_documento: id_documento,
|
||||
tipo_documento: tipo_documento,
|
||||
righe_ddt: righe_ddt,
|
||||
righe_ordini: righe_ordini,
|
||||
},
|
||||
success: function(data) {
|
||||
loader.hide();
|
||||
|
||||
content.html(data)
|
||||
}
|
||||
});
|
||||
id_riga_riferimento = "";
|
||||
}
|
||||
|
||||
function selezionaRiga(tipo_documento, id_documento, tipo_riga_riferimento, id_riga_riferimento, testo) {
|
||||
impostaRiferimento("'.$id_riga.'", tipo_documento, id_documento, tipo_riga_riferimento, id_riga_riferimento, testo);
|
||||
}
|
||||
</script>';
|
|
@ -349,7 +349,7 @@ class FatturaElettronica
|
|||
{
|
||||
$this->saveFattura($info['id_pagamento'], $info['id_segment'], $info['id_tipo'], $info['data_registrazione'], $info['ref_fattura']);
|
||||
|
||||
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli']);
|
||||
$this->saveRighe($info['articoli'], $info['iva'], $info['conto'], $info['movimentazione'], $info['crea_articoli'], $info['tipo_riga_riferimento'], $info['id_riga_riferimento']);
|
||||
|
||||
$this->saveAllegati();
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
return $this->forceArray($result);
|
||||
}
|
||||
|
||||
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false)
|
||||
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [])
|
||||
{
|
||||
$info = $this->getRitenutaRivalsa();
|
||||
|
||||
|
@ -134,6 +134,12 @@ class FatturaOrdinaria extends FatturaElettronica
|
|||
$obj = Riga::build($fattura);
|
||||
}
|
||||
|
||||
// Collegamento al documento di riferimento
|
||||
if (!empty($tipi_riferimenti[$key])) {
|
||||
$obj->original_id = $id_riferimenti[$key];
|
||||
$obj->original_type = $tipi_riferimenti[$key];
|
||||
}
|
||||
|
||||
$obj->descrizione = $riga['Descrizione'];
|
||||
$obj->id_iva = $iva[$key];
|
||||
$obj->idconto = $conto[$key];
|
||||
|
|
|
@ -78,7 +78,7 @@ class FatturaSemplificata extends FatturaElettronica
|
|||
return $result;
|
||||
}
|
||||
|
||||
public function saveRighe($articoli, $iva, $conto, $movimentazione = true)
|
||||
public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea_articoli = false, $tipi_riferimenti = [], $id_riferimenti = [])
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
$fattura = $this->getFattura();
|
||||
|
|
|
@ -17,7 +17,7 @@ echo '
|
|||
<div class="box-header with-border">
|
||||
<h3 class="box-title">
|
||||
'.tr('Carica un XML').'
|
||||
|
||||
|
||||
<span class="tip" title="'.tr('Formati supportati: XML e P7M').'.">
|
||||
<i class="fa fa-question-circle-o"></i>
|
||||
</span>
|
||||
|
@ -53,7 +53,7 @@ if (Interaction::isEnabled()) {
|
|||
<button type="button" class="btn btn-warning" onclick="importAll(this)">
|
||||
<i class="fa fa-cloud-download"></i> '.tr('Importa tutte le ricevute').'
|
||||
</button>
|
||||
|
||||
|
||||
<button type="button" class="btn btn-primary" onclick="search(this)">
|
||||
<i class="fa fa-refresh"></i> '.tr('Ricerca ricevute').'
|
||||
</button>
|
||||
|
@ -101,7 +101,7 @@ function upload(btn) {
|
|||
type: "post",
|
||||
success: function(data){
|
||||
importMessage(data);
|
||||
|
||||
|
||||
buttonRestore(btn, restore);
|
||||
},
|
||||
error: function(xhr) {
|
||||
|
@ -122,7 +122,7 @@ function importMessage(data) {
|
|||
data = JSON.parse(data);
|
||||
|
||||
var ricevuta = "<br>'.tr('Ricevuta').': " + data.file;
|
||||
|
||||
|
||||
if(data.fattura) {
|
||||
swal({
|
||||
title: "'.tr('Importazione completata!').'",
|
||||
|
@ -147,6 +147,7 @@ function importAll(btn) {
|
|||
type: "info",
|
||||
}).then(function (result) {
|
||||
var restore = buttonLoading(btn);
|
||||
$("#main_loading").show();
|
||||
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/actions.php",
|
||||
|
@ -158,12 +159,12 @@ function importAll(btn) {
|
|||
type: "post",
|
||||
success: function(data){
|
||||
data = JSON.parse(data);
|
||||
|
||||
|
||||
if(data.length == 0){
|
||||
var html = "'.tr('Non sono state trovate ricevute da importare').'.";
|
||||
} else {
|
||||
var html = "'.tr('Sono state elaborate le seguenti ricevute:').'";
|
||||
|
||||
|
||||
data.forEach(function(element) {
|
||||
var text = "";
|
||||
if(element.fattura) {
|
||||
|
@ -171,29 +172,30 @@ function importAll(btn) {
|
|||
} else {
|
||||
text += "<i>'.tr('Fattura relativa alla ricevuta non rilevata. Controlla che esista una fattura di vendita corrispondente caricata a gestionale.').'</i>";
|
||||
}
|
||||
|
||||
|
||||
text += " (" + element.file + ")";
|
||||
|
||||
|
||||
html += "<small><li>" + text + "</li></small>";
|
||||
});
|
||||
|
||||
|
||||
html += "<br><small>'.tr("Se si sono verificati degli errori durante la procedura e il problema continua a verificarsi, contatta l'assistenza ufficiale").'</small>";
|
||||
}
|
||||
|
||||
swal({
|
||||
title: "'.tr('Operazione completata!').'",
|
||||
html: html,
|
||||
type: "info",
|
||||
})
|
||||
|
||||
|
||||
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
|
||||
swal({
|
||||
title: "'.tr('Operazione completata!').'",
|
||||
html: html,
|
||||
type: "info",
|
||||
});
|
||||
|
||||
buttonRestore(button, restore);
|
||||
$("#main_loading").fadeOut();
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
error: function(data) {
|
||||
alert("'.tr('Errore').': " + data);
|
||||
|
||||
|
||||
buttonRestore(btn, restore);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue