Migliorie movimenti articoli #236

This commit is contained in:
Bacca97 2018-05-11 15:11:01 +02:00
parent 797a42e6d2
commit 0cb957aaf9
6 changed files with 80 additions and 8 deletions

View File

@ -56,8 +56,14 @@ switch (post('op')) {
$movimento = $qta - $old_qta;
if ($movimento != 0) {
$descrizione_movimento = post('descrizione_movimento');
$data_movimento = post('data_movimento');
if($descrizione_movimento!='' && $data_movimento!=''){
add_movimento_magazzino($id_record, $movimento, [], $descrizione_movimento, $data_movimento);
}else{
add_movimento_magazzino($id_record, $movimento);
}
}
/*
Salvataggio info componente (campo `contenuto`)

View File

@ -41,10 +41,10 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
<div class="row">
<div class="col-md-3">
{[ "type": "number", "label": "<?php echo tr('Quantità'); ?>", "name": "qta", "required": 1, "value": "$qta$", "readonly": 1, "decimals": "qta", "min-value": "undefined" ]}
<input type="hidden" id="old_qta" value="<?=$records[0]['qta']?>">
</div>
<div class="col-md-3">
{[ "type": "checkbox", "label": "<?php echo tr('Modifica quantità manualmente'); ?>", "name": "qta_manuale", "value": 0, "help": "<?php echo tr('Seleziona per modificare manualmente la quantità'); ?>", "placeholder": "<?php echo tr('Quantità manuale'); ?>", "extra": "<?php echo ($records[0]['servizio']) ? 'disabled' : ''; ?>" ]}
<script type="text/javascript">
$(document).ready(function() {
@ -56,6 +56,17 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
$('#qta_manuale').click(function(){
$("#qta").attr("readonly", !$('#qta_manuale').is(":checked"));
if($('#qta_manuale').is(":checked")){
$("#div_modifica_manuale").show();
$("#div_modifica_manuale").show();
$("#descrizione_movimento").attr('required', true);
$("#data_movimento").attr('required', true);
}else{
$("#div_modifica_manuale").hide();
$('#qta').val($('#old_qta').val());
$("#descrizione_movimento").attr('required', false);
$("#data_movimento").attr('required', false);
}
});
});
@ -68,8 +79,6 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
{[ "type": "select", "label": "<?php echo tr('Unità di misura'); ?>", "name": "um", "value": "$um$", "ajax-source": "misure", "icon-after": "add|<?php echo Modules::get('Unità di misura')['id']; ?>" ]}
</div>
<?php
$records[0]['abilita_serial'] = ($records[0]['serial'] > 0) ? 1 : $records[0]['abilita_serial'];
if (empty($records[0]['abilita_serial'])) {
@ -85,6 +94,15 @@ $_SESSION['superselect']['id_categoria'] = $records[0]['id_categoria'];
</div>
<div class='row' id="div_modifica_manuale" style="display:none;">
<div class='col-md-3'>
{[ "type": "text", "label": "<?php echo tr('Descrizione movimento'); ?>", "name": "descrizione_movimento", "value": "" ]}
</div>
<div class='col-md-3'>
{[ "type": "date", "label": "<?php echo tr('Data movimento'); ?>", "name": "data_movimento", "value": "-now-" ]}
</div>
</div>
<div class="row">
<div class="col-md-12">
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
/**
* Funzione per inserire i movimenti di magazzino.
*/
function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '')
function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '', $data='')
{
$dbo = Database::getConnection();
@ -15,12 +15,16 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
//Info Articolo
$rs_art = $dbo->fetchArray("SELECT * FROM mg_articoli WHERE id='".$idarticolo."'");
$manuale = 0;
// Ddt
if (!empty($array['idddt'])) {
$rs = $dbo->fetchArray('SELECT numero, numero_esterno, dt_tipiddt.descrizione AS tipo, dt_tipiddt.dir FROM dt_ddt LEFT JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($array['idddt']));
$numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero'];
$tipo = strtolower($rs[0]['tipo']);
$rs_data = $dbo->fetchArray("SELECT data FROM dt_ddt WHERE id='".$array['idddt']."'");
$data = $rs_data[0]['data'];
}
// Fattura
@ -28,6 +32,9 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
$rs = $dbo->fetchArray('SELECT numero, numero_esterno, co_tipidocumento.descrizione AS tipo, co_tipidocumento.dir FROM co_documenti LEFT JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($array['iddocumento']));
$numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero'];
$tipo = strtolower($rs[0]['tipo']);
$rs_data = $dbo->fetchArray("SELECT data FROM co_documenti WHERE id='".$array['iddocumento']."'");
$data = $rs_data[0]['data'];
}
// Automezzo
@ -48,22 +55,31 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
$new = ($qta < 0 ? '+' : '').-$qta;
$dbo->query('UPDATE mg_articoli_automezzi SET qta = qta + '.$new.' WHERE idarticolo = '.prepare($idarticolo).' AND idautomezzo = '.prepare($array['idautomezzo']));
$data = date('Y-m-d');
}
// Intervento
elseif (!empty($array['idintervento'])) {
$movimento = ($qta > 0) ? tr('Ripristino articolo da intervento _NUM_') : tr('Scarico magazzino per intervento _NUM_');
$numero = $array['idintervento'];
$rs_data = $dbo->fetchArray("SELECT IFNULL(MAX(orario_fine), data_richiesta) AS data FROM in_interventi LEFT JOIN in_interventi_tecnici ON in_interventi.id=in_interventi_tecnici.idintervento WHERE in_interventi.id='".$array['idintervento']."'");
$data = $rs_data[0]['data'];
}
// Manuale
else {
$manuale = 1;
$movimento = !empty($descrizone) ? $descrizone : '';
$descrizone = '';
if (empty($movimento)) {
$movimento = ($qta > 0) ? tr('Carico magazzino') : tr('Scarico magazzino');
}
if($data==''){
$data = date('Y-m-d');
}
}
// Descrizione di default
@ -92,6 +108,8 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
'idarticolo' => $idarticolo,
'qta' => $qta,
'movimento' => $movimento,
'data' => $data,
'manuale' => $manuale,
]));
}

