first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model.exceptions import ValidationError
class WorkValidationError(ValidationError):
pass
class WorkProgressValidationError(WorkValidationError):
pass

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z"/>
</svg>

After

Width:  |  Height:  |  Size: 301 B

15
modules/project/ir.py Normal file
View File

@@ -0,0 +1,15 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
class ActWindow(metaclass=PoolMeta):
__name__ = 'ir.action.act_window'
def get_domains(self, name):
domains = super().get_domains(name)
if self.res_model == 'project.work':
pool = Pool()
WorkStatus = pool.get('project.work.status')
domains = WorkStatus.get_window_domains(self)
return domains

View File

@@ -0,0 +1,324 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Наследници"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Коментар"
#, fuzzy
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Фирма"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Име"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Родител"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Партньор"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Адрес за контакт"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Състояние"
#, fuzzy
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Наличен в график"
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Продължителност"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Ред от график"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Общо усилия"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Вид"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Име"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Вид"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Проект"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
#, fuzzy
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Проект"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Задача"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Основен"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,301 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Fills"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentari"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Esforç"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Pare"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Tercer"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adreça de contacte"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Ruta"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progrés"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Estat"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponible en fulls de treball"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Temps"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Final del full de treball"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Inici del full de treball"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Fulls de treball"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Esforç total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progrés total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipus"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Comptador"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Per defecte"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progrés"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipus"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esforç estimat per aquest treball."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progrés estimat per aquest treball."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Marqueu per registrar temps invertit."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Temps total dedicat en aquest treball i els seus subtreballs."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Esforç total estimat per aquest treball i els seus subtreballs."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progrés total estimat per aquest treball i els seus subtreballs."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Marqueu per mostrar el nombre de treballs en aquest estat."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Marqueu per utilizar com a estat per defecte pel tipus."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "El progrés mínim que es requereix per aquest estat."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Els tipus de treball que poden utilitzar aquest estat."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasques"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projectes"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Arbre de projectes"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasques"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Línies del full de treball"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Projectes i tasques"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Estat del treball"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Arbre de projectes i tasques"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Tot"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"No es pot eliminar el tercer \"%(party)s\" mentre tingui projectes oberts "
"amb l'empresa \"%(company)s\"."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Per completar el treball \"%(work)s\", heu de completar primer tots els seus"
" fills."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Per actualitzar el treball \"%(work)s\" al estat \"%(status)s\", heu "
"d'incrementar el seu progres com a mínim fins a %(progress)s."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Per tornar a obrir el treball \"%(work)s\", també heu de reobrir el seu pare"
" \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Usuari a les empreses"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuració"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projectes"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projectes"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Arbre de projectes"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Informes"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasques"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Projectes i tasques"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Estat del treball"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Arbre de projectes i tasques"
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Projecte"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Finalitzat"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Obert"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Estat del projecte"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administració de projectes"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projecte"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasca"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fi:"
msgctxt "view:project.work:"
msgid "General"
msgstr "General"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Inici:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Full de treball:"

View File

@@ -0,0 +1,303 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,308 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Untergeordnet (Projekte/Projektaufgaben)"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Kommentar"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Veranschlagte Zeit"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Name"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Übergeordnet (Projekt/Projektaufgabe)"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Partei"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontaktadresse"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Pfad"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Fortschritt"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Verfügbar für Zeiterfassung"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Erfasste Zeit"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Zeiterfassung Ende"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Zeiterfassung Beginn"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Aufgaben"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Veranschlagter Gesamtaufwand"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Gesamtfortschritt"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Zählen"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Standard"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Name"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Fortschritt"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Typen"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Geschätzter Zeitaufwand für diese Projektaufgabe."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Geschätzter Fortschritt für diese Projektaufgabe."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Auswählen um Zeiterfassung zu aktivieren."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
"Die gesamte Zeit, die für diese Aufgabe inkl. Unteraufgaben aufgewendet "
"wurde."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
"Geschätzter Zeitaufwand für dieses Projekt oder diese Projektaufgabe "
"inklusive aller untergeordneten Projekte und Projektaufgaben."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
"Geschätzter Gesamtfortschritt für diese Projektaufgabe inkl. Unteraufgaben."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
"Auswählen, um die Anzahl der Projekte/Projektaufgaben mit diesem Status "
"anzuzeigen."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Auswählen, um diesen Status für den Typ als Standard zu verwenden."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "Der minimale Fortschritt, der für diesen Status erforderlich ist."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Die Typen, die diesen Status verwenden können."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Projektaufgabe"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Projektaufgaben"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Zeiterfassungspositionen"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Projektaufgaben Status"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Alle"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Partei \"%(party)s\" kann nicht gelöscht werden solange für sie noch offene "
"Projekte bei Unternehmen \"%(company)s\" bestehen."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Um das Projekt/die Projektaufgabe \"%(work)s\" abschließen zu können, müssen"
" auch alle zugehörigen Unteraufgaben abgeschlossen werden."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Um \"%(work)s\" in den Status \"%(status)s\" setzen zu können, muss der "
"Fortschritt mindestens auf %(progress)s gesetzt werden."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Um das Projekt \"%(work)s\" wieder öffnen zu können, muss zuerst das "
"übergeordnete Projekt \"%(parent)s\" wieder geöffnet werden."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Benutzer in Unternehmen"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Einstellungen"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Auswertungen"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Projektaufgaben"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Projektaufgabenstatus"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Projekt"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Erledigt"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Offen"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Projektaufgaben Status"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Projekte Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Projektaufgabe"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Ende:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Allgemein"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Start:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Zeiterfassung:"

View File

@@ -0,0 +1,301 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Hijos"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentario"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Esfuerzo"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Padre"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Tercero"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Dirección de contacto"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Ruta"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progreso"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Estado"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponible en partes de trabajo"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Tiempo"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Fin de parte de trabajo"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Inicio de parte de trabajo"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Partes de trabajo"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Tiempo total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progreso total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Contador"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Por defecto"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progreso"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipos"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esfuerzo estimado para este trabajo."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progreso estimado para este trabajo."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Marcar para registrar el tiempo invertido."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Tiempo total empleado en este trabajo y sus subtrabajos."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progreso total estimado para este trabajo y sus subtrabajos."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Marcar para mostrar el número de trabajos en este estado."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Marcar para usar como estado por defecto para el tipo."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "El progreso mínimo que se requerie para este estado."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Los tipos de trabajo que pueden usar este estado."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tareas"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Proyectos"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Árbol de proyectos"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tareas"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Líneas del parte de trabajo"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Proyectos y tareas"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Estado del trabajo"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Árbol de proyectos y tareas"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Todo"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"No puede eliminar el tercero \"%(party)s\" mientras tenga proyectos abiertos"
" con la empresa \"%(company)s\"."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Para completar el trabajo \"%(work)s\", debe completar primero todos sus "
"hijos."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Para establecer el trabajo \"%(work)s\" en el estado \"%(status)s\", debe "
"incrementar su progreso como mínimo hasta %(progress)s."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Para volver a abrir el trabajo \"%(work)s\", también debes volver a abrir su"
" padre \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Usuario en las empresas"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuración"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Proyectos"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Proyectos"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Árbol de proyectos"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Informes"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tareas"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Proyectos y tareas"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Estado del trabajo"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Árbol de proyectos y tareas"
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Proyecto"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Finalizado"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Abierto"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Estado del proyecto"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administración de proyectos"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Proyecto"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tarea"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fin:"
msgctxt "view:project.work:"
msgid "General"
msgstr "General"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Inicio:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Parte de trabajo:"

