Skip to content

Commit

Permalink
Ajout de la génération du récap annuel pour l'année sélectionnée
Browse files Browse the repository at this point in the history
  • Loading branch information
cvermot committed Jan 9, 2024
1 parent af5dede commit c0a8765
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 5 deletions.
1 change: 1 addition & 0 deletions ressources/account-file-text.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions src/AeroDms.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,12 @@ AeroDms::AeroDms(QWidget* parent):QMainWindow(parent)
connect(bouttonGenerePdf, &QAction::triggered, this, &AeroDms::genererPdf);
toolBar->addAction(bouttonGenerePdf);

const QIcon iconeGenerePdfRecapHdv = QIcon("./ressources/account-file-text.svg");
bouttonGenerePdfRecapHdv = new QAction(iconeGenerePdfRecapHdv, tr("&Générer les PDF de recap HdV de l'année séléctionnée"), this);
bouttonGenerePdfRecapHdv->setStatusTip(tr("Générer les PDF de recap HdV de l'année séléctionnée"));
connect(bouttonGenerePdfRecapHdv, &QAction::triggered, this, &AeroDms::genererPdfRecapHdV);
toolBar->addAction(bouttonGenerePdfRecapHdv);

QToolBar* SelectionToolBar = addToolBar(tr(""));

listeDeroulanteAnnee = new QComboBox(this);
Expand Down Expand Up @@ -475,6 +481,13 @@ void AeroDms::peuplerTableVols()
vueVols->setItem(i, AeroDmsTypes::VolTableElement_REMARQUE, new QTableWidgetItem(vol.remarque));
}
vueVols->resizeColumnsToContents();

bouttonGenerePdfRecapHdv->setEnabled(true);
//On desactive la génération du récap annuel si on est sur la séléction "Toutes les années)
if (listeDeroulanteAnnee->currentData().toInt() == -1)
{
bouttonGenerePdfRecapHdv->setEnabled(false);
}
}

void AeroDms::peuplerListeDeroulanteAnnee()
Expand Down Expand Up @@ -604,6 +617,13 @@ void AeroDms::genererPdf()
cheminStockageFacturesTraitees);
}

void AeroDms::genererPdfRecapHdV()
{
pdf->imprimerLeRecapitulatifDesHeuresDeVol( listeDeroulanteAnnee->currentData().toInt(),
cheminSortieFichiersGeneres,
cheminStockageFacturesTraitees);
}

void AeroDms::enregistrerUneFacture()
{
bool estEnEchec = false;
Expand Down
4 changes: 4 additions & 0 deletions src/AeroDms.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ class AeroDms : public QMainWindow
QProgressDialog *progressionGenerationPdf;
AeroDmsTypes::ParametresMetier parametresMetiers;

//Bouttons
QAction* bouttonGenerePdfRecapHdv;

//Données internes
QString piloteAEditer;
int factureIdEnBdd;
Expand All @@ -117,6 +120,7 @@ public slots:
void enregistrerUneFacture();
void enregistrerUneRecette();
void genererPdf();
void genererPdfRecapHdV();
void prevaliderDonnnesSaisies();
void prevaliderDonnneesSaisiesRecette();
void changerInfosVolSurSelectionTypeVol();
Expand Down
116 changes: 112 additions & 4 deletions src/PdfRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ PdfRenderer::PdfRenderer()
db = new ManageDb();
view = new QWebEnginePage(this);
nombreFacturesTraitees = 0;
nombreFacturesATraiter = 0;
indiceFichier = 0;
laDemandeEstPourUnDocumentUnique = false;
}

