else $num_colonne_tab_disp = 32; $id_data_inizio_tab_disp = (floor(( (double) $idinizioperiodo_min + (double) $idfineperiodo_max) / 2) - floor((double) $num_colonne_tab_disp / 2)); if (($id_data_inizio_tab_disp + $num_colonne_tab_disp - 1) > $max_periodo) $id_data_inizio_tab_disp = ($max_periodo - $num_colonne_tab_disp + 1); if ($id_data_inizio_tab_disp < 1) $id_data_inizio_tab_disp = 1; if ($num_colonne_tab_disp > $max_periodo) $num_colonne_tab_disp = $max_periodo; if ($limiti_var['n_ini'] > $id_data_inizio_tab_disp) $limiti_var[n_ini] = $id_data_inizio_tab_disp; if ($limiti_var['n_fine'] < ($id_data_inizio_tab_disp + $num_colonne_tab_disp - 1)) $limiti_var['n_fine'] = ($id_data_inizio_tab_disp + $num_colonne_tab_disp - 1); } # fine if ($mostra_quadro_disp) $profondita['iniziale'] = ""; $profondita['attuale'] = 1; $max_prenota = esegui_query("select max(idprenota) from $tableprenota"); $tot_prenota = risul_query($max_prenota,0,0); $profondita['tot_prenota_ini'] = $tot_prenota; $profondita['tot_prenota_attuale'] = $tot_prenota; tab_a_var ($limiti_var,$app_prenota_id,$app_orig_prenota_id,$inizio_prenota_id,$fine_prenota_id,$app_assegnabili_id,$prenota_in_app_sett,$anno,$dati_app,$profondita,$PHPR_TAB_PRE."prenota"); $app_agenzia = esegui_query("select * from $tableregole where app_agenzia != ''"); $num_app_agenzia = numlin_query($app_agenzia); unlock_tabelle($tabelle_lock); $id_app_richiesti = 0; if ($num_tipologie == 1 and $num_app_tipo_richiesti1 == 1) { $idinizioperiodo_vett = $idinizioperiodo[1]; $idfineperiodo_vett = $idfineperiodo[1]; $app_richiesti = $app_richiesti1; $id_app_richiesti = 1; } # fine if ($num_tipologie == 1 and $num_app_tipo_richiesti1 == 1) else { $num_tariffe_diverse = 0; unset ($app_richiesti); unset($idinizioperiodo_vett);
function inserisci_prenotazione($inizioperiodo, $fineperiodo, $lista_app, $tipotariffa, $numpersone, $prenota_vicine, $idclienti, $conferma, $pagato, $caparra, $met_paga_caparra, $commissioni, $origine_prenota, $sconto, $giorno_stima_checkin, $ora_stima_checkin, $min_stima_checkin, $commento, &$stato, $anno, $PHPR_TAB_PRE, $ins_passato = "", $id_utente_imp = "", $id_prenota_imp = "", $tariffe_sett_imp = "", $ins_costi_agg = "") { global $id_utente, $HOSTNAME; $PHPR_TAB_PRE = aggslashdb($PHPR_TAB_PRE); $anno = aggslashdb($anno); $tableprenota = $PHPR_TAB_PRE . "prenota" . $anno; $tablecostiprenota = $PHPR_TAB_PRE . "costiprenota" . $anno; $tableperiodi = $PHPR_TAB_PRE . "periodi" . $anno; $tableregole = $PHPR_TAB_PRE . "regole" . $anno; $tableappartamenti = $PHPR_TAB_PRE . "appartamenti"; $tablepersonalizza = $PHPR_TAB_PRE . "personalizza"; $tableclienti = $PHPR_TAB_PRE . "clienti"; $tablenometariffe = $PHPR_TAB_PRE . "ntariffe" . $anno; if (!function_exists('tab_a_var')) { include "./includes/liberasettimane.php"; } if (!function_exists('dati_tariffe')) { include "./includes/funzioni_tariffe.php"; } include "./includes/sett_gio.php"; $Euro = nome_valuta(); $stile_soldi = stile_soldi(); $stile_data = stile_data(); $num_tipologie = count($inizioperiodo); $appartamenti = esegui_query("select * from {$tableappartamenti} "); $numappartamenti = numlin_query($appartamenti); $id_app_richiesti = 0; $dati_tariffe = dati_tariffe($tablenometariffe, "", "", $tableregole); if ($ins_costi_agg) { if (!function_exists('dati_costi_agg_ntariffe')) { include "./includes/funzioni_costi_agg.php"; } $dati_ca = dati_costi_agg_ntariffe($tablenometariffe, $dati_tariffe['num'], "NO", "", $tableappartamenti); } # fine if ($ins_costi_agg) for ($n_t = 1; $n_t <= $num_tipologie; $n_t++) { $inizioperiodo_orig[$n_t] = $inizioperiodo[$n_t]; $fineperiodo_orig[$n_t] = $fineperiodo[$n_t]; $idinizioperiodo = esegui_query("select idperiodi from {$tableperiodi} where datainizio = '" . aggslashdb($inizioperiodo[$n_t]) . "' "); $num_idinizioperiodo = numlin_query($idinizioperiodo); if ($num_idinizioperiodo == 0) { $idinizioperiodo = 10000; } else { $idinizioperiodo = risul_query($idinizioperiodo, 0, 'idperiodi'); } $inizioperiodo[$n_t] = $idinizioperiodo; if (!$idinizioperiodo_tot or $idinizioperiodo < $idinizioperiodo_tot) { $idinizioperiodo_tot = $idinizioperiodo; } $idfineperiodo = esegui_query("select idperiodi from {$tableperiodi} where datafine = '" . aggslashdb($fineperiodo[$n_t]) . "' "); $num_idfineperiodo = numlin_query($idfineperiodo); if ($num_idfineperiodo == 0) { $idfineperiodo = -1; } else { $idfineperiodo = risul_query($idfineperiodo, 0, 'idperiodi'); } $fineperiodo[$n_t] = $idfineperiodo; if (!$idfineperiodo_tot or $idfineperiodo > $idfineperiodo_tot) { $idfineperiodo_tot = $idfineperiodo; } $id_periodo_corrente = calcola_id_periodo_corrente($anno); if ($id_periodo_corrente > $idinizioperiodo and !$ins_passato) { $data_sbagliata = "SI"; } if ($idfineperiodo < $idinizioperiodo or $data_sbagliata == "SI") { $inserire = "NO"; $mess_errore .= mex("Le date sono sbagliate", "clienti.php"); if ($num_tipologie > 1) { $mess_errore .= " (" . mex("tipologia", "clienti.php") . " {$n_t})"; } $mess_errore .= ".<br>"; } # fine if ($idfineperiodo < $idinizioperiodo or... if (substr($tipotariffa[$n_t], 0, 7) != "tariffa" or controlla_num_pos(substr($tipotariffa[$n_t], 7)) == "NO") { $tariffa_sbagliata = "SI"; } else { $tar_sett_imp = $tariffe_sett_imp[$n_t]; for ($num1 = $inizioperiodo[$n_t]; $num1 <= $fineperiodo[$n_t]; $num1++) { $rigasettimana = esegui_query("select * from {$tableperiodi} where idperiodi = '{$num1}' "); $esistetariffa = risul_query($rigasettimana, 0, $tipotariffa[$n_t]); $esistetariffap = risul_query($rigasettimana, 0, $tipotariffa[$n_t] . "p"); if ((!strcmp($esistetariffa, "") or $esistetariffa < 0) and (!strcmp($esistetariffap, "") or $esistetariffap < 0) and !strcmp($tar_sett_imp[$num1], "")) { $tariffa_sbagliata = "SI"; } if ($dati_tariffe[$tipotariffa[$n_t]]['chiusa'][$num1] and !strcmp($tar_sett_imp[$num1], "")) { $tariffa_sbagliata = "SI"; } } # fine for $num1 } # fine else if (substr($tipotariffa[$n_t],0,7) != "tariffa" or... if ($tariffa_sbagliata == "SI") { $inserire = "NO"; $mess_errore .= mex("Si deve inserire il tipo di tariffa", "clienti.php"); if ($num_tipologie > 1) { $mess_errore .= "(" . mex("tipologia", "clienti.php") . " {$n_t})"; } $mess_errore .= ".<br>"; } else { # se vi è una regola 2 per la tariffa unset($app_regola2_predef); if (!$lista_app[$n_t]) { $lista_app[$n_t] = trova_app_regola2($tipotariffa[$n_t], $regole2, $num_regole2, $app_regola2_predef, $id_periodo_corrente, $idinizioperiodo, $idfineperiodo, $tipo_periodi, $anno, $tableregole); } # fine if (!$lista_app[$n_t]) $id_utente_ins = ""; # se vi è una regola 3 per la tariffa if ($id_utente == 1) { $regole3 = esegui_query("select * from {$tableregole} where tariffa_per_utente = '" . aggslashdb($tipotariffa[$n_t]) . "'"); if (numlin_query($regole3) == 1) { $id_utente_ins = risul_query($regole3, 0, 'iddatainizio'); } } # fine if ($id_utente == 1) if (!$id_utente_ins and $id_utente_imp) { $id_utente_ins = $id_utente_imp; } if (!$id_utente_ins and $id_utente) { $id_utente_ins = $id_utente; } if (!$id_utente_ins) { $id_utente_ins = 1; } # se vi è una regola 4 per la tariffa if (!$numpersone[$n_t]) { $regole4 = esegui_query("select * from {$tableregole} where tariffa_per_persone = '" . aggslashdb($tipotariffa[$n_t]) . "'"); if (numlin_query($regole4) == 1) { $numpersone[$n_t] = risul_query($regole4, 0, 'iddatainizio'); } } # fine if (!$numpersone[$n_t]) if (!$numpersone) { if ($dati_tariffe[$tipotariffa[$n_t]]['moltiplica'] == "p") { $inserire = "NO"; $mess_errore .= mex("Si deve inserire il numero delle persone per questa tariffa", "clienti.php"); if ($num_tipologie > 1) { $mess_errore .= "(" . mex("tipologia", "clienti.php") . " {$n_t})"; } $mess_errore .= ".<br>"; } # fine if ($dati_tariffe[$tipotariffa[$n_t]]['moltiplica'] == "p") } # fine if (!$numpersone) } # fine else if ($tariffa_sbagliata == "SI") if (controlla_num_pos($idclienti[$n_t]) == "NO") { $inserire = "NO"; } else { $cliente_esistente = esegui_query("select cognome from {$tableclienti} where idclienti = '" . $idclienti[$n_t] . "' "); if (numlin_query($cliente_esistente) != 1) { $inserire = "NO"; } else { $cognome = risul_query($cliente_esistente, 0, "cognome"); } } # fine else if (controlla_num_pos($idclienti[$n_t]) == "NO") $app_richiesti_id[$n_t] = ""; $assegnazioneapp[$n_t] = "v"; if ($lista_app[$n_t]) { $assegnazioneapp[$n_t] = "c"; $vett_app = explode(",", $lista_app[$n_t]); $num_app = count($vett_app); if ($num_app == 1) { $assegnazioneapp[$n_t] = "k"; } for ($num1 = 0; $num1 < $num_app; $num1++) { $appo = aggslashdb($vett_app[$num1]); $app_richiesti_id[$n_t][$appo] = "SI"; $appartamento_esistente = esegui_query("select idappartamenti from {$tableappartamenti} where idappartamenti = '{$appo}' "); if (numlin_query($appartamento_esistente) != 1) { $inserire = "NO"; $mess_errore .= mex("L'appartamento", 'unit.php') . " <div style=\"display: inline; color: red;\">{$appo}</div> " . mex("contenuto nella lista non esiste", "clienti.php"); if ($num_tipologie > 1) { $mess_errore .= " (" . mex("tipologia", "clienti.php") . " {$n_t})"; } $mess_errore .= ".<br>"; } # fine if (numlin_query($appartamento_esistente) != 1) } # fine for $num1 } # fine if ($lista_app[$n_t]) if ($numpersone[$n_t]) { if (controlla_num_pos($numpersone[$n_t]) == "NO") { $inserire = "NO"; $mess_errore .= mex("Il numero di persone è sbagliato", "clienti.php"); if ($num_tipologie > 1) { $mess_errore .= " (" . mex("tipologia", "clienti.php") . " {$n_t})"; } $mess_errore .= ".<br>"; } # fine if (controlla_num_pos($numpersone[$n_t]) == "NO") $app_richiesti_copia = $app_richiesti_id[$n_t]; $posti = 0; if ($app_regola2_predef) { $app_regola2_predef = ",{$app_regola2_predef},"; $posto_reg2_orig = 0; } # fine if ($app_regola2_predef) for ($num1 = 0; $num1 < $numappartamenti; $num1++) { $idapp = risul_query($appartamenti, $num1, 'idappartamenti'); $maxoccupanti = risul_query($appartamenti, $num1, 'maxoccupanti'); if (!$app_richiesti_copia or $app_richiesti_copia[$idapp] == "SI") { if ($maxoccupanti and $maxoccupanti < $numpersone[$n_t]) { $app_richiesti_id[$n_t][$idapp] = "NO"; } else { $app_richiesti_id[$n_t][$idapp] = "SI"; $posti++; } # fine else if ($maxoccupanti and $maxoccupanti < $numpersone[$n_t]) } # fine if (!$app_richiesti_copia or $app_richiesti_copia[$idapp] == "SI") if ($app_regola2_predef) { if (str_replace(",{$idapp},", "", $app_regola2_predef) != $app_regola2_predef) { if (!$maxoccupanti or $maxoccupanti >= $numpersone[$n_t]) { $posto_reg2_orig = 1; } } # fine if (str_replace(",$idapp,","",$app_regola2_predef) != $app_regola2_predef) } # fine if ($app_regola2_predef) } # fine for $num1 if ($posti == 0 or $app_regola2_predef and !$posto_reg2_orig) { $mess_errore .= mex("Non c'è nessun appartamento tra quelli richiesti che possa ospitare", 'unit.php') . " " . $numpersone[$n_t] . " " . mex("persone", "clienti.php"); if ($num_tipologie > 1) { $mess_errore .= " (" . mex("tipologia", "clienti.php") . " {$n_t})"; } $mess_errore .= ".<br>"; $inserire = "NO"; } # fine if ($posti == 0 or... } # fine if ($numpersone[$n_t]) unset($lista_app_richiesti); if (!$app_richiesti_id[$n_t]) { $lista_app_richiesti = ",tutti,,"; } else { while (list($key, $val) = each($app_richiesti_id[$n_t])) { if ($val == "SI") { $lista_app_richiesti .= $key . ","; } } } $lista_app_richiesti = substr($lista_app_richiesti, 0, -1); $id_app_richiesti++; $app_richiesti[$id_app_richiesti] = $lista_app_richiesti; $idinizioperiodo_vett[$id_app_richiesti] = $idinizioperiodo; $idfineperiodo_vett[$id_app_richiesti] = $idfineperiodo; $app_richiesti[",numero,"] = $id_app_richiesti; if ($num_tipologie > 1 and $prenota_vicine == "SI") { $app_richiesti[",vicini,"] = "SI"; } if ($id_prenota_imp) { if (controlla_num_pos($id_prenota_imp[$n_t]) == "SI") { $id_esistente = esegui_query("select idprenota from {$tableprenota} where idprenota = '" . $id_prenota_imp[$n_t] . "' "); if (numlin_query($id_esistente)) { unset($id_prenota_imp); } } else { unset($id_prenota_imp); } } # fine if ($id_prenota_imp) } # fine for $n_t if ($inserire != "NO") { $app_agenzia = esegui_query("select * from {$tableregole} where app_agenzia != ''{$condizioni_regole1_non_sel}"); $num_app_agenzia = numlin_query($app_agenzia); $minuti_durata_insprenota = esegui_query("select valpersonalizza_num from {$tablepersonalizza} where idpersonalizza = 'minuti_durata_insprenota' and idutente = '1'"); $minuti_durata_insprenota = risul_query($minuti_durata_insprenota, 0, 'valpersonalizza_num'); $lim_prenota_temp = aggslashdb(date("Y-m-d H:i:s", time() + C_DIFF_ORE * 3600 - $minuti_durata_insprenota * 60)); esegui_query("delete from {$tableprenota} where idclienti = '0' and datainserimento < '" . $lim_prenota_temp . "' "); #Se ci sono regole per $app_agenzia inserisco false prenotazioni fisse in $app_prenota_id2 if ($num_app_agenzia != 0) { unset($limiti_var); unset($app_prenota_id); unset($app_orig_prenota_id); unset($inizio_prenota_id); unset($fine_prenota_id); unset($app_assegnabili_id); unset($prenota_in_app_sett); unset($dati_app); unset($profondita); $limiti_var['n_ini'] = $idinizioperiodo_tot; $limiti_var['n_fine'] = $idfineperiodo_tot; $limiti_var['lim_prenota_temp'] = $lim_prenota_temp; $profondita['iniziale'] = ""; $profondita['attuale'] = 1; $max_prenota = esegui_query("select max(idprenota) from {$tableprenota}"); if (numlin_query($max_prenota) != 0) { $tot_prenota = risul_query($max_prenota, 0, 0); } else { $tot_prenota = 0; } $profondita['tot_prenota_ini'] = $tot_prenota; $profondita['tot_prenota_attuale'] = $tot_prenota; tab_a_var($limiti_var, $app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $prenota_in_app_sett, $anno, $dati_app, $profondita, $PHPR_TAB_PRE . "prenota"); unset($info_periodi_ag); $info_periodi_ag['numero'] = 0; for ($num1 = 0; $num1 < $num_app_agenzia; $num1++) { $mot2 = risul_query($app_agenzia, $num1, 'motivazione2'); if ($mot2 == "x") { $info_periodi_ag['app'][$info_periodi_ag['numero']] = risul_query($app_agenzia, $num1, 'app_agenzia'); $info_periodi_ag['ini'][$info_periodi_ag['numero']] = risul_query($app_agenzia, $num1, 'iddatainizio'); $info_periodi_ag['fine'][$info_periodi_ag['numero']] = risul_query($app_agenzia, $num1, 'iddatafine'); $info_periodi_ag['numero']++; } # fine if ($mot2 == "x") } # fine for $num1 if ($info_periodi_ag['numero']) { inserisci_prenota_fittizie($info_periodi_ag, $profondita, $app_prenota_id, $inizio_prenota_id, $fine_prenota_id, $prenota_in_app_sett, $app_assegnabili_id); } $limiti_var2 = $limiti_var; $profondita2 = $profondita; $prenota_in_app_sett2 = $prenota_in_app_sett; $inizio_prenota_id2 = $inizio_prenota_id; $fine_prenota_id2 = $fine_prenota_id; $app_prenota_id2 = $app_prenota_id; $app_assegnabili_id2 = $app_assegnabili_id; unset($info_periodi_ag); $info_periodi_ag['numero'] = 0; for ($num1 = 0; $num1 < $num_app_agenzia; $num1++) { $mot2 = risul_query($app_agenzia, $num1, 'motivazione2'); if ($mot2 != "x") { $info_periodi_ag['app'][$info_periodi_ag['numero']] = risul_query($app_agenzia, $num1, 'app_agenzia'); $info_periodi_ag['ini'][$info_periodi_ag['numero']] = risul_query($app_agenzia, $num1, 'iddatainizio'); $info_periodi_ag['fine'][$info_periodi_ag['numero']] = risul_query($app_agenzia, $num1, 'iddatafine'); $info_periodi_ag['numero']++; } # fine if ($mot2 != "x") } # fine for $num1 if ($info_periodi_ag['numero']) { inserisci_prenota_fittizie($info_periodi_ag, $profondita2, $app_prenota_id2, $inizio_prenota_id2, $fine_prenota_id2, $prenota_in_app_sett2, $app_assegnabili_id2); } $occupare_app_agenzia_sempre = "NO"; for ($num1 = $idinizioperiodo_tot; $num1 <= $idfineperiodo_tot; $num1++) { $numprenotazioni = 0; for ($num2 = 0; $num2 < $dati_app['totapp']; $num2++) { if ($prenota_in_app_sett2[$dati_app['posizione'][$num2]][$num1]) { $numprenotazioni++; } } if ($numprenotazioni >= $numappartamenti) { $occupare_app_agenzia_sempre = "SI"; } } # fine for $num1 if ($occupare_app_agenzia_sempre != "SI") { $app_orig_prenota_id = $app_prenota_id2; liberasettimane($idinizioperiodo_vett, $idfineperiodo_vett, $limiti_var2, $anno, $fatto_libera, $app_liberato, $profondita2, $app_richiesti, $app_prenota_id2, $app_orig_prenota_id, $inizio_prenota_id2, $fine_prenota_id2, $app_assegnabili_id2, $prenota_in_app_sett2, $dati_app, $PHPR_TAB_PRE . "prenota"); } else { $fatto_libera = "NO"; } if ($fatto_libera == "SI") { $risul_agg = aggiorna_tableprenota($app_prenota_id2, $app_orig_prenota_id, $tableprenota); if (!$risul_agg) { $fatto_libera = "NO"; } else { $occupare_app_agenzia = "NO"; $appartamento = $app_liberato; } # fine else if (!$risul_agg) } else { $occupare_app_agenzia = "SI"; $limiti_var['t_limite'] = time() + $sec_limite_libsett; $app_liberato = ""; $app_orig_prenota_id = $app_prenota_id; liberasettimane($idinizioperiodo_vett, $idfineperiodo_vett, $limiti_var, $anno, $fatto_libera2, $app_liberato, $profondita, $app_richiesti, $app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $prenota_in_app_sett, $dati_app, $PHPR_TAB_PRE . "prenota"); if ($fatto_libera2 != "NO") { $risul_agg = aggiorna_tableprenota($app_prenota_id, $app_orig_prenota_id, $tableprenota); if (!$risul_agg) { $fatto_libera2 = "NO"; } } # fine if ($fatto_libera2 != "NO") if ($fatto_libera2 == "NO") { $inserire = "NO"; $mess_errore .= mex("Nel periodo selezionato non è possibile ospitare il cliente negli appartamenti richiesti", 'unit.php') . ".<br>"; for ($n_t = 1; $n_t <= $num_tipologie; $n_t++) { $mess_prenota .= mex("Prenotazione", "prenota.php") . mex("dal", "prenota.php") . " <b>" . formatta_data($inizioperiodo_orig[$n_t], $stile_data) . "</b> " . mex("al", "prenota.php") . " <b>" . formatta_data($fineperiodo_orig[$n_t], $stile_data) . "</b>"; $mess_prenota .= " " . mex("a nome di", "prenota.php") . " <b>{$cognome}</b> "; if ($numpersone[$n_t]) { $mess_prenota .= " " . mex("per", "prenota.php") . " <b>" . $numpersone[$n_t] . "</b> " . mex("persone", "prenota.php") . ""; } if ($dati_tariffe[$tipotariffa[$n_t]]['nome']) { $nometariffa_vedi = $dati_tariffe[$tipotariffa[$n_t]]['nome']; } else { $nometariffa_vedi = mex("tariffa", "prenota.php") . substr($tipotariffa[$n_t], 7); } $mess_prenota .= ", " . mex("tariffa", "prenota.php") . " \"{$nometariffa_vedi}\".<br><br>"; } # fine for $n_t } else { $appartamento = $app_liberato; $mess_regola1 .= mex("Sono stati fatti i seguenti spostamenti nei periodi della <div style=\"display: inline; color: blue;\">regola di assegnazione 1</div>", "clienti.php") . ":<br>"; for ($num1 = 0; $num1 < $num_app_agenzia; $num1++) { $mot2 = risul_query($app_agenzia, $num1, 'motivazione2'); if ($mot2 != "x") { $id_app_agenzia = risul_query($app_agenzia, $num1, 'app_agenzia'); $idinizio_app_agenzia = risul_query($app_agenzia, $num1, 'iddatainizio'); $idfine_app_agenzia = risul_query($app_agenzia, $num1, 'iddatafine'); $motivazione_app_agenzia = risul_query($app_agenzia, $num1, 'motivazione'); $idprenota_cambiate_da_ag = esegui_query("select idprenota from {$tableprenota} where idappartamenti = '{$id_app_agenzia}' and iddatainizio <= '{$idfine_app_agenzia}' and iddatafine >= '{$idinizio_app_agenzia}'"); $num_idprenota_cambiate_da_ag = numlin_query($idprenota_cambiate_da_ag); for ($num2 = 0; $num2 < $num_idprenota_cambiate_da_ag; $num2 = $num2 + 1) { $idprenota_cambiata = risul_query($idprenota_cambiate_da_ag, $num2, 'idprenota'); if ($app_prenota_id[$idprenota_cambiata] and $app_prenota_id[$idprenota_cambiata] != $id_app_agenzia) { $idapp_camb = $app_prenota_id[$idprenota_cambiata]; $dati_cambiati = esegui_query("select * from {$tableprenota} where idprenota = '{$idprenota_cambiata}'"); $idclienti_camb = risul_query($dati_cambiati, 0, 'idclienti'); $cliente_camb = esegui_query("select cognome from {$tableclienti} where idclienti = '{$idclienti_camb}'"); if ($idclienti_camb) { $cliente_camb = risul_query($cliente_camb, 0, 'cognome'); } else { $cliente_camb = "?"; } $iddatainizio_camb = $inizio_prenota_id[$idprenota_cambiata]; $datainizio_camb = esegui_query("select datainizio from {$tableperiodi} where idperiodi = '{$iddatainizio_camb}'"); $datainizio_camb = risul_query($datainizio_camb, 0, 'datainizio'); $datainizio_camb_f = formatta_data($datainizio_camb, $stile_data); $iddatafine_camb = $fine_prenota_id[$idprenota_cambiata]; $datafine_camb = esegui_query("select datafine from {$tableperiodi} where idperiodi = '{$iddatafine_camb}'"); $datafine_camb = risul_query($datafine_camb, 0, 'datafine'); $datafine_camb_f = formatta_data($datafine_camb, $stile_data); $mess_regola1 .= mex("La prenotazione dal", "clienti.php") . " {$datainizio_camb_f} " . mex("al", "clienti.php") . " {$datafine_camb_f} " . mex("a nome di", "clienti.php") . " {$cliente_camb} " . mex("verrà spostata dall'appartamento", 'unit.php') . " <div style=\"display: inline; color: blue;\"><b>{$id_app_agenzia}</b></div> (<b>{$motivazione_app_agenzia}</b>) " . mex("al", "clienti.php") . " {$idapp_camb}.<br>"; } # fine if ($app_prenota_id[$idprenota_cambiata] and $app_prenota_id[$idprenota_cambiata] != $id_app_agenzia) } # fine for $num2 $idprenota_cambiate_a_ag = prenota_in_app_e_periodo($id_app_agenzia, $idinizio_app_agenzia, $idfine_app_agenzia, $prenota_in_app_sett, $fine_prenota_id, $num_pca); for ($num2 = 1; $num2 <= $num_pca; $num2++) { $idprenota_cambiata = $idprenota_cambiate_a_ag[$num2]; if ($app_orig_prenota_id[$idprenota_cambiata] and $app_prenota_id[$idprenota_cambiata] != $app_orig_prenota_id[$idprenota_cambiata]) { $dati_cambiati = esegui_query("select * from {$tableprenota} where idprenota = {$idprenota_cambiata}"); $idapp_camb = $app_orig_prenota_id[$idprenota_cambiata]; $idclienti_camb = risul_query($dati_cambiati, 0, 'idclienti'); $cliente_camb = esegui_query("select cognome from {$tableclienti} where idclienti = {$idclienti_camb}"); if ($idclienti_camb) { $cliente_camb = risul_query($cliente_camb, 0, 'cognome'); } else { $cliente_camb = "?"; } $iddatainizio_camb = $inizio_prenota_id[$idprenota_cambiata]; $datainizio_camb = esegui_query("select datainizio from {$tableperiodi} where idperiodi = {$iddatainizio_camb}"); $datainizio_camb = risul_query($datainizio_camb, 0, 'datainizio'); $datainizio_camb_f = formatta_data($datainizio_camb, $stile_data); $iddatafine_camb = $fine_prenota_id[$idprenota_cambiata]; $datafine_camb = esegui_query("select datafine from {$tableperiodi} where idperiodi = {$iddatafine_camb}"); $datafine_camb = risul_query($datafine_camb, 0, 'datafine'); $datafine_camb_f = formatta_data($datafine_camb, $stile_data); $mess_regola1 .= mex("La prenotazione dal", "clienti.php") . " {$datainizio_camb_f} " . mex("al", "clienti.php") . " {$datafine_camb_f} " . mex("a nome di", "clienti.php") . " {$cliente_camb} " . mex("verrà spostata dall'appartamento", 'unit.php') . " {$idapp_camb} " . mex("al", "clienti.php") . " <div style=\"display: inline; color: blue;\"><b>{$id_app_agenzia}</b></div> (<b>{$motivazione_app_agenzia}</b>).<br>"; } # fine if ($app_orig_prenota_id[$idprenota_cambiata] and... } # fine for $num2 for ($num2 = 1; $num2 <= $id_app_richiesti; $num2++) { if ($id_app_richiesti > 1) { $appartamento_controlla = $appartamento[$num2]; } else { $appartamento_controlla = $appartamento; } if ($id_app_agenzia == $appartamento_controlla and $idinizio_app_agenzia <= $idfineperiodo and $idfine_app_agenzia >= $idinizioperiodo) { $mess_regola1 .= mex("La nuova prenotazione verrà inserita nell'appartamento", 'unit.php') . " <div style=\"display: inline; color: blue;\"><b>{$id_app_agenzia}</b></div> (<b>{$motivazione_app_agenzia}</b>).<br>"; } # fine if ($id_app_agenzia == $appartamento_controlla and ... } # fine for $num2 } # fine if ($mot2 != "x") } # fine for $num1 } # fine else if ($fatto_libera2 == "NO") } # fine else if ($fatto_libera == "SI") } else { # se non ci sono app_agenzia della regola di assegnazione 1 unset($limiti_var); unset($profondita_); unset($app_prenota_id_); unset($app_orig_prenota_id_); unset($inizio_prenota_id_); unset($fine_prenota_id_); unset($app_assegnabili_id_); unset($prenota_in_app_sett_); unset($dati_app_); unset($app_liberato); $limiti_var["lim_prenota_temp"] = $lim_prenota_temp; liberasettimane($idinizioperiodo_vett, $idfineperiodo_vett, $limiti_var, $anno, $fatto_libera, $app_liberato, $profondita_, $app_richiesti, $app_prenota_id_, $app_orig_prenota_id_, $inizio_prenota_id_, $fine_prenota_id_, $app_assegnabili_id_, $prenota_in_app_sett_, $dati_app_, $PHPR_TAB_PRE . "prenota"); if ($fatto_libera == "NO") { $inserire = "NO"; $mess_errore .= mex("Nel periodo selezionato non è possibile ospitare il cliente in un appartamento tra quelli richiesti", 'unit.php') . ".<br>"; for ($n_t = 1; $n_t <= $num_tipologie; $n_t++) { $mess_prenota .= mex("Prenotazione", "prenota.php") . mex("dal", "prenota.php") . " <b>" . formatta_data($inizioperiodo_orig[$n_t], $stile_data) . "</b> " . mex("al", "prenota.php") . " <b>" . formatta_data($fineperiodo_orig[$n_t], $stile_data) . "</b>"; $mess_prenota .= " " . mex("a nome di", "prenota.php") . " <b>{$cognome}</b> "; if ($numpersone[$n_t]) { $mess_prenota .= " " . mex("per", "prenota.php") . " <b>" . $numpersone[$n_t] . "</b> " . mex("persone", "prenota.php") . ""; } if ($dati_tariffe[$tipotariffa[$n_t]]['nome']) { $nometariffa_vedi = $dati_tariffe[$tipotariffa[$n_t]]['nome']; } else { $nometariffa_vedi = mex("tariffa", "prenota.php") . substr($tipotariffa[$n_t], 7); } $mess_prenota .= ", " . mex("tariffa", "prenota.php") . " \"{$nometariffa_vedi}\".<br><br>"; } # fine for $n_t } else { $appartamento = $app_liberato; } } # fine else if ($num_app_agenzia != 0) } # fine if ($inserire != "NO") if ($inserire != "NO") { $metodi_pagamento = esegui_query("select valpersonalizza from {$tablepersonalizza} where idpersonalizza = 'metodi_pagamento' and idutente = '{$id_utente}'"); $metodi_pagamento = risul_query($metodi_pagamento, 0, 'valpersonalizza'); if ($metodi_pagamento) { $metodi_pagamento = explode(",", $metodi_pagamento); } $origini_prenota = esegui_query("select valpersonalizza from {$tablepersonalizza} where idpersonalizza = 'origini_prenota' and idutente = '{$id_utente}'"); $origini_prenota = risul_query($origini_prenota, 0, 'valpersonalizza'); if ($origini_prenota) { $origini_prenota = explode(",", $origini_prenota); } for ($n_t = 1; $n_t <= $num_tipologie; $n_t++) { $lunghezza_periodo = $fineperiodo[$n_t] - $inizioperiodo[$n_t] + 1; $max_idprenota = esegui_query("select numlimite from {$tablecostiprenota} where idcostiprenota = '1'"); $max_idprenota = risul_query($max_idprenota, 0, 'numlimite'); if ($id_prenota_imp[$n_t]) { $idprenota = $id_prenota_imp[$n_t]; } else { $idprenota = $max_idprenota; } if ($idprenota >= $max_idprenota) { esegui_query("update {$tablecostiprenota} set numlimite = '" . ($idprenota + 1) . "' where idcostiprenota = '1'"); } $mess_prenota .= mex("Prenotazione", "prenota.php") . " {$idprenota} " . mex("dal", "prenota.php") . " <b>" . formatta_data($inizioperiodo_orig[$n_t], $stile_data) . "</b> " . mex("al", "prenota.php") . " <b>" . formatta_data($fineperiodo_orig[$n_t], $stile_data) . "</b> ({$lunghezza_periodo} " . mex("{$parola_settiman}", "prenota.php"); if ($lunghezza_periodo == 1) { $mess_prenota .= mex("{$lettera_a}", "prenota.php"); } else { $mess_prenota .= mex("{$lettera_e}", "prenota.php"); } $mess_prenota .= ") " . mex("a nome di", "prenota.php") . " <b>{$cognome}</b> "; if ($numpersone[$n_t]) { $mess_prenota .= mex("per", 'prenota.php') . " <b>" . $numpersone[$n_t] . "</b> " . mex("persone", 'prenota.php') . " "; } $mess_prenota .= mex("nell'appartamento", 'unit.php') . " <b>" . $appartamento[$n_t] . "</b>"; if ($assegnazioneapp[$n_t] == "k") { $mess_prenota .= " (" . mex("fisso", "unit.php") . ")"; } else { $mess_prenota .= " (" . mex("mobile", "prenota.php"); if ($lista_app[$n_t]) { $mess_prenota .= " " . mex("in", "prenota.php") . " " . str_replace(",", ", ", $lista_app[$n_t]); } $mess_prenota .= ")"; } # fine else if ($assegnazioneapp[$n_t] == "k") $mess_prenota .= ":<br><br>"; $costo_tariffa_tot = (double) 0; unset($lista_tariffe_sett); unset($lista_tariffep_sett); $tar_sett_imp = $tariffe_sett_imp[$n_t]; for ($num2 = $inizioperiodo[$n_t]; $num2 <= $fineperiodo[$n_t]; $num2++) { $riga_tariffa = esegui_query("select * from {$tableperiodi} where idperiodi = {$num2}"); if (strcmp($tar_sett_imp[$num2], "")) { $costo_tariffa = $tar_sett_imp[$num2]; } else { $costo_tariffa = risul_query($riga_tariffa, 0, $tipotariffa[$n_t]); } if ($dati_tariffe[$tipotariffa[$n_t]]['moltiplica'] == "p") { if (!strcmp($costo_tariffa, "")) { $costo_tariffa = 0; } if (strcmp($tar_sett_imp[$num2], "")) { $costo_tariffap = 0; } else { $costo_tariffap = risul_query($riga_tariffa, 0, $tipotariffa[$n_t] . "p"); } if (!strcmp($costo_tariffap, "")) { $costo_tariffap = 0; } $costo_tariffap = (double) $costo_tariffap * (double) $numpersone[$n_t]; $lista_tariffep_sett .= "," . $costo_tariffap; $costo_tariffa = (double) $costo_tariffa + $costo_tariffap; } # fine if ($dati_tariffe[$tipotariffa[$n_t]]['moltiplica'] == "p") $costo_tariffa_tot = (double) $costo_tariffa_tot + (double) $costo_tariffa; $lista_tariffe_sett .= "," . $costo_tariffa; } # fine for $num2 $lista_tariffe_sett = substr($lista_tariffe_sett, 1); if ($lista_tariffep_sett) { $lista_tariffep_sett = substr($lista_tariffep_sett, 1); $lista_tariffe_sett .= ";{$lista_tariffep_sett}"; } # fine if ($lista_tariffep_sett) $costo_tariffa = $costo_tariffa_tot; $nometariffa = $dati_tariffe[$tipotariffa[$n_t]]['nome']; if ($nometariffa == "") { $nometariffa = $tipotariffa[$n_t]; $nometariffa_vedi = mex("tariffa", "prenota.php") . substr($tipotariffa[$n_t], 7); } else { $nometariffa_vedi = $nometariffa; } $nometariffa = aggslashdb($nometariffa); $tariffa = $nometariffa . "#@&" . $costo_tariffa_tot; if ($dati_tariffe[$tipotariffa[$n_t]]['moltiplica'] == "p") { $tariffa .= "#@&p"; } $costo_tariffa_tot_p = punti_in_num($costo_tariffa_tot, $stile_soldi); $mess_prenota .= "{$costo_tariffa_tot_p} {$Euro} " . mex("tariffa", "prenota.php") . " \"{$nometariffa_vedi}\"<br>"; $valori = "abcdefghijkmnpqrstuvwxz"; srand((double) microtime() * 1000000); unset($cod_prenota); for ($num2 = 0; $num2 < 4; $num2++) { $cod_prenota .= substr($valori, rand(0, 22), 1); } if ($conferma[$n_t] == "SI") { $conf = "S"; } else { $conf = "N"; } if ($pagato[$n_t] > 0) { $conf = "S"; } $datainserimento = date("Y-m-d H:i:s", time() + C_DIFF_ORE * 3600); esegui_query("insert into {$tableprenota} (idprenota,idclienti,idappartamenti,iddatainizio,iddatafine,tariffa,tariffesettimanali,codice,conferma,datainserimento,hostinserimento,utente_inserimento) values ('{$idprenota}','" . $idclienti[$n_t] . "','" . aggslashdb($appartamento[$n_t]) . "','" . $inizioperiodo[$n_t] . "','" . $fineperiodo[$n_t] . "','{$tariffa}','{$lista_tariffe_sett}','{$cod_prenota}','{$conf}','{$datainserimento}','{$HOSTNAME}','{$id_utente_ins}')"); if ($numpersone[$n_t]) { esegui_query("update {$tableprenota} set num_persone = '" . $numpersone[$n_t] . "' where idprenota = '{$idprenota}' "); } # fine if ($numpersone[$n_t]) if ($dati_tariffe[$tipotariffa[$n_t]]['tasse_percent']) { esegui_query("update {$tableprenota} set tasseperc = '" . $dati_tariffe[$tipotariffa[$n_t]]['tasse_percent'] . "' where idprenota = '{$idprenota}' "); } # fine if ($dati_tariffe[$tipotariffa[$n_t]]['tasse_percent']) $caparra[$n_t] = formatta_soldi($caparra[$n_t]); if (controlla_soldi($caparra[$n_t], "pos") == "NO") { $caparra[$n_t] = ""; } if (!$caparra[$n_t]) { $caparra[$n_t] = calcola_caparra($dati_tariffe, $tipotariffa[$n_t], $inizioperiodo[$n_t], $fineperiodo[$n_t], $costo_tariffa_tot, $lista_tariffe_sett); } $sconto[$n_t] = (double) formatta_soldi($sconto[$n_t]); if ($sconto[$n_t] and controlla_soldi($sconto[$n_t]) == "SI") { if ($sconto[$n_t] > $costo_tariffa_tot) { $sconto[$n_t] = $costo_tariffa_tot; } esegui_query("update {$tableprenota} set sconto = '" . $sconto[$n_t] . "' where idprenota = '{$idprenota}' "); $sconto_p = punti_in_num($sconto[$n_t], $stile_soldi); if (substr($sconto_p, 0, 1) == "-") { $sconto_p = substr($sconto_p, 1); } else { $mess_prenota .= "-"; } $mess_prenota .= "{$sconto_p} {$Euro} " . mex("Sconto", "prenota.php") . "<br>"; $costo_tariffa_tot = (double) $costo_tariffa_tot - (double) $sconto[$n_t]; } # fine if ($sconto[$n_t] and... $commissioni[$n_t] = formatta_soldi($commissioni[$n_t]); if (controlla_soldi($commissioni[$n_t], "pos") == "NO") { $commissioni[$n_t] = ""; } if (!$commissioni[$n_t]) { $commissioni[$n_t] = calcola_commissioni($dati_tariffe, $tipotariffa[$n_t], $inizioperiodo[$n_t], $fineperiodo[$n_t], $lista_tariffe_sett, $sconto[$n_t], 0); } esegui_query("update {$tableprenota} set tariffa_tot = '{$costo_tariffa_tot}' where idprenota = '{$idprenota}' "); $costo_tariffa_tot_p = punti_in_num($costo_tariffa_tot, $stile_soldi); $mess_prenota .= "<b>{$costo_tariffa_tot_p} {$Euro} " . mex("TOTALE", "prenota.php") . "</b><br>"; if ($lista_app[$n_t]) { esegui_query("update {$tableprenota} set app_assegnabili = '" . $lista_app[$n_t] . "' where idprenota = '{$idprenota}' "); } # fine if ($lista_app[$n_t]) if ($assegnazioneapp[$n_t]) { esegui_query("update {$tableprenota} set assegnazioneapp = '" . $assegnazioneapp[$n_t] . "' where idprenota = '{$idprenota}' "); } # fine if ($assegnazioneapp[$n_t]) if ($caparra[$n_t]) { if ($caparra[$n_t] > $costo_tariffa_tot) { $caparra[$n_t] = $costo_tariffa_tot; } esegui_query("update {$tableprenota} set caparra = '" . $caparra[$n_t] . "' where idprenota = '{$idprenota}' "); $da_pagare = $costo_tariffa_tot - $caparra[$n_t]; $caparra_p = punti_in_num($caparra[$n_t], $stile_soldi); $da_pagare_p = punti_in_num($da_pagare, $stile_soldi); $mess_prenota .= "<br>" . mex("Caparra", "prenota.php") . ": <b>{$caparra_p}</b> {$Euro} (" . mex("resto da pagare", "prenota.php") . ": {$da_pagare_p} {$Euro}).<br>"; } # fine if ($caparra[$n_t]) $met_trovato = "NO"; if ($met_paga_caparra[$n_t] and $metodi_pagamento) { for ($num2 = 0; $num2 < count($metodi_pagamento); $num2++) { if ($met_paga_caparra[$n_t] == $metodi_pagamento[$num2]) { $met_trovato = "SI"; } } # fine for $num2 if ($met_trovato == "SI") { esegui_query("update {$tableprenota} set metodo_pagamento = '" . aggslashdb($met_paga_caparra[$n_t]) . "' where idprenota = '{$idprenota}' "); if (!$caparra) { $mess_prenota .= "<br>"; } $mess_prenota .= mex("Metodo pagamento caparra", "prenota.php") . ": <b>" . $met_paga_caparra[$n_t] . "</b>.<br>"; } # fine if ($met_trovato == "SI") } # fine if ($met_paga_caparra[$n_t] and $metodi_pagamento) if ($commissioni[$n_t]) { esegui_query("update {$tableprenota} set commissioni = '" . $commissioni[$n_t] . "' where idprenota = '{$idprenota}' "); $resto_comm = $costo_tariffa_tot - $commissioni[$n_t]; $commissioni_p = punti_in_num($commissioni[$n_t], $stile_soldi); $resto_comm_p = punti_in_num($resto_comm, $stile_soldi); if (!$caparra[$n_t] and $met_trovato == "NO") { $mess_prenota .= "<br>"; } $mess_prenota .= mex("Commissioni", "prenota.php") . ": <b>{$commissioni_p}</b> {$Euro} (" . mex("resto commissioni", "prenota.php") . ": {$resto_comm_p} {$Euro}).<br>"; } # fine if ($commissioni[$n_t]) # calcolo costi nulli, non letto e senza inventario da associare alla tariffa, tutti come se fossero "se possibile" if ($ins_costi_agg == "costi_nulli") { unset($num_letti_agg); unset($num_costi_presenti); $oggi_costo = date("Ymd", time() + C_DIFF_ORE * 3600); for ($num_costo = 0; $num_costo < $dati_ca['num']; $num_costo++) { if (!$dati_ca[$num_costo]['valore'] and !$dati_ca[$num_costo]['valore_perc'] and $dati_ca[$num_costo]['letto'] != "s" and !$dati_ca[$num_costo]['tipo_beniinv']) { $associa_costo = "NO"; $associa_costo_tariffa = associa_costo_a_tariffa($dati_ca, $num_costo, $tipotariffa[$n_t], $fineperiodo[$n_t] - $inizioperiodo[$n_t] + 1); if ($associa_costo_tariffa == "SI") { $associa_costo = "SI"; } if ($associa_costo_tariffa != "SI" and !$dati_ca[$num_costo]["incomp_" . $tipotariffa[$n_t]]) { if ($dati_ca[$num_costo]['assegna_con_num_prenota'] and count($inizioperiodo) >= $dati_ca[$num_costo]['assegna_con_num_prenota']) { $associa_costo = "SI"; } if ($dati_ca[$num_costo]['assegna_da_ini_prenota']) { $giorni_lim = substr($dati_ca[$num_costo]['assegna_da_ini_prenota'], 1); $limite = date("Ymd", mktime(0, 0, 0, substr($inizioperiodo_orig[$n_t], 5, 2), substr($inizioperiodo_orig[$n_t], 8, 2) - $giorni_lim, substr($inizioperiodo_orig[$n_t], 0, 4))); if (substr($dati_ca[$num_costo]['assegna_da_ini_prenota'], 0, 1) == ">" and $oggi_costo < $limite) { $associa_costo = "SI"; } if (substr($dati_ca[$num_costo]['assegna_da_ini_prenota'], 0, 1) == "<" and $oggi_costo > $limite) { $associa_costo = "SI"; } } # fine if ($dati_ca[$num_costo][assegna_da_ini_prenota]) } # fine if ($associa_costo_tariffa != "SI" and... if ($associa_costo == "SI") { #if ($dati_ca[$num_costo][tipo_val] == "q" and $costo_totale_presente = "SI") $associa_costo = "NO"; $settimane_costo = calcola_settimane_costo($tableperiodi, $dati_ca, $num_costo, $inizioperiodo[$n_t], $fineperiodo[$n_t], "", ""); calcola_moltiplica_costo($dati_ca, $num_costo, $moltiplica, $inizioperiodo[$n_t], $fineperiodo[$n_t], $settimane_costo, "", $numpersone[$n_t], $num_letti_agg); $num_costi_presenti_copia = $num_costi_presenti; $periodo_costo_trovato = trova_periodo_permesso_costo($dati_ca, $num_costo, $inizioperiodo[$n_t], $fineperiodo[$n_t], $settimane_costo); if ($periodo_costo_trovato == "NO") { $associa_costo = "NO"; } else { if (controlla_num_limite_costo($tablecostiprenota, $tableprenota, $dati_ca, $num_costo, $num_costi_presenti_copia, $inizioperiodo[$n_t], $fineperiodo[$n_t], $settimane_costo, $moltiplica) == "NO") { $associa_costo = "NO"; } } if ($associa_costo == "SI") { $num_costi_presenti = $num_costi_presenti_copia; $idcostiprenota = esegui_query("select max(idcostiprenota) from {$tablecostiprenota}"); $idcostiprenota = risul_query($idcostiprenota, 0, 0) + 1; $tipo_ca = $dati_ca[$num_costo]['tipo'] . $dati_ca[$num_costo]['tipo_val']; $valore_ca = $dati_ca[$num_costo]['valore']; $valore_perc_ca = $dati_ca[$num_costo]['valore_perc']; $associasett_ca = $dati_ca[$num_costo]['associasett']; if ($dati_ca[$num_costo]['var_percentuale'] != "s" and $dati_ca[$num_costo]['tipo_val'] != "f") { $tipo_ca = $dati_ca[$num_costo]['tipo'] . "f"; $moltiplica = 1; if ($dati_ca[$num_costo]['tipo'] == "s") { $settimane_costo = 1; $associasett_ca = "n"; } # fine if ($dati_ca[$num_costo][tipo] == "s") } # fine if ($dati_ca[$num_costo][var_percentuale] != "s" and... if ($dati_ca[$num_costo]['var_moltiplica'] == "s") { $varmoltiplica_ca = $dati_ca[$num_costo]['moltiplica'] . $dati_ca[$num_costo]['molt_max'] . $dati_ca[$num_costo]['molt_agg'] . "," . $dati_ca[$num_costo]['molt_max_num']; } else { $varmoltiplica_ca = "cx0,"; } if ($dati_ca[$num_costo]['var_numsett'] == "s") { $varnumsett_ca = $dati_ca[$num_costo]['numsett_orig']; } else { $varnumsett_ca = "c"; } if ($dati_ca[$num_costo]['var_periodip'] == "s") { $varperiodipermessi_ca = $dati_ca[$num_costo]['periodipermessi_orig']; } else { $varperiodipermessi_ca = ""; } $varbeniinv_ca = ""; $varappincompatibili_ca = ""; if ($dati_ca[$num_costo]['var_tariffea'] == "s") { $vartariffeassociate_ca = "p" . $dati_ca[$num_costo][$tipotariffa[$n_t]]; } else { $vartariffeassociate_ca = ""; } $vartariffeincomp_ca = ""; if ($dati_ca[$num_costo]['var_tariffei'] == "s") { for ($numtariffa = 1; $numtariffa <= $dati_tariffe['num']; $numtariffa++) { if ($dati_ca[$num_costo]["incomp_tariffa" . $numtariffa] == "i") { $vartariffeincomp_ca .= "," . $numtariffa; } } # fine for $numtariffa if ($vartariffeincomp_ca) { $vartariffeincomp_ca = substr($vartariffeincomp_ca, 1); } } # fine if ($dati_ca[$num_costo][var_tariffei] == "s") if ($dati_ca[$num_costo]['var_comb'] == "s") { $variazione_ca = $dati_ca[$num_costo]['combina']; } else { $variazione_ca = "n"; } $variazione_ca .= $dati_ca[$num_costo]['escludi_tot_perc']; esegui_query("insert into {$tablecostiprenota} (idcostiprenota,idprenota,tipo,nome,valore,associasett,settimane,moltiplica,letto,idntariffe,variazione,varmoltiplica,varnumsett,varperiodipermessi,varbeniinv,varappincompatibili,vartariffeassociate,vartariffeincomp,datainserimento,hostinserimento,utente_inserimento) values ('{$idcostiprenota}','{$idprenota}','{$tipo_ca}','" . aggslashdb($dati_ca[$num_costo]['nome']) . "','{$valore_ca}','{$associasett_ca}','{$settimane_costo}','{$moltiplica}','" . $dati_ca[$num_costo]['letto'] . "','" . $dati_ca[$num_costo]['id'] . "','{$variazione_ca}','{$varmoltiplica_ca}','{$varnumsett_ca}','{$varperiodipermessi_ca}','{$varbeniinv_ca}','{$varappincompatibili_ca}','{$vartariffeassociate_ca}','{$vartariffeincomp_ca}','{$datainserimento}','{$HOSTNAME}','{$id_utente_ins}')"); if (substr($tipo_ca, 1, 1) != "f") { esegui_query("update {$tablecostiprenota} set valore_perc = '{$valore_perc_ca}', arrotonda = '" . $dati_ca[$num_costo]['arrotonda'] . "' where idcostiprenota = '{$idcostiprenota}'"); } if ($dati_ca[$num_costo]['tasseperc']) { esegui_query("update {$tablecostiprenota} set tasseperc = '" . $dati_ca[$num_costo]['tasseperc'] . "' where idcostiprenota = '{$idcostiprenota}'"); } if (strcmp($dati_ca[$num_costo]['categoria'], "")) { esegui_query("update {$tablecostiprenota} set categoria = '" . $dati_ca[$num_costo]['categoria'] . "' where idcostiprenota = '{$idcostiprenota}'"); } } # fine if ($associa_costo == "SI") } # fine if ($associa_costo == "SI") } # fine if (!$dati_ca[$num_costo]['valore'] and !$dati_ca[$num_costo]['valore_perc'] and... } # fine for $num_costo } # fine if ($ins_costi_agg == "costi_nulli") if ($origine_prenota[$n_t] and $origini_prenota) { $orig_trovata = "NO"; for ($num2 = 0; $num2 < count($origini_prenota); $num2++) { if ($origine_prenota[$n_t] == $origini_prenota[$num2]) { $orig_trovata = "SI"; } } # fine for $num2 if ($orig_trovata == "SI") { $origine_prenota[$n_t] = aggslashdb($origine_prenota[$n_t]); esegui_query("update {$tableprenota} set origine = '" . $origine_prenota[$n_t] . "' where idprenota = '{$idprenota}' "); if (!$caparra[$n_t] and $met_trovato == "NO" and !$commissioni[$n_t]) { $mess_prenota .= "<br>"; } $mess_prenota .= mex("Origine", "prenota.php") . ": <b>" . stripslashes($origine_prenota[$n_t]) . "</b>.<br>"; } # fine if ($orig_trovata == "SI") } # fine if ($origine_prenota[$n_t] and $origini_prenota) if ($giorno_stima_checkin[$n_t] and $ora_stima_checkin[$n_t] and $min_stima_checkin[$n_t]) { if ($tipo_periodi == "g") { $giorni_periodo = $lunghezza_periodo; } else { $giorni_periodo = $lunghezza_periodo * 7; } if (controlla_num_pos($giorno_stima_checkin[$n_t]) == "SI" and $giorno_stima_checkin[$n_t] >= 1 and $giorno_stima_checkin[$n_t] <= 7 and $giorno_stima_checkin[$n_t] <= $giorni_periodo + 1) { $data_stima_checkin = esegui_query("select datainizio from {$tableperiodi} where idperiodi = '" . $inizioperiodo[$n_t] . "'"); $data_stima_checkin = risul_query($data_stima_checkin, 0, 'datainizio'); $data_ini_prenota_f = formatta_data($data_stima_checkin, $stile_data); $anno_dts = substr($data_stima_checkin, 0, 4); $mese_dts = substr($data_stima_checkin, 5, 2); $giorno_dts = substr($data_stima_checkin, 8, 2); $data_stima_checkin = date("Y-m-d", mktime(0, 0, 0, $mese_dts, $giorno_dts + $giorno_stima_checkin[$n_t] - 1, $anno_dts)); $stima_checkin = $data_stima_checkin . " " . $ora_stima_checkin[$n_t] . ":" . $min_stima_checkin[$n_t] . ":00"; if (preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:00/", $stima_checkin)) { esegui_query("update {$tableprenota} set checkout = '{$stima_checkin}' where idprenota = '{$idprenota}' "); $mess_prenota .= "<br>" . mex("Orario stimato di entrata", "prenota.php") . ": <b>" . substr(str_replace($data_ini_prenota_f, "", formatta_data($stima_checkin, $stile_data)), 0, -3) . "</b>.<br>"; } # fine if (preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:00/",$stima_checkin)) } # fine if (controlla_num_pos($giorno_stima_checkin) == "SI" and... } # fine if ($giorno_stima_checkin[$n_t] and $ora_stima_checkin[$n_t] and $min_stima_checkin[$n_t]) if ($commento[$n_t]) { $commento[$n_t] = htmlspecialchars($commento[$n_t]); $mess_prenota .= "<br>" . mex("Commento", "prenota.php") . ": " . $commento[$n_t] . "<br>"; $commento[$n_t] = aggslashdb($commento[$n_t]); esegui_query("update {$tableprenota} set commento = '" . $commento[$n_t] . "' where idprenota = '{$idprenota}' "); } # fine if ($commento[$n_t]) $mess_prenota .= "<br>" . mex("Prenotazione", "prenota.php") . " {$idprenota} " . mex("inserita", "prenota.php") . "!<br>"; if ($n_t != $num_tipologie) { $mess_prenota .= "<hr style=\"width: 95%\">"; } $lista_idprenota .= ",{$idprenota}"; $lista_idini .= "," . $inizioperiodo[$n_t]; $lista_idfine .= "," . $fineperiodo[$n_t]; #$costo_tot_mess = (double) $costo_tot_mess + (double) $costo_tariffa_tot; #$caparra_mess = (double) $caparra_mess + (double) $caparra; } # fine for $n_t $lista_idprenota = substr($lista_idprenota, 1); $lista_idini = substr($lista_idini, 1); $lista_idfine = substr($lista_idfine, 1); if ($prenota_vicine == "SI") { $lista_idprenota_vett = explode(",", $lista_idprenota); for ($num1 = 0; $num1 < count($lista_idprenota_vett); $num1++) { $idprenota = $lista_idprenota_vett[$num1]; $idprenota_vicine = substr(str_replace("," . $idprenota . ",", ",", "," . $lista_idprenota . ","), 1, -1); esegui_query("update {$tableprenota} set idprenota_compagna = '{$idprenota_vicine}' where idprenota = '{$idprenota}' "); } # fine for $num1 } # fine if ($prenota_vicine == "SI") $stato['inserita'] = "SI"; } # fine if ($inserire != "NO") if (!@is_array($stato) or $stato['inserita'] != "SI") { $stato['inserita'] = "NO"; } $stato['mess_errore'] = $mess_errore; $stato['mess_regola1'] = $mess_regola1; $stato['mess_prenota'] = $mess_prenota; $stato['lista_idprenota'] = $lista_idprenota; $stato['idinizioperiodo'] = $lista_idini; $stato['idfineperiodo'] = $lista_idfine; return $lista_idprenota; }
function esegui_modifiche_prenotazione(&$inserire, &$cancellata, $id_prenota_int, $id_prenota_idpr, $num_id_prenota, $id_transazione, $id_sessione, $anno, $id_nuovo_utente_inserimento, $n_stima_checkin, $n_met_paga_caparra, $n_origine_prenota, $n_pagato, $n_confermato, $tipo_commento, $n_commento, $n_cancella_commento, $tableprenota_da_aggiornare, $tipo_sposta, $dati_da_anno_prec, $prenota_in_anno_succ, $tra_anni, $PHPR_TAB_PRE) { global $id_utente, $priv_mod_checkin, $attiva_regole1_consentite, $regole1_consentite, $attiva_tariffe_consentite, $tariffe_consentite_vett, $priv_mod_date, $priv_ins_periodi_passati, $priv_mod_commento, $priv_mod_sconto, $priv_mod_caparra, $priv_mod_pagato, $priv_mod_orig_prenota, $d_commento, $cassa_pagamenti; global $dati_ca, $d_id_utente_inserimento_idpr, $d_appartamento_idpr, $d_id_data_inizio_idpr, $d_nome_tariffa_idpr, $d_app_eliminati_costi_idpr, $d_checkin_idpr, $d_checkout_idpr, $d_prenota_comp_idpr, $fineperiodo_orig; global $id_prenota_orig, $tableperiodi_orig, $tableprenota_orig, $tablecostiprenota_orig, $tableperiodi_prec, $tableprenota_prec, $tablecostiprenota_prec, $stile_data; $pag = "modifica_prenota.php"; $tablenometariffe = $PHPR_TAB_PRE . "ntariffe" . $anno; $tableprenota = $PHPR_TAB_PRE . "prenota" . $anno; $tableperiodi = $PHPR_TAB_PRE . "periodi" . $anno; $tableregole = $PHPR_TAB_PRE . "regole" . $anno; $tablesoldi = $PHPR_TAB_PRE . "soldi" . $anno; $tableappartamenti = $PHPR_TAB_PRE . "appartamenti"; $tableclienti = $PHPR_TAB_PRE . "clienti"; $tablepersonalizza = $PHPR_TAB_PRE . "personalizza"; $tabletransazioni = $PHPR_TAB_PRE . "transazioni"; $tableutenti = $PHPR_TAB_PRE . "utenti"; $tablecostiprenota = $PHPR_TAB_PRE . "costiprenota" . $anno; $tablerelinventario = $PHPR_TAB_PRE . "relinventario"; $tablecache = $PHPR_TAB_PRE . "cache"; $tablecosti = $PHPR_TAB_PRE . "costi" . $anno; $file_interconnessioni = C_DATA_PATH . "/dati_interconnessioni.php"; if ($tableprenota_da_aggiornare == "SI") { if (@is_file($file_interconnessioni)) { include $file_interconnessioni; if (@is_array($ic_present)) { $dati_transaz = recupera_dati_transazione($id_transazione, $id_sessione, $anno, "SI", $tipo_transaz); if ($tipo_transaz == "mod_p" and risul_query($dati_transaz, 0, 'dati_transazione11') == "SI") { unset($interconnection_name); $interconn_dir = opendir("./includes/interconnect/"); while ($mod_ext = readdir($interconn_dir)) { if ($mod_ext != "." and $mod_ext != ".." and @is_dir("./includes/interconnect/{$mod_ext}")) { include "./includes/interconnect/{$mod_ext}/name.php"; if ($ic_present[$interconnection_name] == "SI") { include "./includes/interconnect/{$mod_ext}/functions_import.php"; $funz_import_reservations = "import_reservations_" . $interconnection_name; $id_utente_origi = $id_utente; $id_utente = 1; $funz_import_reservations("", "", $file_interconnessioni, $anno, $PHPR_TAB_PRE, 2, $id_utente, $HOSTNAME); $id_utente = $id_utente_origi; } # fine if ($ic_present[$interconnection_name] == "SI") } # fine if ($modello_ext != "." and $modello_ext != ".." and... } # fine while ($mod_ext = readdir($interconn_dir)) closedir($interconn_dir); } # fine if ($tipo_transaz == "mod_p" and risul_query($dati_transazione,0,'dati_transazione11') == "SI") } # fine if (@is_array($ic_present)) } # fine if (@is_file($file_interconnessioni)) $tableprenota_da_aggiornare = ""; } # fine if ($tableprenota_da_aggiornare == "SI") if ($dati_da_anno_prec == "SI" or $prenota_in_anno_succ) { if (@is_file($file_interconnessioni)) { $tabelle_lock = array($tableprenota_prec, $tableprenota_orig, $tablecostiprenota_prec, $tablecostiprenota_orig, $tablerelinventario, $tabletransazioni, $tablecache); } else { $tabelle_lock = array($tableprenota_prec, $tableprenota_orig, $tablecostiprenota_prec, $tablecostiprenota_orig, $tablerelinventario, $tabletransazioni); } $altre_tab_lock = array($tablenometariffe, $tableperiodi_prec, $tableperiodi_orig, $tableappartamenti, $tableregole, $tablepersonalizza, $tableutenti); } else { if (@is_file($file_interconnessioni)) { $tabelle_lock = array($tableprenota, $tablecostiprenota, $tablerelinventario, $tabletransazioni, $tablecache); } else { $tabelle_lock = array($tableprenota, $tablecostiprenota, $tablerelinventario, $tabletransazioni); } $altre_tab_lock = array($tablenometariffe, $tableperiodi, $tableappartamenti, $tableregole, $tablepersonalizza, $tableutenti); } # fine else if ($dati_da_anno_prec == "SI") $tabelle_lock = lock_tabelle($tabelle_lock, $altre_tab_lock); $dati_transazione = recupera_dati_transazione($id_transazione, $id_sessione, $anno, "NO", $tipo_transazione); if ($tipo_transazione != "mod_p") { $inserire = "NO"; } else { if ("," . $id_prenota_int . "," != risul_query($dati_transazione, 0, 'dati_transazione1')) { $inserire = "NO"; } } if ($inserire != "NO") { $d_data_inserimento = risul_query($dati_transazione, 0, 'dati_transazione2'); $d_host_inserimento = risul_query($dati_transazione, 0, 'dati_transazione3'); $n_costo_tot_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione4')); $n_inizioperiodo = risul_query($dati_transazione, 0, 'dati_transazione5'); $n_fineperiodo = risul_query($dati_transazione, 0, 'dati_transazione6'); $n_appartamento_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione7')); $n_assegnazioneapp_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione8')); $n_lista_app_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione9')); $n_numpersone_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione10')); $tableprenota_da_aggiornare = risul_query($dati_transazione, 0, 'dati_transazione11'); $n_nometipotariffa_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione12')); $n_costo_tariffa_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione13')); $costi_aggiuntivi_modificati_int_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione14')); $costi_aggiuntivi_da_inserire_int_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione15')); $n_sconto_caparra_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione16')); unset($n_sconto_idpr); unset($n_caparra_idpr); unset($n_commissioni_idpr); for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; if ($tipo_sposta == "fisso" and strcmp($n_appartamento_idpr[$id_prenota], "")) { $n_assegnazioneapp_idpr[$id_prenota] = "k"; } $n_sconto = explode("#@&", $n_sconto_caparra_idpr[$id_prenota]); if (strcmp($n_sconto[1], "")) { $n_caparra = (double) $n_sconto[1]; } else { $n_caparra = ""; } if (strcmp($n_sconto[2], "")) { $n_commissioni = (double) $n_sconto[2]; } else { $n_commissioni = ""; } if (strcmp($n_sconto[0], "")) { $n_sconto = (double) $n_sconto[0]; } else { $n_sconto = ""; } $n_sconto_idpr[$id_prenota] = $n_sconto; $n_caparra_idpr[$id_prenota] = $n_caparra; $n_commissioni_idpr[$id_prenota] = $n_commissioni; } # fine for $num_idpr $n_tariffesettimanali_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione17')); $id_per_corr_finto = (string) risul_query($dati_transazione, 0, 'dati_transazione18'); $prenota_comp_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione19')); $n_app_eliminati_costi_idpr = unserialize(risul_query($dati_transazione, 0, 'dati_transazione20')); if (get_magic_quotes_gpc()) { $n_pagato = stripslashes($n_pagato); $n_confermato = stripslashes($n_confermato); } # fine if (get_magic_quotes_gpc()) $n_pagato_idpr = unserialize($n_pagato); $n_confermato_idpr = unserialize($n_confermato); esegui_query("delete from {$tabletransazioni} where idtransazioni = '{$id_transazione}' and idsessione = '{$id_sessione}'"); if ($tableprenota_da_aggiornare) { $spostamenti = risul_query($dati_transazione, 0, 'spostamenti'); $spostamenti = explode(",", $spostamenti); } # fine if ($tableprenota_da_aggiornare) unset($dati_prenota_idpr); unset($beniinv_presenti); unset($num_ripetizioni_costo_mod_idpr); unset($num_ripetizioni_costo_ins_idpr); unset($n_tipotariffa_idpr); $d_data_inserimento_idpr = explode(",", $d_data_inserimento); $d_host_inserimento_idpr = explode(",", $d_host_inserimento); if (get_magic_quotes_gpc()) { $n_met_paga_caparra = stripslashes($n_met_paga_caparra); } $n_met_paga_caparra = htmlspecialchars($n_met_paga_caparra); for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; $d_checkin = $d_checkin_idpr[$id_prenota]; $d_id_data_inizio = $d_id_data_inizio_idpr[$id_prenota]; $n_costo_tot = $n_costo_tot_idpr[$id_prenota]; $n_appartamento = $n_appartamento_idpr[$id_prenota]; $n_assegnazioneapp = $n_assegnazioneapp_idpr[$id_prenota]; $n_lista_app = $n_lista_app_idpr[$id_prenota]; $n_numpersone = $n_numpersone_idpr[$id_prenota]; $n_nometipotariffa = $n_nometipotariffa_idpr[$id_prenota]; $n_costo_tariffa = $n_costo_tariffa_idpr[$id_prenota]; $costi_aggiuntivi_modificati_int = $costi_aggiuntivi_modificati_int_idpr[$id_prenota]; $costi_aggiuntivi_da_inserire_int = $costi_aggiuntivi_da_inserire_int_idpr[$id_prenota]; $n_sconto = $n_sconto_idpr[$id_prenota]; $n_caparra = $n_caparra_idpr[$id_prenota]; $n_commissioni = $n_commissioni_idpr[$id_prenota]; $n_tariffesettimanali = $n_tariffesettimanali_idpr[$id_prenota]; $prenota_comp = $prenota_comp_idpr[$id_prenota]; $n_pagato = $n_pagato_idpr[$id_prenota]; $n_confermato = $n_confermato_idpr[$id_prenota]; global ${"dati_cap" . $id_prenota}, ${"metodo_pagamento" . $id_prenota}; $dati_cap = ${"dati_cap" . $id_prenota}; unset($num_costi_presenti); $dati_prenota_idpr[$id_prenota] = esegui_query("select * from {$tableprenota} where idprenota = '{$id_prenota}' and idclienti != '0'"); $num_dati_prenota = numlin_query($dati_prenota_idpr[$id_prenota]); if ($num_dati_prenota == 0) { $inserire = "NO"; $cancellata = "SI"; } else { $n_data_inserimento = risul_query($dati_prenota_idpr[$id_prenota], 0, 'datainserimento'); $n_host_inserimento = risul_query($dati_prenota_idpr[$id_prenota], 0, 'hostinserimento'); if ($n_data_inserimento != $d_data_inserimento_idpr[$num_idpr] or $n_host_inserimento != $d_host_inserimento_idpr[$num_idpr]) { $inserire = "NO"; $cancellata = "SI"; $inizioperiodo = ""; $fineperiodo = ""; } # fine if ($n_data_inserimento != $d_data_inserimento_idpr[$num_idpr] or ... if ($n_appartamento != "") { $appartamento = $n_appartamento; } else { $appartamento = risul_query($dati_prenota_idpr[$id_prenota], 0, 'idappartamenti'); } if ($n_numpersone != "") { $numpersone = $n_numpersone; } else { $numpersone = risul_query($dati_prenota_idpr[$id_prenota], 0, 'num_persone'); } if (!$numpersone) { $numpersone = 0; } if ($n_assegnazioneapp != "") { $assegnazioneapp = $n_assegnazioneapp; } else { $assegnazioneapp = risul_query($dati_prenota_idpr[$id_prenota], 0, 'assegnazioneapp'); } if ($n_lista_app != "") { $lista_app = $n_lista_app; } else { $lista_app = risul_query($dati_prenota_idpr[$id_prenota], 0, 'app_assegnabili'); } if ($n_inizioperiodo != "") { $inizioperiodo = $n_inizioperiodo; } else { $inizioperiodo = risul_query($dati_prenota_idpr[$id_prenota], 0, 'iddatainizio'); } if ($n_fineperiodo != "") { $fineperiodo = $n_fineperiodo; } else { $fineperiodo = risul_query($dati_prenota_idpr[$id_prenota], 0, 'iddatafine'); } } # fine else if ($num_dati_prenota == 0) if ($n_stima_checkin) { $n_stima_checkin = aggslashdb($n_stima_checkin); if ($priv_mod_checkin != "s") { $inserire = "NO"; } if (!preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:00/", $n_stima_checkin)) { $inserire = "NO"; } else { $id_stima_checkin = esegui_query("select idperiodi from {$tableperiodi} where datainizio <= '" . substr($n_stima_checkin, 0, 10) . "' and datafine > '" . substr($n_stima_checkin, 0, 10) . "' "); if (numlin_query($id_stima_checkin) == 1) { $id_stima_checkin = risul_query($id_stima_checkin, 0, 'idperiodi'); if ($id_stima_checkin > $fineperiodo + 1) { $inserire = "NO"; } if ($id_stima_checkin < $inizioperiodo) { $inserire = "NO"; } } else { $inserire = "NO"; } if ($d_checkin) { $inserire = "NO"; } } # fine else if (!preg_match("/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:00/",$n_stima_checkin)) } # fine if ($n_stima_checkin) $appartamento_esistente = esegui_query("select idappartamenti,maxoccupanti from {$tableappartamenti} where idappartamenti = '{$appartamento}'"); if (numlin_query($appartamento_esistente) != 1 and $n_appartamento) { $inserire = "NO"; } else { $maxoccupanti = risul_query($appartamento_esistente, 0, 'maxoccupanti'); if ($maxoccupanti and $numpersone > $maxoccupanti and $n_numpersone) { $inserire = "NO"; } } # fine else if (numlin_query($appartamento_esistente) != 1) $appartamento_chiuso = esegui_query("select idregole from {$tableregole} where iddatainizio <= '{$fineperiodo}' and iddatafine >= '{$inizioperiodo}' and app_agenzia = '{$appartamento}' and motivazione2 = 'x' "); if (numlin_query($appartamento_chiuso)) { $inserire = "NO"; } if ($assegnazioneapp == "c" and str_replace("," . $appartamento . ",", "", "," . $lista_app . ",") == "," . $lista_app . "," and ($n_appartamento or $n_assegnazioneapp or $n_lista_app)) { $inserire = "NO"; } if ($attiva_regole1_consentite == "s" and ($n_appartamento != "" or $n_assegnazioneapp != "" or $n_lista_app != "")) { unset($appartameti_in_lista); if ($assegnazioneapp != "k" and $assegnazioneapp != "c") { $inserire = "NO"; } if ($assegnazioneapp == "k") { $appartameti_in_lista[0] = $appartamento; } if ($assegnazioneapp == "c") { $appartameti_in_lista = explode(",", $lista_app); } for ($n_lista = 0; $n_lista < count($appartameti_in_lista); $n_lista++) { $appartamento_lista = $appartameti_in_lista[$n_lista]; $motivazioni_regola1 = esegui_query("select motivazione,iddatainizio,iddatafine from {$tableregole} where iddatainizio <= '{$fineperiodo}' and iddatafine >= '{$inizioperiodo}' and app_agenzia = '{$appartamento_lista}' and (motivazione2 != 'x' or motivazione2 is NULL) order by iddatainizio"); if (numlin_query($motivazioni_regola1) == 0) { $inserire = "NO"; } else { unset($motivazioni_consentite); for ($num2 = 0; $num2 < count($regole1_consentite); $num2++) { $motivazioni_consentite[$regole1_consentite[$num2]] = "SI"; } $iddatainizio_regole_tot = risul_query($motivazioni_regola1, 0, 'iddatainizio'); $iddatafine_regole_tot = risul_query($motivazioni_regola1, 0, 'iddatafine'); $motivazione = risul_query($motivazioni_regola1, 0, 'motivazione'); if (!$motivazione) { $motivazione = " "; } if (!$motivazioni_consentite[$motivazione]) { $inserire = "NO"; } for ($num2 = 1; $num2 < numlin_query($motivazioni_regola1); $num2++) { $motivazione = risul_query($motivazioni_regola1, $num2, 'motivazione'); if (!$motivazione) { $motivazione = " "; } if (!$motivazioni_consentite[$motivazione]) { $inserire = "NO"; } $iddatainizio_regola = risul_query($motivazioni_regola1, $num2, 'iddatainizio'); if ($iddatainizio_regola == $iddatafine_regole_tot + 1) { $iddatafine_regole_tot = risul_query($motivazioni_regola1, $num2, 'iddatafine'); } else { $inserire = "NO"; } } # fine for $num2 if ($iddatainizio_regole_tot > $inizioperiodo or $iddatafine_regole_tot < $fineperiodo) { $inserire = "NO"; } } # fine else if (numlin_query($motivazioni_regola1) == 0) } # fine for $n_lista } # fine if ($attiva_regole1_consentite == "s" and... if ($dati_da_anno_prec == "SI") { passa_var_a_anno_prec($id_prenota, $tableperiodi, $tableprenota, $tablecostiprenota, $d_id_data_inizio, $d_id_data_fine, $n_fineperiodo, $inizioperiodo, $fineperiodo, $lunghezza_periodo, $dati_prenota_modifica); } if ($n_nometipotariffa != "") { $trovata_tariffa = "NO"; $dati_tariffe = dati_tariffe($tablenometariffe, "", "", $tableregole); for ($numtariffa = 1; $numtariffa <= $dati_tariffe['num']; $numtariffa++) { $tariffa = "tariffa" . $numtariffa; $nometariffa = $dati_tariffe[$tariffa]['nome']; if ($n_nometipotariffa == $tariffa or $n_nometipotariffa == $nometariffa) { $trovata_tariffa = "SI"; $n_tipotariffa = $tariffa; $n_tipotariffa_idpr[$id_prenota] = $n_tipotariffa; } # fine if ($n_nometipotariffa == $tariffa or $n_nometipotariffa == $nometariffa) } # fine for $numtariffa if ($attiva_tariffe_consentite == "s" and $tariffe_consentite_vett[substr($n_tipotariffa, 7)] != "SI" and $n_nometipotariffa != $d_nome_tariffa_idpr[$id_prenota] or $trovata_tariffa == "NO") { $inserire = "NO"; } for ($num2 = $inizioperiodo; $num2 <= $fineperiodo; $num2++) { $rigasettimana = esegui_query("select * from {$tableperiodi} where idperiodi = '{$num2}' "); $esistetariffa = risul_query($rigasettimana, 0, $n_tipotariffa); $esistetariffap = risul_query($rigasettimana, 0, $n_tipotariffa . "p"); if ((!strcmp($esistetariffa, "") or $esistetariffa < 0) and (!strcmp($esistetariffap, "") or $esistetariffap < 0)) { $inserire = "NO"; } if ($n_nometipotariffa != $d_nome_tariffa_idpr[$id_prenota] and $dati_tariffe[$n_tipotariffa]['chiusa'][$num2]) { $inserire = "NO"; } } # fine for $num2 } # fine if ($n_nometipotariffa != "") if ($priv_mod_date != "s" and ($n_inizioperiodo != "" or $n_fineperiodo != "")) { $inserire = "NO"; } if ($priv_ins_periodi_passati != "s" and $inizioperiodo < $d_id_data_inizio) { $id_periodo_corrente = calcola_id_periodo_corrente($anno); if ($id_periodo_corrente >= $inizioperiodo) { $inserire = "NO"; } } # fine if ($priv_ins_periodi_passati != "s" and $inizioperiodo < $d_id_data_inizio) #if ($n_numpersone != "" and $priv_mod_num_persone != "s") $inserire = "NO"; if ($n_numpersone and controlla_num_pos($n_numpersone) != "SI") { $inserire = "NO"; } if ($priv_mod_commento != "s" and ($n_commento != "" or $n_cancella_commento)) { $inserire = "NO"; } if (strcmp($n_sconto, "") and ($priv_mod_sconto != "s" or controlla_soldi($n_sconto) == "NO")) { $inserire = "NO"; } if (strcmp($n_caparra, "")) { if ($priv_mod_caparra != "s" or controlla_soldi($n_caparra, "SI") == "NO") { $inserire = "NO"; } if ($n_caparra > $n_costo_tot) { $inserire = "NO"; } } # fine if (strcmp($n_caparra,"")) if (strcmp($n_commissioni, "") and ($priv_mod_caparra != "s" or controlla_soldi($n_commissioni, "SI") == "NO")) { $inserire = "NO"; } if ($costi_aggiuntivi_modificati_int) { $costi_aggiuntivi_modificati = explode("#@&", $costi_aggiuntivi_modificati_int); for ($numca = 0; $numca < $dati_cap['num']; $numca++) { $num_costo_mod = "NO"; for ($num2 = 0; $num2 < count($costi_aggiuntivi_modificati); $num2++) { $costo_agg_modificato = explode("#?&", $costi_aggiuntivi_modificati[$num2]); if ($costo_agg_modificato[0] == $dati_cap[$numca]['id']) { $num_costo_mod = $num2; } } # fine for $num2 $costo_agg_modificato = explode("#?&", $costi_aggiuntivi_modificati[$num_costo_mod]); if ($costo_agg_modificato[1] != "cancella") { $num_costo = $dati_ca['id'][$dati_cap[$numca]['idntariffe']]; if ($dati_ca[$num_costo]['id'] == $dati_cap[$numca]['idntariffe'] and $dati_cap[$numca]['nome'] == $dati_ca[$num_costo]['nome'] and $dati_ca[$num_costo]['numlimite']) { $num_limite = (string) $dati_ca[$num_costo]['numlimite']; } else { $num_limite = (string) 0; } if ((string) $num_costo_mod != (string) "NO") { $settimane_costo = $costo_agg_modificato[1]; $moltiplica = $costo_agg_modificato[2]; } else { $settimane_costo = $dati_cap[$numca]['settimane']; $moltiplica = $dati_cap[$numca]['moltiplica_costo']; } # fine else if ((string) $num_costo_mod != (string) "NO") if (controlla_num_limite_costo($tablecostiprenota, $tableprenota, $dati_cap, $numca, $num_costi_presenti, $inizioperiodo, $fineperiodo, $settimane_costo, $moltiplica, $num_limite, $tra_anni) == "NO") { $inserire = "NO"; } if (str_replace(",{$appartamento},", "", "," . $dati_cap[$numca]['appincompatibili'] . ",") != "," . $dati_cap[$numca]['appincompatibili'] . ",") { $inserire = "NO"; } } # fine if ($costo_agg_modificato[1] != "cancella") if ($dati_cap[$numca]['tipo_beniinv']) { if ($costo_agg_modificato[1] != "cancella") { $num_ripetizioni_costo = ""; } else { $num_ripetizioni_costo = "0"; } $risul = controlla_beni_inventario_costo($tablerelinventario, $dati_cap, $numca, $beniinv_presenti, $num_ripetizioni_costo, "SI", $inizioperiodo, $fineperiodo, $settimane_costo, $moltiplica, $appartamento); if ($risul != "SI") { $inserire = "NO"; } if ($num_ripetizioni_costo != $dati_cap[$numca]['beniinv_ripeti']) { $beniinv_vett = explode(";", $dati_cap[$numca]['beniinv_orig']); $num_ripetizioni_costo_mod_idpr[$id_prenota][$num_costo_mod] = $num_ripetizioni_costo . substr($dati_cap[$numca]['beniinv_orig'], strlen($beniinv_vett[0])); } # fine if ($num_ripetizioni_costo != $dati_cap[$numca]['beniinv_ripeti']) } # fine if ($dati_cap[$numca]['tipo_beniinv']) } # fine for $numca } # fine if ($costi_aggiuntivi_modificati_int) if ($costi_aggiuntivi_da_inserire_int) { $costi_aggiuntivi_da_inserire = explode("#@&", $costi_aggiuntivi_da_inserire_int); for ($num2 = 0; $num2 < count($costi_aggiuntivi_da_inserire); $num2++) { $costo_agg_da_inserire = explode("#?&", $costi_aggiuntivi_da_inserire[$num2]); $num_costo = $dati_ca['id'][$costo_agg_da_inserire[9]]; if ($costo_agg_da_inserire[9] != $dati_ca[$num_costo]['id'] and $costo_agg_da_inserire[9] != "-1") { $inserire = "NO"; } elseif (controlla_num_limite_costo($tablecostiprenota, $tableprenota, $dati_ca, $num_costo, $num_costi_presenti, $inizioperiodo, $fineperiodo, $costo_agg_da_inserire[6], $costo_agg_da_inserire[7], "", $tra_anni) == "NO") { $inserire = "NO"; } if (str_replace(",{$appartamento},", "", "," . $dati_ca[$num_costo]['appincompatibili'] . ",") != "," . $dati_ca[$num_costo]['appincompatibili'] . ",") { $inserire = "NO"; } if ($dati_ca[$num_costo]['tipo_beniinv']) { $num_ripetizioni_costo_ins_idpr[$id_prenota][$num2] = ""; $risul = controlla_beni_inventario_costo($tablerelinventario, $dati_ca, $num_costo, $beniinv_presenti, $num_ripetizioni_costo_ins_idpr[$id_prenota][$num2], "SI", $inizioperiodo, $fineperiodo, $costo_agg_da_inserire[6], $costo_agg_da_inserire[7], $appartamento); if ($risul != "SI") { $inserire = "NO"; } } # fine if ($dati_ca[$num_costo]['tipo_beniinv']) } # fine for $num2 } # fine if ($costi_aggiuntivi_da_inserire_int) if ($dati_da_anno_prec == "SI") { passa_var_a_anno_corr($id_prenota, $tableperiodi, $tableprenota, $tablecostiprenota, $d_id_data_inizio, $d_id_data_fine, $n_fineperiodo, $inizioperiodo, $fineperiodo, $lunghezza_periodo); } if ($priv_mod_caparra != "s" and $n_met_paga_caparra) { $inserire = "NO"; } if ($n_met_paga_caparra or ${"metodo_pagamento" . $id_prenota}) { if (get_magic_quotes_gpc()) { ${"metodo_pagamento" . $id_prenota} = stripslashes(${"metodo_pagamento" . $id_prenota}); } ${"metodo_pagamento" . $id_prenota} = htmlspecialchars(${"metodo_pagamento" . $id_prenota}); $metodi_pagamento = esegui_query("select valpersonalizza from {$tablepersonalizza} where idpersonalizza = 'metodi_pagamento' and idutente = '{$id_utente}'"); $metodi_pagamento = risul_query($metodi_pagamento, 0, 'valpersonalizza'); $metodi_pagamento = explode(",", $metodi_pagamento); if ($n_met_paga_caparra) { $metodo_trovato = "NO"; for ($num1 = 0; $num1 < count($metodi_pagamento); $num1++) { if ($metodi_pagamento[$num1] == $n_met_paga_caparra) { $metodo_trovato = "SI"; } } if ($metodo_trovato == "NO") { $inserire = "NO"; } } # fine if ($n_met_paga_caparra) if (${"metodo_pagamento" . $id_prenota}) { $metodo_trovato = "NO"; for ($num1 = 0; $num1 < count($metodi_pagamento); $num1++) { if ($metodi_pagamento[$num1] == ${"metodo_pagamento" . $id_prenota}) { $metodo_trovato = "SI"; } } if ($metodo_trovato == "NO") { $inserire = "NO"; } } # fine if (${"metodo_pagamento".$id_prenota}) } # fine if ($n_met_paga_caparra or ${"metodo_pagamento".$id_prenota}) if ($priv_mod_pagato == "n" and $n_confermato != "") { $inserire = "NO"; } if ($n_confermato and $n_confermato != "S" and $n_confermato != "N") { $inserire = "NO"; } if ($priv_mod_pagato != "s" and $n_pagato != "") { $inserire = "NO"; } if ($n_pagato and controlla_soldi($n_pagato, "SI") == "NO" or $n_pagato > $n_costo_tot) { $inserire = "NO"; } if ($inserire == "NO") { break; } } # fine for $num_idpr if ($priv_mod_orig_prenota != "s" and $n_origine_prenota) { $inserire = "NO"; } if ($n_origine_prenota) { if (get_magic_quotes_gpc()) { $n_origine_prenota = stripslashes($n_origine_prenota); } $n_origine_prenota = htmlspecialchars($n_origine_prenota); $origini_prenota = esegui_query("select valpersonalizza from {$tablepersonalizza} where idpersonalizza = 'origini_prenota' and idutente = '{$id_utente}'"); $origini_prenota = risul_query($origini_prenota, 0, 'valpersonalizza'); $origini_prenota = explode(",", $origini_prenota); $origine_trovata = "NO"; for ($num1 = 0; $num1 < count($origini_prenota); $num1++) { if ($origini_prenota[$num1] == $n_origine_prenota) { $origine_trovata = "SI"; } } if ($origine_trovata == "NO") { $inserire = "NO"; } } # fine if ($n_origine_prenota) if ($id_nuovo_utente_inserimento != "" and $id_utente == 1) { $id_nuovo_utente_inserimento = aggslashdb($id_nuovo_utente_inserimento); $verifica_utente = esegui_query("select * from {$tableutenti} where idutenti = '{$id_nuovo_utente_inserimento}'"); if (numlin_query($verifica_utente) != 1) { $inserire = "NO"; } } # fine if ($id_nuovo_utente_inserimento != "" and $id_utente == 1) if ($n_commento != "") { if (get_magic_quotes_gpc()) { $n_commento = stripslashes($n_commento); } $n_commento = htmlspecialchars($n_commento); } # fine if ($n_commento != "") } # fine if ($inserire != "NO") if ($inserire != "NO") { # funzione: se ritorna $prenota_comp vuota sono tutte vicine function controlla_prenota_vicine(&$prenota_comp, $dati_app, $app_prenota_id) { if ($prenota_comp) { $prenota_comp_vett = explode(",", $prenota_comp); $num_prenota_comp = count($prenota_comp_vett); $prenota_comp = substr(str_replace("," . $prenota_comp_vett[0] . ",", ",", ",{$prenota_comp},"), 1, -1); $app_corr = $app_prenota_id[$prenota_comp_vett[0]]; $num_vic = 0; for ($num1 = 1; $num1 < $num_prenota_comp; $num1++) { $app_vicini = $dati_app["vicini"][$app_prenota_id[$prenota_comp_vett[$num1]]]; if (str_replace(",{$app_corr},", "", ",{$app_vicini},") != ",{$app_vicini},") { $prenota_comp = substr(str_replace("," . $prenota_comp_vett[$num1] . ",", ",", ",{$prenota_comp},"), 1, -1); $pren_vicina[$num_vic] = $prenota_comp_vett[$num1]; $num_vic++; } # fine (str_replace(",$app_corr,","",",$app_vicini,") != ",$app_vicini,") } # fine for $num1 for ($num1 = 0; $num1 < $num_vic; $num1++) { if (!$prenota_comp) { break; } $prenota_comp = $pren_vicina[$num1] . "," . $prenota_comp; controlla_prenota_vicine($prenota_comp, $dati_app, $app_prenota_id); } # fine for $num1 } # fine if ($prenota_comp) } # fine function controlla_prenota_vicine # aggiorno le posizioni e faccio i controlli. if ($tableprenota_da_aggiornare) { if (!function_exists("tab_a_var")) { include "./includes/liberasettimane.php"; } unset($limiti_var); unset($app_prenota_id); unset($app_orig_prenota_id); unset($inizio_prenota_id); unset($fine_prenota_id); unset($app_assegnabili_id); unset($prenota_in_app_sett); unset($dati_app); unset($profondita); if ($id_per_corr_finto != "") { $limiti_var['idperiodocorrente'] = $id_per_corr_finto; } $limiti_var['n_ini'] = 0; $max_periodo = esegui_query("select max(idperiodi) from {$tableperiodi}"); $max_periodo = risul_query($max_periodo, 0, 0); $limiti_var['n_fine'] = $max_periodo; $minuti_durata_insprenota = esegui_query("select valpersonalizza_num from {$tablepersonalizza} where idpersonalizza = 'minuti_durata_insprenota' and idutente = '1'"); $minuti_durata_insprenota = risul_query($minuti_durata_insprenota, 0, 'valpersonalizza_num'); $limiti_var['lim_prenota_temp'] = aggslashdb(date("Y-m-d H:i:s", time() + C_DIFF_ORE * 3600 - $minuti_durata_insprenota * 60)); esegui_query("delete from {$tableprenota} where idclienti = '0' and datainserimento < '" . $limiti_var['lim_prenota_temp'] . "'", "", 1); $profondita['iniziale'] = ""; $profondita['attuale'] = 1; $max_prenota = esegui_query("select max(idprenota) from {$tableprenota}"); if (numlin_query($max_prenota) != 0) { $tot_prenota = risul_query($max_prenota, 0, 0); } else { $tot_prenota = 0; } $profondita['tot_prenota_ini'] = $tot_prenota; $profondita['tot_prenota_attuale'] = $tot_prenota; tab_a_var($limiti_var, $app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $prenota_in_app_sett, $anno, $dati_app, $profondita, $PHPR_TAB_PRE . "prenota"); # Sposto gli appartamenti presenti in $spostamenti se possibile for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; for ($num1 = $inizio_prenota_id[$id_prenota]; $num1 <= $fine_prenota_id[$id_prenota]; $num1++) { $prenota_in_app_sett[$app_prenota_id[$id_prenota]][$num1] = ""; } # fine for $num1 } # fine for $num_idpr $num_spostamenti = count($spostamenti); for ($num1 = 0; $num1 < $num_spostamenti; $num1++) { $idprenota_cambiata = $spostamenti[$num1]; $app_cambiato = $spostamenti[$num1 + 1]; $applicare_cambio[$num1] = "NO"; if ($inizio_prenota_id[$idprenota_cambiata]) { $applicare_cambio[$num1] = "SI"; if (!$app_assegnabili_id[$idprenota_cambiata]) { $applicare_cambio[$num1] = "NO"; } if ($app_assegnabili_id[$idprenota_cambiata] and $app_assegnabili_id[$idprenota_cambiata] != "v") { $lista_app_assegnabili = "," . $app_assegnabili_id[$idprenota_cambiata] . ","; if (str_replace("," . $app_cambiato . ",", "", $lista_app_assegnabili) == $lista_app_assegnabili) { $applicare_cambio[$num1] = "NO"; } } # fine if ($app_assegnabili_id[$idprenota_cambiata] and... if (str_replace("," . $app_cambiato . ",", "", $dati_app['lista']) == $dati_app['lista']) { $applicare_cambio[$num1] = "NO"; } if ($applicare_cambio[$num1] == "SI") { for ($num2 = $inizio_prenota_id[$idprenota_cambiata]; $num2 <= $fine_prenota_id[$idprenota_cambiata]; $num2++) { $prenota_in_app_sett[$app_prenota_id[$idprenota_cambiata]][$num2] = ""; } # fine for $num2 $app_prenota_id[$idprenota_cambiata] = $app_cambiato; } # fine if ($applicare_cambio[$num1] == "SI") } # fine if ($inizio_prenota_id[$idprenota_cambiata]) $num1++; } # fine for $num1 for ($num1 = 0; $num1 < $num_spostamenti; $num1++) { $idprenota_cambiata = $spostamenti[$num1]; if ($applicare_cambio[$num1] == "SI") { for ($num2 = $inizio_prenota_id[$idprenota_cambiata]; $num2 <= $fine_prenota_id[$idprenota_cambiata]; $num2++) { if ($prenota_in_app_sett[$app_prenota_id[$idprenota_cambiata]][$num2]) { $inserire = "NO"; } else { $prenota_in_app_sett[$app_prenota_id[$idprenota_cambiata]][$num2] = $idprenota_cambiata; } } # fine for $num2 if ($inserire == "NO") { break; } } # fine if ($applicare_cambio[$num1] == "SI") $num1++; } # fine for $num1 # Aggiorno la prenotazione e faccio i primi controlli sulla prenotazione modificata for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; $n_appartamento = $n_appartamento_idpr[$id_prenota]; $n_assegnazioneapp = $n_assegnazioneapp_idpr[$id_prenota]; $n_lista_app = $n_lista_app_idpr[$id_prenota]; $n_numpersone = $n_numpersone_idpr[$id_prenota]; if ($n_appartamento != "") { $app_prenota_id[$id_prenota] = $n_appartamento; } if ($n_inizioperiodo != "") { $inizio_prenota_id[$id_prenota] = $n_inizioperiodo; } if ($n_fineperiodo != "") { $fine_prenota_id[$id_prenota] = $n_fineperiodo; } for ($num1 = $inizio_prenota_id[$id_prenota]; $num1 <= $fine_prenota_id[$id_prenota]; $num1++) { if ($prenota_in_app_sett[$app_prenota_id[$id_prenota]][$num1]) { $inserire = "NO"; } else { $prenota_in_app_sett[$app_prenota_id[$id_prenota]][$num1] = $id_prenota; } } # fine for $num1 if ($n_assegnazioneapp == "v") { $app_assegnabili_id[$id_prenota] = $dati_app['lista']; } if ($n_assegnazioneapp == "k") { $app_assegnabili_id[$id_prenota] = ""; } if ($n_assegnazioneapp == "c" and $n_lista_app) { $app_assegnabili_id[$id_prenota] = "," . $n_lista_app . ","; } $assegnazione_app = risul_query($dati_prenota_idpr[$id_prenota], 0, 'assegnazioneapp'); if (!$n_assegnazioneapp and $assegnazione_app == "c" and $n_lista_app) { $app_assegnabili_id[$id_prenota] = "," . $n_lista_app . ","; } if ($n_numpersone) { $num_persone_prenota = $n_numpersone; } else { $num_persone_prenota = risul_query($dati_prenota_idpr[$id_prenota], 0, 'num_persone'); } if ($num_persone_prenota and $dati_app['maxocc'][$app_prenota_id[$id_prenota]] and $dati_app['maxocc'][$app_prenota_id[$id_prenota]] < $num_persone_prenota) { $inserire = "NO"; } if (str_replace("," . $app_prenota_id[$id_prenota] . ",", "", $dati_app['lista']) == $dati_app['lista']) { $inserire = "NO"; } if ($app_assegnabili_id[$id_prenota] and $app_assegnabili_id[$id_prenota] != "v") { $lista_app_assegnabili = "," . $app_assegnabili_id[$id_prenota] . ","; if (str_replace("," . $app_prenota_id[$id_prenota] . ",", "", $lista_app_assegnabili) == $lista_app_assegnabili) { $inserire = "NO"; } } # fine if ($app_assegnabili_id[$id_prenota] and... if (str_replace("," . $app_prenota_id[$id_prenota] . ",", "", $dati_app['lista']) == $dati_app['lista']) { $inserire = "NO"; } } # fine for $num_idpr for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; $d_appartamento = $d_appartamento_idpr[$id_prenota]; $d_checkin = $d_checkin_idpr[$id_prenota]; $d_checkout = $d_checkout_idpr[$id_prenota]; $d_prenota_comp = $d_prenota_comp_idpr[$id_prenota]; $prenota_comp = $prenota_comp_idpr[$id_prenota]; $prenota_comp_copia = $prenota_comp; if ($prenota_comp_copia != "") { $prenota_comp_copia = $id_prenota . "," . $prenota_comp_copia; } controlla_prenota_vicine($prenota_comp_copia, $dati_app, $app_prenota_id); if ($prenota_comp_copia) { $inserire = "NO"; } $prenota_comp_control = $prenota_comp; if ($d_prenota_comp and $prenota_comp_control) { $prenota_comp_control .= ","; } $prenota_comp_control .= $d_prenota_comp; for ($num1 = 0; $num1 < $num_spostamenti; $num1++) { $idprenota_cambiata = $spostamenti[$num1]; if ($app_assegnabili_id[0][$idprenota_cambiata]) { if (str_replace(",{$idprenota_cambiata},", "", ",{$prenota_comp_control},") == ",{$prenota_comp_control},") { $prenota_comp_copia = $app_assegnabili_id[0][$idprenota_cambiata]; if ($prenota_comp_copia != "") { $prenota_comp_copia = $idprenota_cambiata . "," . $prenota_comp_copia; } controlla_prenota_vicine($prenota_comp_copia, $dati_app, $app_prenota_id); if ($prenota_comp_copia) { $inserire = "NO"; } else { $prenota_comp_control .= "," . $app_assegnabili_id[0][$idprenota_cambiata]; } if (substr($prenota_comp_control, 0, 1) == ",") { $prenota_comp_control = substr($prenota_comp_control, 1); } } # fine if (str_replace(",$idprenota_cambiata,","",",$prenota_comp_control,") == ",$prenota_comp_control,") } # fine if ($app_assegnabili_id[0][$idprenota_cambiata]) } # fine for $num1 if ($d_checkin and !$d_checkout and $app_prenota_id[$id_prenota] != $d_appartamento) { $checkin_presente = esegui_query("select idprenota from {$tableprenota} where idappartamenti = '" . aggslashdb($app_prenota_id[$id_prenota]) . "' and checkin is not NULL and checkout is NULL"); if (numlin_query($checkin_presente) >= 1) { $inserire = "NO"; echo mex("Non si è potuto spostare la prenotazione per la registrazione dell'entrata", $pag) . ".<br>"; } # fine if (numlin_query($checkin_presente) >= 1) } # fine if ($d_checkin and !$d_checkout and... } # fine for $num_idpr } # fine if ($tableprenota_da_aggiornare) } # fine if ($inserire != "NO") if ($inserire != "NO" and $tableprenota_da_aggiornare) { for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; if (strcmp($app_prenota_id[$id_prenota], "") and !strcmp($app_orig_prenota_id[$id_prenota], "")) { $app_orig_prenota_id[$id_prenota] = $app_prenota_id[$id_prenota] . "x"; } } # fine for $num_idpr $risul_agg = aggiorna_tableprenota($app_prenota_id, $app_orig_prenota_id, $tableprenota); if (!$risul_agg) { $inserire = "NO"; } } # fine if ($inserire != "NO" and $tableprenota_da_aggiornare) if ($inserire == "NO") { echo mex("La prenotazione", $pag) . " {$id_prenota} " . mex("<b>non è stata modificata</b> perchè la tabella prenotazioni è cambiata nel frattempo", $pag) . ".<br>"; unlock_tabelle($tabelle_lock); } else { for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; $d_id_utente_inserimento = $d_id_utente_inserimento_idpr[$id_prenota]; $d_app_eliminati_costi = $d_app_eliminati_costi_idpr[$id_prenota]; $d_prenota_comp = $d_prenota_comp_idpr[$id_prenota]; $n_costo_tot = $n_costo_tot_idpr[$id_prenota]; $n_appartamento = $n_appartamento_idpr[$id_prenota]; $n_assegnazioneapp = $n_assegnazioneapp_idpr[$id_prenota]; $n_lista_app = $n_lista_app_idpr[$id_prenota]; $n_app_eliminati_costi = $n_app_eliminati_costi_idpr[$id_prenota]; $n_numpersone = $n_numpersone_idpr[$id_prenota]; $n_nometipotariffa = $n_nometipotariffa_idpr[$id_prenota]; $n_costo_tariffa = $n_costo_tariffa_idpr[$id_prenota]; $costi_aggiuntivi_modificati_int = $costi_aggiuntivi_modificati_int_idpr[$id_prenota]; $costi_aggiuntivi_da_inserire_int = $costi_aggiuntivi_da_inserire_int_idpr[$id_prenota]; $n_sconto = $n_sconto_idpr[$id_prenota]; $n_caparra = $n_caparra_idpr[$id_prenota]; $n_commissioni = $n_commissioni_idpr[$id_prenota]; $n_tariffesettimanali = $n_tariffesettimanali_idpr[$id_prenota]; $prenota_comp = $prenota_comp_idpr[$id_prenota]; $n_pagato = $n_pagato_idpr[$id_prenota]; $n_confermato = $n_confermato_idpr[$id_prenota]; $id_utente_inserimento = $d_id_utente_inserimento; if ($id_nuovo_utente_inserimento != "" and $id_utente == 1) { esegui_query("update {$tableprenota} set utente_inserimento = '{$id_nuovo_utente_inserimento}' where idprenota = '{$id_prenota}' "); esegui_query("update {$tablecostiprenota} set utente_inserimento = '{$id_nuovo_utente_inserimento}' where idprenota = '{$id_prenota}' "); $id_utente_inserimento = $id_nuovo_utente_inserimento; if ($prenota_in_anno_succ) { esegui_query("update {$tableprenota_orig} set utente_inserimento = '{$id_nuovo_utente_inserimento}' where idprenota = '{$id_prenota_orig}' "); esegui_query("update {$tablecostiprenota_orig} set utente_inserimento = '{$id_nuovo_utente_inserimento}' where idprenota = '{$id_prenota_orig}' "); } # fine if ($prenota_in_anno_succ) } # fine if ($id_nuovo_utente_inserimento != "" and $id_utente == 1) if ($n_inizioperiodo != "") { esegui_query("update {$tableprenota} set iddatainizio = '{$n_inizioperiodo}' where idprenota = '{$id_prenota}' "); } # fine if ($n_inizioperiodo != "") if ($n_fineperiodo != "") { esegui_query("update {$tableprenota} set iddatafine = '{$n_fineperiodo}' where idprenota = '{$id_prenota}' "); if ($dati_da_anno_prec == "SI") { passa_var_a_anno_prec($id_prenota, $tableperiodi, $tableprenota, $tablecostiprenota, $d_id_data_inizio, $d_id_data_fine, $n_fineperiodo, $inizioperiodo, $fineperiodo, $lunghezza_periodo, $dati_prenota_modifica); esegui_query("update {$tableprenota} set iddatafine = '{$n_fineperiodo}' where idprenota = '{$id_prenota}' "); passa_var_a_anno_corr($id_prenota, $tableperiodi, $tableprenota, $tablecostiprenota, $d_id_data_inizio, $d_id_data_fine, $n_fineperiodo, $inizioperiodo, $fineperiodo, $lunghezza_periodo); } # fine if ($dati_da_anno_prec == "SI") if ($prenota_in_anno_succ) { $n_data_fine = esegui_query("select datafine from {$tableperiodi} where idperiodi = '{$n_fineperiodo}'"); $n_data_fine = risul_query($n_data_fine, 0, 'datafine'); $data_succ_esistente = esegui_query("select idperiodi from {$tableperiodi_orig} where datafine <= '{$n_data_fine}'"); if (numlin_query($data_succ_esistente) < 1) { esegui_query("delete from {$tableprenota_orig} where idprenota = '{$id_prenota_orig}'"); esegui_query("delete from {$tablecostiprenota_orig} where idprenota = '{$id_prenota_orig}'"); } # fine if (numlin_query($data_succ_esistente) < 1) } # fine if ($prenota_in_anno_succ) } # fine if ($n_fineperiodo != "") if ($n_stima_checkin) { esegui_query("update {$tableprenota} set checkout = '{$n_stima_checkin}' where idprenota = '{$id_prenota}' "); } # fine if ($n_stima_checkin) #if ($n_appartamento != "") { #esegui_query("update $tableprenota set idappartamenti = '$n_appartamento' where idprenota = '$id_prenota' "); #} # fine if ($n_appartamento != "") if ($n_assegnazioneapp != "") { esegui_query("update {$tableprenota} set assegnazioneapp = '{$n_assegnazioneapp}' where idprenota = '{$id_prenota}' "); if ($n_assegnazioneapp == "v" or $n_assegnazioneapp == "k") { esegui_query("update {$tableprenota} set app_assegnabili = '' where idprenota = '{$id_prenota}' "); } # fine if ($n_assegnazioneapp == "v" ...) } # fine if ($n_assegnazioneapp != "") if ($n_lista_app != "") { esegui_query("update {$tableprenota} set app_assegnabili = '{$n_lista_app}' where idprenota = '{$id_prenota}' "); } # fine if ($n_lista_app != "") if ($d_prenota_comp != $prenota_comp) { esegui_query("update {$tableprenota} set idprenota_compagna = '{$prenota_comp}' where idprenota = '{$id_prenota}' "); if ($d_prenota_comp) { $d_prenota_comp_vett = explode(",", $d_prenota_comp); $num_d_prenota_comp = count($d_prenota_comp_vett); for ($num1 = 0; $num1 < $num_d_prenota_comp; $num1++) { $d_pren_comp = aggslashdb($d_prenota_comp_vett[$num1]); if (str_replace(",{$d_pren_comp},", "", ",{$prenota_comp},") == ",{$prenota_comp},") { esegui_query("update {$tableprenota} set idprenota_compagna = '' where idprenota = '{$d_pren_comp}' "); } } # fine for $num1 } # fine if ($d_prenota_comp) if ($prenota_comp) { $prenota_comp_vett = explode(",", $prenota_comp); $num_prenota_comp = count($prenota_comp_vett); for ($num1 = 0; $num1 < $num_prenota_comp; $num1++) { $pren_comp = aggslashdb($prenota_comp_vett[$num1]); $prenota_comp2 = substr(str_replace(",{$pren_comp},", ",", ",{$prenota_comp},"), 1) . $id_prenota; esegui_query("update {$tableprenota} set idprenota_compagna = '{$prenota_comp2}' where idprenota = '{$pren_comp}' "); } # fine for $num1 } # fine if ($prenota_comp) } # fine if ($d_prenota_comp != $prenota_comp) if ($dati_da_anno_prec == "SI") { passa_var_a_anno_prec($id_prenota, $tableperiodi, $tableprenota, $tablecostiprenota, $d_id_data_inizio, $d_id_data_fine, $n_fineperiodo, $inizioperiodo, $fineperiodo, $lunghezza_periodo, $dati_prenota_modifica); } if ($n_numpersone != "") { esegui_query("update {$tableprenota} set num_persone = '{$n_numpersone}' where idprenota = '{$id_prenota}' "); } # fine if ($n_numpersone != "") if ($n_nometipotariffa != "") { if (substr($n_costo_tariffa, -1) == "p") { $n_costo_tariffa = substr($n_costo_tariffa, 0, -1) . "#@&p"; } $n_tariffa = aggslashdb($n_nometipotariffa) . "#@&" . $n_costo_tariffa; esegui_query("update {$tableprenota} set tariffa = '{$n_tariffa}' where idprenota = '{$id_prenota}' "); if (!strcmp($dati_tariffe[$n_tipotariffa_idpr[$id_prenota]]['tasse_percent'], "")) { esegui_query("update {$tableprenota} set tasseperc = NULL where idprenota = '{$id_prenota}' "); } else { esegui_query("update {$tableprenota} set tasseperc = '" . $dati_tariffe[$n_tipotariffa_idpr[$id_prenota]]['tasse_percent'] . "' where idprenota = '{$id_prenota}' "); } } # fine if ($n_nometipotariffa != "") if ($n_tariffesettimanali != "") { $n_tariffesettimanali = aggslashdb($n_tariffesettimanali); esegui_query("update {$tableprenota} set tariffesettimanali = '{$n_tariffesettimanali}' where idprenota = '{$id_prenota}' "); } # fine if ($n_tariffesettimanali != "") if ($costi_aggiuntivi_modificati_int) { $costi_aggiuntivi_modificati = explode("#@&", $costi_aggiuntivi_modificati_int); for ($num2 = 0; $num2 < count($costi_aggiuntivi_modificati); $num2++) { $costo_agg_modificato = explode("#?&", $costi_aggiuntivi_modificati[$num2]); if ($costo_agg_modificato[1] == "cancella") { esegui_query("delete from {$tablecostiprenota} where idcostiprenota = '" . $costo_agg_modificato[0] . "' and idprenota = '{$id_prenota}' "); } else { esegui_query("update {$tablecostiprenota} set settimane = '" . $costo_agg_modificato[1] . "', moltiplica = '" . $costo_agg_modificato[2] . "' where idcostiprenota = '" . $costo_agg_modificato[0] . "' and idprenota = '{$id_prenota}' "); if ($num_ripetizioni_costo_mod_idpr[$id_prenota][$num2]) { esegui_query("update {$tablecostiprenota} set varbeniinv = '" . $num_ripetizioni_costo_mod_idpr[$id_prenota][$num2] . "' where idcostiprenota = '" . $costo_agg_modificato[0] . "' and idprenota = '{$id_prenota}' "); } } # fine else if ($costo_agg_modificato[1] == "cancella") } # fine for $num2 } # fine if ($costi_aggiuntivi_modificati_int) if ($costi_aggiuntivi_da_inserire_int) { $costi_aggiuntivi_da_inserire = explode("#@&", $costi_aggiuntivi_da_inserire_int); for ($num2 = 0; $num2 < count($costi_aggiuntivi_da_inserire); $num2++) { $costo_agg_da_inserire = explode("#?&", $costi_aggiuntivi_da_inserire[$num2]); $num_costo = $dati_ca['id'][$costo_agg_da_inserire[9]]; $datainserimento = date("Y-m-d H:i:s", time() + C_DIFF_ORE * 3600); $idcostiprenota = esegui_query("select max(idcostiprenota) from {$tablecostiprenota}"); $idcostiprenota = risul_query($idcostiprenota, 0, 0) + 1; if ($costo_agg_da_inserire[15]) { $costo_agg_da_inserire[15] = $num_ripetizioni_costo_ins_idpr[$id_prenota][$num2] . ";" . $costo_agg_da_inserire[15]; } esegui_query("insert into {$tablecostiprenota} (idcostiprenota,idprenota,tipo,nome,valore,associasett,settimane,moltiplica,letto,idntariffe,varmoltiplica,varnumsett,varperiodipermessi,vartariffeassociate,vartariffeincomp,varbeniinv,varappincompatibili,variazione,categoria,datainserimento,hostinserimento,utente_inserimento) values ('{$idcostiprenota}','{$id_prenota}','" . $costo_agg_da_inserire[0] . "','" . aggslashdb($costo_agg_da_inserire[1]) . "','" . $costo_agg_da_inserire[2] . "','" . $costo_agg_da_inserire[5] . "','" . $costo_agg_da_inserire[6] . "','" . $costo_agg_da_inserire[7] . "','" . $costo_agg_da_inserire[8] . "','" . $costo_agg_da_inserire[9] . "','" . $costo_agg_da_inserire[10] . "','" . $costo_agg_da_inserire[11] . "','" . $costo_agg_da_inserire[12] . "','" . $costo_agg_da_inserire[13] . "','" . $costo_agg_da_inserire[14] . "','" . $costo_agg_da_inserire[15] . "','" . $costo_agg_da_inserire[16] . "','" . $costo_agg_da_inserire[17] . "','" . $costo_agg_da_inserire[18] . "','{$datainserimento}','{$HOSTNAME}','{$id_utente}')"); if (substr($costo_agg_da_inserire[0], 1, 1) != "f") { esegui_query("update {$tablecostiprenota} set valore_perc = '" . $costo_agg_da_inserire[3] . "', arrotonda = '" . $costo_agg_da_inserire[4] . "' where idcostiprenota = '{$idcostiprenota}'"); } if ($dati_ca[$num_costo]['tasseperc']) { esegui_query("update {$tablecostiprenota} set tasseperc = '" . $dati_ca[$num_costo]['tasseperc'] . "' where idcostiprenota = '{$idcostiprenota}'"); } } # fine for $num2 } # fine if ($costi_aggiuntivi_da_inserire_int) # Se prenotazione da anno precedente copio i costi aggiuntivi anche nell'anno # corrente per mantenere il limite dei costi in stesso periodo if (($dati_da_anno_prec == "SI" or $prenota_in_anno_succ) and ($costi_aggiuntivi_modificati_int or $costi_aggiuntivi_da_inserire_int)) { $idcostiprenota_orig = esegui_query("select max(idcostiprenota) from {$tablecostiprenota_orig}"); $idcostiprenota_orig = risul_query($idcostiprenota_orig, 0, 0) + 1; $idcostiprenota_prec = esegui_query("select max(idcostiprenota) from {$tablecostiprenota_prec}"); $idcostiprenota_prec = risul_query($idcostiprenota_prec, 0, 0) + 1; if ($idcostiprenota_orig > $idcostiprenota_prec) { $max_idcostiprenota = $idcostiprenota_orig; } else { $max_idcostiprenota = $idcostiprenota_prec; } esegui_query("delete from {$tablecostiprenota_orig} where idprenota = '{$id_prenota_orig}'"); $costiprenota_prec = esegui_query("select * from {$tablecostiprenota_prec} where idprenota = '{$id_prenota_prec}'"); $num_costiprenota_prec = numlin_query($costiprenota_prec); $max_idcostiprenota = $max_idcostiprenota + $num_costiprenota_prec + 1; $diff_settimane = $fineperiodo - $fineperiodo_orig; for ($num1 = 0; $num1 < $num_costiprenota_prec; $num1++) { $idcostiprenota = risul_query($costiprenota_prec, $num1, 'idcostiprenota'); esegui_query("update {$tablecostiprenota_prec} set idcostiprenota = '{$max_idcostiprenota}' where idcostiprenota = '{$idcostiprenota}'"); esegui_query("insert into {$tablecostiprenota_orig} select * from {$tablecostiprenota_prec} where idcostiprenota = '{$max_idcostiprenota}' "); esegui_query("update {$tablecostiprenota_prec} set idcostiprenota = '{$idcostiprenota}' where idcostiprenota = '{$max_idcostiprenota}'"); esegui_query("update {$tablecostiprenota_orig} set idcostiprenota = '{$idcostiprenota_orig}' where idcostiprenota = '{$max_idcostiprenota}'"); $settimane = risul_query($costiprenota_prec, $num1, 'settimane'); if (str_replace(",", "", $settimane) != $settimane) { $settimane = explode(",", $settimane); $settimane_nuove = ","; for ($num2 = 1; $num2 < count($settimane) - 1; $num2++) { $settimane_nuove .= $settimane[$num2] - $diff_settimane . ","; } esegui_query("update {$tablecostiprenota_orig} set settimane = '{$settimane_nuove}' where idcostiprenota = '{$idcostiprenota_orig}'"); } # fine if (str_replace(",","",$settimane) != $settimane) $idcostiprenota_orig++; } # fine for $num1 } # fine if (($dati_da_anno_prec == "SI" or $prenota_in_anno_succ) and... if ((string) $n_app_eliminati_costi != (string) $d_app_eliminati_costi) { esegui_query("update {$tableprenota} set incompatibilita = '" . aggslashdb($n_app_eliminati_costi) . "' where idprenota = '{$id_prenota}' "); } # fine if ((string) $n_app_eliminati_costi != (string) $d_app_eliminati_costi) if (strcmp($n_sconto, "")) { esegui_query("update {$tableprenota} set sconto = '{$n_sconto}' where idprenota = '{$id_prenota}' "); } # fine if (strcmp($n_sconto,"")) if (strcmp($n_caparra, "")) { esegui_query("update {$tableprenota} set caparra = '{$n_caparra}' where idprenota = '{$id_prenota}' "); } # fine if (strcmp($n_caparra,"")) if ($n_met_paga_caparra != "") { esegui_query("update {$tableprenota} set metodo_pagamento = '" . aggslashdb($n_met_paga_caparra) . "' where idprenota = '{$id_prenota}' "); } # fine if ($n_met_paga_caparra != "") if (strcmp($n_commissioni, "")) { esegui_query("update {$tableprenota} set commissioni = '{$n_commissioni}' where idprenota = '{$id_prenota}' "); } # fine if (strcmp($n_commissioni,"")) if ($n_origine_prenota != "") { esegui_query("update {$tableprenota} set origine = '" . aggslashdb($n_origine_prenota) . "' where idprenota = '{$id_prenota}' "); } # fine if ($n_origine_prenota != "") if ($n_pagato != "") { esegui_query("update {$tableprenota} set pagato = '{$n_pagato}' where idprenota = '{$id_prenota}' "); } # fine if ($n_pagato != "") if ($n_confermato != "") { esegui_query("update {$tableprenota} set conferma = '{$n_confermato}' where idprenota = '{$id_prenota}' "); } # fine if ($n_confermato != "") if ($n_commento != "" and ($tipo_commento == "checkin" or $tipo_commento == "checkout")) { $n_comm_checkin = ""; $n_comm_checkout = ""; if ($tipo_commento == "checkin" and !$d_checkin_idpr[$id_prenota]) { $n_comm_checkin = $n_commento; } if ($tipo_commento == "checkout" and !$d_checkout_idpr[$id_prenota]) { $n_comm_checkout = $n_commento; } $n_comm = $d_commento; if (strstr($n_comm, ">")) { $n_comm = explode(">", $n_comm); if (strcmp($n_comm[1], "")) { if ($n_comm_checkin) { $n_comm_checkin = $n_comm[1] . " - {$n_comm_checkin}"; } else { $n_comm_checkin = $n_comm[1]; } } # fine if (strcmp($n_comm[1],"")) if (strcmp($n_comm[2], "")) { if ($n_comm_checkout) { $n_comm_checkout = $n_comm[2] . " - {$n_comm_checkout}"; } else { $n_comm_checkout = $n_comm[2]; } } # fine if (strcmp($n_comm[2],"")) $n_comm = $n_comm[0]; } # fine if (strstr($n_comm,">")) if (strcmp($n_comm_checkin, "") or strcmp($n_comm_checkout, "")) { $n_comm .= ">{$n_comm_checkin}>{$n_comm_checkout}"; } esegui_query("update {$tableprenota} set commento = '" . aggslashdb($n_comm) . "' where idprenota = '{$id_prenota}' "); } # fine if ($n_commento != "" and ($tipo_commento == "checkin" or... if ($n_commento != "" and $tipo_commento != "checkin" and $tipo_commento != "checkout" or $n_cancella_commento == "SI") { $n_comm = $n_commento; if ($n_cancella_commento == "SI") { $n_comm = ""; } if (strstr($d_commento, ">")) { $n_comm = $n_comm . strstr($d_commento, ">"); } esegui_query("update {$tableprenota} set commento = '" . aggslashdb($n_comm) . "' where idprenota = '{$id_prenota}' "); } # fine if (($n_commento != "" and $tipo_commento != "checkin" and $tipo_commento != "checkout") or... $adesso = date("Y-m-d H:i:s", time() + C_DIFF_ORE * 3600); esegui_query("update {$tableprenota} set tariffa_tot = '{$n_costo_tot}', data_modifica = '{$adesso}' where idprenota = '{$id_prenota}' "); if ($dati_da_anno_prec == "SI") { passa_var_a_anno_corr($id_prenota, $tableperiodi, $tableprenota, $tablecostiprenota, $d_id_data_inizio, $d_id_data_fine, $n_fineperiodo, $inizioperiodo, $fineperiodo, $lunghezza_periodo); } } # fine for $num_idpr aggiorna_beniinv_presenti($tablerelinventario, $beniinv_presenti); if ($tabelle_lock) { unlock_tabelle($tabelle_lock); } if ($tableprenota_da_aggiornare or $n_inizioperiodo != "" or $n_fineperiodo != "") { $lock = 1; $aggiorna_disp = 1; $aggiorna_tar = 0; if (@function_exists('pcntl_fork')) { include "./includes/interconnect/aggiorna_ic_fork.php"; } else { include "./includes/interconnect/aggiorna_ic.php"; } } # fine if ($tableprenota_da_aggiornare or... for ($num_idpr = 0; $num_idpr < $num_id_prenota; $num_idpr++) { $id_prenota = $id_prenota_idpr[$num_idpr]; $n_pagato = $n_pagato_idpr[$id_prenota]; if ($n_pagato != "") { $datainserimento_saldo = date("Y-m-d H:i:s", time() + C_DIFF_ORE * 3600); $idcliente_saldo = risul_query($dati_prenota_idpr[$id_prenota], 0, 'idclienti'); $d_idinizioprenota = risul_query($dati_prenota_idpr[$id_prenota], 0, 'iddatainizio'); $d_idfineprenota = risul_query($dati_prenota_idpr[$id_prenota], 0, 'iddatafine'); if ($n_inizioperiodo != "") { $idinizioperiodo_saldo = $n_inizioperiodo; } else { $idinizioperiodo_saldo = $d_idinizioprenota; } if ($n_fineperiodo != "") { $idfineperiodo_saldo = $n_fineperiodo; } else { $idfineperiodo_saldo = $d_idfineprenota; } $motivazione_saldo = "{$idcliente_saldo};{$idinizioperiodo_saldo};{$idfineperiodo_saldo};{$id_prenota}"; $pagato_attuale = risul_query($dati_prenota_idpr[$id_prenota], 0, 'pagato'); if (!$pagato_attuale) { $pagato_attuale = 0; } $saldo = $n_pagato - $pagato_attuale; $metodo_pagamento = ${"metodo_pagamento" . $id_prenota}; $metodo_pagamento = aggslashdb($metodo_pagamento); $tabelle_lock = array($tablesoldi); $tabelle_lock = lock_tabelle($tabelle_lock); $idsoldi = esegui_query("select max(idsoldi) from {$tablesoldi}"); $idsoldi = risul_query($idsoldi, 0, 0) + 1; esegui_query("insert into {$tablesoldi} (idsoldi,motivazione,metodo_pagamento,saldo_prenota,soldi_prima,data_inserimento,utente_inserimento) values ('{$idsoldi}','{$motivazione_saldo}','{$metodo_pagamento}','{$saldo}','{$pagato_attuale}','{$datainserimento_saldo}','{$id_utente}')"); unlock_tabelle($tabelle_lock); if (strcmp($cassa_pagamenti, "")) { $tabelle_lock = array($tablecosti); $altre_tab_lock = array($tableperiodi, $tableclienti); $tabelle_lock = lock_tabelle($tabelle_lock, $altre_tab_lock); if ($anno >= substr($datainserimento_saldo, 0, 4)) { $costo0 = esegui_query("select * from {$tablecosti} where idcosti = '0' "); $costo0 = risul_query($costo0, 0, 'val_costo'); $costo0 = (double) $costo0 + (double) $saldo; esegui_query("update {$tablecosti} set val_costo = '{$costo0}' where idcosti = '0' "); } # fine if ($anno_saldo >= substr($datainserimento_saldo,0,4)) if (!$idinizioperiodo_saldo) { $data_inizio_costo = "?"; } else { $data_inizio_costo = esegui_query("select datainizio from {$tableperiodi} where idperiodi = '{$idinizioperiodo_saldo}' "); $data_inizio_costo = formatta_data(risul_query($data_inizio_costo, 0, 'datainizio'), $stile_data); } # fine else if (!$idinizioperiodo_saldo) $data_fine_costo = esegui_query("select datafine from {$tableperiodi} where idperiodi = '{$idfineperiodo_saldo}' "); $data_fine_costo = formatta_data(risul_query($data_fine_costo, 0, 'datafine'), $stile_data); $cognome_saldo = esegui_query("select cognome from {$tableclienti} where idclienti = '{$idcliente_saldo}' "); $cognome_saldo = risul_query($cognome_saldo, 0, 'cognome'); $nome_costo = "" . mex("Prenotazione", $pag) . " {$id_prenota} " . mex("dal", $pag) . " {$data_inizio_costo} " . mex("al", $pag) . " {$data_fine_costo} " . mex("per", $pag) . " {$cognome_saldo}"; $idcosti = esegui_query("select max(idcosti) from {$tablecosti}"); $idcosti = risul_query($idcosti, 0, 0) + 1; esegui_query("insert into {$tablecosti} (idcosti,nome_costo,val_costo,tipo_costo,nome_cassa,persona_costo,provenienza_costo,metodo_pagamento,datainserimento,hostinserimento,utente_inserimento) values ('{$idcosti}','" . aggslashdb($nome_costo) . "','{$saldo}','e','" . aggslashdb($cassa_pagamenti) . "','" . aggslashdb($nome_utente) . "','p','{$metodo_pagamento}','{$datainserimento_saldo}','{$HOSTNAME}','{$id_utente}') "); unlock_tabelle($tabelle_lock); } # fine if (strcmp($cassa_pagamenti,"")) } # fine if ($n_pagato != "") } # fine for $num_idpr } # fine else if ($inserire == "NO") }
function liberasettimane($idinizio, $idfine, &$limiti_var, $anno, &$fatto, &$appartamento, $profondita, $app_richiesti, &$app_prenota_id, &$app_orig_prenota_id, &$inizio_prenota_id, &$fine_prenota_id, &$app_assegnabili_id, &$prenota_in_app_sett, &$dati_app, $nome_tab_prenota = "prenota") { global $debug; if (@is_array($app_richiesti) and $app_richiesti[',numero,']) { $app_richiesti_vett = $app_richiesti; $idinizio_vett = $idinizio; $idfine_vett = $idfine; if (@is_array($appartamento)) { $appartamento_vett = $appartamento; } if (!$app_richiesti_vett['id']) { $app_richiesti_vett['id'] = 1; $limiti_var['n_ini'] = ""; $limiti_var['n_fine'] = ""; for ($num1 = 1; $num1 <= $app_richiesti_vett[',numero,']; $num1++) { if (!$limiti_var['n_ini'] or $limiti_var['n_ini'] > $idinizio_vett[$num1]) { $limiti_var['n_ini'] = $idinizio_vett[$num1]; } if (!$limiti_var['n_fine'] or $limiti_var['n_fine'] < $idfine_vett[$num1]) { $limiti_var['n_fine'] = $idfine_vett[$num1]; } } # fine for $num1 } else { $app_richiesti_vett['id']++; $limiti_var['n_ini'] = $idinizio_vett[$app_richiesti_vett['id']]; $limiti_var['n_fine'] = $idfine_vett[$app_richiesti_vett['id']]; } # fine else if (!$app_richiesti_vett['id']) unset($app_richiesti); if ($app_richiesti_vett[$app_richiesti_vett['id']] != ",tutti,") { $vett_app = explode(",", $app_richiesti_vett[$app_richiesti_vett['id']]); $n_vett_app = count($vett_app); for ($num1 = 0; $num1 < $n_vett_app; $num1++) { $app_richiesti[$vett_app[$num1]] = "SI"; } } # fine if ($app_richiesti_vett[$app_richiesti_vett[id]] != ",tutti,") $idinizio = $idinizio_vett[$app_richiesti_vett['id']]; $idfine = $idfine_vett[$app_richiesti_vett['id']]; $appartamento = ""; } else { $limiti_var['n_ini'] = $idinizio; $limiti_var['n_fine'] = $idfine; } # fine else if (@is_array($app_richiesti) and $app_richiesti[',numero,']) if (!@is_array($profondita)) { $primo_ciclo = "SI"; $prof_copia = $profondita; $profondita = ""; $profondita['iniziale'] = $prof_copia; $profondita['attuale'] = $prof_copia; $tableprenota = $nome_tab_prenota . $anno . $profondita['iniziale']; $max_prenota = esegui_query("select max(idprenota) from {$tableprenota}"); $tot_prenota = risul_query($max_prenota, 0, 0); $profondita['tot_prenota_ini'] = $tot_prenota; $profondita['tot_prenota_attuale'] = $tot_prenota; tab_a_var($limiti_var, $app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $prenota_in_app_sett, $anno, $dati_app, $profondita, $nome_tab_prenota); } # fine if (!@is_array($profondita)) if ($profondita['controllato_tutti_occupati'] != "SI") { $tutti_occupati = controlla_tutti_occupati($idinizio, $idfine, $app_richiesti, $prenota_in_app_sett, $app_prenota_id, $app_assegnabili_id, $dati_app, $fine_prenota_id); $profondita['controllato_tutti_occupati'] = "SI"; } # fine if ($profondita[controllato_tutti_occupati] != "SI") if ($tutti_occupati == "SI") { $fatto = "SI"; } else { $fatto = "NO"; } $num_da_liberare = 1; $num_da_liberare2 = 1; # cicli da ripetere per ogni appartamento fino a che $fatto = SI # primo ciclo che controlla se c'é già un appartamento libero if ($fatto != "SI") { for ($num1 = 0; $num1 < $dati_app['totapp']; $num1++) { $numapp = $dati_app['posizione'][$num1]; if (!$app_richiesti or $app_richiesti[$numapp] == "SI") { if ($app_richiesti_vett[',vicini,'] != "SI" or $dati_app['vicini'][$numapp] != $numapp) { $prenotainperiodo = prenota_in_app_e_periodo($numapp, $idinizio, $idfine, $prenota_in_app_sett, $fine_prenota_id, $num_pp); if (!$num_pp) { $appartamento = $numapp; $fatto = "SI"; if ($debug == "on") { echo "LIBERATO1 {$appartamento}<br>"; } break; } # fine if (!$num_pp) } # fine if ($app_richiesti_vett[',vicini,'] != "SI" or $dati_app['vicini'][$numapp] != $numapp) } # fine if (!$app_richiesti or $app_richiesti[$numapp] == "SI") } # fine for $num1 } # fine if ($fatto != "SI") if ($fatto != "SI") { # allargo il periodo passato dalla tabella alle variabili se necessario $lista_prenota_periodo = ""; $pren_pres_in_lista = ""; $num_lista_pren_per = 0; if (!$limiti_var[s_ini]) { lista_prenota_periodo($idinizio, $idfine, $dati_app, $prenota_in_app_sett, $pren_pres_in_lista, $lista_prenota_periodo, $num_lista_pren_per); $limiti_var[s_ini] = $idinizio; $limiti_var[s_fine] = $idfine; } # fine if (!$limiti_var[s_ini]) if ($limiti_var['s_ini'] > $idinizio) { lista_prenota_periodo($idinizio, $limiti_var['s_ini'] - 1, $dati_app, $prenota_in_app_sett, $pren_pres_in_lista, $lista_prenota_periodo, $num_lista_pren_per); $limiti_var['s_ini'] = $idinizio; } # fine if ($limiti_var['s_ini'] > $idinizio) if ($limiti_var['s_fine'] < $idfine) { lista_prenota_periodo($limiti_var['s_fine'] + 1, $idfine, $dati_app, $prenota_in_app_sett, $pren_pres_in_lista, $lista_prenota_periodo, $num_lista_pren_per); $limiti_var['s_fine'] = $idfine; } # fine if ($limiti_var['s_ini'] > $idinizio) for ($num1 = 0; $num1 < $num_lista_pren_per; $num1++) { if ($inizio_prenota_id[$lista_prenota_periodo[$num1]] < $limiti_var['n_ini']) { $limiti_var['n_ini'] = $inizio_prenota_id[$lista_prenota_periodo[$num1]]; } if ($fine_prenota_id[$lista_prenota_periodo[$num1]] > $limiti_var['n_fine']) { $limiti_var['n_fine'] = $fine_prenota_id[$lista_prenota_periodo[$num1]]; } } # fine for $num1 if ($limiti_var['n_ini'] < $limiti_var['ini'] or $limiti_var['n_fine'] > $limiti_var['fine']) { tab_a_var($limiti_var, $app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $prenota_in_app_sett, $anno, $dati_app, $profondita, $nome_tab_prenota); } # fine if ($limiti_var['n_ini'] < $limiti_var['ini'] or $limiti_var['n_fine'] > $limiti_var['fine']) # ciclo che prova a spostare le prime prenotazioni ed eventualmente le # mette in $da_liberare o $da_scambiare for ($num1 = 0; $num1 < $dati_app['totapp']; $num1++) { $numapp = $dati_app['posizione'][$num1]; if (!$app_richiesti or $app_richiesti[$numapp] == "SI") { $prenotainperiodo = prenota_in_app_e_periodo($numapp, $idinizio, $idfine, $prenota_in_app_sett, $fine_prenota_id, $num_pp); $idiniziop = ""; $idfinep = ""; unset($app_assegnabili); $mobile = "SI"; $tutti_liberabili = "SI"; # Trovo le prenotazioni del periodo per l'appartamento $numapp, controllo # che si posssano muovere e trovo le settimane iniziale e finale, e i # vincoli sull'appartamento di destinazione ($num_min_persome, $numcasa e # $num_piano). for ($num2 = 1; $num2 <= $num_pp; $num2++) { $idprenotainperiodo = $prenotainperiodo[$num2]; if ($app_assegnabili_id[$idprenotainperiodo] and $app_assegnabili_id[$idprenotainperiodo] != "v") { $vett_assegnabili = explode(",", $app_assegnabili_id[$idprenotainperiodo]); $num_assegnabili = count($vett_assegnabili); for ($num3 = 0; $num3 < $num_assegnabili; $num3++) { $app_ = $vett_assegnabili[$num3]; $app_assegnabili[$idprenotainperiodo][$app_] = "SI"; } # fine for $num3 } # fine if ($app_assegnabili_id[$idprenotainperiodo] and $app_assegnabili_id[$idprenotainperiodo] != "v") if ($app_assegnabili_id[$idprenotainperiodo]) { if (!$idiniziop or $idiniziop > $inizio_prenota_id[$idprenotainperiodo]) { $idiniziop = $inizio_prenota_id[$idprenotainperiodo]; } # fine if (!$idiniziop or $idiniziop > $inizio_prenota_id[$idprenotainperiodo]) if (!$idfinep or $idfinep < $fine_prenota_id[$idprenotainperiodo]) { $idfinep = $fine_prenota_id[$idprenotainperiodo]; } # fine if (!$idfinep or $idfinep < $fine_prenota_id[$idprenotainperiodo]) } else { $mobile = "NO"; } if ($app_richiesti_vett[',vicini,'] == "SI" and !$dati_app['vicini'][$numapp] == $numapp) { $mobile = "NO"; } } # fine for $num2 if ($mobile == "SI") { # Provo a spostare le prenotazioni dell'appartamento $numapp. $mobile2 = "SI"; $prenota_comp_presente = "NO"; #$liberabile = ""; #$scambiabile = ""; #$da_scambiare = ""; for ($num2 = 1; $num2 <= $num_pp; $num2++) { $idprenotainperiodo = $prenotainperiodo[$num2]; for ($num3 = 0; $num3 < $dati_app['totapp']; $num3++) { if ($num3 != $num1) { $numapp2 = $dati_app[posizione][$num3]; if ($app_assegnabili_id[$idprenotainperiodo] == "v" or $app_assegnabili[$idprenotainperiodo][$numapp2] == "SI") { $prenotainperiodo2 = prenota_in_app_e_periodo($numapp2, $inizio_prenota_id[$idprenotainperiodo], $fine_prenota_id[$idprenotainperiodo], $prenota_in_app_sett, $fine_prenota_id, $num_pp2); if (!$num_pp2 and !$app_assegnabili_id[0][$idprenotainperiodo]) { $nuovo_app[$idprenotainperiodo] = $numapp2; $liberabile[$idprenotainperiodo] = "SI"; $scambiabile[$idprenotainperiodo] = "NO"; break; } else { # Se non si possono spostare vedere se sono da scambiare if ($app_assegnabili_id[0][$idprenotainperiodo]) { $prenota_comp_presente = "SI"; } $prenota_fissa_presente = "NO"; for ($num4 = 1; $num4 <= $num_pp2; $num4++) { $idprenotainperiodo2 = $prenotainperiodo2[$num4]; if (!$app_assegnabili_id[$idprenotainperiodo2]) { $prenota_fissa_presente = "SI"; } else { # se $idprenotainperiodo è uguale o minore di $idprenotainperiodo2 e ne contiene gli app. assegnabili è inutile fare lo scambio if ($inizio_prenota_id[$idprenotainperiodo2] <= $inizio_prenota_id[$idprenotainperiodo] and $fine_prenota_id[$idprenotainperiodo2] >= $fine_prenota_id[$idprenotainperiodo]) { if ($app_assegnabili_id[$idprenotainperiodo] == "v") { $prenota_fissa_presente = "SI"; } else { if ($app_assegnabili_id[$idprenotainperiodo2] != "v" and !$app_assegnabili_id[0][$idprenotainperiodo]) { $vett_assegnabili = explode(",", $app_assegnabili_id[$idprenotainperiodo2]); $num_assegnabili = count($vett_assegnabili); $lista_app_contenuta = "SI"; for ($num5 = 0; $num5 < $num_assegnabili; $num5++) { if ($app_assegnabili[$idprenotainperiodo][$vett_assegnabili[$num5]] != "SI") { $lista_app_contenuta = "NO"; break; } } # fine for $num5 if ($lista_app_contenuta == "SI") { $prenota_fissa_presente = "SI"; } } # fine if ($app_assegnabili_id[$idprenotainperiodo2] != "v" and !$app_assegnabili_id[0][$idprenotainperiodo]) } # fine else if ($app_assegnabili_id[$idprenotainperiodo] == "v") } # fine if ($inizio_prenota_id[$idprenotainperiodo2] <= $inizio_prenota_id[$idprenotainperiodo] and... } # fine else if (!$app_assegnabili_id[$idprenotainperiodo2]) } # fine fine for $num4 if ($prenota_fissa_presente == "NO") { $scambiabile[$idprenotainperiodo] = "SI"; $da_scambiare[$idprenotainperiodo][$numapp2] = "SI"; } # fine if ($prenota_fissa_presente == "NO") } # fine else if (!$num_pp2) } # fine if ($app_assegnabili_id[$idprenotainperiodo] == "v" or ... } # fine if ($num3 != $num1) } # fine for $num3 if ($liberabile[$idprenotainperiodo] != "SI") { $tutti_liberabili = "NO"; } if ($liberabile[$idprenotainperiodo] != "SI" and $scambiabile[$idprenotainperiodo] != "SI") { $mobile2 = "NO"; } } # fine for $num2 # Applico gli eventuali spostamenti, altrimenti metto i data in $da_liberare if ($tutti_liberabili != "NO") { for ($num2 = 1; $num2 <= $num_pp; $num2++) { $idprenotainperiodo = $prenotainperiodo[$num2]; $n_app = $nuovo_app[$idprenotainperiodo]; for ($num3 = $inizio_prenota_id[$idprenotainperiodo]; $num3 <= $fine_prenota_id[$idprenotainperiodo]; $num3++) { $prenota_in_app_sett[$numapp][$num3] = ""; $prenota_in_app_sett[$n_app][$num3] = $idprenotainperiodo; } # fine for $num3 $app_prenota_id[$idprenotainperiodo] = $n_app; } # fine for $num2 $appartamento = $numapp; $fatto = "SI"; if ($debug == "on") { echo "LIBERATO2 {$appartamento}<br>"; } break; } # fine if ($tutti_liberabili != "NO") if ($mobile2 == "SI") { if ($prenota_comp_presente == "NO") { $idinizio_da_liberare[$num_da_liberare] = $idiniziop; $idfine_da_liberare[$num_da_liberare] = $idfinep; $app_da_liberare[$num_da_liberare] = $numapp; $prenotainperiodo_da_liberare[$num_da_liberare] = $prenotainperiodo; $num_pp_da_liberare[$num_da_liberare] = $num_pp; $num_da_liberare++; } else { $idinizio_da_liberare2[$num_da_liberare2] = $idiniziop; $idfine_da_liberare2[$num_da_liberare2] = $idfinep; $app_da_liberare2[$num_da_liberare2] = $numapp; $prenotainperiodo_da_liberare2[$num_da_liberare2] = $prenotainperiodo; $num_pp_da_liberare2[$num_da_liberare2] = $num_pp; $num_da_liberare2++; } # fine else if ($prenota_comp_presente == "NO") } else { $riprova_app[$numapp] = "NO"; } if ($fatto == "SI") { break; } } else { $riprova_app[$numapp] = "NO"; } } # fine if (!$app_richiesti or $app_richiesti[$numapp] == "SI") } # fine for $num1 } # fine if ($fatto != "SI") # Se non è ancora $fatto chiamo ricorsivamente liberasettimane con i data # in $da_liberare e $da_scambiare, operando su una variabile temporanea. if ($fatto == "NO" and $limiti_var['t_limite'] >= time()) { $nuova_profondita = $profondita; $nuova_profondita['attuale'] = $profondita['attuale'] + 1; $num_da_lib_no_comp = $num_da_liberare; for ($num1 = 1; $num1 < $num_da_liberare2; $num1++) { $idinizio_da_liberare[$num_da_liberare] = $idinizio_da_liberare2[$num1]; $idfine_da_liberare[$num_da_liberare] = $idfine_da_liberare2[$num1]; $app_da_liberare[$num_da_liberare] = $app_da_liberare2[$num1]; $prenotainperiodo_da_liberare[$num_da_liberare] = $prenotainperiodo_da_liberare2[$num1]; $num_pp_da_liberare[$num_da_liberare] = $num_pp_da_liberare2[$num1]; $num_da_liberare++; } # fine for $num1 for ($num1 = 1; $num1 < $num_da_liberare; $num1++) { if ($app_da_liberare[$num1] != ",,NO") { $n_app_prenota_id = $app_prenota_id; $n_prenota_in_app_sett = $prenota_in_app_sett; $nuova_profondita['tot_prenota_attuale'] = $profondita['tot_prenota_attuale']; $idiniziop = $idinizio_da_liberare[$num1]; $idfinep = $idfine_da_liberare[$num1]; $numapp = $app_da_liberare[$num1]; $prenotainperiodo = $prenotainperiodo_da_liberare[$num1]; $num_pp = $num_pp_da_liberare[$num1]; # Muovo le prenotazioni liberabili for ($num2 = 1; $num2 <= $num_pp; $num2++) { $idprenotainperiodo = $prenotainperiodo[$num2]; if ($liberabile[$idprenotainperiodo] == "SI") { $n_app = $nuovo_app[$idprenotainperiodo]; for ($num3 = $inizio_prenota_id[$idprenotainperiodo]; $num3 <= $fine_prenota_id[$idprenotainperiodo]; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = ""; $n_prenota_in_app_sett[$n_app][$num3] = $idprenotainperiodo; } # fine for $num3 $n_app_prenota_id[$idprenotainperiodo] = $n_app; } # fine if ($liberabile[$idpenotainperiodo] == "SI") } # fine for $num2 # Riempio gli spazi vuoti con prenotazioni kostanti. $idinizio_prenota_falsa = $idinizio; $prenota_falsa_da_inserire = "NO"; for ($num2 = $idinizio; $num2 <= $idfine + 1; $num2++) { if ($n_prenota_in_app_sett[$numapp][$num2] or $num2 == $idfine + 1) { if ($prenota_falsa_da_inserire == "SI") { $nuova_profondita['tot_prenota_attuale']++; $n_app_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $numapp; $inizio_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $idinizio_prenota_falsa; $fine_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $idfine_prenota_falsa; for ($num3 = $idinizio_prenota_falsa; $num3 <= $idfine_prenota_falsa; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = $nuova_profondita['tot_prenota_attuale']; } # fine for $num3 } # fine if ($prenota_falsa_da_inserire == "SI") $prenota_falsa_da_inserire = "NO"; $idinizio_prenota_falsa = $num2 + 1; } else { $prenota_falsa_da_inserire = "SI"; $idfine_prenota_falsa = $num2; } # fine else if ($n_prenota_in_app_sett[$numapp][$num2] or $num2 == ($idfine+1)) } # fine for $num2 #chiamo ricorsivamente liberasettimane con gli app. $da_scambiare $fatto3 = "SI"; $limiti_var_orig = $limiti_var; $num_pp_s = $num_pp; $prenotainperiodo_s = $prenotainperiodo; $scambiabile_s = $scambiabile; unset($prenotainperiodo_agg); for ($num2 = 1; $num2 <= $num_pp_s; $num2++) { $idprenotainperiodo = $prenotainperiodo_s[$num2]; if ($scambiabile_s[$idprenotainperiodo] == "SI") { $idinizioprenota2 = $inizio_prenota_id[$idprenotainperiodo]; $idfineprenota2 = $fine_prenota_id[$idprenotainperiodo]; if ($idinizioprenota2 > $idinizio) { $idinizio_rimpicciolito = $idinizioprenota2; } else { $idinizio_rimpicciolito = $idinizio; } if ($idfineprenota2 < $idfine) { $idfine_rimpicciolito = $idfineprenota2; } else { $idfine_rimpicciolito = $idfine; } # Se la prenotazione scambiabile che c'era prima è stata spostata in un altro appartamento # riempio gli spazi vuoti ed aggiungo eventuali nuove prenotazioni a $prenotainperiodo_s if ($numapp != $n_app_prenota_id[$idprenotainperiodo]) { $idinizio_prenota_falsa = $idinizio_rimpicciolito; $prenota_falsa_da_inserire = "NO"; for ($num3 = $idinizio_rimpicciolito; $num3 <= $idfine_rimpicciolito + 1; $num3++) { if ($n_prenota_in_app_sett[$numapp][$num3] and !$prenotainperiodo_agg[$n_prenota_in_app_sett[$numapp][$num3]] and $num3 != $idfine_rimpicciolito + 1) { $prenotainperiodo_agg[$n_prenota_in_app_sett[$numapp][$num3]] = 1; $num_pp_s++; $prenotainperiodo_s[$num_pp_s] = $n_prenota_in_app_sett[$numapp][$num3]; $scambiabile_s[$n_prenota_in_app_sett[$numapp][$num3]] = "SI"; } # fine ($n_prenota_in_app_sett[$numapp][$num3] and !$prenotainperiodo_agg[$n_prenota_in_app_sett[$numapp][$num3]] and... if ($n_prenota_in_app_sett[$numapp][$num3] or $num3 == $idfine_rimpicciolito + 1) { if ($prenota_falsa_da_inserire == "SI") { $nuova_profondita['tot_prenota_attuale']++; $n_app_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $numapp; $inizio_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $idinizio_prenota_falsa; $fine_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $idfine_prenota_falsa; for ($num4 = $idinizio_prenota_falsa; $num4 <= $idfine_prenota_falsa; $num4++) { $n_prenota_in_app_sett[$numapp][$num4] = $nuova_profondita['tot_prenota_attuale']; } # fine for $num4 } # fine if ($prenota_falsa_da_inserire == "SI") $prenota_falsa_da_inserire = "NO"; $idinizio_prenota_falsa = $num3 + 1; } else { $prenota_falsa_da_inserire = "SI"; $idfine_prenota_falsa = $num3; } # fine else if ($n_prenota_in_app_sett[$numapp][$num2] or $num2 == ($idfine+1)) } # fine for $num3 } else { $inizio_prenota_id[$idprenotainperiodo] = $idinizio_rimpicciolito; $fine_prenota_id[$idprenotainperiodo] = $idfine_rimpicciolito; for ($num3 = $idinizioprenota2; $num3 < $idinizio_rimpicciolito; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = ""; } # fine for $num3 for ($num3 = $idfine_rimpicciolito + 1; $num3 <= $idfineprenota2; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = ""; } # fine for $num3 $app_assegnabili_id2 = $app_assegnabili_id[$idprenotainperiodo]; $app_assegnabili_id[$idprenotainperiodo] = ""; $ap_ric = ""; for ($num3 = 0; $num3 < $dati_app['totapp']; $num3++) { $numapp2 = $dati_app['posizione'][$num3]; if ($da_scambiare[$idprenotainperiodo][$numapp2] == "SI") { $ap_ric[$numapp2] = "SI"; } # fine if ($da_scambiare[$idprenotainperiodo][$numapp2] == "SI") } # fine for $num3 # Se la prenotazione da scambiare ne ha altre compagne if ($app_assegnabili_id[0][$idprenotainperiodo]) { $idprenota_comp = explode(",", $app_assegnabili_id[0][$idprenotainperiodo]); $num_idprenota_comp = count($idprenota_comp); cancella_prenota_compagne($idprenota_comp, $num_idprenota_comp, $idinizioprenota2, $idfineprenota2, $ap_ric, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $n_app_prenota_id, $n_prenota_in_app_sett); } # fine if ($app_assegnabili_id[0][$idprenotainperiodo]) $appartamento2 = ""; $fatto2 = ""; if ($debug == "on") { global $passo; $passo++; echo $passo; for ($i = 0; $i < $profondita['attuale']; $i++) { echo " "; } if ($ap_ric[',numero,']) { $ap_ric_ved = $ap_ric[1] . " (pren {$idprenotainperiodo} + " . $app_assegnabili_id[0][$idprenotainperiodo] . ")"; $idinizioprenota2_ved = $idinizioprenota2[1]; $idfineprenota2_ved = $idfineprenota2[1]; } else { $ap_ric_ved = implode(",", array_keys($ap_ric)) . " (pren {$idprenotainperiodo})"; $idinizioprenota2_ved = $idinizioprenota2; $idfineprenota2_ved = $idfineprenota2; } # fine else if ($ap_ric[',numero,']) echo "<b>" . $profondita['attuale'] . "</b> <em>" . date("H:i:s") . "</em> libera il {$numapp} da {$idinizioprenota2_ved} a {$idfineprenota2_ved} negli app {$ap_ric_ved}<br>"; } # fine if ($debug == "on") liberasettimane($idinizioprenota2, $idfineprenota2, $limiti_var, $anno, $fatto2, $appartamento2, $nuova_profondita, $ap_ric, $n_app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $n_prenota_in_app_sett, $dati_app, $nome_tab_prenota); if ($debug == "on") { echo $passo; for ($i = 0; $i < $profondita['attuale']; $i++) { echo " "; } echo "<b>" . $profondita['attuale'] . "</b> finito <em>" . date("H:i:s") . "</em> {$fatto2} (app {$appartamento2})<br>"; } # fine if ($debug == "on") if ($app_assegnabili_id[0][$idprenotainperiodo]) { $inizio_prenota_id[$idprenotainperiodo] = $idinizioprenota2[1]; $fine_prenota_id[$idprenotainperiodo] = $idfineprenota2[1]; if ($fatto2 == "SI") { ripristina_prenota_compagne($idprenota_comp, $num_idprenota_comp, $idinizioprenota2, $idfineprenota2, $appartamento2, $n_app_prenota_id, $n_prenota_in_app_sett, $fine_prenota_id, $profondita); } } else { $inizio_prenota_id[$idprenotainperiodo] = $idinizioprenota2; $fine_prenota_id[$idprenotainperiodo] = $idfineprenota2; } # fine else if ($app_assegnabili_id[0][$idprenotainperiodo]) $app_assegnabili_id[$idprenotainperiodo] = $app_assegnabili_id2; if ($fatto2 == "SI") { for ($num3 = $idinizio_rimpicciolito; $num3 <= $idfine_rimpicciolito; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = ""; } # fine for $num3 for ($num3 = $idinizioprenota2; $num3 <= $idfineprenota2; $num3++) { $n_prenota_in_app_sett[$appartamento2][$num3] = $idprenotainperiodo; } # fine for $num3 $n_app_prenota_id[$idprenotainperiodo] = $appartamento2; if ($debug == "on") { echo $passo; for ($i = 0; $i < $profondita['attuale']; $i++) { echo " "; } echo "<b>" . $profondita['attuale'] . "</b> spostata pren {$idprenotainperiodo} in " . $appartamento2 . "<br>"; } # fine if ($debug == "on") $nuova_profondita['tot_prenota_attuale']++; $n_app_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $numapp; $inizio_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $idinizio_rimpicciolito; $fine_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $idfine_rimpicciolito; for ($num3 = $idinizio_rimpicciolito; $num3 <= $idfine_rimpicciolito; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = $nuova_profondita['tot_prenota_attuale']; } # fine for $num3 } else { $fatto3 = "NO"; aggiorna_app_aggiunti($limiti_var, $limiti_var_orig, $app_orig_prenota_id, $app_prenota_id, $inizio_prenota_id, $fine_prenota_id, $prenota_in_app_sett); break; } # fine else if ($fatto2 == "SI") } # fine else if ($numapp != $n_app_prenota_id[$idprenotainperiodo]) } # fine if ($scambiabile_s[$idprenotainperiodo] == "SI") } # fine for $num2 # cancello le prenotazioni kostanti for ($num2 = $profondita['tot_prenota_attuale'] + 1; $num2 <= $nuova_profondita['tot_prenota_attuale']; $num2++) { for ($num3 = $inizio_prenota_id[$num2]; $num3 <= $fine_prenota_id[$num2]; $num3++) { $n_prenota_in_app_sett[$numapp][$num3] = ""; } # fine for $num3 $n_app_prenota_id[$num2] = ""; $inizio_prenota_id[$num2] = ""; $fine_prenota_id[$num2] = ""; } # fine for $num2 if ($fatto3 == "SI") { $app_prenota_id = $n_app_prenota_id; $prenota_in_app_sett = $n_prenota_in_app_sett; $fatto = "SI"; $appartamento = $numapp; break; } else { $riprova_app[$numapp] = "NO"; } # Elimino gli appartamenti successivi che si possono scambiare con questo if ($num1 != $num_da_liberare - 1 and $num1 < $num_da_lib_no_comp) { $lista_app_assegnabili = ""; for ($num2 = 1; $num2 <= $num_pp; $num2++) { $idprenotainperiodo = $prenotainperiodo[$num2]; if (!$lista_app_assegnabili or $lista_app_assegnabili == "v") { $lista_app_assegnabili = $app_assegnabili_id[$idprenotainperiodo]; } else { $app_ass_num2 = $app_assegnabili_id[$idprenotainperiodo]; if ($app_ass_num2 != "v" and $app_ass_num2 != $lista_app_assegnabili) { $app_ass_num2 = explode(",", $app_ass_num2); $num_app_ass_num2 = count($app_ass_num2) - 1; $n_lista_app_assegnabili = ""; for ($num3 = 1; $num3 < $num_app_ass_num2; $num3++) { if (str_replace("," . $app_ass_num2[$num3] . ",", "", $lista_app_assegnabili) != $lista_app_assegnabili) { $n_lista_app_assegnabili .= "," . $app_ass_num2[$num3]; } } # fine for $num3 $lista_app_assegnabili = $n_lista_app_assegnabili; if (!$lista_app_assegnabili) { break; } else { $lista_app_assegnabili .= ","; } } # fine if ($app_ass_num2 != "v" and $app_ass_num2 != $lista_app_assegnabili) } # fine else if (!$lista_app_assegnabili or... } # fine for $num2 if ($lista_app_assegnabili) { for ($num2 = $num1 + 1; $num2 < $num_da_liberare; $num2++) { $numapp2 = $app_da_liberare[$num2]; if (($lista_app_assegnabili == "v" or str_replace(",{$numapp2},", "", $lista_app_assegnabili) != $lista_app_assegnabili) and $numapp2 != ",,NO") { if ($prenota_in_app_sett[$numapp2][$idiniziop]) { $ini_blocco2 = $inizio_prenota_id[$prenota_in_app_sett[$numapp2][$idiniziop]]; } else { $ini_blocco2 = $idiniziop; } if ($prenota_in_app_sett[$numapp2][$idfinep]) { $fine_blocco2 = $fine_prenota_id[$prenota_in_app_sett[$numapp2][$idfinep]]; } else { $fine_blocco2 = $idfinep; } if ($ini_blocco2 == $idiniziop and $fine_blocco2 == $idfinep) { $scambiabili = "SI"; for ($num3 = $idiniziop; $num3 <= $idfinep; $num3++) { if ($prenota_in_app_sett[$numapp2][$num3]) { $app_ass_num3 = $app_assegnabili_id[$prenota_in_app_sett[$numapp2][$num3]]; if ($app_ass_num3 != "v" and str_replace(",{$numapp},", "", $app_ass_num3) == $app_ass_num3) { $scambiabili = "NO"; break; } # fine if ($app_ass_num5 != "v" and... $num3 = $fine_prenota_id[$prenota_in_app_sett[$numapp2][$num3]]; } # fine if ($prenota_in_app_sett[$numapp3][$num3]) } # fine for $num3 if ($scambiabili == "SI") { $app_da_liberare[$num2] = ",,NO"; $riprova_app[$numapp2] = "NO"; } # fine if ($scambiabili == "SI") } # fine if ($ini_blocco2 == $ini_blocco1 and... } # fine if (($lista_app_assegnabili == "v" or... } # fine for $num2 } # fine if ($lista_app_assegnabili) } # fine if ($num1 != ($num_da_liberare - 1) and... } # fine if ($app_da_liberare[$num1] != ",,NO") } # fine for $num1 } # fine if ($fatto == "NO") if ($tutti_occupati == "SI") { $fatto = "NO"; } # Se bisogna liberare altri appartamenti oltre a quello appena liberato if ($fatto == "SI" and $app_richiesti_vett[',numero,']) { if ($app_richiesti_vett[',numero,'] > $app_richiesti_vett['id']) { $nuova_profondita = $profondita; $nuova_profondita['attuale']++; $nuova_profondita['controllato_tutti_occupati'] = "NO"; $n_app_prenota_id = $app_prenota_id; $n_prenota_in_app_sett = $prenota_in_app_sett; $nuova_profondita['tot_prenota_attuale']++; $id_prenota_lib = $nuova_profondita['tot_prenota_attuale']; if ($debug == "on") { echo "inserita " . $nuova_profondita['tot_prenota_attuale'] . " in {$appartamento} da {$idinizio} a {$idfine}<br>"; } $n_app_prenota_id[$id_prenota_lib] = $appartamento; $inizio_prenota_id[$id_prenota_lib] = $idinizio; $fine_prenota_id[$id_prenota_lib] = $idfine; for ($num1 = $idinizio; $num1 <= $idfine; $num1++) { $n_prenota_in_app_sett[$appartamento][$num1] = $id_prenota_lib; } # fine for $num1 # Se gli app devono essere vicini mantengo l'app liberato fisso e provo i restanti da liberare if ($app_richiesti_vett[',vicini,'] == "SI") { $fatto = "NO"; $lim_for = $app_richiesti_vett[',numero,']; if ($lim_for != $app_richiesti_vett['id'] + 1 and $limiti_var['t_limite'] < time()) { $lim_for = $app_richiesti_vett['id'] + 1; if ($debug == "on") { echo "timeout<br>"; } } # fine if ($limiti_var['t_limite'] < time()) for ($num1 = $app_richiesti_vett['id'] + 1; $num1 <= $lim_for; $num1++) { if ($provato[$idinizio_vett[$num1]][$idfine_vett[$num1]][$app_richiesti_vett[$num1]] != "SI") { $provato[$idinizio_vett[$num1]][$idfine_vett[$num1]][$app_richiesti_vett[$num1]] = "SI"; $n_app_prenota_id2 = $n_app_prenota_id; $n_prenota_in_app_sett2 = $n_prenota_in_app_sett; $n_app_richiesti_vett = $app_richiesti_vett; if ((string) $n_app_richiesti_vett[',app_vicini,'] == "") { $n_app_richiesti_vett[',app_vicini,'] = $dati_app['vicini'][$appartamento]; } else { $app_vicini = explode(",", $dati_app['vicini'][$appartamento]); $num_app_vicini = count($app_vicini); for ($num2 = 0; $num2 < $num_app_vicini; $num2++) { if (str_replace("," . $app_vicini[$num2] . ",", "", "," . $n_app_richiesti_vett[',app_vicini,'] . ",") == "," . $n_app_richiesti_vett[',app_vicini,'] . ",") { $n_app_richiesti_vett[',app_vicini,'] .= "," . $app_vicini[$num2]; } } # fine for $num2 } # fine else if ((string) $app_richiesti_vett[',app_vicini,'] == "") $n_app_richiesti_vett[$num1] = incrocia_app_richiesti($n_app_richiesti_vett[$num1], $n_app_richiesti_vett[',app_vicini,']); if ((string) $n_app_richiesti_vett[$num1] != "") { $n_idinizio_vett = $idinizio_vett; $n_idfine_vett = $idfine_vett; $val = $n_app_richiesti_vett[$app_richiesti_vett['id'] + 1]; $n_app_richiesti_vett[$app_richiesti_vett['id'] + 1] = $n_app_richiesti_vett[$num1]; $n_app_richiesti_vett[$num1] = $val; $n_idinizio_vett[$app_richiesti_vett['id'] + 1] = $idinizio_vett[$num1]; $n_idinizio_vett[$num1] = $idinizio_vett[$app_richiesti_vett['id'] + 1]; $n_idfine_vett[$app_richiesti_vett['id'] + 1] = $idfine_vett[$num1]; $n_idfine_vett[$num1] = $idfine_vett[$app_richiesti_vett['id'] + 1]; if ($debug == "on") { global $passo; echo $passo; for ($i = 0; $i < $profondita['attuale']; $i++) { echo " "; } echo "<b>" . $profondita['attuale'] . "</b> libera vicini a {$appartamento} da " . $n_idinizio_vett[$app_richiesti_vett['id'] + 1] . " a " . $n_idfine_vett[$app_richiesti_vett['id'] + 1] . " in " . $n_app_richiesti_vett[$app_richiesti_vett['id'] + 1] . "<br>"; } # fine if ($debug == "on") liberasettimane($n_idinizio_vett, $n_idfine_vett, $limiti_var, $anno, $fatto, $appartamento_vett, $nuova_profondita, $n_app_richiesti_vett, $n_app_prenota_id2, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $n_prenota_in_app_sett2, $dati_app, $nome_tab_prenota); if ($debug == "on") { echo $passo; for ($i = 0; $i < $profondita['attuale']; $i++) { echo " "; } echo "<b>" . $profondita['attuale'] . "</b> fatto libera vicini a {$appartamento} {$fatto}<br>"; } # fine if ($debug == "on") if ($fatto == "SI") { $n_app_prenota_id = $n_app_prenota_id2; $n_prenota_in_app_sett = $n_prenota_in_app_sett2; $val = $appartamento_vett[$app_richiesti_vett['id'] + 1]; $appartamento_vett[$app_richiesti_vett['id'] + 1] = $appartamento_vett[$num1]; $appartamento_vett[$num1] = $val; break; } # fine if ($fatto == "SI") } # fine if ((string) $n_app_richiesti_vett[$num1] != "") } # fine if ($provato[$idinizio_vett[$num1]][$idfine_vett[$num1]][$app_richiesti_vett[$num1]] != "SI") } # fine for $num1 if ($fatto != "SI") { $riprova_senza_app_liberato = $appartamento; } } else { if ($app_richiesti_vett[$app_richiesti_vett['id']] == ",tutti,") { $app_assegnabili_id[$id_prenota_lib] = "v"; } else { if (str_replace(",", "", $app_richiesti_vett[$app_richiesti_vett['id']]) != $app_richiesti_vett[$app_richiesti_vett['id']]) { $app_assegnabili_id[$id_prenota_lib] = $app_richiesti_vett[$app_richiesti_vett['id']]; } } liberasettimane($idinizio_vett, $idfine_vett, $limiti_var, $anno, $fatto, $appartamento_vett, $nuova_profondita, $app_richiesti_vett, $n_app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $n_prenota_in_app_sett, $dati_app, $nome_tab_prenota); } # fine elseif ($app_richiesti[',vicini,'] == "SI") if ($fatto == "SI") { $app_prenota_id = $n_app_prenota_id; $prenota_in_app_sett = $n_prenota_in_app_sett; for ($num1 = $idinizio; $num1 <= $idfine; $num1++) { $prenota_in_app_sett[$app_prenota_id[$id_prenota_lib]][$num1] = ""; } # fine for $num1 $appartamento_vett[$app_richiesti_vett['id']] = $app_prenota_id[$id_prenota_lib]; $app_prenota_id[$id_prenota_lib] = ""; } else { $appartamento_vett[$app_richiesti_vett['id']] = ""; aggiorna_app_aggiunti($limiti_var, $limiti_var_orig, $app_orig_prenota_id, $app_prenota_id, $inizio_prenota_id, $fine_prenota_id, $prenota_in_app_sett); } # fine else if ($fatto == "SI") $inizio_prenota_id[$id_prenota_lib] = ""; $fine_prenota_id[$id_prenota_lib] = ""; $app_assegnabili_id[$id_prenota_lib] = ""; } else { $appartamento_vett[$app_richiesti_vett['id']] = $appartamento; } $appartamento = $appartamento_vett; } # fine if ($fatto == "SI" and $app_richiesti_vett[',numero,']) # Se si era liberato un appartamento ma non se ne sono trovati altri vicini riprovo if ($riprova_senza_app_liberato) { $n_lista_app_ric = ""; for ($num1 = 0; $num1 < $dati_app['totapp']; $num1++) { $numapp = $dati_app['posizione'][$num1]; if ($numapp != $riprova_senza_app_liberato and $riprova_app[$numapp] != "NO") { $n_lista_app_ric .= $numapp . ","; } } # fine for $num1 $n_lista_app_ric = substr($n_lista_app_ric, 0, -1); $app_richiesti_vett[$app_richiesti_vett['id']] = incrocia_app_richiesti($app_richiesti_vett[$app_richiesti_vett['id']], $n_lista_app_ric); if ((string) $app_richiesti_vett[$app_richiesti_vett['id']] != "") { $nuova_profondita = $profondita; $nuova_profondita['attuale']++; $nuova_profondita['controllato_tutti_occupati'] = "NO"; $n_app_prenota_id = $app_prenota_id; $n_prenota_in_app_sett = $prenota_in_app_sett; if ($debug == "on") { global $passo; echo $passo; for ($i = 0; $i < $profondita['attuale']; $i++) { echo " "; } echo "<b>" . $profondita['attuale'] . "</b> <em>" . date("H:i:s") . "</em> riprova " . $app_richiesti_vett['id'] . " negli app " . $app_richiesti_vett[$app_richiesti_vett['id']] . "<br>"; } # fine if ($debug == "on") $app_richiesti_vett['id'] = $app_richiesti_vett['id'] - 1; liberasettimane($idinizio_vett, $idfine_vett, $limiti_var, $anno, $fatto, $appartamento_vett, $nuova_profondita, $app_richiesti_vett, $n_app_prenota_id, $app_orig_prenota_id, $inizio_prenota_id, $fine_prenota_id, $app_assegnabili_id, $n_prenota_in_app_sett, $dati_app, $nome_tab_prenota); if ($fatto == "SI") { $app_prenota_id = $n_app_prenota_id; $prenota_in_app_sett = $n_prenota_in_app_sett; $appartamento = $appartamento_vett; } else { aggiorna_app_aggiunti($limiti_var, $limiti_var_orig, $app_orig_prenota_id, $app_prenota_id, $inizio_prenota_id, $fine_prenota_id, $prenota_in_app_sett); } } # fine if ((string) $app_richiesti_vett[$app_richiesti_vett['id']] != "") } # fine if ($riprova_senza_app_liberato) if ($primo_ciclo == "SI" and $fatto == "SI") { $risul_agg = aggiorna_tableprenota($app_prenota_id, $app_orig_prenota_id, $tableprenota); if (!$risul_agg) { $fatto = "NO"; } } # fine if ($primo_ciclo == "SI" and $fatto == "SI") }
function spezzaprenota ($idinizio,$idfine,$anno,&$limiti_var,$profondita,&$n_tronchi,&$vet_appartamenti,&$vett_idinizio,&$vett_idfine,$num_persone,&$app_prenota_id,&$app_orig_prenota_id,&$inizio_prenota_id,&$fine_prenota_id,&$app_assegnabili_id,&$prenota_in_app_sett,&$dati_app,$nome_tab_prenota = "prenota") { global $debug; $limiti_var['n_ini'] = $idinizio; $limiti_var['n_fine'] = $idfine; if (!is_array($profondita)) { $primo_ciclo = "SI"; $prof_copia = $profondita; $profondita = ""; $profondita['iniziale'] = $prof_copia; $profondita['attuale'] = $prof_copia; $tableprenota = $nome_tab_prenota . $anno . $profondita['iniziale']; $max_prenota = esegui_query("select max(idprenota) from $tableprenota"); $tot_prenota = risul_query($max_prenota,0,0); $profondita['tot_prenota_ini'] = $tot_prenota; $profondita['tot_prenota_attuale'] = $tot_prenota; tab_a_var($limiti_var,$app_prenota_id,$app_orig_prenota_id,$inizio_prenota_id,$fine_prenota_id,$app_assegnabili_id,$prenota_in_app_sett,$anno,$dati_app,$profondita,$nome_tab_prenota); } # fine if (!is_array($profondita)) if (!$n_tronchi) $n_tronchi = 0; # ciclo da ripetere per ogni appartamento che non inizia con una # prenotazione fissa, non spostabile o con $maxoccupanti troppo basso $numsettimane = $idfine - $idinizio + 1; $n_tronchi3 = -1; if ($limiti_var['tutti_fissi'] != "SI" and $limiti_var['t_limite'] >= time()) { for ($num1 = 0 ; $num1 < $dati_app['totapp'] ; $num1++) { $numapp = $dati_app['posizione'][$num1]; if ($dati_app['maxocc'][$numapp] >= $num_persone) { $prima_prenota = prenota_in_app_e_periodo($numapp,$idinizio,$idinizio,$prenota_in_app_sett,$fine_prenota_id,$num_pp); if ($num_pp != 0) $idprima_prenota = $prima_prenota[1]; else $idprima_prenota = ""; if (!$idprima_prenota or $app_assegnabili_id[$idprima_prenota]) { $limiti_var_orig = $limiti_var; $nuova_profondita = $profondita; $nuova_profondita['attuale'] = $profondita['attuale'] + 1; $app_prenota_id2 = $app_prenota_id; $prenota_in_app_sett2 = $prenota_in_app_sett; $ap_ric = ""; $ap_ric[$numapp] = "SI"; $n_tronchi2 = $n_tronchi; $vet_appartamenti2 = $vet_appartamenti; $vett_idinizio2 = $vett_idinizio; $vett_idfine2 = $vett_idfine; for ($num2 = 0 ; $num2 < $numsettimane ; $num2 = $num2 + 1) { $id_settimana = $idinizio + $num2; $fatto_libera = ""; if ($debug == "on") { for ($i = 0 ; $i < $profondita['attuale'] ; $i++) echo " "; echo "<b>".$profondita['attuale']."</b> <em>".date("H:i:s")."</em> spezz_libera da $id_settimana a $id_settimana negli app ".implode(",",array_keys($ap_ric))."<br>"; } # fine if ($debug == "on") liberasettimane($id_settimana,$id_settimana,$limiti_var,$anno,$fatto_libera,$app_liber,$nuova_profondita,$ap_ric,$app_prenota_id2,$app_orig_prenota_id,$inizio_prenota_id,$fine_prenota_id,$app_assegnabili_id,$prenota_in_app_sett2,$dati_app,$nome_tab_prenota); if ($debug == "on") { for ($i = 0 ; $i < $profondita['attuale'] ; $i++) echo " "; echo "<b>".$profondita['attuale']."</b> finito <em>".date("H:i:s")."</em> spezz_lib $fatto_libera $app_liber<br>"; } # fine if ($debug == "on") if ($fatto_libera == "SI") { $nuova_profondita['tot_prenota_attuale']++; $app_prenota_id2[$nuova_profondita['tot_prenota_attuale']] = $numapp; $inizio_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $id_settimana; $fine_prenota_id[$nuova_profondita['tot_prenota_attuale']] = $id_settimana; $prenota_in_app_sett2[$numapp][$id_settimana] = $nuova_profondita['tot_prenota_attuale']; } # fine if ($fatto_libera == "SI") else break; } # fine for $num2 if ($fatto_libera == "SI" or $id_settimana != $idinizio) { $n_tronchi2 = $n_tronchi2 + 1; $vet_appartamenti2[$n_tronchi2] = $numapp; $vett_idinizio2[$n_tronchi2] = $idinizio; $vett_idfine2[$n_tronchi2] = $idfine; if ($fatto_libera != "SI") { $idfine2 = $id_settimana - 1; $vett_idfine2[$n_tronchi2] = $idfine2; if ($debug == "on") { for ($i = 0 ; $i < $profondita['attuale'] ; $i++) echo " "; echo "<b>".$profondita['attuale']."</b> <em>".date("H:i:s")."</em> spezza da $id_settimana a $idfine<br>"; } # fine if ($debug == "on") spezzaprenota($id_settimana,$idfine,$anno,$limiti_var,$nuova_profondita,$n_tronchi2,$vet_appartamenti2,$vett_idinizio2,$vett_idfine2,$num_persone,$app_prenota_id2,$app_orig_prenota_id,$inizio_prenota_id,$fine_prenota_id,$app_assegnabili_id,$prenota_in_app_sett2,$dati_app,$nome_tab_prenota); if ($debug == "on") { for ($i = 0 ; $i < $profondita['attuale'] ; $i++) echo " "; echo "<b>".$profondita['attuale']."</b> finito <em>".date("H:i:s")."</em> spezza $fatto_libera $app_liber<br>"; } # fine if ($debug == "on") if ($n_tronchi2 == -1) { break; } } # fine if ($fatto_libera != "SI") if ($n_tronchi3 == -1 or $n_tronchi2 < $n_tronchi3) { $n_tronchi3 = $n_tronchi2; $vet_appartamenti3 = $vet_appartamenti2; $vett_idinizio3 = $vett_idinizio2; $vett_idfine3 = $vett_idfine2; for ($num2 = ($profondita['tot_prenota_attuale'] + 1) ; $num2 <= $nuova_profondita['tot_prenota_attuale'] ; $num2++) { $app_prenota_id2[$num2] = ""; for ($num3 = $inizio_prenota_id[$num2] ; $num3 <= $fine_prenota_id[$num2] ; $num3++) { $prenota_in_app_sett2[$numapp][$num3] = ""; } # fine for $num3 } # fine for $num2 $app_prenota_id_mod = $app_prenota_id2; $prenota_in_app_sett_mod = $prenota_in_app_sett2; } # fine if (!$n_tronchi3 or $n_tronchi2 < $n_tronchi3) if ($n_tronchi3 == 1) break; } # fine if ($fatto_libera == "SI" or $idsettimana != $idinizio) for ($num2 = ($profondita['tot_prenota_attuale'] + 1) ; $num2 <= $nuova_profondita['tot_prenota_attuale'] ; $num2++) { $inizio_prenota_id[$num2] = ""; $fine_prenota_id[$num2] = ""; } # fine for $num2 aggiorna_app_aggiunti($limiti_var,$limiti_var_orig,$app_orig_prenota_id,$app_prenota_id,$inizio_prenota_id,$fine_prenota_id,$prenota_in_app_sett); } # fine if (!$idprima_prenota or $app_assegnabili_id[$idprima_prenota]) } # fine if ($dati_app['maxocc'][$numapp] >= $num_persone) } # fine for $num1 } # fine if ($limiti_var['tutti_fissi'] != "SI" and... $n_tronchi = $n_tronchi3; if ($n_tronchi != -1) { $vet_appartamenti = $vet_appartamenti3; $vett_idinizio = $vett_idinizio3; $vett_idfine = $vett_idfine3; $app_prenota_id = $app_prenota_id_mod; $prenota_in_app_sett = $prenota_in_app_sett_mod; if ($primo_ciclo == "SI") { $risul_agg = aggiorna_tableprenota($app_prenota_id,$app_orig_prenota_id,$tableprenota); if (!$risul_agg) $n_tronchi = -1; } # fine if ($primo_ciclo == "SI") } # fine if ($n_tronchi != -1) } # fine function spezzaprenota