Projet

Général

Profil

Development #14519

cellule de paiement TIPI

Ajouté par Serghei Mihai (congés, retour 15/05) il y a plus de 7 ans. Mis à jour il y a environ 7 ans.

Statut:
Fermé
Priorité:
Haut
Version cible:
-
Début:
06 janvier 2017
Echéance:
02 mars 2017
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Avec saisie du numéro, montant de la facture, le courriel prerempli avec celui de l'usager si connecté.
Eventuellement avec la liste deroulante des regies s'il y en a plusieurs.


Fichiers

0001-tipi-payment-form-cell-14519.patch (12,9 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 02 mars 2017 10:38
pesv2.png (13,4 ko) pesv2.png Serghei Mihai (congés, retour 15/05), 02 mars 2017 10:39
rolmre.png (13,4 ko) rolmre.png Serghei Mihai (congés, retour 15/05), 02 mars 2017 10:39
0001-tipi-payment-form-cell-14519.patch (14,9 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 02 mars 2017 11:49
0001-cells-style-for-tipi-payment-form-14519.patch (903 octets) 0001-cells-style-for-tipi-payment-form-14519.patch Serghei Mihai (congés, retour 15/05), 02 mars 2017 16:20
0001-tipi-payment-form-cell-14519.patch (13,9 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 02 mars 2017 16:20
0001-tipi-payment-form-cell-14519.patch (13,6 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 02 mars 2017 16:49
reference_facture_tipi.png (25,6 ko) reference_facture_tipi.png Serghei Mihai (congés, retour 15/05), 03 mars 2017 10:48
tipi_cell.png (11,8 ko) tipi_cell.png Serghei Mihai (congés, retour 15/05), 03 mars 2017 11:55
0001-tipi-payment-form-cell-14519.patch (13,1 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 03 mars 2017 12:10
0001-tipi-payment-form-cell-14519.patch (13,5 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 03 mars 2017 14:57
tipi_popup_warning.png (18,7 ko) tipi_popup_warning.png Serghei Mihai (congés, retour 15/05), 03 mars 2017 14:58
0001-tipi-payment-form-cell-14519.patch (13,4 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 03 mars 2017 16:00
0001-tipi-payment-form-cell-14519.patch (13,5 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 13 mars 2017 11:02
0001-tipi-payment-form-cell-14519.patch (14 ko) 0001-tipi-payment-form-cell-14519.patch Serghei Mihai (congés, retour 15/05), 14 mars 2017 15:59

Demandes liées

Lié à Intégrations graphiques Publik - Bug #15222: styles pour la cellule de paiement TIPIFermé03 mars 2017

Actions

Révisions associées

Révision e202e287 (diff)
Ajouté par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

tipi form: fix control protocol default id (#14519)

Tests fixed.

Historique

#2

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Echéance mis à 02 mars 2017
  • Assigné à mis à Serghei Mihai (congés, retour 15/05)
#3

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Priorité changé de Normal à Haut
#4

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Premier jet avec la prise en compte des protocoles de contrôle de la référence de la dette: PESv2 et ROLMRE, inspiré de l'existant à Montpellier.
Il manque les tests. Je les rajoute.

#5

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Avec des tests ainsi que des valeurs par défaut définies pour quelques paramètres TIPI.

#6

Mis à jour par Frédéric Péters il y a environ 7 ans

Ça n'a rien à faire dans combo/data/, trop spécifique. Comme c'est du paiement, je verrais plutôt ça dans lingo.

('auth', '0006_require_contenttypes_0002'), → ça oblige django 1.8, à éviter.

combo/public/static/css/tipi.css, tas de règles inutiles; on doit déjà avoir par ailleurs le style à appliquer sur les champs email, sur les erreurs, etc.

Le js, j'imagine copié d'un truc jamais relu, un peu d'esprit critique dessus avant de le soumettre ?

        <input type='text' id='exer' maxlength=4 size=4 tabindex="2" onkeyup="checkLen(this, this.value)" placeholder="2017" />

Sur une même balise avoir des attributs avec des single quotes, des double quotes, et rien du tout, un record ?

regies = models.TextField(_('Regies'), help_text=_('multiline, with "regie identifier" per line'))

Pas vraiment compréhensible, sur chacune des lignes il faut inclure des guillemets ? Pourquoi pas simplement avoir une ligne avec les identifiants séparés par des virgules ?

#7

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Frédéric Péters a écrit :

Ça n'a rien à faire dans combo/data/, trop spécifique. Comme c'est du paiement, je verrais plutôt ça dans lingo.

Ok.

('auth', '0006_require_contenttypes_0002'), → ça oblige django 1.8, à éviter.

Ok.

combo/public/static/css/tipi.css, tas de règles inutiles; on doit déjà avoir par ailleurs le style à appliquer sur les champs email, sur les erreurs, etc.

Oui, je viens de le nettoyer et rajouter la classe pour la cellule dans publik-base-theme.

Le js, j'imagine copié d'un truc jamais relu, un peu d'esprit critique dessus avant de le soumettre ?

Améliorations avec jquery.

Pas vraiment compréhensible, sur chacune des lignes il faut inclure des guillemets ? Pourquoi pas simplement avoir une ligne avec les identifiants séparés par des virgules ?

En effet.

#8

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Fichier 0001-tipi-payment-form-cell-14519.patch ajouté

En réflechissant un peu je me dis qu'il n'est pas nécessaire de bloquer le div de la cellule pendant que la popup est ouvert. Il suffit de desactiver le bouton de payment.
Patch à jour.

#9

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Fichier 0001-tipi-payment-form-cell-14519.patch supprimé
#10

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Desactivation de tous les elements du formulaire quand la popup TIPI est ouverte.

#11

Mis à jour par Frédéric Péters il y a environ 7 ans

<option value="{{ id }}">{{ id }}</option>, c'est bien moche de demander à l'usager de choisir dans des identifiants, il n'y a pas moyen d'associer un libellé à ceux-ci ?

<input type="text" id="exer" maxlength="4" size="4" placeholder="2017" /> - l'idée c'est un commit en 2018 pour changer ça ?

return des point-virgules, please.

var re = /^(([^<>()[\]\\.,;:\s\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; rly? on ne peut pas juste se dire que type=email suffit ?

Plutôt qu'avoir des libellés et des champs mal alignées, passer les champs à la ligne, comme on le fait généralement ? Notre balisage pour les formulaires, c'est .as_p(), ici ça ressemble plutôt à du .as_ul(). (→ reste du css à virer)

Je préférerais que les erreurs soient cachées par défaut, plutôt qu'attendre que le js le fasse.

Your email : on évite de préfixer par "Your " les différents champs.

Aussi, mais je laisse pisser pour cette fois, l'utilisation de placeholder, ce n'est pas terrible vu que ça s'efface dès que tu commences à taper, c'est mieux d'avoir un affichage permanent sous le champ.

name@domain.com pour les exemples, il y a des domaines dédiés.

onclick, plutôt avoir le js qui fasse un on('submit', ... sur le formulaire. Et on a commencé à utiliser <button> pour les boutons.

#12

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Frédéric Péters a écrit :

<option value="{{ id }}">{{ id }}</option>, c'est bien moche de demander à l'usager de choisir dans des identifiants, il n'y a pas moyen d'associer un libellé à ceux-ci ?

Généralement l'usager saisit la référence de paiement TIPI depuis sa facture ou l'identifiant de la collectivité est exprimé sous forme d'un chiffre (exemple dans la capture jointe). C'est plus facile pour lui de voir les identifiants tels quels qu'avoir des libellés. Pour mémo, à Montpellier il nous a été demandé d'afficher aussi les identifiants des collectivités directement.

<input type="text" id="exer" maxlength="4" size="4" placeholder="2017" /> - l'idée c'est un commit en 2018 pour changer

Non, l'idée était d'indiquer une année tout simplement. Un affichage sous le champ du format attendu serait mieux.

Je refais le patch pour prendre en compte les remarques.

#13

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Frédéric Péters a écrit :

Plutôt qu'avoir des libellés et des champs mal alignées, passer les champs à la ligne, comme on le fait généralement ? Notre balisage pour les formulaires, c'est .as_p(), ici ça ressemble plutôt à du .as_ul(). (→ reste du css à virer)

Oui, c'est mieux mais il manque des styles pour les formulaires en front.
Il faudrait en définir dans publik-base-theme, je crois.

Aussi, mais je laisse pisser pour cette fois, l'utilisation de placeholder, ce n'est pas terrible vu que ça s'efface dès que tu commences à taper, c'est mieux d'avoir un affichage permanent sous le champ.

Bon, finalement je laisse les placeholders.

name@domain.com pour les exemples, il y a des domaines dédiés.

onclick, plutôt avoir le js qui fasse un on('submit', ... sur le formulaire. Et on a commencé à utiliser <button> pour les boutons.

Ici je préfere garder le onsubmit sur le form, au lieu de le faire dans jquery car je passe dans le template des paramètres qui sont envoyés à la fonction call_tipi.

#14

Mis à jour par Frédéric Péters il y a environ 7 ans

Oui, c'est mieux mais il manque des styles pour les formulaires en front.

Ne pas hésiter à créer un ticket dans publik-base-theme disant ce qu'il manque.

Ici je préfere garder le onsubmit sur le form, au lieu de le faire dans jquery car je passe dans le template des paramètres qui sont envoyés à la fonction call_tipi.

Je trouve ça moche et bien mieux si ces paramètres étaient simplement posés sous forme de data-url, data-saisie, etc. Ça permettrait aussi d'éviter un pesv2|lower compliqué à comprendre.

combo/public/static/css/tipi.css, taper le style="display: none" directement dans l'html, pour gagner une requête.

$('#' + id + '_error').toggle(); (et les autres .toggle()); comme l'idée est d'afficher, .show() me semble plus lisible.

if(!valid) espace. À d'autres endroits aussi (if(popup.closed)).

popup = window.open ; si Firefox bloque l'ouverture de la popup, ça sera null. Et checkpopup éclatera. Si popup est null, je ne désactiverais pas les champs, je ne lancerais pas le setInterval, j'afficherais un message à l'usager pour l'avertir.

#15

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Lié à Bug #15222: styles pour la cellule de paiement TIPI ajouté
#16

Mis à jour par Frédéric Péters il y a environ 7 ans

{% if title %}<h2>{{ title }}</h2>{% endif %}

J'incluerais tout le temps un titre, c'est compliqué de styler de manière correcte sinon. Et taper le contenu dans un <div>, et ça devrait régler le problème de padding mentionné dans #15222.

#18

Mis à jour par Frédéric Péters il y a environ 7 ans

→ "Your browser is blocking popups but they are required to start the payment, you should make sure they are allowed for this site.", genre.

saisie = models.CharField(_('Saisie'), choices=TIPI_SAISIES, max_length=1, default='M')

Il y a bien sûr le "Saisie" qui est du français qu'on demander à traduire; mais le sens de ce paramètre même m'échappe.

#19

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Ce paramétre saisie a toujours la valeur M (manuel) pour un formulaire de paiement auquel l'usager transmet les références de la facture à payer.
En dehors de cela il y a également le mode test saisie=T ou n'importe quelle valeur peut être saisie dans la référence de la facture: TIPI acceptera et simulera le paiement.
Et la valeur saisie=X est nécessaire uniquement pour l'activation des paiements.

Je veux donc avoir les 3 modes, pour pouvoir l'utiliser en mode test (T)sur la recette et M sur la prod.

#20

Mis à jour par Frédéric Péters il y a environ 7 ans

Ce paramétre saisie a toujours la valeur M (manuel) pour un formulaire de paiement auquel l'usager transmet les références de la facture à payer.

Le template présent, il gère uniquement des formulaires de paiement en ligne; ce serait donc toujours cette valeur ?

En dehors de cela il y a également le mode test saisie=T ou n'importe quelle valeur peut être saisie dans la référence de la facture: TIPI acceptera et simulera le paiement.

Cela même avec l'URL b'https://www.tipi.budget.gouv.fr/tpa/paiement.web de TIPI ? Si c'est le cas, pourquoi l'URL est un paramètre ? Et si le paramétrage est donc la présence d'un mode de test, ça m'irait mieux d'avoir une case à cocher "Utiliser le mode test de TIPI", genre.

Et la valeur saisie=X est nécessaire uniquement pour l'activation des paiements.

Pas la moindre idée de ce que ça veut dire.

#21

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Frédéric Péters a écrit :

Cela même avec l'URL b'https://www.tipi.budget.gouv.fr/tpa/paiement.web de TIPI ? Si c'est le cas, pourquoi l'URL est un paramètre ? Et si le paramétrage est donc la présence d'un mode de test, ça m'irait mieux d'avoir une case à cocher "Utiliser le mode test de TIPI", genre.

Oui, le mode test fonctionne avec la même URL. Je l'ai mis en paramètre car certaines villes utilisent d'autres adresses qui semblent être des alias vers le même système de paiement. A Clisson c'est par exemple: https://www.jepaiemesserviceslocaux.dgfip.finances.gouv.fr/tpa/paiement.web

Et la valeur saisie=X est nécessaire uniquement pour l'activation des paiements.

Pas la moindre idée de ce que ça veut dire.

C'est lié au fonctionnement de TIPI, laissons tomber pour l'instant.

#24

Mis à jour par Frédéric Péters il y a environ 7 ans

var popup;
var timer;

Vu le côté très générique, taper ça dans un namespace, ou nommer de manière vraiment plus précise, pour éviter les clashs lors d'intégrations utilisant du js extérieur. Pareil pour les fonctions, taper le maximum dans le namespace ouvert par $(function() {

    def is_visible(self, user=None):
        return True

Il faut suivre le paramétrage fait par l'admin, i.e. je virerais ce is_visible().

#26

Mis à jour par Benjamin Dauvergne il y a environ 7 ans

Je ne vois pas comment on peut avoir le mode de saisie X qui permet de passer en prod ? Ne faudrait-il pas avoir un menu avec choix de saisie, prod, test et validation dans la cellule ?

#27

Mis à jour par Frédéric Péters il y a environ 7 ans

Et la valeur saisie=X est nécessaire uniquement pour l'activation des paiements.

Pas la moindre idée de ce que ça veut dire.

Peut-être qu'il fallait lire "validation" plutôt que "activation", et même encore pour moi là ça n'aurait pas été clair.

Bref, s'il y a trois modes qui ont tous un sens, faut juste de bien meilleurs libellés à ce qui était mis avant :

TIPI_SAISIES = (
    ('M', _('Manual')),
    ('T', _('Test')),
    ('X', _('Activation')),
)

(genre "environnement TIPI", "production" / "validation" / "test") ?

#28

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

L'activation du mode production (avec le flag X) peut se faire manuellement, donc pas besoin de la cellule pour ça.
Comme discuté plus haut, on utilise par défaut le mode "manuel" M avec le mode "test" T activable via une option.

#29

Mis à jour par Frédéric Péters il y a environ 7 ans

Il y a encore mille trucs à dire sur le js,

  • commencer par deux lignes vides ?
  • ajouter des commentaires pour qu'on comprenne un peu ce qui doit se passer.
  • for (var i=0;i<element.attr('maxLength')-value.length;i++) espaces.
  • etc.

Ce code reste pour moi bien trop moche mais on verra à corriger ça un jour de pluie, ok.

(regret aussi pour les id arbitraires pour control_protocol, je pensais qu'ils venaient de tipi mais même pas, c'est juste nous qui nous mettons des codes sans raison)

#30

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

Avec les remarques prises en compte.

J'ai nommé les ids pour la référence de la dette en fonction du nom qui leur est attribué par le procotole de control.
Je ne connais pas concrètement leur signification mais ça me semble plus facile à faire correspondre à la doc: https://dev.entrouvert.org/attachments/download/3859/Guide_de_mise_en_oeuvre_TIPI_site_Collectivite.pdf (page 27)

#31

Mis à jour par Frédéric Péters il y a environ 7 ans

Je parlais de :

TIPI_CONTROL_PROCOTOLS = (
    ('1', _('Indigo/PES v2')),
    ('2', _('ROLMRE')),
)

qui fait que

context['pesv2'] = (self.control_protocol == '1')

alors que ça pourrait être

context['pesv2'] = (self.control_protocol == 'pesv2')
.

Ce code reste pour moi bien trop moche mais on verra à corriger ça un jour de pluie, ok.

C'était pour dire que j'avais plus trop envie de regarder ce js, que c'était ack ainsi, sans tester. (

#32

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Statut changé de En cours à Résolu (à déployer)
commit 970fadf03bdc99518503d3868b51105140cb8f1b
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Tue Feb 28 11:59:36 2017 +0100

    tipi payment form cell (#14519)

#33

Mis à jour par Frédéric Péters il y a environ 7 ans

Paf le jenkins.

#34

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Statut changé de Résolu (à déployer) à En cours
#35

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Statut changé de En cours à Résolu (à déployer)

Corrigé et poussé:

commit e202e28792df8b3a9359ad888b00b02b82e2c93e
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Tue Mar 14 16:46:05 2017 +0100

    tipi form: fix control protocol default id (#14519)

    Tests fixed.

#36

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF