1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-21 05:50:55 +01:00

Miglioramento articoli in Interventi

This commit is contained in:
Thomas Zilio 2018-09-28 16:43:40 +02:00
parent 3f5a9ccec3
commit 7ceabfa2a7
14 changed files with 65 additions and 39 deletions

View File

@ -77,10 +77,7 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
$mail->setTemplate($id_template, $id_record); $mail->setTemplate($id_template, $id_record);
// Destinatari // Destinatari
$receivers = post('destinatari'); $receivers = array_clean(post('destinatari'));
$receivers = array_filter($receivers, function ($value) {
return !empty($value);
});
$types = post('tipo_destinatari'); $types = post('tipo_destinatari');
foreach ($receivers as $key => $receiver) { foreach ($receivers as $key => $receiver) {
$mail->addReceiver($receiver, $types[$key]); $mail->addReceiver($receiver, $types[$key]);
@ -172,9 +169,7 @@ if ($structure->permission == 'rw') {
// Esecuzione delle operazioni di gruppo // Esecuzione delle operazioni di gruppo
$id_records = post('id_records'); $id_records = post('id_records');
$id_records = is_array($id_records) ? $id_records : explode(';', $id_records); $id_records = is_array($id_records) ? $id_records : explode(';', $id_records);
$id_records = array_filter($id_records, function ($var) { $id_records = array_clean($id_records);
return !empty($var);
});
$id_records = array_unique($id_records); $id_records = array_unique($id_records);
$bulk = $structure->filepath('bulk.php'); $bulk = $structure->filepath('bulk.php');

View File

@ -64,7 +64,7 @@ if (!isset($options['edit_articolo']) || !empty($options['edit_articolo'])) {
$("#prezzo").val($data.prezzo_'.($options['dir'] == 'entrata' ? 'vendita' : 'acquisto').'); $("#prezzo").val($data.prezzo_'.($options['dir'] == 'entrata' ? 'vendita' : 'acquisto').');
$("#descrizione_riga").val($data.descrizione); $("#descrizione_riga").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita); $("#idiva").selectSetNew($data.idiva_vendita, $data.iva_vendita);
if(id_conto) { if(id_conto) {
$("#idconto").selectSetNew(id_conto, $data.idconto_'.($options['dir'] == 'entrata' ? 'vendita' : 'acquisto').'_title); $("#idconto").selectSetNew(id_conto, $data.idconto_'.($options['dir'] == 'entrata' ? 'vendita' : 'acquisto').'_title);
} }

View File

@ -27,6 +27,25 @@ if (!function_exists('array_column')) {
} }
} }
if (!function_exists('array_clean')) {
/**
* Pulisce i contenuti vuoti di un array.
*
* @param $array
*
* @since 2.3.2
*
* @return array
*/
function array_clean($array)
{
return array_filter($array, function ($value) {
return !empty($value);
});
}
}
if (!function_exists('starts_with')) { if (!function_exists('starts_with')) {
/** /**
* Check if a string starts with the given string. * Check if a string starts with the given string.

View File

@ -62,6 +62,7 @@ switch ($resource) {
$results[count($results) - 1]['children'][] = [ $results[count($results) - 1]['children'][] = [
'id' => $r['id'], 'id' => $r['id'],
'text' => $r['codice'].' - '.$r['descrizione'], 'text' => $r['codice'].' - '.$r['descrizione'],
'codice' => $r['codice'],
'descrizione' => $r['descrizione'], 'descrizione' => $r['descrizione'],
'um' => $r['um'], 'um' => $r['um'],
'idiva_vendita' => $idiva, 'idiva_vendita' => $idiva,

View File

@ -267,7 +267,7 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine // Aggiornamento seriali dalla riga dell'ordine
$serials = is_array(post('serial')[$idriga]) ? post('serial')[$idriga] : []; $serials = is_array(post('serial')[$idriga]) ? post('serial')[$idriga] : [];
$serials = array_filter($serials, function ($value) { return !empty($value); }); $serials = array_clean($serials);
$dbo->sync('mg_prodotti', ['id_riga_ddt' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); $dbo->sync('mg_prodotti', ['id_riga_ddt' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]);

View File

@ -740,9 +740,7 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine // Aggiornamento seriali dalla riga dell'ordine
$serials = is_array(post('serial')[$i]) ? post('serial')[$i] : []; $serials = is_array(post('serial')[$i]) ? post('serial')[$i] : [];
$serials = array_filter($serials, function ($value) { $serials = array_clean($serials);
return !empty($value);
});
$dbo->sync('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); $dbo->sync('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]);
} }
@ -823,9 +821,7 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine // Aggiornamento seriali dalla riga dell'ordine
$serials = is_array(post('serial')[$i]) ? post('serial')[$i] : []; $serials = is_array(post('serial')[$i]) ? post('serial')[$i] : [];
$serials = array_filter($serials, function ($value) { $serials = array_clean($serials);
return !empty($value);
});
$dbo->sync('mg_prodotti', ['id_riga_documento' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]); $dbo->sync('mg_prodotti', ['id_riga_documento' => $riga, 'dir' => $dir, 'id_articolo' => $idarticolo], ['serial' => $serials]);
@ -1310,9 +1306,7 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine // Aggiornamento seriali dalla riga dell'ordine
$serials = is_array(post('serial')[$i]) ? post('serial')[$i] : []; $serials = is_array(post('serial')[$i]) ? post('serial')[$i] : [];
$serials = array_filter($serials, function ($value) { $serials = array_clean($serials);
return !empty($value);
});
$dbo->sync('mg_prodotti', ['id_riga_documento' => $riga, 'dir' => 'uscita', 'id_articolo' => $idarticolo], ['serial' => $serials]); $dbo->sync('mg_prodotti', ['id_riga_documento' => $riga, 'dir' => 'uscita', 'id_articolo' => $idarticolo], ['serial' => $serials]);
$dbo->detach('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]); $dbo->detach('mg_prodotti', ['id_riga_documento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]);

View File

@ -824,7 +824,7 @@ function rimuovi_riga_fattura($id_documento, $id_riga, $dir)
if (!empty($riga['idarticolo'])) { if (!empty($riga['idarticolo'])) {
$serials = array_column($serials, 'serial'); $serials = array_column($serials, 'serial');
$serials = array_filter($serials, function ($value) { return !empty($value); }); $serials = array_clean($serials);
$dbo->attach('mg_prodotti', ['id_riga_documento' => $riga['ref_riga_documento'], 'dir' => $dir, 'id_articolo' => $riga['idarticolo']], ['serial' => $serials]); $dbo->attach('mg_prodotti', ['id_riga_documento' => $riga['ref_riga_documento'], 'dir' => $dir, 'id_articolo' => $riga['idarticolo']], ['serial' => $serials]);
} }

View File

@ -527,6 +527,7 @@ switch (post('op')) {
$articolo->qta = post('qta'); $articolo->qta = post('qta');
$articolo->descrizione = post('descrizione'); $articolo->descrizione = post('descrizione');
$articolo->prezzo_vendita = post('prezzo_vendita'); $articolo->prezzo_vendita = post('prezzo_vendita');
$articolo->prezzo_acquisto = post('prezzo_acquisto');
$articolo->um = post('um'); $articolo->um = post('um');
$articolo->sconto_unitario = post('sconto'); $articolo->sconto_unitario = post('sconto');

View File

@ -29,6 +29,7 @@ if (empty($idriga)) {
$qta = 1; $qta = 1;
$um = ''; $um = '';
$prezzo_acquisto = '0';
$prezzo_vendita = '0'; $prezzo_vendita = '0';
$sconto_unitario = 0; $sconto_unitario = 0;
@ -55,6 +56,7 @@ if (empty($idriga)) {
$idiva = $rsr[0]['idiva']; $idiva = $rsr[0]['idiva'];
$prezzo_vendita = $rsr[0]['prezzo_vendita']; $prezzo_vendita = $rsr[0]['prezzo_vendita'];
$prezzo_acquisto = $rsr[0]['prezzo_acquisto'];
$sconto_unitario = $rsr[0]['sconto_unitario']; $sconto_unitario = $rsr[0]['sconto_unitario'];
$tipo_sconto = $rsr[0]['tipo_sconto']; $tipo_sconto = $rsr[0]['tipo_sconto'];
@ -92,8 +94,15 @@ echo '
<div class="col-md-12"> <div class="col-md-12">
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione", "id": "descrizione_articolo", "required": 1, "value": '.json_encode($descrizione).' ]} {[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione", "id": "descrizione_articolo", "required": 1, "value": '.json_encode($descrizione).' ]}
</div> </div>
</div>';
// Impianto
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "idimpianto", "value": "'.$idimpianto.'", "ajax-source": "impianti-intervento" ]}
</div> </div>
<br>'; </div>';
// Quantità // Quantità
echo ' echo '
@ -108,24 +117,24 @@ echo '
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::get('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]} {[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::get('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
</div>'; </div>';
// Impianto // Iva
echo ' echo '
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "idimpianto", "value": "'.$idimpianto.'", "ajax-source": "impianti-intervento" ]} {[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "ajax-source": "iva" ]}
</div> </div>
</div>'; </div>';
// Iva // Prezzo di acquisto
echo ' echo '
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "ajax-source": "iva" ]} {[ "type": "number", "label": "'.tr('Prezzo di acquisto (un.)').'", "name": "prezzo_acquisto", "required": 1, "value": "'.$prezzo_acquisto.'", "icon-after": "&euro;" ]}
</div>'; </div>';
// Prezzo di vendita // Prezzo di vendita
echo ' echo '
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "&euro;" ]} {[ "type": "number", "label": "'.tr('Prezzo di vendita (un.)').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "&euro;" ]}
</div>'; </div>';
// Sconto // Sconto
@ -173,8 +182,9 @@ echo '
$data = $(this).selectData(); $data = $(this).selectData();
$("#prezzo_vendita").val($data.prezzo_vendita); $("#prezzo_vendita").val($data.prezzo_vendita);
$("#prezzo_acquisto").val($data.prezzo_acquisto);
$("#descrizione_articolo").val($data.descrizione); $("#descrizione_articolo").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita); $("#idiva").selectSetNew($data.idiva_vendita, $data.iva_vendita);
$("#um").selectSetNew($data.um, $data.um); $("#um").selectSetNew($data.um, $data.um);
}else{ }else{
$("#prezzi_articolo button").addClass("disabled"); $("#prezzi_articolo button").addClass("disabled");

View File

@ -4,6 +4,8 @@ include_once __DIR__.'/../../core.php';
include_once Modules::filepath('Articoli', 'modutil.php'); include_once Modules::filepath('Articoli', 'modutil.php');
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
$query = 'SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice, mg_articoli_interventi.id AS idriga, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino'); $query = 'SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice, mg_articoli_interventi.id AS idriga, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino');
$rs = $dbo->fetchArray($query); $rs = $dbo->fetchArray($query);
@ -14,12 +16,12 @@ if (!empty($rs)) {
<th>'.tr('Articolo').'</th> <th>'.tr('Articolo').'</th>
<th width="8%">'.tr('Q.').'</th>'; <th width="8%">'.tr('Q.').'</th>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
echo ' echo '
<th width="15%">'.tr('Prezzo di acquisto').'</th>'; <th width="15%">'.tr('Prezzo di acquisto').'</th>';
} }
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
echo ' echo '
<th width="15%">'.tr('Prezzo di vendita').'</th> <th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th> <th width="10%">'.tr('Iva').'</th>
@ -28,7 +30,7 @@ if (!empty($rs)) {
if (!$record['flag_completato']) { if (!$record['flag_completato']) {
echo ' echo '
<th width="80"></th>'; <th width="120" class="text-center">'.tr('#').'</th>';
} }
echo ' echo '
</tr>'; </tr>';
@ -78,14 +80,14 @@ if (!empty($rs)) {
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].' '.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
</td>'; </td>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
echo ' echo '
<td class="text-right"> <td class="text-right">
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro; '.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>'; </td>';
} }
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
// Prezzo unitario // Prezzo unitario
echo ' echo '
<td class="text-right"> <td class="text-right">
@ -121,7 +123,7 @@ if (!empty($rs)) {
// Visibile solo se l'intervento non è stato nè fatturato nè completato. // Visibile solo se l'intervento non è stato nè fatturato nè completato.
if (!$record['flag_completato']) { if (!$record['flag_completato']) {
echo ' echo '
<td>'; <td class="text-center">';
if ($r['abilita_serial']) { if ($r['abilita_serial']) {
echo ' echo '

View File

@ -8,11 +8,13 @@ if (file_exists(__DIR__.'/../../../core.php')) {
include_once Modules::filepath('Interventi', 'modutil.php'); include_once Modules::filepath('Interventi', 'modutil.php');
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
$idiva = setting('Iva predefinita'); $idiva = setting('Iva predefinita');
$rs_iva = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva)); $rs_iva = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva));
($rs_iva[0]['percentuale'] > 0) ? $hide = '' : $hide = 'hide'; ($rs_iva[0]['percentuale'] > 0) ? $hide = '' : $hide = 'hide';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
$costi = get_costi_intervento($id_record); $costi = get_costi_intervento($id_record);
$rss = $dbo->fetchArray('SELECT in_statiintervento.completato AS flag_completato FROM in_statiintervento INNER JOIN in_interventi ON in_statiintervento.idstatointervento=in_interventi.idstatointervento WHERE in_interventi.id='.prepare($id_record)); $rss = $dbo->fetchArray('SELECT in_statiintervento.completato AS flag_completato FROM in_statiintervento INNER JOIN in_interventi ON in_statiintervento.idstatointervento=in_interventi.idstatointervento WHERE in_interventi.id='.prepare($id_record));

View File

@ -6,6 +6,8 @@ if (file_exists(__DIR__.'/../../../core.php')) {
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
} }
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
$query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC'; $query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC';
$rs2 = $dbo->fetchArray($query); $rs2 = $dbo->fetchArray($query);
@ -17,7 +19,7 @@ if (count($rs2) > 0) {
<th width="8%">'.tr('Q.').'</th> <th width="8%">'.tr('Q.').'</th>
<th width="15%">'.tr('Prezzo di acquisto').'</th>'; <th width="15%">'.tr('Prezzo di acquisto').'</th>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
echo ' echo '
<th width="15%">'.tr('Prezzo di vendita').'</th> <th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th> <th width="10%">'.tr('Iva').'</th>
@ -26,7 +28,7 @@ if (count($rs2) > 0) {
if (!$record['flag_completato']) { if (!$record['flag_completato']) {
echo ' echo '
<th width="80"></th>'; <th width="120" class="text-center">'.tr('#').'</th>';
} }
echo ' echo '
</tr>'; </tr>';
@ -51,7 +53,7 @@ if (count($rs2) > 0) {
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro; '.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>'; </td>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { if ($show_prezzi) {
// Prezzo unitario // Prezzo unitario
$netto = $r['prezzo_vendita'] - $r['sconto_unitario']; $netto = $r['prezzo_vendita'] - $r['sconto_unitario'];
@ -89,7 +91,7 @@ if (count($rs2) > 0) {
// Visibile solo se l'intervento non è stato nè fatturato nè completato. // Visibile solo se l'intervento non è stato nè fatturato nè completato.
if (!$record['flag_completato']) { if (!$record['flag_completato']) {
echo ' echo '
<td> <td class="text-center">
<button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica spesa').'\', \''.$rootdir.'/modules/interventi/add_righe.php?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['id'].'\', 1);"><i class="fa fa-edit"></i></button> <button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica spesa').'\', \''.$rootdir.'/modules/interventi/add_righe.php?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['id'].'\', 1);"><i class="fa fa-edit"></i></button>
<button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" onclick="if(confirm(\''.tr('Eliminare questa spesa?').'\')){ elimina_riga( \''.$r['id'].'\' ); }"><i class="fa fa-trash"></i></button> <button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" onclick="if(confirm(\''.tr('Eliminare questa spesa?').'\')){ elimina_riga( \''.$r['id'].'\' ); }"><i class="fa fa-trash"></i></button>
</td>'; </td>';

View File

@ -154,7 +154,7 @@ echo '
$("#prezzo_vendita").val($data.prezzo_vendita); $("#prezzo_vendita").val($data.prezzo_vendita);
$("#descrizione_articolo").val($data.descrizione); $("#descrizione_articolo").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita); $("#idiva").selectSetNew($data.idiva_vendita, $data.iva_vendita);
$("#um").selectSetNew($data.um, $data.um); $("#um").selectSetNew($data.um, $data.um);
}else{ }else{
$("#prezzi_articolo button").addClass("disabled"); $("#prezzi_articolo button").addClass("disabled");

View File

@ -45,7 +45,7 @@ abstract class Article extends Row
'dir' => 'entrata', 'dir' => 'entrata',
'id_articolo' => $this->idarticolo, 'id_articolo' => $this->idarticolo,
], [ ], [
'serial' => $serials, 'serial' => array_clean($serials),
]); ]);
} }