Code Monkey home page Code Monkey logo

abrechnung's Introduction

abrechnung 🧾

Production Build Backend Test

abrechnung 🧾 ist eine Web App die:

  • Reisekosten- (inkl. automatischer Pauschalen Berechnung auch für internationale Reisen),
  • Auslagen- und
  • Krankenkosten-Abrechnungen

digital und einfach möglich macht.

abrechnung-DE-SMALL.mp4

Pauschalbeträge

pauschbetrag-api

Wechselkurse

InforEuro

Dieser statische Währungsrechner zeigt den offiziellen monatlichen Buchungskurs der Europäischen Kommission für den Euro und die durch den Rechnungsführer im Einklang mit Artikel 19 der Haushaltsordnung festgelegten Umrechnungskurse an.

API

API Documentation

Deploy

Using prebuilt docker images:

services:
backend:
image: davidloe/abrechnung-backend
restart: always
depends_on:
- db
# volumes:
# - ./reports/travel:/reports/travel #BACKEND_SAVE_REPORTS_ON_DISK
# - ./reports/expenseReport:/reports/expenseReport #BACKEND_SAVE_REPORTS_ON_DISK
# - ./reports/advance:/reports/advance #BACKEND_SAVE_REPORTS_ON_DISK
# - ./reports/healthCareCost:/reports/healthCareCost #BACKEND_SAVE_REPORTS_ON_DISK
ports:
- ${BACKEND_PORT}:${BACKEND_PORT}
env_file:
- .env
frontend:
image: davidloe/abrechnung-frontend
restart: always
depends_on:
- backend
ports:
- ${FRONTEND_PORT}:80
env_file:
- .env
db:
image: mongo
restart: always
volumes:
- db_data:/data/db
volumes:
db_data:

ℹ Don't forget to specify environment variables in a .env file or directly in the compose.yml.

Run

Gitpod

Click below to launch a ready-to-use Gitpod workspace in your browser.

Open in Gitpod

Local

  1. Install Docker & Docker Compose
  2. Copy .env.example to .env and adapt if needed
  3. Run docker compose up
  4. Open http://localhost:5000 and login with professor:professor

ℹ You can change ports and URLs in the .env file

Schema

Schema

abrechnung's People

Contributors

david-loe avatar sgempi avatar

Stargazers

thilakm avatar  avatar Kay avatar Bjarne Meyn avatar Marcel Deglau avatar Elisha avatar Christian avatar Nils Weißer avatar Lukas Glitt avatar cocoonk1d avatar

Watchers

 avatar

abrechnung's Issues

Error after create "Auslagen" an unable to login

After testing a test abrechnung.
We receive an error

backend-1 | node:internal/process/promises:289
backend-1 | triggerUncaughtException(err, true /* fromPromise */);
backend-1 | ^
backend-1 |
backend-1 | Error: unable to get local issuer certificate
backend-1 | at TLSSocket.onConnectSecure (node:_tls_wrap:1674:34)
backend-1 | at TLSSocket.emit (node:events:518:28)
backend-1 | at TLSSocket._finishInit (node:_tls_wrap:1085:8)
backend-1 | at ssl.onhandshakedone (node:_tls_wrap:871:12) {
backend-1 | code: 'ESOCKET',
backend-1 | command: 'CONN'
backend-1 | }
backend-1 |
backend-1 | Node.js v20.11.0
backend-1 | [nodemon] app crashed - waiting for file changes before starting...

Fehler beim Login / login issue

Hallo,

ich bekomme eine Fehlermeldung beim Login.
grafik

Installiert habe ich den container wie beschrieben.
Was mir nicht ganz klar ist, wo wird in der .env oder docker-compose.yml der User angelegt? Oder ist der irgendwo fest geschrieben?

English:
I get an error message when I try to log in.

I have installed the container as described.
What is not quite clear to me is where the user is created in the .env or docker-compose.yml? Or is it hard-coded somewhere?

[feature request] show reporting, reviewing and approving person; optional option to show a field to sign the document in the created PDF

