Aggiunta gestione inline campo costo e prezzo unitario nei documenti

This commit is contained in:
MatteoPistorello 2023-09-29 15:34:02 +02:00
parent 69bb54b04b
commit 92354a0281
13 changed files with 264 additions and 245 deletions

View File

@ -632,10 +632,12 @@ switch (post('op')) {
if (!empty($riga)) { if (!empty($riga)) {
$riga->qta = post('qta'); $riga->qta = post('qta');
$riga->setPrezzoUnitario(post('prezzo'), $riga->idiva);
$riga->setSconto(post('sconto'), post('tipo_sconto')); $riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->costo_unitario = post('costo') ?: 0;
$riga->save(); $riga->save();
flash()->info(tr('Quantità aggiornata!')); flash()->info(tr('Riga aggiornata!'));
} }
break; break;

View File

@ -22,7 +22,7 @@ include_once __DIR__.'/init.php';
$block_edit = $record['is_completato']; $block_edit = $record['is_completato'];
$order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc']; $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc'];
$righe = $order_row_desc ? $contratto->getRighe()->sortByDesc('created_at') : $contratto->getRighe(); $righe = $order_row_desc ? $contratto->getRighe()->sortByDesc('created_at') : $contratto->getRighe();
$colspan = ($block_edit ? '5' : '6'); $colspan = '7';
echo ' echo '
<div class="table-responsive row-list"> <div class="table-responsive row-list">
@ -39,12 +39,10 @@ echo '
<th width="35" class="text-center">'.tr('#').'</th> <th width="35" class="text-center">'.tr('#').'</th>
<th>'.tr('Descrizione').'</th> <th>'.tr('Descrizione').'</th>
<th class="text-center tip" width="150">'.tr('Q.').'</th> <th class="text-center tip" width="150">'.tr('Q.').'</th>
<th class="text-center" width="140">'.tr('Prezzo unitario').'</th>'; <th class="text-center" width="150">'.tr('Costo unitario').'</th>
if (!$block_edit) { <th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
echo '<th class="text-center" width="150">'.tr('Sconto unitario').'</th>'; <th class="text-center" width="140">'.tr('Sconto unitario').'</th>
} <th class="text-center" width="130">'.tr('Importo').'</th>
echo '
<th class="text-center" width="140">'.tr('Importo').'</th>
<th width="80"></th> <th width="80"></th>
</tr> </tr>
</thead> </thead>
@ -104,11 +102,12 @@ foreach ($righe as $riga) {
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td>
<td></td>'; <td></td>';
} else { } else {
// Quantità e unità di misura // Quantità e unità di misura
echo ' echo '
<td class="text-center"> <td>
{[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->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.'" ]} {[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->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.'" ]}
<div class="progress" style="height:4px;">'; <div class="progress" style="height:4px;">';
// Visualizzazione evasione righe per documento // Visualizzazione evasione righe per documento
@ -129,45 +128,27 @@ foreach ($righe as $riga) {
</div> </div>
</td>'; </td>';
// Costi unitari
echo '
<td>
{[ "type": "number", "name": "costo_'.$riga->id.'", "value": "'.$riga->costo_unitario.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>';
// Prezzi unitari // Prezzi unitari
echo ' echo '
<td class="text-right">'; <td>
// Provvigione riga {[ "type": "number", "name": "prezzo_'.$riga->id.'", "value": "'.$riga->prezzo_unitario_corrente.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "'.(abs($riga->provvigione_unitaria) > 0 ? '<span class=\'tip text-info\' title=\''.provvigioneInfo($riga).'\'><small><i class=\'fa fa-handshake-o\'></i></small></span>' : '').'", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
if (abs($riga->provvigione_unitaria) > 0) {
$text = provvigioneInfo($riga);
echo '<span class="pull-left text-info" title="'.$text.'"><i class="fa fa-handshake-o"></i></span>';
}
echo moneyFormat($riga->prezzo_unitario_corrente);
if ($dir == 'entrata' && $riga->costo_unitario != 0) {
echo '
<br><small class="text-muted">
'.tr('Acquisto').': '.moneyFormat($riga->costo_unitario).'
</small>';
}
if (abs($riga->sconto_unitario) > 0) {
$text = discountInfo($riga);
echo '
<br><small class="label label-danger">'.$text.'</small>';
}
$tiposconto = '';
if ($riga['sconto'] == 0) {
$tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
}
echo '
</td>'; </td>';
// Sconto unitario // Sconto unitario
if (!$block_edit) { $tipo_sconto = '';
echo ' if ($riga['sconto'] == 0) {
<td class="text-center"> $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
{[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'" ]}
</td>';
} }
echo '
<td>
{[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'", "disabled": "'.$block_edit.'" ]}
</td>';
// Importo // Importo
echo ' echo '
@ -544,6 +525,8 @@ function aggiornaInline(id) {
var qta = input("qta_"+ id).get(); var qta = input("qta_"+ id).get();
var sconto = input("sconto_"+ id).get(); var sconto = input("sconto_"+ id).get();
var tipo_sconto = input("tipo_sconto_"+ id).get(); var tipo_sconto = input("tipo_sconto_"+ id).get();
var prezzo = input("prezzo_"+ id).get();
var costo = input("costo_"+ id).get();
$.ajax({ $.ajax({
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
@ -556,6 +539,8 @@ function aggiornaInline(id) {
qta: qta, qta: qta,
sconto: sconto, sconto: sconto,
tipo_sconto: tipo_sconto, tipo_sconto: tipo_sconto,
prezzo: prezzo,
costo: costo
}, },
success: function (response) { success: function (response) {
caricaRighe(id); caricaRighe(id);

View File

@ -652,10 +652,12 @@ switch (filter('op')) {
if (!empty($riga)) { if (!empty($riga)) {
$riga->qta = post('qta'); $riga->qta = post('qta');
$riga->setPrezzoUnitario(post('prezzo'), $riga->idiva);
$riga->setSconto(post('sconto'), post('tipo_sconto')); $riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->costo_unitario = post('costo') ?: 0;
$riga->save(); $riga->save();
flash()->info(tr('Quantità aggiornata!')); flash()->info(tr('Riga aggiornata!'));
} }
break; break;

View File

@ -22,8 +22,7 @@ include_once __DIR__.'/init.php';
$block_edit = $record['flag_completato']; $block_edit = $record['flag_completato'];
$order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc']; $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc'];
$righe = $order_row_desc ? $ddt->getRighe()->sortByDesc('created_at') : $ddt->getRighe(); $righe = $order_row_desc ? $ddt->getRighe()->sortByDesc('created_at') : $ddt->getRighe();
$colspan = ($block_edit ? '5' : '6'); $colspan = $dir == 'entrata' ? '7' : '6';
$direzione = $ddt->direzione;
echo ' echo '
<div class="table-responsive row-list"> <div class="table-responsive row-list">
@ -39,13 +38,14 @@ echo '
</th> </th>
<th width="35" class="text-center">'.tr('#').'</th> <th width="35" class="text-center">'.tr('#').'</th>
<th>'.tr('Descrizione').'</th> <th>'.tr('Descrizione').'</th>
<th class="text-center tip" width="150">'.tr('Q.').'</th> <th class="text-center tip" width="150">'.tr('Q.').'</th>';
<th class="text-center" width="140">'.tr('Prezzo unitario').'</th>'; if ($dir == 'entrata') {
if (!$block_edit) { echo '<th class="text-center" width="150">'.tr('Costo unitario').'</th>';
echo '<th class="text-center" width="150">'.tr('Sconto unitario').'</th>';
} }
echo ' echo '
<th class="text-center" width="140">'.tr('Importo').'</th> <th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
<th class="text-center" width="140">'.tr('Sconto unitario').'</th>
<th class="text-center" width="130">'.tr('Importo').'</th>
<th width="80"></th> <th width="80"></th>
</tr> </tr>
</thead> </thead>
@ -138,14 +138,18 @@ foreach ($righe as $riga) {
if ($riga->isDescrizione()) { if ($riga->isDescrizione()) {
echo ' echo '
<td></td> <td></td>';
if ($dir == 'entrata') {
echo '<td></td>';
}
echo '
<td></td> <td></td>
<td></td> <td></td>
<td></td>'; <td></td>';
} else { } else {
// Quantità e unità di misura // Quantità e unità di misura
echo ' echo '
<td class="text-center"> <td>
{[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->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.'" ]} {[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->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.'" ]}
<div class="progress" style="height:4px;">'; <div class="progress" style="height:4px;">';
// Visualizzazione evasione righe per documento // Visualizzazione evasione righe per documento
@ -166,45 +170,29 @@ foreach ($righe as $riga) {
</div> </div>
</td>'; </td>';
// Costi unitari
if ($dir == 'entrata') {
echo '
<td>
{[ "type": "number", "name": "costo_'.$riga->id.'", "value": "'.$riga->costo_unitario.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>';
}
// Prezzi unitari // Prezzi unitari
echo ' echo '
<td class="text-right">'; <td>
// Provvigione riga {[ "type": "number", "name": "prezzo_'.$riga->id.'", "value": "'.$riga->prezzo_unitario_corrente.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "'.(abs($riga->provvigione_unitaria) > 0 ? '<span class=\'tip text-info\' title=\''.provvigioneInfo($riga).'\'><small><i class=\'fa fa-handshake-o\'></i></small></span>' : '').'", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
if (abs($riga->provvigione_unitaria) > 0) {
$text = provvigioneInfo($riga);
echo '<span class="pull-left text-info" title="'.$text.'"><i class="fa fa-handshake-o"></i></span>';
}
echo moneyFormat($riga->prezzo_unitario_corrente);
if ($dir == 'entrata' && $riga->costo_unitario != 0) {
echo '
<br><small class="text-muted">
'.tr('Acquisto').': '.moneyFormat($riga->costo_unitario).'
</small>';
}
if (abs($riga->sconto_unitario) > 0) {
$text = discountInfo($riga);
echo '
<br><small class="label label-danger">'.$text.'</small>';
}
echo '
</td>'; </td>';
$tiposconto = ''; // Sconto unitario
$tipo_sconto = '';
if ($riga['sconto'] == 0) { if ($riga['sconto'] == 0) {
$tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT'); $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
} }
echo '
// Sconto unitario <td>
if (!$block_edit) { {[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'", "disabled": "'.$block_edit.'" ]}
echo '
<td class="text-center">
{[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'" ]}
</td>'; </td>';
}
// Importo // Importo
echo ' echo '
@ -608,6 +596,8 @@ function aggiornaInline(id) {
var qta = input("qta_"+ id).get(); var qta = input("qta_"+ id).get();
var sconto = input("sconto_"+ id).get(); var sconto = input("sconto_"+ id).get();
var tipo_sconto = input("tipo_sconto_"+ id).get(); var tipo_sconto = input("tipo_sconto_"+ id).get();
var prezzo = input("prezzo_"+ id).get();
var costo = input("costo_"+ id).get();
$.ajax({ $.ajax({
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
@ -620,6 +610,8 @@ function aggiornaInline(id) {
qta: qta, qta: qta,
sconto: sconto, sconto: sconto,
tipo_sconto: tipo_sconto, tipo_sconto: tipo_sconto,
prezzo: prezzo,
costo: costo
}, },
success: function (response) { success: function (response) {
caricaRighe(id); caricaRighe(id);

View File

@ -1164,6 +1164,23 @@ switch ($op) {
} }
break; break;
case 'update_inline':
$id_riga = post('riga_id');
$riga = $riga ?: Riga::find($id_riga);
$riga = $riga ?: Articolo::find($id_riga);
if (!empty($riga)) {
$riga->qta = post('qta');
$riga->setPrezzoUnitario(post('prezzo'), $riga->idiva);
$riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->costo_unitario = post('costo') ?: 0;
$riga->save();
flash()->info(tr('Riga aggiornata!'));
}
break;
} }
// Nota di debito // Nota di debito

View File

@ -21,13 +21,13 @@ use Modules\Interventi\Intervento;
include_once __DIR__.'/init.php'; include_once __DIR__.'/init.php';
$direzione = $fattura->direzione;
$block_edit = !empty($note_accredito) || in_array($record['stato'], ['Emessa', 'Pagato', 'Parzialmente pagato']) || !$abilita_genera; $block_edit = !empty($note_accredito) || in_array($record['stato'], ['Emessa', 'Pagato', 'Parzialmente pagato']) || !$abilita_genera;
$order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc']; $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc'];
$righe = $order_row_desc ? $fattura->getRighe()->sortByDesc('created_at') : $fattura->getRighe(); $righe = $order_row_desc ? $fattura->getRighe()->sortByDesc('created_at') : $fattura->getRighe();
$colspan = $dir == 'entrata' ? '8' : '7';
echo ' echo '
<div class="table-responsive"> <div class="table-responsive row-list">
<table class="table table-striped table-hover table-condensed table-bordered"> <table class="table table-striped table-hover table-condensed table-bordered">
<thead> <thead>
<tr> <tr>
@ -40,10 +40,15 @@ echo '
</th> </th>
<th width="35" class="text-center" >'.tr('#').'</th> <th width="35" class="text-center" >'.tr('#').'</th>
<th class="text-left">'.tr('Descrizione').'</th> <th class="text-left">'.tr('Descrizione').'</th>
<th class="text-center" width="120">'.tr('Q.').'</th> <th class="text-center" width="120">'.tr('Q.').'</th>';
<th class="text-center" width="140">'.tr('Prezzo unitario').'</th> if ($dir == 'entrata') {
<th class="text-center" width="140">'.tr('Iva unitaria').'</th> echo '<th class="text-center" width="150">'.tr('Costo unitario').'</th>';
<th class="text-center" width="140">'.tr('Importo').'</th> }
echo '
<th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
<th class="text-center" width="140">'.tr('Sconto unitario').'</th>
<th class="text-center" width="120">'.tr('Iva unitaria').'</th>
<th class="text-center" width="120">'.tr('Importo').'</th>
<th width="120"></th> <th width="120"></th>
</tr> </tr>
</thead> </thead>
@ -179,6 +184,11 @@ foreach ($righe as $riga) {
if ($riga->isDescrizione()) { if ($riga->isDescrizione()) {
echo ' echo '
<td></td>';
if ($dir == 'entrata') {
echo '<td></td>';
}
echo '
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
@ -186,35 +196,32 @@ foreach ($righe as $riga) {
} else { } else {
// Quantità e unità di misura // Quantità e unità di misura
echo ' echo '
<td class="text-center"> <td>
'.numberFormat($riga->qta, 'qta').' '.$riga->um.' {[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "disabled": "'.($riga->isSconto() ? 1 : 0).'", "disabled": "'.$block_edit.'" ]}
</td>'; </td>';
// Costi unitari
if ($dir == 'entrata') {
echo '
<td>
{[ "type": "number", "name": "costo_'.$riga->id.'", "value": "'.$riga->costo_unitario.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>';
}
// Prezzi unitari // Prezzi unitari
if (empty($riga->prezzo_unitario_corrente) && $dir == 'entrata') { echo '
$price_danger = 'text-danger'; <td>
} else { {[ "type": "number", "name": "prezzo_'.$riga->id.'", "value": "'.$riga->prezzo_unitario_corrente.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "'.(abs($riga->provvigione_unitaria) > 0 ? '<span class=\'tip text-info\' title=\''.provvigioneInfo($riga).'\'><small><i class=\'fa fa-handshake-o\'></i></small></span>' : '').'", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
$price_danger = ''; </td>';
// Sconto unitario
$tipo_sconto = '';
if ($riga['sconto'] == 0) {
$tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
} }
echo ' echo '
<td class="text-right"> <td>
<span class="'.$price_danger.'">'.moneyFormat($riga->prezzo_unitario_corrente).'</span>'; {[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'", "disabled": "'.$block_edit.'" ]}
if ($dir == 'entrata' && $riga->costo_unitario != 0) {
echo '
<br><small class="text-muted">
'.tr('Acquisto').': '.moneyFormat($riga->costo_unitario).'
</small>';
}
if (abs($riga->sconto_unitario) > 0) {
$text = discountInfo($riga);
echo '
<br><small class="label label-danger">'.$text.'</small>';
}
echo '
</td>'; </td>';
// Iva // Iva
@ -227,17 +234,8 @@ foreach ($righe as $riga) {
// Importo // Importo
echo ' echo '
<td class="text-right"> <td class="text-right">
'.moneyFormat($riga->importo); '.moneyFormat($riga->importo).'
</td>';
//provvigione riga
if (abs($riga->provvigione_unitaria) > 0) {
$text = provvigioneInfo($riga);
echo '
<br><small class="label label-info">'.$text.'</small>';
}
echo '</td>';
} }
// Possibilità di rimuovere una riga solo se la fattura non è pagata // Possibilità di rimuovere una riga solo se la fattura non è pagata
@ -312,7 +310,7 @@ $ritenuta_contributi = $fattura->totale_ritenuta_contributi;
// IMPONIBILE // IMPONIBILE
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Imponibile', [], ['upper' => true]).':</b> <b>'.tr('Imponibile', [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -325,7 +323,7 @@ echo '
if (!empty($sconto)) { if (!empty($sconto)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b><span class="tip" title="'.tr('Un importo negativo indica uno sconto, mentre uno positivo indica una maggiorazione').'"><i class="fa fa-question-circle-o"></i> '.tr('Sconto/maggiorazione', [], ['upper' => true]).':</span></b> <b><span class="tip" title="'.tr('Un importo negativo indica uno sconto, mentre uno positivo indica una maggiorazione').'"><i class="fa fa-question-circle-o"></i> '.tr('Sconto/maggiorazione', [], ['upper' => true]).':</span></b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -337,7 +335,7 @@ if (!empty($sconto)) {
// TOTALE IMPONIBILE // TOTALE IMPONIBILE
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Totale imponibile', [], ['upper' => true]).':</b> <b>'.tr('Totale imponibile', [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -351,7 +349,7 @@ if (!empty($sconto)) {
if (!empty($rivalsa_inps)) { if (!empty($rivalsa_inps)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right">'; <td colspan="'.$colspan.'" class="text-right">';
if ($dir == 'entrata') { if ($dir == 'entrata') {
$descrizione_rivalsa = $database->fetchOne('SELECT CONCAT_WS(\' - \', codice, descrizione) AS descrizione FROM fe_tipo_cassa WHERE codice = '.prepare(setting('Tipo Cassa Previdenziale'))); $descrizione_rivalsa = $database->fetchOne('SELECT CONCAT_WS(\' - \', codice, descrizione) AS descrizione FROM fe_tipo_cassa WHERE codice = '.prepare(setting('Tipo Cassa Previdenziale')));
@ -370,7 +368,7 @@ if (!empty($rivalsa_inps)) {
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Totale imponibile', [], ['upper' => true]).' :</b> <b>'.tr('Totale imponibile', [], ['upper' => true]).' :</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -384,7 +382,7 @@ if (!empty($rivalsa_inps)) {
if (!empty($iva)) { if (!empty($iva)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right">'; <td colspan="'.$colspan.'" class="text-right">';
if ($records[0]['split_payment']) { if ($records[0]['split_payment']) {
echo '<b>'.tr('Iva a carico del destinatario', [], ['upper' => true]).':</b>'; echo '<b>'.tr('Iva a carico del destinatario', [], ['upper' => true]).':</b>';
@ -403,7 +401,7 @@ if (!empty($iva)) {
// TOTALE // TOTALE
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Totale documento', [], ['upper' => true]).':</b> <b>'.tr('Totale documento', [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -416,7 +414,7 @@ echo '
if (!empty($ritenuta_acconto)) { if (!empty($ritenuta_acconto)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr("Ritenuta d'acconto", [], ['upper' => true]).':</b> <b>'.tr("Ritenuta d'acconto", [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -430,7 +428,7 @@ if (!empty($ritenuta_acconto)) {
if (!empty($ritenuta_contributi)) { if (!empty($ritenuta_contributi)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Ritenuta previdenziale', [], ['upper' => true]).':</b> <b>'.tr('Ritenuta previdenziale', [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -444,7 +442,7 @@ if (!empty($ritenuta_contributi)) {
if (!empty($sconto_finale)) { if (!empty($sconto_finale)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Sconto in fattura', [], ['upper' => true]).':</b> <b>'.tr('Sconto in fattura', [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -458,7 +456,7 @@ if (!empty($sconto_finale)) {
if ($totale != $netto_a_pagare) { if ($totale != $netto_a_pagare) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
<b>'.tr('Netto a pagare', [], ['upper' => true]).':</b> <b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
</td> </td>
<td class="text-right"> <td class="text-right">
@ -472,7 +470,7 @@ if ($totale != $netto_a_pagare) {
if (!empty($fattura->provvigione)) { if (!empty($fattura->provvigione)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
'.tr('Provvigioni').': '.tr('Provvigioni').':
</td> </td>
<td class="text-right"> <td class="text-right">
@ -483,7 +481,7 @@ if (!empty($fattura->provvigione)) {
echo ' echo '
<tr> <tr>
<td colspan="6" class="text-right"> <td colspan="'.$colspan.'" class="text-right">
'.tr('Netto da provvigioni').': '.tr('Netto da provvigioni').':
</td> </td>
<td class="text-right"> <td class="text-right">
@ -505,7 +503,7 @@ if (!$block_edit && sizeof($righe) > 0) {
<button type="button" class="btn btn-xs btn-default disabled" id="elimina_righe" onclick="rimuoviRiga(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="elimina_righe" onclick="rimuoviRiga(getSelectData());">
<i class="fa fa-trash"></i> <i class="fa fa-trash"></i>
</button>'; </button>';
if ($direzione == 'entrata') { if ($dir == 'entrata') {
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
'.tr('Confronta prezzi').' '.tr('Confronta prezzi').'
@ -712,4 +710,41 @@ $("#check_all").click(function(){
}); });
} }
}); });
$(".tipo_icon_after").on("change", function() {
aggiornaInline($(this).closest("tr").data("id"));
});
function aggiornaInline(id) {
content_was_modified = false;
var qta = input("qta_"+ id).get();
var sconto = input("sconto_"+ id).get();
var tipo_sconto = input("tipo_sconto_"+ id).get();
var prezzo = input("prezzo_"+ id).get();
var costo = input("costo_"+ id).get();
$.ajax({
url: globals.rootdir + "/actions.php",
type: "POST",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "update_inline",
riga_id: id,
qta: qta,
sconto: sconto,
tipo_sconto: tipo_sconto,
prezzo: prezzo,
costo: costo
},
success: function (response) {
caricaRighe(id);
renderMessages();
},
error: function() {
caricaRighe(null);
}
});
}
init();
</script>'; </script>';

View File

@ -1135,10 +1135,12 @@ switch (post('op')) {
if (!empty($riga)) { if (!empty($riga)) {
$riga->qta = post('qta'); $riga->qta = post('qta');
$riga->setPrezzoUnitario(post('prezzo'), $riga->idiva);
$riga->setSconto(post('sconto'), post('tipo_sconto')); $riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->costo_unitario = post('costo') ?: 0;
$riga->save(); $riga->save();
flash()->info(tr('Quantità aggiornata!')); flash()->info(tr('Riga aggiornata!'));
} }
break; break;

View File

@ -21,8 +21,7 @@ include_once __DIR__.'/init.php';
$block_edit = $record['flag_completato']; $block_edit = $record['flag_completato'];
$righe = $intervento->getRighe(); $righe = $intervento->getRighe();
$colspan = ($block_edit ? '5' : '6'); $colspan = '6';
$direzione = $intervento->direzione;
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico')); $show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
@ -43,13 +42,10 @@ echo '
if ($show_prezzi) { if ($show_prezzi) {
echo ' echo '
<th class="text-center" width="140">'.tr('Prezzo di acquisto').'</th> <th class="text-center" width="140">'.tr('Costo unitario').'</th>
<th class="text-center" width="140">'.tr('Prezzo di vendita').'</th>'; <th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
if (!$block_edit) { <th class="text-center" width="140">'.tr('Sconto unitario').'</th>
echo '<th class="text-center" width="150">'.tr('Sconto unitario').'</th>'; <th class="text-center" width="130">'.tr('Importo').'</th>';
}
echo '
<th class="text-center" width="140">'.tr('Importo').'</th>';
} }
if (!$record['flag_completato']) { if (!$record['flag_completato']) {
@ -126,49 +122,32 @@ echo '
// Quantità e unità di misura // Quantità e unità di misura
echo ' echo '
<td class="text-center"> <td>
{[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.($riga->um ?: '&nbsp;').'", "disabled": "'.($riga->isSconto() ? 1 : 0).'", "disabled": "'.$block_edit.'" ]} {[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.($riga->um ?: '&nbsp;').'", "disabled": "'.($riga->isSconto() ? 1 : 0).'", "disabled": "'.$block_edit.'" ]}
</td>'; </td>';
if ($show_prezzi) { if ($show_prezzi) {
// Costo unitario // Costo unitario
echo ' echo '
<td class="text-right"> <td>
'.moneyFormat($riga->costo_unitario).' {[ "type": "number", "name": "costo_'.$riga->id.'", "value": "'.$riga->costo_unitario.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>'; </td>';
// Prezzo unitario // Prezzo unitario
echo ' echo '
<td class="text-right">'; <td>
// Provvigione riga {[ "type": "number", "name": "prezzo_'.$riga->id.'", "value": "'.$riga->prezzo_unitario_corrente.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "'.(abs($riga->provvigione_unitaria) > 0 ? '<span class=\'tip text-info\' title=\''.provvigioneInfo($riga).'\'><small><i class=\'fa fa-handshake-o\'></i></small></span>' : '').'", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
if (abs($riga->provvigione_unitaria) > 0) {
$text = provvigioneInfo($riga);
echo '<span class="pull-left text-info" title="'.$text.'"><i class="fa fa-handshake-o"></i></span>';
}
echo moneyFormat($riga->prezzo_unitario);
if (abs($riga->sconto_unitario) > 0) {
$text = discountInfo($riga);
echo '
<br><small class="label label-danger">'.$text.'</small>';
}
echo '
</td>'; </td>';
$tiposconto = ''; // Sconto unitario
$tipo_sconto = '';
if ($riga['sconto'] == 0) { if ($riga['sconto'] == 0) {
$tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT'); $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
} }
echo '
// Sconto unitario <td>
if (!$block_edit) { {[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'", "disabled": "'.$block_edit.'" ]}
echo '
<td class="text-center">
{[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'" ]}
</td>'; </td>';
}
// Prezzo di vendita // Prezzo di vendita
echo ' echo '
@ -492,6 +471,8 @@ function aggiornaInline(id) {
var qta = input("qta_"+ id).get(); var qta = input("qta_"+ id).get();
var sconto = input("sconto_"+ id).get(); var sconto = input("sconto_"+ id).get();
var tipo_sconto = input("tipo_sconto_"+ id).get(); var tipo_sconto = input("tipo_sconto_"+ id).get();
var prezzo = input("prezzo_"+ id).get();
var costo = input("costo_"+ id).get();
$.ajax({ $.ajax({
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
@ -504,6 +485,8 @@ function aggiornaInline(id) {
qta: qta, qta: qta,
sconto: sconto, sconto: sconto,
tipo_sconto: tipo_sconto, tipo_sconto: tipo_sconto,
prezzo: prezzo,
costo: costo
}, },
success: function (response) { success: function (response) {
caricaRighe(id); caricaRighe(id);

View File

@ -707,10 +707,12 @@ switch (post('op')) {
if (!empty($riga)) { if (!empty($riga)) {
$riga->qta = post('qta'); $riga->qta = post('qta');
$riga->setPrezzoUnitario(post('prezzo'), $riga->idiva);
$riga->setSconto(post('sconto'), post('tipo_sconto')); $riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->costo_unitario = post('costo') ?: 0;
$riga->save(); $riga->save();
flash()->info(tr('Quantità aggiornata!')); flash()->info(tr('Riga aggiornata!'));
} }
break; break;

View File

@ -24,8 +24,8 @@ use Modules\Articoli\Articolo;
$block_edit = $record['flag_completato']; $block_edit = $record['flag_completato'];
$order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc']; $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc'];
$righe = $order_row_desc ? $ordine->getRighe()->sortByDesc('created_at') : $ordine->getRighe(); $righe = $order_row_desc ? $ordine->getRighe()->sortByDesc('created_at') : $ordine->getRighe();
$colspan = ($block_edit ? '6' : '7'); $dir = $ordine->direzione;
$direzione = $ordine->direzione; $colspan = $dir == 'entrata' ? '8' : '7';
echo ' echo '
<div class="table-responsive row-list"> <div class="table-responsive row-list">
@ -42,13 +42,14 @@ echo '
<th width="35" class="text-center" >'.tr('#').'</th> <th width="35" class="text-center" >'.tr('#').'</th>
<th>'.tr('Descrizione').'</th> <th>'.tr('Descrizione').'</th>
<th width="105">'.tr('Prev. evasione').'</th> <th width="105">'.tr('Prev. evasione').'</th>
<th class="text-center tip" width="190">'.tr('Q.').'</th> <th class="text-center tip" width="190">'.tr('Q.').'</th>';
<th class="text-center" width="140">'.tr('Prezzo unitario').'</th>'; if ($dir == 'entrata') {
if (!$block_edit) { echo '<th class="text-center" width="150">'.tr('Costo unitario').'</th>';
echo '<th class="text-center" width="150">'.tr('Sconto unitario').'</th>';
} }
echo ' echo '
<th class="text-center" width="140">'.tr('Importo').'</th> <th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
<th class="text-center" width="140">'.tr('Sconto unitario').'</th>
<th class="text-center" width="130">'.tr('Importo').'</th>
<th width="80"></th> <th width="80"></th>
</tr> </tr>
</thead> </thead>
@ -191,14 +192,18 @@ foreach ($righe as $riga) {
if ($riga->isDescrizione()) { if ($riga->isDescrizione()) {
echo ' echo '
<td></td> <td></td>';
if ($dir == 'entrata') {
echo '<td></td>';
}
echo '
<td></td> <td></td>
<td></td> <td></td>
<td></td>'; <td></td>';
} else { } else {
// Quantità e unità di misura // Quantità e unità di misura
echo ' echo '
<td class="text-center"> <td>
{[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "<span class=\'tip\' title=\''.($riga->confermato ? tr('Articolo confermato') : tr('Articolo non confermato')).'\'><i class=\''.($riga->confermato ? 'fa fa-check text-success' : 'fa fa-clock-o text-warning').'\'></i></span>", "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.'" ]} {[ "type": "number", "name": "qta_'.$riga->id.'", "value": "'.$riga->qta.'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "<span class=\'tip\' title=\''.($riga->confermato ? tr('Articolo confermato') : tr('Articolo non confermato')).'\'><i class=\''.($riga->confermato ? 'fa fa-check text-success' : 'fa fa-clock-o text-warning').'\'></i></span>", "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.'" ]}
<div class="progress" style="height:4px;">'; <div class="progress" style="height:4px;">';
// Visualizzazione evasione righe per documento // Visualizzazione evasione righe per documento
@ -219,38 +224,29 @@ foreach ($righe as $riga) {
</div> </div>
</td>'; </td>';
// Costi unitari
if ($dir == 'entrata') {
echo '
<td>
{[ "type": "number", "name": "costo_'.$riga->id.'", "value": "'.$riga->costo_unitario.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>';
}
// Prezzi unitari // Prezzi unitari
echo ' echo '
<td class="text-right">'; <td>
// Provvigione riga {[ "type": "number", "name": "prezzo_'.$riga->id.'", "value": "'.$riga->prezzo_unitario_corrente.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "'.(abs($riga->provvigione_unitaria) > 0 ? '<span class=\'tip text-info\' title=\''.provvigioneInfo($riga).'\'><small><i class=\'fa fa-handshake-o\'></i></small></span>' : '').'", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
if (abs($riga->provvigione_unitaria) > 0) {
$text = provvigioneInfo($riga);
echo '<span class="pull-left text-info" title="'.$text.'"><i class="fa fa-handshake-o"></i></span>';
}
echo moneyFormat($riga->prezzo_unitario_corrente);
if (abs($riga->sconto_unitario) > 0) {
$text = discountInfo($riga);
echo '
<br><small class="label label-danger">'.$text.'</small>';
}
echo '
</td>'; </td>';
$tiposconto = ''; // Sconto unitario
$tipo_sconto = '';
if ($riga['sconto'] == 0) { if ($riga['sconto'] == 0) {
$tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT'); $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
} }
echo '
// Sconto unitario <td>
if (!$block_edit) { {[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'", "disabled": "'.$block_edit.'" ]}
echo '
<td class="text-center">
{[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'" ]}
</td>'; </td>';
}
// Importo // Importo
echo ' echo '
@ -437,7 +433,7 @@ if (!$block_edit && sizeof($righe) > 0) {
<button type="button" class="btn btn-xs btn-default disabled" id="elimina_righe" onclick="rimuoviRiga(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="elimina_righe" onclick="rimuoviRiga(getSelectData());">
<i class="fa fa-trash"></i> <i class="fa fa-trash"></i>
</button>'; </button>';
if ($direzione == 'entrata') { if ($dir == 'entrata') {
echo ' echo '
<button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());"> <button type="button" class="btn btn-xs btn-default disabled" id="confronta_righe" onclick="confrontaRighe(getSelectData());">
'.tr('Confronta prezzi').' '.tr('Confronta prezzi').'
@ -655,6 +651,8 @@ function aggiornaInline(id) {
var qta = input("qta_"+ id).get(); var qta = input("qta_"+ id).get();
var sconto = input("sconto_"+ id).get(); var sconto = input("sconto_"+ id).get();
var tipo_sconto = input("tipo_sconto_"+ id).get(); var tipo_sconto = input("tipo_sconto_"+ id).get();
var prezzo = input("prezzo_"+ id).get();
var costo = input("costo_"+ id).get();
$.ajax({ $.ajax({
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
@ -667,6 +665,8 @@ function aggiornaInline(id) {
qta: qta, qta: qta,
sconto: sconto, sconto: sconto,
tipo_sconto: tipo_sconto, tipo_sconto: tipo_sconto,
prezzo: prezzo,
costo: costo
}, },
success: function (response) { success: function (response) {
caricaRighe(id); caricaRighe(id);

View File

@ -507,10 +507,12 @@ switch (post('op')) {
if (!empty($riga)) { if (!empty($riga)) {
$riga->qta = post('qta'); $riga->qta = post('qta');
$riga->setPrezzoUnitario(post('prezzo'), $riga->idiva);
$riga->setSconto(post('sconto'), post('tipo_sconto')); $riga->setSconto(post('sconto'), post('tipo_sconto'));
$riga->costo_unitario = post('costo') ?: 0;
$riga->save(); $riga->save();
flash()->info(tr('Quantità aggiornata!')); flash()->info(tr('Riga aggiornata!'));
} }
break; break;

View File

@ -22,7 +22,7 @@ include_once __DIR__.'/init.php';
$block_edit = $record['is_completato']; $block_edit = $record['is_completato'];
$order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc']; $order_row_desc = $_SESSION['module_'.$id_module]['order_row_desc'];
$righe = $order_row_desc ? $preventivo->getRighe()->sortByDesc('created_at') : $preventivo->getRighe(); $righe = $order_row_desc ? $preventivo->getRighe()->sortByDesc('created_at') : $preventivo->getRighe();
$colspan = ($block_edit ? '6' : '7'); $colspan = '8';
echo ' echo '
<div class="table-responsive row-list"> <div class="table-responsive row-list">
@ -39,13 +39,11 @@ echo '
<th width="35" class="text-center" >'.tr('#').'</th> <th width="35" class="text-center" >'.tr('#').'</th>
<th>'.tr('Descrizione').'</th> <th>'.tr('Descrizione').'</th>
<th width="105">'.tr('Prev. evasione').'</th> <th width="105">'.tr('Prev. evasione').'</th>
<th class="text-center tip" width="190">'.tr('Q.').'</th> <th class="text-center tip" width="160">'.tr('Q.').'</th>
<th class="text-center" width="140">'.tr('Prezzo unitario').'</th>'; <th class="text-center" width="150">'.tr('Costo unitario').'</th>
if (!$block_edit) { <th class="text-center" width="180">'.tr('Prezzo unitario').'</th>
echo '<th class="text-center" width="150">'.tr('Sconto unitario').'</th>'; <th class="text-center" width="140">'.tr('Sconto unitario').'</th>
} <th class="text-center" width="130">'.tr('Importo').'</th>
echo '
<th class="text-center" width="140">'.tr('Importo').'</th>
<th width="80"></th> <th width="80"></th>
</tr> </tr>
</thead> </thead>
@ -68,7 +66,7 @@ foreach ($righe as $key => $riga) {
$iva_gruppo = 0; $iva_gruppo = 0;
$has_gruppo = true; $has_gruppo = true;
$style_titolo = 'style="background-color:'.$color_gruppo.'"'; $style_titolo = 'style="background-color:'.$color_gruppo.'"';
$colspan_titolo = 'colspan="6"'; $colspan_titolo = 'colspan="7"';
} }
$subtotale_gruppo += $riga->totale_imponibile; $subtotale_gruppo += $riga->totale_imponibile;
$iva_gruppo += $riga->iva; $iva_gruppo += $riga->iva;
@ -155,6 +153,7 @@ foreach ($righe as $key => $riga) {
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td>
<td></td>'; <td></td>';
} else { } else {
// Info evasione // Info evasione
@ -186,38 +185,27 @@ foreach ($righe as $key => $riga) {
</div> </div>
</td>'; </td>';
// Prezzi unitari // Costi unitari
echo '
<td class="text-right">';
// Provvigione riga
if (abs($riga->provvigione_unitaria) > 0) {
$text = provvigioneInfo($riga);
echo '<span class="pull-left text-info" title="'.$text.'"><i class="fa fa-handshake-o"></i></span>';
}
echo moneyFormat($riga->prezzo_unitario_corrente);
if (abs($riga->sconto_unitario) > 0) {
$text = discountInfo($riga);
echo '
<br><small class="label label-danger">'.$text.'</small>';
}
echo ' echo '
<td>
{[ "type": "number", "name": "costo_'.$riga->id.'", "value": "'.$riga->costo_unitario.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>'; </td>';
$tiposconto = ''; // Prezzi unitari
echo '
<td class="text-right">
{[ "type": "number", "name": "prezzo_'.$riga->id.'", "value": "'.$riga->prezzo_unitario_corrente.'", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-before": "'.(abs($riga->provvigione_unitaria) > 0 ? '<span class=\'tip text-info\' title=\''.provvigioneInfo($riga).'\'><small><i class=\'fa fa-handshake-o\'></i></small></span>' : '').'", "icon-after": "'.currency().'", "disabled": "'.$block_edit.'" ]}
</td>';
// Sconto unitario
$tipo_sconto = '';
if ($riga['sconto'] == 0) { if ($riga['sconto'] == 0) {
$tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT'); $tipo_sconto = (setting('Tipo di sconto predefinito') == '%' ? 'PRC' : 'UNT');
} }
echo '
// Sconto unitario
if (!$block_edit) {
echo '
<td class="text-center"> <td class="text-center">
{[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'" ]} {[ "type": "number", "name": "sconto_'.$riga->id.'", "value": "'.($riga->sconto_percentuale ?: $riga->sconto_unitario_corrente).'", "min-value": "0", "onchange": "aggiornaInline($(this).closest(\'tr\').data(\'id\'))", "icon-after": "choice|untprc|'.($tipo_sconto ?: $riga->tipo_sconto).'", "disabled": "'.$block_edit.'" ]}
</td>'; </td>';
}
// Importo // Importo
echo ' echo '
@ -656,6 +644,8 @@ function aggiornaInline(id) {
var qta = input("qta_"+ id).get(); var qta = input("qta_"+ id).get();
var sconto = input("sconto_"+ id).get(); var sconto = input("sconto_"+ id).get();
var tipo_sconto = input("tipo_sconto_"+ id).get(); var tipo_sconto = input("tipo_sconto_"+ id).get();
var prezzo = input("prezzo_"+ id).get();
var costo = input("costo_"+ id).get();
$.ajax({ $.ajax({
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
@ -668,6 +658,8 @@ function aggiornaInline(id) {
qta: qta, qta: qta,
sconto: sconto, sconto: sconto,
tipo_sconto: tipo_sconto, tipo_sconto: tipo_sconto,
prezzo: prezzo,
costo: costo
}, },
success: function (response) { success: function (response) {
caricaRighe(id); caricaRighe(id);

View File

@ -286,9 +286,14 @@ class HTMLWrapper implements WrapperInterface
]; ];
} }
$disabled = '';
if (in_array('disabled', $extras)) {
$disabled = '1';
}
$value = (empty($pieces[2]) || !in_array($pieces[2], array_column($choices, 'id'))) ? $choices[0]['id'] : $pieces[2]; $value = (empty($pieces[2]) || !in_array($pieces[2], array_column($choices, 'id'))) ? $choices[0]['id'] : $pieces[2];
$result = '{[ "type": "select", "name": "tipo_'.prepareToField($values['name']).'", "id": "tipo_'.prepareToField($values['name']).'_'.rand(0, 99).'", "value": "'.prepareToField($value).'", "values": '.json_encode($choices).', "class": "no-search tipo_icon_after", "extra": "'.$extra.'" ]}'; $result = '{[ "type": "select", "name": "tipo_'.prepareToField($values['name']).'", "id": "tipo_'.prepareToField($values['name']).'_'.rand(0, 99).'", "value": "'.prepareToField($value).'", "values": '.json_encode($choices).', "class": "no-search tipo_icon_after", "extra": "'.$extra.'", "disabled": "'.$disabled.'" ]}';
$result = \HTMLBuilder\HTMLBuilder::replace($result); $result = \HTMLBuilder\HTMLBuilder::replace($result);