facturation: pouvoir annuler un règlement (#88592) #176
No reviewers
Labels
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: entrouvert/lingo#176
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/88592-invoicing-payment-cancel"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ed86f60770
to87b5933109
@ -0,0 +17,4 @@
<div class="section">
<div class="pk-tabs">
<div class="pk-tabs--tab-list" role="tablist">
<button aria-controls="panel-payment" aria-selected="true" id="tab-payment" role="tab" tabindex="0">{% trans "Payments" %}</button>
dans l'idée d'avoir aussi des motifs d'annulation pour les factures, j'ai fait un onglet "payments" pour avoir un onglet "invoices" dans un futur ticket
WIP: facturation: pouvoir annuler un règlement (#88592)to facturation: pouvoir annuler un règlement (#88592)(Je commence à relire.)
Quelques petit trucs ramassés au passage, du détail vraiment.
J’ai fait une remarque sur les libellés
'Cancelled at'
qui devraient être plutôt'Cancelled on'
, je te laisse voir si par souci de cohérence on en profite pour renommer le champ de modèlecancelled_on
lui aussi.@ -1317,0 +1321,4 @@
class Meta:
ordering = ['label']
unique_together = ['slug']
J’imagine qu’il y a une bonne raison pour ne pas avoir posé cette contrainte d’unicité dans le champ directement (genre avec un
unique=True
à la définition du champ) mais je ne saisis pas laquelle, je viens bien la savoir ne serait-ce que pour ma propre édification personnelle stp :)non c'est une erreur, merci :) (fixup)
@ -1433,0 +1463,4 @@
result = []
if not self.cancelled_at:
return result
result.append((_('Cancelled at'), self.cancelled_at.strftime('%d/%m/%Y %H:%M')))
Pareil ici, plutôt
'Cancelled on'
.fixup pour ça
@ -70,0 +86,4 @@
<tr class="line {% if forloop.last %}last-line{% endif %}" data-related-invoicing-element-id="{{ payment.pk }}" style="display: none;">
<td colspan="2"></td>
<td class="payment-details" colspan="3">
<i>{% blocktrans %}{{ label }}:{% endblocktrans %} {{ value }}</i>
Du détail i18n, mais je mettrais tout le
{{ label }}: {{ value }}
dans le bloc internationalisé (genre il y a des langues comme le grec ou bien certaines langues slaves où les deux points n’ont pas cette signification descriptive, et où il faudrait traduire le bloc entier d’une façon différente).Alors il faudrait reprendre les trads de toutes les briques, on a souvent des chaînes qui terminent par ":".
Oui je sais bien, je lutte contre ça mais tu as raison, ce bateau a déjà pris les voiles :)
(pour tout te dire il y a même des endroits dans les briques où c’est “internationalisé” en
{{ label }}{% trans ": " %}{{ value }}
🙃).@ -0,0 +27,4 @@
def get_context_data(self, **kwargs):
kwargs.update(
{
'payment_reason_list': PaymentCancellationReason.objects.all(),
Question d’interface utilisateur, peut-être un
order_by('-disabled')
ici, histoire, dans le rendu du gabarit, d’avoir les raisons actives apparaissant en premier, puis à la fin celles qui sont désactivées ?ok, je fais ça (fixup)
@ -0,0 +36,4 @@
reason_list = ReasonListView.as_view()
class PaymentReasonAddView(CreateView):
Pour quelle raison cette vue de création n’a-t-elle pas recours, comme la vue d’édition, à un formulaire, similaire ou identique au
PaymentCancellationReasonForm
, qui gérerait la prévention de doublons sur le slug ?le slug est automatiquement setté par la méthode save s'il n'est pas fourni
Ah oui ok j’avais loupé ça, merci.
@ -0,0 +65,4 @@
model = PaymentCancellationReason
def get_queryset(self):
return PaymentCancellationReason.objects.filter(payment__isnull=True)
J’ai peur qu’on perde des agents en route ici, qu’illes croient à un bug à ne pas voir apparaître ici la raison d’annulation qu’illes souhaitent supprimer, alors qu’en fait cette raison n’y apparaît pas car encore liée à un paiement.
Est-ce qu’on aurait pas intérêt, dans un autre ticket, à faire apparaître dans cet écran la liste des raisons encore actives et qui ne peuvent pas être supprimées ?
en fait on n'affiche pas le lien de suppression s'il existe des paiements liés à ce motif, c'est juste une protection
Ok, encore mieux, nickel, merci.
@ -634,0 +635,4 @@
]
+ [v for k, v in PAYMENT_INFO]
+ [
_('Cancelled at'),
Sur les libellés exposés dans l’UI, je dirais plutôt
Cancelled on
vu que c’est un datetime et pas juste un heure (à vue de nez “Cancelled on March 26th, 3:43p.m.” m’a l’air plus correct que avec “Cancelled at …”).fixup pour ça
dernier fixup: j'avais oublié de ne pas mettre les motifs disabled dans le select du formulaire d'annulation :)
Ok, j’ai vu tes modifs dans les !fixup à part, c’est bon pour moi. Ack.
d2d1918f5a
todefa13e032
defa13e032
to9417ab08e4