Konto: Phrases

This commit is contained in:
cgfhtw
2024-04-25 11:36:37 +02:00
parent 1b19a0821f
commit f47f8d5da4
6 changed files with 817 additions and 163 deletions
@@ -49,7 +49,7 @@ class Konto extends FHCAPI_Controller
// Load language phrases
$this->loadPhrases([
'ui'
'konto'
]);
}
@@ -175,22 +175,21 @@ class Konto extends FHCAPI_Controller
return $row->nachname . ' ' . $row->vorname;
}, $result);
// TODO(chris): Phrases
$result = $this->p->t('konto', 'buchung_vorhanden') . "\n";
$result = $this->p->t('konto', 'confirm_overwrite') . "\n";
if (count($persons) > 10) {
$result .= "-" . implode("\n-", array_slice($persons, 0, 10)) . "\n";
if (count($persons) == 11) {
$result .= "\n" . $this->p->t('konto', 'and_1_additional_person');
$result .= "\n" . $this->p->t('konto', 'confirm_overwrite_1_add_pers');
} else {
$result .= "\n" . $this->p->t('konto', 'and_x_additional_person', [
$result .= "\n" . $this->p->t('konto', 'confirm_overwrite_x_add_pers', [
'x' => count($persons) - 10
]);
}
} else {
$result .= "-" . implode("\n-", $persons) . "\n";
}
$result .= $this->p->t('konto', 'proceed');
$result .= $this->p->t('konto', 'confirm_overwrite_proceed');
$this->addError($result, 'confirm');
@@ -327,8 +326,8 @@ class Konto extends FHCAPI_Controller
'label' => 'Buchung # ' . $buchungsnr,
'rules' => 'regex_match[/^$/]',
'errors' => [
'regex_match' => 'Gegenbuchungen koennen nur auf die obersten Buchungen getaetigt werden'
] // TODO(chris): phrase
'regex_match' => $this->p->t('konto', 'error_counter_level')
]
];
}
}
@@ -355,9 +354,9 @@ class Konto extends FHCAPI_Controller
if ($betrag === null) {
$this->addError($this->p->t(
'konto',
'Buchung #{buchungsnr} does not exist',
'error_missing',
$buchung
), self::ERROR_TYPE_GENERAL); // TODO(chris): phrase
), self::ERROR_TYPE_GENERAL);
continue;
}
@@ -482,7 +481,9 @@ class Konto extends FHCAPI_Controller
$result = $result->retval;
if (!$result)
$this->terminateWithError('buchung not found', self::ERROR_TYPE_GENERAL); // TODO(chris): phrase
$this->terminateWithError($this->p->t('konto', 'error_missing', [
'buchungsnr' => $buchungsnr
]), self::ERROR_TYPE_GENERAL);
$_POST['studiengang_kz'] = current($result)->studiengang_kz;
@@ -500,7 +501,7 @@ class Konto extends FHCAPI_Controller
if (isError($result)) {
if (getCode($result) != 42)
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); // TODO(chris): phrase
$this->terminateWithError($this->p->t('konto', 'error_delete_level'), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess();
+117 -17
View File
@@ -15,49 +15,57 @@ class Config extends FHC_Controller
$this->load->library('AuthLib');
$this->load->library('PermissionLib');
$this->loadPhrases([
'global',
'person',
'lehre',
'stv',
'konto'
]);
}
public function student()
{
// TODO(chris): phrases
$result = [];
$result['details'] = [
'title' => 'Details',
'title' => $this->p->t('stv', 'tab_details'),
'component' => './Stv/Studentenverwaltung/Details/Details.js'
];
$result['notizen'] = [
'title' => 'Notizen',
$result['notes'] = [
'title' => $this->p->t('stv', 'notes'),
'component' => './Stv/Studentenverwaltung/Details/Notizen.js'
];
$result['kontakt'] = [
'title' => 'Kontakt',
$result['contact'] = [
'title' => $this->p->t('stv', 'contact'),
'component' => './Stv/Studentenverwaltung/Details/Kontakt.js'
];
$result['prestudent'] = [
'title' => 'PreStudentIn',
'title' => $this->p->t('stv', 'prestudent'),
'component' => './Stv/Studentenverwaltung/Details/Prestudent.js'
];
$result['status'] = [
'title' => 'Status',
'title' => $this->p->t('stv', 'status'),
'component' => './Stv/Studentenverwaltung/Details/Status.js'
];
$result['konto'] = [
'title' => 'Konto',
$result['banking'] = [
'title' => $this->p->t('stv', 'banking'),
'component' => './Stv/Studentenverwaltung/Details/Konto.js',
'config' => [
'showZahlungsbestaetigung' => (defined('ZAHLUNGSBESTAETIGUNG_ANZEIGEN') && ZAHLUNGSBESTAETIGUNG_ANZEIGEN),
'showBuchungsnr' => $this->permissionlib->isBerechtigt('admin'),
'showMahnspanne' => (!defined('FAS_KONTO_SHOW_MAHNSPANNE') || FAS_KONTO_SHOW_MAHNSPANNE===true),
'showCreditpoints' => (defined('FAS_KONTO_SHOW_CREDIT_POINTS') && FAS_KONTO_SHOW_CREDIT_POINTS == 'true'),
'columns' => $this->kontoColumns(),
'additionalCols' => []
]
];
$result['betriebsmittel'] = [
'title' => 'Betriebsmittel',
$result['resources'] = [
'title' => $this->p->t('stv', 'resources'),
'component' => './Stv/Studentenverwaltung/Details/Betriebsmittel.js'
];
$result['noten'] = [
'title' => 'Noten',
$result['grades'] = [
'title' => $this->p->t('stv', 'grades'),
'component' => './Stv/Studentenverwaltung/Details/Noten.js'
];
@@ -70,16 +78,16 @@ class Config extends FHC_Controller
public function students()
{
// TODO(chris): phrases
$result = [];
$result['konto'] = [
'title' => 'Konto',
$result['banking'] = [
'title' => $this->p->t('stv', 'banking'),
'component' => './Stv/Studentenverwaltung/Details/Konto.js',
'config' => [
'showZahlungsbestaetigung' => (defined('ZAHLUNGSBESTAETIGUNG_ANZEIGEN') && ZAHLUNGSBESTAETIGUNG_ANZEIGEN),
'showBuchungsnr' => $this->permissionlib->isBerechtigt('admin'),
'showMahnspanne' => (!defined('FAS_KONTO_SHOW_MAHNSPANNE') || FAS_KONTO_SHOW_MAHNSPANNE===true),
'showCreditpoints' => (defined('FAS_KONTO_SHOW_CREDIT_POINTS') && FAS_KONTO_SHOW_CREDIT_POINTS == 'true'),
'columns' => $this->kontoColumnsMultiPerson(),
'additionalCols' => []
]
];
@@ -90,4 +98,96 @@ class Config extends FHC_Controller
$this->outputJsonSuccess($result);
}
protected function kontoColumns()
{
return [
'buchungsdatum' => [
'field' => "buchungsdatum",
'title' => $this->p->t('konto', 'buchungsdatum')
],
'buchungstext' => [
'field' => "buchungstext",
'title' => $this->p->t('konto', 'buchungstext')
],
'betrag' => [
'field' => "betrag",
'title' => $this->p->t('konto', 'betrag')
],
'studiensemester_kurzbz' => [
'field' => "studiensemester_kurzbz",
'title' => $this->p->t('lehre', 'studiensemester')
],
'buchungstyp_kurzbz' => [
'field' => "buchungstyp_kurzbz",
'title' => $this->p->t('konto', 'buchungstyp'),
'visible' => false
],
'buchungsnr' => [
'field' => "buchungsnr",
'title' => $this->p->t('konto', 'buchungsnr'),
'visible' => false
],
'insertvon' => [
'field' => "insertvon",
'title' => $this->p->t('global', 'insertvon'),
'visible' => false
],
'insertamum' => [
'field' => "insertamum",
'title' => $this->p->t('global', 'insertamum'),
'visible' => false
],
'kuerzel' => [
'field' => "kuerzel",
'title' => $this->p->t('lehre', 'studiengang'),
'visible' => false
],
'anmerkung' => [
'field' => "anmerkung",
'title' => $this->p->t('global', 'anmerkung')
],
'actions' => [
'title' => $this->p->t('global', 'actions'),
'frozen' => true
]
];
}
protected function kontoColumnsMultiPerson()
{
return [
'person_id' => [
'field' => "person_id",
'title' => $this->p->t('person', 'person_id')
],
'anrede' => [
'field' => "anrede",
'title' => $this->p->t('person', 'anrede'),
'visible' => false
],
'titelpost' => [
'field' => "titelpost",
'title' => $this->p->t('person', 'titelpost'),
'visible' => false
],
'titelpre' => [
'field' => "titelpre",
'title' => $this->p->t('person', 'titelpre'),
'visible' => false
],
'vorname' => [
'field' => "vorname",
'title' => $this->p->t('person', 'vorname')
],
'vornamen' => [
'field' => "vornamen",
'title' => $this->p->t('person', 'vornamen'),
'visible' => false
],
'nachname' => [
'field' => "nachname",
'title' => $this->p->t('person', 'nachname')
]
] + $this->kontoColumns();
}
}
+2 -2
View File
@@ -84,8 +84,8 @@ class Konto_model extends DB_Model
{
$this->db->where('buchungsnr_verweis', $id);
if ($this->db->count_all_results($this->dbTable))
return error('Bitte zuerst die zugeordneten Buchungen loeschen');
return parent::delete($id, 42);
return error('Bitte zuerst die zugeordneten Buchungen loeschen', 42);
return parent::delete($id);
}
/**
@@ -3,7 +3,6 @@ import FormInput from "../../../Form/Input.js";
import KontoNew from "./Konto/New.js";
import KontoEdit from "./Konto/Edit.js";
// TODO(chris): Phrasen
export default {
components: {
@@ -52,130 +51,46 @@ export default {
}
},
tabulatorColumns() {
let columns = [];
if (Array.isArray(this.modelValue)) {
columns.push({
field: "person_id",
title: "Person ID"
});
columns.push({
field: "anrede",
title: "Anrede",
visible: false
});
columns.push({
field: "titelpost",
title: "Titelpost",
visible: false
});
columns.push({
field: "titelpre",
title: "Titelpre",
visible: false
});
columns.push({
field: "vorname",
title: "Vorname"
});
columns.push({
field: "vornamen",
title: "Vornamen",
visible: false
});
columns.push({
field: "nachname",
title: "Nachname"
});
}
const columns = { ...this.config.columns };
if (!columns.actions)
columns.actions = {
title: '',
frozen: true
};
columns.actions.formatter = cell => {
let container = document.createElement('div');
container.className = "d-flex gap-2";
columns = [...columns, ...[
{
field: "buchungsdatum",
title: "Buchungsdatum"
},
{
field: "buchungstext",
title: "Buchungstext"
},
{
field: "betrag",
title: "Betrag"
},
{
field: "studiensemester_kurzbz",
title: "StSem"
},
{
field: "buchungstyp_kurzbz",
title: "Typ",
visible: false
},
{
field: "buchungsnr",
title: "Buchungs Nr",
visible: false
},
{
field: "insertvon",
title: "Angelegt von",
visible: false
},
{
field: "insertamum",
title: "Anlagedatum",
visible: false
},
{
field: "kuerzel",
title: "Studiengang",
visible: false
},
{
field: "anmerkung",
title: "Anmerkung"
}
]];
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.addEventListener('click', () =>
this.$refs.edit.open(cell.getData())
);
container.append(button);
columns = [...columns, ...this.config.additionalCols];
button = document.createElement('button');
button.className = 'btn btn-outline-secondary';
button.innerHTML = '<i class="fa fa-trash"></i>';
button.addEventListener('click', evt => {
evt.stopPropagation();
this.$fhcAlert
.confirmDelete()
.then(result => result ? cell.getData().buchungsnr : Promise.reject({handled:true}))
.then(this.$fhcApi.factory.stv.konto.delete)
.then(() => {
// TODO(chris): deleting a child also removes the siblings!
//cell.getRow().delete();
this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
});
container.append(button);
columns.push({
title: 'Actions',
formatter: cell => {
let container = document.createElement('div');
container.className = "d-flex gap-2";
return container;
};
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.addEventListener('click', () =>
this.$refs.edit.open(cell.getData())
);
container.append(button);
button = document.createElement('button');
button.className = 'btn btn-outline-secondary';
button.innerHTML = '<i class="fa fa-trash"></i>';
button.addEventListener('click', evt => {
evt.stopPropagation();
this.$fhcAlert
.confirmDelete()
.then(result => result ? cell.getData().buchungsnr : Promise.reject({handled:true}))
.then(this.$fhcApi.factory.stv.konto.delete)
.then(() => {
// TODO(chris): deleting a child also removes the siblings!
//cell.getRow().delete();
this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
});
container.append(button);
return container;
},
frozen: true
});
return columns;
return Object.values(columns);
},
tabulatorOptions() {
return this.$fhcApi.factory.stv.konto.tabulatorConfig({
@@ -214,7 +129,7 @@ export default {
})
.then(result => result.data)
.then(this.updateData)
.then(() => 'Daten wurden gespeichert')
.then(() => this.$p.t('ui/gespeichert'))
.then(this.$fhcAlert.alertSuccess)
.catch(this.$fhcAlert.handleSystemError);
},
@@ -263,7 +178,7 @@ export default {
<form-input
container-class="form-switch"
type="checkbox"
label="Nur offene anzeigen"
:label="$p.t('stv/konto_filter_open')"
v-model="filter"
@update:model-value="() => $nextTick($refs.table.reloadTable)"
>
@@ -273,7 +188,7 @@ export default {
<form-input
container-class="form-switch"
type="checkbox"
label="Nur aktuellen Stg anzeigen"
:label="$p.t('stv/konto_filter_current_stg')"
v-model="studiengang_kz_intern"
:disabled="!stg_kz"
@update:model-value="() => $nextTick($refs.table.reloadTable)"
@@ -288,7 +203,7 @@ export default {
:tabulator-options="tabulatorOptions"
reload
new-btn-show
new-btn-label="Buchung"
:new-btn-label="$p.t('konto/buchung')"
:new-btn-disabled="stg_kz === ''"
@click:new="actionNew"
>
@@ -308,7 +223,7 @@ export default {
@click="actionCounter(selected)"
:disabled="!selected.length"
>
Gegenbuchen
{{ $p.t('stv/konto_counter') }}
</button>
</div>
<button
@@ -317,7 +232,7 @@ export default {
@click="downloadPdf(selected)"
:disabled="!selected.length"
>
<i class="fa fa-download"></i> Zahlungsbestaetigung
<i class="fa fa-download"></i> {{ $p.t('stv/konto_payment_confirmation') }}
</button>
</template>
</core-filter-cmpt>
@@ -2,6 +2,7 @@ import {CoreFilterCmpt} from "../../filter/Filter.js";
import {CoreRESTClient} from '../../../RESTClient.js';
import ListNew from './List/New.js';
export default {
components: {
CoreFilterCmpt,
@@ -205,14 +206,14 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="InteressentIn"
:new-btn-label="$p.t('stv/action_new')"
@click:new="actionNewPrestudent"
>
<template #filter>
<div class="card">
<div class="card-body">
<div class="input-group mb-3">
<label class="input-group-text col-4" for="stv-list-filter-konto-count-0">Liste filtern auf nicht belastet:</label>
<label class="input-group-text col-4" for="stv-list-filter-konto-count-0">{{ $p.t('stv/konto_filter_count_0') }}</label>
<select class="form-select" id="stv-list-filter-konto-count-0" v-model="filterKontoCount0" @input="$nextTick(updateUrl)">
<option v-for="typ in lists.buchungstypen" :key="typ.buchungstyp_kurzbz" :value="typ.buchungstyp_kurzbz">
{{ typ.beschreibung }}
@@ -223,9 +224,9 @@ export default {
</button>
</div>
<div class="input-group">
<label class="input-group-text col-4" for="stv-list-filter-konto-missing-counter">Liste filtern auf fehlende Gegenbuchungen:</label>
<label class="input-group-text col-4" for="stv-list-filter-konto-missing-counter">{{ $p.t('stv/konto_filter_missing_counter') }}</label>
<select class="form-select" id="stv-list-filter-konto-missing-counter" v-model="filterKontoMissingCounter" @input="$nextTick(updateUrl)">
<option value="alle">alle Buchungstypen</option>
<option value="alle">{{ $p.t('stv/konto_all_types') }}</option>
<option v-for="typ in lists.buchungstypen" :key="typ.buchungstyp_kurzbz" :value="typ.buchungstyp_kurzbz">
{{ typ.beschreibung }}
</option>
+638 -1
View File
@@ -1133,6 +1133,67 @@ $phrases = array(
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'insertvon',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Erstellt von',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Inserted from',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'insertamum',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Erstelldatum',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Insert date',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'actions',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Aktionen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Actions',
'description' => '',
'insertvon' => 'system'
)
)
),
//******************************* CORE/ui
array(
'app' => 'core',
@@ -1595,6 +1656,7 @@ $phrases = array(
)
),
//*************************** CORE/filter
array(
'app' => 'core',
@@ -1701,6 +1763,26 @@ $phrases = array(
),
//**************************** CORE/person
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'person_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Person ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Person ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
@@ -26532,7 +26614,562 @@ array(
)
)
),
// FHC-Core-SAP
//**************************** CORE/konto
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'buchung',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Buchung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Booking',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'buchungsdatum',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Buchungsdatum',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Booking date',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'buchungstext',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Buchungstext',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Booking text',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'betrag',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betrag',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Amount',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'buchungstyp',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Buchungstyp',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Booking type',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'buchungsnr',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Buchungs Nummer',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Booking number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'confirm_overwrite',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es ist bereits eine Buchung vorhanden:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'A booking already exists:',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'confirm_overwrite_1_add_pers',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'und einer weiteren Person.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'and one additional person.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'confirm_overwrite_x_add_pers',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'und {x} weiteren Personen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'and {x} additional persons.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'confirm_overwrite_proceed',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Trotzdem fortfahren?',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Proceed anyway?',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'error_missing',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Buchung #{buchungsnr} existiert nicht',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Booking #{buchungsnr} does not exist',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'error_counter_level',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Gegenbuchungen koennen nur auf die obersten Buchungen getaetigt werden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Offsetting bookings can only be made on the top bookings',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'konto',
'phrase' => 'error_delete_level',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bitte zuerst die zugeordneten Buchungen löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Please delete the assigned bookings first',
'description' => '',
'insertvon' => 'system'
)
)
),
//**************************** CORE/stv
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'action_new',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'InteressentIn',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Candidate',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_details',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Details',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Details',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_notes',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Notizen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Notes',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_contact',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Kontakt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contact',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_prestudent',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'PreStudentIn',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Prestudent',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_status',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'State',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_konto',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Konto',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Banking',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_resources',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittel',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Resources',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'tab_grades',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Noten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Grades',
'description' => '',
'insertvon' => 'system'
)
)
),
// konto
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_counter',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Gegenbuchen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Counter-book',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_payment_confirmation',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Zahlungsbestaetigung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Payment confirmation',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_filter_count_0',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Liste filtern auf nicht belastet:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Filter list to not charged:',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_filter_missing_counter',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Liste filtern auf fehlende Gegenbuchungen:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Filter the list for missing offsetting entries:',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_all_types',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'alle Buchungstypen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'all booking types',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_filter_open',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Nur offene anzeigen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Display only open',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'stv',
'phrase' => 'konto_filter_current_stg',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Nur aktuellen Studiengang anzeigen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Display only current Degree Program',
'description' => '',
'insertvon' => 'system'
)
)
),
//**************************** FHC-Core-SAP
array(
'app' => 'core',
'category' => 'sap',