/*		Programme : facture chez ti père
        auteur    : Martin Robinson
		date      : 26 février 2012
		description : prendre l'information contenu dans un fichier et
		              rediger une facture pour chaque client et un rapport
					  pour la totalité des factures générer
		methode     : J'ai utilisé les "Functor"s fonction objet

======================================================================		
Directive du préprocesseur============================================*/
#include <iostream>
#include <fstream>
#include <string>
#include "martinrobinson.hpp"
#include "rapportFacture.hpp"

using namespace std;

/*====================================================================		
programme principal===================================================*/
int main()
{
	int numFacture;		//accumulateur du nombre de facture
	string lecture;		//une string qui sert de tampon pour la lecture de fichier
	ifstream entree;	//objet fichier entree
	ofstream sortie;	//objet fichier de sortie

	string date;				//la date entree par l'utilisateur
	string nomFichierEntree;	//le nom du fichier d'entree
	string nomFichierSortie;	//le nom du fichier de sortie

	do
	{
		viderEcran();		//il est important de faire le menage entre chaque rapport
		do
		{
			cout << "Entrer la date des transactions? \n";
			getline(cin,date);
		}while(date == "");		//saisir la date au clavier

		nomFichierSortie = "Facture";		//le nom du fichier sortie par Facture
	    nomFichierSortie.append(date);		//suivie de la date
		nomFichierSortie.append(".txt");	//et se termine par .txt
		sortie.open(nomFichierSortie);

		nomFichierEntree = "vente";
		nomFichierEntree.append(date);
		nomFichierEntree.append(".txt");
		if (ouvrirFichierLecture(entree,nomFichierEntree))
		{
			//initialisation intraboucle
			numFacture = 0;				//initialisé le nombre de facture
			getline(entree,lecture);    //premiere ligne du fichier est inutile
			sommaire rapport(date);		//création d'un nouveau rapport sommaire pour toute les factures

			while(entree)				//tanque le fichier n'est pas terminé
			{
				numFacture++;								//numéreau de facture
				facture leClient(entree,date,numFacture);	//création d'une nouvelle facture a chaque client
				if (!leClient.echec)						//si sa marche
				{
					for (int i=0;i<leClient.nbItem;i++)		//pour chaque item de la facture
					{
						article leArticle(entree,leClient.membre());	//ajouter un nouvel article
						leClient += leArticle;							//a la facture
					}
					leClient();								//fermer la facture
					rapport += leClient;					//ajouter la facture au rapport
					cout << leClient << endl;				//afficher la facture
					sortie << leClient << endl;				//ecrire la facture
				}
			}
			rapport();					//fermer le rapport
			cout << rapport << endl;	//afficher le rapport
			sortie << rapport << endl;	//ecrire le rapport
			entree.close();				//fermer le fichier de sortie
		}
	}while(questionOuiNon("voulez-vous faire un autre rapport?"));

	attendre();
	return 0;
}