View File

@@ -0,0 +1,298 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Duración"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Esfuerzo total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr ""
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr ""
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr ""
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr ""
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr ""
msgctxt "view:project.work.status:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,304 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Alamjaotus"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Kommentaar"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Ettevõte"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Püüdlus"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nimi"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Ülem"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Osapool"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontaktaadress"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progress"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Olek"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Ajatabelis saadaval"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Kestvus"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Töögraafiku lõpp"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Töögraafiku algus"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Töögraafiku tööd"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Koku püüdlus"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Kogu progress"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tüüp"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nimi"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progress"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tüüp"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Ülesanded"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Ülesanded"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Töögraafiku read"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Seadistus"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Ülesanded"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Tööpingutused"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Projekt"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Tehtud"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Avatud"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Projekti juhtimine"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Ülesanne"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Lõpp"
msgctxt "view:project.work:"
msgid "General"
msgstr "Peamine"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Algus"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Töögraafik:"

View File

@@ -0,0 +1,313 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "زیر مجموعه"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "اظهار نظر"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "شرکت"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "تلاش"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "نام"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "منبع"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "نهاد/سازمان"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "آدرس تماس"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "پیشرفت"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "وضعیت"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "موجود در جدول زمانی"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "مدت زمان"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "پایان جدول زمانی"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "شروع جدول زمانی"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "جدول زمانی کارها"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "مجموع تلاش"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "مجموع پیشرفت ها"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "نوع"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "نام"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "پیشرفت"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "نوع"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "تلاش پیش بینی شده برای این کار"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "پیشرفت پیش بینی شده برای این کار"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "کل زمان صرف شده در این کار و زیر کارهای آن"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "برآورد کل تلاش برای این کار و زیرکارهای آن"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "برآورد کل پیشرفت برای این کار و زیرکارهای آن"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "وظایف"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "وظایف"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "خطوط جدول زمانی"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"شما نمیتوانید نهاد/سازمان : \"%(party)s\"را هنگامی که پروژه باز با شرکت : "
"\"%(company)s\"دارد حذف کنید."
#, fuzzy, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"برای بستن کار \"%(parent)s\"، شما باید ابتدا کار زیرمجموعه :\"%(child)s\" را"
" ببندید."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, fuzzy, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"برای بازکردن کار \"%(child)s\"، شما باید ابتدا کار منبع:\"%(parent)s\" را "
"باز کنید."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "پیکربندی"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "وظایف"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "پروژه"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "انجام شد"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "باز شده"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "مدیریت پروژه"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "پروژه"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "وظیفه"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "پایان :"
msgctxt "view:project.work:"
msgid "General"
msgstr "عمومی"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "شروع :"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "جدول زمانی :"

View File

@@ -0,0 +1,301 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,301 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Enfants"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Commentaire"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Société"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Effort"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Parent"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Tiers"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adresse de contact"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Chemin"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progression"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Statut"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponible sur les relevés de temps"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Durée"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Fin de relevé de temps"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Début de relevé de temps"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Relevé de temps des travaux"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Effort total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progression totale"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Compter"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Défaut"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progression"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Types"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Effort estimé pour ce travail."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progression estimée pour ce travail."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Cochez pour enregistrer le temps passé."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Temps total passé sur ce travail et ses sous-travaux."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Effort total estimé pour ce travail et ses sous-travaux."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progression total estimée pour ce travail et ses sous-travaux."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Cochez pour montrer le nombre de travaux dans ce statut."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Cochez pour utiliser comme statut par défaut pour le type."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "La progression minimale requise pour ce statut."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Le type de travaux qui peuvent utiliser ce statut."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tâches"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tâches"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Lignes de relevé de temps"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Statut de travail"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Tous"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Vous ne pouvez pas effacer le tiers « %(party)s » tant qu'il a des projets "
"ouverts avec la société « %(company)s »."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Pour terminer le travail « %(work)s », vous devez également terminer tous "
"ses enfants."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Pour définir le travail « %(work)s » dans le statut « %(status)s », vous "
"devez augmenter sa progression jusqu'à au moins %(progress)s."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Pour rouvrir le travail « %(work)s », vous devez également rouvrir son "
"parent « %(parent)s »."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Utilisateur dans les sociétés"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Rapports"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tâches"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Statut de travail"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Travail de projet"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Terminé"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Ouvert"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Statut de travail de projet"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administration des projets"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projet"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tâche"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fin :"
msgctxt "view:project.work:"
msgid "General"
msgstr "Général"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Début :"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Relevé de temps :"

View File

@@ -0,0 +1,315 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Gyermek (csomag)"
#, fuzzy
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Megjegyzés"
#, fuzzy
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Társaság"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Név"
#, fuzzy
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Szülő (csomag)"
#, fuzzy
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Partner"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Állapot"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Időtartam"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Időkövetés vége"
#, fuzzy
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Időkövetés kezdete"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Típus"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Név"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Típus"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Beállítások"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Kész"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,294 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Cabang"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Komentar"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Perusahaan"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nama"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Induk"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Pihak"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nama"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr ""
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Konfigurasi"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Pelaporan"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tugas"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr ""
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr ""
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr ""
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr ""
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Umum"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Mulai:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,306 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Figlio"
#, fuzzy
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Commento"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Azienda"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Padre"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Controparte"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Indirizzo contatto"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Percorso"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progresso"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Stato"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponibile sul registro delle attività"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Durata"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipo"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configurazione"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Fatto"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
#, fuzzy
msgctxt "view:project.work:"
msgid "General"
msgstr "Generale"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,316 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "ໝວດຍ່ອຍ"
#, fuzzy
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "ຄໍາເຫັນ"
#, fuzzy
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "ຫ້ອງການ/ສຳນັກງານ"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "ຊື່"
#, fuzzy
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "ຮ່ວງ"
#, fuzzy
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "ພາກສ່ວນ"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "ສະຖານະ"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "ກຳນົດເວລາ"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "ຕາຕະລາງເຮັດວຽກຈົບເວລາ"
#, fuzzy
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "ຕາຕະລາງເຮັດວຽກເລີ້ມເວລາ"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "ຮູບແບບ"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "ຊື່"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "ຮູບແບບ"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "ການຕັ້ງຄ່າ"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "ແລ້ວໆ"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
#, fuzzy
msgctxt "view:project.work:"
msgid "General"
msgstr "ທົ່ວໄປ"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,303 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Komentaras"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Organizacija"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Kontrahentas"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontaktinis adresas"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Nuostatos"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,301 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Onderliggende niveaus"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Opmerking"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Bedrijf"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Inspanning"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Naam"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Bovenliggend niveau"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Relatie"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "contact adres"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Pad"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Vooruitgang"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Beschikbaar in tijdregistartie"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Looptijd"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Einde urenstaat"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Start urenstaat"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Tijdsregistratie werken"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Totale inspanning"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Totale vooruitgang"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Tellen"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Standaard"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Naam"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Vooruitgang"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Types"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Geschatte inspanning voor dit werk."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Geschatte voortgang voor dit werk."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Vink aan om de bestede tijd te registreren."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Totale tijd besteed aan dit werk en de subwerken."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Geschatte totale inspanning voor dit werk en de subwerken."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Geschatte totale voortgang voor dit werk en de subwerken."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Vink aan om het aantal werken in deze status te tonen."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Vink aan om als standaardstatus voor het type te gebruiken."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "De minimaal vereiste voortgang voor deze status."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Het soort werken dat deze status kan gebruiken."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "taken"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "taken"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Tijdregistratieregels"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Werk status"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Alle"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"U kunt de relatie \"%(party)s\" niet verwijderen terwijl ze facturen in "
"behandeling hebben bij bedrijf \"%(company)s\"."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Om het werk \"%(work)s\" te voltooien, moet u ook al zijn kinderen "
"voltooien."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Om werk \"%(work)s\" in te stellen op \"%(status)s\" status, moet u de "
"progressie (vooruitgang) verhogen tot minstens %(progress)s."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Om werkzaamheden \"%(work)s\" te heropenen, moet u het bovenliggende niveau "
"\"%(parent)s\" ook heropenen."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Gebruiker in het bedrijf"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuratie"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projecten"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Rapportage"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "taken"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Werk status"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project werkzaamheden"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Klaar"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Open"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Project status werkzaamheden"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Taak"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Einde:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Algemeen"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Begin:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Tijdsregistratie:"

