facturation: générer un avoir à la clôture d'une facture, si elle est négative (#89810) #188
No reviewers
Labels
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: entrouvert/lingo#188
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/89810-invoicing-credit"
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?
WIP: facturation: générer un avoir à la clôture d'une facture, si elle est négative (#89810)to facturation: générer un avoir à la clôture d'une facture, si elle est négative (#89810)Je commence à relire.
Quelques trucs vus au passage et une interrogation de ma part.
Du détail, mais je changerais le message de 0007 (
73f2cafd40
) pource qui ferait que ce ne serait plus le seul message de commit sans verbe de la série (d’autant plus que “credit” c’est aussi un verbe et donc ça porte un peu à confusion en l’état).
@ -404,2 +405,3 @@
try:
credit = Credit.objects.get(uuid=value, regie=self.regie)
credit = Credit.objects.get(
Q(pool__isnull=True) | Q(pool__campaign__finalized=True),
J’ai du mal à me représenter ce qui signifie cette contrainte de ne chercher que parmi les crédits soit rattachés à aucun pool, soit les crédits rattachés à un pool dont la campagne de paiement est terminée.
On a trois types d'avoirs:
Pour les cas 2 et 3, les avoirs sont détachés des campagnes, autonomes, et sont consommables dès leur émission.
Pour le cas 1, les avoirs sont générés à une étape "finalisation" de la campagne, comme les factures définitives, mais sont encore annulables, par annulation du pool définitif. Puis le régisseur peut re-finaliser la campagne et re-générer factures et avoirs.
Il ne faut pas que les avoirs soient consommés, ni publiés, alors qu'ils sont dans cet état transitoire: attachés à une campagne non terminée.
Hmm ok c’est plus clair pour moi, merci pour l’explication.
@ -2259,0 +2277,4 @@
assert credit.payer_address == invoice.payer_address
assert credit.total_amount == -invoice.total_amount == 3
assert credit.number == 1
assert credit.formatted_number == 'A%02d-%s-0000001' % (regie.pk, today.strftime('%y-%m'))
Hmm, il n’y a pas des cas où la différence de tz-awareness entre
datetime
etdjango.utils.timezone
fait que la comparaison du jour risque de casser dans les tests ?yes, sans doute, mais il y a du datetime.date.today déjà un peu partout dans les tests, je vais faire un ticket pour corriger ça de manière plus globale, ok ?
Ouai peut-être à l’occasion si ça casse des tests (?)
(Ah, c’est #90048, déjà codé et déjà validé par ailleurs, top !)
@ -329,2 +350,4 @@
unit_amount=1,
)
other_credit = Credit.objects.create(
date_publication=datetime.date.today() + datetime.timedelta(days=1), # not publicated
(Du détail mais si tu as le courage de
s/not publicated/not published/
sur les quatre occurrences dans cette PR, ce premier étant une forme archaïque dont on risque de ne pas se rappeler si on recherche ce commentaire dans les tests.)ok :)
(corrigé sans fixup)
Yes, merci !
3b3dcf1c7f
to363c2bade0
Fait
Vu, merci.
Ack.
363c2bade0
to976a33a5ef