Skip to content

Commit

Permalink
Merge pull request #32 from developeregrem/2.2.0-dev
Browse files Browse the repository at this point in the history
2.2.0 dev
  • Loading branch information
developeregrem authored Aug 30, 2020
2 parents 46f94b8 + 2318730 commit 81c53bf
Show file tree
Hide file tree
Showing 10 changed files with 149 additions and 136 deletions.
4 changes: 4 additions & 0 deletions .env.dist
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,7 @@ FROM_NAME="PENSION XY"
[email protected]
MAIL_HOST=domain.tld
### mailer settings ###

### redis settings (only used when APP_ENV is set to "redis") ###
REDIS_IDX=1
REDIS_HOST=redis
138 changes: 69 additions & 69 deletions README.de.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,69 @@

# Pensionsverwaltung FewohBee

Die Hotelsoftware für kleine bis mittelgroße Pensionen und Hotels - Open Source und kostenlos.

Das Pensionsverwaltungtool, oder auch Property Management System (PMS) im allgemeinen genannt, ist ein PHP-Projekt, das auf dem PHP-Framework Symfony basiert.
Kleine Pensionen oder Unterkünfte verwalten ihre Zimmer oder Appartements in der Regel auf die alte Art und Weise mit einem Stift und einem Blatt Papier oder mit einem Tabellenverwaltungsprogramm.

Das Ziel dieses Open-Source-Tools ist es, kleineren Unterkünften zu helfen, den handgeschriebenen Ansatz zur Raumverwaltung zu ersetzen und die Produktivität durch das Zusammenführen aller Informationen zu verbessern, was schließlich in einer Zeitersparnis bei der Verwaltung des Gästehauses oder Pension resultiert.

