272 lines
15 KiB
YAML
272 lines
15 KiB
YAML
kimai:
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# Settings for the user management and login forms
|
|
user:
|
|
registration: true
|
|
password_reset: true
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# All configs related to timesheet and record management
|
|
timesheet:
|
|
|
|
# render timesheet descriptions with markdown
|
|
markdown_content: false
|
|
|
|
# Whether we display start and end time columns (false) or durations only (true).
|
|
# Setting this to true will also change the "edit timesheet" forms, more infos available in the configurations docu.
|
|
duration_only: false
|
|
|
|
# Rounding rules are used to round the begin & end dates and the duration for timesheet records.
|
|
# The "default" rule will round "begin" down and "end" up to the full minute, the "duration" will not be rounded.
|
|
# Please read var/docs/configurations.md to find out more about rounding rules
|
|
rounding:
|
|
default:
|
|
days: ['monday','tuesday','wednesday','thursday','friday','saturday','sunday']
|
|
begin: 1
|
|
end: 1
|
|
duration: 0
|
|
|
|
# If you want to apply different hourly rates for specific weekdays, you can uncomment the "rates" configuration.
|
|
# The "weekend" rule will add 50% to each timesheet entry that will be recorded on "saturdays" or "sundays".
|
|
# Please read var/docs/configurations.md to find out more about rates rules
|
|
# rates:
|
|
# weekend:
|
|
# days: ['saturday','sunday']
|
|
# factor: 1.5
|
|
|
|
# If you want to limit the max. active entries per user, you can do it here.
|
|
#
|
|
# The soft_limit is used as theme setting (formerly "kimai.theme.active_warning"):
|
|
# display a warning color if the user has at least X active recordings
|
|
#
|
|
# The hard_limit is used to detect how many active records are allowed per user:
|
|
# By default a user can only have one active time-record. The first one is stopped when the new one starts.
|
|
# When hard_limit is > 1: as soon as the limit is reached and warning is shown and the user has to stop one active entry.
|
|
active_entries:
|
|
soft_limit: 1
|
|
hard_limit: 3
|
|
|
|
# Rules that define the Timesheet validation and behaviour
|
|
rules:
|
|
# whether records in the future can be created
|
|
allow_future_times: true
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# Invoice management
|
|
#invoice:
|
|
# # all files in these directories will be used as invoice documents (if supported by a renderer)
|
|
# documents:
|
|
# - 'var/invoices/'
|
|
# - 'templates/invoice/renderer/'
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# Default settings used to populate forms
|
|
#defaults:
|
|
# customer:
|
|
# timezone: Europe/Berlin
|
|
# country: DE
|
|
# currency: EUR
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# Free configurable permission system, see var/docs/permissions.md
|
|
permissions:
|
|
sets:
|
|
# mapping complex rulesets of single permissions to named "sets" ("set name" = [array of "permissions"])
|
|
ACTIVITIES: [view_activity,create_activity,edit_activity,delete_activity]
|
|
PROJECTS: [view_project,create_project,edit_project,delete_project]
|
|
CUSTOMERS: [view_customer,create_customer,edit_customer,delete_customer]
|
|
INVOICE: [view_invoice,create_invoice]
|
|
INVOICE_TEMPLATE: [view_invoice_template,create_invoice_template,edit_invoice_template,delete_invoice_template]
|
|
TIMESHEET: [view_own_timesheet,start_own_timesheet,stop_own_timesheet,create_own_timesheet,edit_own_timesheet,export_own_timesheet,delete_own_timesheet]
|
|
TIMESHEET_OTHER: [view_other_timesheet,start_other_timesheet,stop_other_timesheet,create_other_timesheet,edit_other_timesheet,export_other_timesheet,delete_other_timesheet]
|
|
PROFILE: [view_own_profile,edit_own_profile,password_own_profile,preferences_own_profile,api-token_own_profile]
|
|
PROFILE_OTHER: [view_other_profile,edit_other_profile,delete_other_profile,password_other_profile,roles_other_profile,preferences_other_profile,api-token_other_profile]
|
|
USER: [view_user,create_user,delete_user]
|
|
RATE: [view_rate_own_timesheet,edit_rate_own_timesheet]
|
|
RATE_OTHER: [view_rate_other_timesheet,edit_rate_other_timesheet]
|
|
EXPORT: [view_export,create_export,edit_export_own_timesheet,edit_export_other_timesheet]
|
|
maps:
|
|
# mapping "sets" or permissions to user roles ("role name" = [array of "set names"])
|
|
ROLE_USER: [TIMESHEET,PROFILE]
|
|
ROLE_TEAMLEAD: [INVOICE,TIMESHEET,TIMESHEET_OTHER,PROFILE,EXPORT]
|
|
ROLE_ADMIN: [ACTIVITIES,PROJECTS,CUSTOMERS,INVOICE,INVOICE_TEMPLATE,TIMESHEET,TIMESHEET_OTHER,PROFILE,RATE,RATE_OTHER,EXPORT]
|
|
ROLE_SUPER_ADMIN: [ACTIVITIES,PROJECTS,CUSTOMERS,INVOICE,INVOICE_TEMPLATE,TIMESHEET,TIMESHEET_OTHER,PROFILE,PROFILE_OTHER,USER,RATE,RATE_OTHER,EXPORT]
|
|
roles:
|
|
# adding single permissions to user roles, extending the definition from "sets" ("role name" = [array of "permissions"])
|
|
ROLE_USER: []
|
|
ROLE_TEAMLEAD: [view_invoice_template,create_invoice_template,edit_invoice_template,view_rate_own_timesheet,view_rate_other_timesheet,hourly-rate_own_profile]
|
|
ROLE_ADMIN: [hourly-rate_own_profile]
|
|
ROLE_SUPER_ADMIN: [hourly-rate_own_profile,hourly-rate_other_profile,delete_own_profile,roles_own_profile,system_information]
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# Language specific settings, like the date formats
|
|
languages:
|
|
de:
|
|
date_time_type: 'dd.MM.yyyy HH:mm'
|
|
date_time_picker: 'DD.MM.YYYY HH:mm'
|
|
date_type: 'dd.MM.yyyy'
|
|
date_picker: 'DD.MM.YYYY'
|
|
date: 'd.m.Y'
|
|
date_time: 'd.m. H:i'
|
|
duration: '%%h:%%m h'
|
|
en:
|
|
date_time_type: 'yyyy-MM-dd HH:mm'
|
|
date_time_picker: 'YYYY-MM-DD HH:mm'
|
|
date_type: 'yyyy-MM-dd'
|
|
date_picker: 'YYYY-MM-DD'
|
|
date: 'Y-m-d'
|
|
date_time: 'm-d H:i'
|
|
duration: '%%h:%%m h'
|
|
pt_BR:
|
|
date_time_type: 'dd-MM-yyyy HH:mm'
|
|
date_time_picker: 'DD-MM-YYYY HH:mm'
|
|
date_type: 'dd-MM-yyyy'
|
|
date_picker: 'DD-MM-YYYY'
|
|
date: 'd-m-Y'
|
|
date_time: 'd-m H:i'
|
|
duration: '%%h:%%m h'
|
|
it:
|
|
date_time_type: 'dd.MM.yyyy HH:mm'
|
|
date_time_picker: 'DD.MM.YYYY HH:mm'
|
|
date_type: 'dd.MM.yyyy'
|
|
date_picker: 'DD.MM.YYYY'
|
|
date: 'd.m.Y'
|
|
date_time: 'd.m. H:i'
|
|
duration: '%%h:%%m h'
|
|
fr:
|
|
date_time_type: 'dd/MM/yyyy HH:mm'
|
|
date_time_picker: 'DD/MM/YYYY HH:mm'
|
|
date_type: 'dd/MM/yyyy'
|
|
date_picker: 'DD/MM/YYYY'
|
|
date: 'd/m/Y'
|
|
date_time: 'd/m H:i'
|
|
duration: '%%h h %%m'
|
|
es:
|
|
date_time_type: 'dd.MM.yyyy HH:mm'
|
|
date_time_picker: 'DD.MM.YYYY HH:mm'
|
|
date_type: 'dd.MM.yyyy'
|
|
date_picker: 'DD.MM.YYYY'
|
|
date: 'd.m.Y'
|
|
date_time: 'd.m. H:i'
|
|
duration: '%%h:%%m h'
|
|
ru:
|
|
date_time_type: 'dd.MM.yyyy HH:mm'
|
|
date_time_picker: 'DD.MM.YYYY HH:mm'
|
|
date_type: 'dd.MM.yyyy'
|
|
date_picker: 'DD.MM.YYYY'
|
|
date: 'd.m.Y'
|
|
date_time: 'd.m. H:i'
|
|
duration: '%%h:%%m h'
|
|
ar:
|
|
date_time_type: 'yyyy-MM-dd HH:mm'
|
|
date_time_picker: 'YYYY-MM-DD HH:mm'
|
|
date_type: 'yyyy-MM-dd'
|
|
date_picker: 'YYYY-MM-DD'
|
|
date: 'Y-m-d'
|
|
date_time: 'm-d H:i'
|
|
duration: '%%h:%%m h'
|
|
hu:
|
|
date_time_type: 'yyyy.MM.dd HH:mm'
|
|
date_time_picker: 'YYYY.MM.DD HH:mm'
|
|
date_type: 'yyyy.MM.dd.'
|
|
date_picker: 'YYYY.MM.DD.'
|
|
date: 'Y.m.d.'
|
|
date_time: 'm.d. H:i'
|
|
duration: '%%h:%%m h'
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# timesheet calendar configuration
|
|
calendar:
|
|
week_numbers: true
|
|
day_limit: 4
|
|
businessHours:
|
|
days: [1, 2, 3, 4, 5]
|
|
begin: '08:00'
|
|
end: '20:00'
|
|
|
|
# You can configure unlimited google calendars to display events for your company (e.g. holidays)
|
|
# Please read var/docs/configurations.md to find out more about calendar integration
|
|
# google:
|
|
# api_key: 'your-restricted-google-api-key'
|
|
# sources:
|
|
# holidays:
|
|
# id: 'de.german#holiday@group.v.calendar.google.com'
|
|
# color: '#ccc'
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# theme related settings, will be available as twig globals at "kimai_context.*"
|
|
# please see documentation at var/docs/theme.md
|
|
theme:
|
|
# BETA test: If you set this to 'selectpicker' the customer/project/activity select boxes will be transformed
|
|
# into a searchable and javascript enhanced input type
|
|
select_type: ~
|
|
# fallback color for all widgets that don't have a dedicated color
|
|
# possible options: blue, black, purple, yellow, red, green
|
|
box_color: 'green'
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# Dashboard widget sections, please see documentation at var/docs/dashboard.md
|
|
dashboard:
|
|
user_duration:
|
|
title: dashboard.you
|
|
order: 10
|
|
permission: ROLE_USER
|
|
widgets: [userDurationToday, userDurationWeek, userDurationMonth, userDurationYear]
|
|
user_rates:
|
|
title: ~
|
|
order: 20
|
|
permission: ROLE_USER
|
|
widgets: [userAmountToday, userAmountWeek, userAmountMonth, userAmountYear]
|
|
duration:
|
|
title: dashboard.all
|
|
order: 30
|
|
permission: ROLE_TEAMLEAD
|
|
widgets: [durationToday, durationWeek, durationMonth, durationYear]
|
|
active_users:
|
|
title: ~
|
|
order: 40
|
|
permission: ROLE_TEAMLEAD
|
|
widgets: [activeUsersToday, activeUsersWeek, activeUsersMonth, activeUsersYear]
|
|
rates:
|
|
title: ~
|
|
order: 50
|
|
permission: ROLE_ADMIN
|
|
widgets: [amountToday, amountWeek, amountMonth, amountYear]
|
|
|
|
# --------------------------------------------------------------------------------
|
|
# All available widgets, please see documentation at var/docs/dashboard.md
|
|
widgets:
|
|
userDurationToday: { title: stats.durationToday, query: duration, user: true, begin: '00:00:00', end: '23:59:59', icon: duration, color: green }
|
|
userDurationWeek: { title: stats.durationWeek, query: duration, user: true, begin: 'monday this week 00:00:00', end: 'sunday this week 23:59:59', icon: duration, color: blue }
|
|
userDurationMonth: { title: stats.durationMonth, query: duration, user: true, begin: 'first day of this month 00:00:00', end: 'last day of this month 23:59:59', icon: duration, color: purple }
|
|
userDurationYear: { title: stats.durationYear, query: duration, user: true, begin: '01 january this year 00:00:00', end: '31 december this year 23:59:59', icon: duration, color: yellow }
|
|
userDurationTotal: { title: stats.durationTotal, query: duration, user: true, icon: duration, color: red }
|
|
userAmountToday: { title: stats.amountToday, query: rate, user: true, begin: '00:00:00', end: '23:59:59', icon: money, color: green }
|
|
userAmountWeek: { title: stats.amountWeek, query: rate, user: true, begin: 'monday this week 00:00:00', end: 'sunday this week 23:59:59', icon: money, color: blue }
|
|
userAmountMonth: { title: stats.amountMonth, query: rate, user: true, begin: 'first day of this month 00:00:00', end: 'last day of this month 23:59:59', icon: money, color: purple }
|
|
userAmountYear: { title: stats.amountYear, query: rate, user: true, begin: '01 january this year 00:00:00', end: '31 december this year 23:59:59', icon: money, color: yellow }
|
|
userAmountTotal: { title: stats.amountTotal, query: rate, user: true, icon: money, color: red }
|
|
durationToday: { title: stats.durationToday, query: duration, begin: '00:00:00', end: '23:59:59', icon: duration, color: green }
|
|
durationWeek: { title: stats.durationWeek, query: duration, begin: 'monday this week 00:00:00', end: 'sunday this week 23:59:59', icon: duration, color: blue }
|
|
durationMonth: { title: stats.durationMonth, query: duration, begin: 'first day of this month 00:00:00', end: 'last day of this month 23:59:59', icon: duration, color: purple }
|
|
durationYear: { title: stats.durationYear, query: duration, begin: '01 january this year 00:00:00', end: '31 december this year 23:59:59', icon: duration, color: yellow }
|
|
durationTotal: { title: stats.durationTotal, query: duration, icon: duration, color: red }
|
|
amountToday: { title: stats.amountToday, query: rate, begin: '00:00:00', end: '23:59:59', icon: money, color: green }
|
|
amountWeek: { title: stats.amountWeek, query: rate, begin: 'monday this week 00:00:00', end: 'sunday this week 23:59:59', icon: money, color: blue }
|
|
amountMonth: { title: stats.amountMonth, query: rate, begin: 'first day of this month 00:00:00', end: 'last day of this month 23:59:59', icon: money, color: purple }
|
|
amountYear: { title: stats.amountYear, query: rate, begin: '01 january this year 00:00:00', end: '31 december this year 23:59:59', icon: money, color: yellow }
|
|
amountTotal: { title: stats.amountTotal, query: rate, icon: money, color: red }
|
|
activeUsersToday: { title: stats.userActiveToday, query: users, begin: '00:00:00', end: '23:59:59', icon: user, color: green }
|
|
activeUsersWeek: { title: stats.userActiveWeek, query: users, begin: 'monday this week 00:00:00', end: 'sunday this week 23:59:59', icon: user, color: blue }
|
|
activeUsersMonth: { title: stats.userActiveMonth, query: users, begin: 'first day of this month 00:00:00', end: 'last day of this month 23:59:59', icon: user, color: purple }
|
|
activeUsersYear: { title: stats.userActiveYear, query: users, begin: '01 january this year 00:00:00', end: '31 december this year 23:59:59', icon: user, color: yellow }
|
|
activeUsersTotal: { title: stats.userActiveTotal, query: users, icon: user, color: red }
|
|
activeRecordings: { title: stats.activeRecordings, query: active, icon: duration, color: red }
|
|
|
|
# Default settings used to populate forms
|
|
#defaults:
|
|
# customer:
|
|
# timezone: Europe/Berlin
|
|
# country: DE
|
|
# currency: EUR |