diff --git a/db/seeds/Facture.php b/db/seeds/Facture.php index 99d7897b8..f7093a8d5 100644 --- a/db/seeds/Facture.php +++ b/db/seeds/Facture.php @@ -25,6 +25,7 @@ public function run(): void 'nom' => 'Le kellen', 'prenom' => 'Yan', 'etat_paiement' => 1, + 'date_paiement' => '2023-07-01', 'devise_facture' => 'EUR', 'ref_clt1' => 'Forum PHP 2023', 'service' => '', @@ -49,6 +50,7 @@ public function run(): void 'nom' => 'Le kellen', 'prenom' => 'Yan', 'etat_paiement' => 1, + 'date_paiement' => '2024-03-01', 'devise_facture' => 'EUR', 'ref_clt1' => 'Forum PHP 2024', 'service' => '', diff --git a/htdocs/pages/administration/compta_devis.php b/htdocs/pages/administration/compta_devis.php index 58578e4af..905998bef 100644 --- a/htdocs/pages/administration/compta_devis.php +++ b/htdocs/pages/administration/compta_devis.php @@ -106,12 +106,16 @@ function prepareDefaultsFromComptaFacId(Facture $comptaFact, $id) $formulaire->addElement('date' , 'date_devis' , 'Date devis', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y') - 3, - 'maxYear' => date('Y')]); + 'maxYear' => date('Y'), + 'singleInput' => true, + ]); } else { $formulaire->addElement('date' , 'date_devis' , 'Date devis', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y'), - 'maxYear' => date('Y')]); + 'maxYear' => date('Y'), + 'singleInput' => true, + ]); } $formulaire->addElement('header' , '' , 'Facturation'); $formulaire->addElement('static' , 'note' , '' , 'Ces informations concernent la personne ou la société qui sera facturée

'); @@ -188,12 +192,10 @@ function prepareDefaultsFromComptaFacId(Facture $comptaFact, $id) if ($formulaire->validate()) { $valeur = $formulaire->exportValues(); - $date_devis = $valeur['date_devis']['Y'] . "-" . $valeur['date_devis']['F'] . "-" . $valeur['date_devis']['d'] ; - if ($action === 'ajouter') { $bdd->executer('START TRANSACTION'); $ok = $comptaFact->ajouter( - $date_devis, + $valeur['date_devis'], $valeur['societe'], $valeur['service'], $valeur['adresse'], @@ -211,7 +213,7 @@ function prepareDefaultsFromComptaFacId(Facture $comptaFact, $id) $valeur['ref_clt3'], 0, null, - $valeur['devise_facture'], + $valeur['devise_facture'] ?? 'EUR', // or make form field required ); $id = $comptaFact->obtenirDernier(); @@ -231,7 +233,7 @@ function prepareDefaultsFromComptaFacId(Facture $comptaFact, $id) $bdd->executer('START TRANSACTION'); $ok = $comptaFact->modifier( $_GET['id'], - $date_devis, + $valeur['date_devis'], $valeur['societe'], $valeur['service'], $valeur['adresse'], diff --git a/htdocs/pages/administration/compta_facture.php b/htdocs/pages/administration/compta_facture.php index ea4850b39..a3b68d6d1 100644 --- a/htdocs/pages/administration/compta_facture.php +++ b/htdocs/pages/administration/compta_facture.php @@ -63,7 +63,6 @@ if ($action === 'modifier') { $champsRecup = $comptaFact->obtenir($_GET['id']); - $factureId = $champsRecup['id']; $champs['date_facture'] = $champsRecup['date_facture']; @@ -119,12 +118,16 @@ $formulaire->addElement('date' , 'date_facture' , 'Date facture', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y') - 3, - 'maxYear' => date('Y')]); + 'maxYear' => date('Y'), + 'singleInput' => true, + ]); } else { $formulaire->addElement('date' , 'date_facture' , 'Date facture', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y'), - 'maxYear' => date('Y')]); + 'maxYear' => date('Y'), + 'singleInput' => true, + ]); } $formulaire->addElement('header' , '' , 'Facturation'); $formulaire->addElement('static' , 'note' , '' , 'Ces informations concernent la personne ou la société qui sera facturée

'); @@ -172,7 +175,7 @@ $formulaire->addElement('select', 'devise_facture' , 'Monnaie de la facture', ['EUR' => 'Euro', 'DOL' => 'Dollar'], ['size' => 2]); $formulaire->addElement('select', 'etat_paiement' , 'Etat paiement', ['En attente de paiement', 'Payé', 'Annulé'], ['size' => 3]); - $formulaire->addElement('date' , 'date_paiement' , 'Date paiement', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y') - 5, 'maxYear' => date('Y')]); + $formulaire->addElement('date' , 'date_paiement' , 'Date paiement', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y') - 5, 'maxYear' => date('Y'), 'singleInput' => true]); @@ -214,8 +217,8 @@ if ($formulaire->validate()) { $valeur = $formulaire->exportValues(); - $date_ecriture = $valeur['date_facture']['Y'] . "-" . $valeur['date_facture']['F'] . "-" . $valeur['date_facture']['d'] ; - $date_paiement = $valeur['date_paiement']['Y'] . "-" . $valeur['date_paiement']['F'] . "-" . $valeur['date_paiement']['d'] ; + $date_ecriture = $valeur['date_facture']; + $date_paiement = $valeur['date_paiement']; if ($action === 'ajouter') { // il faut passser obligatoirement par un devis } else { diff --git a/htdocs/pages/administration/compta_journal.php b/htdocs/pages/administration/compta_journal.php index a2808c55c..bda50bc5a 100755 --- a/htdocs/pages/administration/compta_journal.php +++ b/htdocs/pages/administration/compta_journal.php @@ -118,7 +118,8 @@ $formulaire->addElement('date' , 'date_saisie' , 'Date saisie', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y') - 5, - 'maxYear' => date('Y') + 1]); + 'maxYear' => date('Y') + 1, + 'singleInput' => true]); $formulaire->addElement('select' , 'idcategorie', 'Type de compte', $compta->obtenirListCategories()); $formulaire->addElement('text', 'nom_frs', 'Nom fournisseurs' , ['size' => 30, 'maxlength' => 40]); @@ -146,7 +147,9 @@ $formulaire->addElement('date' , 'date_reglement' , 'Date', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => date('Y') - 5, - 'maxYear' => date('Y') + 1]); + 'maxYear' => date('Y') + 1, + 'singleInput' => true, + ]); $formulaire->addElement('text', 'obs_regl', 'Info reglement' , ['size' => 30, 'maxlength' => 40]); @@ -185,22 +188,19 @@ 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['date_saisie'], $valeur['nom_frs'], $valeur['tva_intra'], $valeur['montant'], $valeur['description'], $valeur['numero'], $valeur['idmode_regl'], - $date_regl, + $valeur['date_reglement'], $valeur['obs_regl'], $valeur['idevenement'], $valeur['comment'], @@ -218,14 +218,14 @@ $valeur['idoperation'], $valeur['idcompte'], $valeur['idcategorie'], - $date_ecriture, + $valeur['date_saisie'], $valeur['nom_frs'], $valeur['tva_intra'], $valeur['montant'], $valeur['description'], $valeur['numero'], $valeur['idmode_regl'], - $date_regl, + $valeur['date_reglement'], $valeur['obs_regl'], $valeur['idevenement'], $valeur['comment'], @@ -248,7 +248,7 @@ 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']; + $urlredirect = 'index.php?page=compta_journal&action=lister#L' . ($valeur['id'] ?? '') ; } afficherMessage('L\'écriture a été ' . (($action === 'ajouter') ? 'ajoutée' : 'modifiée'), $urlredirect); } else { diff --git a/htdocs/pages/administration/cotisations.php b/htdocs/pages/administration/cotisations.php index 423212388..9626b75ae 100644 --- a/htdocs/pages/administration/cotisations.php +++ b/htdocs/pages/administration/cotisations.php @@ -88,11 +88,13 @@ $formulaire->addElement('date' , 'date_debut' , 'Date début', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => 2002, - 'maxYear' => date('Y') + 5]); + 'maxYear' => date('Y') + 5, + 'singleInput' => true]); $formulaire->addElement('date' , 'date_fin' , 'Date fin', ['language' => 'fr', 'format' => 'd F Y', 'minYear' => 2002, - 'maxYear' => date('Y') + 5]); + 'maxYear' => date('Y') + 5, + 'singleInput' => true]); $formulaire->addElement('textarea', 'commentaires' , 'Commentaires', ['cols' => 42, 'rows' => 5]); $formulaire->addElement('header', 'boutons' , ''); @@ -104,9 +106,9 @@ if ($formulaire->validate()) { $nom = ($_GET['type_personne'] == AFUP_PERSONNES_PHYSIQUES) ? $personne['prenom'] . ' ' . $personne['nom'] : $personne['raison_sociale']; $date_debut = $formulaire->exportValue('date_debut'); - $date_debut = mktime(0, 0, 0, (int) $date_debut['F'], (int) $date_debut['d'],(int) $date_debut['Y']); + $date_debut = (new \DateTime($date_debut))->getTimestamp(); $date_fin = $formulaire->exportValue('date_fin'); - $date_fin = mktime(0, 0, 0, (int) $date_fin['F'], (int) $date_fin['d'], (int) $date_fin['Y']); + $date_fin = (new \DateTime($date_fin))->getTimestamp(); if ($action == 'ajouter') { if ($cotisations->ajouter( diff --git a/htdocs/pages/administration/forum_inscriptions.php b/htdocs/pages/administration/forum_inscriptions.php index aace5dbf6..7176efe8f 100644 --- a/htdocs/pages/administration/forum_inscriptions.php +++ b/htdocs/pages/administration/forum_inscriptions.php @@ -249,7 +249,7 @@ function updateGlobalsForTarif( $current = $forum->obtenir($_GET['id_forum']); - $formulaire->addElement('date' , 'date_reglement' , 'Date', ['language' => 'fr', 'minYear' => $current['forum_annee'] - 2, 'maxYear' => $current['forum_annee'] + 2]); + $formulaire->addElement('date' , 'date_reglement' , 'Date', ['language' => 'fr', 'minYear' => $current['forum_annee'] - 2, 'maxYear' => $current['forum_annee'] + 2, 'singleInput' => true]); $formulaire->addElement('header' , '' , 'Facturation'); @@ -307,10 +307,11 @@ function updateGlobalsForTarif( $valeurs = $formulaire->exportValues(); // Date de réglement au 01/01 => non defini - if ($valeurs['date_reglement']['d'] == 1 && $valeurs['date_reglement']['M'] == 1) { + $dateReglement = new DateTime($valeurs['date_reglement']); + if ($dateReglement->format('j') == 1 && $dateReglement->format('n') == 1) { $valeurs['date_reglement'] = null; } else { - $valeurs['date_reglement'] = mktime(0,0,0, (int) $valeurs['date_reglement']['M'], (int) $valeurs['date_reglement']['d'], (int) $valeurs['date_reglement']['Y']); + $valeurs['date_reglement'] = $dateReglement->getTimestamp(); } if ($action == 'ajouter') { @@ -333,8 +334,8 @@ function updateGlobalsForTarif( $ticket->setEmail($valeurs['email']); $ticket->setPhoneNumber($valeurs['telephone']); $ticket->setVoucher($valeurs['coupon']); - $ticket->setCompanyCitation($valeurs['citer_societe']); - $ticket->setNewsletter($valeurs['newsletter_afup']); + $ticket->setCompanyCitation((bool) $valeurs['citer_societe']); + $ticket->setNewsletter((bool) $valeurs['newsletter_afup']); $ticket->setOptin((bool) $valeurs['mail_partenaire']); $ticket->setComments($valeurs['commentaires']); $ticket->setStatus($valeurs['etat']); diff --git a/htdocs/pages/administration/forum_planning.php b/htdocs/pages/administration/forum_planning.php index 258e7826e..80b4b597a 100755 --- a/htdocs/pages/administration/forum_planning.php +++ b/htdocs/pages/administration/forum_planning.php @@ -70,7 +70,6 @@ $champs['debut'] = $forum_donnees['date_debut']; $champs['fin'] = $forum_donnees['date_debut']; } - $formulaire->setDefaults($champs); $id = $_GET['id'] ?? 0; @@ -87,8 +86,8 @@ } $formulaire->addElement('header', null, 'Plannification'); - $formulaire->addElement('date' , 'debut' , 'Début', ['language' => 'fr', 'format' => "dMY H:i", 'minYear' => date('Y'), 'maxYear' => date('Y') + 1, 'minHour' => 8, 'maxHour' => 18, 'optionIncrement' => ['i' => 5]]); - $formulaire->addElement('date' , 'fin' , 'Fin' , ['language' => 'fr', 'format' => "dMY H:i", 'minYear' => date('Y'), 'maxYear' => date('Y') + 1, 'optionIncrement' => ['i' => 5], 'minHour' => 8, 'maxHour' => 18]); + $formulaire->addElement('date' , 'debut' , 'Début', ['language' => 'fr', 'format' => "dMY H:i", 'minYear' => date('Y'), 'maxYear' => date('Y') + 1, 'minHour' => 8, 'maxHour' => 18, 'optionIncrement' => ['i' => 5], 'singleInput' => true]); + $formulaire->addElement('date' , 'fin' , 'Fin' , ['language' => 'fr', 'format' => "dMY H:i", 'minYear' => date('Y'), 'maxYear' => date('Y') + 1, 'optionIncrement' => ['i' => 5], 'minHour' => 8, 'maxHour' => 18, 'singleInput' => true]); $formulaire->addElement('select' , 'id_salle', 'Salle', [null => '' ] + $forum_appel->obtenirListeSalles($champs['id_forum'], true)); $formulaire->addElement('text' , 'joindin' , 'Id de la conférence chez joind.in' , ['size' => 40, 'maxlength' => 10]); @@ -105,8 +104,8 @@ if ($id == 0 || 0 === strlen(trim((string) $id))) { $planning_id = $forum_appel->ajouterSessionDansPlanning($valeurs['id_forum'], $valeurs['id_session'], - mktime((int) $valeurs['debut']['H'], (int) $valeurs['debut']['i'], 0, (int) $valeurs['debut']['M'], (int) $valeurs['debut']['d'], (int) $valeurs['debut']['Y']), - mktime((int) $valeurs['fin']['H'], (int) $valeurs['fin']['i'], 0, (int) $valeurs['fin']['M'], (int) $valeurs['fin']['d'], (int) $valeurs['fin']['Y']), + (new DateTime($valeurs['debut']))->getTimestamp(), + (new DateTime($valeurs['fin']))->getTimestamp(), $valeurs['id_salle']); $ok = (bool) $planning_id; @@ -115,8 +114,8 @@ $ok = $forum_appel->modifierSessionDuPlanning($planning_id, $valeurs['id_forum'], $valeurs['id_session'], - mktime((int) $valeurs['debut']['H'], (int) $valeurs['debut']['i'], 0, (int) $valeurs['debut']['M'], (int) $valeurs['debut']['d'], (int) $valeurs['debut']['Y']), - mktime((int) $valeurs['fin']['H'],(int) $valeurs['fin']['i'], 0,(int) $valeurs['fin']['M'],(int) $valeurs['fin']['d'], (int) $valeurs['fin']['Y']), + (new DateTime($valeurs['debut']))->getTimestamp(), + (new DateTime($valeurs['fin']))->getTimestamp(), $valeurs['id_salle']); $forum_appel->modifierJoindinSession($valeurs['id_session'], $valeurs['joindin']); } diff --git a/htdocs/pages/administration/forum_sessions.php b/htdocs/pages/administration/forum_sessions.php index c193b05e2..5091dc14c 100644 --- a/htdocs/pages/administration/forum_sessions.php +++ b/htdocs/pages/administration/forum_sessions.php @@ -10,7 +10,6 @@ use AppBundle\Controller\LegacyController; use AppBundle\Event\Model\Talk; use Assert\Assertion; -use Symfony\Component\PropertyAccess\PropertyAccess; /** @var LegacyController $this */ if (!defined('PAGE_LOADED_USING_INDEX')) { @@ -131,7 +130,7 @@ $formulaire->addElement('header', null, 'Présentation'); - $formulaire->addElement('date' , 'date_soumission', 'Soumission', ['language' => 'fr', 'minYear' => date('Y') - 5, 'maxYear' => date('Y') + 5]); + $formulaire->addElement('date' , 'date_soumission', 'Soumission', ['language' => 'fr', 'minYear' => date('Y') - 5, 'maxYear' => date('Y') + 5, 'singleInput' => true]); $formulaire->addElement('text' , 'titre' , 'Titre' , ['size' => 40, 'maxlength' => 150]); $abstractClass = 'simplemde'; @@ -182,12 +181,9 @@ $formulaire->addElement('checkbox' , 'video_has_fr_subtitles' , "Sous titres FR présents"); $formulaire->addElement('checkbox' , 'video_has_en_subtitles' , "Sous titres EN présents"); - $dateElement = $formulaire->addElement('date' , 'date_publication' , 'Date de publication' , ['language' => 'fr', 'format' => "dMYH:i:s", 'minYear' => date('Y') - 5, 'maxYear' => date('Y') + 5]); - - /** @var HTML_QuickForm_select $dateElementSelect */ - $dateElementSelect = PropertyAccess::createPropertyAccessor()->getValue($dateElement, '_elements[2]'); - if (!isset($dateElementSelect->getSelected()[0])) { - $dateElementSelect->setSelected([date('Y')]); + $dateElement = $formulaire->addElement('date' , 'date_publication' , 'Date de publication' , ['language' => 'fr', 'format' => "dMYH:i:s", 'minYear' => date('Y') - 5, 'maxYear' => date('Y') + 5, 'singleInput' => true]); + if (empty($dateElement->getValue())) { + $dateElement->setValue(date('Y') . '-01-01 00:00:00'); } $formulaire->addElement('textarea' , 'tweets' , "Tweets", ['style' => "width:100%;min-height:100px"]); @@ -249,7 +245,7 @@ if ($action == 'ajouter') { $session_id = $forum_appel->ajouterSession( $valeurs['id_forum'], - $valeurs['date_soumission']['Y'] . '-' . $valeurs['date_soumission']['M'] . '-' . $valeurs['date_soumission']['d'], + $valeurs['date_soumission'], $valeurs['titre'], $valeurs['abstract'], (int) $valeurs['genre'], @@ -263,7 +259,7 @@ $session_id = (int) $_GET['id']; $ok = $forum_appel->modifierSession($session_id, $valeurs['id_forum'], - $valeurs['date_soumission']['Y'] . '-' . $valeurs['date_soumission']['M'] . '-' . $valeurs['date_soumission']['d'], + $valeurs['date_soumission'], $valeurs['titre'], $valeurs['abstract'], (int) $valeurs['genre'], @@ -280,7 +276,7 @@ $valeurs['use_markdown'], $valeurs['video_has_fr_subtitles'], $valeurs['video_has_en_subtitles'], - $valeurs['date_publication']['Y'] . '-' . $valeurs['date_publication']['M'] . '-' . $valeurs['date_publication']['d'] . ' ' . $valeurs['date_publication']['H'] . ':' . $valeurs['date_publication']['i'] . ':' . $valeurs['date_publication']['s'], + $valeurs['date_publication'], $valeurs['tweets'], $valeurs['transcript'], $valeurs['verbatim'], diff --git a/htdocs/pages/administration/site_articles.php b/htdocs/pages/administration/site_articles.php index 512d92759..c89f5882c 100755 --- a/htdocs/pages/administration/site_articles.php +++ b/htdocs/pages/administration/site_articles.php @@ -115,7 +115,7 @@ function checkNoSpace($value): bool $formulaire->addElement('text' , 'raccourci' , 'Raccourci' , ['size' => 60, 'maxlength' => 255]); $formulaire->addElement('select' , 'id_site_rubrique' , 'Rubrique' , [null => '' ] + $rubriques->obtenirListe('id, nom', 'nom', null, true)); $formulaire->addElement('select' , 'id_personne_physique' , 'Auteur' , $users); - $formulaire->addElement('date' , 'date' , 'Date' , ['language' => 'fr', 'format' => "dMYH:i:s", 'minYear' => 2001, 'maxYear' => date('Y') + 1]); + $formulaire->addElement('date' , 'date' , 'Date' , ['language' => 'fr', 'format' => "dMYH:i:s", 'minYear' => 2001, 'maxYear' => date('Y') + 1, 'singleInput' => true]); $formulaire->addElement('select' , 'position' , 'Position' , $article->positionable()); $formulaire->addElement('select' , 'etat' , 'Etat' , [-1 => 'Hors ligne', 0 => 'En attente', 1 => 'En ligne']); $formulaire->addElement('select' , 'theme' , 'Thème' , ['' => ''] + Article::getThemesLabels()); @@ -143,8 +143,7 @@ function checkNoSpace($value): bool $article->type_contenu = $formulaire->exportValue('type_contenu'); $article->position = $formulaire->exportValue('position'); $date = $formulaire->exportValue('date'); - - $article->date = mktime((int) $date['H'],(int) $date['i'], (int) $date['s'], (int) $date['M'], (int) $date['d'], (int) $date['Y']); + $article->date = (new \DateTime($date))->getTimestamp(); $article->etat = $formulaire->exportValue('etat'); $article->theme = $formulaire->exportValue('theme'); $article->id_forum = $formulaire->exportValue('id_forum'); diff --git a/htdocs/pages/administration/site_feuilles.php b/htdocs/pages/administration/site_feuilles.php index f076647be..091d585a9 100644 --- a/htdocs/pages/administration/site_feuilles.php +++ b/htdocs/pages/administration/site_feuilles.php @@ -73,7 +73,7 @@ $formulaire->addElement('static' , 'note' , '' , ''); $formulaire->addElement('text' , 'image_alt' , 'Texte alternatif pour l\'image', ['size' => 60, 'maxlength' => 255]); $formulaire->addElement('hidden' , 'image'); - $formulaire->addElement('date' , 'date' , 'Date' , ['language' => 'fr', 'minYear' => 2001, 'maxYear' => date('Y')]); + $formulaire->addElement('date' , 'date' , 'Date' , ['language' => 'fr', 'minYear' => 2001, 'maxYear' => date('Y'), 'singleInput' => true]); $formulaire->addElement('select' , 'position' , 'Position' , $feuille->positionable()); $formulaire->addElement('select' , 'etat' , 'Etat' , [-1 => 'Hors ligne', 0 => 'En attente', 1 => 'En ligne']); $formulaire->addElement('textarea' , 'patterns' , 'Patterns URL'); @@ -102,7 +102,7 @@ $feuille->image_alt = $formulaire->exportValue('image_alt'); $feuille->position = $formulaire->exportValue('position'); $date = $formulaire->exportValue('date'); - $feuille->date = mktime(0, 0, 0, (int) $date['M'], (int) $date['d'], (int) $date['Y']); + $feuille->date = (new \DateTime($date))->getTimestamp(); $feuille->etat = $formulaire->exportValue('etat'); $feuille->patterns = $formulaire->exportValue('patterns'); diff --git a/htdocs/templates/administration/compta_conf_menu.html b/htdocs/templates/administration/compta_conf_menu.html deleted file mode 100644 index 5b6ffbf01..000000000 --- a/htdocs/templates/administration/compta_conf_menu.html +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/patches/znk3r-html-quickform-html-quickform-date-php.patch b/patches/znk3r-html-quickform-html-quickform-date-php.patch index 6a35addd5..2bb8f15f8 100644 --- a/patches/znk3r-html-quickform-html-quickform-date-php.patch +++ b/patches/znk3r-html-quickform-html-quickform-date-php.patch @@ -1,6 +1,52 @@ ---- /dev/null -+++ ../HTML/QuickForm/date.php -@@ -317,7 +317,7 @@ +diff --git i/HTML/QuickForm/date.php w/HTML/QuickForm/date.php +index fbe7f71..fcba67c 100644 +--- i/HTML/QuickForm/date.php ++++ w/HTML/QuickForm/date.php +@@ -51,7 +51,8 @@ class HTML_QuickForm_date extends HTML_QuickForm_group + 'addEmptyOption' => false, + 'emptyOptionValue' => '', + 'emptyOptionText' => ' ', +- 'optionIncrement' => array('i' => 1, 's' => 1) ++ 'optionIncrement' => array('i' => 1, 's' => 1), ++ 'singleInput' => false, + ); + + /** +@@ -311,13 +312,41 @@ class HTML_QuickForm_date extends HTML_QuickForm_group + // {{{ _createElements() + + function _createElements() ++ { ++ if ($this->_options['singleInput']) { ++ $this->createNativeElement(); ++ } else { ++ $this->createSelectElements(); ++ } ++ } ++ ++ ++ function createNativeElement() ++ { ++ if (isset($this->_options['format']) && str_contains($this->_options['format'], 'H:i')) { ++ $this->_attributes['type'] = 'datetime-local'; ++ } else { ++ $this->_attributes['type'] = 'date'; ++ } ++ if (isset($this->_options['minYear'])) { ++ $date = DateTime::createFromFormat('Y-m-d', $this->_options['minYear'].'-01-01'); ++ $this->_attributes['min'] = $date->format('Y-m-d'); ++ } ++ if (isset($this->_options['maxYear'])) { ++ $date = DateTime::createFromFormat('Y-m-d', $this->_options['maxYear'].'-12-31'); ++ $this->_attributes['max'] = $date->format('Y-m-d'); ++ } ++ $this->_elements[] = new HTML_QuickForm_input(null, null, $this->getAttributes()); ++ } ++ ++ function createSelectElements() + { + $this->_separator = $this->_elements = array(); + $separator = ''; $locale = $this->_locale[$this->_options['language']]; $backslash = false; for ($i = 0, $length = strlen($this->_options['format']); $i < $length; $i++) { @@ -9,3 +55,47 @@ if ($backslash) { $backslash = false; $separator .= $sign; +@@ -463,6 +492,33 @@ class HTML_QuickForm_date extends HTML_QuickForm_group + // {{{ setValue() + + function setValue($value) ++ { ++ if ($this->_options['singleInput']) { ++ $value = $this->setNativeValue($value); ++ } else { ++ $value = $this->setSelectValue($value); ++ } ++ ++ parent::setValue($value); ++ } ++ ++ public function setNativeValue($value) ++ { ++ $dateFormat = str_contains($this->_options['format'], 'H:i') ? 'Y-m-d\TH:i' : 'Y-m-d'; ++ $timeZone = new \DateTimeZone("Europe/Paris"); ++ if (is_numeric($value)) { ++ $date = new DateTime('@' . $value); ++ $date->setTimeZone($timeZone); ++ $value = $date->format($dateFormat); ++ } else { ++ $date = new DateTime($value); ++ $value = $date->format($dateFormat); ++ } ++ ++ return $value; ++ } ++ ++ public function setSelectValue($value) + { + if (empty($value)) { + $value = array(); +@@ -493,7 +549,8 @@ class HTML_QuickForm_date extends HTML_QuickForm_group + } else { + $value = array_map(array($this, '_trimLeadingZeros'), $value); + } +- parent::setValue($value); ++ ++ return $value; + } + + // }}} diff --git a/sources/Afup/Comptabilite/Facture.php b/sources/Afup/Comptabilite/Facture.php index 9c1a58ef2..86b65de53 100644 --- a/sources/Afup/Comptabilite/Facture.php +++ b/sources/Afup/Comptabilite/Facture.php @@ -218,7 +218,6 @@ public function modifier($id, $date_devis, $societe, $service, $adresse, $code_p $requete .= 'ref_clt2=' . $this->_bdd->echapper($ref_clt2) . ','; $requete .= 'ref_clt3=' . $this->_bdd->echapper($ref_clt3) . ', '; $requete .= 'etat_paiement=' . $this->_bdd->echapper($etat_paiement) . ', '; - $requete .= 'date_paiement=' . $this->_bdd->echapper($date_paiement) . ', '; $requete .= 'numero_devis=' . $this->_bdd->echapper($numero_devis) . ', '; $requete .= 'devise_facture=' . $this->_bdd->echapper($devise) . ' '; @@ -226,6 +225,10 @@ public function modifier($id, $date_devis, $societe, $service, $adresse, $code_p $requete .= ', '; $requete .= 'numero_facture=' . $this->_bdd->echapper($numero_facture) . ' '; } + if ($date_paiement) { + $requete .= ', '; + $requete .= 'date_paiement=' . $this->_bdd->echapper($date_paiement) . ' '; + } $requete .= 'WHERE '; $requete .= 'id=' . $this->_bdd->echapper($id) . ' '; diff --git a/tests/behat/bootstrap/FeatureContext.php b/tests/behat/bootstrap/FeatureContext.php index 6d179985e..a0946a922 100644 --- a/tests/behat/bootstrap/FeatureContext.php +++ b/tests/behat/bootstrap/FeatureContext.php @@ -628,4 +628,15 @@ public function assertDownloadedFile(string $filename): void } } + + #[When('/^(?:|I )change time of "(?P(?:[^"]|\\")*)" with "(?P(?:[^"]|\\")*)"$/')] + #[When('/^(?:|I )change "(?P(?:[^"]|\\")*)" with time "(?P(?:[^"]|\\")*)"$/')] + public function changeTimeOnDate(string $field, string $value): void + { + $input = $this->minkContext->getSession()->getPage() + ->find('css', 'input[name="' . $field . '"]'); + if ($input) { + $input->setValue(preg_replace('/T([0-9:]+)/', $value, $input->getValue())); + } + } } diff --git a/tests/behat/features/Admin/AdminPersonnesMoralesCotisations.feature b/tests/behat/features/Admin/AdminPersonnesMoralesCotisations.feature index f16edd39c..feddbeb06 100644 --- a/tests/behat/features/Admin/AdminPersonnesMoralesCotisations.feature +++ b/tests/behat/features/Admin/AdminPersonnesMoralesCotisations.feature @@ -37,12 +37,8 @@ Feature: Administration - Partie Personnes morales - cotisations And I select "0" from "type_reglement" When I fill in "informations_reglement" with "notes du réglement" When I fill in "reference_client" with "42" - And I select "05" from "date_debut[d]" - And I select "3" from "date_debut[F]" - And I select "2022" from "date_debut[Y]" - And I select "05" from "date_fin[d]" - And I select "3" from "date_fin[F]" - And I select "2023" from "date_fin[Y]" + And I fill in "date_debut" with "2022-03-05" + And I fill in "date_fin" with "2023-03-05" And I press "Ajouter" Then I should see "La cotisation jusqu'au 05 March 2023 pour MyCorp a bien été ajoutée" Then I should see "05/03/22" diff --git a/tests/behat/features/Admin/Events/Conferences.feature b/tests/behat/features/Admin/Events/Conferences.feature index 937c16b96..68a11c976 100644 --- a/tests/behat/features/Admin/Events/Conferences.feature +++ b/tests/behat/features/Admin/Events/Conferences.feature @@ -23,9 +23,7 @@ Feature: Administration - Évènements - Conférences Then the ".content h2" element should contain "Conférence" And I follow "Ajouter" Then the ".content h2" element should contain "Ajouter une conférence pour le forum" - Then I select "1" from "date_soumission[d]" - Then I select "1" from "date_soumission[M]" - Then I select "2022" from "date_soumission[Y]" + Then I fill in "date_soumission" with "2022-01-01" Then I fill in "titre" with "Une autre conference" Then I fill in "genre" with "2" Then I fill in "plannifie" with "1" @@ -44,9 +42,7 @@ Feature: Administration - Évènements - Conférences And I follow "Conférences" Then the ".content h2" element should contain "Conférence" When I follow the button of tooltip "Modifier la conférence Jouons tous ensemble à un petit jeu" - Then I select "31" from "date_soumission[d]" - Then I select "12" from "date_soumission[M]" - Then I select "2022" from "date_soumission[Y]" + Then I fill in "date_soumission" with "2022-12-31" Then I fill in "titre" with "Jouons à un jeu" Then I fill in "genre" with "4" Then I fill in "plannifie" with "1" @@ -77,4 +73,4 @@ Feature: Administration - Évènements - Conférences And I follow "Export joindIn" Then the response status code should be 200 And the response header "Content-disposition" should match '#^attachment; filename=talks_passed_([0-9]*)-([0-9]*)_joind_in.csv#' - And the downloaded file should be the same as "admin_talks_export_joind_in.csv" \ No newline at end of file + And the downloaded file should be the same as "admin_talks_export_joind_in.csv" diff --git a/tests/behat/features/Admin/Events/Planning.feature b/tests/behat/features/Admin/Events/Planning.feature index ad6a6ef68..f8b47a3a4 100644 --- a/tests/behat/features/Admin/Events/Planning.feature +++ b/tests/behat/features/Admin/Events/Planning.feature @@ -13,10 +13,8 @@ Feature: Administration - Évènements - Planning des sessions # modifier la programmation la session When I follow "Modifier la session Jouons tous ensemble à un petit jeu" Then I should see "Modifier les horaires d'une session pour le forum" - And I select "10" from "debut[H]" - And I select "30" from "debut[i]" - And I select "11" from "fin[H]" - And I select "30" from "fin[i]" + When I change time of "debut" with "10:30" + When I change time of "fin" with "11:30" When I fill in "joindin" with "" And I press "Soumettre" Then I should see "Le planning de la session a été modifiée" diff --git a/tests/behat/features/Admin/Tresorerie/Journal.feature b/tests/behat/features/Admin/Tresorerie/Journal.feature index 7e7bf4ccf..7ebfdfe3f 100644 --- a/tests/behat/features/Admin/Tresorerie/Journal.feature +++ b/tests/behat/features/Admin/Tresorerie/Journal.feature @@ -21,8 +21,7 @@ Feature: Administration - Trésorerie - Journal And I select "1" from "idoperation" And I select "1" from "idcompte" And I select "5" from "idevenement" - And I select "1" from "date_saisie[d]" - And I select "1" from "date_saisie[F]" + And I fill in "date_saisie" with "2025-01-01" And I select "26" from "idcategorie" And I fill in "nom_frs" with "Fournisseur" And I fill in "tva_intra" with "FR4412345" @@ -48,8 +47,7 @@ Feature: Administration - Trésorerie - Journal And I select "2" from "idoperation" And I select "1" from "idcompte" And I select "5" from "idevenement" - And I select "2" from "date_saisie[d]" - And I select "1" from "date_saisie[F]" + And I fill in "date_saisie" with "2025-01-02" And I select "26" from "idcategorie" And I fill in "nom_frs" with "Fournisseur" And I fill in "tva_intra" with "FR6612345"