1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-16 11:30: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);
// Destinatari
$receivers = post('destinatari');
$receivers = array_filter($receivers, function ($value) {
return !empty($value);
});
$receivers = array_clean(post('destinatari'));
$types = post('tipo_destinatari');
foreach ($receivers as $key => $receiver) {
$mail->addReceiver($receiver, $types[$key]);
@ -172,9 +169,7 @@ if ($structure->permission == 'rw') {
// Esecuzione delle operazioni di gruppo
$id_records = post('id_records');
$id_records = is_array($id_records) ? $id_records : explode(';', $id_records);
$id_records = array_filter($id_records, function ($var) {
return !empty($var);
});
$id_records = array_clean($id_records);
$id_records = array_unique($id_records);
$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').');
$("#descrizione_riga").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita);
$("#idiva").selectSetNew($data.idiva_vendita, $data.iva_vendita);
if(id_conto) {
$("#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')) {
/**
* Check if a string starts with the given string.

View File

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

View File

@ -267,7 +267,7 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine
$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]);

View File

@ -740,9 +740,7 @@ switch (post('op')) {
// Aggiornamento seriali dalla riga dell'ordine
$serials = is_array(post('serial')[$i]) ? post('serial')[$i] : [];
$serials = array_filter($serials, function ($value) {
return !empty($value);
});
$serials = array_clean($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
$serials = is_array(post('serial')[$i]) ? post('serial')[$i] : [];
$serials = array_filter($serials, function ($value) {
return !empty($value);
});
$serials = array_clean($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
$serials = is_array(post('serial')[$i]) ? post('serial')[$i] : [];
$serials = array_filter($serials, function ($value) {
return !empty($value);
});
$serials = array_clean($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]);

View File

@ -824,7 +824,7 @@ function rimuovi_riga_fattura($id_documento, $id_riga, $dir)
if (!empty($riga['idarticolo'])) {
$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]);
}

View File

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

View File

@ -29,6 +29,7 @@ if (empty($idriga)) {
$qta = 1;
$um = '';
$prezzo_acquisto = '0';
$prezzo_vendita = '0';
$sconto_unitario = 0;
@ -55,6 +56,7 @@ if (empty($idriga)) {
$idiva = $rsr[0]['idiva'];
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
$prezzo_acquisto = $rsr[0]['prezzo_acquisto'];
$sconto_unitario = $rsr[0]['sconto_unitario'];
$tipo_sconto = $rsr[0]['tipo_sconto'];
@ -92,8 +94,15 @@ echo '
<div class="col-md-12">
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione", "id": "descrizione_articolo", "required": 1, "value": '.json_encode($descrizione).' ]}
</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>
<br>';
</div>';
// Quantità
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" ]}
</div>';
// Impianto
// Iva
echo '
<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>';
// Iva
// Prezzo di acquisto
echo '
<div class="row">
<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>';
// Prezzo di vendita
echo '
<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>';
// Sconto
@ -173,8 +182,9 @@ echo '
$data = $(this).selectData();
$("#prezzo_vendita").val($data.prezzo_vendita);
$("#prezzo_acquisto").val($data.prezzo_acquisto);
$("#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);
}else{
$("#prezzi_articolo button").addClass("disabled");

View File

@ -4,6 +4,8 @@ include_once __DIR__.'/../../core.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');
$rs = $dbo->fetchArray($query);
@ -14,12 +16,12 @@ if (!empty($rs)) {
<th>'.tr('Articolo').'</th>
<th width="8%">'.tr('Q.').'</th>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
echo '
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
}
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
@ -28,7 +30,7 @@ if (!empty($rs)) {
if (!$record['flag_completato']) {
echo '
<th width="80"></th>';
<th width="120" class="text-center">'.tr('#').'</th>';
}
echo '
</tr>';
@ -78,14 +80,14 @@ if (!empty($rs)) {
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
</td>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
echo '
<td class="text-right">
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>';
}
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
// Prezzo unitario
echo '
<td class="text-right">
@ -121,7 +123,7 @@ if (!empty($rs)) {
// Visibile solo se l'intervento non è stato nè fatturato nè completato.
if (!$record['flag_completato']) {
echo '
<td>';
<td class="text-center">';
if ($r['abilita_serial']) {
echo '

View File

@ -8,11 +8,13 @@ if (file_exists(__DIR__.'/../../../core.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');
$rs_iva = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva));
($rs_iva[0]['percentuale'] > 0) ? $hide = '' : $hide = 'hide';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
$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));

View File

@ -6,6 +6,8 @@ if (file_exists(__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';
$rs2 = $dbo->fetchArray($query);
@ -17,7 +19,7 @@ if (count($rs2) > 0) {
<th width="8%">'.tr('Q.').'</th>
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
@ -26,7 +28,7 @@ if (count($rs2) > 0) {
if (!$record['flag_completato']) {
echo '
<th width="80"></th>';
<th width="120" class="text-center">'.tr('#').'</th>';
}
echo '
</tr>';
@ -51,7 +53,7 @@ if (count($rs2) > 0) {
'.Translator::numberToLocale($r['prezzo_acquisto']).' &euro;
</td>';
if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') {
if ($show_prezzi) {
// Prezzo 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.
if (!$record['flag_completato']) {
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-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>';

View File

@ -154,7 +154,7 @@ echo '
$("#prezzo_vendita").val($data.prezzo_vendita);
$("#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);
}else{
$("#prezzi_articolo button").addClass("disabled");

View File

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