Fix per caricamento articoli in promemoria contratti

This commit is contained in:
Luca 2018-05-16 12:50:59 +02:00
parent b0b9a5123f
commit 976af57fe1
6 changed files with 191 additions and 30 deletions

View File

@ -6,6 +6,123 @@ include_once $docroot.'/modules/fatture/modutil.php';
switch (post('op')) {
/*
GESTIONE ARTICOLI
*/
case 'editarticolo':
$idriga = post('idriga');
$idarticolo = post('idarticolo');
$idimpianto = post('idimpianto');
//$idautomezzo = post('idautomezzo');
//$idarticolo_originale = post('idarticolo_originale');
// Leggo la quantità attuale nell'intervento
$q = 'SELECT qta, idautomezzo, idimpianto FROM co_righe_contratti_articoli WHERE id='.prepare($idriga);
$rs = $dbo->fetchArray($q);
$old_qta = $rs[0]['qta'];
$idimpianto = $rs[0]['idimpianto'];
//$idautomezzo = $rs[0]['idautomezzo'];
//$serials = array_column($dbo->select('mg_prodotti', 'serial', ['id_riga_intervento' => $idriga]), 'serial');
//add_movimento_magazzino($idarticolo_originale, $old_qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
// Elimino questo articolo dall'intervento
$dbo->query('DELETE FROM co_righe_contratti_articoli WHERE id='.prepare($idriga));
// Elimino il collegamento al componente
//$dbo->query('DELETE FROM my_impianto_componenti WHERE idimpianto='.prepare($idimpianto).' AND idintervento='.prepare($id_record));
/* Ricollego l'articolo modificato all'intervento */
/* ci può essere il caso in cui cambio idarticolo e anche qta */
//no break;
case 'addarticolo':
$idarticolo = post('idarticolo');
//$idautomezzo = post('idautomezzo');
$descrizione = post('descrizione');
$idimpianto = post('idimpianto');
$qta = post('qta');
$um = post('um');
$prezzo_vendita = post('prezzo_vendita');
$idiva = post('idiva');
$sconto_unitario = $post['sconto'];
$tipo_sconto = $post['tipo_sconto'];
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario;
$sconto = $sconto * $qta;
$idcontratto_riga = $post['idcontratto_riga'];
// Decremento la quantità
//add_movimento_magazzino($idarticolo, -$qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
// Aggiorno l'automezzo dell'intervento
//$dbo->query('UPDATE in_interventi SET idautomezzo='.prepare($idautomezzo).' WHERE id='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module));
//$rsart = $dbo->fetchArray('SELECT abilita_serial, prezzo_acquisto FROM mg_articoli WHERE id='.prepare($idarticolo));
//$prezzo_acquisto = $rsart[0]['prezzo_acquisto'];
//Calcolo iva
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
$desc_iva = $rs_iva[0]['descrizione'];
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
// Aggiunto il collegamento fra l'articolo e l'intervento
$idriga = $dbo->query('INSERT INTO co_righe_contratti_articoli(idarticolo, id_riga_contratto, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($idcontratto_riga).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
/*if (!empty($serials)) {
if ($old_qta > $qta) {
$serials = array_slice($serials, 0, $qta);
}
$dbo->sync('mg_prodotti', ['id_riga_intervento' => $idriga, 'dir' => 'entrata', 'id_articolo' => $idarticolo], ['serial' => $serials]);
}*/
//link_componente_to_articolo($id_record, $idimpianto, $idarticolo, $qta);
break;
case 'unlink_articolo':
$idriga = post('idriga');
//$idarticolo = post('idarticolo');
$dbo->query('DELETE FROM co_righe_contratti_articoli WHERE id='.prepare($idriga).' '.Modules::getAdditionalsQuery($id_module));
// Riporto la merce nel magazzino
if (!empty($idriga) && !empty($id_record)) {
// Leggo la quantità attuale nell'intervento
//$q = 'SELECT qta, idautomezzo, idarticolo, idimpianto FROM co_righe_contratti_articoli WHERE id='.prepare($idriga);
//$rs = $dbo->fetchArray($q);
//$qta = $rs[0]['qta'];
//$idarticolo = $rs[0]['idarticolo'];
//$idimpianto = $rs[0]['idimpianto'];
//$idautomezzo = $rs[0]['idautomezzo'];
// add_movimento_magazzino($idarticolo, $qta, ['idautomezzo' => $idautomezzo, 'idintervento' => $id_record]);
// Elimino questo articolo dall'intervento
//$dbo->query('DELETE FROM mg_articoli_interventi WHERE id='.prepare($idriga).' AND idintervento='.prepare($id_record));
// Elimino il collegamento al componente
//$dbo->query('DELETE FROM my_impianto_componenti WHERE idimpianto='.prepare($idimpianto).' AND idintervento='.prepare($id_record));
// Elimino i seriali utilizzati dalla riga
//$dbo->query('DELETE FROM `mg_prodotti` WHERE id_articolo = '.prepare($idarticolo).' AND id_riga_intervento = '.prepare($id_record));
}
break;
/*
Gestione righe generiche

View File

@ -8,17 +8,20 @@ for ($i = 0; $i < count($rs); ++$i) {
$gruppi[$i] = $rs[$i]['nome'];
}
$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi)));
//$can_edit_prezzi = (in_array('Amministratori', $gruppi)) || (get_var('Mostra i prezzi al tecnico') == 1 && (in_array('Tecnici', $gruppi)));
$idriga = get('idriga');
$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo');
//$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo');
$_SESSION['superselect']['idintervento'] = get('id_record');
//$_SESSION['superselect']['idintervento'] = get('id_record');
// Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino
$rs = $dbo->fetchArray('SELECT idanagrafica FROM in_interventi WHERE id='.prepare($id_record));
$rs = $dbo->fetchArray('SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record));
$idanagrafica = $rs[0]['idanagrafica'];
if (empty($idriga)) {
$op = 'addarticolo';
$button = '<i class="fa fa-plus"></i> '.tr('Aggiungi');
@ -39,12 +42,15 @@ if (empty($idriga)) {
$sconto_unitario = $listino[0]['prc_guadagno'];
$tipo_sconto = 'PRC';
}
(empty($idcontratto_riga)) ? $idcontratto_riga = $dbo->fetchArray('SELECT MAX(id) AS max_idcontratto_riga FROM `co_righe_contratti`')[0]['max_idcontratto_riga'] : '';
} else {
$op = 'editarticolo';
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
// carico record da modificare
$q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS descrizione_articolo FROM mg_articoli_interventi WHERE id=".prepare($idriga);
$q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=co_righe_contratti_articoli.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=co_righe_contratti_articoli.idarticolo) AS descrizione_articolo FROM co_righe_contratti_articoli WHERE id=".prepare($idriga);
$rsr = $dbo->fetchArray($q);
$idarticolo = $rsr[0]['idarticolo'];
@ -62,16 +68,21 @@ if (empty($idriga)) {
$idautomezzo = $rsr[0]['idautomezzo'];
$idimpianto = $rsr[0]['idimpianto'];
$idcontratto_riga = $rsr[0]['id_riga_contratto'];
}
/*
Form di inserimento
*/
echo '
<form id="add_form" action="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post">
<form id="add-articoli" action="'.$rootdir.'/modules/contratti/plugins/actions.php" method="post">
<input type="hidden" name="op" value="'.$op.'">
<input type="hidden" id="idautomezzo" name="idautomezzo" value="'.$idautomezzo.'">
<input type="hidden" name="idriga" value="'.$idriga.'">';
<input type="hidden" name="idriga" value="'.$idriga.'">
<input type="hidden" name="idcontratto_riga" value="'.$idcontratto_riga.'">';
if (!empty($idarticolo)) {
echo '
@ -109,11 +120,11 @@ echo '
</div>';
// Impianto
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "idimpianto", "value": "'.$idimpianto.'", "ajax-source": "impianti" ]}
</div>
</div>';
echo '
<div class="col-md-4">
{[ "type": "select", "multiple": "0", "label": "'.tr('Impianto').'", "name": "idimpianto", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_record.' ORDER BY descrizione", "value": "'.$matricoleimpianti.'", "extra":"'.$readonly.'" ]}
</div>
</div>';
// Iva
echo '
@ -136,7 +147,7 @@ echo '
</div>';
// Informazioni aggiuntive
echo '
/*echo '
<div class="row" id="prezzi_articolo">
<div class="col-md-4 text-center">
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzi\').toggleClass(\'hide\'); $(\'#prezzi\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzi&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
@ -159,7 +170,7 @@ echo '
<div id="prezzivendita" class="hide"></div>
</div>
</div>
<br>';
<br>';*/
echo '
<script>
@ -192,7 +203,7 @@ echo '
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
<button type="submit" class="btn btn-primary pull-right">'.$button.'</button>
</div>
</div>
</form>';
@ -204,12 +215,12 @@ echo '
<script type="text/javascript">
$(document).ready(function() {
$('#add_form').ajaxForm({
$('#add-articoli').ajaxForm({
success: function(){
$('#bs-popup2').modal('hide');
// Ricarico gli articoli
$('#articoli').load(globals.rootdir + '/modules/contratti/plugins/ajax_articoli.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
$('#articoli').load(globals.rootdir + '/modules/contratti/plugins/ajax_articoli.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idcontratto_riga=<?php echo $idcontratto_riga; ?>');
}

View File

@ -4,9 +4,15 @@ include_once __DIR__.'/../../../core.php';
include_once $docroot.'/modules/articoli/modutil.php';
$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);
$idcontratto_riga = $get['idcontratto_riga'];
$query = 'SELECT * FROM co_righe_contratti_articoli WHERE id_riga_contratto='.prepare($idcontratto_riga).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC';
$rs = $dbo->fetchArray($query);
if (!empty($rs)) {
echo '
<table class="table table-striped table-condensed table-hover table-bordered">
@ -129,10 +135,11 @@ if (!empty($rs)) {
}*/
echo '
<button type="button" class="btn btn-warning btn-xs" data-title="'.tr('Modifica spesa').'" onclick="launch_modal(\'Modifica spesa\', \''.$rootdir.'/modules/contratti/plugins/add_articolo.php?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['id'].'\', 1, \'#bs-popup2\');" >
<i class="fa fa-edit"></i></button>
<button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica articoli').'\', \''.$rootdir.'/modules/contratti/plugins/add_articolo.php?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['idriga'].'\', 1);"><i class="fa fa-edit"></i></button>
<button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" title="Riporta in magazzino" onclick="if(confirm(\''.tr('Riportare questo articolo in magazzino?').'\') ){ ritorna_al_magazzino(\''.$r['id'].'\'); }"><i class="fa fa-angle-double-left"></i> <i class="fa fa-truck"></i></button>
<button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" title="'.tr('Elimina materiale').'" onclick="if(confirm(\''.tr('Eliminare questo materiale?').'\') ){ ritorna_al_magazzino(\''.$r['id'].'\'); }"><i class="fa fa-angle-double-left"></i> <i class="fa fa-truck"></i></button>
</td>';
}
echo '
@ -148,9 +155,7 @@ if (!empty($rs)) {
$.post(globals.rootdir + '/modules/contratti/plugins/actions.php', {op: 'unlink_articolo', idriga: id, id_record: '<?php echo $id_record; ?>', id_module: '<?php echo $id_module; ?>' }, function(data, result){
if( result == 'success' ){
// ricarico l'elenco degli articoli
$('#articoli').load(globals.rootdir + '/modules/contratti/plugins/ajax_articoli.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
$('#articoli').load(globals.rootdir + '/modules/contratti/plugins/ajax_articoli.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idcontratto_riga=<?php echo $idcontratto_riga; ?>');
}
});
}

View File

@ -92,7 +92,7 @@ if (count($rs2) > 0) {
echo '
<td>
<button type="button" class="btn btn-warning btn-xs" data-title="'.tr('Modifica spesa').'" onclick="launch_modal(\'Nuovo promemoria\', \''.$rootdir.'/modules/contratti/plugins/add_righe.php?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['id'].'\', 1, \'#bs-popup2\');" >
<button type="button" class="btn btn-warning btn-xs" data-title="'.tr('Modifica spesa').'" onclick="launch_modal(\'Modifica spesa\', \''.$rootdir.'/modules/contratti/plugins/add_righe.php?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['id'].'\', 1, \'#bs-popup2\');" >
<i class="fa fa-edit"></i></button>

View File

@ -192,7 +192,7 @@ echo '
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
<button type="submit" class="btn btn-primary pull-right">'.$button.'</button>
</div>
</div>
</form>';

View File

@ -92,16 +92,44 @@ CREATE TABLE IF NOT EXISTS `co_righe_contratti_materiali` (
`sconto_unitario` decimal(12,4) NOT NULL,
`tipo_sconto` enum('UNT','PRC') NOT NULL DEFAULT 'UNT',
PRIMARY KEY (`id`),
KEY `idintervento` (`id_riga_contratto`)
KEY `id_riga_contratto` (`id_riga_contratto`)
);
-- Modifica query wiget per mostrare solo quelli che non sono sati rinnovati
-- Struttura della tabella `co_righe_contratti_articoli`
CREATE TABLE IF NOT EXISTS `co_righe_contratti_articoli` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idarticolo` int(11) NOT NULL,
`id_riga_contratto` int(11) DEFAULT NULL,
`descrizione` varchar(255) NOT NULL,
`prezzo_acquisto` decimal(12,4) NOT NULL,
`prezzo_vendita` decimal(12,4) NOT NULL,
`sconto` decimal(12,4) NOT NULL,
`sconto_unitario` decimal(12,4) NOT NULL,
`tipo_sconto` enum('UNT','PRC') NOT NULL DEFAULT 'UNT',
`idiva` int(11) NOT NULL,
`desc_iva` varchar(255) NOT NULL,
`iva` decimal(12,4) NOT NULL,
`idautomezzo` int(11) NOT NULL,
`qta` decimal(10,2) NOT NULL,
`um` varchar(20) NOT NULL,
`abilita_serial` tinyint(1) NOT NULL DEFAULT '0',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`idimpianto` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_riga_contratto` (`id_riga_contratto`),
KEY `idimpianto` (`idimpianto`)
);
-- Modifica query wiget per mostrare solo quelli che non sono stati 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
-- Campo per identificare i movimenti manuali
ALTER TABLE `mg_movimenti` ADD `manuale` TINYINT(1) NOT NULL AFTER `data`;
-- Aggiunta possibilità di selezionare anche i conti in 620 Costi diversi negli acquisti