View File

@ -55,13 +55,13 @@ if (!empty($rs2)) {
// Data
echo '
<td>'.Translator::timestampToLocale($r['created_at']).'</td>';
<td>'.Translator::dateToLocale($r['data']).'</td>';
// Operazioni
echo '
<td class="text-center">';
if (Auth::admin()) {
if (Auth::admin() && $r['manuale']=='1') {
echo '
<a class="btn btn-danger btn-sm ask" data-backto="record-edit" data-op="delmovimento" data-idmovimento="'.$r['id'].'">
<i class="fa fa-trash"></i>

24
update/2_4_1.php Normal file
View File

@ -0,0 +1,24 @@
<?php
// Script per aggiornare le date dei movimenti con le date dei documenti
$rs = $dbo->fetchArray("SELECT * FROM mg_movimenti");
for($i=0;$i<sizeof($rs);$i++){
if($rs[$i]['idintervento']!=''){
$rs_data = $dbo->fetchArray("SELECT IFNULL(MAX(orario_fine), data_richiesta) AS data FROM in_interventi LEFT JOIN in_interventi_tecnici ON in_interventi.id=in_interventi_tecnici.idintervento WHERE in_interventi.id='".$rs[$i]['idintervento']."'");
$data = $rs_data[0]['data'];
$dbo->query("UPDATE mg_movimenti SET data='".$data."' WHERE id='".$rs[$i]['id']."'");
}
else if($rs[$i]['idddt']!='0'){
$rs_data = $dbo->fetchArray("SELECT data FROM dt_ddt WHERE id='".$rs[$i]['idddt']."'");
$data = $rs_data[0]['data'];
$dbo->query("UPDATE mg_movimenti SET data='".$data."' WHERE id='".$rs[$i]['id']."'");
}
else if($rs[$i]['iddocumento']!='0'){
$rs_data = $dbo->fetchArray("SELECT data FROM co_documenti WHERE id='".$rs[$i]['iddocumento']."'");
$data = $rs_data[0]['data'];
}
}
?>

View File

@ -97,3 +97,9 @@ CREATE TABLE IF NOT EXISTS `co_righe_contratti_materiali` (
-- Modifica query wiget per mostrare solo quelli che non sono sati rinnovati
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato, co_contratti.id, DATEDIFF( data_conclusione, NOW() ) AS giorni_rimanenti FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE fatturabile = 1) AND rinnovabile=1 AND NOW() > DATE_ADD( data_conclusione, INTERVAL - ABS(giorni_preavviso_rinnovo) DAY) AND YEAR(data_conclusione) > 1970 HAVING ISNULL((SELECT id FROM co_contratti contratti WHERE contratti.idcontratto_prev=co_contratti.id )) ORDER BY giorni_rimanenti ASC' WHERE `zz_widgets`.`name` = 'Contratti in scadenza';
-- Aggiunto campo data su movimenti articoli
ALTER TABLE `mg_movimenti` ADD `data` DATE NOT NULL AFTER `movimento`;
-- Campo per indentificare i movimenti manuali
ALTER TABLE `mg_movimenti` ADD `manuale` TINYINT(1) NOT NULL AFTER `data`;