View File

@@ -0,0 +1,314 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Elementy podrzędne"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Komentarz"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Firma"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nazwa"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Element nadrzędny"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Strona"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adres kontaktu"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Postęp"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Stan"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Czas trwania"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nazwa"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Postęp"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Typ"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Konfiguracja"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Raportowanie"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Projekt"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
#, fuzzy
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Zadanie"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Ogólne"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,302 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Filhos"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentário"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Esforço"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Pai"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Parceiro"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Endereço de contato"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Caminho"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progresso"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponível em quadros de tempo"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Duração"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Fim do Horário de Trabalho"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Início do Horário de Trabalho"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Horários de Trabalho"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Esforço total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progresso Total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Contagem"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Padrão"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progresso"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipos"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esforço estimado para este trabalho."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progresso estimado para este trabalho."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Marque para registrar o tempo gasto."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Tempo total gasto neste trabalho e nas sub-tarefas."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "O esforço total estimado para este trabalho e trabalhos secundários."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
"O progresso total estimado para este trabalho e para suas sub-tarefas."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Marque para mostrar o número de tarefas neste status."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Marque para usar como status padrão para o tipo."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "O progresso mínimo necessário para esse status."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "O tipo de trabalhos que podem usar esse status."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tarefas"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tarefas"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Linhas de Horário de Trabalho"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Esforços de trabalhos"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Status do Trabalho"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Esforços de trabalhos"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Todo"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Você não pode remover a pessoa \"%(party)s\" enquanto ela tiver projetos em "
"aberto com a empresa \"%(company)s\"."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Para completar o trabalho \"%(work)s\" você deve completar também todos os "
"seus filhos."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Para definir o trabalho \"%(work)s\" no status \"%(status)s\", você deve "
"aumentar seu progresso até pelo menos %(progress)s."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Para reabrir o trabalho \"%(work)s\", você também deve reabrir seu pai "
"\"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Usuário em companhia"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuração"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Relatórios"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tarefas"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Esforços de Trabalhos"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Status do Trabalho"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Esforços de Trabalhos"
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Trabalho do Projeto"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Pronto"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Aberto"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Status do Trabalho do Projeto"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administração de Projetos"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projeto"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tarefa"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fim:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Geral"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Início:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Quadro de Tempo:"

View File

@@ -0,0 +1,307 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Copii"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentariu"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Societate"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Efort"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Denumire"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Părinte"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Parte"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adresa de Contact"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Cale"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progres"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Stare"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponibil pe foile de pontaj"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Durata"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Sfârșitul foii de pontaj"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Început foaie de pontaj"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Efort total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progres total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tip"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Implicit"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nume"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progres"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipuri"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Efort estimat pentru această lucrare."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progresul estimat pentru această lucrare."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Bifați pentru a înregistra timpul petrecut."
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Timpul total petrecut cu această lucrare și sub-lucrări."
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Efort total estimat pentru această lucrare și sublucrări."
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progresul total estimat pentru această lucrare și sublucrări."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Bifați pentru a afișa numărul de lucrări în această stare."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Bifați pentru a utiliza ca stare implicită pentru tip."
#, fuzzy
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "Progresul minim necesar pentru acest statut."
#, fuzzy
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Tipul de lucrări care pot folosi acest statut."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Sarcini"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Sarcini"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Rânduri Foaie Pontaj"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Starea de lucru"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Tot"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Nu puteți șterge partea „%(party)s” în timp ce au proiecte deschise cu "
"compania „%(company)s”."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Pentru a seta lucrarea „%(work)s” în starea „%(status)s”, trebuie să-i "
"măriți progresul până la cel puțin %(progress)s."
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Utilizator în companii"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configurare"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Raportare"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Sarcini"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Starea Lucrării"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Proiect"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Terminat"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Deschis"
#, fuzzy
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Starea de lucru"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administrare Proiect"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Proiect"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Sarcina"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Sfârşit:"
msgctxt "view:project.work:"
msgid "General"
msgstr "General"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Start:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Foaie de pontaj:"

View File

@@ -0,0 +1,323 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Подчиненый"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Комментарии"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Организация"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Наименование"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Предок"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Контрагент"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Контактный адрес"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Состояние"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Доступно в табелях"
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Продолжительность"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Конечная дата табеля"
#, fuzzy
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Начальная дата табеля"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Общие затраты"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Тип"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Наименование"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Тип"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Проект"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
#, fuzzy
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Проект"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Задача"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Основной"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,303 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Podnaloge"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Opomba"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Družba"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Porabljen čas"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Naziv"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Matičnia dejavnost"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Partner"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontakt"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Pot"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Napredek"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Na evidenci"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Trajanje"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Konec evidence"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Začetek evidence"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Evidentirane naloge"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Ocena skupaj"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Napredek skupaj"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Vrsta"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Število"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Privzeto"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Naziv"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Napredek"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Vrsta"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Ocenjen čas za to nalogo."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Ocenjen napredek za to nalogo."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Označite za beleženje porabljenega časa."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Skupni čas, porabljen na tej nalogi in podnalogami."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Skupen čas, porabljen za to nalogo in podnaloge."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Skupen napredek za to nalogo in podnaloge."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Označi za prikaz števila nalog v tem stanju."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Označi za uporabo kot privzetega stanja za vrsto."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "Minimalno napredovanje potrebno za to stanje."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Vrsta naloge, ki sme uporabljati to stanje."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Naloge"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Naloge"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Vrstice urnika"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Stanje dela"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Vse"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Ni mogoče izbrisati partnerja \"%(party)s\", dokler so nanj vezani odpri "
"projekti z družbo \"%(company)s\"."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Za zaključek dela \"%(work)s\", je potrebno zaključiti tudi podrejene "
"elemente."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Če želite nastaviti delo »%(work)s« v stanje »%(status)s«, mora biti njegov "
"napredek vsaj %(progress)s."
#, fuzzy, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
"Če želite znova odpreti delo \"%(work)s\", je potrebno znova odpreti tudi "
"njegov matični zapis \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Uporabnik v družbah"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Konfiguracija"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Poročanje"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Naloge"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Stanje dela"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Projekt"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Zaključeno"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Odprto"
#, fuzzy
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "Stanje dela"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Skrbištvo projektov"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Naloga"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Konec:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Splošno"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Začetek:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Urnik:"

