aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2018-01-08 10:54:10 -0500
committerMitch Riedstra <mitch@riedstra.us>2018-01-08 10:54:10 -0500
commita7966a6ab6ed824613f1e22b568a1eba56e8369f (patch)
tree3d23bbb2230ee5638f69a065baa78dc07375634c /app
parentcb16790ea8be3dde400aa092808bca3e71c79235 (diff)
downloaddispatch-tracker-a7966a6ab6ed824613f1e22b568a1eba56e8369f.tar.gz
dispatch-tracker-a7966a6ab6ed824613f1e22b568a1eba56e8369f.tar.xz
Initial ability to generate invoices from the fake data tool
Diffstat (limited to 'app')
-rw-r--r--app/dispatch/management/commands/insert_fake_data.py73
-rw-r--r--app/dispatch/misc.py8
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