mirror of https://gitlab.crans.org/bde/nk20
Don't delete Sogé credits if the user don't have enough money on its note, stay positive :)
This commit is contained in:
parent
b23814aef0
commit
640f0f9a31
|
@ -240,7 +240,7 @@ class SogeCredit(models.Model):
|
|||
|
||||
@property
|
||||
def amount(self):
|
||||
return sum(transaction.quantity * transaction.amount for transaction in self.transactions.all())
|
||||
return sum(transaction.total for transaction in self.transactions.all())
|
||||
|
||||
def invalidate(self):
|
||||
"""
|
||||
|
@ -249,11 +249,14 @@ class SogeCredit(models.Model):
|
|||
"""
|
||||
if self.valid:
|
||||
self.credit_transaction.valid = False
|
||||
self.credit_transaction._force_save = True
|
||||
self.credit_transaction.save()
|
||||
self.credit_transaction._force_delete = True
|
||||
self.credit_transaction.delete()
|
||||
self.credit_transaction = None
|
||||
for transaction in self.transactions.all():
|
||||
transaction.valid = False
|
||||
transaction._force_save = True
|
||||
transaction.save()
|
||||
|
||||
def validate(self, force=False):
|
||||
|
@ -277,6 +280,7 @@ class SogeCredit(models.Model):
|
|||
|
||||
for transaction in self.transactions.all():
|
||||
transaction.valid = True
|
||||
transaction._force_save = True
|
||||
transaction.created_at = datetime.now()
|
||||
transaction.save()
|
||||
|
||||
|
@ -286,8 +290,15 @@ class SogeCredit(models.Model):
|
|||
Treasurers must know what they do, this is difficult to undo this operation.
|
||||
With Great Power Comes Great Responsibility...
|
||||
"""
|
||||
|
||||
total_fee = sum(transaction.total for transaction in self.transactions.all() if not transaction.valid)
|
||||
if self.user.note.balance < total_fee:
|
||||
raise ValidationError(_("This user doesn't have enough money to pay the memberships with its note. "
|
||||
"Please ask her/him to credit the note before invalidating this credit."))
|
||||
|
||||
self.invalidate()
|
||||
for transaction in self.transactions.all():
|
||||
transaction._force_save = True
|
||||
transaction.valid = True
|
||||
transaction.created_at = datetime.now()
|
||||
transaction.save()
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-22 03:07+0200\n"
|
||||
"POT-Creation-Date: 2020-04-22 03:51+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -83,8 +83,8 @@ msgid "type"
|
|||
msgstr ""
|
||||
|
||||
#: apps/activity/models.py:66 apps/logs/models.py:21 apps/member/models.py:225
|
||||
#: apps/note/models/notes.py:117 apps/treasury/models.py:220
|
||||
#: apps/wei/models.py:155 templates/treasury/sogecredit_detail.html:13
|
||||
#: apps/note/models/notes.py:117 apps/treasury/models.py:221
|
||||
#: apps/wei/models.py:155 templates/treasury/sogecredit_detail.html:14
|
||||
#: templates/wei/survey.html:16
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
|
@ -181,7 +181,7 @@ msgstr ""
|
|||
msgid "remove"
|
||||
msgstr ""
|
||||
|
||||
#: apps/activity/tables.py:75 apps/treasury/models.py:139
|
||||
#: apps/activity/tables.py:75 apps/treasury/models.py:140
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
|
@ -351,7 +351,7 @@ msgstr ""
|
|||
msgid "user profile"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:105 templates/member/club_info.html:51
|
||||
#: apps/member/models.py:105 templates/member/club_info.html:57
|
||||
#: templates/registration/future_profile_detail.html:22
|
||||
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
|
||||
msgid "email"
|
||||
|
@ -369,15 +369,15 @@ msgstr ""
|
|||
msgid "Uncheck if this club don't require memberships."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:127 templates/member/club_info.html:35
|
||||
#: apps/member/models.py:127 templates/member/club_info.html:41
|
||||
msgid "membership fee (paid students)"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:132 templates/member/club_info.html:38
|
||||
#: apps/member/models.py:132 templates/member/club_info.html:44
|
||||
msgid "membership fee (unpaid students)"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:138 templates/member/club_info.html:28
|
||||
#: apps/member/models.py:138 templates/member/club_info.html:33
|
||||
msgid "membership duration"
|
||||
msgstr ""
|
||||
|
||||
|
@ -385,7 +385,7 @@ msgstr ""
|
|||
msgid "The longest time (in days) a membership can last (NULL = infinite)."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:146 templates/member/club_info.html:22
|
||||
#: apps/member/models.py:146 templates/member/club_info.html:23
|
||||
msgid "membership start"
|
||||
msgstr ""
|
||||
|
||||
|
@ -393,7 +393,7 @@ msgstr ""
|
|||
msgid "How long after January 1st the members can renew their membership."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:154 templates/member/club_info.html:25
|
||||
#: apps/member/models.py:154 templates/member/club_info.html:28
|
||||
msgid "membership end"
|
||||
msgstr ""
|
||||
|
||||
|
@ -432,11 +432,11 @@ msgstr ""
|
|||
msgid "fee"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:268 apps/member/views.py:494 apps/wei/views.py:726
|
||||
#: apps/member/models.py:268 apps/member/views.py:505 apps/wei/views.py:727
|
||||
msgid "User is not a member of the parent club"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/models.py:278 apps/member/views.py:503
|
||||
#: apps/member/models.py:278 apps/member/views.py:514
|
||||
msgid "User is already a member of the club"
|
||||
msgstr ""
|
||||
|
||||
|
@ -471,25 +471,25 @@ msgstr ""
|
|||
msgid "An alias with a similar name already exists."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/views.py:180
|
||||
#: apps/member/views.py:181
|
||||
msgid "Search user"
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/views.py:489 apps/wei/views.py:717
|
||||
#: apps/member/views.py:500 apps/wei/views.py:718
|
||||
msgid ""
|
||||
"This user don't have enough money to join this club, and can't have a "
|
||||
"negative balance."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/views.py:507
|
||||
#: apps/member/views.py:518
|
||||
msgid "The membership must start after {:%m-%d-%Y}."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/views.py:512
|
||||
#: apps/member/views.py:523
|
||||
msgid "The membership must begin before {:%m-%d-%Y}."
|
||||
msgstr ""
|
||||
|
||||
#: apps/member/views.py:522 apps/member/views.py:524 apps/member/views.py:526
|
||||
#: apps/member/views.py:533 apps/member/views.py:535 apps/member/views.py:537
|
||||
#: apps/registration/views.py:288 apps/registration/views.py:290
|
||||
#: apps/registration/views.py:292
|
||||
msgid "This field is required."
|
||||
|
@ -596,7 +596,7 @@ msgstr ""
|
|||
msgid "alias"
|
||||
msgstr ""
|
||||
|
||||
#: apps/note/models/notes.py:211 templates/member/club_info.html:48
|
||||
#: apps/note/models/notes.py:211 templates/member/club_info.html:54
|
||||
#: templates/member/profile_info.html:36 templates/wei/weiclub_info.html:48
|
||||
msgid "aliases"
|
||||
msgstr ""
|
||||
|
@ -667,7 +667,7 @@ msgid "transaction"
|
|||
msgstr ""
|
||||
|
||||
#: apps/note/models/transactions.py:154
|
||||
#: templates/treasury/sogecredit_detail.html:16
|
||||
#: templates/treasury/sogecredit_detail.html:22
|
||||
msgid "transactions"
|
||||
msgstr ""
|
||||
|
||||
|
@ -704,7 +704,7 @@ msgstr ""
|
|||
msgid "membership transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/note/models/transactions.py:283 apps/treasury/models.py:226
|
||||
#: apps/note/models/transactions.py:283 apps/treasury/models.py:227
|
||||
msgid "membership transactions"
|
||||
msgstr ""
|
||||
|
||||
|
@ -721,13 +721,13 @@ msgid "No reason specified"
|
|||
msgstr ""
|
||||
|
||||
#: apps/note/tables.py:122 apps/note/tables.py:151 apps/wei/tables.py:66
|
||||
#: templates/treasury/sogecredit_detail.html:45
|
||||
#: templates/treasury/sogecredit_detail.html:59
|
||||
#: templates/wei/weiregistration_confirm_delete.html:32
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: apps/note/tables.py:146 apps/wei/tables.py:42 apps/wei/tables.py:43
|
||||
#: templates/member/club_info.html:60 templates/note/conso_form.html:121
|
||||
#: templates/member/club_info.html:67 templates/note/conso_form.html:121
|
||||
#: templates/wei/bus_tables.html:15 templates/wei/busteam_tables.html:15
|
||||
#: templates/wei/busteam_tables.html:33 templates/wei/weiclub_info.html:66
|
||||
msgid "Edit"
|
||||
|
@ -863,122 +863,128 @@ msgstr ""
|
|||
msgid "Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:19
|
||||
#: apps/treasury/models.py:20
|
||||
msgid "Invoice identifier"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:33
|
||||
#: apps/treasury/models.py:34
|
||||
msgid "BDE"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:38
|
||||
#: apps/treasury/models.py:39
|
||||
msgid "Object"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:42
|
||||
#: apps/treasury/models.py:43
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:47 templates/note/transaction_form.html:91
|
||||
#: apps/treasury/models.py:48 templates/note/transaction_form.html:91
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:51
|
||||
#: apps/treasury/models.py:52
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:56
|
||||
#: apps/treasury/models.py:57
|
||||
msgid "Place"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:60
|
||||
#: apps/treasury/models.py:61
|
||||
msgid "Acquitted"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:64
|
||||
#: apps/treasury/models.py:65
|
||||
msgid "invoice"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:65
|
||||
#: apps/treasury/models.py:66
|
||||
msgid "invoices"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:80
|
||||
#: apps/treasury/models.py:81
|
||||
msgid "Designation"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:84
|
||||
#: apps/treasury/models.py:85
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:88
|
||||
#: apps/treasury/models.py:89
|
||||
msgid "Unit price"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:104
|
||||
#: apps/treasury/models.py:105
|
||||
msgid "product"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:105
|
||||
#: apps/treasury/models.py:106
|
||||
msgid "products"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:122
|
||||
#: apps/treasury/models.py:123
|
||||
msgid "remittance type"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:123
|
||||
#: apps/treasury/models.py:124
|
||||
msgid "remittance types"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:133
|
||||
#: apps/treasury/models.py:134
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:144
|
||||
#: apps/treasury/models.py:145
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:149
|
||||
#: apps/treasury/models.py:150
|
||||
msgid "Closed"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:153
|
||||
#: apps/treasury/models.py:154
|
||||
msgid "remittance"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:154
|
||||
#: apps/treasury/models.py:155
|
||||
msgid "remittances"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:186
|
||||
#: apps/treasury/models.py:187
|
||||
msgid "Remittance #{:d}: {}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:205 apps/treasury/tables.py:76
|
||||
#: apps/treasury/models.py:206 apps/treasury/tables.py:76
|
||||
#: apps/treasury/tables.py:84 templates/treasury/invoice_list.html:13
|
||||
#: templates/treasury/remittance_list.html:13
|
||||
#: templates/treasury/sogecredit_list.html:13
|
||||
msgid "Remittance"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:209
|
||||
#: apps/treasury/models.py:210
|
||||
msgid "special transaction proxy"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:210
|
||||
#: apps/treasury/models.py:211
|
||||
msgid "special transaction proxies"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:232
|
||||
#: apps/treasury/models.py:233
|
||||
msgid "credit transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:294 templates/treasury/sogecredit_detail.html:9
|
||||
#: apps/treasury/models.py:292
|
||||
msgid ""
|
||||
"This user doesn't have enough money to pay the memberships with its note. "
|
||||
"Please ask her/him to credit the note before invalidating this credit."
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:303 templates/treasury/sogecredit_detail.html:10
|
||||
msgid "Credit from the Société générale"
|
||||
msgstr ""
|
||||
|
||||
#: apps/treasury/models.py:295
|
||||
#: apps/treasury/models.py:304
|
||||
msgid "Credits from the Société générale"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1212,7 +1218,7 @@ msgid "WEI memberships"
|
|||
msgstr ""
|
||||
|
||||
#: apps/wei/tables.py:53 apps/wei/tables.py:54
|
||||
#: templates/treasury/sogecredit_detail.html:44
|
||||
#: templates/treasury/sogecredit_detail.html:57
|
||||
msgid "Validate"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1221,41 +1227,41 @@ msgstr ""
|
|||
msgid "Teams"
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:165
|
||||
#: apps/wei/views.py:166
|
||||
msgid "Find WEI Membership"
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:200
|
||||
#: apps/wei/views.py:201
|
||||
msgid "Find WEI Registration"
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:409 templates/wei/weiclub_info.html:62
|
||||
#: apps/wei/views.py:410 templates/wei/weiclub_info.html:62
|
||||
msgid "Register 1A"
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:430 apps/wei/views.py:498
|
||||
#: apps/wei/views.py:431 apps/wei/views.py:499
|
||||
msgid "This user is already registered to this WEI."
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:435
|
||||
#: apps/wei/views.py:436
|
||||
msgid ""
|
||||
"This user can't be in her/his first year since he/she has already participed "
|
||||
"to a WEI."
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:463 templates/wei/weiclub_info.html:63
|
||||
#: apps/wei/views.py:464 templates/wei/weiclub_info.html:63
|
||||
msgid "Register 2A+"
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:481 apps/wei/views.py:564
|
||||
#: apps/wei/views.py:482 apps/wei/views.py:565
|
||||
msgid "You already opened an account in the Société générale."
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:721
|
||||
#: apps/wei/views.py:722
|
||||
msgid "This user didn't give her/his caution check."
|
||||
msgstr ""
|
||||
|
||||
#: apps/wei/views.py:790 apps/wei/views.py:810 apps/wei/views.py:820
|
||||
#: apps/wei/views.py:791 apps/wei/views.py:811 apps/wei/views.py:821
|
||||
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
|
||||
#: templates/wei/survey_end.html:12
|
||||
msgid "Survey WEI"
|
||||
|
@ -1422,24 +1428,25 @@ msgstr ""
|
|||
msgid "Club Parent"
|
||||
msgstr ""
|
||||
|
||||
#: templates/member/club_info.html:29
|
||||
#: templates/member/club_info.html:34
|
||||
msgid "days"
|
||||
msgstr ""
|
||||
|
||||
#: templates/member/club_info.html:32 templates/wei/weiclub_info.html:27
|
||||
#: templates/member/club_info.html:38 templates/wei/weiclub_info.html:27
|
||||
msgid "membership fee"
|
||||
msgstr ""
|
||||
|
||||
#: templates/member/club_info.html:44 templates/member/profile_info.html:33
|
||||
#: templates/member/club_info.html:50 templates/member/profile_info.html:33
|
||||
#: templates/treasury/sogecredit_detail.html:18
|
||||
#: templates/wei/weiclub_info.html:43
|
||||
msgid "balance"
|
||||
msgstr ""
|
||||
|
||||
#: templates/member/club_info.html:57
|
||||
#: templates/member/club_info.html:64
|
||||
msgid "Add member"
|
||||
msgstr ""
|
||||
|
||||
#: templates/member/club_info.html:64 templates/member/profile_info.html:48
|
||||
#: templates/member/club_info.html:71 templates/member/profile_info.html:48
|
||||
msgid "View Profile"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1854,37 +1861,47 @@ msgstr ""
|
|||
msgid "Closed remittances"
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:23
|
||||
#: templates/treasury/sogecredit_detail.html:29
|
||||
msgid "total amount"
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:29
|
||||
#: templates/treasury/sogecredit_detail.html:35
|
||||
msgid ""
|
||||
"Warning: Validating this credit implies that all membership transactions "
|
||||
"will be validated."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:30
|
||||
#: templates/treasury/sogecredit_detail.html:36
|
||||
msgid ""
|
||||
"If you delete this credit, there all membership transactions will be also "
|
||||
"validated, but no credit will be operated."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:31
|
||||
#: templates/treasury/sogecredit_detail.html:37
|
||||
msgid ""
|
||||
"If this credit is validated, then the user won't be able to ask for a credit "
|
||||
"from the Société générale."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:32
|
||||
#: templates/treasury/sogecredit_detail.html:38
|
||||
msgid "If you think there is an error, please contact the \"respos info\"."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:38
|
||||
#: templates/treasury/sogecredit_detail.html:44
|
||||
msgid "This credit is already validated."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:49
|
||||
msgid ""
|
||||
"Warning: if you don't validate this credit, the note of the user doesn't "
|
||||
"have enough money to pay its memberships."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:50
|
||||
msgid "Please ask the user to credit its note before deleting this credit."
|
||||
msgstr ""
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:64
|
||||
msgid "Return to credit list"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-22 03:07+0200\n"
|
||||
"POT-Creation-Date: 2020-04-22 03:51+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -79,8 +79,8 @@ msgid "type"
|
|||
msgstr "type"
|
||||
|
||||
#: apps/activity/models.py:66 apps/logs/models.py:21 apps/member/models.py:225
|
||||
#: apps/note/models/notes.py:117 apps/treasury/models.py:220
|
||||
#: apps/wei/models.py:155 templates/treasury/sogecredit_detail.html:13
|
||||
#: apps/note/models/notes.py:117 apps/treasury/models.py:221
|
||||
#: apps/wei/models.py:155 templates/treasury/sogecredit_detail.html:14
|
||||
#: templates/wei/survey.html:16
|
||||
msgid "user"
|
||||
msgstr "utilisateur"
|
||||
|
@ -177,7 +177,7 @@ msgstr "Entré le "
|
|||
msgid "remove"
|
||||
msgstr "supprimer"
|
||||
|
||||
#: apps/activity/tables.py:75 apps/treasury/models.py:139
|
||||
#: apps/activity/tables.py:75 apps/treasury/models.py:140
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
|
@ -347,7 +347,7 @@ msgstr "inscription valid"
|
|||
msgid "user profile"
|
||||
msgstr "profil utilisateur"
|
||||
|
||||
#: apps/member/models.py:105 templates/member/club_info.html:51
|
||||
#: apps/member/models.py:105 templates/member/club_info.html:57
|
||||
#: templates/registration/future_profile_detail.html:22
|
||||
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
|
||||
msgid "email"
|
||||
|
@ -365,15 +365,15 @@ msgstr "nécessite des adhésions"
|
|||
msgid "Uncheck if this club don't require memberships."
|
||||
msgstr "Décochez si ce club n'utilise pas d'adhésions."
|
||||
|
||||
#: apps/member/models.py:127 templates/member/club_info.html:35
|
||||
#: apps/member/models.py:127 templates/member/club_info.html:41
|
||||
msgid "membership fee (paid students)"
|
||||
msgstr "cotisation pour adhérer (normalien élève)"
|
||||
|
||||
#: apps/member/models.py:132 templates/member/club_info.html:38
|
||||
#: apps/member/models.py:132 templates/member/club_info.html:44
|
||||
msgid "membership fee (unpaid students)"
|
||||
msgstr "cotisation pour adhérer (normalien étudiant)"
|
||||
|
||||
#: apps/member/models.py:138 templates/member/club_info.html:28
|
||||
#: apps/member/models.py:138 templates/member/club_info.html:33
|
||||
msgid "membership duration"
|
||||
msgstr "durée de l'adhésion"
|
||||
|
||||
|
@ -381,7 +381,7 @@ msgstr "durée de l'adhésion"
|
|||
msgid "The longest time (in days) a membership can last (NULL = infinite)."
|
||||
msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)."
|
||||
|
||||
#: apps/member/models.py:146 templates/member/club_info.html:22
|
||||
#: apps/member/models.py:146 templates/member/club_info.html:23
|
||||
msgid "membership start"
|
||||
msgstr "début de l'adhésion"
|
||||
|
||||
|
@ -391,7 +391,7 @@ msgstr ""
|
|||
"Combien de temps après le 1er Janvier les adhérents peuvent renouveler leur "
|
||||
"adhésion."
|
||||
|
||||
#: apps/member/models.py:154 templates/member/club_info.html:25
|
||||
#: apps/member/models.py:154 templates/member/club_info.html:28
|
||||
msgid "membership end"
|
||||
msgstr "fin de l'adhésion"
|
||||
|
||||
|
@ -432,11 +432,11 @@ msgstr "l'adhésion finit le"
|
|||
msgid "fee"
|
||||
msgstr "cotisation"
|
||||
|
||||
#: apps/member/models.py:268 apps/member/views.py:494 apps/wei/views.py:726
|
||||
#: apps/member/models.py:268 apps/member/views.py:505 apps/wei/views.py:727
|
||||
msgid "User is not a member of the parent club"
|
||||
msgstr "L'utilisateur n'est pas membre du club parent"
|
||||
|
||||
#: apps/member/models.py:278 apps/member/views.py:503
|
||||
#: apps/member/models.py:278 apps/member/views.py:514
|
||||
msgid "User is already a member of the club"
|
||||
msgstr "L'utilisateur est déjà membre du club"
|
||||
|
||||
|
@ -471,11 +471,11 @@ msgstr "Modifier le profil"
|
|||
msgid "An alias with a similar name already exists."
|
||||
msgstr "Un alias avec un nom similaire existe déjà."
|
||||
|
||||
#: apps/member/views.py:180
|
||||
#: apps/member/views.py:181
|
||||
msgid "Search user"
|
||||
msgstr "Chercher un utilisateur"
|
||||
|
||||
#: apps/member/views.py:489 apps/wei/views.py:717
|
||||
#: apps/member/views.py:500 apps/wei/views.py:718
|
||||
msgid ""
|
||||
"This user don't have enough money to join this club, and can't have a "
|
||||
"negative balance."
|
||||
|
@ -483,15 +483,15 @@ msgstr ""
|
|||
"Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne peut pas "
|
||||
"avoir un solde négatif."
|
||||
|
||||
#: apps/member/views.py:507
|
||||
#: apps/member/views.py:518
|
||||
msgid "The membership must start after {:%m-%d-%Y}."
|
||||
msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
|
||||
|
||||
#: apps/member/views.py:512
|
||||
#: apps/member/views.py:523
|
||||
msgid "The membership must begin before {:%m-%d-%Y}."
|
||||
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
|
||||
|
||||
#: apps/member/views.py:522 apps/member/views.py:524 apps/member/views.py:526
|
||||
#: apps/member/views.py:533 apps/member/views.py:535 apps/member/views.py:537
|
||||
#: apps/registration/views.py:288 apps/registration/views.py:290
|
||||
#: apps/registration/views.py:292
|
||||
msgid "This field is required."
|
||||
|
@ -599,7 +599,7 @@ msgstr "Alias invalide"
|
|||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: apps/note/models/notes.py:211 templates/member/club_info.html:48
|
||||
#: apps/note/models/notes.py:211 templates/member/club_info.html:54
|
||||
#: templates/member/profile_info.html:36 templates/wei/weiclub_info.html:48
|
||||
msgid "aliases"
|
||||
msgstr "alias"
|
||||
|
@ -670,7 +670,7 @@ msgid "transaction"
|
|||
msgstr "transaction"
|
||||
|
||||
#: apps/note/models/transactions.py:154
|
||||
#: templates/treasury/sogecredit_detail.html:16
|
||||
#: templates/treasury/sogecredit_detail.html:22
|
||||
msgid "transactions"
|
||||
msgstr "transactions"
|
||||
|
||||
|
@ -707,7 +707,7 @@ msgstr "Débit"
|
|||
msgid "membership transaction"
|
||||
msgstr "Transaction d'adhésion"
|
||||
|
||||
#: apps/note/models/transactions.py:283 apps/treasury/models.py:226
|
||||
#: apps/note/models/transactions.py:283 apps/treasury/models.py:227
|
||||
msgid "membership transactions"
|
||||
msgstr "Transactions d'adhésion"
|
||||
|
||||
|
@ -724,13 +724,13 @@ msgid "No reason specified"
|
|||
msgstr "Pas de motif spécifié"
|
||||
|
||||
#: apps/note/tables.py:122 apps/note/tables.py:151 apps/wei/tables.py:66
|
||||
#: templates/treasury/sogecredit_detail.html:45
|
||||
#: templates/treasury/sogecredit_detail.html:59
|
||||
#: templates/wei/weiregistration_confirm_delete.html:32
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: apps/note/tables.py:146 apps/wei/tables.py:42 apps/wei/tables.py:43
|
||||
#: templates/member/club_info.html:60 templates/note/conso_form.html:121
|
||||
#: templates/member/club_info.html:67 templates/note/conso_form.html:121
|
||||
#: templates/wei/bus_tables.html:15 templates/wei/busteam_tables.html:15
|
||||
#: templates/wei/busteam_tables.html:33 templates/wei/weiclub_info.html:66
|
||||
msgid "Edit"
|
||||
|
@ -871,122 +871,130 @@ msgstr "Vous ne pouvez pas changer le type de la remise."
|
|||
msgid "Amount"
|
||||
msgstr "Montant"
|
||||
|
||||
#: apps/treasury/models.py:19
|
||||
#: apps/treasury/models.py:20
|
||||
msgid "Invoice identifier"
|
||||
msgstr "Numéro de facture"
|
||||
|
||||
#: apps/treasury/models.py:33
|
||||
#: apps/treasury/models.py:34
|
||||
msgid "BDE"
|
||||
msgstr "BDE"
|
||||
|
||||
#: apps/treasury/models.py:38
|
||||
#: apps/treasury/models.py:39
|
||||
msgid "Object"
|
||||
msgstr "Objet"
|
||||
|
||||
#: apps/treasury/models.py:42
|
||||
#: apps/treasury/models.py:43
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: apps/treasury/models.py:47 templates/note/transaction_form.html:91
|
||||
#: apps/treasury/models.py:48 templates/note/transaction_form.html:91
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: apps/treasury/models.py:51
|
||||
#: apps/treasury/models.py:52
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: apps/treasury/models.py:56
|
||||
#: apps/treasury/models.py:57
|
||||
msgid "Place"
|
||||
msgstr "Lieu"
|
||||
|
||||
#: apps/treasury/models.py:60
|
||||
#: apps/treasury/models.py:61
|
||||
msgid "Acquitted"
|
||||
msgstr "Acquittée"
|
||||
|
||||
#: apps/treasury/models.py:64
|
||||
#: apps/treasury/models.py:65
|
||||
msgid "invoice"
|
||||
msgstr "facture"
|
||||
|
||||
#: apps/treasury/models.py:65
|
||||
#: apps/treasury/models.py:66
|
||||
msgid "invoices"
|
||||
msgstr "factures"
|
||||
|
||||
#: apps/treasury/models.py:80
|
||||
#: apps/treasury/models.py:81
|
||||
msgid "Designation"
|
||||
msgstr "Désignation"
|
||||
|
||||
#: apps/treasury/models.py:84
|
||||
#: apps/treasury/models.py:85
|
||||
msgid "Quantity"
|
||||
msgstr "Quantité"
|
||||
|
||||
#: apps/treasury/models.py:88
|
||||
#: apps/treasury/models.py:89
|
||||
msgid "Unit price"
|
||||
msgstr "Prix unitaire"
|
||||
|
||||
#: apps/treasury/models.py:104
|
||||
#: apps/treasury/models.py:105
|
||||
msgid "product"
|
||||
msgstr "produit"
|
||||
|
||||
#: apps/treasury/models.py:105
|
||||
#: apps/treasury/models.py:106
|
||||
msgid "products"
|
||||
msgstr "produits"
|
||||
|
||||
#: apps/treasury/models.py:122
|
||||
#: apps/treasury/models.py:123
|
||||
msgid "remittance type"
|
||||
msgstr "type de remise"
|
||||
|
||||
#: apps/treasury/models.py:123
|
||||
#: apps/treasury/models.py:124
|
||||
msgid "remittance types"
|
||||
msgstr "types de remises"
|
||||
|
||||
#: apps/treasury/models.py:133
|
||||
#: apps/treasury/models.py:134
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: apps/treasury/models.py:144
|
||||
#: apps/treasury/models.py:145
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: apps/treasury/models.py:149
|
||||
#: apps/treasury/models.py:150
|
||||
msgid "Closed"
|
||||
msgstr "Fermée"
|
||||
|
||||
#: apps/treasury/models.py:153
|
||||
#: apps/treasury/models.py:154
|
||||
msgid "remittance"
|
||||
msgstr "remise"
|
||||
|
||||
#: apps/treasury/models.py:154
|
||||
#: apps/treasury/models.py:155
|
||||
msgid "remittances"
|
||||
msgstr "remises"
|
||||
|
||||
#: apps/treasury/models.py:186
|
||||
#: apps/treasury/models.py:187
|
||||
msgid "Remittance #{:d}: {}"
|
||||
msgstr "Remise n°{:d} : {}"
|
||||
|
||||
#: apps/treasury/models.py:205 apps/treasury/tables.py:76
|
||||
#: apps/treasury/models.py:206 apps/treasury/tables.py:76
|
||||
#: apps/treasury/tables.py:84 templates/treasury/invoice_list.html:13
|
||||
#: templates/treasury/remittance_list.html:13
|
||||
#: templates/treasury/sogecredit_list.html:13
|
||||
msgid "Remittance"
|
||||
msgstr "Remise"
|
||||
|
||||
#: apps/treasury/models.py:209
|
||||
#: apps/treasury/models.py:210
|
||||
msgid "special transaction proxy"
|
||||
msgstr "Proxy de transaction spéciale"
|
||||
|
||||
#: apps/treasury/models.py:210
|
||||
#: apps/treasury/models.py:211
|
||||
msgid "special transaction proxies"
|
||||
msgstr "Proxys de transactions spéciales"
|
||||
|
||||
#: apps/treasury/models.py:232
|
||||
#: apps/treasury/models.py:233
|
||||
msgid "credit transaction"
|
||||
msgstr "transaction de crédit"
|
||||
|
||||
#: apps/treasury/models.py:294 templates/treasury/sogecredit_detail.html:9
|
||||
#: apps/treasury/models.py:292
|
||||
msgid ""
|
||||
"This user doesn't have enough money to pay the memberships with its note. "
|
||||
"Please ask her/him to credit the note before invalidating this credit."
|
||||
msgstr ""
|
||||
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
|
||||
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
|
||||
|
||||
#: apps/treasury/models.py:303 templates/treasury/sogecredit_detail.html:10
|
||||
msgid "Credit from the Société générale"
|
||||
msgstr "Crédit de la Société générale"
|
||||
|
||||
#: apps/treasury/models.py:295
|
||||
#: apps/treasury/models.py:304
|
||||
msgid "Credits from the Société générale"
|
||||
msgstr "Crédits de la Société générale"
|
||||
|
||||
|
@ -1235,7 +1243,7 @@ msgid "WEI memberships"
|
|||
msgstr "adhésions au WEI"
|
||||
|
||||
#: apps/wei/tables.py:53 apps/wei/tables.py:54
|
||||
#: templates/treasury/sogecredit_detail.html:44
|
||||
#: templates/treasury/sogecredit_detail.html:57
|
||||
msgid "Validate"
|
||||
msgstr "Valider"
|
||||
|
||||
|
@ -1244,23 +1252,23 @@ msgstr "Valider"
|
|||
msgid "Teams"
|
||||
msgstr "Équipes"
|
||||
|
||||
#: apps/wei/views.py:165
|
||||
#: apps/wei/views.py:166
|
||||
msgid "Find WEI Membership"
|
||||
msgstr "Trouver une adhésion au WEI"
|
||||
|
||||
#: apps/wei/views.py:200
|
||||
#: apps/wei/views.py:201
|
||||
msgid "Find WEI Registration"
|
||||
msgstr "Trouver une inscription au WEI"
|
||||
|
||||
#: apps/wei/views.py:409 templates/wei/weiclub_info.html:62
|
||||
#: apps/wei/views.py:410 templates/wei/weiclub_info.html:62
|
||||
msgid "Register 1A"
|
||||
msgstr "Inscrire un 1A"
|
||||
|
||||
#: apps/wei/views.py:430 apps/wei/views.py:498
|
||||
#: apps/wei/views.py:431 apps/wei/views.py:499
|
||||
msgid "This user is already registered to this WEI."
|
||||
msgstr "Cette personne est déjà inscrite au WEI."
|
||||
|
||||
#: apps/wei/views.py:435
|
||||
#: apps/wei/views.py:436
|
||||
msgid ""
|
||||
"This user can't be in her/his first year since he/she has already participed "
|
||||
"to a WEI."
|
||||
|
@ -1268,19 +1276,19 @@ msgstr ""
|
|||
"Cet utilisateur ne peut pas être en première année puisqu'iel a déjà "
|
||||
"participé à un WEI."
|
||||
|
||||
#: apps/wei/views.py:463 templates/wei/weiclub_info.html:63
|
||||
#: apps/wei/views.py:464 templates/wei/weiclub_info.html:63
|
||||
msgid "Register 2A+"
|
||||
msgstr "Inscrire un 2A+"
|
||||
|
||||
#: apps/wei/views.py:481 apps/wei/views.py:564
|
||||
#: apps/wei/views.py:482 apps/wei/views.py:565
|
||||
msgid "You already opened an account in the Société générale."
|
||||
msgstr "Vous avez déjà ouvert un compte auprès de la société générale."
|
||||
|
||||
#: apps/wei/views.py:721
|
||||
#: apps/wei/views.py:722
|
||||
msgid "This user didn't give her/his caution check."
|
||||
msgstr "Cet utilisateur n'a pas donné son chèque de caution."
|
||||
|
||||
#: apps/wei/views.py:790 apps/wei/views.py:810 apps/wei/views.py:820
|
||||
#: apps/wei/views.py:791 apps/wei/views.py:811 apps/wei/views.py:821
|
||||
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
|
||||
#: templates/wei/survey_end.html:12
|
||||
msgid "Survey WEI"
|
||||
|
@ -1451,24 +1459,25 @@ msgstr "Ajouter un alias"
|
|||
msgid "Club Parent"
|
||||
msgstr "Club parent"
|
||||
|
||||
#: templates/member/club_info.html:29
|
||||
#: templates/member/club_info.html:34
|
||||
msgid "days"
|
||||
msgstr "jours"
|
||||
|
||||
#: templates/member/club_info.html:32 templates/wei/weiclub_info.html:27
|
||||
#: templates/member/club_info.html:38 templates/wei/weiclub_info.html:27
|
||||
msgid "membership fee"
|
||||
msgstr "cotisation pour adhérer"
|
||||
|
||||
#: templates/member/club_info.html:44 templates/member/profile_info.html:33
|
||||
#: templates/member/club_info.html:50 templates/member/profile_info.html:33
|
||||
#: templates/treasury/sogecredit_detail.html:18
|
||||
#: templates/wei/weiclub_info.html:43
|
||||
msgid "balance"
|
||||
msgstr "solde du compte"
|
||||
|
||||
#: templates/member/club_info.html:57
|
||||
#: templates/member/club_info.html:64
|
||||
msgid "Add member"
|
||||
msgstr "Ajouter un membre"
|
||||
|
||||
#: templates/member/club_info.html:64 templates/member/profile_info.html:48
|
||||
#: templates/member/club_info.html:71 templates/member/profile_info.html:48
|
||||
msgid "View Profile"
|
||||
msgstr "Voir le profil"
|
||||
|
||||
|
@ -1898,11 +1907,11 @@ msgstr "Il n'y a pas de transaction associée à une remise ouverte."
|
|||
msgid "Closed remittances"
|
||||
msgstr "Remises fermées"
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:23
|
||||
#: templates/treasury/sogecredit_detail.html:29
|
||||
msgid "total amount"
|
||||
msgstr "montant total"
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:29
|
||||
#: templates/treasury/sogecredit_detail.html:35
|
||||
msgid ""
|
||||
"Warning: Validating this credit implies that all membership transactions "
|
||||
"will be validated."
|
||||
|
@ -1910,7 +1919,7 @@ msgstr ""
|
|||
"Attention : Valider ce crédit implique que les transactions d'adhésion "
|
||||
"seront validées."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:30
|
||||
#: templates/treasury/sogecredit_detail.html:36
|
||||
msgid ""
|
||||
"If you delete this credit, there all membership transactions will be also "
|
||||
"validated, but no credit will be operated."
|
||||
|
@ -1919,7 +1928,7 @@ msgstr ""
|
|||
"d'adhésion seront aussi validées, but il n'y aura pas de transaction de "
|
||||
"crédit créée."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:31
|
||||
#: templates/treasury/sogecredit_detail.html:37
|
||||
msgid ""
|
||||
"If this credit is validated, then the user won't be able to ask for a credit "
|
||||
"from the Société générale."
|
||||
|
@ -1927,15 +1936,29 @@ msgstr ""
|
|||
"Si ce crédit est validé, alors l'utilisateur ne pourra plus demander d'être "
|
||||
"crédité par la Société générale à l'avenir."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:32
|
||||
#: templates/treasury/sogecredit_detail.html:38
|
||||
msgid "If you think there is an error, please contact the \"respos info\"."
|
||||
msgstr "Si vous pensez qu'il y a une erreur, merci de contacter un respo info."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:38
|
||||
#: templates/treasury/sogecredit_detail.html:44
|
||||
msgid "This credit is already validated."
|
||||
msgstr "Ce crédit a déjà été validé."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:49
|
||||
msgid ""
|
||||
"Warning: if you don't validate this credit, the note of the user doesn't "
|
||||
"have enough money to pay its memberships."
|
||||
msgstr ""
|
||||
"Attention : si vous ne validez pas ce crédit, la note de l'utilisateur n'a "
|
||||
"pas assez d'argent pour payer les adhésions."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:50
|
||||
msgid "Please ask the user to credit its note before deleting this credit."
|
||||
msgstr ""
|
||||
"Merci de demander à l'utilisateur de recharger sa note avant de "
|
||||
"supprimer la demande de crédit."
|
||||
|
||||
#: templates/treasury/sogecredit_detail.html:64
|
||||
msgid "Return to credit list"
|
||||
msgstr "Retour à la liste des crédits"
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
{% load static %}
|
||||
{% load i18n %}
|
||||
{% load pretty_money %}
|
||||
{% load perms %}
|
||||
|
||||
{% block content %}
|
||||
<div class="card bg-light shadow">
|
||||
|
@ -13,6 +14,11 @@
|
|||
<dt class="col-xl-6 text-right">{% trans 'user'|capfirst %}</dt>
|
||||
<dd class="col-xl-6"><a href="{% url 'member:user_detail' pk=object.user.pk %}">{{ object.user }}</a></dd>
|
||||
|
||||
{% if "note.view_note_balance"|has_perm:object.user.note %}
|
||||
<dt class="col-xl-6 text-right">{% trans 'balance'|capfirst %}</dt>
|
||||
<dd class="col-xl-6">{{ object.user.note.balance|pretty_money }}</dd>
|
||||
{% endif %}
|
||||
|
||||
<dt class="col-xl-6 text-right">{% trans 'transactions'|capfirst %}</dt>
|
||||
<dd class="col-xl-6">
|
||||
{% for transaction in object.transactions.all %}
|
||||
|
@ -38,11 +44,20 @@
|
|||
{% trans "This credit is already validated." %}
|
||||
</div>
|
||||
{% else %}
|
||||
{% if object.user.note.balance < object.amount %}
|
||||
<div class="alert alert-warning">
|
||||
{% trans "Warning: if you don't validate this credit, the note of the user doesn't have enough money to pay its memberships." %}
|
||||
{% trans "Please ask the user to credit its note before deleting this credit." %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="btn-group btn-block">
|
||||
<button name="validate" class="btn btn-success">{% trans "Validate" %}</button>
|
||||
{% if object.user.note.balance >= object.amount %}
|
||||
<button name="delete" class="btn btn-danger">{% trans "Delete" %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
|
Loading…
Reference in New Issue