Miglioramento grafica importazione FE
This commit is contained in:
parent
d8914215f3
commit
8952ad0c0a
|
@ -81,8 +81,28 @@ function start_superselect() {
|
||||||
params.page = params.page || 0;
|
params.page = params.page || 0;
|
||||||
params.length = params.length || 100;
|
params.length = params.length || 100;
|
||||||
|
|
||||||
|
let results = data.results;
|
||||||
|
|
||||||
|
// Interpretazione forzata per campi optgroup
|
||||||
|
if (results[0]['optgroup']) {
|
||||||
|
let groups = results.reduce(function (r, a) {
|
||||||
|
r[a.optgroup] = r[a.optgroup] || [];
|
||||||
|
r[a.optgroup].push(a);
|
||||||
|
return r;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
let results_groups = [];
|
||||||
|
for (const key in groups) {
|
||||||
|
results_groups.push({
|
||||||
|
text: key,
|
||||||
|
children: groups[key],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
results = results_groups;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
results: data.results,
|
results: results,
|
||||||
pagination: {
|
pagination: {
|
||||||
more: (params.page + 1) * params.length < data.recordsFiltered,
|
more: (params.page + 1) * params.length < data.recordsFiltered,
|
||||||
}
|
}
|
||||||
|
@ -218,8 +238,8 @@ jQuery.fn.getSelectOption = function (name) {
|
||||||
* @param name
|
* @param name
|
||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
function updateSelectOption(name, value){
|
function updateSelectOption(name, value) {
|
||||||
$(".superselectajax").each(function (){
|
$(".superselectajax").each(function () {
|
||||||
$(this).setSelectOption(name, value);
|
$(this).setSelectOption(name, value);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,9 +193,9 @@ echo '
|
||||||
echo '
|
echo '
|
||||||
<script>
|
<script>
|
||||||
async function modificaRiga(button) {
|
async function modificaRiga(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
// Salvataggio via AJAX
|
// Salvataggio via AJAX
|
||||||
let valid = await salvaForm(button, $("#edit-form"));
|
let valid = await salvaForm(button, $("#edit-form"));
|
||||||
|
@ -218,9 +218,9 @@ function rimuoviRiga(button) {
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Sì').'"
|
confirmButtonText: "'.tr('Sì').'"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
|
|
|
@ -255,9 +255,9 @@ echo '
|
||||||
echo '
|
echo '
|
||||||
<script>
|
<script>
|
||||||
async function modificaRiga(button) {
|
async function modificaRiga(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
// Salvataggio via AJAX
|
// Salvataggio via AJAX
|
||||||
let valid = await salvaForm(button, $("#edit-form"));
|
let valid = await salvaForm(button, $("#edit-form"));
|
||||||
|
@ -280,9 +280,9 @@ function rimuoviRiga(button) {
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Sì').'"
|
confirmButtonText: "'.tr('Sì').'"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
|
@ -306,17 +306,17 @@ function rimuoviRiga(button) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function modificaSeriali(button) {
|
function modificaSeriali(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
||||||
}
|
}
|
||||||
|
|
||||||
function apriRiferimenti(button) {
|
function apriRiferimenti(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
openModal("'.tr('Riferimenti riga').'", globals.rootdir + "/actions.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&op=visualizza_riferimenti&riga_id=" + id + "&riga_type=" + type)
|
openModal("'.tr('Riferimenti riga').'", globals.rootdir + "/actions.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&op=visualizza_riferimenti&riga_id=" + id + "&riga_type=" + type)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../../core.php';
|
||||||
|
|
||||||
|
switch ($resource) {
|
||||||
|
/*
|
||||||
|
* Opzioni utilizzate:
|
||||||
|
* - id_anagrafica
|
||||||
|
*/
|
||||||
|
case 'riferimenti-fe':
|
||||||
|
$direzione = 'uscita';
|
||||||
|
$id_anagrafica = $superselect['id_anagrafica'];
|
||||||
|
if (empty($id_anagrafica)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$query_ordini = "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 text,
|
||||||
|
'Ordini' AS optgroup,
|
||||||
|
'ordine' AS tipo
|
||||||
|
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';
|
||||||
|
|
||||||
|
$query_ddt = "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 text,
|
||||||
|
'DDT' AS optgroup,
|
||||||
|
'ddt' AS tipo
|
||||||
|
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';
|
||||||
|
|
||||||
|
$ordini = $database->fetchArray($query_ordini);
|
||||||
|
$ddt = $database->fetchArray($query_ddt);
|
||||||
|
$results = array_merge($ordini, $ddt);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
|
@ -363,9 +363,9 @@ echo '
|
||||||
echo '
|
echo '
|
||||||
<script>
|
<script>
|
||||||
async function modificaRiga(button) {
|
async function modificaRiga(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
// Salvataggio via AJAX
|
// Salvataggio via AJAX
|
||||||
let valid = await salvaForm(button, $("#edit-form"));
|
let valid = await salvaForm(button, $("#edit-form"));
|
||||||
|
@ -388,9 +388,9 @@ function rimuoviRiga(button) {
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Sì').'"
|
confirmButtonText: "'.tr('Sì').'"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
|
@ -414,17 +414,17 @@ function rimuoviRiga(button) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function modificaSeriali(button) {
|
function modificaSeriali(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
||||||
}
|
}
|
||||||
|
|
||||||
function apriInformazioniFE(button) {
|
function apriInformazioniFE(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
openModal("'.tr('Dati Fattura Elettronica').'", "'.$module->fileurl('fe/row-fe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type)
|
openModal("'.tr('Dati Fattura Elettronica').'", "'.$module->fileurl('fe/row-fe.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type)
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,9 +151,9 @@ if (!$righe->isEmpty()) {
|
||||||
echo '
|
echo '
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
async function modificaRiga(button) {
|
async function modificaRiga(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
// Salvataggio via AJAX
|
// Salvataggio via AJAX
|
||||||
let valid = await salvaForm(button, $("#edit-form"));
|
let valid = await salvaForm(button, $("#edit-form"));
|
||||||
|
@ -176,9 +176,9 @@ function rimuoviRiga(button) {
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Sì').'"
|
confirmButtonText: "'.tr('Sì').'"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
|
@ -202,9 +202,9 @@ function rimuoviRiga(button) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function modificaSeriali(button) {
|
function modificaSeriali(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,9 +270,9 @@ echo '
|
||||||
echo '
|
echo '
|
||||||
<script>
|
<script>
|
||||||
async function modificaRiga(button) {
|
async function modificaRiga(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
// Salvataggio via AJAX
|
// Salvataggio via AJAX
|
||||||
let valid = await salvaForm(button, $("#edit-form"));
|
let valid = await salvaForm(button, $("#edit-form"));
|
||||||
|
@ -295,9 +295,9 @@ function rimuoviRiga(button) {
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Sì').'"
|
confirmButtonText: "'.tr('Sì').'"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
|
@ -321,9 +321,9 @@ function rimuoviRiga(button) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function modificaSeriali(button) {
|
function modificaSeriali(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
openModal("'.tr('Aggiorna SN').'", globals.rootdir + "/modules/fatture/add_serial.php?id_module=" + globals.id_module + "&id_record=" + globals.id_record + "&riga_id=" + id + "&riga_type=" + type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -219,9 +219,9 @@ echo '
|
||||||
echo '
|
echo '
|
||||||
<script>
|
<script>
|
||||||
async function modificaRiga(button) {
|
async function modificaRiga(button) {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
// Salvataggio via AJAX
|
// Salvataggio via AJAX
|
||||||
let valid = await salvaForm(button, $("#edit-form"));
|
let valid = await salvaForm(button, $("#edit-form"));
|
||||||
|
@ -244,9 +244,9 @@ function rimuoviRiga(button) {
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonText: "'.tr('Sì').'"
|
confirmButtonText: "'.tr('Sì').'"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
var riga = $(button).closest("tr");
|
let riga = $(button).closest("tr");
|
||||||
var id = riga.data("id");
|
let id = riga.data("id");
|
||||||
var type = riga.data("type");
|
let type = riga.data("type");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: globals.rootdir + "/actions.php",
|
url: globals.rootdir + "/actions.php",
|
||||||
|
|
|
@ -261,12 +261,17 @@ if (!empty($righe)) {
|
||||||
</h4>
|
</h4>
|
||||||
|
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-hover table-striped table-condensed">
|
<table class="table table-striped table-hover table-condensed table-bordered">
|
||||||
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>'.tr('Descrizione').'</th>
|
<th>'.tr('Descrizione').'</th>
|
||||||
<th width="25%">'.tr('Dati contabili').'*</th>
|
<th class="text-center" width="10%">'.tr('Quantità').'</th>
|
||||||
<th width="25%">'.tr('Articolo').'</th>
|
<th class="text-center" width="10%">'.tr('Prezzo unitario').'</th>
|
||||||
</tr>';
|
<th class="text-center" width="10%">'.tr('Aliquota').'</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>';
|
||||||
|
|
||||||
foreach ($righe as $key => $riga) {
|
foreach ($righe as $key => $riga) {
|
||||||
$query = 'SELECT id, IF(codice IS NULL, descrizione, CONCAT(codice, " - ", descrizione)) AS descrizione FROM co_iva WHERE percentuale = '.prepare($riga['AliquotaIVA']);
|
$query = 'SELECT id, IF(codice IS NULL, descrizione, CONCAT(codice, " - ", descrizione)) AS descrizione FROM co_iva WHERE percentuale = '.prepare($riga['AliquotaIVA']);
|
||||||
|
@ -293,67 +298,86 @@ if (!empty($righe)) {
|
||||||
$id_articolo = $database->fetchOne('SELECT id FROM mg_articoli WHERE codice = '.prepare($codice_principale))['id'];
|
$id_articolo = $database->fetchOne('SELECT id FROM mg_articoli WHERE codice = '.prepare($codice_principale))['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$qta = $riga['Quantita'];
|
||||||
|
$um = $riga['UnitaMisura'];
|
||||||
|
$prezzo_unitario = $riga['PrezzoUnitario'];
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<tr>
|
<tr data-id="'.$key.'" data-qta="'.$qta.'">
|
||||||
<td>
|
<td>
|
||||||
'.$riga['Descrizione'].'<br>
|
'.$riga['Descrizione'].'<br>
|
||||||
|
|
||||||
'.(!empty($codici_articoli) ? '<small>'.implode(', ', $codici_articoli).'</small><br>' : '').'
|
'.(!empty($codici_articoli) ? '<small>'.implode(', ', $codici_articoli).'</small><br>' : '').'
|
||||||
|
<span id="riferimento_'.$key.'_descrizione"></span>
|
||||||
|
<span id="riferimento_'.$key.'"></span>
|
||||||
|
</td>
|
||||||
|
|
||||||
<small>'.tr('Q.tà: _QTA_ _UM_', [
|
<td class="text-center">
|
||||||
'_QTA_' => Translator::numberToLocale($riga['Quantita']),
|
'.numberFormat($qta, 'qta').' '.$um.'
|
||||||
'_UM_' => $riga['UnitaMisura'],
|
<span id="riferimento_'.$key.'_qta"></span>
|
||||||
]).'</small><br>
|
</td>
|
||||||
|
|
||||||
<small>'.tr('Aliquota IVA: _VALUE_ _DESC_', [
|
<td class="text-right">
|
||||||
|
'.moneyFormat($prezzo_unitario).'
|
||||||
|
<span id="riferimento_'.$key.'_prezzo"></span>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-right">
|
||||||
|
'.replace('_VALUE_ _DESC_', [
|
||||||
'_VALUE_' => empty($riga['Natura']) ? numberFormat($riga['AliquotaIVA']).'%' : $riga['Natura'],
|
'_VALUE_' => empty($riga['Natura']) ? numberFormat($riga['AliquotaIVA']).'%' : $riga['Natura'],
|
||||||
'_DESC_' => $riga['RiferimentoNormativo'] ? ' - '.$riga['RiferimentoNormativo'] : '',
|
'_DESC_' => $riga['RiferimentoNormativo'] ? ' - '.$riga['RiferimentoNormativo'] : '',
|
||||||
]).'</small>
|
]).'
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr id="dati_'.$key.'">
|
||||||
|
<td colspan="4" class="row">
|
||||||
<span class="hide" id="aliquota['.$key.']">'.$riga['AliquotaIVA'].'</span>
|
<span class="hide" id="aliquota['.$key.']">'.$riga['AliquotaIVA'].'</span>
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{[ "type": "select", "name": "iva['.$key.']", "values": "query='.str_replace('"', '\"', $query).'", "required": 1, "placeholder": "Aliquota iva" ]}
|
|
||||||
<br>
|
|
||||||
{[ "type": "select", "name": "conto['.$key.']", "ajax-source": "conti-acquisti", "required": 1, "placeholder": "Conto acquisti" ]}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{[ "type": "select", "name": "articoli['.$key.']", "ajax-source": "articoli", "select-options": '.json_encode(['permetti_movimento_a_zero' => 1, 'dir' => 'entrata', 'idanagrafica' => $anagrafica ? $anagrafica->id : '']).', "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="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="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_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="id_riga_riferimento['.$key.']" id="id_riga_riferimento_'.$key.'" value="">
|
||||||
<input type="hidden" name="tipo_riga_riferimento['.$key.']" id="tipo_riga_riferimento_'.$key.'" value="">
|
<input type="hidden" name="tipo_riga_riferimento['.$key.']" id="tipo_riga_riferimento_'.$key.'" value="">
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "select", "name": "articoli['.$key.']", "ajax-source": "articoli", "select-options": '.json_encode(['permetti_movimento_a_zero' => 1, 'dir' => 'entrata', 'idanagrafica' => $anagrafica ? $anagrafica->id : '']).', "icon-after": "add|'.Modules::get('Articoli')['id'].'|codice='.htmlentities($codice_principale).'&descrizione='.htmlentities($riga['Descrizione']).'", "value": "'.$id_articolo.'", "label": "'.tr('Articolo').'" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "select", "name": "conto['.$key.']", "ajax-source": "conti-acquisti", "required": 1, "label": "'.tr('Conto acquisti').'" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "select", "name": "iva['.$key.']", "values": '.json_encode('query='.$query).', "required": 1, "label": "'.tr('Aliquota IVA').'" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{[ "type": "select", "name": "selezione_riferimento['.$key.']", "ajax-source": "riferimenti-fe", "select-options": '.json_encode(['id_anagrafica' => $anagrafica ? $anagrafica->id : '']).', "required": 1, "label": "'.tr('Riferimento').'" ]}
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<script>
|
<script>
|
||||||
function copy(){
|
function copy() {
|
||||||
var first_iva = null;
|
let first_iva = null;
|
||||||
var first_conto = null;
|
let first_conto = null;
|
||||||
|
|
||||||
$("select[name^=iva").each( function(){
|
$("select[name^=iva").each(function() {
|
||||||
if( $(this).val() != "" && first_iva == null ){
|
if ($(this).val() != "" && first_iva == null){
|
||||||
first_iva = $(this);
|
first_iva = $(this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("select[name^=conto").each( function(){
|
$("select[name^=conto").each(function() {
|
||||||
if( $(this).val() != "" && first_conto == null ){
|
if ($(this).val() != "" && first_conto == null) {
|
||||||
first_conto = $(this);
|
first_conto = $(this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -361,7 +385,7 @@ if (!empty($righe)) {
|
||||||
if(first_iva) {
|
if(first_iva) {
|
||||||
$iva = first_iva.selectData();
|
$iva = first_iva.selectData();
|
||||||
|
|
||||||
$("select[name^=iva").each(function(){
|
$("select[name^=iva").each(function() {
|
||||||
$(this).selectSet($iva.id);
|
$(this).selectSet($iva.id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -369,7 +393,7 @@ if (!empty($righe)) {
|
||||||
if(first_conto) {
|
if(first_conto) {
|
||||||
$conto = first_conto.selectData();
|
$conto = first_conto.selectData();
|
||||||
|
|
||||||
$("select[name^=conto").each(function(){
|
$("select[name^=conto").each(function() {
|
||||||
$(this).selectSetNew($conto.id, $conto.text);
|
$(this).selectSetNew($conto.id, $conto.text);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -395,25 +419,78 @@ echo '
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function selezionaRiferimento(id_riga, qta) {
|
$("select[name^=selezione_riferimento").change(function() {
|
||||||
var qta = $("#qta_riferimento_" + id_riga).val();
|
let $this = $(this);
|
||||||
|
let data = $this.selectData();
|
||||||
|
|
||||||
var tipo = $("#tipo_riferimento_" + id_riga).val();
|
if (data) {
|
||||||
var id_documento = $("#id_riferimento_" + id_riga).val();
|
let riga = $this.closest("tr").prev();
|
||||||
var id_riga_riferimento = $("#id_riga_riferimento_" + id_riga).val();
|
selezionaRiferimento(riga, data.tipo, data.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
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);
|
function selezionaRiferimento(riga, tipo_documento, id_documento) {
|
||||||
impostaRiferimento(id_riga, "", "", null);
|
let id_riga = riga.data("id");
|
||||||
$("#riferimento_" + id_riga).html("");
|
let qta = riga.data("qta");
|
||||||
|
|
||||||
|
let riferimenti = getRiferimenti();
|
||||||
|
let query = {
|
||||||
|
id_module: "'.$id_module.'",
|
||||||
|
id_record: "'.$id_record.'",
|
||||||
|
qta: qta,
|
||||||
|
id_riga: id_riga,
|
||||||
|
id_documento: id_documento,
|
||||||
|
tipo_documento: tipo_documento,
|
||||||
|
righe_ddt: riferimenti.ddt,
|
||||||
|
righe_ordini: riferimenti.ordini,
|
||||||
|
};
|
||||||
|
|
||||||
|
let url = "'.$structure->fileurl('riferimento.php').'?" + Object.keys(query).map(function(k) {
|
||||||
|
return encodeURIComponent(k) + "=" + encodeURIComponent(query[k])
|
||||||
|
}).join("&")
|
||||||
|
|
||||||
|
openModal("'.tr('Selezione riferimento').'", url);
|
||||||
}
|
}
|
||||||
|
|
||||||
function impostaRiferimento(id_riga, tipo, id_documento, tipo_riga_riferimento, id_riga_riferimento, testo) {
|
function getRiferimenti() {
|
||||||
$("#tipo_riferimento_" + id_riga).val(tipo);
|
let righe_ordini = {};
|
||||||
$("#id_riferimento_" + id_riga).val(id_documento);
|
let righe_ddt = {};
|
||||||
|
|
||||||
$("#tipo_riga_riferimento_" + id_riga).val(tipo_riga_riferimento);
|
$("[id^=tipo_riferimento_]").each(function(index, item) {
|
||||||
$("#id_riga_riferimento_" + id_riga).val(id_riga_riferimento);
|
let tipo = $(item).val();
|
||||||
|
let riga = $(item).closest("tr");
|
||||||
|
|
||||||
$("#riferimento_" + id_riga).html(testo);
|
let qta = parseFloat(riga.find("[id^=qta_riferimento_]").val());
|
||||||
|
let id_riga = riga.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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
ordini: righe_ordini,
|
||||||
|
ddt: righe_ddt,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param id_riga
|
||||||
|
* @param documento = {tipo, id, descrizione }
|
||||||
|
* @param riga = {tipo, id, descrizione, qta, prezzo_unitario}
|
||||||
|
*/
|
||||||
|
function impostaRiferimento(id_riga, documento, riga) {
|
||||||
|
console.log(id_riga);
|
||||||
|
$("#tipo_riferimento_" + id_riga).val(documento.tipo);
|
||||||
|
$("#id_riferimento_" + id_riga).val(documento.id);
|
||||||
|
|
||||||
|
$("#tipo_riga_riferimento_" + id_riga).val(riga.tipo);
|
||||||
|
$("#id_riga_riferimento_" + id_riga).val(riga.id);
|
||||||
|
|
||||||
|
$("#riferimento_" + id_riga).html(documento.descrizione);
|
||||||
}
|
}
|
||||||
</script>';
|
</script>';
|
||||||
|
|
|
@ -7,22 +7,20 @@ include_once __DIR__.'/../../core.php';
|
||||||
include_once __DIR__.'/init.php';
|
include_once __DIR__.'/init.php';
|
||||||
|
|
||||||
$direzione = 'uscita';
|
$direzione = 'uscita';
|
||||||
$id_anagrafica = $anagrafica->id;
|
|
||||||
$id_riga = get('id_riga');
|
$id_riga = get('id_riga');
|
||||||
$qta = get('qta');
|
$qta = get('qta');
|
||||||
|
|
||||||
$id_documento = get('id_documento');
|
$id_documento = get('id_documento');
|
||||||
$tipo_documento = get('tipo_documento');
|
$tipo_documento = get('tipo_documento');
|
||||||
if (!empty($tipo_documento)) {
|
if ($tipo_documento == 'ordine') {
|
||||||
if ($tipo_documento == 'ordine') {
|
|
||||||
$documento = Ordine::find($id_documento);
|
$documento = Ordine::find($id_documento);
|
||||||
$righe_utilizzate = get('righe_ordini');
|
$righe_utilizzate = get('righe_ordini');
|
||||||
} else {
|
} else {
|
||||||
$documento = DDT::find($id_documento);
|
$documento = DDT::find($id_documento);
|
||||||
$righe_utilizzate = get('righe_ddt');
|
$righe_utilizzate = get('righe_ddt');
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<table class="table table-striped table-hover table-condensed table-bordered">
|
<table class="table table-striped table-hover table-condensed table-bordered">
|
||||||
<tr>
|
<tr>
|
||||||
<th>'.tr('Descrizione').'</th>
|
<th>'.tr('Descrizione').'</th>
|
||||||
|
@ -32,20 +30,20 @@ if (!empty($tipo_documento)) {
|
||||||
|
|
||||||
<tbody>';
|
<tbody>';
|
||||||
|
|
||||||
$id_riferimento = get('id_riferimento');
|
$id_riferimento = get('id_riferimento');
|
||||||
$righe = $documento->getRighe();
|
$righe = $documento->getRighe();
|
||||||
foreach ($righe as $riga) {
|
foreach ($righe as $riga) {
|
||||||
$qta_rimanente = $riga->qta_rimanente - $righe_utilizzate[$riga->id];
|
$qta_rimanente = $riga->qta_rimanente - $righe_utilizzate[$riga->id];
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<tr '.($id_riferimento == $riga->id ? 'class="success"' : '').'>
|
<tr '.($id_riferimento == $riga->id ? 'class="success"' : '').' data-type="'.get_class($riga).'" data-id="'.$riga->id.'" data-qta="'.$riga->qta.'" data-prezzo_unitario="'.$riga->prezzo_unitario.'">
|
||||||
<td>'.$riga->descrizione.'</td>
|
<td>'.$riga->descrizione.'</td>
|
||||||
<td>'.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').'</td>
|
<td>'.numberFormat($qta_rimanente, 'qta').' / '.numberFormat($riga->qta, 'qta').'</td>
|
||||||
<td class="text-center">';
|
<td class="text-center">';
|
||||||
|
|
||||||
if ($qta_rimanente >= $qta) {
|
if ($qta_rimanente >= $qta) {
|
||||||
echo '
|
echo '
|
||||||
<button type="button" class="btn btn-info btn-xs" onclick="selezionaRiga(this, \''.$tipo_documento.'\',\''.$id_documento.'\', \''.addslashes(get_class($riga)).'\', \''.$riga->id.'\', \'Rif. '.$tipo_documento.' num. '.$documento->numero.'\')">
|
<button type="button" class="btn btn-info btn-xs" onclick="selezionaRiga(this)">
|
||||||
<i class="fa fa-check"></i>
|
<i class="fa fa-check"></i>
|
||||||
</button>';
|
</button>';
|
||||||
}
|
}
|
||||||
|
@ -53,119 +51,28 @@ if (!empty($tipo_documento)) {
|
||||||
echo '
|
echo '
|
||||||
</td>
|
</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
</tbody>
|
|
||||||
</table>';
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<div class="row">
|
</tbody>
|
||||||
<div class="col-md-6">
|
</table>
|
||||||
{[ "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>
|
<script>
|
||||||
var content = $("#righe_documento");
|
var documento_importazione = {
|
||||||
var loader = $("#box-loading");
|
tipo: "'.$tipo_documento.'",
|
||||||
|
id: "'.$id_documento.'",
|
||||||
|
descrizione: "Rif. '.$tipo_documento.' num. '.$documento->numero.'",
|
||||||
|
};
|
||||||
|
|
||||||
var id_riga_riferimento = "'.get('id_riga_riferimento').'";
|
function selezionaRiga(button) {
|
||||||
|
let riga = $(button).closest("tr");
|
||||||
|
|
||||||
$(document).ready(function(){
|
let dati_riga = {
|
||||||
loader.hide();';
|
tipo: riga.data("type"),
|
||||||
|
id: riga.data("id"),
|
||||||
|
};
|
||||||
|
impostaRiferimento("'.$id_riga.'", documento_importazione, dati_riga);
|
||||||
|
|
||||||
$tipo_riferimento = get('tipo_riferimento');
|
$(button).closest(".modal").modal("hide");
|
||||||
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(btn, 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);
|
|
||||||
|
|
||||||
$(btn).closest(".modal").modal("hide");
|
|
||||||
}
|
|
||||||
</script>';
|
</script>';
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
namespace Plugins\ReceiptFE;
|
namespace Plugins\ReceiptFE;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Modules;
|
use Modules;
|
||||||
use Modules\Fatture\Fattura;
|
use Modules\Fatture\Fattura;
|
||||||
use Plugins;
|
use Plugins;
|
||||||
|
|
|
@ -121,7 +121,6 @@ class Interventi extends AppResource
|
||||||
codice,
|
codice,
|
||||||
richiesta,
|
richiesta,
|
||||||
data_richiesta,
|
data_richiesta,
|
||||||
(SELECT MIN(`orario_inizio`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id`) AS `data`,
|
|
||||||
descrizione,
|
descrizione,
|
||||||
idanagrafica AS id_cliente,
|
idanagrafica AS id_cliente,
|
||||||
id_contratto,
|
id_contratto,
|
||||||
|
|
|
@ -27,7 +27,7 @@ echo "
|
||||||
<table class='table table-striped table-bordered' id='contents'>
|
<table class='table table-striped table-bordered' id='contents'>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class='text-center' style='width:5%'>".tr('#', [], ['upper' => true])."</th>";
|
<th class='text-center' style='width:5%'>".tr('#', [], ['upper' => true]).'</th>';
|
||||||
if ($has_image) {
|
if ($has_image) {
|
||||||
echo "
|
echo "
|
||||||
<th class='text-center' style='width:20%'>".tr('Immagine', [], ['upper' => true]).'</th>';
|
<th class='text-center' style='width:20%'>".tr('Immagine', [], ['upper' => true]).'</th>';
|
||||||
|
|
Loading…
Reference in New Issue