Coder Social home page Coder Social logo

developeregrem / fewohbee Goto Github PK

View Code? Open in Web Editor NEW
31.0 2.0 5.0 8.44 MB

Hotelsoftware für kleine bis mittelgroße Pensionen und Hotels

Home Page: https://www.fewohbee.de

License: GNU General Public License v3.0

PHP 51.77% JavaScript 5.31% CSS 0.51% Twig 42.42%
php guesthouse pensionsverwaltung management hotel-management hotel-management-system reservation-system symfony accommodations hotels

fewohbee's Introduction

guesthouse and hotel management software FewohBee

For german version see: README.de.md

The hotel management software for small to medium-sized pensions and hotels - open source and free of charge.

The guesthouse management tool or property managment system (PMS) is a PHP project based on the amazing PHP framework Symfony. Small guesthouses or accommodations usually manage their rooms or apartments the old way by using a pen and a sheet of paper or using a spreadsheet. The goal of this open-source tool is to help smaller accommodations to replace the hand written approach to manage rooms, to improve productivity by combining all information which, finally, ends in a time reduction to manage the guesthouse.

For a detailed documentation please refer to the Wiki.

Features

  • easy way to add and manage reservations (reservation overview)
  • manage your guest data (including a GDPR export function)
  • extensive settings to manage your
    • rooms, accommodations, prices, reservation origins, templates, etc.
  • create invoices (PDF)
  • conversations (write mails from within the tool), send invoices, reservation confirmations or other relevant information to the guest
  • statistics
  • registration book
  • cash book to manage your income and outcome
  • calendar export for other applications (iCal sync)

Requirements

In order to use the tool, you need to have a small web server fulfilling the Symfony requirements. This means:

  • PHP 8.1 or higher
  • php-intl extension installed and activated
  • a web server e.g. nginx or apache
  • a database server (recommended is mysql or mariadb)

Quick Start

It's recommended to use the docker-compose setup: fewohbee-dockerized

Create a database for the tool:

CREATE DATABASE fewohbee CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Copy the file .env.dist and name the new file .env.

Edit the file .env and update the property DATABASE_URL to meet your database settings. Generate a random value and update the property APP_SECRET (you can use the following site to generate a random value: Link)

If not already available download the PHP dependency manager composer in order to install project dependencies. Afterwards run the following command within the root folder of the project:

composer install

Run the following command to initialize the database and the application:

php bin/console doctrine:migration:migrate
php bin/console app:first-run

// optional: add some test data
php bin/console doctrine:fixtures:load --append

Now, you are ready to open a browser, navigate to the installation folder e.g. http://localhost/fewohbee/public/index.php and login with the user created in the step before.

Using Docker

To run the application using docker a pre-configured docker-compose setup is available. Please refer to the documentation in the Wiki: Docker-Setup

i18n

The tool has multi language support by design and is available in german and english. If you have a language request to support other languages, please open a ticket.

Author

Alexander Elchlepp

This project is a one man show at the moment and developed in my free time since 2014. If you have questions open a ticket or contact me at info (at) fewohbee.de

If you want to support this project and you think the project is useful for you I would be very happy about a small donation :) Donate

fewohbee's People

Contributors

daking88 avatar dependabot[bot] avatar developeregrem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fewohbee's Issues

Verbesserungsvorschläge

Hi, ich habe fewohbee auf einem Debian 11 mit Nginx webserver seit einer Woche am laufen. Ich bin kein Freund von Docker und habe mich deshalb für die direkte Installation entschieden, was auf der VM jetzt auch eigentlich nicht so aufwendig ist.

Vorschlag 1: Erweiterung der Dokumentation
Vielleicht könntet ihr für den Konfiguration des Webservers eine Beispieldatei bereit stellen. Ich musste erst auf die Idee kommen Nginx zu sagen wie er mit Symfonie umgehen muss. Ich kann auch gerne meine Nginxconfig als Muster zur Verfügung stellen.

Vorschlag 2: Reserrvierungskalender variabler gestalten
Der Reservierungskalender ist bereits gut umgesetzt. Wir haben sehr wenige Wohnung und daher sieht er bei uns ein bisschen verloren aus. Außerrdem wünschen sich meine Anwender eine Jahresansicht. Könnte man hier nicht eine weitere Konfigurationsmöglichkeit einbauen die eine Jahresansicht ermöglicht, also z.b. jeden Monat als extra Kalenderzeile untereinander?

Aufjedenfall eine tolle einfache Software für eine kleine private Verwaltung,

Viele Grüße
Tobias

Default Login Values

Hi,

maybe a stupid question, where can i find the default login values of the docker installation?

Thanks!

BW

