2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
2018-06-26 09:41:43 +02:00
include_once Modules :: filepath ( 'Fatture di vendita' , 'modutil.php' );
2017-09-11 11:28:39 +02:00
2017-08-04 16:28:16 +02:00
switch ( post ( 'op' )) {
case 'add' :
$idanagrafica = post ( 'idanagrafica' );
$nome = post ( 'nome' );
// Verifico se c'è già un agente collegato all'anagrafica cliente, così lo imposto già
$q = 'SELECT idagente FROM an_anagrafiche WHERE idanagrafica=' . prepare ( $idanagrafica );
$rs = $dbo -> fetchArray ( $q );
$idagente = $rs [ 0 ][ 'idagente' ];
// Codice contratto: calcolo il successivo in base al formato specificato
$rs = $dbo -> fetchArray ( 'SELECT numero FROM co_contratti ORDER BY id DESC LIMIT 0,1' );
2018-07-08 18:11:17 +02:00
$numero = Util\Generator :: generate ( setting ( 'Formato codice contratti' ), $rs [ 0 ][ 'numero' ]);
2017-08-04 16:28:16 +02:00
// Uso il tipo di pagamento specificato in anagrafica se c'è, altrimenti quello di default
$rsa = $dbo -> fetchArray ( 'SELECT idpagamento_vendite AS idpagamento FROM an_anagrafiche WHERE idanagrafica=' . prepare ( $idanagrafica ));
2018-07-08 18:11:17 +02:00
$idpagamento = ( ! empty ( $rsa [ 0 ][ 'idpagamento' ])) ? $rsa [ 0 ][ 'idpagamento' ] : setting ( 'Tipo di pagamento predefinito' );
2017-08-04 16:28:16 +02:00
2018-07-19 15:33:32 +02:00
if ( post ( 'idanagrafica' ) !== null ) {
2017-08-04 16:28:16 +02:00
$dbo -> query ( 'INSERT INTO co_contratti(idanagrafica, nome, numero, idagente, idpagamento, idstato, data_bozza) VALUES (' . prepare ( $idanagrafica ) . ', ' . prepare ( $nome ) . ', ' . prepare ( $numero ) . ', ' . prepare ( $idagente ) . ', ' . prepare ( $idpagamento ) . " , (SELECT `id` FROM `co_staticontratti` WHERE `descrizione`='Bozza'), NOW()) " );
$id_record = $dbo -> lastInsertedID ();
// Aggiunta associazioni costi unitari al contratto
$rsi = $dbo -> fetchArray ( 'SELECT * FROM in_tipiintervento WHERE (costo_orario!=0 OR costo_km!=0 OR costo_diritto_chiamata!=0)' );
for ( $i = 0 ; $i < sizeof ( $rsi ); ++ $i ) {
$dbo -> query ( 'INSERT INTO co_contratti_tipiintervento(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) VALUES(' . prepare ( $id_record ) . ', ' . prepare ( $rsi [ $i ][ 'idtipointervento' ]) . ', ' . prepare ( $rsi [ $i ][ 'costo_orario' ]) . ', ' . prepare ( $rsi [ $i ][ 'costo_km' ]) . ', ' . prepare ( $rsi [ $i ][ 'costo_diritto_chiamata' ]) . ', ' . prepare ( $rsi [ $i ][ 'costo_orario_tecnico' ]) . ', ' . prepare ( $rsi [ $i ][ 'costo_km_tecnico' ]) . ', ' . prepare ( $rsi [ $i ][ 'costo_diritto_chiamata_tecnico' ]) . ')' );
}
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Aggiunto contratto numero _NUM_!' , [
2017-09-10 14:35:41 +02:00
'_NUM_' => $numero ,
2018-07-07 13:56:22 +02:00
]));
2017-08-04 16:28:16 +02:00
}
break ;
case 'update' :
2018-07-19 15:33:32 +02:00
if ( post ( 'id_record' ) !== null ) {
2017-08-04 16:28:16 +02:00
$idstato = post ( 'idstato' );
$idanagrafica = post ( 'idanagrafica' );
2018-04-13 17:55:20 +02:00
$idsede = post ( 'idsede' );
2017-08-04 16:28:16 +02:00
$nome = post ( 'nome' );
$idagente = post ( 'idagente' );
$idpagamento = post ( 'idpagamento' );
$numero = post ( 'numero' );
// Se non specifico un budget me lo vado a ricalcolare
if ( $budget != '' ) {
$budget = post ( 'budget' );
} else {
2018-06-29 17:30:41 +02:00
$q = " SELECT (SELECT SUM(subtotale) FROM co_righe_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id) AS 'budget' FROM co_contratti WHERE id= " . prepare ( $id_record );
2017-08-04 16:28:16 +02:00
$rs = $dbo -> fetchArray ( $q );
$budget = $rs [ 0 ][ 'budget' ];
}
2018-07-19 15:33:32 +02:00
$data_bozza = post ( 'data_bozza' );
$data_accettazione = post ( 'data_accettazione' );
$data_rifiuto = post ( 'data_rifiuto' );
$data_conclusione = post ( 'data_conclusione' );
$rinnovabile = post ( 'rinnovabile' );
2017-08-04 16:28:16 +02:00
$giorni_preavviso_rinnovo = post ( 'giorni_preavviso_rinnovo' );
$validita = post ( 'validita' );
$idreferente = post ( 'idreferente' );
$esclusioni = post ( 'esclusioni' );
$descrizione = post ( 'descrizione' );
// $ore_lavoro = post('ore_lavoro');
$costo_orario = post ( 'costo_orario' );
$costo_km = post ( 'costo_km' );
$costo_diritto_chiamata = post ( 'costo_diritto_chiamata' );
2018-11-09 12:45:22 +01:00
2018-11-07 16:40:48 +01:00
$codice_cig = post ( 'codice_cig' );
$codice_cup = post ( 'codice_cup' );
2017-08-04 16:28:16 +02:00
2018-11-09 12:45:22 +01:00
$query = 'UPDATE co_contratti SET idanagrafica=' . prepare ( $idanagrafica ) . ', idsede=' . prepare ( $idsede ) . ', idstato=' . prepare ( $idstato ) . ', nome=' . prepare ( $nome ) . ', idagente=' . prepare ( $idagente ) . ', idpagamento=' . prepare ( $idpagamento ) . ', numero=' . prepare ( $numero ) . ', budget=' . prepare ( $budget ) . ', idreferente=' . prepare ( $idreferente ) . ', validita=' . prepare ( $validita ) . ', data_bozza=' . prepare ( $data_bozza ) . ', data_accettazione=' . prepare ( $data_accettazione ) . ', data_rifiuto=' . prepare ( $data_rifiuto ) . ', data_conclusione=' . prepare ( $data_conclusione ) . ', rinnovabile=' . prepare ( $rinnovabile ) . ', giorni_preavviso_rinnovo=' . prepare ( $giorni_preavviso_rinnovo ) . ', esclusioni=' . prepare ( $esclusioni ) . ', descrizione=' . prepare ( $descrizione ) . ', id_documento_fe=' . prepare ( post ( 'id_documento_fe' )) . ', codice_cig=' . prepare ( $codice_cig ) . ', codice_cup=' . prepare ( $codice_cup ) . ' WHERE id=' . prepare ( $id_record );
2017-08-04 16:28:16 +02:00
// costo_diritto_chiamata='.prepare($costo_diritto_chiamata).', ore_lavoro='.prepare($ore_lavoro).', costo_orario='.prepare($costo_orario).', costo_km='.prepare($costo_km).'
$dbo -> query ( $query );
2017-09-11 11:28:39 +02:00
// Aggiornamento sconto
2018-07-19 15:33:32 +02:00
$tipo_sconto = post ( 'tipo_sconto_generico' );
$sconto = post ( 'sconto_generico' );
2017-09-11 11:28:39 +02:00
$dbo -> update ( 'co_contratti' , [
'tipo_sconto_globale' => $tipo_sconto ,
'sconto_globale' => $sconto ,
], [ 'id' => $id_record ]);
aggiorna_sconto ([
'parent' => 'co_contratti' ,
2018-06-29 17:30:41 +02:00
'row' => 'co_righe_contratti' ,
2017-09-11 11:28:39 +02:00
], [
'parent' => 'id' ,
'row' => 'idcontratto' ,
], $id_record );
$dbo -> query ( 'DELETE FROM my_impianti_contratti WHERE idcontratto=' . prepare ( $id_record ));
2018-07-19 15:33:32 +02:00
foreach (( array ) post ( 'matricolaimpianto' ) as $matricolaimpianto ) {
2017-09-11 11:28:39 +02:00
$dbo -> query ( 'INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES(' . prepare ( $id_record ) . ', ' . prepare ( $matricolaimpianto ) . ')' );
2017-08-04 16:28:16 +02:00
}
// Salvataggio costi attività unitari del contratto
2018-07-19 15:33:32 +02:00
foreach ( post ( 'costo_ore' ) as $idtipointervento => $valore ) {
2017-08-04 16:28:16 +02:00
$rs = $dbo -> fetchArray ( 'SELECT * FROM co_contratti_tipiintervento WHERE idcontratto=' . prepare ( $id_record ) . ' AND idtipointervento=' . prepare ( $idtipointervento ));
// Se non esiste il record lo inserisco...
if ( sizeof ( $rs ) == 0 ) {
// Se almeno un valore è diverso da 0 inserisco l'importo...
2018-07-19 15:33:32 +02:00
if ( post ( 'costo_ore' )[ $idtipointervento ] != 0 || post ( 'costo_km' )[ $idtipointervento ] != 0 || post ( 'costo_dirittochiamata' )[ $idtipointervento ] != 0 ) {
$dbo -> query ( 'INSERT INTO co_contratti_tipiintervento(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) VALUES(' . prepare ( $id_record ) . ', ' . prepare ( $idtipointervento ) . ', ' . prepare ( post ( 'costo_ore' )[ $idtipointervento ]) . ', ' . prepare ( post ( 'costo_km' )[ $idtipointervento ]) . ', ' . prepare ( post ( 'costo_dirittochiamata' )[ $idtipointervento ]) . ', ' . prepare ( post ( 'costo_ore_tecnico' )[ $idtipointervento ]) . ', ' . prepare ( post ( 'costo_km_tecnico' )[ $idtipointervento ]) . ', ' . prepare ( post ( 'costo_dirittochiamata_tecnico' )[ $idtipointervento ]) . ')' );
2017-08-04 16:28:16 +02:00
}
}
// ...altrimenti...
else {
// Aggiorno il nuovo valore se è diverso da 0...
2018-07-19 15:33:32 +02:00
if ( post ( 'costo_ore' )[ $idtipointervento ] != 0 || post ( 'costo_km' )[ $idtipointervento ] != 0 || post ( 'costo_dirittochiamata' )[ $idtipointervento ] != 0 ) {
$dbo -> query ( 'UPDATE co_contratti_tipiintervento SET costo_ore=' . prepare ( post ( 'costo_ore' )[ $idtipointervento ]) . ', costo_km=' . prepare ( post ( 'costo_km' )[ $idtipointervento ]) . ', costo_dirittochiamata=' . prepare ( post ( 'costo_dirittochiamata' )[ $idtipointervento ]) . ', costo_ore_tecnico=' . prepare ( post ( 'costo_ore_tecnico' )[ $idtipointervento ]) . ', costo_km_tecnico=' . prepare ( post ( 'costo_km_tecnico' )[ $idtipointervento ]) . ', costo_dirittochiamata_tecnico=' . prepare ( post ( 'costo_dirittochiamata_tecnico' )[ $idtipointervento ]) . ' WHERE idcontratto=' . prepare ( $id_record ) . ' AND idtipointervento=' . prepare ( $idtipointervento ));
2017-08-04 16:28:16 +02:00
}
// ...altrimenti cancello l'eventuale riga
else {
$dbo -> query ( 'DELETE FROM co_contratti_tipiintervento WHERE idcontratto=' . prepare ( $id_record ) . ' AND idtipointervento=' . prepare ( $idtipointervento ));
}
}
}
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Contratto modificato correttamente!' ));
2017-08-04 16:28:16 +02:00
}
break ;
// Aggiungo una riga al contratto
case 'addriga' :
2017-09-11 11:28:39 +02:00
$idiva = post ( 'idiva' );
2018-01-18 19:03:06 +01:00
$idarticolo = post ( 'idarticolo' );
2017-08-04 16:28:16 +02:00
$descrizione = post ( 'descrizione' );
2018-07-19 15:33:32 +02:00
$qta = post ( 'qta' );
$prezzo = post ( 'prezzo' );
2017-09-11 11:28:39 +02:00
// Calcolo dello sconto
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2017-08-04 16:28:16 +02:00
2017-09-18 09:57:27 +02:00
$subtot = $prezzo * $qta ;
2017-08-04 16:28:16 +02:00
$um = post ( 'um' );
// Lettura iva dell'articolo
2017-09-11 11:28:39 +02:00
$rs2 = $dbo -> fetchArray ( 'SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id=' . prepare ( $idiva ));
2018-02-18 19:53:23 +01:00
$iva = ( $prezzo * $qta - $sconto ) / 100 * $rs2 [ 0 ][ 'percentuale' ];
2017-08-04 16:28:16 +02:00
$iva_indetraibile = $iva / 100 * $rs2 [ 0 ][ 'indetraibile' ];
2017-09-11 11:28:39 +02:00
$desc_iva = $rs2 [ 0 ][ 'descrizione' ];
2017-08-04 16:28:16 +02:00
2018-06-29 17:30:41 +02:00
$dbo -> query ( 'INSERT INTO co_righe_contratti(idcontratto, idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, is_descrizione, `order`) VALUES (' . prepare ( $id_record ) . ', ' . prepare ( $idarticolo ) . ', ' . prepare ( $idiva ) . ', ' . prepare ( $desc_iva ) . ', ' . prepare ( $iva ) . ', ' . prepare ( $iva_indetraibile ) . ', ' . prepare ( $descrizione ) . ', ' . prepare ( $subtot ) . ', ' . prepare ( $um ) . ', ' . prepare ( $qta ) . ', ' . prepare ( $sconto ) . ', ' . prepare ( $sconto_unitario ) . ', ' . prepare ( $tipo_sconto ) . ', ' . prepare ( empty ( $qta )) . ', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_contratti AS t WHERE idcontratto=' . prepare ( $id_record ) . '))' );
2018-02-19 10:52:42 +01:00
// Messaggi informativi
if ( ! empty ( $idarticolo )) {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Articolo aggiunto!' ));
2018-02-19 10:52:42 +01:00
} elseif ( ! empty ( $qta )) {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga aggiunta!' ));
2018-02-19 17:48:04 +01:00
} else {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga descrittiva aggiunta!' ));
2018-01-18 19:03:06 +01:00
}
2018-02-19 10:52:42 +01:00
2018-01-18 19:03:06 +01:00
break ;
2017-08-04 16:28:16 +02:00
case 'editriga' :
$idriga = post ( 'idriga' );
2018-02-04 09:41:46 +01:00
2018-06-29 17:30:41 +02:00
$rs = $dbo -> fetchArray ( " SELECT * FROM co_righe_contratti WHERE id=' " . $idriga . " ' " );
2018-01-18 19:03:06 +01:00
$is_descrizione = $rs [ 0 ][ 'is_descrizione' ];
2018-02-04 09:41:46 +01:00
2018-01-18 19:03:06 +01:00
$idarticolo = post ( 'idarticolo' );
2017-08-04 16:28:16 +02:00
$descrizione = post ( 'descrizione' );
2018-07-19 15:33:32 +02:00
$qta = post ( 'qta' );
$prezzo = post ( 'prezzo' );
2017-09-11 11:28:39 +02:00
$subtot = $prezzo * $qta ;
2017-08-04 16:28:16 +02:00
2017-09-11 11:28:39 +02:00
// Calcolo dello sconto
2018-07-19 15:33:32 +02:00
$sconto_unitario = post ( 'sconto' );
$tipo_sconto = post ( 'tipo_sconto' );
2018-07-13 18:32:05 +02:00
$sconto = calcola_sconto ([
'sconto' => $sconto_unitario ,
'prezzo' => $prezzo ,
'tipo' => $tipo_sconto ,
'qta' => $qta ,
]);
2017-08-04 16:28:16 +02:00
2017-09-11 11:28:39 +02:00
$idiva = post ( 'idiva' );
2017-08-04 16:28:16 +02:00
$um = post ( 'um' );
// Calcolo iva
2017-09-11 11:28:39 +02:00
$query = 'SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id=' . prepare ( $idiva );
2017-08-04 16:28:16 +02:00
$rs = $dbo -> fetchArray ( $query );
2017-09-11 11:28:39 +02:00
$iva = ( $subtot - $sconto ) / 100 * $rs [ 0 ][ 'percentuale' ];
2017-08-04 16:28:16 +02:00
$iva_indetraibile = $iva / 100 * $rs [ 0 ][ 'indetraibile' ];
$desc_iva = $rs [ 0 ][ 'descrizione' ];
// Modifica riga generica sul documento
2018-02-04 09:41:46 +01:00
if ( $is_descrizione == 0 ) {
2018-06-29 17:30:41 +02:00
$query = 'UPDATE co_righe_contratti SET idarticolo=' . prepare ( $idarticolo ) . ', idiva=' . prepare ( $idiva ) . ', desc_iva=' . prepare ( $desc_iva ) . ', iva=' . prepare ( $iva ) . ', iva_indetraibile=' . prepare ( $iva_indetraibile ) . ', descrizione=' . prepare ( $descrizione ) . ', subtotale=' . prepare ( $subtot ) . ', sconto=' . prepare ( $sconto ) . ', sconto_unitario=' . prepare ( $sconto_unitario ) . ', tipo_sconto=' . prepare ( $tipo_sconto ) . ', um=' . prepare ( $um ) . ', qta=' . prepare ( $qta ) . ' WHERE id=' . prepare ( $idriga );
2018-02-04 09:41:46 +01:00
} else {
2018-06-29 17:30:41 +02:00
$query = 'UPDATE co_righe_contratti SET descrizione=' . prepare ( $descrizione ) . ' WHERE id=' . prepare ( $idriga );
2018-01-18 19:03:06 +01:00
}
2017-08-04 16:28:16 +02:00
$dbo -> query ( $query );
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga modificata!' ));
2017-08-04 16:28:16 +02:00
break ;
// Eliminazione riga
case 'delriga' :
2018-07-19 15:33:32 +02:00
if ( post ( 'idriga' ) !== null ) {
2017-08-04 16:28:16 +02:00
$idriga = post ( 'idriga' );
2018-06-29 17:30:41 +02:00
$query = 'DELETE FROM `co_righe_contratti` WHERE idcontratto=' . prepare ( $id_record ) . ' AND id=' . prepare ( $idriga );
2017-08-04 16:28:16 +02:00
if ( $dbo -> query ( $query )) {
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Riga eliminata!' ));
2017-08-04 16:28:16 +02:00
}
}
// Ricalcolo il budget
2018-06-29 17:30:41 +02:00
$dbo -> query ( 'UPDATE co_contratti SET budget=( SELECT SUM(subtotale) FROM co_righe_contratti GROUP BY idcontratto HAVING idcontratto=co_contratti.id ) WHERE id=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
break ;
// Scollegamento intervento da contratto
case 'unlink' :
2018-07-19 15:33:32 +02:00
if ( get ( 'idcontratto' ) !== null && get ( 'idintervento' ) !== null ) {
$idcontratto = get ( 'idcontratto' );
$idintervento = get ( 'idintervento' );
2017-08-04 16:28:16 +02:00
2018-08-31 11:39:38 +02:00
$query = 'DELETE FROM `co_promemoria` WHERE idcontratto=' . prepare ( $idcontratto ) . ' AND idintervento=' . prepare ( $idintervento );
2017-08-04 16:28:16 +02:00
$dbo -> query ( $query );
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Intervento _NUM_ rimosso!' , [
2017-09-10 14:35:41 +02:00
'_NUM_' => $idintervento ,
2018-07-07 13:56:22 +02:00
]));
2017-08-04 16:28:16 +02:00
}
break ;
2018-10-30 10:27:44 +01:00
case 'update_position' :
$orders = explode ( " , " , $_POST [ 'order' ] );
$order = 0 ;
2017-09-11 13:08:50 +02:00
2018-10-30 10:27:44 +01:00
foreach ( $orders as $idriga ){
$dbo -> query ( 'UPDATE `co_righe_contratti` SET `order`=' . prepare ( $order ) . ' WHERE id=' . prepare ( $idriga ));
$order ++ ;
}
break ;
2017-09-11 13:08:50 +02:00
2017-08-04 16:28:16 +02:00
// eliminazione contratto
case 'delete' :
$dbo -> query ( 'DELETE FROM co_contratti WHERE id=' . prepare ( $id_record ));
2018-08-31 11:39:38 +02:00
$dbo -> query ( 'DELETE FROM co_promemoria WHERE idcontratto=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
$dbo -> query ( 'DELETE FROM co_righe_contratti WHERE idcontratto=' . prepare ( $id_record ));
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Contratto eliminato!' ));
2017-08-04 16:28:16 +02:00
break ;
2018-08-31 11:39:38 +02:00
// Rinnovo contratto
2017-08-04 16:28:16 +02:00
case 'renew' :
$rs = $dbo -> fetchArray ( 'SELECT *, DATEDIFF(data_conclusione, data_accettazione) AS giorni FROM co_contratti WHERE id=' . prepare ( $id_record ));
if ( sizeof ( $rs ) == 1 ) {
// Verifico se il rinnovo contratto è un numero accettabile con la differenza di data inizio e data fine
if ( $rs [ 0 ][ 'giorni' ] > 0 && $rs [ 0 ][ 'giorni' ] < 365 * 10 ) {
$giorni_add = $rs [ 0 ][ 'giorni' ];
} else {
$giorni_add = 0 ;
}
// Calcolo numero successivo contratti
$rs2 = $dbo -> fetchArray ( 'SELECT MAX(CAST(numero AS UNSIGNED)) AS maxn FROM co_contratti' );
$numero = $rs2 [ 0 ][ 'maxn' ] + 1 ;
2018-06-29 17:10:48 +02:00
if ( $dbo -> query ( 'INSERT INTO co_contratti(numero, nome, idagente, data_bozza, data_accettazione, data_rifiuto, data_conclusione, rinnovabile, giorni_preavviso_rinnovo, budget, descrizione, idstato, idreferente, validita, esclusioni, idanagrafica, idpagamento, costo_diritto_chiamata, ore_lavoro, costo_orario, costo_km, idcontratto_prev) VALUES(' . prepare ( $numero ) . ', ' . prepare ( $rs [ 0 ][ 'nome' ]) . ', ' . prepare ( $rs [ 0 ][ 'idagente' ]) . ', NOW(), ' . prepare ( date ( 'Y-m-d' , strtotime ( $rs [ 0 ][ 'data_conclusione' ] . ' +1 day' ))) . ', "", ' . prepare ( date ( 'Y-m-d' , strtotime ( $rs [ 0 ][ 'data_conclusione' ] . ' +' . $giorni_add . ' day' ))) . ', ' . prepare ( $rs [ 0 ][ 'rinnovabile' ]) . ', ' . prepare ( $rs [ 0 ][ 'giorni_preavviso_rinnovo' ]) . ', ' . prepare ( $rs [ 0 ][ 'budget' ]) . ', ' . prepare ( $rs [ 0 ][ 'descrizione' ]) . ', ' . prepare ( $rs [ 0 ][ 'idstato' ]) . ', ' . prepare ( $rs [ 0 ][ 'idreferente' ]) . ', ' . prepare ( $rs [ 0 ][ 'validita' ]) . ', ' . prepare ( $rs [ 0 ][ 'esclusioni' ]) . ', ' . prepare ( $rs [ 0 ][ 'idanagrafica' ]) . ', ' . prepare ( $rs [ 0 ][ 'idpagamento' ]) . ', ' . prepare ( $rs [ 0 ][ 'costo_diritto_chiamata' ]) . ', ' . prepare ( $rs [ 0 ][ 'ore_lavoro' ]) . ', ' . prepare ( $rs [ 0 ][ 'costo_orario' ]) . ', ' . prepare ( $rs [ 0 ][ 'costo_km' ]) . ', ' . prepare ( $id_record ) . ')' )) {
2017-08-04 16:28:16 +02:00
$new_idcontratto = $dbo -> lastInsertedID ();
$dbo -> query ( 'INSERT INTO co_contratti_tipiintervento(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) SELECT ' . prepare ( $new_idcontratto ) . ', idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico FROM co_contratti_tipiintervento AS z WHERE idcontratto=' . prepare ( $id_record ));
// Replico le righe del contratto
2018-06-29 17:30:41 +02:00
$rs = $dbo -> fetchArray ( 'SELECT * FROM co_righe_contratti WHERE idcontratto=' . prepare ( $id_record ));
2017-08-04 16:28:16 +02:00
for ( $i = 0 ; $i < sizeof ( $rs ); ++ $i ) {
2018-06-29 17:30:41 +02:00
$dbo -> query ( 'INSERT INTO co_righe_contratti(idcontratto, descrizione, subtotale, um, qta) VALUES(' . prepare ( $new_idcontratto ) . ', ' . prepare ( $rs [ $i ][ 'descrizione' ]) . ', ' . prepare ( $rs [ $i ][ 'subtotale' ]) . ', ' . prepare ( $rs [ $i ][ 'um' ]) . ', ' . prepare ( $rs [ $i ][ 'qta' ]) . ')' );
2017-08-04 16:28:16 +02:00
}
2018-01-14 17:46:00 +01:00
// Replicazione degli impianti
$impianti = $dbo -> fetchArray ( 'SELECT idimpianto FROM my_impianti_contratti WHERE idcontratto=' . prepare ( $id_record ));
$dbo -> sync ( 'my_impianti_contratti' , [ 'idcontratto' => $new_idcontratto ], [ 'idimpianto' => array_column ( $impianti , 'idimpianto' )]);
2018-08-31 11:39:38 +02:00
// Replicazione dei promemoria
$promemoria = $dbo -> fetchArray ( 'SELECT * FROM co_promemoria WHERE idcontratto=' . prepare ( $id_record ));
foreach ( $promemoria as $p ) {
$dbo -> insert ( 'co_promemoria' , [
'idcontratto' => $new_idcontratto ,
'data_richiesta' => date ( 'Y-m-d' , strtotime ( $p [ 'data_richiesta' ] . ' +' . $giorni_add . ' day' )),
'idtipointervento' => $p [ 'idtipointervento' ],
'richiesta' => $p [ 'richiesta' ],
'idimpianti' => $p [ 'idimpianti' ],
]);
$id_promemoria = $dbo -> lastInsertedID ();
// Copia degli articoli
$dbo -> query ( 'INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) SELECT idarticolo, :id_new, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial FROM co_promemoria_articoli AS z WHERE id_promemoria = :id_old' , [
':id_new' => $id_promemoria ,
':id_old' => $p [ 'id' ],
]);
// Copia delle righe
$dbo -> query ( 'INSERT INTO co_promemoria_righe(id_promemoria, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto) SELECT :id_new, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto FROM co_promemoria_righe AS z WHERE id_promemoria = :id_old' , [
':id_new' => $id_promemoria ,
':id_old' => $p [ 'id' ],
]);
// Copia degli allegati
Uploads :: copy ([
'id_module' => $id_module ,
'id_plugin' => Plugins :: get ( 'Pianificazione interventi' )[ 'id' ],
'id_record' => $p [ 'id' ],
], [
'id_module' => $id_module ,
'id_plugin' => Plugins :: get ( 'Pianificazione interventi' )[ 'id' ],
'id_record' => $id_promemoria ,
]);
}
2018-07-19 17:29:21 +02:00
flash () -> info ( tr ( 'Contratto rinnovato!' ));
2017-08-04 16:28:16 +02:00
2018-08-31 11:39:38 +02:00
$id_record = $new_idcontratto ;
2017-08-04 16:28:16 +02:00
} else {
2018-07-19 17:29:21 +02:00
flash () -> error ( tr ( 'Errore durante il rinnovo del contratto!' ));
2017-08-04 16:28:16 +02:00
}
}
break ;
}
2017-09-11 11:28:39 +02:00
if ( post ( 'op' ) !== null && post ( 'op' ) != 'update' ) {
aggiorna_sconto ([
'parent' => 'co_contratti' ,
2018-06-29 17:30:41 +02:00
'row' => 'co_righe_contratti' ,
2017-09-11 11:28:39 +02:00
], [
'parent' => 'id' ,
'row' => 'idcontratto' ,
], $id_record );
}