I Ask chatGPT
It gave me the following results (in French)
Éléments C++ à ajouter dans l'interface UI (wxWidgets)Dans la boîte de dialogue de fractionnement, il convient d'ajouter un groupe de contrôles avec :Un menu déroulant wxChoice pour sélectionner le taux (ex: Exonéré 0%, Taux réduit 5.5%, Taux intermédiaire 10%, Taux normal 20%).Un bouton "Calculer TVA" qui applique la formule TTC $\rightarrow$ HT + TVA et génère la ligne de TVA associée.
Déclaration dans mmSplitDetailsDialog.h :
C++
// Contrôles UI pour l'automatisme TVA
wxChoice* m_choiceVatRate;
wxButton* m_btnApplyVAT;
// Évènement
void OnApplyVAT(wxCommandEvent& event);
3. Logique de calcul et création des sous-lignes (.cpp)Le calcul d'un montant HT à partir d'un montant TTC subit la formule :$$\text{Montant HT} = \frac{\text{Montant TTC}}{1 + \text{Taux TVA}}$$$$\text{Montant TVA} = \text{Montant TTC} - \text{Montant HT}$$Implémentation dans mmSplitDetailsDialog.cpp :
C++
void mmSplitDetailsDialog::OnApplyVAT(wxCommandEvent& event)
{
// 1. Récupération du taux sélectionné (ex: 20%, 10%, 5.5%)
double vatPercent = 0.0;
int sel = m_choiceVatRate->GetSelection();
switch (sel) {
case 1: vatPercent = 5.5; break;
case 2: vatPercent = 10.0; break;
case 3: vatPercent = 20.0; break;
default: vatPercent = 0.0; break;
}
if (vatPercent <= 0.0) return;
// 2. Récupération du montant total TTC saisi dans la ligne courante
double totalTTC = m_textAmount->GetValue(); // Montant saisi par l'utilisateur
if (totalTTC <= 0.0) return;
// 3. Calcul de la ventilation HT / TVA
double amountHT = totalTTC / (1.0 + (vatPercent / 100.0));
double amountVAT = totalTTC - amountHT;
// Arrondi monétaire à 2 décimales
amountHT = std::round(amountHT * 100.0) / 100.0;
amountVAT = std::round(amountVAT * 100.0) / 100.0;
// Ajustement de la ligne de dépense principale avec le montant HT
m_textAmount->SetValue(amountHT);
// 4. Ajout automatique de la ligne de fractionnement pour la TVA
Model_Category vatCategory = Model_Category::GetCategoryByName("TVA");
Model_Subcategory vatSubCategory = Model_Subcategory::GetSubcategoryByName(
wxString::Format("TVA %.1f%%", vatPercent)
);
// Création de l'élément d'agrégation split
Model_Splittransaction splitVat;
splitVat.CATEGID = vatCategory.CATEGID;
splitVat.SUBCATEGID = vatSubCategory.SUBCATEGID;
splitVat.SPLITTRANSAMOUNT = amountVAT;
// Ajout à la liste locale des splits et rafraîchissement du contrôle wxListCtrl
m_splitList.push_back(splitVat);
UpdateSplitListControl();
}
My competencies and softwares don't allow me to do that
Could anyone with the correct skill give commentaries ?
Thanks