mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-18 20:40:36 +01:00
fix: lentezza caricamento righe contratti
This commit is contained in:
parent
5dbcbaa1cf
commit
027a6b1677
@ -568,36 +568,6 @@ $("#link_form").bind("keypress", function(e) {
|
||||
|
||||
// Collegamenti diretti
|
||||
// Fatture o interventi collegati a questo contratto
|
||||
$elementi = $dbo->fetchArray('
|
||||
SELECT
|
||||
`co_documenti`.`id`,
|
||||
`co_documenti`.`data`,
|
||||
`co_documenti`.`numero`,
|
||||
`co_documenti`.`numero_esterno`,
|
||||
`co_tipidocumento_lang`.`title` AS tipo_documento,
|
||||
IF(`co_tipidocumento`.`dir` = \'entrata\', \'Fatture di vendita\', \'Fatture di acquisto\') AS modulo
|
||||
FROM `co_documenti`
|
||||
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
|
||||
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
|
||||
LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
|
||||
WHERE `co_righe_documenti`.`idcontratto` = '.prepare($id_record).'
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
`in_interventi`.`id`,
|
||||
`in_interventi`.`data_richiesta`,
|
||||
`in_interventi`.`codice`,
|
||||
NULL,
|
||||
\'Attività\',
|
||||
\'Interventi\'
|
||||
FROM `in_interventi`
|
||||
JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id`
|
||||
WHERE (`in_righe_interventi`.`original_document_id` = '.prepare($contratto->id).' '.($contratto ? 'AND `in_righe_interventi`.`original_document_type` = '.prepare($contratto::class) : '').')
|
||||
OR `in_interventi`.`id_contratto` = '.prepare($id_record).'
|
||||
|
||||
ORDER BY `data`');
|
||||
|
||||
if (!empty($elementi)) {
|
||||
echo '
|
||||
<div class="card card-warning collapsable collapsed-card">
|
||||
|
@ -40,4 +40,37 @@ if (!empty($id_record)) {
|
||||
LEFT JOIN `my_impianti_contratti` ON `my_impianti_contratti`.`idcontratto` = `co_contratti`.`id`
|
||||
WHERE
|
||||
`co_contratti`.`id`='.prepare($id_record));
|
||||
|
||||
$elementi = $dbo->fetchArray('
|
||||
SELECT
|
||||
`co_documenti`.`id`,
|
||||
`co_documenti`.`data`,
|
||||
`co_documenti`.`numero`,
|
||||
`co_documenti`.`numero_esterno`,
|
||||
`co_tipidocumento_lang`.`title` AS tipo_documento,
|
||||
IF(`co_tipidocumento`.`dir` = \'entrata\', \'Fatture di vendita\', \'Fatture di acquisto\') AS modulo,
|
||||
GROUP_CONCAT(CONCAT(`co_righe_documenti`.`original_id`, " - ", `co_righe_documenti`.`qta`) SEPARATOR ", ") AS righe
|
||||
FROM `co_documenti`
|
||||
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
|
||||
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
|
||||
LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
|
||||
WHERE `co_righe_documenti`.`idcontratto` = '.prepare($id_record).'
|
||||
GROUP BY id
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
`in_interventi`.`id`,
|
||||
`in_interventi`.`data_richiesta`,
|
||||
`in_interventi`.`codice`,
|
||||
NULL,
|
||||
\'Attività\',
|
||||
\'Interventi\',
|
||||
GROUP_CONCAT(CONCAT(`original_id`, " - ", `qta`) SEPARATOR ", ") AS righe
|
||||
FROM `in_interventi`
|
||||
JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id`
|
||||
WHERE (`in_righe_interventi`.`original_document_id` = '.prepare($id_record).' AND `in_righe_interventi`.`original_document_type` = \'Modules\\\\Contratti\\\\Contratto\') OR `in_interventi`.`id_contratto` = '.prepare($id_record).'
|
||||
GROUP BY id
|
||||
|
||||
ORDER BY `data`');
|
||||
}
|
||||
|
@ -26,6 +26,11 @@ $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc'];
|
||||
$righe = $order_row_desc ? $contratto->getRighe()->sortByDesc('created_at') : $contratto->getRighe();
|
||||
$colspan = '7';
|
||||
|
||||
$evasione_bar = [
|
||||
'Fatture di vendita' => 'success',
|
||||
'Interventi' => 'warning',
|
||||
];
|
||||
|
||||
echo '
|
||||
<div class="table-responsive row-list">
|
||||
<table class="table table-striped table-hover table-sm table-bordered">
|
||||
@ -141,17 +146,25 @@ foreach ($righe as $riga) {
|
||||
{[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "decimals": "qta", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "<span class=\'tip\' title=\''.tr('Quantità evasa').' / '.tr('totale').': '.tr('_QTA_ / _TOT_', ['_QTA_' => numberFormat($riga->qta_evasa, 'qta'), '_TOT_' => numberFormat($riga->qta, 'qta')]).'\'>'.$riga->um.' <small><i class=\'text-muted fa fa-info-circle\'></i></small></span>", "disabled": "'.($riga->isSconto() ? 1 : 0).'", "disabled": "'.($block_edit || $riga->isSconto()).'" ]}
|
||||
<div class="progress" style="height:4px;">';
|
||||
// Visualizzazione evasione righe per documento
|
||||
$evasione_bar = [];
|
||||
$evasione_bar['dt_righe_ddt'] = 'info';
|
||||
$evasione_bar['co_righe_documenti'] = 'primary';
|
||||
$evasione_bar['in_righe_interventi'] = 'warning';
|
||||
$evasione_bar['or_righe_ordini'] = 'success';
|
||||
foreach ($evasione_bar as $table => $color) {
|
||||
$righe_ev = $dbo->table($table)->where('original_id', $riga->id)->where('original_type', $riga::class)->get();
|
||||
if ($righe_ev->count() > 0) {
|
||||
$perc_ev = $righe_ev->sum('qta') * 100 / ($riga->qta ?: 1);
|
||||
echo '
|
||||
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ev.'%"></div>';
|
||||
$color = '';
|
||||
$valore_evaso = 0;
|
||||
foreach ($elementi as $elemento) {
|
||||
$righe_evase = explode(', ', $elemento['righe']);
|
||||
$righe_evase_array = array_reduce($righe_evase, function($carry, $riga_evasa) {
|
||||
list($id, $qta) = explode(' - ', $riga_evasa);
|
||||
$carry[$id] = $qta;
|
||||
return $carry;
|
||||
}, []);
|
||||
foreach ($righe_evase_array as $id => $qta) {
|
||||
if ($id == $riga->id) {
|
||||
$color = $evasione_bar[$elemento['modulo']];
|
||||
$valore_evaso = $qta;
|
||||
$perc_ev = $valore_evaso * 100 / ($riga->qta ?: 1);
|
||||
if ($perc_ev > 0) {
|
||||
echo '
|
||||
<div class="progress-bar bg-'.$color.'" style="width:'.$perc_ev.'%"></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
echo '
|
||||
@ -394,6 +407,22 @@ if (!$block_edit && sizeof($righe) > 0) {
|
||||
}
|
||||
echo '
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<h5>'.tr('Quantità evasa in').':</h5>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<span class="pull-left icon" style="background-color:#28a745;"></span>
|
||||
<span class="text"> '.tr('Fattura').'</span>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<span class="pull-left icon" style="background-color:#ffc107;"></span>
|
||||
<span class="text"> '.tr('Attività').'</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
async function modificaRiga(button) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user