From d23e6d7ab9537dd3300b1122ff3e9200227d5c86 Mon Sep 17 00:00:00 2001 From: vgreb Date: Sat, 10 Jan 2026 21:54:59 +0100 Subject: [PATCH] =?UTF-8?q?Refonte=20-=20Tr=C3=A9sorerie=20>=20Journal=20>?= =?UTF-8?q?=20Ajout/Edition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/config/packages/backoffice_menu.yaml | 3 + .../routing/admin_accounting/journal.yml | 12 + .../pages/administration/compta_journal.php | 191 -------------- .../administration/compta_journal.html | 4 +- sources/Afup/Comptabilite/Comptabilite.php | 17 -- .../Accounting/Form/TransactionType.php | 234 ++++++++++++++++++ .../Model/Repository/AccountRepository.php | 9 + .../Model/Repository/EventRepository.php | 9 +- .../Repository/TransactionRepository.php | 13 + .../Accounting/Model/Transaction.php | 12 +- .../Journal/AddTransactionAction.php | 42 ++++ .../Journal/EditTransactionAction.php | 60 +++++ .../admin/accounting/journal/add.html.twig | 8 + .../admin/accounting/journal/edit.html.twig | 8 + .../admin/accounting/journal/form.html.twig | 118 +++++++++ .../features/Admin/Tresorerie/Journal.feature | 66 ++--- .../Admin/Tresorerie/JournalImport.feature | 8 +- 17 files changed, 567 insertions(+), 247 deletions(-) create mode 100644 sources/AppBundle/Accounting/Form/TransactionType.php create mode 100644 sources/AppBundle/Controller/Admin/Accounting/Journal/AddTransactionAction.php create mode 100644 sources/AppBundle/Controller/Admin/Accounting/Journal/EditTransactionAction.php create mode 100644 templates/admin/accounting/journal/add.html.twig create mode 100644 templates/admin/accounting/journal/edit.html.twig create mode 100644 templates/admin/accounting/journal/form.html.twig diff --git a/app/config/packages/backoffice_menu.yaml b/app/config/packages/backoffice_menu.yaml index f2fff241c..5cd733b90 100644 --- a/app/config/packages/backoffice_menu.yaml +++ b/app/config/packages/backoffice_menu.yaml @@ -224,6 +224,9 @@ parameters: compta_journal: nom: 'Journal' niveau: 'ROLE_ADMIN' + extra_routes: + - admin_accounting_journal_add + - admin_accounting_journal_edit compta_conf_evenement: nom: 'Configuration' niveau: 'ROLE_ADMIN' diff --git a/app/config/routing/admin_accounting/journal.yml b/app/config/routing/admin_accounting/journal.yml index d825c4268..7ae104d17 100644 --- a/app/config/routing/admin_accounting/journal.yml +++ b/app/config/routing/admin_accounting/journal.yml @@ -28,3 +28,15 @@ admin_accounting_journal_import: path: /import defaults: _controller: AppBundle\Controller\Admin\Accounting\Journal\ImportAction + +admin_accounting_journal_add: + path: /add + defaults: + _controller: AppBundle\Controller\Admin\Accounting\Journal\AddTransactionAction + +admin_accounting_journal_edit: + path: /edit/{id} + requirements: + id: '\d+' + defaults: + _controller: AppBundle\Controller\Admin\Accounting\Journal\EditTransactionAction diff --git a/htdocs/pages/administration/compta_journal.php b/htdocs/pages/administration/compta_journal.php index 264cdf1e2..0400273c8 100755 --- a/htdocs/pages/administration/compta_journal.php +++ b/htdocs/pages/administration/compta_journal.php @@ -4,7 +4,6 @@ // Impossible to access the file itself use Afup\Site\Comptabilite\Comptabilite; -use Afup\Site\Utils\Logs; if (!defined('PAGE_LOADED_USING_INDEX')) { trigger_error("Direct access forbidden.", E_USER_ERROR); @@ -61,196 +60,6 @@ } elseif ($action == 'credit') { $journal = $compta->obtenirJournal('2',$periode_debut,$periode_fin, !$alsoDisplayClassifed); $smarty->assign('journal', $journal); -} elseif ($action == 'ajouter' || $action == 'modifier') { - $formulaire = instancierFormulaire(); - - if ($action === 'modifier') { - $champsRecup = $compta->obtenir((int) $_GET['id']); - - $champs['idcompte'] = $champsRecup['idcompte']; - $champs['date_saisie'] = $champsRecup['date_ecriture']; - $champs['idoperation'] = $champsRecup['idoperation']; - $champs['idcategorie'] = $champsRecup['idcategorie']; - $champs['nom_frs'] = $champsRecup['nom_frs']; - $champs['tva_intra'] = $champsRecup['tva_intra']; - $champs['montant'] = $champsRecup['montant']; - $champs['description'] = $champsRecup['description']; - $champs['numero'] = $champsRecup['numero']; - $champs['idmode_regl'] = $champsRecup['idmode_regl']; - $champs['date_reglement'] = $champsRecup['date_regl']; - $champs['obs_regl'] = $champsRecup['obs_regl']; - $champs['idevenement'] = $champsRecup['idevenement']; - $champs['comment'] = $champsRecup['comment']; - $champs['montant_ht_soumis_tva_0'] = $champsRecup['montant_ht_soumis_tva_0']; - $champs['montant_ht_soumis_tva_5_5'] = $champsRecup['montant_ht_soumis_tva_5_5']; - $champs['montant_ht_soumis_tva_10'] = $champsRecup['montant_ht_soumis_tva_10']; - $champs['montant_ht_soumis_tva_20'] = $champsRecup['montant_ht_soumis_tva_20']; - $champs['tva_zone'] = $champsRecup['tva_zone']; - - - - //$formulaire->setDefaults($champsRecup); - $formulaire->addElement('hidden', 'id', $_GET['id']); - } else { - $champs['idcompte'] = 1; - $champs['date_saisie'] = date('Y-m-d'); - $champs['date_reglement'] = date('Y-m-d'); - } - $formulaire->setDefaults($champs); - - // facture associé à un évènement - $formulaire->addElement('header' , '' , 'Sélectionner un Journal'); - $formulaire->addElement('select' , 'idoperation', 'Type d\'opération', $compta->obtenirListOperations()); - $formulaire->addElement('select' , 'idcompte' , 'Compte', $compta->obtenirListComptes()); - $formulaire->addElement('select' , 'idevenement', 'Evenement', $compta->obtenirListEvenements()); - - //detail facture - $formulaire->addElement('header' , '' , 'Détail Facture'); - - //$mois=10; - $formulaire->addElement('date' , 'date_saisie' , 'Date saisie', ['language' => 'fr', - 'format' => 'd F Y', - 'minYear' => date('Y') - 5, - 'maxYear' => date('Y') + 1]); - - $formulaire->addElement('select' , 'idcategorie', 'Type de compte', $compta->obtenirListCategories()); - $formulaire->addElement('text', 'nom_frs', 'Nom fournisseurs' , ['size' => 30, 'maxlength' => 40]); - $formulaire->addElement('text' , 'tva_intra' , 'TVA intracommunautaire (facture)', ['size' => 30, 'maxlength' => 100]); - $formulaire->addElement('text', 'numero', 'Numero facture' , ['size' => 30, 'maxlength' => 40]); - $formulaire->addElement('textarea', 'description', 'Description', ['cols' => 42, 'rows' => 5]); - $formulaire->addElement('text', 'montant', 'Montant' , ['size' => 30, 'maxlength' => 40, 'id' => 'compta_journal_montant']); - $formulaire->addElement('text', 'comment', 'Commentaire' , ['size' => 30, 'maxlength' => 255]); - - $formulaire->addElement('header' , '' , 'TVA'); - $formulaire->addElement('text', 'montant_ht_soumis_tva_5_5', 'Montant HT soumis à TVA 5.5%' , ['size' => 30, 'maxlength' => 40, 'id' => 'compta_journal_ht_5_5']); - $formulaire->addElement('static' , 'note', '', 'Calculer le montant HT soumis à TVA 5.5% sur la base de l\'intégralité du montant TTC

'); - $formulaire->addElement('text', 'montant_ht_soumis_tva_10', 'Montant HT soumis à TVA 10%' , ['size' => 30, 'maxlength' => 40, 'id' => 'compta_journal_ht_10']); - $formulaire->addElement('static' , 'note', '', 'Calculer le montant HT soumis à TVA 10% sur la base de l\'intégralité du montant TTC

'); - $formulaire->addElement('text', 'montant_ht_soumis_tva_20', 'Montant HT soumis à TVA 20%' , ['size' => 30, 'maxlength' => 40, 'id' => 'compta_journal_ht_20']); - $formulaire->addElement('static' , 'note', '', 'Calculer le montant HT soumis à TVA 20% sur la base de l\'intégralité du montant TTC

'); - $formulaire->addElement('text', 'montant_ht_soumis_tva_0', 'Montant HT non soumis à TVA' , ['size' => 30, 'maxlength' => 40, 'id' => 'compta_journal_ht_0']); - $formulaire->addElement('static' , 'note', '', 'Calculer le montant non soumis à TVA sur la base de l\'intégralité du montant TTC

'); - - $formulaire->addElement('select' , 'tva_zone', 'Zone TVA', array_merge(['' => 'Non définie'], Comptabilite::TVA_ZONES)); - - //reglement - $formulaire->addElement('header' , '' , 'Réglement'); - $formulaire->addElement('select' , 'idmode_regl', 'Réglement', $compta->obtenirListReglements()); - $formulaire->addElement('date' , 'date_reglement' , 'Date', ['language' => 'fr', - 'format' => 'd F Y', - 'minYear' => date('Y') - 5, - 'maxYear' => date('Y') + 1]); - $formulaire->addElement('text', 'obs_regl', 'Info reglement' , ['size' => 30, 'maxlength' => 40]); - - - // boutons - $formulaire->addElement('header' , 'boutons' , ''); - $formulaire->addElement('submit' , 'soumettre' , ucfirst($action)); - - // 2012-02-18 A. Gendre - $passer = null; - if ($action !== 'ajouter') { - $res = $compta->obtenirSuivantADeterminer($_GET['id']); - if (is_array($res)) { - $passer = $res['id']; - $formulaire->addElement('submit', 'soumettrepasser' , 'Soumettre & passer'); - $formulaire->addElement('submit', 'passer' , 'Passer'); - } - } - - // ajoute des regles - $formulaire->addRule('idoperation' , 'Type d\'opération manquant' , 'required'); - $formulaire->addRule('idcompte' , 'Compte manquant' , 'required'); - $formulaire->addRule('idoperation' , 'Type d\'opération manquant' , 'nonzero'); - $formulaire->addRule('idevenement' , 'Evenement manquant' , 'required'); - $formulaire->addRule('idevenement' , 'Evenement manquant' , 'nonzero'); - $formulaire->addRule('idcategorie' , 'Type de compte manquant' , 'required'); - $formulaire->addRule('idcategorie' , 'Type de compte manquant' , 'nonzero'); - $formulaire->addRule('montant' , 'Montant manquant' , 'required'); - - - // 2012-02-18 A. Gendre - if (isset($_POST['passer']) && isset($passer)) { - afficherMessage('L\'écriture n\'a pas été ' . (($action === 'ajouter') ? 'ajoutée' : 'modifiée'), 'index.php?page=compta_journal&action=modifier&id=' . $passer); - return; - } - - if ($formulaire->validate()) { - $valeur = $formulaire->exportValues(); - - $date_ecriture = $valeur['date_saisie']['Y'] . "-" . $valeur['date_saisie']['F'] . "-" . $valeur['date_saisie']['d'] ; - $date_regl = $valeur['date_reglement']['Y'] . "-" . $valeur['date_reglement']['F'] . "-" . $valeur['date_reglement']['d'] ; - - if ($action === 'ajouter') { - $ok = $compta->ajouter( - $valeur['idoperation'], - $valeur['idcompte'], - $valeur['idcategorie'], - $date_ecriture, - $valeur['nom_frs'], - $valeur['tva_intra'], - $valeur['montant'], - $valeur['description'], - $valeur['numero'], - $valeur['idmode_regl'], - $date_regl, - $valeur['obs_regl'], - $valeur['idevenement'], - $valeur['comment'], - 0, - $valeur['montant_ht_soumis_tva_0'], - $valeur['montant_ht_soumis_tva_5_5'], - $valeur['montant_ht_soumis_tva_10'], - $valeur['montant_ht_soumis_tva_20'], - $valeur['tva_zone'], - - ); - } else { - $ok = $compta->modifier( - $valeur['id'], - $valeur['idoperation'], - $valeur['idcompte'], - $valeur['idcategorie'], - $date_ecriture, - $valeur['nom_frs'], - $valeur['tva_intra'], - $valeur['montant'], - $valeur['description'], - $valeur['numero'], - $valeur['idmode_regl'], - $date_regl, - $valeur['obs_regl'], - $valeur['idevenement'], - $valeur['comment'], - null, - 0, - $valeur['montant_ht_soumis_tva_0'], - $valeur['montant_ht_soumis_tva_5_5'], - $valeur['montant_ht_soumis_tva_10'], - $valeur['montant_ht_soumis_tva_20'], - $valeur['tva_zone'], - ); - } - if ($ok) { - if ($action === 'ajouter') { - Logs::log('Ajout une écriture ' . $formulaire->exportValue('titre')); - } else { - Logs::log('Modification une écriture ' . $formulaire->exportValue('titre') . ' (' . $_GET['id'] . ')'); - } - // 2012-02-18 A. Gendre - if (isset($_POST['soumettrepasser']) && isset($passer)) { - $urlredirect = 'index.php?page=compta_journal&action=modifier&id=' . $passer; - } else { - $urlredirect = 'index.php?page=compta_journal&action=lister#L' . $valeur['id']; - } - afficherMessage('L\'écriture a été ' . (($action === 'ajouter') ? 'ajoutée' : 'modifiée'), $urlredirect); - } else { - $smarty->assign('erreur', 'Une erreur est survenue lors de ' . (($action === 'ajouter') ? "l'ajout" : 'la modification') . ' de l\'écriture'); - } - } - - - $smarty->assign('formulaire', genererFormulaire($formulaire)); } elseif ($action === 'export') { /* * This action allows the admin to export the full period in a CSV file. diff --git a/htdocs/templates/administration/compta_journal.html b/htdocs/templates/administration/compta_journal.html index 199e8aae5..7467cdca0 100644 --- a/htdocs/templates/administration/compta_journal.html +++ b/htdocs/templates/administration/compta_journal.html @@ -3,7 +3,7 @@

Journal