Funcions de la pràctica 5.2

De Wiki personal d'en Guillem Serrat

Funció calcularPreus

La funció calcularPreus serveix per calcular el preu final i d'un producte i aplicar un producte si escau.

El descompte consisteix en restar un 5% del total dels productes per cada 2 productes comprats, fins a un màxim d’un 20%. La taula següent pot servir de referència

Nº de productes % de descompte
1 0
2 5
3 5
4 10
5 10
6 15
7 15
8 20
+8 20

Per fel el càlcul del preu, la funció rep 2 paràmetres: el preu unitari del producte i la quantitat comprada i retorna:

  • Total original (preu_unitari * quantitat)
  • Total final (preu_unitari * quantitat - descompte)
  • % de descompte aplicat

Primer, divideix de forma entera la quantitat de producte entre 2 amb la funció intdiv i recupera el quocient enter de la divisió (grups de 2). Per cada grup de 2 s’aplica un descompte del 5%

$blocs = intdiv($quantitat, 2); // Divideix la quantitat de productes entre 2. (2 productes = 1. 6 productes = 3)

Seguidament, multiplica aquests grups de 2 per 5 per trobar el % fins a 20%. Això ho fa la funció min, la qual retorna el valor més petit. Definim el resultat de la multiplicació i 20. Si el % és menor a 20, s’aplicarà aquell %. Si el % és major a 20, s’aplicarà el 20%.

Exemple: 2 productes = 1 bloc * 5 = 5%

Exemple 2: 4 productes = 2 blocs * 5 = 10%

Exemple 3: min(10 productes = 5 blocs * 5 = 25, 20); (Ja que 20 és més petit que 25, s'agafa el 20)

$percentatge = min($blocs * 5, 20); // Calcula el %, fins a un màxim de 20 (2 productes = 1 bloc * 5 = 5% )

Un cop definit el % de descompte, calcularem el preu original (quantitat * preu unitari)

// Preu sense descompte $total_original = $preu_unitari * $quantitat; // Calculem el preu original (el preu unitari del producte + quantitat)

I el preu amb descompte

// Preu amb descompte $total_final = $total_original * (1 - $percentatge / 100); // Calculem el preu final aplicant-hi el descompte

Per finalment, retornar els valors anteriorment calculats

return [

       'total_original' => $total_original, // Retornem el total original (preu_unitari * quantitat)
       'total_final' => $total_final, // Retornem el preu descomptat  (preu_unitari * quantitat - descompte) 
       'descompte_percent' => $percentatge // Retornem el percentatge descomptat

];

El codi sencer de la funció és el següent:

<?php function calcularPreus($preu_unitari, $quantitat) { // Funció per calcular el descompte, li arriba el preu del producte i la quantitat a comprar

   // El descompte consisteix que cada 2 productes es descompte un 5% del total de la suma del mateix producte, fins a un màxim del 20% de descompte sobre el producte
   // Aquesta funció retorna sempre el preu sense descompte i el preu amb descompte
   $blocs = intdiv($quantitat, 2); // Divideix la quantitat de productes entre 2. (2 productes = 1. 6 productes = 3)
   $percentatge = min($blocs * 5, 20); // Calcula el %, fins a un màxim de 20 (2 productes = 1 bloc * 5 = 5% )
   // Preu sense descompte
   $total_original = $preu_unitari * $quantitat; // Calculem el preu original (el preu unitari del producte + quantitat)
   // Preu amb descompte
   $total_final = $total_original * (1 - $percentatge / 100); // Calculem el preu final aplicant-hi el descompte
   return [
       'total_original' => $total_original, // Retornem el total original (preu_unitari * quantitat)
       'total_final' => $total_final, // Retornem el preu descomptat  (preu_unitari * quantitat - descompte) 
       'descompte_percent' => $percentatge // Retornem el percentatge descomptat
   ];

}