- Java 100%
| .mvn/wrapper | ||
| .run | ||
| src | ||
| .gitignore | ||
| input1.txt | ||
| mvnw | ||
| mvnw.cmd | ||
| pom.xml | ||
| README.md | ||
Kata - Calcul de taxes
Spécifications
Une taxe sur la valeur ajoutée de 10% est appliquée sur chaque produit, à l'exception des livres, de la nourriture et des médicaments, qui en sont exemptés. Une taxe additionnelle de 5% sur les produits importés, sans exception.
Le montant de chacune des taxes est arrondi aux 5 cents supérieurs, selon la règle suivante:
| Taxe calculée | Taxe imputée |
|---|---|
| 0.99 | 1.00 |
| 1.00 | 1.00 |
| 1.01 | 1.05 |
| 1.02 | 1.05 |
Lorsque l'on passe une commande, une facture est émise listant chacun des produits ainsi que leur prix TTC ; au bas de la facture figurent le montant total (TTC) ainsi que le montant total des taxes.
Le montant TTC est calculé comme suit : Pttc = Pht + somme(arrondi(Pht*t/100))
Pttc: Prix TTC
Pht : Prix hors taxes
t : taxe applicable
Écrire une application, exécutable sur une JVM, qui imprime la facture détaillée pour chacun des paniers suivants :
Test cases
Test 1
1 livre à 12.49
1 CD musical à 14.99
1 barre de chocolat à 0.85
1 livre : 12.49
1 CD musical : 16.49
1 barre de chocolat : 0.85
Montant des taxes : 1.50
Total :29.83
Test 2
1 boîte de chocolats importée à 10.00
1 flacon de parfum importé à 47.50
1 boîte de chocolats importée : 10.50
1 flacon de parfum importé : 54.65
Montant des taxes :7.65
Total : 65.15
Test 3
1 flacon de parfum importé à 27.99
1 flacon de parfum à 18.99
1 boîte de pilules contre la migraine à 9.75
1 boîte de chocolats importés à 11.25
1 flacon de parfum importé : 32.19
1 flacon de parfum : 20.89
1 boîte de pilules contre lamigraine : 9.75
1 boîte de chocolats importés : 11.85
Montant des taxes : 6.70
Total : 74.68
Notes d'implémentation
J'ai choisi de ne pas traduire les mots métiers comme 'taxe' ou 'facture' - ça donne un Franglais un peu déconcertant dans le code, mais d'expérience ça rend la communication avec le métier plus facile.
J'ai aussi décidé d'utiliser Java 23 pour ne pas passer top de temps sur le set up Java.