freed102 Arayashiki | oui c moi qui ait fait la base de données, en fait je fais un systeme de devis/facturation...
j'ai donc trois tables
factures -> references_factures ->items_facture
au debut la difference entre un devis et une facture etait juste un champs 'type_commande' qui indiquait "facture" ou "devis"... il suffit de cliquer sur un bouton pour transformer un devis en facture et vis versa. Maintenant je me rends compte qu'il y a un probleme concernant l'attribution des numeros de facture... il ne peut pas y avoir de "trou" dans la numerotation des factures, au debut les devis etaient inclus dans la même serie que les factures... hors on suppose qu'un devis n'est pas forcement accepté... dans ce cas... ça provoquerait un "trou" dans la facturation.. ce qui n'est pas correct... donc j'ai decidé de changer de systeme de numerotation en séparant les devis des factures...
les devis commencent par DEV000001 (et s'incrémentent de 1)
les factures sont sous la forme 0000356 (et s'incrémentent de 1)
si un devis devient une facture.. il reprends la série des factures (0000357) en incrémentant de 1... logiquement comme ça il ne peut pas y avoir de trou dans les factures puisque il prends toujours le dernier nombre et ajoute 1.
simplement j'ai du m'emmeler les crayons au niveau du SQL pour effacer et recreer mes enregistrements... un bout de code pour comprendre mieux :
Code :
- if($save_facture)
- {
- if(isset($_SESSION['date_reglement']))
- {
- $new_date=explode("/",$_SESSION['date_reglement']);
- $date_reg2=strtotime($new_date[2]."-".$new_date[1]."-".$new_date[0]);
- }
- $req="SELECT * FROM factures WHERE numero_facture='$_SESSION[numero_facture]';";
- //echo $req."<br />";
- $query1=mysql_query($req);
- $numrows=mysql_num_rows($query1);
- if($numrows<1)
- {
- //echo $numrows."<br />";
- $sql="INSERT INTO factures(numero_facture,type,id,contact, titre,total_ht, date_reg,date_modif,reglement,type_reglement,modalites_reglement,date_reglement,observations)";
- $sql.="VALUES ('$_SESSION[new_numero_facture]','$_SESSION[type_commande]','$_SESSION[current_client]','$_SESSION[current_contact]','$_SESSION[titre_facture]', '$_SESSION[total_ht]', '$date','$date','$_SESSION[reglement]','$_SESSION[type_reglement]','$_SESSION[modalites_reglement]','$date_reg2','$_SESSION[observations]');";
- //echo $sql."<br />";
- if(mysql_query($sql) or die(mysql_error()))
- {
- $_SESSION['infos']="La facture à bien été enregistrée";
- }
- else
- {
- $_SESSION['infos']="Impossible d'enregistrer la facture";
- }
- }
- else
- {
- $sql="UPDATE factures SET numero_facture='$_SESSION[new_numero_facture]',id='$_SESSION[current_client]',type='$_SESSION[type_commande]',contact='$_SESSION[current_contact]',titre='$_SESSION[titre_facture]',total_ht='$_SESSION[total_ht]',date_modif='$date',reglement='$_SESSION[reglement]',type_reglement='$_SESSION[type_reglement]',date_reglement='$date_reg2',observations='$_SESSION[observations]' WHERE numero_facture='$_SESSION[numero_facture]';";
- //echo $req."<br />";
- if(mysql_query($sql) or die(mysql_error()))
- {
- $_SESSION['infos']="La facture à bien été mise à jour<br />";
- }
- else
- {
- $_SESSION['infos']="Impossible de mettre à jour la facture<br />";
- }
- }
- //print_r($_SESSION['ref']);
- $sql="DELETE FROM references_factures WHERE numero_facture='$_SESSION[numero_facture]';";
- if(mysql_query($sql) or die(mysql_error()))
- {
- $_SESSION['infos']="La facture à bien été mise à jour<br />";
- }
- else
- {
- $_SESSION['infos']="Impossible de mettre à jour la facture<br />";
- }
- foreach($_SESSION['ref'] as $key1=>$value)
- {
- $ref_num_ref=$_SESSION['ref'][$key1]['number'];
- $ref_titre=$_SESSION['ref'][$key1]['titre'];
- if(isset($_SESSION['ref'][$key1]['date']))
- {
- $new_date=explode("/",$_SESSION['ref'][$key1]['date']);
- $ref_date2=strtotime($new_date[2]."-".$new_date[1]."-".$new_date[0]);
- }
- $ref_contact=$_SESSION['ref'][$key1]['contact_ref'];
- $ref_prix_ht=$_SESSION['ref'][$key1]['prix_ht'];
- $sql="INSERT INTO references_factures (numero_facture,num_ref,titre,date,contact,prix_ht) ";
- $sql.="VALUES ('$_SESSION[new_numero_facture]','$ref_num_ref','$ref_titre','$ref_date2','$ref_contact', '$ref_prix_ht');";
- //echo $sql."<br />";
- if(mysql_query($sql) or die(mysql_error()))
- {
- $_SESSION['infos']="La référence à bien été enregistrée";
- }
- else
- {
- $_SESSION['infos']="Impossible d'enregistrer la référence";
- }
- $req="SELECT * FROM items_facture WHERE numero_facture='$_SESSION[numero_facture]' AND num_ref='$ref_num_ref'";
- //echo $req."<br />";
- $query1=mysql_query($req);
- $numrows=mysql_num_rows($query1);
- //echo $numrows."<br />";
- if($numrows>=1)
- {
- $sqldel="DELETE FROM items_facture WHERE numero_facture='$_SESSION[numero_facture]' AND num_ref='$ref_num_ref' ";
- //echo $req."<br />";
- if(mysql_query($sqldel) or die(mysql_error()))
- {
- $_SESSION['infos']="La facture à bien été mise à jour<br />";
- }
- else
- {
- $_SESSION['infos']="Impossible de mettre à jour la facture<br />";
- }
- }
- foreach($_SESSION['item'] as $key=>$value)
- {
- if($_SESSION['item'][$key]['ref']==$key1)
- {
- $libelle=$_SESSION['item'][$key]['libelle'];
- $quantite=$_SESSION['item'][$key]['quantites'];
- $prix_unitaire=$_SESSION['item'][$key]['prix_unitaire'];
- $ref_num_ref=$_SESSION['ref'][$key1]['number'];
- if(!empty($quantite))
- {
- $sql="INSERT INTO items_facture (numero_facture,num_ref,item,libelle, quantite,prix_unitaire)";
- $sql.="VALUES ('$_SESSION[new_numero_facture]','$ref_num_ref','$key','$libelle','$quantite', '$prix_unitaire');";
- //echo $sql."<br />";
- if(mysql_query($sql) or die(mysql_error()))
- {
- $_SESSION['infos']="La facture à bien été enregistrée";
- $_SESSION['numero_facture']=$_SESSION['new_numero_facture'];
- }
- else
- {
- $_SESSION['infos']="Impossible d'enregistrer la facture";
- }
- }
- }
- }
- }
- }
|
|