View File

@@ -0,0 +1,300 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Alt Öge"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Açıklama"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Firma"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "Project"
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,293 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr ""
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Користувач у компаніях"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Налаштування"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Звітність"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr ""
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr ""
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr ""
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr ""
msgctxt "view:project.work.status:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

View File

@@ -0,0 +1,296 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "子工作"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "说明"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "公司"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "投入"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "名称"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "父工作"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "参与者"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "联系地址"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "进度"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "状态"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "在时间表上显示"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "工期"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "时间表结束"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "时间表开始"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "时间表工作"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "总投入"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "总进度"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "类型"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "计数"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "默认"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "名称"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "进度"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "类型"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "这项工作的估计工作量."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "这项工作的估计进度."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "这项工作和其子工作的总投入时间."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "这项工作和其子工作的估计总工作量."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "这项工作和其子工作的估计总进度."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "选中可显示此状态下的工作数."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "选中后,将用作此种类型的默认状态."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "此状态要求的最小进度."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "可以使用此状态的工作类型."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "任务"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "任务"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "时间表明细"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "工作状态"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "所有"
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr "无法清除参与者 \"%(party)s\" 因为他们与公司 \"%(company)s\" 有未完成项目."
#, python-format
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr "如果要完成工作 \"%(work)s\",你必须完成它的所有子工作."
#, python-format
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr "如果要设置工作 \"%(work)s\" 的状态为 \"%(status)s\",你必须将其进度推进到至少 %(progress)s."
#, fuzzy, python-format
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid ""
"To reopen the work \"%(work)s\", you must also reopen its parent "
"\"%(parent)s\"."
msgstr "如果要重新开启工作 \"%(work)s\",你首先必须重新开启它的父工作 \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "设置"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "报告"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "任务"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "工作状态"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "工作量"
#, fuzzy
msgctxt "model:project.work,string:"
msgid "Project Work"
msgstr "项目"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "完成"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "开启"
#, fuzzy
msgctxt "model:project.work.status,string:"
msgid "Project Work Status"
msgstr "工作状态"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "项目管理"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "项目"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "任务"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "结束:"
msgctxt "view:project.work:"
msgid "General"
msgstr "常规"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "开始:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "时间表:"

View File

@@ -0,0 +1,22 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_work_invalid_progress_status">
<field name="text">To set work "%(work)s" in "%(status)s" status, you must increase its progress up to at least %(progress)s.</field>
</record>
<record model="ir.message" id="msg_work_children_progress">
<field name="text">To complete work "%(work)s" you must complete also all its children.</field>
</record>
<record model="ir.message" id="msg_work_parent_progress">
<field name="text">To reopen the work "%(work)s", you must also reopen its parent "%(parent)s".</field>
</record>
<record model="ir.message" id="msg_erase_party_opened_project">
<field name="text">You cannot erase party "%(party)s" while they have opened projects with company "%(company)s".</field>
</record>
<record model="ir.message" id="msg_domain_all">
<field name="text">All</field>
</record>
</data>
</tryton>

35
modules/project/party.py Normal file
View File

@@ -0,0 +1,35 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.i18n import gettext
from trytond.modules.party.exceptions import EraseError
from trytond.pool import Pool, PoolMeta
class Replace(metaclass=PoolMeta):
__name__ = 'party.replace'
@classmethod
def fields_to_replace(cls):
return super().fields_to_replace() + [
('project.work', 'party'),
]
class Erase(metaclass=PoolMeta):
__name__ = 'party.erase'
def check_erase_company(self, party, company):
pool = Pool()
Work = pool.get('project.work')
super().check_erase_company(party, company)
works = Work.search([
('party', '=', party.id),
('company', '=', company.id),
('progress', '!=', 1),
])
if works:
raise EraseError(
gettext('project.msg_erase_party_opened_project',
party=party.rec_name,
company=company.rec_name))

View File

@@ -0,0 +1,40 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="res.group" id="group_project_admin">
<field name="name">Project Administration</field>
</record>
<record model="res.user-res.group" id="user_admin_group_project_admin">
<field name="user" ref="res.user_admin"/>
<field name="group" ref="group_project_admin"/>
</record>
<record model="ir.ui.icon" id="project_icon">
<field name="name">tryton-project</field>
<field name="path">icons/tryton-project.svg</field>
</record>
<menuitem
name="Projects"
sequence="100"
id="menu_project"
icon="tryton-project"/>
<menuitem
name="Configuration"
parent="menu_project"
sequence="0"
id="menu_configuration"
icon="tryton-settings"/>
<record model="ir.ui.menu-res.group"
id="menu_configuration_group_project_admin">
<field name="menu" ref="menu_configuration"/>
<field name="group" ref="group_project_admin"/>
</record>
<menuitem
name="Reporting"
parent="menu_project"
sequence="100"
id="menu_reporting"/>
</data>
</tryton>

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,87 @@
=======================
Project Status Scenario
=======================
Imports::
>>> from proteus import Model
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate project::
>>> config = activate_modules('project', create_company)
Create status::
>>> WorkStatus = Model.get('project.work.status')
>>> in_progress = WorkStatus(name="In-Progress", types=['project'])
>>> in_progress.progress = 0.1
>>> in_progress.save()
>>> open, = WorkStatus.find([('name', '=', "Open")])
>>> done, = WorkStatus.find([('name', '=', "Done")])
Create a project with a task::
>>> Work = Model.get('project.work')
>>> project = Work(type='project', name="Project")
>>> assertEqual(project.status, open)
>>> task = project.children.new(name="Task")
>>> assertEqual(task.status, open)
>>> project.save()
>>> task, = project.children
Open the project::
>>> project.status = in_progress
>>> project.progress
0.1
>>> project.save()
Try to complete project without task::
>>> project.status = done
>>> project.progress
1.0
>>> project.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
>>> task, = project.children
>>> task.progress = 1
>>> project.save()
Try to reopen task without project::
>>> task = Work(task.id)
>>> task.progress = 0.5
>>> task.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
Change progress with updating status::
>>> project.progress = 0.8
>>> project.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
>>> project.status = in_progress
>>> project.save()
Reopen task::
>>> task = Work(task.id)
>>> task.progress = 0.5
>>> task.save()
Copy the project::
>>> project_copy, = project.duplicate()
>>> assertEqual(project_copy.status, open)
>>> project_copy.progress

