Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
AE
Sith
Commits
05bd177a
Commit
05bd177a
authored
Aug 18, 2016
by
Skia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrate invoices and lot of eboutic improvements
parent
50c452c2
Pipeline
#120
failed with stage
in 3 minutes and 9 seconds
Changes
19
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
470 additions
and
156 deletions
+470
-156
core/templates/core/user_account.jinja
core/templates/core/user_account.jinja
+14
-6
counter/migrations/0009_auto_20160818_1709.py
counter/migrations/0009_auto_20160818_1709.py
+19
-0
counter/migrations/0010_auto_20160818_1716.py
counter/migrations/0010_auto_20160818_1716.py
+19
-0
counter/migrations/0011_auto_20160818_1722.py
counter/migrations/0011_auto_20160818_1722.py
+41
-0
counter/migrations/0012_selling_payment_method.py
counter/migrations/0012_selling_payment_method.py
+19
-0
counter/migrations/0013_auto_20160818_1736.py
counter/migrations/0013_auto_20160818_1736.py
+19
-0
counter/models.py
counter/models.py
+15
-8
counter/views.py
counter/views.py
+2
-1
eboutic/migrations/0002_auto_20160818_1635.py
eboutic/migrations/0002_auto_20160818_1635.py
+34
-0
eboutic/migrations/0003_auto_20160818_1738.py
eboutic/migrations/0003_auto_20160818_1738.py
+19
-0
eboutic/migrations/0004_remove_invoice_payment_method.py
eboutic/migrations/0004_remove_invoice_payment_method.py
+18
-0
eboutic/models.py
eboutic/models.py
+37
-14
eboutic/templates/eboutic/eboutic_main.jinja
eboutic/templates/eboutic/eboutic_main.jinja
+11
-4
eboutic/templates/eboutic/eboutic_makecommand.jinja
eboutic/templates/eboutic/eboutic_makecommand.jinja
+5
-1
eboutic/views.py
eboutic/views.py
+18
-12
locale/fr/LC_MESSAGES/django.mo
locale/fr/LC_MESSAGES/django.mo
+0
-0
locale/fr/LC_MESSAGES/django.po
locale/fr/LC_MESSAGES/django.po
+103
-92
migrate.py
migrate.py
+73
-18
sith/settings_sample.py
sith/settings_sample.py
+4
-0
No files found.
core/templates/core/user_account.jinja
View file @
05bd177a
...
...
@@ -14,48 +14,56 @@
<thead>
<tr>
<td>
{%
trans
%}
Date
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Counter
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Barman
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Amount
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Payment method
{%
endtrans
%}
</td>
</tr>
</thead>
<tbody>
{%
for
i
in
customer.refillings.all
()
%}
{%
for
i
in
customer.refillings.
order_by
(
'-date'
)
.
all
()
%}
<tr>
<td>
{{
i.date
|
localtime
|
date
(
DATETIME_FORMAT
)
}}
-
{{
i.date
|
localtime
|
time
(
DATETIME_FORMAT
)
}}
</td>
<td>
{{
i.counter
}}
</td>
<td><a
href=
"
{{
i.operator.get_absolute_url
()
}}
"
>
{{
i.operator.get_display_name
()
}}
</a></td>
<td>
{{
i.amount
}}
€
</td>
<td>
{{
i.get_payment_method_display
()
}}
</td>
</tr>
{%
endfor
%}
</tbody>
</table>
{%
endif
%}
{%
if
customer.buyings.exists
()
%}
<h4>
{%
trans
%}
B
uyings
{%
endtrans
%}
</h4>
<h4>
{%
trans
%}
Account b
uyings
{%
endtrans
%}
</h4>
<table>
<thead>
<tr>
<td>
{%
trans
%}
Date
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Counter
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Barman
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Label
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Quantity
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Total
{%
endtrans
%}
</td>
<td>
{%
trans
%}
Payment method
{%
endtrans
%}
</td>
</tr>
</thead>
<tbody>
{%
for
i
in
customer.buyings.all
()
%}
{%
for
i
in
customer.buyings.
order_by
(
'-date'
)
.
all
()
%}
<tr>
<td>
{{
i.date
|
localtime
|
date
(
DATETIME_FORMAT
)
}}
-
{{
i.date
|
localtime
|
time
(
DATETIME_FORMAT
)
}}
</td>
<td>
{{
i.seller
}}
</td>
<td>
{{
i.counter
}}
</td>
<td><a
href=
"
{{
i.seller.get_absolute_url
()
}}
"
>
{{
i.seller.get_display_name
()
}}
</a></td>
<td>
{{
i.label
}}
</td>
<td>
{{
i.quantity
}}
</td>
<td>
{{
i.quantity
*
i.unit_price
}}
€
</td>
<td>
{{
i.get_payment_method_display
()
}}
</td>
</tr>
{%
endfor
%}
</tbody>
</table>
{%
endif
%}
{%
if
customer.user.invoices.exists
()
%}
<h4>
{%
trans
%}
I
nvoices
{%
endtrans
%}
</h4>
<h4>
{%
trans
%}
Eboutic i
nvoices
{%
endtrans
%}
</h4>
<table>
<thead>
<tr>
...
...
@@ -65,7 +73,7 @@
</tr>
</thead>
<tbody>
{%
for
i
in
customer.user.invoices.all
()
%}
{%
for
i
in
customer.user.invoices.
order_by
(
'-date'
)
.
all
()
%}
<tr>
<td>
{{
i.date
|
localtime
|
date
(
DATETIME_FORMAT
)
}}
-
{{
i.date
|
localtime
|
time
(
DATETIME_FORMAT
)
}}
</td>
<td>
...
...
counter/migrations/0009_auto_20160818_1709.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0008_auto_20160818_0231'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'refilling'
,
name
=
'payment_method'
,
field
=
models
.
CharField
(
verbose_name
=
'payment method'
,
default
=
'CASH'
,
choices
=
[(
'CHECK'
,
'Check'
),
(
'CASH'
,
'Cash'
),
(
'EBOUTIC'
,
'Eboutic'
)],
max_length
=
255
),
),
]
counter/migrations/0010_auto_20160818_1716.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0009_auto_20160818_1709'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'refilling'
,
name
=
'payment_method'
,
field
=
models
.
CharField
(
default
=
'CASH'
,
max_length
=
255
,
verbose_name
=
'payment method'
,
choices
=
[(
'CHECK'
,
'Check'
),
(
'CASH'
,
'Cash'
),
(
'CARD'
,
'Credit card'
)]),
),
]
counter/migrations/0011_auto_20160818_1722.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
import
django.db.models.deletion
from
django.conf
import
settings
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0010_auto_20160818_1716'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'club'
,
field
=
models
.
ForeignKey
(
related_name
=
'sellings'
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
SET_NULL
,
to
=
'club.Club'
),
),
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'counter'
,
field
=
models
.
ForeignKey
(
related_name
=
'sellings'
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
SET_NULL
,
to
=
'counter.Counter'
),
),
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'customer'
,
field
=
models
.
ForeignKey
(
related_name
=
'buyings'
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
SET_NULL
,
to
=
'counter.Customer'
),
),
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'product'
,
field
=
models
.
ForeignKey
(
related_name
=
'sellings'
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
SET_NULL
,
blank
=
True
,
to
=
'counter.Product'
),
),
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'seller'
,
field
=
models
.
ForeignKey
(
related_name
=
'sellings_as_operator'
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
SET_NULL
,
to
=
settings
.
AUTH_USER_MODEL
),
),
]
counter/migrations/0012_selling_payment_method.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0011_auto_20160818_1722'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'selling'
,
name
=
'payment_method'
,
field
=
models
.
CharField
(
default
=
'SITH_ACCOUNT'
,
max_length
=
255
,
verbose_name
=
'payment method'
,
choices
=
[(
'SITH_ACCOUNT'
,
'Compte AE'
),
(
'CARD'
,
'Credit card'
)]),
),
]
counter/migrations/0013_auto_20160818_1736.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0012_selling_payment_method'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'payment_method'
,
field
=
models
.
CharField
(
max_length
=
255
,
default
=
'SITH_ACCOUNT'
,
verbose_name
=
'payment method'
,
choices
=
[(
'SITH_ACCOUNT'
,
'Sith account'
),
(
'CARD'
,
'Credit card'
)]),
),
]
counter/models.py
View file @
05bd177a
...
...
@@ -5,7 +5,8 @@ from django.conf import settings
from
django.core.urlresolvers
import
reverse
from
django.forms
import
ValidationError
from
datetime
import
timedelta
from
datetime
import
timedelta
,
datetime
from
pytz
import
timezone
import
random
import
string
...
...
@@ -206,7 +207,7 @@ class Refilling(models.Model):
amount
=
CurrencyField
(
_
(
'amount'
))
operator
=
models
.
ForeignKey
(
User
,
related_name
=
"refillings_as_operator"
,
blank
=
False
)
customer
=
models
.
ForeignKey
(
Customer
,
related_name
=
"refillings"
,
blank
=
False
)
date
=
models
.
DateTimeField
(
_
(
'date'
)
,
auto_now
=
True
)
date
=
models
.
DateTimeField
(
_
(
'date'
))
payment_method
=
models
.
CharField
(
_
(
'payment method'
),
max_length
=
255
,
choices
=
settings
.
SITH_COUNTER_PAYMENT_METHOD
,
default
=
'CASH'
)
bank
=
models
.
CharField
(
_
(
'bank'
),
max_length
=
255
,
...
...
@@ -223,6 +224,8 @@ class Refilling(models.Model):
# return reverse('counter:details', kwargs={'counter_id': self.id})
def
save
(
self
,
*
args
,
**
kwargs
):
if
not
self
.
date
:
self
.
date
=
datetime
.
now
().
replace
(
tzinfo
=
timezone
(
settings
.
TIME_ZONE
))
self
.
full_clean
()
if
not
self
.
is_validated
:
self
.
customer
.
amount
+=
self
.
amount
...
...
@@ -235,14 +238,16 @@ class Selling(models.Model):
Handle the sellings
"""
label
=
models
.
CharField
(
_
(
"label"
),
max_length
=
64
)
product
=
models
.
ForeignKey
(
Product
,
related_name
=
"sellings"
,
null
=
True
,
blank
=
True
)
counter
=
models
.
ForeignKey
(
Counter
,
related_name
=
"sellings"
,
blank
=
False
)
club
=
models
.
ForeignKey
(
Club
,
related_name
=
"sellings"
,
blank
=
False
)
product
=
models
.
ForeignKey
(
Product
,
related_name
=
"sellings"
,
null
=
True
,
blank
=
True
,
on_delete
=
models
.
SET_NULL
)
counter
=
models
.
ForeignKey
(
Counter
,
related_name
=
"sellings"
,
null
=
True
,
blank
=
False
,
on_delete
=
models
.
SET_NULL
)
club
=
models
.
ForeignKey
(
Club
,
related_name
=
"sellings"
,
null
=
True
,
blank
=
False
,
on_delete
=
models
.
SET_NULL
)
unit_price
=
CurrencyField
(
_
(
'unit price'
))
quantity
=
models
.
IntegerField
(
_
(
'quantity'
))
seller
=
models
.
ForeignKey
(
User
,
related_name
=
"sellings_as_operator"
,
blank
=
False
)
customer
=
models
.
ForeignKey
(
Customer
,
related_name
=
"buyings"
,
blank
=
False
)
date
=
models
.
DateTimeField
(
_
(
'date'
),
auto_now
=
True
)
seller
=
models
.
ForeignKey
(
User
,
related_name
=
"sellings_as_operator"
,
null
=
True
,
blank
=
False
,
on_delete
=
models
.
SET_NULL
)
customer
=
models
.
ForeignKey
(
Customer
,
related_name
=
"buyings"
,
null
=
True
,
blank
=
False
,
on_delete
=
models
.
SET_NULL
)
date
=
models
.
DateTimeField
(
_
(
'date'
))
payment_method
=
models
.
CharField
(
_
(
'payment method'
),
max_length
=
255
,
choices
=
[(
'SITH_ACCOUNT'
,
_
(
'Sith account'
)),
(
'CARD'
,
_
(
'Credit card'
))],
default
=
'SITH_ACCOUNT'
)
is_validated
=
models
.
BooleanField
(
_
(
'is validated'
),
default
=
False
)
class
Meta
:
...
...
@@ -253,6 +258,8 @@ class Selling(models.Model):
self
.
quantity
*
self
.
unit_price
,
self
.
customer
.
user
.
get_display_name
())
def
save
(
self
,
*
args
,
**
kwargs
):
if
not
self
.
date
:
self
.
date
=
datetime
.
now
().
replace
(
tzinfo
=
timezone
(
settings
.
TIME_ZONE
))
self
.
full_clean
()
if
not
self
.
is_validated
:
self
.
customer
.
amount
-=
self
.
quantity
*
self
.
unit_price
...
...
counter/views.py
View file @
05bd177a
...
...
@@ -44,7 +44,8 @@ class GetUserForm(forms.Form):
elif
cleaned_data
[
'id'
]
is
not
None
:
cus
=
Customer
.
objects
.
filter
(
user
=
cleaned_data
[
'id'
]).
first
()
sub
=
get_subscriber
(
cus
.
user
)
if
cus
is
not
None
else
None
if
cus
is
None
or
sub
is
None
or
(
date
.
today
()
-
sub
.
subscriptions
.
last
().
subscription_end
)
>
timedelta
(
days
=
90
):
if
(
cus
is
None
or
sub
is
None
or
not
sub
.
subscriptions
.
last
()
or
(
date
.
today
()
-
sub
.
subscriptions
.
last
().
subscription_end
)
>
timedelta
(
days
=
90
)):
raise
forms
.
ValidationError
(
_
(
"User not found"
))
cleaned_data
[
'user_id'
]
=
cus
.
user
.
id
cleaned_data
[
'user'
]
=
cus
.
user
...
...
eboutic/migrations/0002_auto_20160818_1635.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'eboutic'
,
'0001_initial'
),
]
operations
=
[
migrations
.
RemoveField
(
model_name
=
'basketitem'
,
name
=
'type'
,
),
migrations
.
RemoveField
(
model_name
=
'invoiceitem'
,
name
=
'type'
,
),
migrations
.
AddField
(
model_name
=
'basketitem'
,
name
=
'type_id'
,
field
=
models
.
IntegerField
(
default
=
1
,
verbose_name
=
'product type id'
),
preserve_default
=
False
,
),
migrations
.
AddField
(
model_name
=
'invoiceitem'
,
name
=
'type_id'
,
field
=
models
.
IntegerField
(
default
=
1
,
verbose_name
=
'product type id'
),
preserve_default
=
False
,
),
]
eboutic/migrations/0003_auto_20160818_1738.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'eboutic'
,
'0002_auto_20160818_1635'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'invoice'
,
name
=
'payment_method'
,
field
=
models
.
CharField
(
verbose_name
=
'payment method'
,
max_length
=
20
,
choices
=
[(
'CARD'
,
'Credit card'
),
(
'SITH_ACCOUNT'
,
'Sith account'
)]),
),
]
eboutic/migrations/0004_remove_invoice_payment_method.py
0 → 100644
View file @
05bd177a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'eboutic'
,
'0003_auto_20160818_1738'
),
]
operations
=
[
migrations
.
RemoveField
(
model_name
=
'invoice'
,
name
=
'payment_method'
,
),
]
eboutic/models.py
View file @
05bd177a
from
django.db
import
models
,
DataError
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.conf
import
settings
from
accounting.models
import
CurrencyField
from
counter.models
import
Counter
,
Product
,
Customer
from
counter.models
import
Counter
,
Product
,
Customer
,
Selling
,
Refilling
from
core.models
import
User
class
Basket
(
models
.
Model
):
...
...
@@ -15,7 +16,7 @@ class Basket(models.Model):
def
add_product
(
self
,
p
,
q
=
1
):
item
=
self
.
items
.
filter
(
product_id
=
p
.
id
).
first
()
if
item
is
None
:
BasketItem
(
basket
=
self
,
product_id
=
p
.
id
,
product_name
=
p
.
name
,
type
=
p
.
product_type
.
name
,
BasketItem
(
basket
=
self
,
product_id
=
p
.
id
,
product_name
=
p
.
name
,
type
_id
=
p
.
product_type
.
id
,
quantity
=
q
,
product_unit_price
=
p
.
selling_price
).
save
()
else
:
item
.
quantity
+=
q
...
...
@@ -44,10 +45,11 @@ class Invoice(models.Model):
"""
user
=
models
.
ForeignKey
(
User
,
related_name
=
'invoices'
,
verbose_name
=
_
(
'user'
),
blank
=
False
)
date
=
models
.
DateTimeField
(
_
(
'date'
),
auto_now
=
True
)
payment_method
=
models
.
CharField
(
choices
=
[(
'CREDIT_CARD'
,
_
(
'Credit card'
)),
(
'SITH_ACCOUNT'
,
_
(
'Sith account'
))],
max_length
=
20
,
verbose_name
=
_
(
'payment method'
))
validated
=
models
.
BooleanField
(
_
(
"validated"
),
default
=
False
)
def
__str__
(
self
):
return
"%s - %s - %s"
%
(
self
.
user
,
self
.
get_total
(),
self
.
date
)
def
get_total
(
self
):
total
=
0
for
i
in
self
.
items
.
all
():
...
...
@@ -59,23 +61,44 @@ class Invoice(models.Model):
raise
DataError
(
_
(
"Invoice already validated"
))
from
counter.models
import
Customer
if
not
Customer
.
objects
.
filter
(
user
=
self
.
user
).
exists
():
number
=
Customer
.
objects
.
last
().
account_id
[:
-
1
]
number
=
Customer
.
objects
.
count
()
+
1
Customer
(
user
=
self
.
user
,
account_id
=
Customer
.
generate_account_id
(
number
),
amount
=
0
).
save
()
if
self
.
payment_method
==
"SITH_ACCOUNT"
:
self
.
user
.
customer
.
amount
-=
self
.
get_total
()
self
.
user
.
customer
.
save
()
else
:
for
i
in
self
.
items
.
filter
(
type
=
"REFILLING"
).
all
():
self
.
user
.
customer
.
amount
+=
i
.
product_unit_price
*
i
.
quantity
self
.
user
.
customer
.
save
()
eboutic
=
Counter
.
objects
.
filter
(
type
=
"EBOUTIC"
).
first
()
for
i
in
self
.
items
.
all
():
if
i
.
type_id
==
settings
.
SITH_COUNTER_PRODUCTTYPE_REFILLING
:
new
=
Refilling
(
counter
=
eboutic
,
customer
=
self
.
user
.
customer
,
operator
=
self
.
user
,
amount
=
i
.
product_unit_price
*
i
.
quantity
,
payment_method
=
"CARD"
,
bank
=
"OTHER"
,
date
=
self
.
date
,
)
new
.
save
()
else
:
product
=
Product
.
objects
.
filter
(
id
=
i
.
product_id
).
first
()
new
=
Selling
(
label
=
i
.
product_name
,
counter
=
eboutic
,
club
=
product
.
club
,
product
=
product
,
seller
=
self
.
user
,
customer
=
self
.
user
.
customer
,
unit_price
=
i
.
product_unit_price
,
quantity
=
i
.
quantity
,
payment_method
=
"CARD"
,
is_validated
=
True
,
date
=
self
.
date
,
)
new
.
save
()
self
.
validated
=
True
self
.
save
()
class
AbstractBaseItem
(
models
.
Model
):
product_id
=
models
.
IntegerField
(
_
(
'product id'
))
product_name
=
models
.
CharField
(
_
(
'product name'
),
max_length
=
255
)
type
=
models
.
Cha
rField
(
_
(
'product type
'
),
max_length
=
255
)
type
_id
=
models
.
Intege
rField
(
_
(
'product type
id'
)
)
product_unit_price
=
CurrencyField
(
_
(
'unit price'
))
quantity
=
models
.
IntegerField
(
_
(
'quantity'
))
...
...
eboutic/templates/eboutic/eboutic_main.jinja
View file @
05bd177a
{%
extends
"core/base.jinja"
%}
{%
block
title
%}
{%
trans
%}
Eboutic
{%
endtrans
%}
{%
endblock
%}
{%
macro
add_product
(
id
,
content
)
%}
<form
method=
"post"
action=
"
{{
url
(
'eboutic:main'
)
}}
"
class=
"inline"
style=
"display:inline"
>
{%
csrf_token
%}
...
...
@@ -34,11 +38,14 @@
</form>
</div>
<div>
<p><strong>
{%
trans
%}
Products:
{%
endtrans
%}
</strong>
{%
for
p
in
eboutic.products.all
()
%}
{{
add_product
(
p.id
,
p.name
)
}}
{%
for
t
in
categories
%}
{%
if
eboutic.products.
filter
(
product_type
=
t
)
.
exists
()
%}
<h5>
{{
t
}}
</h5>
{%
for
p
in
eboutic.products.
filter
(
product_type
=
t
)
.
all
()
%}
{{
add_product
(
p.id
,
p.name
)
}}
{%
endfor
%}
{%
endif
%}
{%
endfor
%}
</p>
</div>
{%
endblock
%}
...
...
eboutic/templates/eboutic/eboutic_makecommand.jinja
View file @
05bd177a
{%
extends
"core/base.jinja"
%}
{%
block
title
%}
{%
trans
%}
Basket state
{%
endtrans
%}
{%
endblock
%}
{%
block
content
%}
<h3>
{%
trans
%}
Eboutic
{%
endtrans
%}
</h3>
...
...
@@ -30,7 +34,7 @@
{%
endfor
%}
<input
type=
"submit"
value=
"
{%
trans
%}
Pay with credit card
{%
endtrans
%}
"
/>
</form>
{%
if
basket.items.
filter
(
type
=
"
REFILLING
"
)
.
exists
()
%}
{%
if
basket.items.
filter
(
type
_id
=
settings.SITH_COUNTER_PRODUCTTYPE_
REFILLING
)
.
exists
()
%}
<p>
{%
trans
%}
AE account payment disabled because your basket contains refilling items.
{%
endtrans
%}
</p>
{%
else
%}
<form
method=
"post"
action=
"
{{
url
(
'eboutic:pay_with_sith'
)
}}
"
>
...
...
eboutic/views.py
View file @
05bd177a
...
...
@@ -14,10 +14,9 @@ from django.db import transaction, DataError
from
django.utils.translation
import
ugettext
as
_
from
django.conf
import
settings
from
counter.models
import
Product
,
Customer
,
Counter
from
counter.models
import
Product
,
Customer
,
Counter
,
ProductType
,
Selling
from
eboutic.models
import
Basket
,
Invoice
,
BasketItem
,
InvoiceItem
# Create your views here.
class
EbouticMain
(
TemplateView
):
template_name
=
'eboutic/eboutic_main.jinja'
...
...
@@ -72,6 +71,7 @@ class EbouticMain(TemplateView):
kwargs
=
super
(
EbouticMain
,
self
).
get_context_data
(
**
kwargs
)
kwargs
[
'basket'
]
=
self
.
basket
kwargs
[
'eboutic'
]
=
Counter
.
objects
.
filter
(
type
=
"EBOUTIC"
).
first
()
kwargs
[
'categories'
]
=
ProductType
.
objects
.
all
()
return
kwargs
class
EbouticCommand
(
TemplateView
):
...
...
@@ -125,7 +125,7 @@ class EbouticPayWithSith(TemplateView):
if
'basket_id'
not
in
request
.
session
.
keys
()
or
not
request
.
user
.
is_authenticated
():
return
HttpResponseRedirect
(
reverse_lazy
(
'eboutic:main'
,
args
=
self
.
args
,
kwargs
=
kwargs
))
b
=
Basket
.
objects
.
filter
(
id
=
request
.
session
[
'basket_id'
]).
first
()
if
b
is
None
or
b
.
items
.
filter
(
type
=
"
REFILLING
"
).
exists
():
if
b
is
None
or
b
.
items
.
filter
(
type
_id
=
settings
.
SITH_COUNTER_PRODUCTTYPE_
REFILLING
).
exists
():
return
HttpResponseRedirect
(
reverse_lazy
(
'eboutic:main'
,
args
=
self
.
args
,
kwargs
=
kwargs
))
c
=
Customer
.
objects
.
filter
(
user__id
=
b
.
user
.
id
).
first
()
if
c
is
None
:
...
...
@@ -134,14 +134,20 @@ class EbouticPayWithSith(TemplateView):
if
c
.
amount
<
b
.
get_total
():
raise
DataError
(
_
(
"You do not have enough money to buy the basket"
))
else
:
i
=
Invoice
()
i
.
user
=
b
.
user
i
.
payment_method
=
"SITH_ACCOUNT"
i
.
save
()
eboutic
=
Counter
.
objects
.
filter
(
type
=
"EBOUTIC"
).
first
()
for
it
in
b
.
items
.
all
():
InvoiceItem
(
invoice
=
i
,
product_id
=
it
.
product_id
,
product_name
=
it
.
product_name
,
type
=
it
.
type
,
product_unit_price
=
it
.
product_unit_price
,
quantity
=
it
.
quantity
).
save
()
i
.
validate
()
product
=
Product
.
objects
.
filter
(
id
=
it
.
product_id
).
first
()
Selling
(
label
=
it
.
product_name
,
counter
=
eboutic
,
club
=
product
.
club
,
product
=
product
,
seller
=
c
.
user
,
customer
=
c
,
unit_price
=
it
.
product_unit_price
,
quantity
=
it
.
quantity
,
payment_method
=
"SITH_ACCOUNT"
,
).
save
()
b
.
delete
()
kwargs
[
'not_enough'
]
=
False
request
.
session
.
pop
(
'basket_id'
,
None
)
...
...
@@ -172,10 +178,10 @@ class EtransactionAutoAnswer(View):
return
HttpResponse
(
"Basket does not exists"
,
status
=
400
)
i
=
Invoice
()
i
.
user
=
b
.
user
i
.
payment_method
=
"
CREDIT_
CARD"
i
.
payment_method
=
"CARD"
i
.
save
()
for
it
in
b
.
items
.
all
():
InvoiceItem
(
invoice
=
i
,
product_id
=
it
.
product_id
,
product_name
=
it
.
product_name
,
type
=
it
.
type
,
InvoiceItem
(
invoice
=
i
,
product_id
=
it
.
product_id
,
product_name
=
it
.
product_name
,
type
_id
=
it
.
type
_id
,
product_unit_price
=
it
.
product_unit_price
,
quantity
=
it
.
quantity
).
save
()
i
.
validate
()
b
.
delete
()
...
...
locale/fr/LC_MESSAGES/django.mo
View file @
05bd177a
No preview for this file type
locale/fr/LC_MESSAGES/django.po
View file @
05bd177a
...
...
@@ -6,7 +6,7 @@
msgid
""
msgstr
""
"Report-Msgid-Bugs-To:
\n
"
"POT-Creation-Date: 2016-08-1
5 21
:4
1
+0200
\n
"
"POT-Creation-Date: 2016-08-1
8 17
:4
0
+0200
\n
"
"PO-Revision-Date: 2016-07-18
\n
"
"Last-Translator: Skia <skia@libskia.so>
\n
"
"Language-Team: AE info <ae.info@utbm.fr>
\n
"
...
...
@@ -40,12 +40,12 @@ msgstr "numero de compte"
msgid
"%(club_account)s on %(bank_account)s"
msgstr
"%(club_account)s sur %(bank_account)s"
#: accounting/models.py:109 club/models.py:147 counter/models.py:2
68
#: accounting/models.py:109 club/models.py:147 counter/models.py:2
71
#: launderette/models.py:122
msgid
"start date"
msgstr
"date de début"
#: accounting/models.py:110 club/models.py:148 counter/models.py:2
69
#: accounting/models.py:110 club/models.py:148 counter/models.py:2
72
msgid
"end date"
msgstr
"date de fin"
...
...
@@ -67,8 +67,8 @@ msgid "number"
msgstr
"numéro"
#: accounting/models.py:154 core/models.py:404 core/models.py:680
#: counter/models.py:209 counter/models.py:24
4
eboutic/models.py:1
3
#: eboutic/models.py:4
6
#: counter/models.py:209 counter/models.py:24
5
eboutic/models.py:1
4
#: eboutic/models.py:4
7
msgid
"date"
msgstr
"date"
...
...
@@ -80,8 +80,8 @@ msgstr "intitulé"
msgid
"remark"
msgstr
"remarque"
#: accounting/models.py:157 counter/models.py:210
eboutic
/models.py:
48
#: subscription/models.py:34
#: accounting/models.py:157 counter/models.py:210
counter
/models.py:
247
#:
eboutic/models.py:49
subscription/models.py:34
msgid
"payment method"
msgstr
"méthode de paiement"
...
...
@@ -89,7 +89,7 @@ msgstr "méthode de paiement"
msgid
"cheque number"