<?php ################################################################################## # PHP-RESIDENCE # Copyright (C) 2001-2009 by Marco Maria Francesco De Santis (marco@digitaldruid.net) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # any later version accepted by Marco Maria Francesco De Santis, which # shall act as a proxy as defined in Section 14 of version 3 of the # license. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. ################################################################################## function dati_tariffe ($tablenometariffe,$tariffa_sel="",$tablepersonalizza="",$tableregole="") { $righe_tariffe = esegui_query("select * from $tablenometariffe where idntariffe < '11' order by idntariffe"); $dati_tariffe['num'] = risul_query($righe_tariffe,0,'nomecostoagg'); for ($num1 = 1 ; $num1 <= $dati_tariffe['num'] ; $num1++) { if (!$tariffa_sel or $tariffa_sel == $num1) { $dati_tariffe['tariffa'.$num1]['nome'] = risul_query($righe_tariffe,0,'tariffa'.$num1); $dati_tariffe['tariffa'.$num1]['caparra_percent'] = risul_query($righe_tariffe,1,'tariffa'.$num1); $dati_tariffe['tariffa'.$num1]['caparra_arrotond'] = risul_query($righe_tariffe,2,'tariffa'.$num1); $dati_tariffe['tariffa'.$num1]['moltiplica'] = risul_query($righe_tariffe,3,'tariffa'.$num1); $dati_tariffe['tariffa'.$num1]['tasse_percent'] = risul_query($righe_tariffe,4,'tariffa'.$num1); if ($tableregole) { $comm = esegui_query("select * from $tableregole where tariffa_commissioni = '$num1' order by iddatainizio "); $num_comm = numlin_query($comm); for ($num2 = 0 ; $num2 < $num_comm ; $num2++) { $iddataini = risul_query($comm,$num2,'iddatainizio'); if (!$iddataini) { $dati_tariffe['tariffa'.$num1]['commissioni_percent']['def'] = risul_query($comm,$num2,'motivazione'); $dati_tariffe['tariffa'.$num1]['commissioni_arrotond']['def'] = risul_query($comm,$num2,'motivazione2'); } # fine if (!$iddataini) else { $iddatafin = risul_query($comm,$num2,'iddatafine'); $dati_tariffe['tariffa'.$num1]['commissioni_percent']["$iddataini-$iddatafin"] = risul_query($comm,$num2,'motivazione'); $dati_tariffe['tariffa'.$num1]['commissioni_arrotond']["$iddataini-$iddatafin"] = risul_query($comm,$num2,'motivazione2'); } # fine else if (!$iddataini) } # fine for $num2 } # fine if ($tableregole) } # fine if (!$tariffa_sel or $tariffa_sel == $num1) } # fine for $num1 if ($tablepersonalizza) { global $id_utente; if ($id_utente) $id_utente_pers = $id_utente; else $id_utente_pers = 1; $arrotond_tasse = esegui_query("select * from $tablepersonalizza where idpersonalizza = 'arrotond_tasse' and idutente = '$id_utente_pers'"); $dati_tariffe['tasse_arrotond'] = (double) risul_query($arrotond_tasse,0,'valpersonalizza'); } # fine if ($tablepersonalizza) return $dati_tariffe; } # fine function dati_tariffe function trova_app_regola2 ($tipotariffa,&$regole2,&$num_regole2,&$app_regola2_predef,&$id_periodo_corrente,$idinizioperiodo,$idfineperiodo,$tipo_periodi,$anno,$tableregole) { $app_regola2_predef = ""; if (!$regole2) { $regole2 = esegui_query("select * from $tableregole where tariffa_per_app != ''"); $num_regole2 = numlin_query($regole2); } # fine if (!$regole2) for ($num1 = 0 ; $num1 < $num_regole2 ; $num1 = $num1 + 1) { $tariffa_regola2 = risul_query($regole2,$num1,'tariffa_per_app'); if ($tipotariffa == $tariffa_regola2) { $lista_app = risul_query($regole2,$num1,'motivazione'); $lista_appb = risul_query($regole2,$num1,'motivazione2'); if (strcmp($lista_appb,"")) { if (!$id_periodo_corrente) $id_periodo_corrente = calcola_id_periodo_corrente($anno); $ngiorni_reg2b = risul_query($regole2,$num1,'iddatainizio'); if ($ngiorni_reg2b) $diff_giorni = $idinizioperiodo - $id_periodo_corrente + 1; else { $ngiorni_reg2b = risul_query($regole2,$num1,'iddatafine'); $diff_giorni = $idfineperiodo - $id_periodo_corrente + 1; } # fine else if ($ngiorni_reg2b) if ($tipo_periodi == "s") $diff_giorni = $diff_giorni * 7; if ($diff_giorni < $ngiorni_reg2b) { $app_regola2_predef = $lista_app; $lista_app = $lista_appb; } # fine if ($diff_giorni < $ngiorni_reg2b) } # fine if (strcmp($lista_appb,"")) break; } # fine if ($tipotariffa == $tariffa_regola2) } # fine for $num1 return $lista_app; } # fine function trova_app_regola2 function calcola_commissioni ($dati_tariffe,$tipotariffa,$iddataini,$iddatafine,$tariffesettimanali) { $commissioni = (double) 0; if (@is_array($dati_tariffe[$tipotariffa]['commissioni_percent'])) { $costo_tariffa_corr = (double) 0; $num_giorni = 0; $numsett = 0; $tariffesettimanali = explode(",",$tariffesettimanali); for ($num1 = $iddataini ; $num1 <= $iddatafine ; $num1++) { $costo_tariffa_sett = (double) $tariffesettimanali[$numsett]; $commissioni_percent = $dati_tariffe[$tipotariffa]['commissioni_percent']['def']; $commissioni_arrotond = $dati_tariffe[$tipotariffa]['commissioni_arrotond']['def']; reset($dati_tariffe[$tipotariffa]['commissioni_percent']); while (list($per_comm,$val_comm) = each($dati_tariffe[$tipotariffa]['commissioni_percent'])) { if ($per_comm != "def") { $ini_comm = explode("-",$per_comm); $fine_comm = $ini_comm[1]; $ini_comm = $ini_comm[0]; if ($num1 >= $ini_comm and $num1 <= $fine_comm) { $commissioni_percent = $val_comm; $commissioni_arrotond = $dati_tariffe[$tipotariffa]['commissioni_arrotond'][$per_comm]; break; } # fine if ($num1 >= $ini_comm and $num1 <= $fine_comm) } # fine if ($per_comm != "def") } # fine while (list($per_comm,$val_comm) = each($dati_tariffe[$tariffa]['commissioni_percent'])) if ($num1 != $iddataini and ($ultime_comm_perc != $commissioni_percent or $ultime_comm_arr != $commissioni_arrotond)) { if ($ultime_comm_perc) { if ($ultime_comm_arr == "val") $commissioni_corr = $ultime_comm_perc * $num_giorni; else { $commissioni_corr = ($costo_tariffa_corr * (double) $ultime_comm_perc) / 100; $commissioni_corr = $commissioni_corr / $ultime_comm_arr; $commissioni_corr = floor(round($commissioni_corr)); $commissioni_corr = $commissioni_corr * $ultime_comm_arr; } # fine else if ($commissioni_arrotond == "val") $commissioni += (double) $commissioni_corr; } # fine if ($ultime_comm_perc) $costo_tariffa_corr = (double) 0; $num_giorni = 0; } # fine if ($num1 != $iddataini and ($ultime_comm_perc != $commissioni_percent or... $num_giorni++; $ultime_comm_perc = $commissioni_percent; $ultime_comm_arr = $commissioni_arrotond; $costo_tariffa_corr += (double) $tariffesettimanali[$numsett]; $numsett++; } # fine for $num1 if ($ultime_comm_perc) { if ($ultime_comm_arr == "val") $commissioni_corr = $ultime_comm_perc * $num_giorni; else { $commissioni_corr = ($costo_tariffa_corr * (double) $ultime_comm_perc) / 100; $commissioni_corr = $commissioni_corr / $ultime_comm_arr; $commissioni_corr = floor(round($commissioni_corr)); $commissioni_corr = $commissioni_corr * $ultime_comm_arr; } # fine else if ($commissioni_arrotond == "val") $commissioni += (double) $commissioni_corr; } # fine if ($ultime_comm_perc) } # fine if (@is_array($dati_tariffe[$tipotariffa]['commissioni_percent'])) return $commissioni; } # fine function calcola_commissioni ?> |