Skip to content
This repository was archived by the owner on May 25, 2023. It is now read-only.

Commit a430b2a

Browse files
committed
Fixes #35
1 parent cacb218 commit a430b2a

File tree

10 files changed

+89
-54
lines changed

10 files changed

+89
-54
lines changed

controllers/customers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3005,7 +3005,7 @@ def subscription_delete():
30053005
cs = CustomerSubscription(csID)
30063006
response.subtitle = SPAN(T("Delete subscription"), ': ', cs.name)
30073007

3008-
query = (db.invoices.customers_subscriptions_id == csID)
3008+
query = (db.invoices_customers_subscriptions.customers_subscriptions_id == csID)
30093009
invoice_count = db(query).count()
30103010

30113011
if invoice_count:

controllers/finance.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -667,9 +667,9 @@ def generate_batch_items(form):
667667
def generate_batch_items_invoices(pbID,
668668
pb,
669669
currency):
670-
'''
670+
"""
671671
Generate invoices batch and write to db.payment_batches_items
672-
'''
672+
"""
673673
query = (db.invoices.Status == 'sent') & \
674674
(db.invoices.payment_methods_id == 3) # 3 = Direct Debit
675675

@@ -680,6 +680,9 @@ def generate_batch_items_invoices(pbID,
680680
db.invoices.id),
681681
db.invoices_customers.on(db.invoices_customers.invoices_id ==
682682
db.invoices.id),
683+
db.invoices_customers_subscriptions.on(
684+
db.invoices_customers_subscriptions.invoices_id ==
685+
db.invoices.id),
683686
db.auth_user.on(db.invoices_customers.auth_customer_id ==
684687
db.auth_user.id),
685688
db.customers_payment_info.on(
@@ -690,6 +693,7 @@ def generate_batch_items_invoices(pbID,
690693

691694
rows = db(query).select(db.invoices.ALL,
692695
db.invoices_amounts.ALL,
696+
db.invoices_customers_subscriptions.ALL,
693697
db.customers_payment_info.ALL,
694698
db.school_locations.Name,
695699
db.auth_user.id,
@@ -698,7 +702,7 @@ def generate_batch_items_invoices(pbID,
698702

699703
for row in rows:
700704
cuID = row.auth_user.id
701-
csID = row.invoices.customers_subscriptions_id
705+
csID = row.invoices_customers_subscriptions.customers_subscriptions_id
702706
iID = row.invoices.id
703707

704708
amount = row.invoices_amounts.TotalPriceVAT

controllers/invoices.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1189,7 +1189,7 @@ def list_payments():
11891189
db.invoices.Note.readable = False
11901190
db.invoices.Terms.readable = False
11911191

1192-
query = (db.invoices.auth_customer_id == cuID)
1192+
query = (db.invoices_customers.auth_customer_id == cuID)
11931193
#links = [ list_invoices_get_links ]
11941194
links = ''
11951195

@@ -1200,9 +1200,11 @@ def list_payments():
12001200
db.invoices_payments.payment_methods_id,
12011201
db.invoices_payments.Note ]
12021202

1203-
left = [ db.invoices.on(db.invoices_payments.invoices_id == \
1203+
left = [ db.invoices.on(db.invoices_payments.invoices_id ==
12041204
db.invoices.id),
1205-
db.invoices_amounts.on(db.invoices_payments.invoices_id == \
1205+
db.invoices_customers.on(db.invoices_customers.invoices_id ==
1206+
db.invoices.id),
1207+
db.invoices_amounts.on(db.invoices_payments.invoices_id ==
12061208
db.invoices.id) ]
12071209

12081210
delete_permission = auth.has_membership(group_id='Admins') or \
@@ -1304,9 +1306,9 @@ def subscriptions_create_invoices():
13041306

13051307

13061308
def subscriptions_create_invoices_execute(year, month, description):
1307-
'''
1309+
"""
13081310
Actually create invoices for subscriptions for a given month
1309-
'''
1311+
"""
13101312
firstdaythismonth = datetime.date(year, month, 1)
13111313
lastdaythismonth = get_last_day_month(firstdaythismonth)
13121314

@@ -1330,9 +1332,6 @@ def subscriptions_create_invoices_execute(year, month, description):
13301332
csap.Description
13311333
]
13321334

1333-
1334-
#TODO: Link invoices id using invoices_customers and invoices_customers_subscriptions
1335-
13361335
rows = db.executesql(
13371336
"""
13381337
SELECT cs.id,
@@ -1395,13 +1394,15 @@ def subscriptions_create_invoices_execute(year, month, description):
13951394
(cs.Enddate >= '{firstdaythismonth}' OR cs.Enddate IS NULL) AND
13961395
ssp.Price <> 0 AND
13971396
ssp.Price IS NOT NULL AND
1398-
au.archived = 'F'
1397+
au.trashed = 'F'
13991398
""".format(firstdaythismonth=firstdaythismonth,
14001399
lastdaythismonth =lastdaythismonth,
14011400
year=year,
14021401
month=month),
14031402
fields=fields)
14041403

1404+
print db._lastsql[0]
1405+
14051406
igpt = db.invoices_groups_product_types(ProductType = 'subscription')
14061407
igID = igpt.invoices_groups_id
14071408

@@ -1726,8 +1727,11 @@ def export_invoices_get_export(from_date, until_date, invoices_groups_id, filety
17261727
db.auth_user.on(db.invoices_customers.auth_customer_id == db.auth_user.id),
17271728
db.tax_rates.on(db.invoices_items.tax_rates_id ==
17281729
db.tax_rates.id),
1730+
db.invoices_customers_subscriptions.on(
1731+
db.invoices_customers_subscriptions.invoices_id ==
1732+
db.invoices.id),
17291733
db.customers_subscriptions.on(
1730-
db.invoices.customers_subscriptions_id ==
1734+
db.invoices_customers_subscriptions.customers_subscriptions_id ==
17311735
db.customers_subscriptions.id),
17321736
db.school_subscriptions.on(
17331737
db.customers_subscriptions.school_subscriptions_id ==
@@ -1919,9 +1923,9 @@ def export_payments():
19191923

19201924

19211925
def export_payments_get_export(from_date, until_date, invoices_groups_id):
1922-
'''
1926+
"""
19231927
Payments export
1924-
'''
1928+
"""
19251929
# create filestream
19261930
stream = cStringIO.StringIO()
19271931