PdfRenderer::PdfRenderer(ManageDb *p_db, QString p_cheminTemplatesHtml, QWidget* parent)
{
db = p_db;
view = new QWebEnginePage(this);
nombreFacturesTraitees = 0;
nombreFacturesATraiter = 0;
indiceFichier = 0;
laDemandeEstPourUnDocumentUnique = false;

ressourcesHtml = QUrl(QString("file:///%1/").arg(p_cheminTemplatesHtml));

Expand Down Expand Up @@ -78,7 +78,50 @@ void PdfRenderer::impressionTerminee(const QString& filePath, bool success)
{
db->ajouterDemandeCeEnBdd(demandeEnCours);
emit mettreAJourNombreFacturesTraitees(nombreFacturesTraitees);
imprimerLaProchaineDemandeDeSubvention();

//Si la demande ne concerne pas un document unique, on fait les demandes suivantes
if (!laDemandeEstPourUnDocumentUnique)
{
imprimerLaProchaineDemandeDeSubvention();
}
//Sinon on emet directement la fin d'impression
else
{
emit generationTerminee(cheminSortieFichiersGeneres);
}

}

void PdfRenderer::imprimerLeRecapitulatifDesHeuresDeVol( const int p_annee,
const QString p_cheminSortieFichiersGeneres,
const QString p_cheminStockageFactures)
{
nombreFacturesTraitees = 0;
indiceFichier = 0;
laDemandeEstPourUnDocumentUnique = true;

cheminSortieFichiersGeneres = QString(p_cheminSortieFichiersGeneres).append(QDateTime::currentDateTime().toString("yyyy-MM-dd_hhmm"));
repertoireDesFactures = p_cheminStockageFactures;
QDir().mkdir(cheminSortieFichiersGeneres);
if (QDir(cheminSortieFichiersGeneres).exists())
{
cheminSortieFichiersGeneres.append("/");
listeDesFichiers.clear();

emit mettreAJourNombreFacturesATraiter(1);
emit mettreAJourNombreFacturesTraitees(0);

const AeroDmsTypes::ListeSubventionsParPilotes listePilotesDeCetteAnnee = db->recupererSubventionsPilotes( p_annee,
"*",
false);
imprimerLeFichierPdfDeRecapAnnuel(p_annee, listePilotesDeCetteAnnee);

nombreFacturesTraitees++;
}
else
{
qDebug() << "Erreur création repertoire";
}
}

int PdfRenderer::imprimerLesDemandesDeSubvention( const QString p_nomTresorier,
Expand All @@ -88,9 +131,9 @@ int PdfRenderer::imprimerLesDemandesDeSubvention( const QString p_nomTresorier,
AeroDmsTypes::ListeDemandeRemboursement listeDesRemboursements = db->recupererLesSubventionsAEmettre();
demandeEnCours.nomTresorier = p_nomTresorier;
listeAnnees = db->recupererAnneesAvecVolNonSoumis();
nombreFacturesATraiter = listeDesRemboursements.size();
nombreFacturesTraitees = 0 ;
indiceFichier = 0;
laDemandeEstPourUnDocumentUnique = false;
cheminSortieFichiersGeneres = QString(p_cheminSortieFichiersGeneres).append(QDateTime::currentDateTime().toString("yyyy-MM-dd_hhmm"));
repertoireDesFactures = p_cheminStockageFactures;
QDir().mkdir(cheminSortieFichiersGeneres);
Expand Down Expand Up @@ -396,6 +439,71 @@ void PdfRenderer::recopierFactures(const QStringList p_listeFactures)
}
}

void PdfRenderer::imprimerLeFichierPdfDeRecapAnnuel( const int p_annee,
const AeroDmsTypes::ListeSubventionsParPilotes p_listePilotesDeCetteAnnee)
{
//QFile table("./ressources/HTML/TableauRecap.html");
QFile table(QString(ressourcesHtml.toLocalFile()).append("TableauRecap.html"));
//QFile tableItem("./ressources/HTML/TableauRecapItem.html");
QFile tableItem(QString(ressourcesHtml.toLocalFile()).append("TableauRecapItem.html"));
QString templateTable = "";
QString templateTableItem = "";
if (table.open(QFile::ReadOnly | QFile::Text) && tableItem.open(QFile::ReadOnly | QFile::Text))
{
QTextStream inTable(&table);
QTextStream inTableItem(&tableItem);
templateTable = inTable.readAll();
templateTableItem = inTableItem.readAll();
}
else
{
qDebug() << "Erreur ouverture fichier";
}
templateTable.replace("__date__", QDate::currentDate().toString("dd/MM/yyyy"));
templateTable.replace("__exercice__", QString::number(p_annee));

for (int i = 0; i < p_listePilotesDeCetteAnnee.size(); i++)
{
QString item = templateTableItem;
item.replace("__pilote__", QString(p_listePilotesDeCetteAnnee.at(i).nom).append(" ").append(p_listePilotesDeCetteAnnee.at(i).prenom));
item.replace("__HdvEnt__", p_listePilotesDeCetteAnnee.at(i).entrainement.heuresDeVol);
item.replace("__CouEnt__", QString::number(p_listePilotesDeCetteAnnee.at(i).entrainement.coutTotal));
item.replace("__SubEnt__", QString::number(p_listePilotesDeCetteAnnee.at(i).entrainement.montantRembourse));
item.replace("__HdVBal__", p_listePilotesDeCetteAnnee.at(i).balade.heuresDeVol);
item.replace("__CouBal__", QString::number(p_listePilotesDeCetteAnnee.at(i).balade.coutTotal));
item.replace("__SubBal__", QString::number(p_listePilotesDeCetteAnnee.at(i).balade.montantRembourse));
item.replace("__HdVSor__", p_listePilotesDeCetteAnnee.at(i).sortie.heuresDeVol);
item.replace("__CouSor__", QString::number(p_listePilotesDeCetteAnnee.at(i).sortie.coutTotal));
item.replace("__SubSor__", QString::number(p_listePilotesDeCetteAnnee.at(i).sortie.montantRembourse));
item.replace("__HdvTot__", p_listePilotesDeCetteAnnee.at(i).totaux.heuresDeVol);
item.replace("__CouTot__", QString::number(p_listePilotesDeCetteAnnee.at(i).totaux.coutTotal));
item.replace("__SubTot__", QString::number(p_listePilotesDeCetteAnnee.at(i).totaux.montantRembourse));

templateTable.replace("<!--Accroche-->", item);
}

const AeroDmsTypes::SubventionsParPilote totaux = db->recupererTotauxAnnuel(p_annee, true);

templateTable.replace("__TotHdvEnt__", totaux.entrainement.heuresDeVol);
templateTable.replace("__TotCouEnt__", QString::number(totaux.entrainement.coutTotal));
templateTable.replace("__TotSubEnt__", QString::number(totaux.entrainement.montantRembourse));
templateTable.replace("__TotHdVBal__", totaux.balade.heuresDeVol);
templateTable.replace("__TotCouBal__", QString::number(totaux.balade.coutTotal));
templateTable.replace("__TotSubBal__", QString::number(totaux.balade.montantRembourse));
templateTable.replace("__TotHdVSor__", totaux.sortie.heuresDeVol);
templateTable.replace("__TotCouSor__", QString::number(totaux.sortie.coutTotal));
templateTable.replace("__TotSubSor__", QString::number(totaux.sortie.montantRembourse));
templateTable.replace("__TotHdvTot__", totaux.totaux.heuresDeVol);
templateTable.replace("__TotCouTot__", QString::number(totaux.totaux.coutTotal));
templateTable.replace("__TotSubTot__", QString::number(totaux.totaux.montantRembourse));

view->setHtml(templateTable,
ressourcesHtml);

demandeEnCours.typeDeDemande = AeroDmsTypes::PdfTypeDeDemande_RECAP_ANNUEL;
demandeEnCours.nomFichier = QString(".Recap_pilote_").append(QString::number(p_annee));
}

void PdfRenderer::produireFichierPdfGlobal()
{
QByteArray pdf;
Expand Down
7 changes: 6 additions & 1 deletion src/PdfRenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ class PdfRenderer : public QWidget {
int imprimerLesDemandesDeSubvention( const QString p_nomTresorier,
const QString p_cheminSortieFichiersGeneres,
const QString p_cheminStockageFactures);
void imprimerLeRecapitulatifDesHeuresDeVol( const int p_annee,
const QString p_cheminSortieFichiersGeneres,
const QString p_cheminStockageFactures);

private :
QWebEnginePage* view;
Expand All @@ -42,17 +45,19 @@ private :

QString cheminSortieFichiersGeneres;
QString repertoireDesFactures;
bool laDemandeEstPourUnDocumentUnique;

QStringList listeDesFichiers;
AeroDmsTypes::DemandeEnCoursDeTraitement demandeEnCours;
QList<int> listeAnnees;

int nombreFacturesTraitees;
int nombreFacturesATraiter;
int indiceFichier;

void imprimerLaProchaineDemandeDeSubvention();
void remplirLeChampMontant(QString& p_html, const float p_montant);

void imprimerLeFichierPdfDeRecapAnnuel(const int p_annee, const AeroDmsTypes::ListeSubventionsParPilotes p_listePilotesDeCetteAnnee);
void produireFichierPdfGlobal();

void recopierFacture(const QString p_nomFacture);
Expand Down

0 comments on commit c0a8765

Please sign in to comment.