*Für eine ausführliche Dokumentation nutzen sie bitte das [Wiki](https://github.com/developeregrem/fewohbee/wiki).*

## Funktionen

- Reservierungsübersicht (einfache Möglichkeit, Reservierungen hinzuzufügen und zu verwalten)
- Verwaltung Ihrer Gästedaten (inkl. DSGVO-Exportfunktion)
- umfangreiche Einstellungen zur Verwaltung der
- Zimmer, Unterkünfte, Preise, Reservierungsherkunft, Vorlagen, etc.
- Rechnungen erstellen (PDF)
- Gästekommunikation (Mails aus dem Tool heraus schreiben), Rechnungen, Reservierungsbestätigungen oder andere relevante Informationen an den Gast senden.
- Statistiken
- Meldebuch
- Kassenbuch zur Verwaltung Ihrer Einnahmen und Ausgaben

## Anforderungen

Um das Tool nutzen zu können, benötigen man einen kleinen Webserver, der die Anforderungen von Symfony 5 [requirements](https://symfony.com/doc/current/reference/requirements.html) erfüllt:

- PHP 7.2.5 oder höher
- php-intl extension
- einen Webserver z.B. nginx oder apache
- einen Datenbankserver (empfohlen wird mysql oder mariadb)

## Quick Start

> Es wird empfohlen das docker-compose Setup zu verwenden: [fewohbee-dockerized](https://github.com/developeregrem/fewohbee-dockerized)
Erstellen einer Datenbank für das Tool:

CREATE DATABASE fewohbee CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Kopiere die Datei `.env.dist` und benenne die kopierte Datei in `.env` um.

Bearbeite die Datei `.env` und passe den Wert für `DATABASE_URL` an, um den eigenen Datenbankeinstellungen zu entsprechen.

Erzeuge einen zufällig und sicheren Wert für `APP_SECRET` (man kann einen Wert [hier](http://nux.net/secret) erzeugen lassen).

Wenn noch nicht vorhanden, lade den PHP dependency manager [composer](https://getcomposer.org/download/) herunter, um die Pensionsverwaltungstool Abhängigkeiten installieren zu können. Führe anschließend den folgenden Befehl im root-Ordner des Projekts aus:

composer update

Führe den folgenden Befehl aus, um die Datenbank und die Anwendung zu initialisieren:

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

Anschließend kann mit einem Webbrowser zu dem Installationsordner gewechselt werden z.B.
http://localhost/fewohbee/public/index.php
um sich mit den zuvor angelegten Logindaten anzumelden.

## i18n

Das Tool ist grundlegend mehrsprachige aufgebaut. Aktuell liegt jedoch nur eine deutsche Übersetzung vor. Einige Features wie das Kassenbuch sind für den Einsatz in Deutschland optimiert.

## Author

Alexander Elchlepp

Das Projekt wird durch mich seit 2014 in der Freizeit entwickelt. Wenn Fragen aufkommen, kann ein Ticket angelegt oder mich direkt per mail kontaktiert werden (info (at) fewohbee.de)

# Pensionsverwaltung FewohBee

Die Hotelsoftware für kleine bis mittelgroße Pensionen und Hotels - Open Source und kostenlos.

Das Pensionsverwaltungtool, oder auch Property Management System (PMS) im allgemeinen genannt, ist ein PHP-Projekt, das auf dem PHP-Framework Symfony basiert.
Kleine Pensionen oder Unterkünfte verwalten ihre Zimmer oder Appartements in der Regel auf die alte Art und Weise mit einem Stift und einem Blatt Papier oder mit einem Tabellenverwaltungsprogramm.

Das Ziel dieses Open-Source-Tools ist es, kleineren Unterkünften zu helfen, den handgeschriebenen Ansatz zur Raumverwaltung zu ersetzen und die Produktivität durch das Zusammenführen aller Informationen zu verbessern, was schließlich in einer Zeitersparnis bei der Verwaltung des Gästehauses oder Pension resultiert.

*Für eine ausführliche Dokumentation nutzen sie bitte das [Wiki](https://github.com/developeregrem/fewohbee/wiki).*

## Funktionen

- Reservierungsübersicht (einfache Möglichkeit, Reservierungen hinzuzufügen und zu verwalten)
- Verwaltung Ihrer Gästedaten (inkl. DSGVO-Exportfunktion)
- umfangreiche Einstellungen zur Verwaltung der
- Zimmer, Unterkünfte, Preise, Reservierungsherkunft, Vorlagen, etc.
- Rechnungen erstellen (PDF)
- Gästekommunikation (Mails aus dem Tool heraus schreiben), Rechnungen, Reservierungsbestätigungen oder andere relevante Informationen an den Gast senden.
- Statistiken
- Meldebuch
- Kassenbuch zur Verwaltung Ihrer Einnahmen und Ausgaben

## Anforderungen

Um das Tool nutzen zu können, benötigen man einen kleinen Webserver, der die Anforderungen von Symfony 5 [requirements](https://symfony.com/doc/current/reference/requirements.html) erfüllt:

- PHP 7.2.5 oder höher
- php-intl extension
- einen Webserver z.B. nginx oder apache
- einen Datenbankserver (empfohlen wird mysql oder mariadb)

## Quick Start

> Es wird empfohlen das docker-compose Setup zu verwenden: [fewohbee-dockerized](https://github.com/developeregrem/fewohbee-dockerized)
Erstellen einer Datenbank für das Tool:

CREATE DATABASE fewohbee CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Kopiere die Datei `.env.dist` und benenne die kopierte Datei in `.env` um.

Bearbeite die Datei `.env` und passe den Wert für `DATABASE_URL` an, um den eigenen Datenbankeinstellungen zu entsprechen.

Erzeuge einen zufällig und sicheren Wert für `APP_SECRET` (man kann einen Wert [hier](http://nux.net/secret) erzeugen lassen).

Wenn noch nicht vorhanden, lade den PHP dependency manager [composer](https://getcomposer.org/download/) herunter, um die Pensionsverwaltungstool Abhängigkeiten installieren zu können. Führe anschließend den folgenden Befehl im root-Ordner des Projekts aus:

composer install

Führe den folgenden Befehl aus, um die Datenbank und die Anwendung zu initialisieren:

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

Anschließend kann mit einem Webbrowser zu dem Installationsordner gewechselt werden z.B.
http://localhost/fewohbee/public/index.php
um sich mit den zuvor angelegten Logindaten anzumelden.

## i18n

Das Tool ist grundlegend mehrsprachige aufgebaut. Aktuell liegt jedoch nur eine deutsche Übersetzung vor. Einige Features wie das Kassenbuch sind für den Einsatz in Deutschland optimiert.

## Author

Alexander Elchlepp

Das Projekt wird durch mich seit 2014 in der Freizeit entwickelt. Wenn Fragen aufkommen, kann ein Ticket angelegt oder mich direkt per mail kontaktiert werden (info (at) fewohbee.de)
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Generate a random value and update the property `APP_SECRET` (you can use the fo

If not already available download the PHP dependency manager [composer](https://getcomposer.org/download/) in order to install project dependencies. Afterwards run the following command within the root folder of the project:

composer update
composer install

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

Expand Down
36 changes: 18 additions & 18 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,33 +9,33 @@
"doctrine/doctrine-fixtures-bundle": "^3.3",
"mpdf/mpdf": "^8.0",
"sensio/framework-extra-bundle": "^5.5",
"symfony/asset": "^5.0",
"symfony/console": "^5.0",
"symfony/dotenv": "^5.0",
"symfony/expression-language": "^5.0",
"symfony/asset": "^5.1",
"symfony/console": "^5.1",
"symfony/dotenv": "^5.1",
"symfony/expression-language": "^5.1",
"symfony/flex": "^1.3.1",
"symfony/form": "5.0.*",
"symfony/framework-bundle": "^5.0",
"symfony/http-client": "5.0.*",
"symfony/intl": "^5.0",
"symfony/form": "5.1.*",
"symfony/framework-bundle": "^5.1",
"symfony/http-client": "5.1.*",
"symfony/intl": "^5.1",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "*",
"symfony/security-bundle": "^5.0",
"symfony/security-bundle": "^5.1",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.2",
"symfony/translation": "^5.0",
"symfony/twig-bundle": "^5.0",
"symfony/validator": "^5.0",
"symfony/web-link": "^5.0",
"symfony/yaml": "^5.0",
"symfony/translation": "^5.1",
"symfony/twig-bundle": "^5.1",
"symfony/validator": "^5.1",
"symfony/web-link": "^5.1",
"symfony/yaml": "^5.1",
"twig/extensions": "^1.5"
},
"require-dev": {
"symfony/browser-kit": "^5.0",
"symfony/css-selector": "^5.0",
"symfony/browser-kit": "^5.1",
"symfony/css-selector": "^5.1",
"symfony/debug-pack": "*",
"symfony/maker-bundle": "^1.0",
"symfony/phpunit-bridge": "^5.0",
"symfony/phpunit-bridge": "^5.1",
"symfony/profiler-pack": "*"
},
"config": {
Expand Down Expand Up @@ -81,7 +81,7 @@
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.0.*"
"require": "5.1.*"
}
}
}
6 changes: 2 additions & 4 deletions config/packages/doctrine_migrations.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
doctrine_migrations:
dir_name: '%kernel.project_dir%/src/Migrations'
# namespace is arbitrary but should be different from App\Migrations
# as migrations classes should NOT be autoloaded
namespace: DoctrineMigrations
migrations_paths:
'DoctrineMigrations': '%kernel.project_dir%/src/Migrations'
1 change: 1 addition & 0 deletions config/packages/routing.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
framework:
router:
strict_requirements: ~
utf8: true
2 changes: 1 addition & 1 deletion config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ parameters:
webHost: '%env(WEB_HOST)%'
publicUploadDirectory: 'resources/images/export'
uploadDirectory: '%kernel.project_dir%/public/%publicUploadDirectory%'
version: '2.1.0'
version: '2.2.0'

services:
# default configuration for services in *this* file
Expand Down
2 changes: 1 addition & 1 deletion src/DataFixtures/SettingsFixtures.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ private function createCustomer(ObjectManager $manager) {
$address->setCity("Musterhausen");
$address->setCountry("DE");
$address->setEmail("[email protected]");
$address->setType(1);
$address->setType('CUSTOMER_ADDRESS_TYPE_PRIVATE');
$address->setFax("123456789");
$address->setMobilePhone("0176123456");
$address->setPhone("987654321");
Expand Down
61 changes: 19 additions & 42 deletions src/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,59 +3,36 @@
namespace App;

use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
use Symfony\Component\Routing\RouteCollectionBuilder;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;

class Kernel extends BaseKernel
{
use MicroKernelTrait;

const CONFIG_EXTS = '.{php,xml,yaml,yml}';

public function getCacheDir()
{
return $this->getProjectDir().'/var/cache/'.$this->environment;
}

public function getLogDir()
{
return $this->getProjectDir().'/var/log';
}

public function registerBundles()
protected function configureContainer(ContainerConfigurator $container): void
{
$contents = require $this->getProjectDir().'/config/bundles.php';
foreach ($contents as $class => $envs) {
if ($envs[$this->environment] ?? $envs['all'] ?? false) {
yield new $class();
}
$container->import('../config/{packages}/*.yaml');
$container->import('../config/{packages}/'.$this->environment.'/*.yaml');

if (is_file(\dirname(__DIR__).'/config/services.yaml')) {
$container->import('../config/{services}.yaml');
$container->import('../config/{services}_'.$this->environment.'.yaml');
} elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) {
(require $path)($container->withPath($path), $this);
}
}

protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
{
$container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php'));
// Feel free to remove the "container.autowiring.strict_mode" parameter
// if you are using symfony/dependency-injection 4.0+ as it's the default behavior
$container->setParameter('container.autowiring.strict_mode', true);
$container->setParameter('container.dumper.inline_class_loader', true);
$confDir = $this->getProjectDir().'/config';

$loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob');
$loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
$loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob');
$loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob');
}

protected function configureRoutes(RouteCollectionBuilder $routes)
protected function configureRoutes(RoutingConfigurator $routes): void
{
$confDir = $this->getProjectDir().'/config';
$routes->import('../config/{routes}/'.$this->environment.'/*.yaml');
$routes->import('../config/{routes}/*.yaml');

$routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob');
$routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
$routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob');
if (is_file(\dirname(__DIR__).'/config/routes.yaml')) {
$routes->import('../config/{routes}.yaml');
} elseif (is_file($path = \dirname(__DIR__).'/config/routes.php')) {
(require $path)($routes->withPath($path), $this);
}
}
}
33 changes: 33 additions & 0 deletions src/Migrations/Version20200803113108.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20200803113108 extends AbstractMigration
{
public function getDescription() : string
{
return '';
}

public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('DROP TABLE migration_versions');
$this->addSql('ALTER TABLE opengeodb_de_plz CHANGE plz plz VARCHAR(5) NOT NULL');
}

public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE migration_versions (version VARCHAR(14) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, executed_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', PRIMARY KEY(version)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('ALTER TABLE opengeodb_de_plz CHANGE plz plz VARCHAR(5) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`');
}
}

0 comments on commit 81c53bf

Please sign in to comment.