Giter Site home page Giter Site logo

grand-cedre's Introduction

This project implements tools used in the administration of Le Grand Cèdre, a flexible working space welcoming alternative medicine practitioners, in the form of a web interface.

It allows to register clients base, import booking information from Google Calendars, define pricings, edit contracts, track expenses, generate invoices, monthly, quarterly and yearly balance sheets, upload documents to Google Drive, etc.

It was not designed as a generic tool, but rather an implementation of specific needs. The code was nevertheless made open-source for the sake of transparency.

Operations

Import pricings

When the app is running for the first time, run the following command to import the different pricings in database:

% flask import-fixtures

Import bookings

The bookings can regularly be imported from Google Calendar in an idempotent way by running

% flask import-bookings

Generate invoices

Invoices for the previous month (by default, which can be override with the --year and --month arguments) can be generated and uploaded to Google Drive by running

% flask generate-invoices

If the --no-commit flag is provided, the calendar events will be imported but nothing will be committed to the database. If the --no-upload flag is passed, the invoices will not be uploaded to Google Drive.

Create a balance sheet

A balance sheet (CSV file listing all paid invoices for the given period and all expenses) for the previous month (by default, which can be override with the --year and --month arguments) can be generated and uploaded to Google Drive by running

% flask create-balance-sheet

If the --no-upload flag is passed, the balance sheet will not be uploaded to Google Drive.

grand-cedre's People

Contributors

brouberol avatar dependabot[bot] avatar

Watchers

 avatar James Cloos avatar  avatar

grand-cedre's Issues

Detect and bill inactive clients

Detect that all active clients with modular indiviual contracts are present at least 1h / week. At the end of the month, if total booking time < 4h -> 4h will be billed. Mention it on the invoice.

Add an authentication layer

Right now, we have basic Auth setup at the reverse proxy level. We could use a login system with rbac, but this is very low prio for now, as this is currently used by one person.

Parse client's email in the booking description

If a Google calendar event has been created by the owner and an email address was added to the description, it means that the real beneficiary is the client with that email address and not the owner. The bill should be adressed to that client.

Upload invoices to cold storage

Once the invoices are generated, we should upload them to some cloud storage service. As we already use Google agenda to store the booking information in the first place, to have the whole machinery (modulo the oauth token with the appropriate scope) to upload these to Google drive. The invoices are tiny anyway, and that would be convenient to retrieve.

Handle flat rate conracts at lower price

When a client has remaining hours at the end of the flat rate conract, a new contract can be created, valid for 6 months, with the remaining hours at a lower price

Track down invoices payments

Include a payment number (wire transfer reference / check number) and a payment date, so we can track down late payments and include/exclude invoices in monthly/quarterly reports.

Generate financial reports

Gather all paid invoices for a given period and generate an income report for that period.

Make period bounds part of the form to make it easy to generate custom reports?

Find out what format that report should have. Maybe a simple csv could do?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.