diff --git a/Admin/Install/elementtypes.json b/Admin/Install/elementtypes.json index 41427d3..9f35567 100644 --- a/Admin/Install/elementtypes.json +++ b/Admin/Install/elementtypes.json @@ -68,6 +68,20 @@ "en": "Postage", "de": "Porto" } + }, + { + "name": "stationary", + "l11n": { + "en": "Stationary", + "de": "Büromaterial" + } + }, + { + "name": "it", + "l11n": { + "en": "IT", + "de": "IT" + } }, { "name": "other", diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 632fa75..9d6ba5e 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -497,7 +497,7 @@ final class ApiController extends Controller $this->apiExpenseElementCreate($internalRequest, $internalResponse, $data); - $elements[] = $internalResponse->getDataArray($internalRequest->uri->__toString())['response']; + $elements[] = $internalResponse->getDataArray($internalRequest->uri->__toString())['response'] ?? null; } $this->createStandardCreateResponse($request, $response, $elements); @@ -705,7 +705,13 @@ final class ApiController extends Controller $this->app->moduleManager->get('Billing', 'ApiPurchase')->apiSupplierBillUpload($internalRequest, $internalResponse, $data); - $bills = $internalResponse->getDataArray($internalRequest->uri->__toString())['response']; + $bills = $internalResponse->getDataArray($internalRequest->uri->__toString())['response'] ?? []; + if (empty($bills)) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidAddResponse($request, $response, $bills); + + return; + } $elementObj = ExpenseElementMapper::get() ->where('id', $element) diff --git a/Controller/BackendController.php b/Controller/BackendController.php index fe32274..114bef0 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -126,7 +126,7 @@ final class BackendController extends Controller ->executeGetArray(); $view->data['expense-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response); - $view->data['media-upload'] = new \Modules\Media\Theme\Backend\Components\Upload\BaseView($this->app->l11nManager, $request, $response); + $view->data['media-upload'] = new \Modules\Media\Theme\Backend\Components\Upload\BaseView($this->app->l11nManager, $request, $response); return $view; } diff --git a/Docs/Dev/en/structure.md b/Docs/Dev/en/structure.md deleted file mode 100644 index 1e1ed19..0000000 --- a/Docs/Dev/en/structure.md +++ /dev/null @@ -1,5 +0,0 @@ -# Structure - -## ER - - \ No newline at end of file diff --git a/Docs/Dev/img/er.png b/Docs/Dev/img/er.png deleted file mode 100644 index 55efbd2..0000000 Binary files a/Docs/Dev/img/er.png and /dev/null differ diff --git a/Docs/Help/en/SUMMARY.md b/Docs/Help/en/SUMMARY.md new file mode 100644 index 0000000..73e73d8 --- /dev/null +++ b/Docs/Help/en/SUMMARY.md @@ -0,0 +1,5 @@ +# User Content + +* [Expense]({%}&page=Help/expense) +* [Expense Element Type]({%}&page=Help/expense_element_type) +* [Expense Type]({%}&page=Help/expense_type) diff --git a/Docs/Help/en/expense.md b/Docs/Help/en/expense.md new file mode 100644 index 0000000..e0d1ddb --- /dev/null +++ b/Docs/Help/en/expense.md @@ -0,0 +1,21 @@ +# Expense + +## Overview + +In the overview you can see for which person the expense report is, which period it covers and additional general information if provided. + + + +## Expenses + +In the expenses tab you can create and see individual expenses for this expense report. + +> Every expense should have it's own separate expense element. + +The list shows all days of the expense period, even if no expenses are recorded for a certain day. However, these days are greyed out. Expenses that are outside of the expense period are highlighted in red. + + + +After clicking on the respective expense line you will be able to see the detailed information of that expense. + + diff --git a/Docs/Help/en/expense_element_type.md b/Docs/Help/en/expense_element_type.md new file mode 100644 index 0000000..c2c9912 --- /dev/null +++ b/Docs/Help/en/expense_element_type.md @@ -0,0 +1,17 @@ +# Expense Element Type + +The expense element type describes the type of expenses. The module provides the following default types: + +* Fuel +* Parking +* Entertainment +* Breakfast +* Lunch +* Dinner +* Hotel +* Travelling +* Present +* Postage +* Stationary +* IT +* Other \ No newline at end of file diff --git a/Docs/Help/en/expense_type.md b/Docs/Help/en/expense_type.md new file mode 100644 index 0000000..768f7cc --- /dev/null +++ b/Docs/Help/en/expense_type.md @@ -0,0 +1,10 @@ +# Expense Type + +The expense type describes the type of expense report. The module provides the following default types: + +* Sales (e.g. meeting with customer) +* Supplier (e.g. meeting with supplier) +* Education (e.g. employee training) +* Event +* Affiliate (e.g. shareholder/owner related) +* Other \ No newline at end of file diff --git a/Docs/Help/en/introduction.md b/Docs/Help/en/introduction.md new file mode 100644 index 0000000..f0e15f7 --- /dev/null +++ b/Docs/Help/en/introduction.md @@ -0,0 +1,21 @@ +# Introduction + +The **Business Expenses** module lets you create and manage business expenses. + +## Target Group + +The target group for this module is anyone who has to create and manage business expenses (e.g. travelling sales men). + +# Setup + +This module doesn't have any additional setup requirements. However, for some automated invoice recognition please make sure you have `tesseract-ocr` installed. + +# Features + +## Expense Types + +Multiple expense types to indicate the type of the expense report. + +## Expense Element Types + +Multiple expense element types to indicate the type of the expense, such as hotel, dinner, travelling, ... diff --git a/Docs/Help/img/expenses_element_invalid_date.png b/Docs/Help/img/expenses_element_invalid_date.png new file mode 100644 index 0000000..5c8d226 Binary files /dev/null and b/Docs/Help/img/expenses_element_invalid_date.png differ diff --git a/Docs/img.json b/Docs/img.json new file mode 100644 index 0000000..fe49afa --- /dev/null +++ b/Docs/img.json @@ -0,0 +1,12 @@ +[ + [ + "/businessexpenses/expense/view?id=1", + "//*[@id=\"content\"]/div[2]/div[2]/div[1]/div[2]/div/section", + "/BusinessExpenses/Docs/Help/img/expenses_overview.png" + ], + [ + "/businessexpenses/expense/element/view?id=1", + "//*[@id=\"content\"]/div[2]/div[2]/div[1]/div/div/section", + "/BusinessExpenses/Docs/Help/img/expenses_element_overview.png" + ] +] diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index 563c927..f3ab531 100644 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -21,22 +21,22 @@ return ['BusinessExpenses' => [ 'CreatedAt' => 'Erstellt', 'Description' => 'Beschreibung', 'End' => 'Ende', - 'Element' => 'Element', + 'Element' => 'Element', 'Expenses' => 'Kosten', 'From' => 'Von', 'Gross' => 'Brutto', - 'Back' => 'Zurück', + 'Back' => 'Zurück', 'Files' => 'Dateien', 'Net' => 'Netto', 'Notes' => 'Notizen', 'Paid' => 'Bezahlt', 'Report' => 'Bericht', - 'Total' => 'Gesamt', + 'Total' => 'Gesamt', 'Start' => 'Start', 'Status' => 'Status', 'Overview' => 'Übersicht', 'Clocking' => 'Zeiterfassung', 'Type' => 'Typ', - 'Costs' => 'Kosten', + 'Costs' => 'Kosten', 'Upload' => 'Hochladen', ]]; diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 904e57b..8338b34 100644 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -21,22 +21,22 @@ return ['BusinessExpenses' => [ 'CreatedAt' => 'Created At', 'Description' => 'Description', 'End' => 'End', - 'Element' => 'Element', + 'Element' => 'Element', 'Expenses' => 'Expenses', 'From' => 'From', 'Gross' => 'Gross', 'Files' => 'Files', - 'Back' => 'Back', + 'Back' => 'Back', 'Net' => 'Net', 'Notes' => 'Notes', 'Paid' => 'Paid', 'Report' => 'Report', - 'Total' => 'Total', + 'Total' => 'Total', 'Start' => 'Start', 'Status' => 'Status', 'Overview' => 'Overview', 'Clocking' => 'Clocking', 'Type' => 'Type', - 'Costs' => 'Costs', + 'Costs' => 'Costs', 'Upload' => 'Upload', ]]; diff --git a/Theme/Backend/element-view.tpl.php b/Theme/Backend/element-view.tpl.php index 8e24a76..b2fd47e 100644 --- a/Theme/Backend/element-view.tpl.php +++ b/Theme/Backend/element-view.tpl.php @@ -17,8 +17,8 @@ use Modules\BusinessExpenses\Models\NullExpense; use phpOMS\Uri\UriFactory; /** @var \phpOMS\Views\View $this */ -$element = $this->data['element'] ?? new NullExpense(); -$isNew = $element->id === 0; +$element = $this->data['element'] ?? new NullExpense(); +$isNew = $element->id === 0; echo $this->data['nav']->render(); ?>