It would be great to see in the overview of a travel view or expense view and in the resulting PDF, who approved the request and who approved the refund.
This allows to document which person is responsible for the decision in the webapp and in the archived PDFs.

It would be a great option to have the optional setting to display an signature field for the approving person on the PDF for companies who have the problem with their local tax authority that it will only accept these documents with a signature.

wrong lump sum used for last day of trip to foreign country.

Looks quite nice already.

I assume here that this is for Germany.
If I input a one day or multi day trip to a foreign country, then for the last day the lump sum of the country I return to is used. It should be the value for the last foreign country visited for business purposes.

Even more complicate if there is an overnight stop over on the way back in another country. The lump sum of that country should be used for the day before the day returning and for the day returning that the one of the last country visited for business purposes.

Typos

Remove typos from locales

suspected CORS issue but ultimately an issue with openldap and docker ulimits.

This is a really nice project but I tried to get it to work locally.
I can get to the login screen but not past..
image

Also how can I set the password for the admin user?

My apology if the solutions are obvious but I really tried for a while now and also reset the mongosh admin user etc but did not help and I am not really versed with vue but want to learn :)

I know my docker setup is working so far.

Add a retention policy feature

Retention policy for:

  • completed abrechnung
  • approved but not started travel reports

Duration should be customizable in settings

Including reminder mails before deletion.

2FA ideally with FIDO U2F or minimum TOTP

for security reasons 2 factor authentication would be really great.
ideally FIDO U2F (e.g. with Yubikey) or at least TOTP

and a checkbox for the admin to make 2FA mandatory for every user

Kein Login möglich (weder mit LDAP noch via Mail)

Hallo und grüße zum Donnerstag.

Ich bekomme leider (trotz Tage-langer Recherche, und natürlich auch durchforsten der geschlossenen Issues) keine funktionierende Anmeldung zustande.

Die Docker-Umgebung einrichten und das System zum Laufen zu bringen, dass die Browser-Anmeldung vom anderen Rechner aus funktioniert, ist kein Problem und in weniger als 20 Minuten erledigt.

Ich bin zwar gelernter System-Admin aber hier verzweifle ich grade ein wenig. (obwohl ich Sachen wie Ticket-System etc. bereits in der Umgebung ohne Probleme anbinden konnte).

Am liebsten hätte ich natürlich die LDAP Anmeldung für die bestehenden Benutzer. Egal wie ich die .env konfiguriere, klappt die Anbindung nicht. Screenshots der Browser-Konsole und der .env Konfiguration habe ich angehangen.

Domain-Controller ist ein normaler Windows-DC mit AD.

Screenshot 2024-05-23 080549
Screenshot 2024-05-23 080704

