<?php
/****************************************************************************************
SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV

Version 0.9.9

Copyright (C) 2006-2009  Sylvain FATOME
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; 
either version 2 of the License, or (at your option) any later version.

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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program
(in the directory docs); 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
Boston, MA  02110-1301, USA.

Contact : galawa@free.fr

Web : http://smitst.homelinux.com
****************************************************************************************/


// Vérification des tentatives de hack
$pos=strpos($_SERVER['PHP_SELF'],"inc.php");
if ($pos===FALSE)
	$ok_inc=TRUE;
else
	$ok_inc=FALSE;
if ($ok_inc==FALSE) header("Location: ../index.php");

/************************************************************************/
/* Fonctions pour les accès aux fichiers des pénalités de location      */
/************************************************************************/

// Vérification du nombre de pénalités
function nb_pen()
{
	$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
	mysql_select_db(DBNAME);
	$rexist = "SELECT * FROM `" .TBPEN;
	$rs2 = mysql_query($rexist) or die(mysql_error());
	$nbexist = mysql_num_rows($rs2);
	mysql_free_result($rs2);
	mysql_close($conn2);

	return $nbexist;
}

// Lecture d'un enregistrement pénalité
function lit_enr_pen($code)
{
	$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
	mysql_select_db(DBNAME);
	$rech2 = "SELECT * FROM " .TBPEN. " WHERE pen_code = '$code'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if ($row2 = mysql_fetch_array($rs2))
	{
	}
	mysql_free_result($rs2);
	mysql_close($conn2);
	
	return $row2;
}

// Vérifie si une pénalité est modifiable
// Non, si déjà utilisée  :
//     dans une fiche produit location
function pen_modifiable($code,$open)
{
	$used=FALSE;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}

	// Dans une fiche produit location
	$rech2 = "SELECT * FROM " .TBPDTLPL. " WHERE pdtlpl_codepen = '$code'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2)>0)
		$used=TRUE;

	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return !$used;
}


// Vérifie si une pénalité est désactivable
// Non, si déjà utilisée  :
//     dans une fiche produit d'une location non close
function pen_desactivable($code,$open)
{
	$used=FALSE;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}

	// Dans une fiche produit d'une location non close
	$rech2 = "SELECT * FROM " .TBCOLOC.", ".TBPDTL. " WHERE ".TBCOLOC.".coloc_code = ".TBPDTL.".pdtl_codecoloc";
	$rech2.= " AND ".TBCOLOC.".coloc_datefin = '0000-00-00'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2)>0)
	{
		while ($row2 = mysql_fetch_assoc($rs2)) 
		{
			extract($row2);
			$rech3 = "SELECT * FROM " .TBPDTLPL. " WHERE pdtlpl_codepen = '$code' AND pdtlpl_idpdtl = '$pdtl_id'";
			$rs3 = mysql_query($rech3)or die(mysql_error());
			if (mysql_num_rows($rs3)>0)
			{
				$used=TRUE;
				break;
			}
		}
	}


	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return !$used;
}

//  Donne le nombre de barêmes pénalités dans une pénalité donnée
function nb_penbar_in_pen($code)
{
	$nbpenbar=0;
	$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
	mysql_select_db(DBNAME);
	$rech2 = "SELECT * FROM `" .TBPENBAR. "` WHERE `penbar_codepen` = '$code'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	$nbpenbar = mysql_num_rows($rs2);
	mysql_free_result($rs2);
	mysql_close($conn2);
	
	return $nbpenbar;
}


// Retourne le prochain minimum à appliquer sur un barême pénalités
function next_min_penbar($code,$open)
{
	$nextmin=1;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}

	$rech2 = "SELECT MAX(".TBPENBAR.".penbar_max) AS maximum FROM ".TBPENBAR;
	$rech2.= " WHERE ".TBPENBAR.".penbar_codepen = '".$code."'"; 
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2) <> 0)
	{
		if ($row2 = mysql_fetch_assoc($rs2))
		{
			extract($row2);
			if ($maximum<>NULL)
				$nextmin=$maximum+1;
		}
	}
	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
		
	return $nextmin;
}

