IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Création d'une facture en PHP


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    En formation Programmateur de site Web
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : En formation Programmateur de site Web

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut Création d'une facture en PHP
    Bonjour,

    Je viens de débuter mes cours de PHP et je suis un peu larguée. Je suis une formation à distance pour être développeur Web via le CNAM.

    J'aurai besoin d'un coup de main pour un exercice.

    Je dois créer un document HTML de type facture dans lequel les données clients et chaque ligne de prestation sont stockées dans des tableaux associatifs. Le montant de la facture doit être calculée dynamiquement en appliquant une TVA de 20%. De plus, il faut faire en sorte de pouvoir rajouter une ligne de prestation sans que ça flingue le code.
    A chaque fois qu'on met la facture à jour, une facture différente doit apparaitre.

    J'ai un peu commencé et je bloque sur quelques (voire beaucoup) de détail:

    - Comment générer un numéro de facture par ordre chronologique. J'ai utilisé mt_rand mais pas sur que ce soit la bonne méthode

    - Je bloque sur comment renseigner mes quantités et le calcul du prix total HT par ligne d'article. Dois-je faire un mt_rand pour la quantité (un truc du genre "quantité" => mt_rand (1,10) ? Pour le prix total HT par ligne d'article est-ce que je fois faire un (mt_rand(1,10) * quantite)

    - Enfin pour le calcul du montant total de la facture (montant total HT + TVA = montant total TTC).


    Voici mon code. Toute aide et correction est la bienvenue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
     
    <!DOCTYPE html>
    <head>
    	<meta charset="utf-8"/>
    		<title> Facture - Exercice 18 </title>
    		<link rel="stylesheet" href="facture.css"/>
    </head>
    		<header>
    			<div id="adresse">
    			<img src="SOA_logo.jpg" alt="logo" title="Voir" />
    			<p>3 boulevard des Sablons<br/>92220 NEUILLY SUR SEINE<br />FRANCE</p>
    			</div>
    				<div id="document">
    				<p><center><strong>FACTURE</strong></center></p>
    				</div>
    					<div id="Date">
    					<?php
    					/* Je rajoute un numéro de facture qui doit changer aléatoirement. 16 pour l'année, 000 pour le numéro de chrono*/
    					$numerofacture = mt_rand(16.000,16.999);
    					echo("Numéro de facture".$numerofacture."");
    					?>
    					<?php
    					$jour = date("d/m/Y");
    					echo("Date d'établissement".$jour."");
    					/* je rajoute 30 jours à la date d'établissement pour savoir la date d'échéance */
    					$duedate = date("d/m/Y", strtotime("+30 days"));
    					echo ("Date d'échéance".$duedate."");
    					?>
    					</div>
    				<div id="clients">
    				<?php
    				/* Tableau assiciatif dans lequel je stocke les clients */
    				$entete = array("Nom","Prénom","Adresse","CP","Ville");
     
    				$clients = array(
    				array(
    				"nom" => "DO",
    				"prenom" => "Dominique",
    				"Adresse" => "20 impasse Beethoven",
    				"CP" => "75011"
    				"Ville" =>"Paris"
    				),
    				array(
    				"nom" => "RE",
    				"prenom" => "Remi",
    				"Adresse" => "1 allée des Musiciens",
    				"CP" => "92220"
    				"Ville" =>"NEUILY SUR SEINE"
    				),
    				array(
    				"nom" => "MI",
    				"prenom" => "Michel",
    				"Adresse" => "15 impasse Mozart",
    				"CP" => "91000"
    				"Ville" =>"EVRY"
    				),
     
    				array(
    				"nom" => "FA",
    				"prenom" => "Fabrice",
    				"Adresse" => "3 rue du Paradis",
    				"CP" => "75009"
    				"Ville" => "Paris"
    				),
     
    				array(
    				"nom" => "SOL",
    				"prenom" => "Solène",
    				"Adresse" => "45 boulevard des danseurs",
    				"CP" => "94140"
    				"Ville" => "ALFORTVILLE"
    				),
    				);
    				?>
    				</div>
    		</header>
    					<body>
    						<?php
    						/* Tableau où je stocke les articles */
    						$entete = array("Code article","Désignation", "Quantité", "Prix unitaire HT", "Prix total HT");
    						$article = array(
    						array(
    						"Code article" => "30797",
    						"Designation" => "Basse - Eagletone Sun State Bass P Sunburt",
    						"Quantite" => 
    						"Prix unitaire HT" => "129€"
    						"Prix total HT" => 
    							),
     
    						array(
    						"Code article" => "20717",
    						"Designation" => "Basse - Ibanez SR 500BM Acajou",
    						"Quantite" => 
    						"Prix unitaire HT" => "629€"
    						"Prix total HT" => 
    							),
     
    						array(
    						"Code article" => "213659",
    						"Designation" => "Piano - Bird Fullpack XP1",
    						"Quantite" => 
    						"Prix unitaire HT" => "329€"
    						"Prix total HT" => 
    							),
     
    						array(
    						"Code article" => "213888",
    						"Designation" => "Piano - Roland F20DW",
    						"Quantite" => 
    						"Prix unitaire HT" => "599€"
    						"Prix total HT" => 
    						),
     
    						array(
    						"Code article" => "184171",
    						"Designation" => "Batterie - Roland TD1K V-Drums",
    						"Quantite" => 
    						"Prix unitaire HT" => "449€"
    						"Prix total HT" => 
    						),
     
    						array(
    						"Code article" => "21455",
    						"Designation" => "Zildjian - Modulo electro acoustique",
    						"Quantite" => 
    						"Prix unitaire HT" => "399€"
    						"Prix total HT" => 
    						),
     
    						array(
    						"Code article" => "81494",
    						"Designation" => "Yamaha - Set Violoncelle",
    						"Quantite" => 
    						"Prix unitaire HT" => "1099€"
    						"Prix total HT" =>
    						),
     
    						array(
    						"Code article" => "183724",
    						"Designation" => "BAM - Housse avion violoncelle - Noir",
    						"Quantite" => 
    						"Prix unitaire HT" => "490€"
    						"Prix total HT" =>
    						),
     
    						array(
    						"Code article" => "190221",
    						"Designation" => "Nuark - Mix Track pro 3",
    						"Quantite" => 
    						"Prix unitaire HT" => "329€"
    						"Prix total HT" => 
    						 ),
     
    						array(
    						"Code article" => "162850",
    						"Designation" => "Native Instruments - Tracktor X1 NKZ",
    						"Quantite" => 
    						"Prix unitaire HT" => "559€"
    						"Prix total HT" =>
    						),
    						);
    						?>
    					</body>
    						<footer>
    							<div id="mentions">
    							<p>
    							Mentions légales<br/> Pas d'escompte pour paiement anticipé.<br /> Conformément à la loi 92.1142, en cas de retard de paiement, toute somme, y compris l'acompte, non payée à sa date d'éxigibilité produira de plein droit des intérêts de retard équivalents au triple du taux d'intérêt légal de l'année en cours ainsi que le paiement d'une somme forfaitaire de quarante (40) euros due au titre des frais de recouvrement conformément au décret N°2012-1115.
    							</p>
    							</div>
    							<div id="coordonnées">
    							<p><em>Mode de paiement : virement bancaire (frais bancaires à la charge du client. <br /> SOCIETE D'EPARGNE Ile de France - 19 rue des Artistes - 75001 PARIS<br /> BIC : CEPAFRPP000 <br /> IBAN : FR76 0000 0000 0000 0000 0000 0000 </em></p>
    							</div>
    						</footer>
    </html>
    Merci

    Vanessa

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Comment générer un numéro de facture par ordre chronologique
    Il te faudrait stocker (dans un fichier par exemple) le nombre de factures déjà générée.
    Tu pourras ainsi incrémenter ton nombre de facture au fur et à mesures.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getNumFacture() {
        $num = 0;
        if(file_exists('numfacture.txt'))
            $num = file_get_contents('numfacture.txt');
        $num++;
        file_put_contents('numfacture.txt',$num);
        return $num;
    }
    $numFacture = getNumFacture();
    Tu peux le modifier pour y incorporer la date et ainsi avoir des numéros de factures du type : 20160424-1 ,20160424-2, etc ...
    Attention toutefois , ce code pourrait être problématique en cas d'accès concurrent (ce qui n'arrivera pas dans un cas d'exemple comme le tient).

    Dans tous les cas mt_rand va te retourner une valeur aléatoire donc rien de chronologique la dedans.

    Je bloque sur comment renseigner mes quantités et le calcul du prix total HT
    Pour tes quantités , si rien n'est précisé dans ton exercice , tu peux effectivement utiliser mt_rand(1,10) qui va te retourner une valeur entre 1 et 10 de manière aléatoire.
    Pour le prix HT de chaque lignes le plus simple est de le calculer à l'affichage. Mais pour cela il faut que ton prix soit une valeur numérique et non une chaine de caractère.
    Donc au final un tableau de produit ressemblerait plutôt à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    array(
        "Code Article" => "20717",
        "Designation" => "Basse - Ibanez SR 500BM Acajou",
        "Quantite" => mt_rand(1,10)
        "PUHT" => 629
        "devise" => "€"
    )
    Pour le total par ligne , il suffit à l'affichage de multiplier quantité et prix unitaire.
    Exemple pour le premier acticle de la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $article[0]['PUHT']*$article[0]['Quantite'];
    Pour le total de ta facture il suffit d'ajouter le prix unitaire de tous les articles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $total = 0;
    foreach($article as $art)
    {
        $total += $art['PUHT']*$art['Quantite'];
    }
    Pour finir ton HTML n'est pas valide , les balise <header> et <footer> doivent être dans la balise <body>
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Création d'une facture php
    Par elalpaca dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2013, 11h07
  2. Création d'une facture avec formulaire
    Par neo2907 dans le forum Modélisation
    Réponses: 6
    Dernier message: 20/10/2008, 20h44
  3. [MySQL] Création d'une base en php
    Par amine_en_france dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2007, 10h24
  4. [PostgreSQL] [PostGreSQL] Création d'une bdd avec PHP
    Par damien150 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/03/2007, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo