diff --git a/roles/timetracking/files/invoice-potaris.html.twig b/roles/timetracking/files/invoice-potaris.html.twig new file mode 100644 index 0000000..893c04d --- /dev/null +++ b/roles/timetracking/files/invoice-potaris.html.twig @@ -0,0 +1,170 @@ + + + + + {% block title %}{{ invoice['invoice.number'] }}-{{ invoice['customer.company']|default(invoice['customer.name'])|u.snake }}{% endblock %} + + + +
+
+ +{% set isDecimal = model.template.decimalDuration|default(false) %} +{% set currency = model.currency %} +
+
+ +
+
+ +
+
+ {{ 'invoice.to'|trans }} +
+ {{ model.customer.company|default(model.customer.name) }}
+ {{ model.customer.address|nl2br }} + {% if model.customer.vatId is not empty %} +
+ {{ 'vat_id'|trans }}: {{ model.customer.vatId }} + {% endif %} + {% if model.customer.number is not empty %} +
+ {{ 'label.number'|trans }}: {{ model.customer.number }} + {% endif %} + {% if model.query.project is not empty and model.query.project.orderNumber is not empty %} +
+ {{ 'label.orderNumber'|trans }}: {{ model.query.project.orderNumber }} + {% endif %} +
+
+ +
+ {{ 'invoice.from'|trans }} +
+ {{ model.template.company }}
+ {{ model.template.address|trim|nl2br }} + {% if model.template.vatId is not empty %} +
+ {{ 'vat_id'|trans }}: + {{ model.template.vatId }} + {% endif %} +
+ Steuernummer: 218/135/30020 +
+
+
+ +
+
+

+ {{ 'invoice.number'|trans }}: + {{ model.invoiceNumber }} + +
+ Leistungszeitraum: + {{ invoice['query.begin'] }} - {{ invoice['query.end'] }} + +
+ {{ 'invoice.due_days'|trans }}: + {{ model.dueDate|date_short }} +

+
+
+
+ +
+
+ + + + + + + + + + + + {% for entry in model.calculator.entries %} + {% set duration = entry.duration|duration(isDecimal) %} + {% if entry.fixedRate %} + {% set rate = entry.fixedRate %} + {% set duration = entry.amount|amount %} + {% else %} + {% set rate = entry.hourlyRate %} + {% endif %} + + + + + + + + + {% endfor %} + + + {% if model.calculator.tax > 0 or not model.isHideZeroTax() %} + + + + + + + + + {% endif %} + + + + + +
{{ 'description'|trans }}StundensatzStunden{{ 'total_rate'|trans }}
+ {% if entry.description is not empty %} + {{ entry.description|nl2br }} + {% else %} + {% if entry.activity is not null %}{{ entry.activity.name }} / {% endif %}{{ entry.project.name }} + {% endif %} + {{ rate|money(currency) }}{{ duration }}{{ entry.rate|money(currency) }}
+ {{ 'invoice.subtotal'|trans }} + {{ model.calculator.subtotal|money(currency) }}
+ {{ 'invoice.tax'|trans }} ({{ model.calculator.vat }}%) + {{ model.calculator.tax|money(currency) }}
+ {{ 'invoice.total'|trans }} + + {{ model.calculator.total|money(currency) }} +
+
+
+ +
+
+ {% if model.template.paymentTerms is not empty %} +
+ {{ model.template.paymentTerms|md2html }} +
+ {% endif %} +
+
+ + + +
+
+ + diff --git a/roles/timetracking/tasks/main.yaml b/roles/timetracking/tasks/main.yaml index f1e8cb5..219bdcc 100644 --- a/roles/timetracking/tasks/main.yaml +++ b/roles/timetracking/tasks/main.yaml @@ -1,9 +1,31 @@ +- name: Create Kimai compose directories + file: + state: directory + path: "{{ item }}" + owner: www-data + with_items: + - /data/kimai-invoice-templates/ + +- name: Copy Potaris twig Invoice Template + copy: + src: invoice-potaris.html.twig + dest: /data/kimai-invoice-templates/ + owner: www-data + +- name: Create Kimai mysql-directory + file: + state: directory + path: "{{ item }}" + owner: 999 + group: root + with_items: + - /data/timetracking-mysql/ + - name: Create Kimai compose directories file: state: directory path: "{{ item }}" with_items: - - /opt/timetracking-mysql/ - /opt/kimai/ - name: Deploy Kimai Compose file diff --git a/roles/timetracking/templates/docker-compose-kimai.yaml b/roles/timetracking/templates/docker-compose-kimai.yaml index 45896aa..50c3f3b 100644 --- a/roles/timetracking/templates/docker-compose-kimai.yaml +++ b/roles/timetracking/templates/docker-compose-kimai.yaml @@ -11,7 +11,7 @@ services: ports: - 3306:3306 volumes: - - /opt/timetracking-mysql/:/var/lib/mysql + - /data/timetracking-mysql/:/var/lib/mysql kimai: image: kimai/kimai2:apache restart: always @@ -19,5 +19,7 @@ services: DATABASE_URL: "mysql://kimai:kimai@mysql:3306/kimai" TRUSTED_HOSTS: timetracking.atlantishq.de,localhost,127.0.0.1 APP_ENV: prod + volumes: + - /data/kimai-invoice-templates/:/opt/kimai/var/invoices/ ports: - 8080:8001