Commit 62ad9f2c authored by Patrick's avatar Patrick

WIP

parent 8975f63a
......@@ -19,7 +19,7 @@ class ProductFilterByProducer(SimpleListFilter):
# right admin sidebar.
title = _("producers")
# Parameter for the filter that will be used in the URL query.
parameter_name = 'producer_id'
parameter_name = 'producer'
template = 'admin/producer_filter.html'
def lookups(self, request, model_admin):
......@@ -157,23 +157,20 @@ class PurchaseFilterByCustomer(SimpleListFilter):
class PurchaseFilterByProducerForThisPermanence(SimpleListFilter):
title = _("producer")
title = _("producers")
parameter_name = 'producer'
template = 'admin/producer_filter.html'
def lookups(self, request, model_admin):
permanence_id = request.GET.get('permanence', None)
if permanence_id is not None:
list_filter = []
for p in Producer.objects.filter(permanence=permanence_id):
pi = ProducerInvoice.objects.filter(permanence=permanence_id, producer_id=p.id).order_by('?').first()
if pi is not None:
list_filter.append((p.id, "%s (%s)" % (p.short_profile_name, pi.total_price_with_tax,)))
else:
list_filter.append((p.id, p.short_profile_name))
return list_filter
else:
return []
list_filter = []
for p in Producer.objects.filter(permanence=permanence_id):
pi = ProducerInvoice.objects.filter(permanence=permanence_id, producer_id=p.id).order_by('?').first()
if pi is not None:
list_filter.append((p.id, "%s (%s)" % (p.short_profile_name, pi.total_price_with_tax,)))
else:
list_filter.append((p.id, p.short_profile_name))
return list_filter
def queryset(self, request, queryset):
if self.value():
......
......@@ -49,10 +49,10 @@ class OfferItemClosedAdmin(admin.ModelAdmin):
ordering = ('translations__long_name',)
def get_queryset(self, request):
queryset = super(OfferItemClosedAdmin, self).get_queryset(request).filter(
qs = super(OfferItemClosedAdmin, self).get_queryset(request)
return qs.filter(
translations__language_code=translation.get_language()
).distinct()
return queryset
def get_list_display(self, request):
producer_id = sint(request.GET.get('producer', 0))
......
......@@ -362,7 +362,7 @@ class ProductAdmin(ImportExportMixin, TranslatableAdmin):
duplicate_product.short_description = _('duplicate product')
def get_list_display(self, request):
producer_id = sint(request.GET.get('producer_id', 0))
producer_id = sint(request.GET.get('producer', 0))
if producer_id != 0:
producer_queryset = Producer.objects.filter(id=producer_id).order_by('?')
producer = producer_queryset.first()
......@@ -425,8 +425,8 @@ class ProductAdmin(ImportExportMixin, TranslatableAdmin):
preserved_filters = request.GET.get('_changelist_filters', None)
if preserved_filters:
param = dict(parse_qsl(preserved_filters))
if 'producer_id' in param:
producer_id = param['producer_id']
if 'producer' in param:
producer_id = param['producer']
if producer_id:
producer_queryset = Producer.objects.filter(id=producer_id).order_by('?')
if 'department_for_customer' in param:
......
......@@ -208,7 +208,7 @@ class OfferItemSendAdmin(admin.ModelAdmin):
qs = super(OfferItemSendAdmin, self).get_queryset(request)
return qs.filter(
translations__language_code=translation.get_language()
)
).distinct()
def get_form(self, request, obj=None, **kwargs):
if obj.is_resale_price_fixed:
......
......@@ -68,7 +68,7 @@ class RepanierSettings(AppConfig):
db_started = connection.cursor() is not None
except:
time.sleep(1)
from models import Configuration, LUT_DepartmentForCustomer, Staff, Purchase
from models import Configuration, LUT_DepartmentForCustomer, Staff, Purchase, CustomerInvoice
from const import DECIMAL_ONE, PERMANENCE_NAME_PERMANENCE, CURRENCY_EUR, ORDER_GROUP, \
INVOICE_GROUP, CONTRIBUTOR_GROUP, COORDINATION_GROUP, WEBMASTER_GROUP
try:
......@@ -92,10 +92,14 @@ class RepanierSettings(AppConfig):
# Purchase.objects.filter(customer_charged__isnull=True).update(
# customer_charged=F('customer_invoice__customer_charged')
# )
for purchase in Purchase.objects.filter(
customer_charged__isnull=True).select_related("customer_invoice").order_by('?'):
purchase.customer_charged = purchase.customer_invoice.customer_charged
purchase.save(update_fields=["customer_charged",])
# for purchase in Purchase.objects.filter(
# customer_charged__isnull=True).select_related("customer_invoice").order_by('?'):
# purchase.customer_charged = purchase.customer_invoice.customer_charged
# purchase.save(update_fields=["customer_charged",])
CustomerInvoice.objects.filter(
customer__is_group=True,
customer_id=F('customer_charged_id')
).update(is_group=True)
Staff.objects.rebuild()
# Create groups with correct rights
order_group = Group.objects.filter(name=ORDER_GROUP).only('id').order_by('?').first()
......
......@@ -74,21 +74,21 @@ class PermanenceMenu(Menu):
submenu_id = self.append_permanence(is_anonymous, permanence, nodes, master_id, submenu_id)
if displayed_permanence_counter > 4:
break
if displayed_permanence_counter < 4:
max_counter = 4 - displayed_permanence_counter
for permanence in Permanence.objects.filter(status__in=[PERMANENCE_INVOICED, PERMANENCE_ARCHIVED]) \
.only("id", "permanence_date") \
.order_by('-permanence_date'):
if permanence.permanence_date >= (
timezone.now() - datetime.timedelta(weeks=LIMIT_DISPLAYED_PERMANENCE)).date():
if first_pass and closed_separator:
submenu_id = self.append_separator(nodes, master_id, submenu_id)
first_pass = False
separator = True
submenu_id = self.append_permanence(is_anonymous, permanence, nodes, master_id, submenu_id)
max_counter -= 1
if max_counter <= 0:
break
# if displayed_permanence_counter < 4:
# max_counter = 4 - displayed_permanence_counter
# for permanence in Permanence.objects.filter(status__in=[PERMANENCE_INVOICED, PERMANENCE_ARCHIVED]) \
# .only("id", "permanence_date") \
# .order_by('-permanence_date'):
# if permanence.permanence_date >= (
# timezone.now() - datetime.timedelta(weeks=LIMIT_DISPLAYED_PERMANENCE)).date():
# if first_pass and closed_separator:
# submenu_id = self.append_separator(nodes, master_id, submenu_id)
# first_pass = False
# separator = True
# submenu_id = self.append_permanence(is_anonymous, permanence, nodes, master_id, submenu_id)
# max_counter -= 1
# if max_counter <= 0:
# break
# if REPANIER_SETTINGS_INVOICE and not request.user.is_staff:
# if separator:
......
......@@ -87,7 +87,8 @@ def send_invoice(permanence_id):
).order_by('?'):
long_basket_name = customer.long_basket_name if customer.long_basket_name is not None else customer.short_basket_name
if Purchase.objects.filter(
permanence_id=permanence.id, customer_charged_id=customer.id
permanence_id=permanence.id,
customer_invoice__customer_charged_id=customer.id
).order_by('?').exists():
to_email_customer = [customer.user.email]
if customer.email2 is not None and len(customer.email2.strip()) > 0:
......
......@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Repanier\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-01 13:00+0200\n"
"PO-Revision-Date: 2017-05-01 20:10+0100\n"
"POT-Creation-Date: 2017-05-07 16:50+0200\n"
"PO-Revision-Date: 2017-05-08 08:40+0100\n"
"Last-Translator: Patrick Colmant <pcolmant@gmail.com>\n"
"Language-Team: Patrick Colmant <pcolmant@gmail.com>\n"
"Language: fr\n"
......@@ -18,7 +18,7 @@ msgstr ""
"X-Generator: Poedit 1.7.1\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: admin/admin_filter.py:20 models/offeritem.py:177 models/permanence.py:101
#: admin/admin_filter.py:20 models/offeritem.py:177 models/permanence.py:102
#: models/producer.py:295 xlsx/xlsx_order.py:260
msgid "producers"
msgstr "Producteurs"
......@@ -43,20 +43,20 @@ msgstr "TVA"
#: admin/admin_filter.py:133 admin/bankaccount.py:147 models/bankaccount.py:23
#: models/bankaccount.py:110 models/customer.py:259 models/invoice.py:33
#: models/invoice.py:36 models/invoice.py:505 models/invoice.py:549
#: models/permanenceboard.py:15 models/purchase.py:41 models/purchase.py:43
#: xlsx/xlsx_invoice.py:266 xlsx/xlsx_invoice.py:374 xlsx/xlsx_order.py:398
#: xlsx/xlsx_purchase.py:42 xlsx/xlsx_purchase.py:586
#: models/invoice.py:36 models/invoice.py:545 models/invoice.py:589
#: models/permanenceboard.py:15 models/purchase.py:41 xlsx/xlsx_invoice.py:266
#: xlsx/xlsx_invoice.py:374 xlsx/xlsx_order.py:398 xlsx/xlsx_purchase.py:42
#: xlsx/xlsx_purchase.py:588
msgid "customer"
msgstr "Consommateur"
#: admin/admin_filter.py:160 admin/bankaccount.py:155 admin/forms.py:78
#: models/bankaccount.py:20 models/bankaccount.py:86 models/invoice.py:393
#: models/invoice.py:508 models/offeritem.py:61 models/producer.py:294
#: models/bankaccount.py:20 models/bankaccount.py:86 models/invoice.py:433
#: models/invoice.py:548 models/offeritem.py:61 models/producer.py:294
#: models/product.py:30 models/purchase.py:39
#: templates/repanier/pre_order_form.html:32 xlsx/xlsx_order.py:395
#: xlsx/xlsx_product.py:50 xlsx/xlsx_purchase.py:40 xlsx/xlsx_purchase.py:580
#: xlsx/xlsx_purchase.py:581
#: xlsx/xlsx_product.py:50 xlsx/xlsx_purchase.py:40 xlsx/xlsx_purchase.py:582
#: xlsx/xlsx_purchase.py:583
msgid "producer"
msgstr "Fournisseur"
......@@ -64,7 +64,7 @@ msgstr "Fournisseur"
msgid "permanence"
msgstr "permanence"
#: admin/admin_filter.py:226 models/offeritem.py:183 models/product.py:295
#: admin/admin_filter.py:226 models/offeritem.py:183 models/product.py:297
msgid "products"
msgstr "Produits"
......@@ -81,7 +81,7 @@ msgid "not invoiced"
msgstr "Pas encore facturés"
#: admin/admin_filter.py:246 models/customer.py:96 models/customer.py:128
#: models/customer.py:189 models/invoice.py:101 models/invoice.py:429
#: models/customer.py:189 models/invoice.py:101 models/invoice.py:469
#: models/producer.py:96 models/producer.py:140 models/producer.py:226
#: models/producer.py:263
msgid "balance"
......@@ -111,24 +111,24 @@ msgstr ""
"faites le manuellement sans passer par l'importation."
#: admin/bankaccount.py:161 models/bankaccount.py:37 models/bankaccount.py:59
#: models/invoice.py:93 models/invoice.py:421 xlsx/xlsx_invoice.py:72
#: models/invoice.py:93 models/invoice.py:461 xlsx/xlsx_invoice.py:72
#: xlsx/xlsx_invoice.py:123
msgid "bank_amount_in"
msgstr "Entrée"
#: admin/bankaccount.py:162 models/bankaccount.py:37 models/invoice.py:93
#: models/invoice.py:421
#: models/invoice.py:461
msgid "payment_on_the_account"
msgstr "Virement entrant"
#: admin/bankaccount.py:165 models/bankaccount.py:41 models/bankaccount.py:69
#: models/invoice.py:96 models/invoice.py:424 xlsx/xlsx_invoice.py:73
#: models/invoice.py:96 models/invoice.py:464 xlsx/xlsx_invoice.py:73
#: xlsx/xlsx_invoice.py:124
msgid "bank_amount_out"
msgstr "Sortie"
#: admin/bankaccount.py:166 models/bankaccount.py:41 models/invoice.py:96
#: models/invoice.py:424
#: models/invoice.py:464
msgid "payment_from_the_account"
msgstr "Virement sortant"
......@@ -224,7 +224,7 @@ msgstr "Action annulée par l'utilisateur."
#: admin/permanence_in_preparation.py:799
#: admin/permanence_in_preparation.py:827
#: admin/permanence_in_preparation.py:848 admin/product.py:335
#: admin/purchase.py:231 admin/purchase.py:276 task/task_order.py:230
#: admin/purchase.py:231 admin/purchase.py:276 task/task_order.py:228
msgid "Action canceled by the system."
msgstr "Action annulée par Repanier."
......@@ -430,7 +430,7 @@ msgstr "Date du paiement"
msgid "File to import"
msgstr "Fichier à importer"
#: admin/forms.py:77 admin/forms.py:92 models/invoice.py:470
#: admin/forms.py:77 admin/forms.py:92 models/invoice.py:510
msgid "invoice reference"
msgstr "Référence facture"
......@@ -438,11 +438,11 @@ msgstr "Référence facture"
msgid "short_profile_name"
msgstr "Nom abrégé"
#: admin/forms.py:89 models/invoice.py:463
#: admin/forms.py:89 models/invoice.py:503
msgid "calculated balance to be invoiced"
msgstr "Montant réclamé par le producteur calculé par Repanier"
#: admin/forms.py:91 models/invoice.py:465
#: admin/forms.py:91 models/invoice.py:505
msgid "balance to be invoiced"
msgstr "Montant réclamé par le producteur"
......@@ -583,13 +583,13 @@ msgstr "Annuler la dernière facture / annulation de livraison"
msgid "cancel archiving"
msgstr "Annuler l'archivage"
#: admin/permanence_done.py:435 tools.py:646
#: admin/permanence_done.py:435 tools.py:654
#, python-format
msgid "The amount of your order is %(amount)s."
msgstr "Le montant de votre commande s'élève à %(amount)s."
#: admin/permanence_done.py:439 admin/permanence_in_preparation.py:595
#: tools.py:676
#: tools.py:684
#, python-format
msgid "The balance of your account as of %(date)s is %(balance)s."
msgstr "Le solde de votre compte en date du %(date)s est de %(balance)s."
......@@ -711,7 +711,7 @@ msgstr "Veuillez confirmer votre demande de clôture des commandes."
msgid "close orders"
msgstr "3 --- Clôturer les commandes"
#: admin/permanence_in_preparation.py:601 tools.py:573 tools.py:612
#: admin/permanence_in_preparation.py:601 tools.py:581 tools.py:620
#, python-format
msgid ""
"This balance does not take account of any unrecognized payments %(bank)s and "
......@@ -721,7 +721,7 @@ msgstr ""
"facture pour un montant de %(bank)s, ni compte des commandes qui ne sont pas "
"encore facturées pour un montant de %(other_order)s."
#: admin/permanence_in_preparation.py:616 tools.py:692
#: admin/permanence_in_preparation.py:616 tools.py:700
#, python-format
msgid ""
"Please pay %(payment)s to the bank account %(name)s %(number)s with "
......@@ -1000,7 +1000,7 @@ msgid "duplicate product"
msgstr "Créer un duplicata"
#: admin/purchase.py:93 models/box.py:70 models/offeritem.py:49
#: models/product.py:294 xlsx/xlsx_order.py:397 xlsx/xlsx_purchase.py:41
#: models/product.py:296 xlsx/xlsx_order.py:397 xlsx/xlsx_purchase.py:41
msgid "product"
msgstr "Produit"
......@@ -1019,7 +1019,7 @@ msgid "department_for_customer"
msgstr "Rayon"
#: admin/purchase.py:243 const.py:277 email/email_order.py:33
#: models/configuration.py:311 views/btn_confirm_order_ajax.py:48
#: models/configuration.py:311 views/btn_confirm_order_ajax.py:47
msgid "Order"
msgstr "Commande"
......@@ -1055,18 +1055,18 @@ msgstr ""
msgid "Duplicate offer_items are not allowed."
msgstr "Le même produit ne peut pas être sélectionné deux fois."
#: admin/rule_of_3_per_customer.py:95 admin/rule_of_3_per_product.py:100
#: models/invoice.py:515 models/invoice.py:529 models/offeritem.py:109
#: admin/rule_of_3_per_customer.py:99 admin/rule_of_3_per_product.py:100
#: models/invoice.py:555 models/invoice.py:569 models/offeritem.py:109
#: models/offeritem.py:265
msgid "producer amount invoiced"
msgstr "Facturé par le producteur"
#: admin/rule_of_3_per_customer.py:97 models/invoice.py:520
#: admin/rule_of_3_per_customer.py:101 models/invoice.py:560
#: models/offeritem.py:114
msgid "customer amount invoiced"
msgstr "Facturé au consommateur TVAC"
#: admin/rule_of_3_per_customer.py:99 admin/rule_of_3_per_product.py:102
#: admin/rule_of_3_per_customer.py:103 admin/rule_of_3_per_product.py:102
msgid "apply rule of three"
msgstr "Appliquer la règle de 3"
......@@ -1084,7 +1084,8 @@ msgstr ""
"est disponible (càd inventaire + livré par le producteur)."
#: admin/rule_of_3_per_product.py:56 xlsx/xlsx_invoice.py:231
#: xlsx/xlsx_purchase.py:46 xlsx/xlsx_purchase.py:596
#: xlsx/xlsx_purchase.py:46 xlsx/xlsx_purchase.py:600
#: xlsx/xlsx_purchase.py:601
msgid "purchase price"
msgstr "Prix d'achat"
......@@ -1127,238 +1128,238 @@ msgstr "Permanences"
msgid "Permanence on "
msgstr "Permanence du "
#: apps.py:166
#: apps.py:170
msgid "Vegetables"
msgstr "Légume"
#: apps.py:167
#: apps.py:171
msgid "Basket of vegetables"
msgstr "Panier de légumes"
#: apps.py:168
#: apps.py:172
msgid "Salads"
msgstr "Salade"
#: apps.py:169
#: apps.py:173
msgid "Tomatoes"
msgstr "Tomate"
#: apps.py:170
#: apps.py:174
msgid "Potatoes"
msgstr "Pomme de terre"
#: apps.py:171
#: apps.py:175
msgid "Greens"
msgstr "Verdurette"
#: apps.py:172
#: apps.py:176
msgid "Cabbage"
msgstr "Chou"
#: apps.py:173
#: apps.py:177
msgid "Fruits"
msgstr "Fruit"
#: apps.py:174
#: apps.py:178
msgid "Basket of fruits"
msgstr "Panier de fruits"
#: apps.py:175
#: apps.py:179
msgid "Apples"
msgstr "Pomme"
#: apps.py:176
#: apps.py:180
msgid "Pears"
msgstr "Poire"
#: apps.py:177
#: apps.py:181
msgid "Plums"
msgstr "Prune"
#: apps.py:178
#: apps.py:182
msgid "Bakery"
msgstr "Boulangerie"
#: apps.py:179
#: apps.py:183
msgid "Flour"
msgstr "Farine"
#: apps.py:180
#: apps.py:184
msgid "Bread"
msgstr "Pain"
#: apps.py:181
#: apps.py:185
msgid "Pastry"
msgstr "Pâtisserie"
#: apps.py:182
#: apps.py:186
msgid "Butchery"
msgstr "Boucherie"
#: apps.py:183
#: apps.py:187
msgid "Delicatessen"
msgstr "Charcuterie"
#: apps.py:184
#: apps.py:188
msgid "Chicken"
msgstr "Volaille"
#: apps.py:185
#: apps.py:189
msgid "Pork"
msgstr "Porc"
#: apps.py:186
#: apps.py:190
msgid "Beef"
msgstr "Bœuf"
#: apps.py:187
#: apps.py:191
msgid "Beef and pork"
msgstr "Porc et bœuf"
#: apps.py:188
#: apps.py:192
msgid "Veal"
msgstr "Veau"
#: apps.py:189
#: apps.py:193
msgid "Lamb"
msgstr "Agneau"
#: apps.py:190
#: apps.py:194
msgid "Grocery"
msgstr "Epicerie"
#: apps.py:191
#: apps.py:195
msgid "Takeaway"
msgstr "Traiteur"
#: apps.py:192
#: apps.py:196
msgid "Pasta"
msgstr "Pâte"
#: apps.py:193
#: apps.py:197
msgid "Chocolates"
msgstr "Chocolat"
#: apps.py:194
#: apps.py:198
msgid "Oils"
msgstr "Huile"
#: apps.py:195
#: apps.py:199
msgid "Eggs"
msgstr "Œuf"
#: apps.py:196
#: apps.py:200
msgid "Jams"
msgstr "Confiture"
#: apps.py:197
#: apps.py:201
msgid "Cookies"
msgstr "Biscuit"
#: apps.py:198
#: apps.py:202
msgid "Creamery"
msgstr "Crèmerie"
#: apps.py:199
#: apps.py:203
msgid "Dairy"
msgstr "Laitage"
#: apps.py:200
#: apps.py:204
msgid "Cow cheese"
msgstr "Fromage de vache"
#: apps.py:201
#: apps.py:205
msgid "Goat cheese"
msgstr "Fromage de chèvre"
#: apps.py:202
#: apps.py:206
msgid "Sheep cheese"
msgstr "Fromage de brebis"
#: apps.py:203
#: apps.py:207
msgid "Mixed cheese"
msgstr "Fromage en mélange"
#: apps.py:204
#: apps.py:208
msgid "Icecream"
msgstr "Glace"
#: apps.py:205
#: apps.py:209
msgid "Cup of icecream"
msgstr "Glace en coupe"
#: apps.py:206
#: apps.py:210
msgid "Icecream per liter"
msgstr "Glace au ℓ"
#: apps.py:207
#: apps.py:211
msgid "Icecream in frisco"
msgstr "Glace en frisko"
#: apps.py:208
#: apps.py:212
msgid "Icecream cake"
msgstr "Gâteau de glace"
#: apps.py:209
#: apps.py:213
msgid "Sorbet"
msgstr "Sorbet"
#: apps.py:210
#: apps.py:214
msgid "Cup of sorbet"
msgstr "Sorbet en coupe"
#: apps.py:211
#: apps.py:215
msgid "Sorbet per liter"
msgstr "Sorbet au ℓ"
#: apps.py:212
#: apps.py:216
msgid "Drink"
msgstr "Boisson"
#: apps.py:213
#: apps.py:217
msgid "Juices"
msgstr "Jus"
#: apps.py:214
#: apps.py:218
msgid "Coffees"
msgstr "Café"
#: apps.py:215
#: apps.py:219
msgid "Teas"
msgstr "Thé"
#: apps.py:216
#: apps.py:220
msgid "Herbal teas"
msgstr "Infusion"
#: apps.py:217
#: apps.py:221
msgid "Wines"
msgstr "Vin"
#: apps.py:218
#: apps.py:222
msgid "Aperitifs"
msgstr "Apéritif"
#: apps.py:219
#: apps.py:223
msgid "Liqueurs"
msgstr "Liqueur"
#: apps.py:220
#: apps.py:224
msgid "Hygiene"
msgstr "Hygiène"
#: apps.py:221 templates/repanier/customer_invoice_form.html:50
#: templates/repanier/producer_invoice_form.html:20 xlsx/xlsx_order.py:712
#: xlsx/xlsx_order.py:997 xlsx/xlsx_order.py:1148 xlsx/xlsx_stock.py:33
#: apps.py:225 templates/repanier/customer_invoice_form.html:50
#: templates/repanier/producer_invoice_form.html:20 xlsx/xlsx_order.py:715
#: xlsx/xlsx_order.py:1002 xlsx/xlsx_order.py:1154 xlsx/xlsx_stock.py:33
#: xlsx/xlsx_stock.py:325
msgid "Deposit"
msgstr "Consigne"
#: apps.py:222 const.py:126 const.py:142 const.py:174
#: apps.py:226 const.py:126 const.py:142 const.py:174
msgid "Subscription"
msgstr "Souscription."
#: apps.py:228 views/order_select_ajax.py:134
#: apps.py:232 views/order_select_ajax.py:134
msgid "Other qty"
msgstr "Autre qté"
......@@ -1470,7 +1471,7 @@ msgstr "Commandes ouvertes"
msgid "wait for close"
msgstr "En cours de clôture"
#: const.py:74 models/deliveryboard.py:106 models/permanence.py:649
#: const.py:74 models/deliveryboard.py:106 models/permanence.py:748
msgid "orders closed"
msgstr "Commandes clôturées"
......@@ -1667,7 +1668,7 @@ msgstr "✿"
msgid "Pre-opening of orders"
msgstr "Pré-ouverture des commandes"
#: email/email_order.py:147
#: email/email_order.py:148
#, python-format
msgid ""
"/!\\ Mail not send to our producer %s because the minimum order value has "
......@@ -1676,11 +1677,11 @@ msgstr ""
"⚠ Mail non transmis au producteur %s car le minimum de commande n'a pas été "
"atteint."
#: email/email_order.py:238
#: email/email_order.py:239
msgid "Group invoices"
msgstr "Factures du groupe"
#: email/email_order.py:300
#: email/email_order.py:301
msgid "/!\\ Order cancelled"
msgstr "⚠ Commande annulée"
......@@ -1705,7 +1706,7 @@ msgid "customer_invoice"
msgstr "Facture d'un consommateur"
#: models/bankaccount.py:51 models/deliveryboard.py:39