View File

@@ -0,0 +1,206 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
from trytond.modules.company.tests import (
CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
from trytond.modules.party.tests import PartyCheckReplaceMixin
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.transaction import Transaction
class ProjectTestCase(
PartyCompanyCheckEraseMixin, PartyCheckReplaceMixin, CompanyTestMixin,
ModuleTestCase):
'Test Project module'
module = 'project'
@with_transaction()
def test_sum_tree(self):
'Test sum_tree'
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
p_work_1, = ProjectWork.create([{
'name': 'Work 1',
'company': company.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1, = ProjectWork.create([{
'name': 'Work 1 1',
'company': company.id,
'parent': p_work_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_2, = ProjectWork.create([{
'name': 'Work 1 2',
'company': company.id,
'parent': p_work_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1_1, = ProjectWork.create([{
'name': 'Work 1 1 1',
'company': company.id,
'parent': p_work_1_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1_2, = ProjectWork.create([{
'name': 'Work 1 1 2',
'company': company.id,
'parent': p_work_1_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1_3, = ProjectWork.create([{
'name': 'Work 1 1 3',
'company': company.id,
'parent': p_work_1_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
for work, total_effort in (
(p_work_1, 6),
(p_work_1_1, 4),
(p_work_1_2, 1),
(p_work_1_1_1, 1),
(p_work_1_1_2, 1),
(p_work_1_1_3, 1),
):
self.assertEqual(work.total_effort,
datetime.timedelta(hours=total_effort))
@with_transaction()
def test_timesheet_available(self):
'Test timesheet available'
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = 'Project Work'
p_work.save()
self.assertFalse(p_work.timesheet_works)
p_work.timesheet_available = True
p_work.save()
self.assertEqual(len(p_work.timesheet_works), 1)
p_work.timesheet_available = False
p_work.save()
self.assertFalse(p_work.timesheet_works)
@with_transaction(context={'_check_access': True})
def test_delete_access(self):
'Test delete_access'
pool = Pool()
User = pool.get('res.user')
Group = pool.get('res.group')
ModelData = pool.get('ir.model.data')
ProjectWork = pool.get('project.work')
TimesheetWork = pool.get('timesheet.work')
company = create_company()
with set_company(company):
project_user = User()
project_user.login = 'project'
project_user.companies = [company]
project_user.company = company
project_group = Group(ModelData.get_id(
'project', 'group_project_admin'))
project_user.groups = [project_group]
project_user.save()
with Transaction().set_user(project_user.id):
p_work = ProjectWork()
p_work.name = 'Project Work'
p_work.timesheet_available = True
p_work.save()
self.assertEqual(len(p_work.timesheet_works), 1)
ProjectWork.delete([p_work])
self.assertEqual(TimesheetWork.search([]), [])
@with_transaction()
def test_timesheet_default_work_empty(self):
"Test timesheet default work with no context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = "Work"
p_work.timesheet_available = True
p_work.save()
self.assertFalse(TimesheetLine.default_work())
@with_transaction()
def test_timesheet_default_work_single(self):
"Test timesheet default work with 1 work in context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = "Work"
p_work.timesheet_available = True
p_work.save()
with Transaction().set_context({'project.work': [p_work.id]}):
self.assertEqual(
TimesheetLine.default_work(),
p_work.timesheet_works[0].id)
@with_transaction()
def test_timesheet_default_work_multiple(self):
"Test timesheet default work with multiple work in context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
works = ProjectWork.create([
{'name': "Work 1", 'timesheet_available': True},
{'name': "Work 2", 'timesheet_available': True},
])
with Transaction().set_context(
{'project.work': map(int, works)}):
self.assertFalse(TimesheetLine.default_work())
@with_transaction()
def test_copy_work_with_children(self):
"Test copy work with children"
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
work, = ProjectWork.create([
{'name': "Parent", 'children': [('create', [
{'name': "Work 1", 'timesheet_available': True},
{'name': "Work 2", 'timesheet_available': False},
])]}])
new_work, = ProjectWork.copy([work])
child1, child2 = new_work.children
self.assertTrue(child1.timesheet_available)
self.assertFalse(child2.timesheet_available)
del ModuleTestCase

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@@ -0,0 +1,41 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
class Line(metaclass=PoolMeta):
__name__ = 'timesheet.line'
@classmethod
def default_work(cls):
pool = Pool()
Work = pool.get('timesheet.work')
try:
default = super().default_work()
except AttributeError:
default = None
project_works = Transaction().context.get('project.work')
if project_works is not None:
works = Work.search([
('origin.id', 'in', project_works, 'project.work'),
])
if len(works) == 1:
default = works[0].id
return default
class Work(metaclass=PoolMeta):
__name__ = 'timesheet.work'
@classmethod
def _get_origin(cls):
return super()._get_origin() + ['project.work']
def _validate_company(self):
pool = Pool()
ProjectWork = pool.get('project.work')
result = super()._validate_company()
if isinstance(self.origin, ProjectWork):
result &= self.company == self.origin.company
return result

View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.action.act_window" id="act_timesheet_line_form_work">
<field name="name">Timesheet Lines</field>
<field name="res_model">timesheet.line</field>
<field name="domain"
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('work.origin.id', '=', Eval('active_id'), 'project.work'), ('work.origin.id', 'in', Eval('active_ids'), 'project.work'))]"
pyson="1"/>
<field
name="context"
eval="{'project.work': Eval('active_ids')}"
pyson="1"/>
</record>
<record model="ir.action.keyword"
id="act_timesheet_line_form_work_keyword1">
<field name="keyword">form_relate</field>
<field name="model">project.work,-1</field>
<field name="action" ref="act_timesheet_line_form_work"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,25 @@
[tryton]
version=7.8.0
depends:
company
company_work_time
ir
party
timesheet
xml:
project.xml
work.xml
timesheet.xml
message.xml
[register]
model:
# Before Work because status default value is read from WorkStatus
work.WorkStatus
work.Work
timesheet.Line
timesheet.Work
ir.ActWindow
wizard:
party.Replace
party.Erase

View File

@@ -0,0 +1,59 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="6">
<label name="name"/>
<field name="name" colspan="3"/>
<label name="parent"/>
<field name="parent"/>
<label name="type"/>
<field name="type"/>
<label name="company"/>
<field name="company"/>
<label name="sequence"/>
<field name="sequence"/>
<label name="party"/>
<field name="party"/>
<label name="party_address"/>
<field name="party_address"/>
<notebook colspan="8">
<page string="General" id="general" col="6">
<label name="timesheet_available" string="Timesheet:"/>
<group col="-1" id="timesheet">
<field name="timesheet_available" xexpand="0"/>
<label name="timesheet_start_date" string="Start:"/>
<field name="timesheet_start_date" xexpand="0"/>
<label name="timesheet_end_date" string="End:"/>
<field name="timesheet_end_date" xexpand="0"/>
</group>
<newline/>
<label name="effort_duration"/>
<field name="effort_duration"/>
<label name="progress"/>
<group col="2" id="progress">
<field name="progress" factor="100" xexpand="0"/>
<label name="progress" string="%" xalign="0.0" xexpand="1"/>
</group>
<newline/>
<label name="timesheet_duration"/>
<field name="timesheet_duration"/>
<label name="total_effort"/>
<field name="total_effort"/>
<newline/>
<separator name="comment" colspan="6"/>
<field name="comment" colspan="6"/>
<group col="4" colspan="6" id="status_buttons">
<group col="2" colspan="2" id="status">
<label name="status"/>
<field name="status" widget="selection"/>
</group>
<group col="-1" colspan="2" id="buttons">
</group>
</group>
</page>
<page name="children" col="1">
<field name="children"
view_ids="project.work_view_list_children"/>
</page>
</notebook>
</form>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="company" expand="1" optional="1"/>
<field name="rec_name" expand="1"/>
<field name="timesheet_duration" optional="0"/>
<field name="total_effort" optional="0"/>
<field name="type" optional="1"/>
<field name="status"/>
<field name="total_progress" widget="progressbar" expand="1" optional="0"/>
</tree>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name" expand="1"/>
<field name="timesheet_duration" optional="0"/>
<field name="total_effort" optional="0"/>
<field name="type" optional="1"/>
<field name="status"/>
</tree>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="company" expand="1" optional="1"/>
<field name="rec_name" expand="1"/>
<field name="type" optional="1"/>
<field name="status" optional="0"/>
</tree>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form>
<label name="name"/>
<field name="name"/>
<group colspan="2" col="-1" id="checkboxes">
<label name="active"/>
<field name="active" xexpand="0" width="25"/>
<label name="default"/>
<field name="default" xexpand="0" width="25"/>
<label name="count"/>
<field name="count" xexpand="0" width="25"/>
<label name="sequence"/>
<field name="sequence"/>
</group>
<label name="types"/>
<field name="types" yexpand="0"/>
<label name="progress"/>
<group col="-1" id="progress">
<field name="progress" factor="100" xexpand="0"/>
<label name="progress" string="%" xalign="0.0" xexpand="1"/>
</group>
</form>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name"/>
<field name="types" expand="1"/>
<field name="default"/>
</tree>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name" expand="1"/>
<field name="company" expand="1" optional="1"/>
<field name="timesheet_duration" optional="0"/>
<field name="total_effort" optional="0"/>
<field name="type" optional="1"/>
<field name="status"/>
<field name="total_progress" widget="progressbar" expand="1" optional="0"/>
</tree>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name" expand="1"/>
<field name="company" expand="1" optional="1"/>
<field name="type" optional="1"/>
<field name="status" optional="0"/>
</tree>

447
modules/project/work.py Normal file
View File

@@ -0,0 +1,447 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
from collections import defaultdict
from trytond.cache import Cache
from trytond.i18n import gettext
from trytond.model import (
ChatMixin, DeactivableMixin, Index, ModelSQL, ModelView, fields,
sequence_ordered, sum_tree, tree)
from trytond.pool import Pool
from trytond.pyson import Bool, Eval, If, PYSONEncoder, TimeDelta
from trytond.transaction import Transaction
from .exceptions import WorkProgressValidationError
class WorkStatus(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView):
__name__ = 'project.work.status'
_get_default_status_cache = Cache('project_work_status.get_default_status')
_get_window_domains_cache = Cache('project_work_status.get_window_domains')
types = fields.MultiSelection(
'get_types', "Types",
help="The type of works which can use this status.")
name = fields.Char("Name", required=True, translate=True)
progress = fields.Float(
"Progress",
domain=['OR',
('progress', '=', None),
[
('progress', '>=', 0),
('progress', '<=', 1),
],
],
help="The minimum progress required for this status.")
default = fields.Boolean(
"Default",
help="Check to use as default status for the type.")
count = fields.Boolean(
"Count",
help="Check to show the number of works in this status.")
@classmethod
def get_types(cls):
pool = Pool()
Work = pool.get('project.work')
return Work.fields_get(['type'])['type']['selection']
@classmethod
def get_default_status(cls, type_=None):
if type_ is None:
return None
status = cls._get_default_status_cache.get(type_, -1)
if status != -1:
return status
records = cls.search([
('types', 'in', type_),
('default', '=', True)
], limit=1)
if records:
status = records[0].id
else:
status = None
cls._get_default_status_cache.set(type, status)
return status
@classmethod
def on_modification(cls, mode, records, field_names=None):
super().on_modification(mode, records, field_names=field_names)
cls._get_default_status_cache.clear()
cls._get_window_domains_cache.clear()
@classmethod
def get_window_domains(cls, action):
pool = Pool()
Data = pool.get('ir.model.data')
if action.id == Data.get_id('project', 'act_project_tree'):
return cls._get_window_domains([x[0] for x in cls.get_types()])
elif action.id == Data.get_id('project', 'act_project_form'):
return cls._get_window_domains(['project'])
elif action.id == Data.get_id('project', 'act_task_form'):
return cls._get_window_domains(['task'])
else:
return []
@classmethod
def _get_window_domains(cls, types):
key = tuple(sorted(types))
domains = cls._get_window_domains_cache.get(key)
if domains is not None:
return domains
encoder = PYSONEncoder()
domains = []
for status in cls.search([('types', 'in', types)]):
domain = encoder.encode([('status', '=', status.id)])
domains.append((status.name, domain, status.count))
if domains:
domains.append(
(gettext('project.msg_domain_all'), '[]', False))
cls._get_window_domains_cache.set(key, domains)
return domains
class Work(
sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView,
ChatMixin):
__name__ = 'project.work'
name = fields.Char("Name", required=True)
type = fields.Selection([
('project', 'Project'),
('task', 'Task')
],
"Type", required=True)
company = fields.Many2One('company.company', "Company", required=True)
party = fields.Many2One('party.party', 'Party',
states={
'invisible': Eval('type') != 'project',
},
context={
'company': Eval('company', -1),
},
depends={'company'})
party_address = fields.Many2One('party.address', 'Contact Address',
domain=[('party', '=', Eval('party', -1))],
states={
'invisible': Eval('type') != 'project',
})
timesheet_works = fields.One2Many(
'timesheet.work', 'origin', 'Timesheet Works', readonly=True, size=1)
timesheet_available = fields.Function(fields.Boolean(
"Available on timesheets",
help="Check to record time spent."),
'get_timesheet_available', setter='set_timesheet_available')
timesheet_start_date = fields.Function(fields.Date('Timesheet Start',
states={
'invisible': ~Eval('timesheet_available'),
}),
'get_timesheet_date', setter='set_timesheet_date')
timesheet_end_date = fields.Function(fields.Date('Timesheet End',
states={
'invisible': ~Eval('timesheet_available'),
}),
'get_timesheet_date', setter='set_timesheet_date')
timesheet_duration = fields.Function(fields.TimeDelta('Duration',
'company_work_time',
help="Total time spent on this work and the sub-works."),
'get_total')
effort_duration = fields.TimeDelta(
"Effort", 'company_work_time',
domain=['OR',
('effort_duration', '=', None),
('effort_duration', '>=', TimeDelta()),
],
help="Estimated Effort for this work.")
total_effort = fields.Function(fields.TimeDelta('Total Effort',
'company_work_time',
help="Estimated total effort for this work and the sub-works."),
'get_total')
progress = fields.Float('Progress',
domain=['OR',
('progress', '=', None),
[
('progress', '>=', 0),
('progress', '<=', 1),
],
],
help='Estimated progress for this work.')
total_progress = fields.Function(fields.Float('Total Progress',
digits=(None, 4),
help='Estimated total progress for this work and the sub-works.',
states={
'invisible': (
Eval('total_progress', None) == None), # noqa: E711
}),
'get_total')
comment = fields.Text('Comment')
parent = fields.Many2One(
'project.work', 'Parent', path='path', ondelete='RESTRICT',
domain=[
('company', '=', Eval('company', -1)),
])
path = fields.Char("Path")
children = fields.One2Many('project.work', 'parent', 'Children',
domain=[
('company', '=', Eval('company', -1)),
])
status = fields.Many2One(
'project.work.status', "Status", required=True,
domain=[If(Bool(Eval('type')), ('types', 'in', Eval('type')), ())])
@classmethod
def __setup__(cls):
cls.path.search_unaccented = False
super().__setup__()
t = cls.__table__()
cls._sql_indexes.update({
Index(t, (t.path, Index.Similarity(begin=True))),
})
@staticmethod
def default_type():
return 'task'
@classmethod
def default_company(cls):
return Transaction().context.get('company')
@classmethod
def default_status(cls):
pool = Pool()
WorkStatus = pool.get('project.work.status')
return WorkStatus.get_default_status(cls.default_type())
@classmethod
def __register__(cls, module_name):
table_project_work = cls.__table_handler__(module_name)
super().__register__(module_name)
# Migration from 6.0: remove left and right
table_project_work.drop_column('left')
table_project_work.drop_column('right')
@fields.depends('type', 'status')
def on_change_type(self):
pool = Pool()
WorkState = pool.get('project.work.status')
if (self.type
and (not self.status
or self.type not in self.status.types)):
self.status = WorkState.get_default_status(self.type)
@fields.depends('status', 'progress')
def on_change_status(self):
if (self.status
and self.status.progress is not None
and self.status.progress > (self.progress or -1.0)):
self.progress = self.status.progress
@classmethod
def index_set_field(cls, name):
index = super().index_set_field(name)
if name in {'timesheet_start_date', 'timesheet_end_date'}:
index = cls.index_set_field('timesheet_available') + 1
return index
@classmethod
def validate(cls, works):
super().validate(works)
for work in works:
work.check_work_progress()
def check_work_progress(self):
pool = Pool()
progress = -1 if self.progress is None else self.progress
if (self.status.progress is not None
and progress < self.status.progress):
Lang = pool.get('ir.lang')
lang = Lang.get()
raise WorkProgressValidationError(
gettext('project.msg_work_invalid_progress_status',
work=self.rec_name,
progress=lang.format('%.2f%%', self.status.progress * 100),
status=self.status.rec_name))
if (self.status.progress == 1.0
and not all(c.progress == 1.0 for c in self.children)):
raise WorkProgressValidationError(
gettext('project.msg_work_children_progress',
work=self.rec_name,
status=self.status.rec_name))
if (self.parent
and self.parent.progress == 1.0
and not self.progress == 1.0):
raise WorkProgressValidationError(
gettext('project.msg_work_parent_progress',
work=self.rec_name,
parent=self.parent.rec_name))
@property
def effort_hours(self):
if not self.effort_duration:
return 0
return self.effort_duration.total_seconds() / 60 / 60
@property
def total_effort_hours(self):
if not self.total_effort:
return 0
return self.total_effort.total_seconds() / 60 / 60
@property
def timesheet_duration_hours(self):
if not self.timesheet_duration:
return 0
return self.timesheet_duration.total_seconds() / 60 / 60
@classmethod
def default_timesheet_available(cls):
return False
def get_timesheet_available(self, name):
return bool(self.timesheet_works)
@classmethod
def set_timesheet_available(cls, projects, name, value):
pool = Pool()
Timesheet = pool.get('timesheet.work')
to_create = []
to_delete = []
for project in projects:
if not project.timesheet_works and value:
to_create.append({
'origin': str(project),
'company': project.company.id,
})
elif project.timesheet_works and not value:
to_delete.extend(project.timesheet_works)
if to_create:
Timesheet.create(to_create)
if to_delete:
Timesheet.delete(to_delete)
def get_timesheet_date(self, name):
if self.timesheet_works:
func = {
'timesheet_start_date': min,
'timesheet_end_date': max,
}[name]
return func(getattr(w, name) for w in self.timesheet_works)
@classmethod
def set_timesheet_date(cls, projects, name, value):
pool = Pool()
Timesheet = pool.get('timesheet.work')
timesheets = [w for p in projects for w in p.timesheet_works]
if timesheets:
Timesheet.write(timesheets, {
name: value,
})
@classmethod
def get_total(cls, works, names):
works = cls.search([
('parent', 'child_of', [w.id for w in works]),
])
if 'total_progress' in names and 'total_effort' not in names:
names = list(names)
names.append('total_effort')
result = {}
for name in names:
values = getattr(cls, '_get_%s' % name)(works)
result[name] = sum_tree(works, values)
if 'total_progress' in names:
digits = cls.total_progress.digits[1]
total_progress = result['total_progress']
total_effort = result['total_effort']
for work in works:
if total_effort[work.id]:
total_progress[work.id] = round(total_progress[work.id]
/ (total_effort[work.id].total_seconds() / 60 / 60),
digits)
else:
total_effort[work.id] = None
return result
@classmethod
def _get_total_effort(cls, works):
return defaultdict(
datetime.timedelta,
{w.id: w.effort_duration or datetime.timedelta() for w in works})
@classmethod
def _get_timesheet_duration(cls, works):
durations = defaultdict(datetime.timedelta)
for work in works:
value = datetime.timedelta()
for timesheet_work in work.timesheet_works:
if timesheet_work.duration:
value += timesheet_work.duration
durations[work.id] = value
return durations
@classmethod
def _get_total_progress(cls, works):
return defaultdict(
int,
{w.id: w.effort_hours * (w.progress or 0) for w in works})
def chat_language(self, audience='internal'):
language = super().chat_language(audience=audience)
if audience == 'public':
work = self
party = self.party
while work and not party:
work = work.parent
party = work.party
language = party.lang.code if party and party.lang else None
return language
@classmethod
def copy(cls, project_works, default=None):
pool = Pool()
WorkStatus = pool.get('project.work.status')
if default is None:
default = {}
else:
default = default.copy()
default.setdefault('progress', None)
default.setdefault(
'status', lambda data: WorkStatus.get_default_status(data['type']))
new_works = super().copy(project_works, default=default)
to_save = []
for work, new_work in zip(project_works, new_works):
if work.timesheet_available:
new_work.timesheet_available = work.timesheet_available
new_work.timesheet_start_date = work.timesheet_start_date
new_work.timesheet_end_date = work.timesheet_end_date
to_save.append(new_work)
if to_save:
cls.save(to_save)
return new_works
@classmethod
def on_delete(cls, project_works):
pool = Pool()
TimesheetWork = pool.get('timesheet.work')
callback = super().on_delete(project_works)
timesheet_works = {
w for pw in project_works for w in pw.timesheet_works}
if timesheet_works:
timesheet_works = TimesheetWork.browse(timesheet_works)
callback.append(lambda: TimesheetWork.delete(timesheet_works))
return callback
@classmethod
def search_global(cls, text):
for record, rec_name, icon in super().search_global(text):
icon = icon or 'tryton-project'
yield record, rec_name, icon

276
modules/project/work.xml Normal file
View File

@@ -0,0 +1,276 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="work_status_view_list">
<field name="model">project.work.status</field>
<field name="type">tree</field>
<field name="name">work_status_list</field>
</record>
<record model="ir.ui.view" id="work_status_view_form">
<field name="model">project.work.status</field>
<field name="type">form</field>
<field name="name">work_status_form</field>
</record>
<record model="ir.action.act_window" id="act_work_status">
<field name="name">Work Status</field>
<field name="res_model">project.work.status</field>
</record>
<record model="ir.action.act_window.view" id="act_work_status_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_status_view_list"/>
<field name="act_window" ref="act_work_status"/>
</record>
<record model="ir.action.act_window.view" id="act_work_status_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_status_view_form"/>
<field name="act_window" ref="act_work_status"/>
</record>
<menuitem
parent="menu_configuration"
sequence="20"
action="act_work_status"
id="menu_work_status"/>
<record model="ir.rule.group" id="rule_group_work_companies">
<field name="name">User in companies</field>
<field name="model">project.work</field>
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_work_companies">
<field name="domain"
eval="[('company', 'in', Eval('companies', []))]"
pyson="1"/>
<field name="rule_group" ref="rule_group_work_companies"/>
</record>
<record model="ir.model.access" id="access_work_status">
<field name="model">project.work.status</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_work_status_admin">
<field name="model">project.work.status</field>
<field name="group" ref="group_project_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.ui.view" id="work_view_tree">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="field_childs">children</field>
<field name="name">work_tree</field>
</record>
<record model="ir.ui.view" id="work_view_tree_simple">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="field_childs">children</field>
<field name="name">work_tree_simple</field>
</record>
<record model="ir.ui.view" id="work_view_list">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="name">work_list</field>
</record>
<record model="ir.ui.view" id="work_view_list_simple">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="10"/>
<field name="name">work_list_simple</field>
</record>
<record model="ir.ui.view" id="work_view_list_children">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="name">work_list_children</field>
</record>
<record model="ir.ui.view" id="work_view_form">
<field name="model">project.work</field>
<field name="type">form</field>
<field name="name">work_form</field>
</record>
<record model="ir.action.act_window" id="act_work_tree">
<field name="name">Works Efforts</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
</record>
<record model="ir.action.act_window.view"
id="act_work_tree_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_tree_simple"/>
<field name="act_window" ref="act_work_tree"/>
</record>
<record model="ir.action.act_window.view"
id="act_work_tree_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_work_tree"/>
</record>
<menuitem
parent="menu_configuration"
action="act_work_tree"
sequence="10"
id="menu_work_tree"/>
<record model="ir.action.act_window" id="act_work_list">
<field name="name">Works Efforts</field>
<field name="res_model">project.work</field>
</record>
<record model="ir.action.act_window.view"
id="act_work_list_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list_simple"/>
<field name="act_window" ref="act_work_list"/>
</record>
<record model="ir.action.act_window.view"
id="act_work_list_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_work_list"/>
</record>
<menuitem
parent="menu_work_tree"
action="act_work_list"
sequence="10"
id="menu_work_list"/>
<record model="ir.action.act_window" id="act_project_tree">
<field name="name">Projects</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
</record>
<record model="ir.action.act_window.view"
id="act_project_tree_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_tree"/>
<field name="act_window" ref="act_project_tree"/>
</record>
<record model="ir.action.act_window.view"
id="act_project_tree_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_project_tree"/>
</record>
<menuitem
parent="menu_reporting"
action="act_project_tree"
sequence="10"
id="menu_project_tree"/>
<record model="ir.action.act_window" id="act_project_form">
<field name="name">Projects</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('type', '=', 'project')]" pyson="1"/>
<field name="context"></field>
</record>
<record model="ir.action.act_window.view"
id="act_project_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list"/>
<field name="act_window" ref="act_project_form"/>
</record>
<record model="ir.action.act_window.view"
id="act_project_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_project_form"/>
</record>
<menuitem
parent="menu_project"
action="act_project_form"
sequence="10"
id="menu_project_form"/>
<record model="ir.action.act_window" id="act_task_form">
<field name="name">Tasks</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('type', '=', 'task')]" pyson="1"/>
<field name="context"></field>
</record>
<record model="ir.action.act_window.view"
id="act_task_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list"/>
<field name="act_window" ref="act_task_form"/>
</record>
<record model="ir.action.act_window.view"
id="act_task_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_task_form"/>
</record>
<menuitem
parent="menu_project"
action="act_task_form"
sequence="20"
id="menu_task_form"/>
<record model="ir.action.act_window" id="act_open_child_work">
<field name="name">Tasks</field>
<field name="res_model">project.work</field>
<field name="context"></field>
<field name="domain"
eval="[('type', '=', 'task'), If(Eval('active_ids', []) == [Eval('active_id')], ('parent', '=', Eval('active_id')), ('parent', 'in', Eval('active_ids')))]"
pyson="1"/>
</record>
<record model="ir.action.keyword"
id="act_open_project_work_keyword1">
<field name="keyword">form_relate</field>
<field name="model">project.work,-1</field>
<field name="action" ref="act_open_child_work"/>
</record>
<record model="ir.action.act_window.view"
id="act_open_project_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list"/>
<field name="act_window" ref="act_open_child_work"/>
</record>
<record model="ir.action.act_window.view"
id="act_open_project_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_open_child_work"/>
</record>
<record model="ir.model.access" id="access_work">
<field name="model">project.work</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_work_admin">
<field name="model">project.work</field>
<field name="group" ref="group_project_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
</data>
<data noupdate="1">
<record model="project.work.status" id="work_open_status">
<field name="name">Open</field>
<field name="default" eval="True"/>
<field name="count" eval="True"/>
<field name="types" eval="['project', 'task']"/>
</record>
<record model="project.work.status" id="work_done_status">
<field name="name">Done</field>
<field name="progress" eval="1.0"/>
<field name="types" eval="['project', 'task']"/>
</record>
</data>
</tryton>