//  Vérifie si une pénalité sur location possède un maximum "infini"
function exist_infini_penbar_code($code,$open)
{
	$exist=FALSE;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}
	$rech2 = "SELECT penbar_id FROM `" .TBPENBAR. "` WHERE `penbar_max` = '0' AND `penbar_codepen` = '$code'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2)>0)
		$exist=TRUE;
	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return $exist;
}

// Vérification de la présence d'un barême pénalité location dans une fiche location
function exist_pen_in_coloc($code,$open)
{
	$exist=FALSE;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}

	$rech2 = "SELECT ".TBPDTL.".pdtl_codecoloc FROM ".TBPDTL.", ".TBPDTLPL;
	$rech2.= " WHERE ".TBPDTLPL.".pdtlpl_codepen = '".$code."'"; 
	$rech2.= " AND ".TBPDTLPL.".pdtlpl_idpdtl = ".TBPDTL.".pdtl_id"; 
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2) <> 0)
	{
		while ($row2 = mysql_fetch_assoc($rs2))
		{
			extract($row2);
			$rech3 = "SELECT ".TBCOLOC.".coloc_code FROM ".TBCOLOC;
			$rech3.= " WHERE ".TBCOLOC.".coloc_code = '".$pdtl_codecoloc."'"; 
			$rs3 = mysql_query($rech3)or die(mysql_error());
			if (mysql_num_rows($rs3) <> 0)
			{
				$exist=TRUE;
				break;
			}
			mysql_free_result($rs3);
		}
	}
	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return $exist;
}

// Vérification de la présence d'un barême pénalité location dans une fiche location non close
function exist_pen_in_coloc_ouv($code,$open)
{
	$exist=FALSE;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}

	$rech2 = "SELECT ".TBPDTL.".pdtl_codecoloc FROM ".TBPDTL.", ".TBPDTLPL;
	$rech2.= " WHERE ".TBPDTLPL.".pdtlpl_codepen = '".$code."'"; 
	$rech2.= " AND ".TBPDTLPL.".pdtlpl_idpdtl = ".TBPDTL.".pdtl_id"; 
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2) <> 0)
	{
		while ($row2 = mysql_fetch_assoc($rs2))
		{
			extract($row2);
			$rech3 = "SELECT ".TBCOLOC.".coloc_code FROM ".TBCOLOC;
			$rech3.= " WHERE ".TBCOLOC.".coloc_code = '".$pdtl_codecoloc."'"; 
			$rech3.= " AND ".TBCOLOC.".coloc_datefin = '0000-00-00'"; 
			$rs3 = mysql_query($rech3)or die(mysql_error());
			if (mysql_num_rows($rs3) <> 0)
			{
				$exist=TRUE;
				break;
			}
			mysql_free_result($rs3);
		}
	}
	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return $exist;
}

// Création du code Javascript pour affichage de la grille des barêmes dans une fiche pénalité
function cre_js_penbar($td,$code,$pour,$udec,$from)
{
	global
		$lang,
		$lng_tduree,
		$lang,
		$txt_ent_lst_clic;
		
	echo "<script language=\"javascript\">\n";
	
	echo "function tbpenbar() {\n";
	echo "var myid = ".$from."document.getElementById(\"detbarpen\");\n";
	echo "if (myid) {\n";
	echo "myid.innerHTML = '';\n";
	
	$nb_penbar=nb_penbar_in_pen($code);
	$infini=exist_infini_penbar_code($code,TRUE);

	if ($nb_penbar>0)
	{
		$conn = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);

		$str_html = "<table class=\"Ltable\" border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">";     

		// Création entête
		$str_html.="<th>";
		$str_html.="Depuis retard de";
		$str_html.="</th>";
		
		$str_html.="<th>";
		$str_html.="A retard de";
		$str_html.="</th>";

		$str_html.="<th>";
		$str_html.="Pénalité";
		$str_html.="</th>";

		if ($td=="edit")
		{
			$str_html.="<th>";
			$str_html.=$txt_ent_lst_clic;
			$str_html.="</th>";
		}

		// Récupération données du barême pénalité
		$rech2 = "SELECT * FROM ".TBPEN." WHERE pen_code='".$code."'";
		$rs2 = mysql_query($rech2) or die(mysql_error());
		if ($row2 = mysql_fetch_assoc($rs2))
			extract($row2);
		// Lignes du tableau
		$rech = "SELECT * FROM ".TBPENBAR." WHERE penbar_codepen='".$code."' ORDER BY `penbar_min`";
		$rs = mysql_query($rech) or die(mysql_error());
			
		$i = 0;
		while ($row = mysql_fetch_assoc($rs))
		{
			extract($row);
		
			// Couleurs alternées
			if($i%2 == 0)  
			   $str_html.="<tr onmouseover=\"this.className='TRsel'\" onmouseout=\"this.className='TRalter1'\" class=\"TRalter1\">";
			else
			   $str_html.="<tr onmouseover=\"this.className='TRsel'\" onmouseout=\"this.className='TRalter2'\" class=\"TRalter2\">";

			// Depuis
			$str_html.="<td class=\"tdlst\" valign=\"top\">";
			$str_html.=$penbar_min." ".$lng_tduree[$pen_udec];
			$str_html.="</td>";

			// Jusqu'à
			$txt=$penbar_max." ".$lng_tduree[$pen_udec];
			if (intval($penbar_max)==0)
				$txt="infini";
			$str_html.="<td class=\"tdlst\" valign=\"top\">";
			$str_html.=$txt;
			$str_html.="</td>";

			// Valeur
			$txt=format_num($penbar_valeur,2);
			if ($pour==FALSE)
				$txt.=$lang['symbole_monnaie_txt'];
			else
				$txt.="%";
			$str_html.="<td class=\"TDNumberD\" valign=\"top\" align=\"right\">";
			$str_html.=$txt;
			$str_html.="</td>";

			if ($td == "edit")
			{
				$str_html.="<td class=\"tdlst\" valign=\"top\" align=\"center\">";
				if ($nb_penbar==($i+1))
				{
					$str_html.="<a href=\"javascript:;\" onclick=\"fen_penbar_pen('edit','".$code."',".$penbar_id.")\")>";
					$str_html.="<img src=\"../img/edit.png\" border=\"0\" align=\"absmiddle\" title=\"Modifier le barême\"></a>";
					$str_html.=" ";
					$str_html.="<a href=\"javascript:;\" onclick=\"fen_penbar_pen('del','".$code."',".$penbar_id.")\")>";
					$str_html.="<img src=\"../img/del.png\" border=\"0\" align=\"absmiddle\" title=\"Supprimer le barême\"></a>";
				}
				else
					$str_html.=" ";
				$str_html.="</td>";
			}
	
			$str_html.="</tr>";
			$i++;
		}
	
		mysql_close($conn);
		// Fermeture de la table
		$str_html.="</table>";
	
		// MAJ de l'id
		echo "var str_html = '".addslashes($str_html)."';\n";
		echo "myid.innerHTML=str_html;\n";

		// MAJ champ du total nextmin
		echo "var mynm = ".$from."document.getElementById(\"nextmin\");\n";
		echo "mynm.value='".next_min_penbar($code,TRUE)."';\n";
		echo "var objet = ".$from."document.getElementById('addbp');\n";
		if ($infini==TRUE)
			echo "objet.style.display = 'none';\n";
		else
			echo "objet.style.display = 'block';\n";
		echo "var objet = ".$from."document.getElementById('pour');\n";
		echo "objet.disabled=true;\n";
	}
	else
	{
		// MAJ champ du total nextmin
		echo "var mynm = ".$from."document.getElementById(\"nextmin\");\n";
		echo "mynm.value='".next_min_penbar($code,TRUE)."';\n";
		echo "var objet = ".$from."document.getElementById('addbp');\n";
		echo "objet.style.display = 'block';\n";
		echo "var objet = ".$from."document.getElementById('pour');\n";
		echo "objet.disabled=false;\n";
	}
	echo "}}\n";
	
	echo "</script>\n";
}


//  Vérifie si une grille pénalité possède un maximum "infini", pour un code pénalité donné
function exist_infini_penbar($codepen,$open)
{
	$exist=FALSE;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}
	$rech2 = "SELECT penbar_id FROM `" .TBPENBAR. "` WHERE `penbar_max` = '0' AND `penbar_codepen` = '$codepen'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2)>0)
		$exist=TRUE;
	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return $exist;
}

// Lecture d'un enregistrement pénalité, par son id
function lit_enr_penbar_id($id)
{
	$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
	mysql_select_db(DBNAME);
	$rech2 = "SELECT * FROM `" .TBPENBAR. "` WHERE `penbar_id` = '$id'";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if ($row2 = mysql_fetch_array($rs2))
	{
	}
	mysql_free_result($rs2);
	mysql_close($conn2);
	
	return $row2;
}

//  Donne le dernier id d'une grille pénalité dans une pénalité donnée
function last_id_penbar_in_pen($codepen,$open)
{
	$idpb=0;
	if ($open==TRUE)
	{
		$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
		mysql_select_db(DBNAME);
	}
	$rech2 = "SELECT penbar_id FROM `" .TBPENBAR. "` WHERE `penbar_codepen` = '$codepen' ORDER BY `penbar_min` DESC";
	$rs2 = mysql_query($rech2)or die(mysql_error());
	if (mysql_num_rows($rs2)>0)
	{
		if ($row2 = mysql_fetch_array($rs2))
		{
			extract($row2);
			$idpb=$penbar_id;
		}
	}
	mysql_free_result($rs2);
	if ($open==TRUE)
		mysql_close($conn2);
	
	return $idpb;
}

// Calcule la pénalité HT en fonction du code pénalité
// le total ht, le code tva de la location 
function calcul_penalite($codepen,$totht,$codetva,$diffsec)
{
	$penalite=0;
	$conn2 = mysql_connect(DBHOST, DBUSER, DBPASS);
	mysql_select_db(DBNAME);
	
	// Récupération enregistrement pénalité location
	if (trim($codepen)<>"")
	{
		$rech2 = "SELECT * FROM ".TBPEN." WHERE pen_code='".$codepen."'";
		$rs2 = mysql_query($rech2) or die(mysql_error());
		if ($row2 = mysql_fetch_assoc($rs2))
			extract($row2);
		// C'est une valeur unique
		if ($pen_tbar==0)
		{
			// C'est un pourcentage
			if ($pen_pour==1)
			{
				$penalite=($pen_valeur*$totht)/100;
				$penalite=round(($penalite)*100)/100;
			}
			else // C'est une valeur
			{
				$penalite=$pen_valeur;
				// C'est proportionnel ?
				if ($pen_prop==1)
					$penalite=$pen_valeur*ceil($diffsec/$pen_udec);
			}
		}
		else // C'est une grille de valeur
		{
			// On calcule le nombre d'unités dépassées
			$nbudep=intval(ceil($diffsec/$pen_udec));
			
			// On recherche dans le barême des pénalités
			$penbar_valeur=0;
			// ... Il y a une fourchette de valeurs ?
			$rech4 = "SELECT * FROM ".TBPENBAR." WHERE penbar_min<=".$nbudep." AND penbar_max<=".$nbudep;
			$rs4 = mysql_query($rech4) or die(mysql_error());
			if (mysql_num_rows($rs4)==1)
			{
				if ($row4 = mysql_fetch_assoc($rs4))
				{
					extract($row4);
					// C'est un pourcentage
					if ($pen_pour==1)
					{
						$penalite=($penbar_valeur*$totht)/100;
						$penalite=round(($penalite)*100)/100;
					}
					else // C'est une valeur
						$penalite=$penbar_valeur;
				}
			}
			else // ... Il y a une fourchette "nb unités dépassées - infini" ?
			{
				$rech4 = "SELECT * FROM ".TBPENBAR." WHERE penbar_min<=".$nbudep." AND penbar_max=0";
				$rs4 = mysql_query($rech4) or die(mysql_error());
				if (mysql_num_rows($rs4)==1)
				{
					if ($row4 = mysql_fetch_assoc($rs4))
					{
						extract($row4);
						// C'est un pourcentage
						if ($pen_pour==1)
						{
							$penalite=($penbar_valeur*$totht)/100;
							$penalite=round(($penalite)*100)/100;
						}
						else // C'est une valeur
							$penalite=$penbar_valeur;
					}
				}
			}
		}
	}

	mysql_free_result($rs2);
	mysql_close($conn2);
	return $penalite;
}
?>