mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-07 23:28:50 +01:00
Potenziamento plugin Pianificazione interventi da contratto
This commit is contained in:
parent
a961e57b99
commit
b2120044d3
219
modules/contratti/plugins/add_articolo.php
Normal file
219
modules/contratti/plugins/add_articolo.php
Normal file
@ -0,0 +1,219 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
// Prezzo modificabile solo se l'utente loggato è un tecnico (+ può vedere i prezzi) o se è amministratore
|
||||
$rs = $dbo->fetchArray('SELECT nome FROM zz_groups WHERE id IN(SELECT idgruppo FROM zz_users WHERE id='.prepare($_SESSION['id_utente']).')');
|
||||
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)));
|
||||
|
||||
$idriga = get('idriga');
|
||||
$idautomezzo = (get('idautomezzo') == 'undefined') ? '' : get('idautomezzo');
|
||||
|
||||
$_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));
|
||||
|
||||
$idanagrafica = $rs[0]['idanagrafica'];
|
||||
if (empty($idriga)) {
|
||||
$op = 'addarticolo';
|
||||
$button = '<i class="fa fa-plus"></i> '.tr('Aggiungi');
|
||||
|
||||
// valori default
|
||||
$idarticolo = '';
|
||||
$descrizione = '';
|
||||
$qta = 1;
|
||||
$um = '';
|
||||
|
||||
$prezzo_vendita = '0';
|
||||
$sconto_unitario = 0;
|
||||
|
||||
$idimpianto = 0;
|
||||
|
||||
$listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')');
|
||||
if (!empty($listino[0]['prc_guadagno'])) {
|
||||
$sconto_unitario = $listino[0]['prc_guadagno'];
|
||||
$tipo_sconto = 'PRC';
|
||||
}
|
||||
} 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);
|
||||
$rsr = $dbo->fetchArray($q);
|
||||
|
||||
$idarticolo = $rsr[0]['idarticolo'];
|
||||
$codice_articolo = $rsr[0]['codice_articolo'];
|
||||
$descrizione = $rsr[0]['descrizione'];
|
||||
$qta = $rsr[0]['qta'];
|
||||
$um = $rsr[0]['um'];
|
||||
$idiva = $rsr[0]['idiva'];
|
||||
|
||||
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
|
||||
|
||||
$sconto_unitario = $rsr[0]['sconto_unitario'];
|
||||
$tipo_sconto = $rsr[0]['tipo_sconto'];
|
||||
|
||||
$idautomezzo = $rsr[0]['idautomezzo'];
|
||||
|
||||
$idimpianto = $rsr[0]['idimpianto'];
|
||||
}
|
||||
|
||||
/*
|
||||
Form di inserimento
|
||||
*/
|
||||
echo '
|
||||
<form id="add_form" action="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" 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.'">';
|
||||
|
||||
if (!empty($idarticolo)) {
|
||||
echo '
|
||||
<input type="hidden" id="idarticolo_originale" name="idarticolo_originale" value="'.$idarticolo.'">';
|
||||
}
|
||||
|
||||
// Articolo
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "required": 1, "value": "'.$idarticolo.'", "ajax-source": "articoli" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Descrizione
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione", "id": "descrizione_articolo", "required": 1, "value": '.json_encode($descrizione).' ]}
|
||||
</div>
|
||||
</div>
|
||||
<br>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.$qta.'", "decimals": "qta" ]}
|
||||
</div>';
|
||||
|
||||
// Unità di misura
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "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
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "idimpianto", "value": "'.$idimpianto.'", "ajax-source": "impianti" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Iva
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]}
|
||||
</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": "€" ]}
|
||||
</div>';
|
||||
|
||||
// Sconto
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc|'.$tipo_sconto.'", "value": "'.$sconto_unitario.'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Informazioni aggiuntive
|
||||
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>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (cliente)').'
|
||||
</button>
|
||||
<div id="prezzi" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezziacquisto\').toggleClass(\'hide\'); $(\'#prezziacquisto\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezziacquisto&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (acquisto)').'
|
||||
</button>
|
||||
<div id="prezziacquisto" class="hide"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 text-center">
|
||||
<button type="button" class="btn btn-sm btn-info btn-block disabled" onclick="$(\'#prezzivendita\').toggleClass(\'hide\'); $(\'#prezzivendita\').load(\''.$rootdir."/ajax_complete.php?module=Articoli&op=getprezzivendita&idarticolo=' + $('#idarticolo option:selected').val() + '&idanagrafica=".$idanagrafica.'\');" disabled>
|
||||
<i class="fa fa-search"></i> '.tr('Visualizza ultimi prezzi (vendita)').'
|
||||
</button>
|
||||
<div id="prezzivendita" class="hide"></div>
|
||||
</div>
|
||||
</div>
|
||||
<br>';
|
||||
|
||||
echo '
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$("#idarticolo").on("change", function(){
|
||||
$("#prezzi_articolo button").attr("disabled", !$(this).val());
|
||||
if($(this).val()){
|
||||
$("#prezzi_articolo button").removeClass("disabled");
|
||||
|
||||
session_set("superselect,idarticolo", $(this).val(), 0);
|
||||
$data = $(this).selectData();
|
||||
|
||||
$("#prezzo_vendita").val($data.prezzo_vendita);
|
||||
$("#descrizione_articolo").val($data.descrizione);
|
||||
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita);
|
||||
$("#um").selectSetNew($data.um, $data.um);
|
||||
}else{
|
||||
$("#prezzi_articolo button").addClass("disabled");
|
||||
}
|
||||
|
||||
$("#prezzi").html("");
|
||||
$("#prezzivendita").html("");
|
||||
$("#prezziacquisto").html("");
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
|
||||
echo '
|
||||
<script src="'.$rootdir.'/lib/init.js"></script>';
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#add_form').ajaxForm({
|
||||
success: function(){
|
||||
$('#bs-popup').modal('hide');
|
||||
|
||||
// Ricarico gli articoli
|
||||
$('#articoli').load(globals.rootdir + '/modules/interventi/ajax_articoli.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
|
||||
// Ricarico la tabella dei costi
|
||||
$('#costi').load(globals.rootdir + '/modules/interventi/ajax_costi.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
131
modules/contratti/plugins/add_righe.php
Normal file
131
modules/contratti/plugins/add_righe.php
Normal file
@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
$idriga = filter('idriga');
|
||||
|
||||
//Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino
|
||||
$rs = $dbo->fetchArray('SELECT idanagrafica, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=.in_interventi.idanagrafica)) AS prc_sconto FROM in_interventi WHERE id='.prepare($id_record));
|
||||
$idanagrafica = $rs[0]['idanagrafica'];
|
||||
$prc_sconto = $rs[0]['prc_sconto'];
|
||||
|
||||
if (empty($idriga)) {
|
||||
$op = 'addriga';
|
||||
$button = '<i class="fa fa-plus"></i> '.tr('Aggiungi');
|
||||
|
||||
// valori default
|
||||
$descrizione = '';
|
||||
$qta = 1;
|
||||
$um = '';
|
||||
$prezzo_vendita = '0';
|
||||
$prezzo_acquisto = '0';
|
||||
|
||||
if (!empty($rs[0]['prc_guadagno'])) {
|
||||
$sconto_unitario = $rs[0]['prc_guadagno'];
|
||||
$tipo_sconto = 'PRC';
|
||||
}
|
||||
} else {
|
||||
$op = 'editriga';
|
||||
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
|
||||
|
||||
// carico record da modificare
|
||||
$q = 'SELECT * FROM in_righe_interventi WHERE id='.prepare($idriga);
|
||||
$rsr = $dbo->fetchArray($q);
|
||||
|
||||
$descrizione = $rsr[0]['descrizione'];
|
||||
$qta = $rsr[0]['qta'];
|
||||
$um = $rsr[0]['um'];
|
||||
$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'];
|
||||
}
|
||||
|
||||
/*
|
||||
Form di inserimento
|
||||
*/
|
||||
echo '
|
||||
<form id="add-righe" action="'.$rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post">
|
||||
<input type="hidden" name="op" value="'.$op.'">
|
||||
<input type="hidden" name="idriga" value="'.$idriga.'">';
|
||||
|
||||
// Descrizione
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "id": "descrizione_riga", "name": "descrizione", "required": 1, "value": '.json_encode($descrizione).' ]}
|
||||
</div>
|
||||
</div>
|
||||
<br>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.$qta.'", "decimals": "qta" ]}
|
||||
</div>';
|
||||
|
||||
// Unità di misura
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::get('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
|
||||
</div>';
|
||||
|
||||
// Iva
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Prezzo di acquisto
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Prezzo di acquisto (un.)').'", "name": "prezzo_acquisto", "required": 1, "value": "'.$prezzo_acquisto.'", "icon-after": "€" ]}
|
||||
</div>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Prezzo di vendita (un.)').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "€" ]}
|
||||
</div>';
|
||||
|
||||
// Sconto unitario
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc|'.$tipo_sconto.'", "value": "'.$sconto_unitario.'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
echo '
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-primary pull-right">'.$button.'</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
|
||||
echo '
|
||||
<script src="'.$rootdir.'/lib/init.js"></script>';
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#add-righe').ajaxForm({
|
||||
success: function(){
|
||||
$('#bs-popup').modal('hide');
|
||||
|
||||
// Ricarico le righe
|
||||
$('#righe').load(globals.rootdir + '/modules/interventi/ajax_righe.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
|
||||
// Ricarico la tabella dei costi
|
||||
$('#costi').load(globals.rootdir + '/modules/interventi/ajax_costi.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
@ -4,46 +4,144 @@ include_once __DIR__.'/../../../core.php';
|
||||
|
||||
//<form action="plugin_editor.php?id_plugin=$id_plugin$&id_module=$id_module$&id_parent=$id_parent$" method="post" role="form">
|
||||
|
||||
$idcontratto_riga = $get['idcontratto_riga'];
|
||||
$qp = 'SELECT *, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
|
||||
$rsp = $dbo->fetchArray($qp);
|
||||
|
||||
$data_richiesta = readDate($rsp[0]['data_richiesta']);
|
||||
$data_richiesta = date('d/m/Y');
|
||||
$disabled = '';
|
||||
$hide = 'hide';
|
||||
|
||||
|
||||
|
||||
//mi ricavo informazioni del contratto
|
||||
$data_conclusione = $dbo->fetchArray('SELECT `data_conclusione` FROM `co_contratti` WHERE `id` = '.prepare($id_record))[0]['data_conclusione'];
|
||||
$idanagrafica = $dbo->fetchArray('SELECT `idanagrafica` FROM `co_contratti` WHERE `id` = '.prepare($id_record))[0]['idanagrafica'];
|
||||
|
||||
$list = '\"1\":\"'.tr('Pianificare a partire da oggi ').date('d/m/Y').'\"';
|
||||
|
||||
if (!empty($get['idcontratto_riga'])){
|
||||
|
||||
$idcontratto_riga = $get['idcontratto_riga'];
|
||||
$qp = 'SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
|
||||
$rsp = $dbo->fetchArray($qp);
|
||||
|
||||
$data_richiesta = readDate($rsp[0]['data_richiesta']);
|
||||
$matricoleimpianti = trim($rsp[0]['idimpianti']);
|
||||
$idsede = $rsp[0]['idsede'];
|
||||
|
||||
$readonly = 'readonly';
|
||||
$hide = '';
|
||||
$list .= ', \"0\":\"'.tr('Pianificare a partire da questo promemoria ').$data_richiesta.'\"';
|
||||
|
||||
|
||||
}
|
||||
|
||||
//orari inizio fine interventi
|
||||
$orario_inizio = '09:00';
|
||||
$orario_fine = '17:00';
|
||||
|
||||
echo '
|
||||
<form id="add_form" action="'.$rootdir.'/editor.php?id_module='.Modules::get('Contratti')['id'].'&id_record='.$id_record.'&idcontratto_riga='.$idcontratto_riga.'" method="post">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="pianificazione">
|
||||
<input type="hidden" name="op" value="pianificazione">';
|
||||
|
||||
|
||||
|
||||
echo '
|
||||
<!-- DATI PROMEMORIA? -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Dati').'</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
||||
<div class="col-md-7">
|
||||
{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "id": "idtipointervento_", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "disabled" ]}
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "'.tr('Entro il').'", "name": "data_richiesta", "required": 1, "value": "'.$data_richiesta.'", "extra":"'.$readonly.'" ]}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-5">
|
||||
{[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "class": "", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]}
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "'.$readonly.'" ]}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "multiple": "1", "label": "'.tr('Impianti').'", "name": "matricolaimpianto_[]", "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 class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede_c", "values": "query=SELECT 0 AS id, \'Sede legale\' AS descrizione UNION SELECT id, CONCAT( CONCAT_WS( \' (\', CONCAT_WS(\', \', `nomesede`, `citta`), `indirizzo` ), \')\') AS descrizione FROM an_sedi WHERE idanagrafica='.$idanagrafica.'", "value": "'.$idsede.'", "extra":"'.$readonly.'" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "placeholder": "'.tr('Descrizione').'", "name": "richiesta", "id": "richiesta_", "extra": "readonly", "value": "'.$rsp[0]['richiesta'].'" ]}
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "richiesta", "id": "richiesta_", "extra": "'.$readonly.'", "value": "'.$rsp[0]['richiesta'].'" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<!-- ARTICOLI -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Materiale utilizzato'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="articoli">
|
||||
<?php include $docroot.'/modules/contratti/plugins/ajax_articoli.php'; ?>
|
||||
</div>
|
||||
|
||||
<?php if (empty($readonly)) {
|
||||
?>
|
||||
<button type="button" class="btn btn-primary" data-target="#bs-popup2" data-toggle="modal" data-href="<?php echo $rootdir; ?>/modules/contratti/plugins/add_articolo.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idriga=0" ><i class="fa fa-plus"></i> <?php echo tr('Aggiungi articolo'); ?>...</button>
|
||||
<?php
|
||||
} ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SPESE AGGIUNTIVE -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Altre spese'); ?></h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="righe">
|
||||
<?php include $docroot.'/modules/contratti/plugins/ajax_righe.php'; ?>
|
||||
</div>
|
||||
|
||||
<?php if (empty($readonly)) {
|
||||
?>
|
||||
<button type="button" class="btn btn-primary" data-target="#bs-popup2" data-toggle="modal" data-href="<?php echo $rootdir; ?>/modules/contratti/plugins/add_righe.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi altre spese'); ?>...</button>
|
||||
<?php
|
||||
} ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
echo '</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
||||
|
||||
@ -53,10 +151,26 @@ echo '
|
||||
|
||||
';
|
||||
|
||||
|
||||
echo '
|
||||
<!-- PIANIFICAZIONE CICLICA? -->
|
||||
<div class="panel panel-primary '.$hide.'">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Promemoria ciclico?').'</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">';
|
||||
|
||||
|
||||
echo '<div class="row">
|
||||
<div class="col-md-2">
|
||||
{[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "class": "", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]}
|
||||
</div>';
|
||||
|
||||
?>
|
||||
|
||||
<div class="col-md-7">
|
||||
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione'); ?>", "name": "parti_da_oggi", "values": "list= \"0\":\"<?php echo tr('Pianificare a partire da questo promemoria ').$data_richiesta; ?>\", \"1\":\"<?php echo tr('Pianificare a partire da oggi ').date('d/m/Y'); ?>\"", "value": "" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione'); ?>", "name": "parti_da_oggi", "values": "list=<?php echo $list ?>", "value": "" ]}
|
||||
</div>
|
||||
|
||||
<?php
|
||||
@ -64,12 +178,28 @@ echo '
|
||||
echo '
|
||||
|
||||
|
||||
<div class="col-md-5">
|
||||
{[ "type": "date", "label": "'.tr('Fine pianificazione <small>(Data conclusione contratto)</small>').'", "name": "data_conclusione", "id": "data_conclusione_", "extra": "readonly", "value": "'.$rsp[0]['data_conclusione'].'" ]}
|
||||
<div class="col-md-3">
|
||||
{[ "type": "date", "label": "'.tr('Fine pianificazione').'", "help": "'.tr('Data conclusione contratto').'", "name": "data_conclusione", "id": "data_conclusione_", "extra": "readonly", "value": "'.$data_conclusione.'" ]}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
|
||||
|
||||
echo '
|
||||
<!-- PIANIFICARE INTERVENTI? -->
|
||||
<div class="panel panel-primary '.$hide.'">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Pianificare interventi?').'</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
@ -91,6 +221,9 @@ echo '
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
|
157
modules/contratti/plugins/ajax_articoli.php
Normal file
157
modules/contratti/plugins/ajax_articoli.php
Normal file
@ -0,0 +1,157 @@
|
||||
<?php
|
||||
|
||||
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');
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo '
|
||||
<table class="table table-striped table-condensed table-hover table-bordered">
|
||||
<tr>
|
||||
<th>'.tr('Articolo').'</th>
|
||||
<th width="8%">'.tr('Q.tà').'</th>';
|
||||
|
||||
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
|
||||
echo '
|
||||
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
|
||||
}
|
||||
|
||||
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
|
||||
echo '
|
||||
<th width="15%">'.tr('Prezzo di vendita').'</th>
|
||||
<th width="10%">'.tr('Iva').'</th>
|
||||
<th width="15%">'.tr('Imponibile').'</th>';
|
||||
}
|
||||
|
||||
if (!$records[0]['flag_completato']) {
|
||||
echo '
|
||||
<th width="80"></th>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
|
||||
foreach ($rs as $r) {
|
||||
$extra = '';
|
||||
$mancanti = 0;
|
||||
|
||||
// Individuazione dei seriali
|
||||
if (!empty($r['idarticolo']) && !empty($r['abilita_serial'])) {
|
||||
$serials = array_column($dbo->fetchArray('SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND id_riga_intervento='.prepare($r['id'])), 'serial');
|
||||
$mancanti = $r['qta'] - count($serials);
|
||||
|
||||
if ($mancanti > 0) {
|
||||
$extra = 'class="warning"';
|
||||
} else {
|
||||
$mancanti = 0;
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
<tr '.$extra.'>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="'.$r['id'].'">
|
||||
'.Modules::link('Articoli', $r['idarticolo'], (!empty($r['codice']) ? $r['codice'].' - ' : '').$r['descrizione']);
|
||||
|
||||
// Info extra (lotto, serial, altro)
|
||||
if (!empty($r['abilita_serial'])) {
|
||||
if (!empty($mancanti)) {
|
||||
echo '
|
||||
<br><b><small class="text-danger">'.tr('_NUM_ serial mancanti', [
|
||||
'_NUM_' => $mancanti,
|
||||
]).'</small></b>';
|
||||
}
|
||||
if (!empty($serials)) {
|
||||
echo '
|
||||
<br>'.tr('SN').': '.implode(', ', $serials);
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['qta']).' '.$r['um'].'
|
||||
</td>';
|
||||
|
||||
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['prezzo_acquisto']).' €
|
||||
</td>';
|
||||
}
|
||||
|
||||
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
|
||||
// Prezzo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['prezzo_vendita']).' €';
|
||||
|
||||
if ($r['sconto_unitario'] > 0) {
|
||||
echo '
|
||||
<br><span class="label label-danger">
|
||||
- '.tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'
|
||||
</span>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
<span>'.Translator::numberToLocale($r['iva']).'</span> €';
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<td class="text-right">
|
||||
<span class="prezzo_articolo">'.Translator::numberToLocale(sum($r['prezzo_vendita'] * $r['qta'], -$r['sconto'])).'</span> €
|
||||
</td>';
|
||||
}
|
||||
|
||||
// Pulsante per riportare nel magazzino centrale.
|
||||
// Visibile solo se l'intervento non è stato nè fatturato nè completato.
|
||||
if (!$records[0]['flag_completato']) {
|
||||
echo '
|
||||
<td>';
|
||||
|
||||
if ($r['abilita_serial']) {
|
||||
echo '
|
||||
<button type="button" class="btn btn-info btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica articoli').'\', \''.$rootdir.'/modules/fatture/add_serial.php?id_module='.$id_module.'&id_record='.$id_record.'&idarticolo='.$r['idriga'].'&idriga='.$r['id'].'\', 1);"><i class="fa fa-barcode"></i></button>';
|
||||
}
|
||||
|
||||
echo '
|
||||
|
||||
<button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica articoli').'\', \''.$rootdir.'/modules/interventi/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>
|
||||
</td>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
}
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
function ritorna_al_magazzino( id ){
|
||||
$.post(globals.rootdir + '/modules/interventi/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/interventi/ajax_articoli.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
|
||||
$('#costi').load(globals.rootdir + '/modules/interventi/ajax_costi.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
114
modules/contratti/plugins/ajax_righe.php
Normal file
114
modules/contratti/plugins/ajax_righe.php
Normal file
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../../core.php';
|
||||
|
||||
$query = 'SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC';
|
||||
$rs2 = $dbo->fetchArray($query);
|
||||
|
||||
if (count($rs2) > 0) {
|
||||
echo '
|
||||
<table class="table table-striped table-condensed table-hover table-bordered">
|
||||
<tr>
|
||||
<th>'.tr('Descrizione').'</th>
|
||||
<th width="8%">'.tr('Q.tà').'</th>
|
||||
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
|
||||
|
||||
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
|
||||
echo '
|
||||
<th width="15%">'.tr('Prezzo di vendita').'</th>
|
||||
<th width="10%">'.tr('Iva').'</th>
|
||||
<th width="15%">'.tr('Subtotale').'</th>';
|
||||
}
|
||||
|
||||
if (!$records[0]['flag_completato']) {
|
||||
echo '
|
||||
<th width="80"></th>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
|
||||
foreach ($rs2 as $r) {
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="'.$r['id'].'">
|
||||
'.nl2br($r['descrizione']).'
|
||||
</td>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['qta']).' '.$r['um'].'
|
||||
</td>';
|
||||
|
||||
//Costo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['prezzo_acquisto']).' €
|
||||
</td>';
|
||||
|
||||
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
|
||||
// Prezzo unitario
|
||||
$netto = $r['prezzo_vendita'] - $r['sconto_unitario'];
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['prezzo_vendita']).' €';
|
||||
|
||||
if ($r['sconto_unitario'] > 0) {
|
||||
echo '
|
||||
<br><span class="label label-danger">
|
||||
- '.tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'),
|
||||
]).'
|
||||
</span>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
<span>'.Translator::numberToLocale($r['iva']).'</span> €';
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<td class="text-right">
|
||||
<span class="prezzo_articolo">'.Translator::numberToLocale(sum($r['prezzo_vendita'] * $r['qta'], -$r['sconto'])).'</span> €
|
||||
</td>';
|
||||
}
|
||||
|
||||
// Pulsante per riportare nel magazzino centrale.
|
||||
// Visibile solo se l'intervento non è stato nè fatturato nè completato.
|
||||
if (!$records[0]['flag_completato']) {
|
||||
echo '
|
||||
<td>
|
||||
<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>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
function elimina_riga( id ){
|
||||
$.post(globals.rootdir + '/modules/interventi/actions.php', { op: 'delriga', idriga: id }, function(data, result){
|
||||
if( result=='success' ){
|
||||
//ricarico l'elenco delle righe
|
||||
$('#righe').load( globals.rootdir + '/modules/interventi/ajax_righe.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
|
||||
$('#costi').load(globals.rootdir + '/modules/interventi/ajax_costi.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
@ -255,17 +255,27 @@ if (count($rsp) != 0) {
|
||||
</tbody>
|
||||
</table>';
|
||||
|
||||
echo '<br><div class="pull-right">';
|
||||
|
||||
echo ' <button type="button" title="Aggiungi un nuovo promemoria da pianificare." data-toggle="tooltip" class="btn btn-primary" onclick="launch_modal(\'Nuovo promemoria\', \''.$rootdir.'/modules/contratti/plugins/addpianficazione.php?id_module='.Modules::get('Contratti')['id'].'&id_plugin='.Plugins::get('Pianificazione interventi')['id'].'&ref=interventi_contratti&id_record='.$id_record.'\')">
|
||||
<i class="fa fa-plus"></i> '.tr('Nuovo promemoria').'
|
||||
</button>';
|
||||
|
||||
|
||||
if (count($rsp) > 0) {
|
||||
echo '<br><div class="pull-right"><button type="button" title="Elimina tutti i promemoria per questo contratto che non sono associati ad intervento." class="btn btn-danger ask tip" data-op="delete-promemoria" >
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina promemoria').'
|
||||
</button></div>';
|
||||
echo ' <button type="button" title="Elimina tutti i promemoria per questo contratto che non sono associati ad intervento." class="btn btn-danger ask tip" data-op="delete-promemoria" >
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina promemoria').'
|
||||
</button>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Nuovo intervento
|
||||
*/
|
||||
echo '
|
||||
/*echo '
|
||||
<br><h5>'.tr('Pianifica un nuovo promemoria per un intervento').':</h5>
|
||||
<form action="" method="post">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
@ -302,6 +312,8 @@ echo '
|
||||
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> '.tr('Aggiungi').'</button>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</form>
|
||||
</form>';*/
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
|
@ -70,3 +70,27 @@ INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `direc
|
||||
|
||||
-- Rimosso group by nome banche
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_banche` WHERE 1=1 AND deleted = 0 HAVING 2=2' WHERE `zz_modules`.`name` = 'Banche';
|
||||
|
||||
|
||||
-- impianti per pianificazione contratti
|
||||
ALTER TABLE `co_righe_contratti` ADD `idimpianti` VARCHAR(255) NOT NULL AFTER `idsede`;
|
||||
|
||||
|
||||
-- Struttura della tabella `co_righe_contratti_materiali`
|
||||
CREATE TABLE IF NOT EXISTS `co_righe_contratti_materiali` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`descrizione` varchar(255) NOT NULL,
|
||||
`qta` float(12,4) NOT NULL,
|
||||
`um` varchar(25) NOT NULL,
|
||||
`prezzo_vendita` decimal(12,4) NOT NULL,
|
||||
`prezzo_acquisto` decimal(12,4) NOT NULL,
|
||||
`idiva` int(11) NOT NULL,
|
||||
`desc_iva` varchar(255) NOT NULL,
|
||||
`iva` decimal(12,4) NOT NULL,
|
||||
`id_riga_contratto` int(11) DEFAULT NULL,
|
||||
`sconto` decimal(12,4) NOT NULL,
|
||||
`sconto_unitario` decimal(12,4) NOT NULL,
|
||||
`tipo_sconto` enum('UNT','PRC') NOT NULL DEFAULT 'UNT',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idintervento` (`id_riga_contratto`)
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user