diff options
| author | Mitch Riedstra <mitch@riedstra.us> | 2018-01-08 10:54:10 -0500 |
|---|---|---|
| committer | Mitch Riedstra <mitch@riedstra.us> | 2018-01-08 10:54:10 -0500 |
| commit | a7966a6ab6ed824613f1e22b568a1eba56e8369f (patch) | |
| tree | 3d23bbb2230ee5638f69a065baa78dc07375634c | |
| parent | cb16790ea8be3dde400aa092808bca3e71c79235 (diff) | |
| download | dispatch-tracker-a7966a6ab6ed824613f1e22b568a1eba56e8369f.tar.gz dispatch-tracker-a7966a6ab6ed824613f1e22b568a1eba56e8369f.tar.xz | |
Initial ability to generate invoices from the fake data tool
| -rw-r--r-- | app/dispatch/management/commands/insert_fake_data.py | 73 | ||||
| -rw-r--r-- | app/dispatch/misc.py | 8 |
2 files changed, 79 insertions, 2 deletions
diff --git a/app/dispatch/management/commands/insert_fake_data.py b/app/dispatch/management/commands/insert_fake_data.py index 6b3f49d..0ceac6e 100644 --- a/app/dispatch/management/commands/insert_fake_data.py +++ b/app/dispatch/management/commands/insert_fake_data.py @@ -1,8 +1,11 @@ from django.core.management.base import BaseCommand, CommandError from django.core.files import File from django.contrib.auth import get_user_model -from dispatch.models import Customer, Load, Identity, Paperwork +from dispatch.models import Customer, Load, Identity, Paperwork, Invoice +import datetime from faker import Faker +from dateutil import rrule +from dispatch.misc import get_week_dates_datetime import random from django.db.utils import IntegrityError @@ -26,6 +29,7 @@ class Command(BaseCommand): # parser.add_argument('--file', type=str, dest='filename') parser.add_argument('--companies', type=int, dest='companies', default='0') parser.add_argument('--attachments', type=bool, dest='attachments', default=False) + parser.add_argument('--invoices', type=bool, dest='invoices', default=False) parser.add_argument('--users', type=int, dest='users', default='0') parser.add_argument('--loads', type=int, dest='loads', default='0') parser.add_argument('--start-date', type=str, dest='startdate', default='-2w') @@ -68,6 +72,73 @@ class Command(BaseCommand): l = self.fake_load(u, co, options['attachments']) + + if options['invoices']: + # I'm pretty sure this is slow, but it's not run often + # and can/should be fixed later + start_load = Load.objects.order_by('date')[0] + end_load = Load.objects.order_by('-date')[0] + # print("Start Load: {} PK: {} user: {}".format(start_load, start_load.pk, start_load.user)) + # print("End Load: {} PK: {} user: {}".format(end_load, end_load.pk, end_load.user)) + + # Use the date of the first load to the date of the last load, and + # iterate over all of the weeks in between + for dt in rrule.rrule(rrule.WEEKLY, dtstart=start_load.date, until=end_load.date): + print(dt) + + # This will hold all of the users for the week + users = [] + + # Let's get a listing of loads for the week + wk = get_week_dates_datetime(dt) + loads = Load.objects.filter(date__range=[wk['start_date'], wk['end_date']]) + for l in loads: + if l.user not in users: + users.append(l.user) + print(l.user) + + + for u in users: + due_date = wk['start_date'] + datetime.timedelta(days=30) + inv = Invoice(user=u, invoice_date=wk['start_date'], due_date=due_date) + + inv.setup() + + inv.save() + + inv.populate_items(start_date=wk['start_date'], end_date=wk['end_date']) + + print(inv) + + + # wk = get_week_dates_datetime(dt) + # loads = Load.objects.filter(date__range=[wk['start_date'], wk['end_date']]) + # loads = loads.order_by('user') + + # uniqe_users + + # print("################################################################################") + # print("MUH LOADS") + # print("FOR: {}".format(dt)) + # for l in loads: + # print("PK: {}, Date: {}, User: {}".format(l.pk, l.date, l.user)) + # print(loads) + # print("################################################################################") + + + # break + + + + + # users = User.objects.all() + # for u in users: + # inv = Invoice(user=u, invoice_date=start_date, due_date=due_date) + # inv.setup() + # inv.save() + + # inv.populate_items_default_date + def fake_customer(self): new_customer = Customer( name=self.fake.company(), diff --git a/app/dispatch/misc.py b/app/dispatch/misc.py index 14bb5e7..e0976bf 100644 --- a/app/dispatch/misc.py +++ b/app/dispatch/misc.py @@ -3,11 +3,17 @@ from datetime import datetime, timedelta from dateutil import rrule import uuid +# Text formatted date. *sigh* def get_week_dates(date=None): - week_dates = {} if date == None: date = formats.date_format(datetime.now(), "SHORT_DATE_FORMAT") dt = datetime.strptime(date, '%m/%d/%Y') + + return get_week_dates_datetime(dt=dt) + +def get_week_dates_datetime(dt=None): + week_dates = {} + weekday = dt.weekday() if weekday == 6: week_dates['start_date'] = dt |
