# dispatch-tracker Subcontractor invoicing system Subcontractor Fregith Invoicing System A business solution for subcontractors that don't invoice you. Saves 30 minutes per client saved TODO: * Friendly Error pages Requirements going forward: * Pagination for the Invoices page * Paid field for invoice * along with method & identifier i.e. check number * Require PDF attached to each load in order to generate invoice for listing * Description format field for customer objects & * on load create page dynamically pull in cursomter description format and display above the form field * Settings: * `default_bill_to` must be set * Upload Invoice logos on Identity Objects for use in Invoices * Change "user" to Vendor on the "Add Load Page" * Change Name To "Load Pay System" -- we're going to think about it * Freight Invoicing System * /loads * Give a warning when any loads don't have paperwork attached to them * Make loads without paperwork blue * Make loads with paperwork green * A way for users to be invited via email * Figure out if auditlog timestamps are fucked or not with timezones To get a development system setup: ``` bash cd app virtualenv env . env/bin/activate pip install -r requirements.txt ./manage.py migrate ./manage.py createsuperuser # This will create some fake records if you wish ./manage.py insert_fake_data --companies 10 --users 10 \ --loads 400 --start-date='-16w' --end-date='+16w' # Default is 2 weeks for start/end date, no # defaults for any other options # Run a local development server, listens to the world ./manage.py runserver 0.0.0.0:8080 ``` To get a production system setup: ``` bash export CFG="my-config.yml" cd app virtualenv env . env/bin/activate pip install -r requirements.txt cp config.yml $CFG vi $CFG # This is where you change the SECRET_KEY, static_root, allowed_hosts # and other settings. cat uwsgi.ini | sed -e"s/config.yml/$CFG/g" > my-uwsgi.ini ./manage.py collectstatic ./manage.py migrate ./manage.py createsuperuser uwsgi --ini my-uwsgi.ini # This will start the daemon, it's up to you to # configure your OS to start it on boot ``` Below is a sample Nginx configuration, edit for your needs: ``` nginx # It's up to you to configure HTTPs, I _highly_ recommend it server { listen 80; # Uncomment if you have ipv6 # listen [::]:80; server_name dispatch.example.com; root /var/www/dispatch.example.com; index index.html index.htm; # Some applications have trouble with merged slashes # This likely doesn't but worth noting merge_slashes off; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9200; } # Pass through the static directory # This should match whatever is in your config file location /static { alias /var/www/dispatch.example.com/static; } # This is probably going to be pulled from dispatch/static/robots.txt location /robots.txt { alias /var/www/dispatch.example.com/static/robots.txt; } # Enable logging # You will likely have to create these directories for Nginx to load access_log /var/log/nginx/dispatch.example.com/access.log; error_log /var/log/nginx/dispatch.example.com/error.log; } ```