Allow more than one reservation for the same period

Currently one apartment can have exactly one reservation for one period. There are use cases where it would be great to allow more than one reservation. For example, a bigger room might be occupied by different people that do not belong together but share the same room.
To enable this a room should become a new property multiple occurrences. If this property is set to true it is allowed to add more than one reservation for the same period if the max. capacity of the room is not reached.
The reservation overview must show these new reservations accordingly.

Install Problem HTTP Error 500

Hi,

Continuing with my install, after the bug fix provided, it went all the way to the end. Created a virtual host in Apache2 and got an error 500.

In the log, it shows as follows:

[Fri May 13 22:48:33.967145 2022] [php:error] [pid 32344] [client 192.168.1.229:35050] PHP Fatal error: Uncaught Error: Undefined constant Symfony\\Component\\HttpFoundation\\Request::HEADER_X_FORWARDED_ALL in /var/www/fewohbee/public/index.php:28\nStack trace:\n#0 {main}\n thrown in /var/www/fewohbee/public/index.php on line 28

What could I have missed in the install process ?

I am testing the install in Ubuntu 22.04 and Ubuntu 20.04 (with some packaegs adjustement to meet requirements). Same problem on both sides.

Can't set up the application

Hello,

I am trying to setup the application on my Ubuntu 20.04 server.
I followed install instructions. But got this error on migrate command.

{"message":"Command \"'doctrine:migration:migrate'\" exited with code \"1045\"","context":{"command":"'doctrine:migration:migrate'","code":1045},"level":100,"level_name":"DEBUG","channel":"console","datetime":"2022-12-01T22:21:54.482699+00:00","extra":{}}

In ExceptionConverter.php line 101:

  An exception occurred in the driver: SQLSTATE[HY000] [1045] Access denied for user 'fewohbee'@'localhost' (using password: YES)  


In Exception.php line 28:

  SQLSTATE[HY000] [1045] Access denied for user 'fewohbee'@'localhost' (using password: YES)  


