Merge branch 'master' into 2.4.2
This commit is contained in:
commit
1fb3cc43b2
|
@ -325,6 +325,10 @@ if ($read_only || !empty($block_edit)) {
|
|||
$(".btn-success, button[type=submit]").bind("click", function() {
|
||||
content_was_modified = false;
|
||||
});
|
||||
|
||||
$( "form" ).bind( "submit", function() {
|
||||
content_was_modified = false;
|
||||
})
|
||||
|
||||
// questo controllo blocca il modulo vendita al banco, dopo la lettura con barcode, appare il messaggio di conferma
|
||||
window.onbeforeunload = function(e){
|
||||
|
|
|
@ -606,7 +606,7 @@ function start_datatables() {
|
|||
$(win.document.body)
|
||||
.css('font-size', '10pt')
|
||||
.append(
|
||||
'<table class="main-records table table-condensed table-bordered dataTable" ><tfoot><tr><td></td><td class="pull-right" >' + $('#summable').text() + '</td><td></td></tr></tfoot></table>',
|
||||
'<table class="main-records table table-condensed table-bordered dataTable" ><tfoot><tr><td></td><td class="pull-right" >' + $('#summable').text() + '</td><td></td></tr></tfoot></table>'
|
||||
);
|
||||
$(win.document.body).find('table')
|
||||
.addClass('compact')
|
||||
|
|
2
mail.php
2
mail.php
|
@ -158,6 +158,8 @@ echo '
|
|||
$(this).autocomplete("search", $(this).val())
|
||||
});;
|
||||
});
|
||||
|
||||
aggiungi_destinatario();
|
||||
});';
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "required": 0, "value": "$note$" ]}
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,6 +12,16 @@ $op = 'edit-pianifica';
|
|||
$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'];
|
||||
|
||||
//tutti gli impianti a contratto
|
||||
$idimpianti = $dbo->fetchArray('SELECT GROUP_CONCAT(`idimpianto`) AS idimpianti FROM `my_impianti_contratti` WHERE `idcontratto` = '.prepare($id_record))[0]['idimpianti'];
|
||||
|
||||
$idimpianto = explode(',', $idimpianti);
|
||||
//solo se ho selezionato un solo impianto nel contratto, altrimenti non so quale sede e tecnico prendere
|
||||
if (count($idimpianto) < 2) {
|
||||
$idsede = $dbo->fetchArray('SELECT idsede FROM my_impianti WHERE id = '.prepare($idimpianto[0]))[0]['idsede'];
|
||||
$idtecnico = $dbo->fetchArray('SELECT idtecnico FROM my_impianti WHERE id = '.prepare($idimpianto[0]))[0]['idtecnico'];
|
||||
}
|
||||
|
||||
$list = '\"1\":\"'.tr('Pianificare a partire da oggi ').date('d/m/Y').'\"';
|
||||
|
||||
//promemoria esistente
|
||||
|
@ -20,13 +30,20 @@ if (!empty(get('idcontratto_riga'))) {
|
|||
$qp = 'SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_contratti_promemoria.idtipointervento) AS tempo_standard FROM co_contratti_promemoria WHERE id = '.$idcontratto_riga;
|
||||
$rsp = $dbo->fetchArray($qp);
|
||||
|
||||
$data_richiesta = $rsp[0]['data_richiesta'];
|
||||
$matricoleimpianti = trim($rsp[0]['idimpianti']);
|
||||
$data_richiesta = Translator::dateToLocale($rsp[0]['data_richiesta']);
|
||||
|
||||
//sede nel promemoria
|
||||
$idsede = $rsp[0]['idsede'];
|
||||
|
||||
$tempo_standard = $rsp[0]['tempo_standard'];
|
||||
|
||||
//if (!empty($rsp[0]['idtipointervento']))
|
||||
$readonly = 'readonly';
|
||||
$idtipointervento = $rsp[0]['idtipointervento'];
|
||||
|
||||
if (!empty($idsede)) {
|
||||
//if (!empty($rsp[0]['idimpianti']))
|
||||
$idimpianti = trim($rsp[0]['idimpianti']);
|
||||
$readonly = 'readonly';
|
||||
}
|
||||
|
||||
$hide = '';
|
||||
$list .= ', \"0\":\"'.tr('Pianificare a partire da questo promemoria ').$data_richiesta.'\"';
|
||||
|
@ -64,7 +81,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<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.'" ]}
|
||||
{[ "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.'", "ajax-source": "tipiintervento", "value": "'.$idtipointervento.'" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -74,12 +91,12 @@ echo '
|
|||
<div class="row">
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "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>
|
||||
{[ "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.'", "required" : "1" ]}
|
||||
</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>
|
||||
{[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "help": "'.tr('Impianti sede selezionata').'", "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": "'.$idimpianti.'", "extra":"'.$readonly.'" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -113,9 +130,6 @@ echo '
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- SPESE AGGIUNTIVE -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
|
@ -203,16 +217,16 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Tecnici').'", "multiple": "1", "name": "idtecnico[]", "required": 0, "ajax-source": "tecnici", "extra": "disabled" ]}
|
||||
{[ "type": "select", "label": "'.tr('Tecnici').'", "multiple": "1", "name": "idtecnico[]", "ajax-source": "tecnici", "extra": "disabled", "value": "'.$idtecnico.'" ]}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-xs-6 col-md-2">
|
||||
{[ "type": "time", "label": "'.tr('Orario inizio').'", "name": "orario_inizio", "required": 0, "value": "'.$orario_inizio.'", "extra": "disabled" ]}
|
||||
{[ "type": "time", "label": "'.tr('Orario inizio').'", "name": "orario_inizio", "value": "'.$orario_inizio.'", "extra": "disabled" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-6 col-md-2">
|
||||
{[ "type": "time", "label": "'.tr('Orario fine').'", "name": "orario_fine", "required": 0, "value": "'.$orario_fine.'", "extra": "disabled" ]}
|
||||
{[ "type": "time", "label": "'.tr('Orario fine').'", "name": "orario_fine", "value": "'.$orario_fine.'", "extra": "disabled" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -237,12 +251,11 @@ echo '
|
|||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
if ($("#idtipointervento_").val()==""){
|
||||
if (!$("#idtipointervento_").val()){
|
||||
$("#add_form .panel-primary .panel-primary").hide();
|
||||
$("#bs-popup .btn-primary").hide();
|
||||
};
|
||||
|
||||
|
||||
$("#idtipointervento_").change(function(){
|
||||
if (($(this).val()!="")){
|
||||
$("#add_form .panel-primary .panel-primary").show();
|
||||
|
|
|
@ -9,12 +9,19 @@ switch (filter('op')) {
|
|||
case 'add-pianifica':
|
||||
|
||||
$data_richiesta = filter('data_richiesta');
|
||||
$query = 'INSERT INTO `co_contratti_promemoria` ( `idcontratto`, `data_richiesta` ) VALUES ('.prepare($id_record).', '.prepare($data_richiesta).')';
|
||||
$idtipointervento = filter('idtipointervento');
|
||||
$query = 'INSERT INTO `co_contratti_promemoria` ( `idcontratto`, `data_richiesta`, idtipointervento ) VALUES ('.prepare($id_record).', '.prepare($data_richiesta).', '.prepare($idtipointervento).' )';
|
||||
|
||||
if ($dbo->query($query)) {
|
||||
} else {
|
||||
flash()->error(tr("Errore durante l'aggiunta del promemoria!"));
|
||||
}
|
||||
//$are_duplicated = $dbo->fetchNum('SELECT id FROM co_contratti_promemoria WHERE data_richiesta = '.prepare($data_richiesta).' AND idtipointervento = '.prepare($idtipointervento).' AND idcontratto = '.prepare($id_record) );
|
||||
|
||||
//if (empty($are_duplicated)){
|
||||
if ($dbo->query($query)) {
|
||||
} else {
|
||||
flash()->error(tr("Errore durante l'aggiunta del promemoria!"));
|
||||
}
|
||||
//}else{
|
||||
//$_SESSION['warnings'][] = tr('Promemoria non inserito perché esiste già per questa data e per questo tipo intervento.');
|
||||
//}
|
||||
break;
|
||||
|
||||
case 'edit-pianifica':
|
||||
|
@ -77,6 +84,7 @@ switch (filter('op')) {
|
|||
$intervallo = filter('intervallo');
|
||||
$parti_da_oggi = post('parti_da_oggi');
|
||||
|
||||
//if principale
|
||||
if (!empty($idcontratto_riga) && !empty($intervallo)) {
|
||||
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_record.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, '.
|
||||
'(SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM co_contratti_promemoria '.
|
||||
|
@ -105,14 +113,25 @@ switch (filter('op')) {
|
|||
}
|
||||
|
||||
//inizio controllo data_conclusione, data valida e maggiore della $min_date
|
||||
if ((date('Y', strtotime($data_conclusione)) > 1970) && (date('Y-m-d', strtotime($min_date)) < date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
if ((date('Y', strtotime($data_conclusione)) > 1970) && (date('Y-m-d', strtotime($min_date)) <= date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
//$_SESSION['errors'][] = '1';
|
||||
|
||||
$i = 0;
|
||||
//Ciclo partendo dalla data_richiesta fino all data conclusione del contratto
|
||||
while (date('Y-m-d', strtotime($data_richiesta)) < date('Y-m-d', strtotime($data_conclusione))) {
|
||||
//calcolo nuova data richiesta
|
||||
$data_richiesta = date('Y-m-d', strtotime($data_richiesta.' + '.intval($intervallo).' days'));
|
||||
while (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione))) {
|
||||
//$_SESSION['errors'][] = '2';
|
||||
|
||||
//calcolo nuova data richiesta, non considero l'intervallo al primo ciclo
|
||||
$data_richiesta = date('Y-m-d', strtotime($data_richiesta.' + '.(($i == 0) ? 0 : $intervallo).' days'));
|
||||
++$i;
|
||||
|
||||
//$_SESSION['errors'][] = 'data_richiesta: '.date('Y-m-d', strtotime($data_richiesta));
|
||||
//$_SESSION['errors'][] = 'data_conclusione: '.date('Y-m-d', strtotime($data_conclusione));
|
||||
//$_SESSION['errors'][] = 'min_date: '.$min_date;
|
||||
|
||||
//controllo nuova data richiesta --> solo date maggiori o uguali di [oggi o data richiesta iniziale] ma che non superano la data di fine del contratto
|
||||
if ((date('Y-m-d', strtotime($data_richiesta)) >= $min_date) && (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
//$_SESSION['errors'][] = '3';
|
||||
//Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta.
|
||||
if (count($dbo->fetchArray("SELECT id FROM co_contratti_promemoria WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_record."' ")) == 0) {
|
||||
//inserisco il nuovo promemoria
|
||||
|
@ -128,102 +147,111 @@ switch (filter('op')) {
|
|||
$dbo->query('INSERT INTO co_righe_contratti_articoli (idarticolo, id_riga_contratto,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idriga.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
||||
|
||||
flash()->info(tr('Promemoria intervento pianificato!'));
|
||||
|
||||
//pianificare anche l' intervento?
|
||||
if (post('pianifica_intervento')) {
|
||||
/*$orario_inizio = post('orario_inizio');
|
||||
$orario_fine = post('orario_fine');*/
|
||||
|
||||
//$idanagrafica = 2;
|
||||
|
||||
//intervento sempre nello stato "In programmazione"
|
||||
$idstatointervento = 'WIP';
|
||||
|
||||
//calcolo codice intervento
|
||||
$formato = setting('Formato codice intervento');
|
||||
$template = str_replace('#', '%', $formato);
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
||||
if (!empty($rs[0]['codice'])) {
|
||||
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
|
||||
}
|
||||
|
||||
if (empty($codice)) {
|
||||
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
||||
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
|
||||
}
|
||||
|
||||
// Creo intervento
|
||||
$dbo->insert('in_interventi', [
|
||||
'idanagrafica' => $idanagrafica,
|
||||
'idclientefinale' => post('idclientefinale') ?: 0,
|
||||
'idstatointervento' => $idstatointervento,
|
||||
'idtipointervento' => $idtipointervento,
|
||||
'idsede' => $idsede ?: 0,
|
||||
'idautomezzo' => $idautomezzo ?: 0,
|
||||
|
||||
'codice' => $codice,
|
||||
'data_richiesta' => $data_richiesta,
|
||||
'richiesta' => $richiesta,
|
||||
]);
|
||||
|
||||
$idintervento = $dbo->lastInsertedID();
|
||||
|
||||
$idtecnici = post('idtecnico');
|
||||
|
||||
//aggiungo i tecnici
|
||||
foreach ($idtecnici as $idtecnico) {
|
||||
add_tecnico($idintervento, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine'), $id_record);
|
||||
}
|
||||
|
||||
//collego l'intervento ai promemoria
|
||||
$dbo->query('UPDATE co_contratti_promemoria SET idintervento='.prepare($idintervento).' WHERE id='.prepare($idriga));
|
||||
|
||||
//copio le righe dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$idintervento.',sconto,sconto_unitario,tipo_sconto FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
||||
|
||||
//copio gli articoli dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
||||
|
||||
//copio gli allegati dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO zz_files (nome,filename,original,category,id_module,id_record) SELECT t.nome, t.filename, t.original, t.category, '.Modules::get('Interventi')['id'].', '.$idintervento.' FROM zz_files t WHERE t.id_record = '.$idcontratto_riga.' AND t.id_plugin = '.$id_plugin.'');
|
||||
|
||||
// Decremento la quantità per ogni articolo copiato
|
||||
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$idintervento.' ');
|
||||
foreach ($rs_articoli as $rs_articolo) {
|
||||
add_movimento_magazzino($rs_articolo['idarticolo'], -force_decimal($rs_articolo['qta']), ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $idintervento]);
|
||||
}
|
||||
|
||||
// Collego gli impianti del promemoria all' intervento appena inserito
|
||||
if (!empty($idimpianti)) {
|
||||
$rs_idimpianti = explode(',', $idimpianti);
|
||||
foreach ($rs_idimpianti as $idimpianto) {
|
||||
$dbo->query('INSERT INTO my_impianti_interventi (idintervento, idimpianto) VALUES ('.$idintervento.', '.prepare($idimpianto).' )');
|
||||
}
|
||||
}
|
||||
|
||||
// flash()->info(tr('Intervento '.$codice.' pianificato correttamente.'));
|
||||
|
||||
flash()->info(tr('Interventi pianificati correttamente.'));
|
||||
}
|
||||
//fine if pianificazione intervento
|
||||
} else {
|
||||
flash()->error(tr('Errore durante esecuzione query di pianificazione. #'.$idcontratto_riga));
|
||||
}
|
||||
} else {
|
||||
flash()->warning(tr('Esiste già un promemoria pianificato per il '.Translator::dateToLocale($data_richiesta).'.'));
|
||||
}
|
||||
|
||||
//Controllo che non esista già un intervento collegato a questo promemoria e, se ho spuntato di creare l'intervento, creo già anche quello
|
||||
if ((empty($dbo->fetchArray("SELECT idintervento FROM co_contratti_promemoria WHERE id = '".((empty($idriga)) ? $idcontratto_riga : $idriga)."'")[0]['idintervento'])) && (post('pianifica_intervento'))) {
|
||||
//pianificare anche l' intervento?
|
||||
//if (post('pianifica_intervento')) {
|
||||
/*$orario_inizio = post('orario_inizio');
|
||||
$orario_fine = post('orario_fine');*/
|
||||
|
||||
//$idanagrafica = 2;
|
||||
|
||||
//intervento sempre nello stato "In programmazione"
|
||||
$idstatointervento = 'WIP';
|
||||
|
||||
//calcolo codice intervento
|
||||
$formato = get_var('Formato codice intervento');
|
||||
$template = str_replace('#', '%', $formato);
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
||||
if (!empty($rs[0]['codice'])) {
|
||||
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
|
||||
}
|
||||
|
||||
if (empty($codice)) {
|
||||
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
||||
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
|
||||
}
|
||||
|
||||
// Creo intervento
|
||||
$dbo->insert('in_interventi', [
|
||||
'idanagrafica' => $idanagrafica,
|
||||
'idclientefinale' => post('idclientefinale') ?: 0,
|
||||
'idstatointervento' => $idstatointervento,
|
||||
'idtipointervento' => $idtipointervento,
|
||||
'idsede' => $idsede ?: 0,
|
||||
'idautomezzo' => $idautomezzo ?: 0,
|
||||
|
||||
'codice' => $codice,
|
||||
'data_richiesta' => $data_richiesta,
|
||||
'richiesta' => $richiesta,
|
||||
]);
|
||||
|
||||
$idintervento = $dbo->lastInsertedID();
|
||||
|
||||
$idtecnici = post('idtecnico');
|
||||
|
||||
//aggiungo i tecnici
|
||||
foreach ($idtecnici as $idtecnico) {
|
||||
add_tecnico($idintervento, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine'), $id_record);
|
||||
}
|
||||
|
||||
//collego l'intervento ai promemoria
|
||||
$dbo->query('UPDATE co_contratti_promemoria SET idintervento='.prepare($idintervento).' WHERE id='.prepare(((empty($idriga)) ? $idcontratto_riga : $idriga)));
|
||||
|
||||
//copio le righe dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$idintervento.',sconto,sconto_unitario,tipo_sconto FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
||||
|
||||
//copio gli articoli dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.$idcontratto_riga.' ');
|
||||
|
||||
//copio gli allegati dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO zz_files (nome,filename,original,category,id_module,id_record) SELECT t.nome, t.filename, t.original, t.category, '.Modules::get('Interventi')['id'].', '.$idintervento.' FROM zz_files t WHERE t.id_record = '.$idcontratto_riga.' AND t.id_plugin = '.$id_plugin.'');
|
||||
|
||||
// Decremento la quantità per ogni articolo copiato
|
||||
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$idintervento.' ');
|
||||
foreach ($rs_articoli as $rs_articolo) {
|
||||
add_movimento_magazzino($rs_articolo['idarticolo'], -force_decimal($rs_articolo['qta']), ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $idintervento]);
|
||||
}
|
||||
|
||||
// Collego gli impianti del promemoria all' intervento appena inserito
|
||||
if (!empty($idimpianti)) {
|
||||
$rs_idimpianti = explode(',', $idimpianti);
|
||||
foreach ($rs_idimpianti as $idimpianto) {
|
||||
$dbo->query('INSERT INTO my_impianti_interventi (idintervento, idimpianto) VALUES ('.$idintervento.', '.prepare($idimpianto).' )');
|
||||
}
|
||||
}
|
||||
|
||||
// $_SESSION['infos'][] = tr('Intervento '.$codice.' pianificato correttamente.');
|
||||
|
||||
flash()->info(tr('Interventi pianificati correttamente'));
|
||||
//fine if pianificazione intervento
|
||||
|
||||
//}
|
||||
} elseif (post('pianifica_intervento')) {
|
||||
flash()->warning(tr('Esiste già un intervento pianificato per il '.Translator::dateToLocale($data_richiesta).'.'));
|
||||
}
|
||||
}
|
||||
//fine controllo nuova data richiesta
|
||||
|
||||
/*}else {
|
||||
$_SESSION['errors'][] = tr('Errore durante esecuzione query di pianificazione. #'.$idcontratto_riga);
|
||||
}*/
|
||||
}
|
||||
//fine ciclo while
|
||||
} else {
|
||||
flash()->error(tr('Nessuna data di conclusione del contratto oppure quest\'ultima è già trascorsa, impossibile pianificare nuovi promemoria.'.$qp));
|
||||
flash()->error(tr('Nessuna data di conclusione del contratto oppure quest\'ultima è già trascorsa, impossibile pianificare nuovi promemoria'));
|
||||
}
|
||||
//fine controllo data_conclusione
|
||||
} else {
|
||||
flash()->error(tr('Errore durante la pianificazione. #'.$idcontratto_riga));
|
||||
}
|
||||
//fine if principale
|
||||
|
||||
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin);
|
||||
break;
|
||||
|
@ -233,15 +261,18 @@ switch (filter('op')) {
|
|||
$qp = 'SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM co_contratti_promemoria WHERE idcontratto='.prepare($id_record).' ORDER BY data_richiesta ASC';
|
||||
$rsp = $dbo->fetchArray($qp);
|
||||
|
||||
//intervento/promemoria pianificabile
|
||||
$pianificabile = $dbo->fetchNum('SELECT id FROM co_staticontratti WHERE pianificabile = 1 AND descrizione = '.prepare($record['stato']));
|
||||
|
||||
$stati_pianificabili = $dbo->fetchArray('SELECT GROUP_CONCAT(`descrizione`) AS stati_pianificabili FROM `co_staticontratti` WHERE `pianificabile` = 1')[0]['stati_pianificabili'];
|
||||
|
||||
echo '
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><span class="tip" title="'.tr('I promemoria verranno visualizzati sulla \'Dashboard\' e serviranno per semplificare la pianificazione del giorno dell\'intervento, ad esempio nel caso di interventi con cadenza mensile.').'"" >'.tr('Pianificazione interventi').' <i class="fa fa-question-circle-o"></i></span> </h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria il contratto deve essere <b>attivo</b> e la <b>data di conclusione</b> definita').'.</p>';
|
||||
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria il contratto deve essere in uno dei seguenti stati: <b>'.$stati_pianificabili.'</b> e la <b>data di conclusione</b> definita').'.</p>';
|
||||
|
||||
// Nessun intervento pianificato
|
||||
if (count($rsp) != 0) {
|
||||
|
@ -286,9 +317,11 @@ if (count($rsp) != 0) {
|
|||
]));
|
||||
|
||||
$disabled = 'disabled';
|
||||
$title = 'Per eliminare il promemoria, eliminare prima l\'intervento associato.';
|
||||
} else {
|
||||
$info_intervento = '- '.('Nessuno').' -';
|
||||
$disabled = '';
|
||||
$title = 'Elimina promemoria...';
|
||||
}
|
||||
|
||||
//data_conclusione contratto
|
||||
|
@ -352,13 +385,13 @@ if (count($rsp) != 0) {
|
|||
<td align="right">';
|
||||
|
||||
echo '
|
||||
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$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.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.((!empty($pianificabile) && strtotime($record['data_conclusione'])) ? '' : ' disabled').'><i class="fa fa-clock-o"></i></button>';
|
||||
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$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.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.((!empty($pianificabile) && strtotime($record['data_conclusione'])) ? '' : ' disabled').'><i class="fa fa-clock-o"></i></button>';
|
||||
|
||||
echo '
|
||||
<button type="button" '.$disabled.' class="btn btn-primary btn-sm '.$disabled.' " title="Pianifica intervento ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.(!empty($pianificabile) ? '' : ' disabled').'><i class="fa fa-calendar"></i></button>';
|
||||
|
||||
echo '
|
||||
<button type="button" '.$disabled.' title="Elimina promemoria..." class="btn btn-danger btn-sm ask '.$disabled.' " data-op="depianifica" data-id="'.$rsp[$i]['id'].'">
|
||||
<button type="button" '.$disabled.' title="'.$title.'" class="btn btn-danger btn-sm ask '.$disabled.' " data-op="depianifica" data-id="'.$rsp[$i]['id'].'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>';
|
||||
|
||||
|
@ -373,7 +406,7 @@ if (count($rsp) != 0) {
|
|||
echo '<br><div class="pull-right">';
|
||||
|
||||
if (count($rsp) > 0) {
|
||||
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" >
|
||||
echo ' <button type="button" title="Elimina tutti i promemoria non associati ad intervento." class="btn btn-danger ask tip" data-op="delete-promemoria" >
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina promemoria').'
|
||||
</button>';
|
||||
}
|
||||
|
@ -431,36 +464,68 @@ echo '
|
|||
</div>
|
||||
</div>';
|
||||
|
||||
$inputOptions = $dbo->fetchArray('SELECT GROUP_CONCAT(CONCAT(\'"\', idtipointervento, \'"\',\':\', \'"\', descrizione, \'"\')) AS inputOptions FROM `in_tipiintervento`')[0]['inputOptions'];
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function askTipoIntervento () {
|
||||
|
||||
swal({
|
||||
|
||||
title: '<?php echo tr('Aggiungere un nuovo promemoria?'); ?>',
|
||||
type: "info",
|
||||
showCancelButton: true,
|
||||
confirmButtonText: '<?php echo tr('Aggiungi'); ?>',
|
||||
confirmButtonClass: 'btn btn-lg btn-success',
|
||||
input: 'select',
|
||||
inputOptions: {<?php echo $inputOptions; ?>},
|
||||
inputPlaceholder: '<?php echo tr('Tipo intervento'); ?>',
|
||||
inputValidator: (value) => {
|
||||
return new Promise((resolve) => {
|
||||
if (value === '') {
|
||||
|
||||
alert ('Seleziona un tipo intervento');
|
||||
$('.swal2-select').attr('disabled', false);
|
||||
$('.swal2-confirm').attr('disabled', false);
|
||||
$('.swal2-cancel').attr('disabled', false);
|
||||
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
}).then(
|
||||
function (result) {
|
||||
prev_html = $("#add_promemoria").html();
|
||||
$("#add_promemoria").html("<i class='fa fa-spinner fa-pulse fa-fw'></i> <?php echo tr('Attendere...'); ?>");
|
||||
$("#add_promemoria").prop('disabled', true);
|
||||
|
||||
$.post( "<?php echo $rootdir; ?>/editor.php?id_module=<?php echo Modules::get('Contratti')['id']; ?>&id_record=<?php echo $id_record; ?>", { backto: "record-edit", op: "add-pianifica", data_richiesta: '<?php echo date('Y-m-d'); ?>', idtipointervento: $('.swal2-select').val() })
|
||||
.done(function( data ) {
|
||||
|
||||
launch_modal('Nuovo promemoria', '<?php echo $rootdir; ?>/modules/contratti/plugins/addpianficazione.php?id_module=<?php echo Modules::get('Contratti')['id']; ?>&id_plugin=<?php echo Plugins::get('Pianificazione interventi')['id']; ?>&ref=interventi_contratti&id_record=<?php echo $id_record; ?>&idcontratto_riga='+data+'', 1, '#bs-popup');
|
||||
|
||||
$("#add_promemoria").html(prev_html);
|
||||
$("#add_promemoria").prop('disabled', false);
|
||||
|
||||
});
|
||||
},
|
||||
function (dismiss) {}
|
||||
);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
$( "#add_promemoria" ).click(function() {
|
||||
|
||||
swal({
|
||||
title: '<?php echo tr('Aggiungere un nuovo promemoria?'); ?>',
|
||||
type: "info",
|
||||
showCancelButton: true,
|
||||
confirmButtonText: '<?php echo tr('Aggiungi'); ?>',
|
||||
confirmButtonClass: 'btn btn-lg btn-success',
|
||||
}).then(
|
||||
function (result) {
|
||||
prev_html = $("#add_promemoria").html();
|
||||
$("#add_promemoria").html("<i class='fa fa-spinner fa-pulse fa-fw'></i> <?php echo tr('Attendere...'); ?>");
|
||||
$("#add_promemoria").prop('disabled', true);
|
||||
|
||||
$.post( "<?php echo $rootdir; ?>/editor.php?id_module=<?php echo Modules::get('Contratti')['id']; ?>&id_record=<?php echo $id_record; ?>", { backto: "record-edit", op: "add-pianifica", data_richiesta: '<?php echo date('Y-m-d'); ?>' })
|
||||
.done(function( data ) {
|
||||
launch_modal('Nuovo promemoria', '<?php echo $rootdir; ?>/modules/contratti/plugins/addpianficazione.php?id_module=<?php echo Modules::get('Contratti')['id']; ?>&id_plugin=<?php echo Plugins::get('Pianificazione interventi')['id']; ?>&ref=interventi_contratti&id_record=<?php echo $id_record; ?>', 1, '#bs-popup');
|
||||
|
||||
$("#add_promemoria").html(prev_html);
|
||||
$("#add_promemoria").prop('disabled', false);
|
||||
|
||||
});
|
||||
},
|
||||
function (dismiss) {}
|
||||
);
|
||||
|
||||
askTipoIntervento();
|
||||
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -60,7 +60,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "checkbox", "label": "'.tr('Copia descrizione').'", "name": "copia_descrizione", "required": 0, "placeholder": "'.tr('In fase di selezione copia la descrizione dell\'intervento').'." ]}
|
||||
{[ "type": "checkbox", "label": "'.tr('Copia descrizione').'", "name": "copia_descrizione", "placeholder": "'.tr('In fase di selezione copia la descrizione dell\'intervento').'." ]}
|
||||
</div>
|
||||
|
||||
</div>';
|
||||
|
|
|
@ -147,7 +147,7 @@ if ($dir == 'entrata') {
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Banca'); ?>", "name": "idbanca", "required": 0, "values": "query=SELECT id, CONCAT (nome, ' - ' , iban) AS descrizione FROM co_banche WHERE deleted_at IS NULL ORDER BY nome ASC", "value": "$idbanca$" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Banca'); ?>", "name": "idbanca", "values": "query=SELECT id, CONCAT (nome, ' - ' , iban) AS descrizione FROM co_banche WHERE deleted_at IS NULL ORDER BY nome ASC", "value": "$idbanca$" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -306,7 +306,7 @@ if ($record['stato'] != 'Pagato' && $record['stato'] != 'Emessa') {
|
|||
}
|
||||
|
||||
// Lettura ddt
|
||||
$ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)';
|
||||
$ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($record['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)';
|
||||
$ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
|
||||
echo '
|
||||
<a class="btn btn-sm btn-primary'.(!empty($ddt) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_ddt.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="tooltip" data-title="Aggiungi ddt" data-target="#bs-popup">
|
||||
|
|
|
@ -90,6 +90,9 @@ elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
|
|||
$idimpianto = implode(',', array_column($rs, 'idimpianto'));
|
||||
} else {
|
||||
$idimpianto = $idimpianti;
|
||||
// Spunto il tecnico di default assegnato all'impianto
|
||||
$rs = $dbo->fetchArray('SELECT idtecnico FROM my_impianti WHERE id='.prepare($idimpianto));
|
||||
$idtecnico = $rs[0]['idtecnico'] ?: '';
|
||||
}
|
||||
|
||||
// Seleziono "In programmazione" come stato
|
||||
|
@ -185,7 +188,7 @@ if (empty($new_codice)) {
|
|||
<!-- RIGA 3 -->
|
||||
<div class="row">
|
||||
<!--div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice intervento'); ?>", "name": "codice", "required": 1, "class": "text-center", "value": "<?php echo $new_codice; ?>" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('Codice attività'); ?>", "name": "codice", "required": 1, "class": "text-center", "value": "<?php echo $new_codice; ?>" ]}
|
||||
</div-->
|
||||
|
||||
<div class="col-md-4">
|
||||
|
@ -193,7 +196,7 @@ if (empty($new_codice)) {
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data intervento'); ?>", "name": "data", "required": <?php echo get('ref') ? 1 : 0; ?>, "value": "<?php echo $data; ?>" ]}
|
||||
{[ "type": "date", "label": "<?php echo tr('Data attività'); ?>", "name": "data", "required": <?php echo get('ref') ? 1 : 0; ?>, "value": "<?php echo $data; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
|
@ -204,11 +207,11 @@ if (empty($new_codice)) {
|
|||
<!-- RIGA 4 -->
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo intervento'); ?>", "name": "idtipointervento", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "<?php echo $idtipointervento; ?>", "ajax-source": "tipiintervento" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo attività'); ?>", "name": "idtipointervento", "required": 1, "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "<?php echo $idtipointervento; ?>", "ajax-source": "tipiintervento" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato intervento'); ?>", "name": "idstatointervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL", "value": "<?php echo $idstatointervento; ?>" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Stato'); ?>", "name": "idstatointervento", "required": 1, "values": "query=SELECT idstatointervento AS id, descrizione, colore AS _bgcolor_ FROM in_statiintervento WHERE deleted_at IS NULL", "value": "<?php echo $idstatointervento; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
//unset($_SESSION['superselect']['idanagrafica']);
|
||||
//unset($_SESSION['superselect']['idsede']);
|
||||
|
||||
|
||||
$source = get('source');
|
||||
$idanagrafica = null;
|
||||
|
||||
|
@ -23,11 +27,15 @@ if ($source == 'Attività') {
|
|||
{[ "type": "text", "label": "<?php echo tr('Nome'); ?>", "name": "nome", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "<?php echo $idanagrafica; ?>", "ajax-source": "clienti" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Sede'); ?>", "name": "idsede", "values": "query=SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='$idanagrafica$'", "value": "$idsede$", "required": "1", "ajax-source": "sedi" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Tecnico'); ?>", "name": "idtecnico", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Tecnico' AND deleted_at IS NULL ORDER BY ragione_sociale" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -39,3 +47,25 @@ if ($source == 'Attività') {
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
|
||||
$('#idanagrafica').change( function(){
|
||||
|
||||
session_set('superselect,idanagrafica', $(this).val(), 0);
|
||||
|
||||
var value = !$(this).val() ? true : false;
|
||||
|
||||
$("#idsede").prop("disabled", value);
|
||||
$("#idsede").selectReset();
|
||||
|
||||
});
|
||||
|
||||
$('#idsede').change( function(){
|
||||
//session_set('superselect,idsede', $(this).val(), 0);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
|
@ -25,7 +25,8 @@ switch ($resource) {
|
|||
}
|
||||
|
||||
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
|
||||
$where[] = 'idsede='.prepare($superselect['idsede']);
|
||||
if (!empty($superselect['idsede']))
|
||||
$where[] = 'idsede='.prepare($superselect['idsede']);
|
||||
|
||||
if (!empty($search)) {
|
||||
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
//unset($_SESSION['superselect']['idanagrafica']);
|
||||
//unset($_SESSION['superselect']['idsede']);
|
||||
|
||||
|
||||
$img = null;
|
||||
if (!empty($record['immagine'])) {
|
||||
$fileinfo = Uploads::fileInfo($record['immagine']);
|
||||
|
@ -40,7 +44,7 @@ if (!empty($record['immagine'])) {
|
|||
<div class="clearfix"></div>
|
||||
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "onchange=\"load_preventivi( this.value ); load_contratti( this.value ); $('#idsede').load( '<?php echo $rootdir; ?>/ajax_complete.php?module=Anagrafiche&op=get_sedi_select&idanagrafica='+$('#idanagrafica option:selected').val() ); load_impianti( $('#idanagrafica option:selected').val(), $('#idsede option:selected').val() );\"", "ajax-source": "clienti" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Cliente'); ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "", "ajax-source": "clienti" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -56,7 +60,7 @@ if (!empty($record['immagine'])) {
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "<?php echo tr('Sede'); ?>", "name": "idsede", "values": "query=SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='$idanagrafica$'", "value": "$idsede$" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Sede'); ?>", "name": "idsede", "values": "query=SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='$idanagrafica$'", "value": "$idsede$", "required": "1", "ajax-source": "sedi" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -110,3 +114,25 @@ if (!empty($record['immagine'])) {
|
|||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||
</a>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
|
||||
$('#idanagrafica').change( function(){
|
||||
|
||||
session_set('superselect,idanagrafica', $(this).val(), 0);
|
||||
|
||||
var value = !$(this).val() ? true : false;
|
||||
|
||||
$("#idsede").prop("disabled", value);
|
||||
$("#idsede").selectReset();
|
||||
|
||||
});
|
||||
|
||||
$('#idsede').change( function(){
|
||||
//session_set('superselect,idsede', $(this).val(), 0);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (!in_array($record['stato'], ['Bozza', 'Evaso', 'Fatturato'])) {
|
||||
if (!in_array($record['stato'], ['Evaso', 'Fatturato'])) {
|
||||
echo '
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-info dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
||||
|
@ -11,16 +11,16 @@ if (!in_array($record['stato'], ['Bozza', 'Evaso', 'Fatturato'])) {
|
|||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-right">';
|
||||
|
||||
if (in_array($records[0]['stato'], ['Parzialmente evaso'])) {
|
||||
echo '
|
||||
if (in_array($record['stato'], ['Bozza', 'Parzialmente evaso'])){
|
||||
echo '
|
||||
<li>
|
||||
<a data-href="'.$rootdir.'/modules/fatture/crea_documento.php?id_module='.$id_module.'&id_record='.$id_record.'&documento=ddt" data-toggle="modal" data-title="'.tr('Crea ddt').'" data-target="#bs-popup"><i class="fa fa-file-o"></i> '.tr('ddt').'
|
||||
</a>
|
||||
</li>';
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array($records[0]['stato'], ['Parzialmente fatturato'])) {
|
||||
echo '
|
||||
if (in_array($record['stato'], ['Bozza', 'Parzialmente fatturato'])){
|
||||
echo '
|
||||
<li>
|
||||
<a data-href="'.$rootdir.'/modules/fatture/crea_documento.php?id_module='.$id_module.'&id_record='.$id_record.'&documento=fattura" data-toggle="modal" data-title="'.tr('Crea fattura').'" data-target="#bs-popup"><i class="fa fa-file"></i> '.tr('fattura').'
|
||||
</a>
|
||||
|
|
|
@ -118,7 +118,7 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "<?php echo tr('Modello primanota'); ?>", "id": "modello_primanota", "required": 0, "values": "query=SELECT idmastrino AS id, descrizione FROM co_movimenti_modelli GROUP BY idmastrino" ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Modello primanota'); ?>", "id": "modello_primanota", "values": "query=SELECT idmastrino AS id, descrizione FROM co_movimenti_modelli GROUP BY idmastrino" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "required": 0, "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/yy" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/yy" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -31,7 +31,7 @@ include_once __DIR__.'/../../core.php';
|
|||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "Note", "name": "note", "required": 0 ]}
|
||||
{[ "type": "textarea", "label": "Note", "name": "note" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -47,7 +47,7 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "required": 0, "value": "$note$" ]}
|
||||
{[ "type": "textarea", "label": "<?php echo tr('Note'); ?>", "name": "note", "value": "$note$" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -71,7 +71,7 @@ if (strpos($table[0], 'co_documenti') !== false) {
|
|||
?>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "required": 0, "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YY", "extra": "<?php echo ($tot > 0) ? 'readonly' : ''; ?>" ]}
|
||||
{[ "type": "text", "label": "<?php echo tr('Maschera'); ?>", "name": "pattern", "class": "alphanumeric-mask", "value": "$pattern$", "maxlength": 25, "placeholder":"####/YY", "extra": "<?php echo ($tot > 0) ? 'readonly' : ''; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "text", "label": "'.tr('Indirizzo').'", "name": "indirizzo", "required": 1 ]}
|
||||
{[ "type": "text", "label": "'.tr('Indirizzo').'", "name": "indirizzo", "required": 0 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
|
@ -24,7 +24,7 @@ echo '
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "text", "label": "'.tr('Città').'", "name": "citta" ]}
|
||||
{[ "type": "text", "label": "'.tr('Città').'", "name": "citta", "required": 1 ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
|
|
|
@ -48,7 +48,7 @@ echo "
|
|||
|
||||
// RIGHE FATTURA CON ORDINAMENTO UNICO
|
||||
$righe = $dbo->fetchArray("SELECT *,
|
||||
IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `co_righe_documenti`.`idarticolo`), '') AS codice_articolo,
|
||||
IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `co_righe_documenti`.`idarticolo`), '') AS codice_articolo,
|
||||
(SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_documento` = `co_righe_documenti`.`id`) AS seriali,
|
||||
(SELECT `percentuale` FROM `co_iva` WHERE `id` = `co_righe_documenti`.`idiva`) AS perc_iva
|
||||
FROM `co_righe_documenti` WHERE `iddocumento` = ".prepare($id_record).' ORDER BY `order`');
|
||||
|
@ -59,10 +59,16 @@ foreach ($righe as $r) {
|
|||
|
||||
// Valori assoluti
|
||||
$r['qta'] = abs($r['qta']);
|
||||
$r['subtotale'] = abs($r['subtotale']);
|
||||
if (empty($r['sconto_globale']))
|
||||
$r['subtotale'] = abs($r['subtotale']);
|
||||
else
|
||||
$r['subtotale'] = ($r['subtotale']);
|
||||
$r['sconto_unitario'] = abs($r['sconto_unitario']);
|
||||
$r['sconto'] = abs($r['sconto']);
|
||||
$r['iva'] = abs($r['iva']);
|
||||
if (empty($r['sconto_globale']))
|
||||
$r['iva'] = abs($r['iva']);
|
||||
else
|
||||
$r['iva'] = ($r['iva']);
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
|
@ -135,8 +141,8 @@ foreach ($righe as $r) {
|
|||
echo "
|
||||
<td class='text-right'>";
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
'.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €';
|
||||
echo '
|
||||
'.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
echo "
|
||||
|
@ -158,8 +164,8 @@ foreach ($righe as $r) {
|
|||
echo "
|
||||
<td class='text-right'>";
|
||||
if (empty($r['is_descrizione'])) {
|
||||
echo '
|
||||
'.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] - $r['sconto'])).' €';
|
||||
echo '
|
||||
'.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] - $r['sconto'])).' €';
|
||||
|
||||
if ($r['sconto'] > 0) {
|
||||
/*echo "
|
||||
|
@ -188,11 +194,6 @@ foreach ($righe as $r) {
|
|||
</tr>';
|
||||
|
||||
$autofill['count'] += $count;
|
||||
|
||||
$imponibile[] = $r['subtotale'];
|
||||
$iva[] = $r['iva'];
|
||||
$sconto[] = $r['sconto'];
|
||||
|
||||
$v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $r['iva']);
|
||||
$v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], [
|
||||
$r['subtotale'], -$r['sconto'],
|
||||
|
@ -272,9 +273,32 @@ echo '
|
|||
echo '
|
||||
</table>';
|
||||
|
||||
// Info per il footer
|
||||
$imponibile = sum($imponibile);
|
||||
$iva = sum($iva, 0) + $records[0]['iva_rivalsainps'];
|
||||
$sconto = sum($sconto);
|
||||
|
||||
$totale = $imponibile + $iva - $sconto + $records[0]['rivalsainps'];
|
||||
// Calcoli
|
||||
$imponibile = sum(array_column($righe, 'subtotale'));
|
||||
$sconto = sum(array_column($righe, 'sconto'));
|
||||
$iva = sum(array_column($righe, 'iva'));
|
||||
|
||||
$imponibile_scontato = sum($imponibile, -$sconto);
|
||||
|
||||
$totale_iva = sum($iva, $records[0]['iva_rivalsainps']);
|
||||
|
||||
$totale = sum([
|
||||
$imponibile_scontato,
|
||||
$records[0]['rivalsainps'],
|
||||
$totale_iva,
|
||||
]);
|
||||
|
||||
$netto_a_pagare = sum([
|
||||
$totale,
|
||||
$records[0]['bollo'],
|
||||
-$records[0]['ritenutaacconto'],
|
||||
]);
|
||||
|
||||
$imponibile = abs($imponibile);
|
||||
$sconto = abs($sconto);
|
||||
$iva = abs($iva);
|
||||
$imponibile_scontato = abs($imponibile_scontato);
|
||||
$totale_iva = abs($totale_iva);
|
||||
$totale = abs($totale);
|
||||
$netto_a_pagare = abs($netto_a_pagare);
|
||||
|
|
|
@ -149,7 +149,7 @@ if (!empty($sconto)) {
|
|||
|
||||
echo "
|
||||
<td class='cell-padded text-center'>
|
||||
".Translator::numberToLocale($iva)." €
|
||||
".Translator::numberToLocale($totale_iva)." €
|
||||
</td>
|
||||
|
||||
<td class='cell-padded text-center'>
|
||||
|
|
|
@ -464,3 +464,13 @@ UPDATE `zz_views` SET `enabled` = 0 WHERE `id_module` = (SELECT `id` FROM `zz_mo
|
|||
|
||||
-- Aggiunta campi per specificare se la riga importata è un import unico di pù righe
|
||||
ALTER TABLE `co_righe_documenti` ADD `is_preventivo` TINYINT(1) NOT NULL AFTER `is_descrizione`, ADD `is_contratto` TINYINT(1) NOT NULL AFTER `is_preventivo`;
|
||||
|
||||
-- Aggiunta colonna 'Sede' per MyImpianti
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `enabled`, `summable`, `default` ) VALUES
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'MyImpianti'), 'Sede', 'IF(my_impianti.idsede = 0, \'Sede legale\', (SELECT CONCAT_WS( '' - '', nomesede, citta ) AS descrizione FROM an_sedi WHERE id = my_impianti.idsede))', 4, 1, 0, 0, '', '', 0, 0, 0);
|
||||
|
||||
-- Aggiunta colonna 'Tempo standard' per Tipi di intervento
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `enabled`, `summable`, `default` ) VALUES
|
||||
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Tipi di intervento'), 'Tempo standard', 'in_tipiintervento.tempo_standard', 10, 1, 0, 1, '', '', 0, 0, 0);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue