[tip] bedrag naar woord


(Ruben Decleyn) #1

Voor een klein facturatie systeem dat ik in mijn applicatie moest schrijven heb ik een functie gemaakt om het bedrag om te zetten naar het bedrag volluit (is verplicht op een factuur denk ik)

ik post het hier want op het internet vind je meestal aleen engelse varianten

het kan altijd nuttig zijn

snippet uit mijn controller:




	protected function nummerNaarWoord($number) 

	{ 

	

		//nummers omzetten naar woorden, zit waarschijnlijk nog vol met bugs maarja, nederlands is geen makkelijke taal

		if (($number < 0) || ($number > 999999999)) 

		{ 

		throw new Exception("Number is out of range");

		} 


		$Gn = floor($number / 1000000);  

		$number -= $Gn * 1000000; 

		$kn = floor($number / 1000);    

		$number -= $kn * 1000; 

		$Hn = floor($number / 100);      

		$number -= $Hn * 100; 

		$Dn = floor($number / 10);       

		$n = $number % 10;               


		$res = ""; 


		if ($Gn) 

		{ 

			$res .= $this->nummerNaarWoord($Gn) . "miljoen"; 

		} 


		if ($kn) 

		{ 

			$res .= (empty($res) ? "" : " ") . 

				$this->nummerNaarWoord($kn) . "duizend"; 

		} 


		if ($Hn) 

		{ 

			$tmp = ($Hn>1)?$this->nummerNaarWoord($Hn):"";

			$res .= (empty($res) ? "" : " ") . 

				 $tmp. "honderd"; 

		} 


		$ones = array("", "een", "twee", "drie", "vier", "vijf", "Zes", 

			"Zeven", "Acht", "Negen", "Tien", "Elf", "Twaalf", "Dertien", 

			"Veertien", "Vijftien", "Zestien", "Zeventien", "Achtien", 

			"Negentien"); 

		$tens = array("", "", "Twintig", "Dertig", "Veertig", "Vijftig", "Zestig", 

			"Zeventig", "Achtig", "Negentig"); 


		if ($Dn || $n) 

		{ 

			if (!empty($res)) 

			{ 

				$res .= ""; 

			} 


			if ($Dn < 2) 

			{ 

				$res .= $ones[$Dn * 10 + $n]; 

			} 

			else 

			{ 


				if ($n) 

				{ 

					$res .= $ones[$n]."en".$tens[$Dn]; 

					

				} else $res .= $tens[$Dn]; 

			} 

		} 


		if (empty($res)) 

		{ 

			$res = "Nul"; 

		} 

		


		return ucfirst(strtolower($res)); 

	} 




(Janarkink) #2

Top mukke! Dit was precies wat ik zocht :)