In Driver.php line 28:

  SQLSTATE[HY000] [1045] Access denied for user 'fewohbee'@'localhost' (using password: YES

So I manually created fewohbee user in DB and granted it all privileges on fewohbee DB.
And now I am getting another error.

{"message":"Command \"'doctrine:migration:migrate'\" exited with code \"2002\"","context":{"command":"'doctrine:migration:migrate'","code":2002},"level":100,"level_name":"DEBUG","channel":"console","datetime":"2022-12-02T09:16:09.248623+00:00","extra":{}}

In ExceptionConverter.php line 101:
                                                                                                                                              
  An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for fewohbee failed: Temporary failure    
  in name resolution                                                                                                                          
                                                                                                                                              

In Exception.php line 28:

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for fewohbee failed: Temporary failure in name resolution  


In Driver.php line 28:

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for fewohbee failed: Temporary failure in name resolution  


In Driver.php line 28:

  PDO::__construct(): php_network_getaddresses: getaddrinfo for fewohbee failed: Temporary failure in name resolution

Any idea on the cause ?
Thanks and regards

Dr

Add a yearly reservation overview page

It should be possible to switch between the current overview page and yearly one.
Currently the overview page is based on a given start page and a period (e.g. 30 days) and lists all availble apartments.
However, especially for single room properties this overview is not very usefull.
Therefore, an overview should be added to display a yearly overview based on a given year and a selected apartment.

Add Customer ID Card Number

Add a new field to allow storing the customer's ID card number. It should also be possible to select the type of ID card.

Composer Install Problems

Installed fresh Ubuntu 22.04 server with latest Apache2, MySQL8, PHP8.1

I am facing the following error:

Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!  
!!  In BaseNode.php line 405:
!!                                                                                 
!!    Invalid configuration for path "monolog.handlers.main": You can not use exc  
!!    luded_http_codes together with excluded_404s in a FingersCrossedHandler      
!!                                                                                 
!!  
!!  In ExprBuilder.php line 187:
!!                                                                                 
!!    You can not use excluded_http_codes together with excluded_404s in a Finger  
!!    sCrossedHandler                                                              
!!                                                                                 
!!  
!!  
Script @auto-scripts was called via post-update-cmd

Help welcome. Thanks

Replace jQueryUI components

Only a few jQueryUI components are used at the moment:

  • selectable for selecting the reservation period in the reservation table
  • autocomplete for customer address search and city look up
  • datepicker (already replaced with browser build-in date type in #1)

It would be better to replace it with something more modern.

Add iCal export of rooms

Most of the booking portals like airbnb or booking.com support the synchronisation of calendars using the iCal format (calendar synchronisation).
Since this type of synchronisation is most of the type only supported for single room/apartment properties the iCal export function can be implemented per room in fewohbee. An option in the room management page must be added to allow the export of each single room.
A unique and publicly accessible URL must be generated for each room.

Statistics - Canceled Reservations

A page must be created on which the number of rooms cancelled is graphically displayed.
It also calculates how much money you may have lost/not received due to the cancellations (lost income).
It should be noted that only days are taken where the room has not been allocated.
Example: A period 5.1. - 9.1. was cancelled, but the room could be reassigned from 7.1. - 9.1. Consequently, two nights of the cancelled period may not be included in the calculation.

Assumes issue #15 is done.

Add Logging

At the moment no events will be logged.
Events must be logged and written to the DB. The entity Log shall be used for this.

In another ticket these events will be displayed in the web page and can be reviewed by the admin user.

Every event that triggers a create, update or delete of an entity should be logged.
User supplied input must be sanitized before writing to the log.

Invoice: Prefill room positions

Prefill the room positions according to the price classes during the invoice create process.
Use the new service for price classes from #10.

Password Forgotten

Implement a password forgotten function.

  • first way is to send an email
  • second method is to create a new command to add a new user via cli

Improve password security

All places where a password is handled (commands, user settings) shall be updated to apply with the latest security best practices. These are:

  • password must be at least 10 characters long
  • password should not be part of breached password lists

For this the built-in symfony validator NotCompromisedPassword can be used to check a password against the haveibeenpwned database using k-anonymity password validation.

Migrate to tinymce version 5

Currently version 4 of ckeditor is used for templating.
Places to Update:
Settings -> Templates
Reservation Overview -> Conversations

Furthermore, creating a template must be enhanced so users without programming knowledge can use this feature as well.

Add test data

Add some test data for initial setup with fixtures.

Add prices to reservation templates

Wehn using the template for reservations either the mail or PDF template there is no way to include the price of the reservation at the moment.
The price of a reserveration should be automatically included based on existing price classes.
The following new variables must be available in a reservation template:

  • sumApartmentment -> total price of all apartments for all selected reservations
  • sumMisc -> total price of all miscellaneous prices of the selected reservations
  • totalPrice -> total price of all room and miscellaneous prices of the selected reservations
  • apartmentPositions -> an array of all room prices (including totalPrice for the current room), this replaces the old reservations array which holds the same inforation but not the price inforamtion
  • miscPositions -> an array of all miscellenous prices

2 Probleme in der UI

Hallo zusammen,

habe fewohbee auch seit ein paar Tagen am laufen und bin super zufrieden gerade auch für die Doku und Erstellung von Rechnungen
jedoch habe ich 2 Probleme in der UI die mit Server 500 Fehler angezeigt werden

Dies ist einmal beim löschen von einem Gast Sprich ich kann keinen angelegten Gast wieder löschen. Erhalte dort im Log folgenden Fehler 500:

{"message":"Matched route \"customers.delete.customer\".","context":{"route":"customers.delete.customer","route_parameters":{"_route":"customers.delete.customer","_controller":"App\\Controller\\CustomerServiceController::deleteCustomerAction","id":"3"},"request_uri":"https://ferienwohnung/customers/3/delete","method":"POST"},"level":200,"level_name":"INFO","channel":"request","datetime":"2022-11-12T11:24:51.710099+01:00","extra":{}}

2tes Problem ist die Vorlagen Erstellung. Diese lädt ewig in der UI. Man kann nur die Vorlagen bearbeiten diese schon mit der Installation erstellt worden sind.

Eventuell könntest du mir vlt. weiterhelfen und Tipps geben.

Auf jeden fall auch nochmal ein dickes Lob an die Erstellung dieses OneManShow Projektes :-)

Add public view to add new reservations

It should be possible to have a public view for adding reservations. This view can be integrated into the own website as e.g. iframe or as standalone reservation view by providing a publicly reachable url of fewohbee.

Add Invoice to Mail Conversation

When writing an eMail conversation it must be possible to add an existing invoice as attachment.
Only Invoices associated with the selected reservation shall be added.
To render the invoice PDF the default invoice PDF template shall be used.

Use images in templates

The tinymce editor must allow the upload of images and to use uploaded images in the editor.

add preview for templates

There should be the possibility to preview a template under Settings -> Templates.

  • Create test data for each template type
  • add a button to the overview
  • render the template by using test data

Error after login

Hi! I set up Apache, MySQL and PHP 8.2 and everything goes fine, login page loads fine, login works.

After Login i only get:

Warning: Undefined array key 0 in C:\xampp-3\htdocs\fewohbee\src\Controller\ReservationServiceController.php on line 71

Oops! An Error Occurred
The server returned a "500 Internal Server Error".
Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.

Reservations can be cancelled

It must be possible to cancel a reservation.
A new button should be added to the modal (click on Reservation).
When you click on the button, the reservation should "disappear" and be marked as cancelled in the DB. (The room can be reassigned).
A new attribute must be inserted in the Reservation entity to indicate whether a reservation has been cancelled or not.
Only reservations that have not been canceled can be displayed in the reservation overview.
At the same time, the check to see whether a room is available (create / edit new reservation) must also be adjusted so that only reservations that have not been canceled are queried.

Canceled reservations are to be evaluated later for the statistics module.

Add new Translation

Hi,

Since I am looking into you program, I would like to add translations. I tried to register to https://traduora.elchlepp.info but it does not seem to work. Could you look into that so I can contribute translations.

Thanks,

Reservation Create: Show preview price

According to the price categories and the selected rooms, show an advance price in the Reservation Create process and use the new service for price categories from #10.

Issue after Login

Hello together,

i became a Oops! An Error Occurred
The server returned a "500 Internal Server Error" after Login in fewohbee

PHP Error Code below

fewohbee-dockerized-php-1 | {"message":"Uncaught PHP Exception Error: \"Call to a member function getId() on null\" at /var/www/html/fewohbee/src/Controller/ ReservationServiceController.php line 71","context":{"exception":{"class":"Error ","message":"Call to a member function getId() on null","code":0,"file":"/var/ww w/html/fewohbee/src/Controller/ReservationServiceController.php:71"}},"level":50 0,"level_name":"CRITICAL","channel":"request","datetime":"2022-11-09T17:30:21.13 7984+01:00","extra":{}} fewohbee-dockerized-php-1 | {"message":"Stored the security token in the sess ion.","context":{"key":"_security_main"},"level":100,"level_name":"DEBUG","chann el":"security","datetime":"2022-11-09T17:30:21.174193+01:00","extra":{}} fewohbee-dockerized-php-1 | 172.18.0.3 - 09/Nov/2022:17:30:21 +0100 "GET /in dex.php" 500

apply checkstyle

Use php-cs-fixer to be conform with symfony check style and also update code to latest php 8/8.1 styles using the following rules:

php-cs-fixer fix src/ --rules=@Symfony,@PHP80Migration:risky --allow-risky=yes
php-cs-fixer fix src/ --rules=@PHP81Migration

Display public holidays and other events

In the reservation overview, holidays and other events (which you can define yourself) should be displayed.
It would be possible here to highlight the day in color and to use the corresponding tooltip or popover.

Clearly describe price categories

The price classes must be described more clearly so that the calculation of the invoice amount can be made easier.
Just like the "always" option for days, an "always" option should also apply to the period (it is best to create a new attribute).
Depending on the origin, it must be checked whether there is already an active category that collides with the new one.
Concretely:

  • For an origin, there can only be one active price category for identical appartment-specific values, period, valid days (check overlapping periods).
  • Price categories with a time period have a higher value than categories that always apply (important for the later query which categories apply to a reservation).

If a collision has been detected, the user is shown a short list with the categories that collide.
Applies to creating and editing a price class.

Make all views mobile friendly

I often use fewohbee on the mobile phone. Some screens, e.g. popups, are not really mobile friendly and need to be adjusted.

Reservation as option with time period

If the status "Option" is selected when creating/editing a reservation, another input field for entering the date (option to) should appear (default is 1 week from current date).

In the popover of a reservation (mouse over reservation) the end date should appear with an option.
If the option has expired, this should be indicated by a small icon (perhaps next to the name) (in the reservation overview).

Automatically add invoices to cash book

A new button should be integrated into the cash book view which allows to automatically add all incomes based on invoices stored in fewohbee for a whole month.

Service for price categories

To calculate an invoice in advance and to automatically create invoice items, we must write a service for price classes.

  • Input: Reservation object, type (room price|other)
  • Output: List of price categories sorted by date and the date for which it applies.

conditions:

  • Display active categories only
  • Price categories with a time period have a higher value than categories that always apply.
  • Respect origin (ReservationOrigin)

Assumes ticket #9 is done.

Add public calendar of apartments

A publicly reachable calendar for each apartment showing the availability should be available that can be e.g. integrated as iframe into the own website.

Reservation origin - Enhancement

Many portals charge a commission per booking. This commission is to be mapped in the reservation origin.
These values are to be evaluated later for the statistics module. The total invoice amount of the reservation then serves as the basis.
When creating and editing the reservation origins, there should be two new fields:

  • Commission (fixed in Euro)
  • Commission (percentage of total invoice amount)

Adjust the list display (overview) accordingly.

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.