Aber auch die Variante Mail-Anmeldung klappt nicht. Wir haben einen Exchange, der Empfangs-Connector ist auf Port 25 konfiguriert, aber mit TLS. Wie kann ich nun die SMTP Konfiguration in der .env so anlegen, dass wir zwar TLS nutzen, aber eben auf Port 25? Dann sollte wenigstens das klappen denke ich. Aktuell geht auch die Variante eben leide nicht :(.

MS Azure LogIn haben wir nicht vorgesehen.

Wir sind ein kleiner Verein und die Reisekosten-Abrechnung wäre einfach nur Klasse, da der Prozess hier aktuell noch vollständig in Papierform gehandhabt wird. Uneinheitlich.

Vielen lieben Dank vor ab.
Ich bin nun wirklich seit Tagen am austesten und verzweifeln.

Introduce projects

Organisations have projects. And 'abrechnung's should be assingable to a project

Krankenkosten

It is possible to deactivate the Krankenkosten Abbrechnung, and hide the first Popup for users, to set the Krankenkasse?
and offtopic why is that funktion needed?
Thanks.

Going back from modal breaks app

When you Go back from a modal the app hast a black overlay and nothing is clickable.

Steps to reproduce

  1. Go to a expense report or travel
  2. Open the modal for a new expense
  3. Use the Back function of the Browser

Screenshot

markup_1000000021

Login not working

Hi, i like the project but we are unable to login with the test LDAP and my ActiveDirectory.
Is there a option to enable debug? to see Errors with ldap in the logs?

Thanks
Meik


# development | production
NODE_ENV=development

# https://currencybeacon.com/ API Key - REQUIRED
CURRENCYBEACON_API_KEY=blabla

# URL to reach the frontend and backend (without trailing slash)
VITE_FRONTEND_URL=http://192.168.1.111:5000
VITE_BACKEND_URL=http://localhost:8000

# Timezone - find yours here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Europe/Berlin

# Cookie Secret (use something like: 'openssl rand -base64 30')
COOKIE_SECRET=blabla

# Auth Settings
VITE_AUTH_USE_MS_AZURE=FALSE
VITE_AUTH_USE_LDAP=TRUE
VITE_AUTH_USE_MAGIC_LOGIN=FALSE

# Magic Login (use something like: 'openssl rand -base64 60')
MAGIC_LOGIN_SECRET=blalba

# Microsoft Azure Auth Settings (https://portal.azure.com > Azure Active Directory > App registration)
# Callback URL: VITE_BACKEND_URL + '/auth/microsoft/callback'
MS_AZURE_CLIENT_ID=your-client-id
MS_AZURE_CLIENT_SECRET=your-client-secret
MS_AZURE_TENANT=common

# LDAP Settings
LDAP_URL=ldaps://ldap:636
LDAP_BINDDN=cn=admin,dc=planetexpress,dc=com
LDAP_BINDCREDENTIALS=GoodNewsEveryone
LDAP_SEARCHBASE=ou=people,dc=planetexpress,dc=com
LDAP_SEARCHFILTER=(uid={{username}})
LDAP_TLS_REQUESTCERT=TRUE
LDAP_TLS_REJECTUNAUTHORIZED=FALSE
# The Attributes that define the mail adress, uid and display name of an LDAP user
LDAP_MAIL_ATTRIBUTE=mail
LDAP_UID_ATTRIBUTE=uid
LDAP_SURNAME_ATTRIBUTE=sn
LDAP_GIVENNAME_ATTRIBUTE=givenName


# LDAP Settings
#LDAP_URL=ldap://dc01.ad.domain.de:389
#LDAP_BINDDN=cn=svc_ldap,ou=Services,dc=ad,dc=domain,dc=de
#LDAP_BINDCREDENTIALS=blabla
#LDAP_SEARCHBASE=dc=ad,dc=domain,dc=de
#LDAP_SEARCHFILTER=(&(objectclass=user)(objectcategory=person)(memberof=cn=Mitarbeiter,cn=Users,dc=ad,dc=domain,dc=de))
#LDAP_TLS_REQUESTCERT=FALSE
#LDAP_TLS_REJECTUNAUTHORIZED=FALSE
## The Attributes that define the mail adress, uid and display name of an LDAP user
#LDAP_MAIL_ATTRIBUTE=mail
#LDAP_UID_ATTRIBUTE=sAMAccountName
#LDAP_SURNAME_ATTRIBUTE=sn
#LDAP_GIVENNAME_ATTRIBUTE=givenName

# SMTP Settings
SMTP_HOST=mail.ad.domain.de
SMTP_PORT=25
# true for 465, false for other ports
SMTP_SECURE=FALSE
SMTP_USER=username
SMTP_PASS=password
[email protected]

# Ports
FRONTEND_PORT=5000
BACKEND_PORT=8000
INBUCKET_UI_PORT=9000
MONGO_EXPRESS_PORT=8081

# URL of the data base
MONGO_URL=mongodb://db:27017/abrechnung

# Set default Language
VITE_I18N_LOCALE=de
VITE_I18N_FALLBACK_LOCALE=de

# If set to 'TRUE', all reports will be saved to `/reports` in the backend container. Uncomment the corresponding backend volume in `docker-compose.yml` to get reports on host maschine
BACKEND_SAVE_REPORTS_ON_DISK=FALSE

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.