@@ -1962,13 +1966,19 @@ def export_payments_get_export(from_date, until_date, invoices_groups_id):
19621966
db.invoices_payments.invoices_id),
19631967
db.payment_methods.on(db.invoices_payments.payment_methods_id ==
19641968
db.payment_methods.id),
1969+
db.invoices_customers_subscriptions.on(
1970+
db.invoices_customers_subscriptions.invoices_id ==
1971+
db.invoices.id),
19651972
db.customers_subscriptions.on(
1966-
db.invoices.customers_subscriptions_id ==
1973+
db.invoices_customers_subscriptions.customers_subscriptions_id ==
19671974
db.customers_subscriptions.id),
19681975
db.school_subscriptions.on(
19691976
db.customers_subscriptions.school_subscriptions_id ==
19701977
db.school_subscriptions.id),
1971-
db.auth_user.on(db.invoices.auth_customer_id == db.auth_user.id),
1978+
db.invoices_customers.on(db.invoices_customers.invoices_id ==
1979+
db.invoices.id),
1980+
db.auth_user.on(db.invoices_customers.auth_customer_id == db.auth_user.id),
1981+
19721982
]
19731983

19741984
rows = db(query).select(db.invoices_payments.ALL,

controllers/reports.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,7 @@ def dropin_trial_classes_get_rows(date, att_type):
791791

792792
query = '''
793793
SELECT au.id,
794-
au.archived,
794+
au.trashed,
795795
au.thumbsmall,
796796
au.birthday,
797797
au.display_name,
@@ -2384,7 +2384,7 @@ def subscriptions_alt_prices():
23842384
cs.auth_customer_id,
23852385
cs.school_subscriptions_id,
23862386
au.id,
2387-
au.archived,
2387+
au.trashed,
23882388
au.birthday,
23892389
au.display_name,
23902390
au.thumbsmall,
@@ -4562,9 +4562,13 @@ def get_month_subscriptions(date):
45624562
month = date.month
45634563

45644564
left = [db.invoices_amounts.on(db.invoices.id ==
4565-
db.invoices_amounts.invoices_id)]
4565+
db.invoices_amounts.invoices_id),
4566+
db.invoices_customers_subscriptions.on(
4567+
db.invoices_customers_subscriptions.invoices_id ==
4568+
db.invoices.id)
4569+
]
45664570

4567-
query = (db.invoices.customers_subscriptions_id != None) & \
4571+
query = (db.invoices_customers_subscriptions.customers_subscriptions_id != None) & \
45684572
(db.invoices.SubscriptionMonth == date.month) & \
45694573
(db.invoices.SubscriptionYear == date.year)
45704574
rows = db(query).select(db.invoices_amounts.ALL,

modules/openstudio/openstudio.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2314,10 +2314,10 @@ def __init__(self, csID):
23142314

23152315

23162316
def create_invoice_for_month(self, SubscriptionYear, SubscriptionMonth):
2317-
'''
2317+
"""
23182318
:param SubscriptionYear: Year of subscription
23192319
:param SubscriptionMonth: Month of subscription
2320-
'''
2320+
"""
23212321
db = current.globalenv['db']
23222322
TODAY_LOCAL = current.globalenv['TODAY_LOCAL']
23232323
DATE_FORMAT = current.globalenv['DATE_FORMAT']
@@ -2329,11 +2329,17 @@ def create_invoice_for_month(self, SubscriptionYear, SubscriptionMonth):
23292329
firstdaythismonth = datetime.date(SubscriptionYear, SubscriptionMonth, 1)
23302330
lastdaythismonth = get_last_day_month(firstdaythismonth)
23312331

2332+
left = [ db.invoices_customers_subscriptions.on(
2333+
db.invoices_customers_subscriptions.invoices_id ==
2334+
db.invoices.id
2335+
)]
2336+
23322337
# Check if an invoice already exists, if so, return invoice id
2333-
query = (db.invoices.customers_subscriptions_id == self.csID) & \
2338+
query = (db.invoices_customers_subscriptions.customers_subscriptions_id == self.csID) & \
23342339
(db.invoices.SubscriptionYear == SubscriptionYear) & \
23352340
(db.invoices.SubscriptionMonth == SubscriptionMonth)
2336-
rows = db(query).select(db.invoices.ALL)
2341+
rows = db(query).select(db.invoices.ALL,
2342+
left=left)
23372343
if len(rows):
23382344
return rows.first().id
23392345

@@ -3249,7 +3255,7 @@ def get_attendance_rows(self, clsID, date):
32493255

32503256
query = '''
32513257
SELECT au.id,
3252-
au.archived,
3258+
au.trashed,
32533259
au.birthday,
32543260
au.thumbsmall,
32553261
au.first_name,
@@ -3364,11 +3370,11 @@ def get_attendance_rows_past_days(self, clsID, date, days):
33643370

33653371

33663372
def get_reservation_rows(self, clsID, date):
3367-
'''
3373+
"""
33683374
:param clsID: db.classes.id
33693375
:param date: datetime.date
33703376
:return: reservation rows for a class
3371-
'''
3377+
"""
33723378
db = current.globalenv['db']
33733379

33743380
fields = [
@@ -3389,7 +3395,7 @@ def get_reservation_rows(self, clsID, date):
33893395

33903396
query = '''
33913397
SELECT au.id,
3392-
au.archived,
3398+
au.trashed,
33933399
au.birthday,
33943400
au.thumbsmall,
33953401
au.first_name,
@@ -8352,7 +8358,6 @@ def _add_get_form_enable_subscription_fields(self, csID):
83528358
db = current.globalenv['db']
83538359

83548360
cs = CustomerSubscription(csID)
8355-
db.invoices.customers_subscriptions_id.default = csID
83568361
db.invoices.payment_methods_id.default = cs.payment_methods_id
83578362
db.invoices.SubscriptionYear.readable = True
83588363
db.invoices.SubscriptionYear.writable = True
@@ -8732,7 +8737,6 @@ def list_invoices(self, cuID=None, csID=None, search_enabled=False, group_filter
87328737
# General list, list for customer or list for subscription
87338738
if not cuID and not csID:
87348739
# list all invoices
8735-
db.invoices.auth_customer_id.readable = True
87368740
fields.insert(2, db.invoices.CustomerListName)
87378741

87388742
if cuID:
@@ -8745,14 +8749,12 @@ def list_invoices(self, cuID=None, csID=None, search_enabled=False, group_filter
87458749
delete_permission = auth.has_membership(group_id='Admins') or \
87468750
auth.has_permission('delete', 'invoices')
87478751

8748-
headers = {'invoices.auth_customer_id': T("Customer")}
87498752

87508753
grid = SQLFORM.grid(query,
87518754
links=links,
87528755
left=left,
87538756
field_id=db.invoices.id,
87548757
fields=fields,
8755-
headers=headers,
87568758
create=False,
87578759
editable=False,
87588760
details=False,

modules/os_upgrade.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def set_version():
1919

2020
# set release
2121
row = db.sys_properties(Property='VersionRelease')
22-
release = '1'
22+
release = '2'
2323
if not row:
2424
db.sys_properties.insert(Property='VersionRelease',
2525
PropertyValue=release)

tests/controllers/test_03_customers_controller.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -613,9 +613,9 @@ def test_customers_subscription_edit(client, web2py):
613613

614614

615615
def test_customers_subscription_delete(client, web2py):
616-
'''
616+
"""
617617
Is the custom delete function for customer subscriptions working?
618-
'''
618+
"""
619619
# get random url to initialize payment methods
620620
url = '/default/user/login'
621621
client.get(url)
@@ -624,9 +624,10 @@ def test_customers_subscription_delete(client, web2py):
624624
populate_customers_with_subscriptions(web2py, 2)
625625

626626
# insert invoice and check that the subscription isn't deletable anymore
627+
csID = 1
627628
iID = web2py.db.invoices.insert(
628629
invoices_groups_id = 100,
629-
customers_subscriptions_id = 1,
630+
customers_subscriptions_id = csID,
630631
SubscriptionMonth = 1,
631632
SubscriptionYear = 2014,
632633
Status = 'sent',
@@ -639,6 +640,11 @@ def test_customers_subscription_delete(client, web2py):
639640
invoices_id=iID
640641
)
641642

643+
icsID = web2py.db.invoices_customers_subscriptions.insert(
644+
customers_subscriptions_id = csID,
645+
invoices_id = iID
646+
)
647+
642648
web2py.db.commit()
643649

644650
url = '/customers/subscription_delete?cuID=1001&csID=1'

tests/controllers/test_12_invoices_controller.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ def test_invoice_add_from_customer(client, web2py):
4949

5050

5151
def test_invoice_add_from_customer_subscription(client, web2py):
52-
'''
52+
"""
5353
Can we add a subscription from an invoice and does it set the
5454
cusotmers_subscriptions_id, year and month correctly
55-
'''
55+
"""
5656
# get random URL to initialize OpenStudio environment
5757
url = '/default/user/login'
5858
client.get(url)
@@ -76,11 +76,18 @@ def test_invoice_add_from_customer_subscription(client, web2py):
7676
assert data['Description'] in client.text
7777

7878
invoice = web2py.db.invoices(1)
79-
80-
assert invoice.customers_subscriptions_id == 1
8179
assert invoice.SubscriptionYear == 2014
8280
assert invoice.SubscriptionMonth == 1
8381

82+
# Verify linking of invoice to customer and subscription
83+
ic = web2py.db.invoices_customers(1)
84+
assert ic.invoices_id == 1
85+
assert ic.auth_customer_id == 1001
86+
87+
ics = web2py.db.invoices_customers_subscriptions(1)
88+
assert ics.invoices_id == 1
89+
assert ics.customers_subscriptions_id == 1
90+
8491
# verify redirection
8592
assert invoice.InvoiceID in client.text
8693

@@ -261,7 +268,7 @@ def test_subscriptions_create_montly_invoices(client, web2py):
261268
assert ics.customers_subscriptions_id == 1
262269

263270
# make sure the 2nd customer (1002) doesn't have an invoice, the subscription is paused
264-
assert web2py.db(web2py.db.invoices.auth_customer_id==1002).count() == 0
271+
assert web2py.db(web2py.db.invoices_customers.auth_customer_id==1002).count() == 0
265272

266273
## check created invoice items
267274
# alt. Price subscription item (first subscription gets a different price)

0 commit comments

Comments
 (0)