first commit
This commit is contained in:
2
modules/project_plan/__init__.py
Normal file
2
modules/project_plan/__init__.py
Normal 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.
|
||||
BIN
modules/project_plan/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/project_plan/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/project_plan/__pycache__/allocation.cpython-311.pyc
Normal file
BIN
modules/project_plan/__pycache__/allocation.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/project_plan/__pycache__/work.cpython-311.pyc
Normal file
BIN
modules/project_plan/__pycache__/work.cpython-311.pyc
Normal file
Binary file not shown.
45
modules/project_plan/allocation.py
Normal file
45
modules/project_plan/allocation.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# 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 import ModelSQL, ModelView, fields
|
||||
|
||||
|
||||
class Allocation(ModelSQL, ModelView):
|
||||
__name__ = 'project.allocation'
|
||||
employee = fields.Many2One(
|
||||
'company.employee', "Employee", required=True, ondelete='CASCADE')
|
||||
work = fields.Many2One(
|
||||
'project.work', "Work", required=True, ondelete='CASCADE')
|
||||
percentage = fields.Float(
|
||||
"Percentage", digits=(None, 2), required=True,
|
||||
domain=[('percentage', '>', 0.0)])
|
||||
|
||||
@staticmethod
|
||||
def default_percentage():
|
||||
return 100
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return self.employee.rec_name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
return [('employee.rec_name',) + tuple(clause[1:])]
|
||||
|
||||
@classmethod
|
||||
def on_modification(cls, mode, allocations, field_names=None):
|
||||
super().on_modification(mode, allocations, field_names=field_names)
|
||||
if mode in {'create', 'write'}:
|
||||
for allocation in allocations:
|
||||
allocation.work.reset_leveling()
|
||||
allocation.work.compute_dates()
|
||||
|
||||
@classmethod
|
||||
def on_delete(cls, allocations):
|
||||
callback = super().on_delete(allocations)
|
||||
works = [a.work for a in allocations]
|
||||
|
||||
def replan():
|
||||
for work in works:
|
||||
work.reset_leveling()
|
||||
work.compute_dates()
|
||||
callback.append(replan)
|
||||
return callback
|
||||
19
modules/project_plan/allocation.xml
Normal file
19
modules/project_plan/allocation.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?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="allocation_view_form">
|
||||
<field name="model">project.allocation</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">allocation_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="allocation_view_tree">
|
||||
<field name="model">project.allocation</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="name">allocation_tree</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
136
modules/project_plan/locale/bg.po
Normal file
136
modules/project_plan/locale/bg.po
Normal file
@@ -0,0 +1,136 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Служител"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Процент"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Задача"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Предшественик"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Наследник"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Действително завършване"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Време на действително завършване"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Действително започване"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Време на действително започване"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Разпределения"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Изравняване на закъснение"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Ограничение за край"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Ограничение за време на завършване"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Ограничение за начало"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Ограничение за начално време"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Продължителност"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "По-рано завършване"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Време на по-рано приключване"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "По-рано начало"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "По-ранно време на започване"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "По-късно завършване"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Време на по-късно завършване"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "По-късно начало"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Време на по-късно начало"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Изравняване на закъснение"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Предшественици"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Наследници"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Разпределние"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Предшественик - Наследник"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Разпределения"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "План"
|
||||
131
modules/project_plan/locale/ca.po
Normal file
131
modules/project_plan/locale/ca.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Empleat"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Percentatge"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Treball"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Predecessor"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Successor"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Finalització real"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Hora de finalització real"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Inici real"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Hora d'inici real"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Assignacions"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Retard de l'anivellació"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Restricció de finalització"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Restricció d'hora de finalització"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Restricció d'inici"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Restricció de temps d'inici"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Temps"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Finalització avançada"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Hora de finalització avançada"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Inici prematur"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Hora d'inici prematur"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Finalització amb retard"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Hora de finalització amb retard"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Inici amb retard"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Hora d'inici amb retard"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Retard d'anivellació"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Predecessors"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Successors"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Anivellació de tasques"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Assignació de projectes"
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Projecte Predecessor - Successor"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Assignacions"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Planificació"
|
||||
131
modules/project_plan/locale/cs.po
Normal file
131
modules/project_plan/locale/cs.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/de.po
Normal file
131
modules/project_plan/locale/de.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Mitarbeiter"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Prozentsatz"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Projektaufgabe"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Vorgänger"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Nachfolger"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Tatsächliches Enddatum"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Tatsächliche Endzeit"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Tatsächliches Startdatum"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Tatsächliche Startzeit"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Zuordnungen"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Verzögerung Abgleich Rückstand"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Fixes Enddatum"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Fixe Endzeit"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Fixes Startdatum"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Fixe Startzeit"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Erfasste Zeit"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Frühestes Enddatum"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Früheste Endzeit"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Frühestes Startdatum"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Früheste Startzeit"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Spätestes Enddatum"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Späteste Endzeit"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Spätestes Startdatum"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Späteste Startzeit"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Verzögerung Abgleich"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Vorgänger"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Nachfolger"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Projektaufgaben abgleichen"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Projekt Zuordnung"
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Projekt Vorgänger Nachfolger"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Zuordnungen"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Planung"
|
||||
131
modules/project_plan/locale/es.po
Normal file
131
modules/project_plan/locale/es.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Empleado"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Porcentaje"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Trabajo"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Predecesor"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Sucesor"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Finalización real"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Hora de finalización real"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Inicio real"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Hora de inicio real"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Asignaciones"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Retraso de la nivelación"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Restricción de finalización"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Restricción hora de finalización"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Restricción de inicio"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Restricción hora de inicio"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Tiempo"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Finalización anticipada"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Hora de finalización anticipada"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Inicio anticipado"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Hora de inicio anticipado"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Finalización con retraso"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Hora de finalización con retraso"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Inicio con retraso"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Hora de inicio con retraso"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Retraso de nivelación"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Predecesores"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Sucesores"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Nivelación de tareas"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Asignación de proyectos"
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Proyecto Predecesor Sucesor"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Asignaciones"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Planificación"
|
||||
131
modules/project_plan/locale/es_419.po
Normal file
131
modules/project_plan/locale/es_419.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Retraso del ajuste"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Fin de limitación"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Hora fin de limitación"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Inicio de limitación"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Hora inicio de limitación"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Duración"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Retraso de ajuste"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
135
modules/project_plan/locale/et.po
Normal file
135
modules/project_plan/locale/et.po
Normal file
@@ -0,0 +1,135 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Töötaja"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Protsent"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Töö"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Eelkäija"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Järeltulija"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Tegelik lõpp"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Tegelik lõpp aeg"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Tegelik algus"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Tegelik algus aeg"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Allokatsioon"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Kestvus"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Eelkäija"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Järeltulija"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Allokatsioon"
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Allokatsioon"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Plaan"
|
||||
133
modules/project_plan/locale/fa.po
Normal file
133
modules/project_plan/locale/fa.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "کارمند"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "درصد"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "کار"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "کارمند اسبق"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "جانشین"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "پایان واقعی"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "زمان پایان واقعی"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "شروع واقعی"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "زمان شروع واقعی"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "تخصیص ها"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "سطح تاخیر به عقب"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "پایان محدودیت"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "زمان پایان محدودیت"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "شروع محدودیت"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "زمان شروع محدودیت"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "مدت زمان"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "پایان زودهنگام"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "زمان پایان زودهنگام"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "شروع زودهنگام"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "زمان شروع زودهنگام"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "پایان تأخییر افتاده"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "زمان پایان تأخییر افتاده"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "شروع با تأخییر"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "زمان شروع با تأخییر"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "سطح تاخیر"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "پیشینیان"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "جانشین ها"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "سطح وظایف"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "تخصیص"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "کارمند اسبق - جانشین"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "تخصیص ها"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "طرح"
|
||||
131
modules/project_plan/locale/fi.po
Normal file
131
modules/project_plan/locale/fi.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/fr.po
Normal file
131
modules/project_plan/locale/fr.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Employé"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Pourcentage"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Travail"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Prédécesseur"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Successeur"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Fin réelle"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Heure de fin réelle"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Début réel"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Heure de début réelle"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Répartitions"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Délais rétro-décalage"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Fin imposée"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Heure de fin imposée"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Début imposé"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Heure de début imposée"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Durée"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Fin au plus tôt"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Heure de fin au plus tôt"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Début au plus tôt"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Heure de début au plus tôt"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Fin au plus tard"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Heure de fin au plus tard"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Début au plus tard"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Heure de début au plus tard"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Délais décalage"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Prédécesseurs"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Successeurs"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Décalage des tâches"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Répartition du projet"
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Prédécesseur - Successeur du projet"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Répartitions"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Planification"
|
||||
135
modules/project_plan/locale/hu.po
Normal file
135
modules/project_plan/locale/hu.po
Normal file
@@ -0,0 +1,135 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Alkalmazott"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Százalék:"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Tevékenység"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Időtartam"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/id.po
Normal file
131
modules/project_plan/locale/id.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Karyawan"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Persentase"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/it.po
Normal file
131
modules/project_plan/locale/it.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Dipendente"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Percentuale"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Lavoro"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Durata"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
135
modules/project_plan/locale/lo.po
Normal file
135
modules/project_plan/locale/lo.po
Normal file
@@ -0,0 +1,135 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "ພະນັກງານ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "ອັດຕາສ່ວນຮ້ອຍ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "ເຮັດວຽກ"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "ກຳນົດເວລາ"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/lt.po
Normal file
131
modules/project_plan/locale/lt.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/nl.po
Normal file
131
modules/project_plan/locale/nl.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Werknemer"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Percentage"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Werk"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Voorganger"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Opvolger"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Werkelijke einddatum"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Werkelijke eindtijd"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Werkelijke start"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Werkelijke starttijd"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Toekenningen"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Achteruitstelvertraging(Back Leveling Delay)"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Vaste einddatum"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Beperking eindtijd"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Vaste startdatum"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Vaste start tijd"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Looptijd"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "vroegste einddatum"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "vroegste eindtijd"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Vroegste startdatum"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "vroegst start tijd"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "ten laatste gedaan"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "ten laatste gedaan (tijd)"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "laatste start datum"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "laatste start tijd"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Leverings vertraging"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "voorgangers"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "opvolgers"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling (match taken?)"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Project indeling"
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Project voorganger opvolger"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Toekenningen"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "planning"
|
||||
133
modules/project_plan/locale/pl.po
Normal file
133
modules/project_plan/locale/pl.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Pracownik"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Procentowy"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Praca"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Poprzednik"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Następca"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Alokacje"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Czas trwania"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Poprzednicy"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Następcy"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Alokacja"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Poprzednik - Następca"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Alokacje"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Plan"
|
||||
133
modules/project_plan/locale/pt.po
Normal file
133
modules/project_plan/locale/pt.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Empregado"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Porcentagem"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Tarefa"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Predecessor"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Sucessor"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Finalização Real"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Hora de Finalização Real"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Início Real"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Hora de Início Real"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Alocações"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Atraso de Nivelamento"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Restrição de Finalização"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Restrição de Hora de Finalização"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Restrição de Início"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Restrições de Hora de Início"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Duração"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Finalização Antecipada"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Hora de Finalização Antecipada"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Início Antecipado"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Hora de Início Antecipado"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Finalização com Atrado"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Hora da Finalização com Atraso"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Início com Atraso"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Hora de Início com Atraso"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Atraso de Nivelação"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Predecessores"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Sucessores"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Nivelamento Das Tarefas"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Alocação"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Predecessor - Sucessor"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Alocações"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Planejamento"
|
||||
131
modules/project_plan/locale/ro.po
Normal file
131
modules/project_plan/locale/ro.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
135
modules/project_plan/locale/ru.po
Normal file
135
modules/project_plan/locale/ru.po
Normal file
@@ -0,0 +1,135 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Сотрудник"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Процент"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Работа"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Предок"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Потомок"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Фактически завершен"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Фактически завершен (время)"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Фактически начат"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Фактически начат (время)"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Распределения"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Обратная выравнивающая задержка"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Порог завершения"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Порог завершения (время)"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Порог начала"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Порог начала (время)"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Продолжительность"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Досрочное завершение"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Досрочное завершение (время)"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Досрочное начало"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Досрочное начало (время)"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Позднее завершение"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Позднее завершение (время)"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Позднее начало"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Позднее начало (время)"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Выравнивающая задержка"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Предки"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Потомки"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Распределение"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Предок - Потомок"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Распределения"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "План"
|
||||
134
modules/project_plan/locale/sl.po
Normal file
134
modules/project_plan/locale/sl.po
Normal file
@@ -0,0 +1,134 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "Zaposlenec"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "Delež"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "Naloga"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "Predhodnik"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "Naslednik"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "Dejanski konec"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "Dejanski končni čas"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "Dejanski začetek"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "Dejanski začetni čas"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "Razporeditve"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr "Izravnalna zakasnitev nazaj"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "Planiran konec"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "Planiran konćni čas"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "Planiran začetek"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "Planiran začetni čas"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "Trajanje"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "Predčasni konec"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "Predčasni končni čas"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "Predčasni začetek"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "Predčasni začetni čas"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "Pozen konec"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "Pozen končni čas"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "Pozen začetek"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "Pozen začetni čas"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "Izravnalna zakasnitev"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "Predhodniki"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "Nasledniki"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "Razporeditev"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "Predhodnik - Naslednik"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "Razporeditve"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "Planiranje"
|
||||
131
modules/project_plan/locale/tr.po
Normal file
131
modules/project_plan/locale/tr.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "Tasks Leveling"
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
131
modules/project_plan/locale/uk.po
Normal file
131
modules/project_plan/locale/uk.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr ""
|
||||
133
modules/project_plan/locale/zh_CN.po
Normal file
133
modules/project_plan/locale/zh_CN.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:project.allocation,employee:"
|
||||
msgid "Employee"
|
||||
msgstr "雇员"
|
||||
|
||||
msgctxt "field:project.allocation,percentage:"
|
||||
msgid "Percentage"
|
||||
msgstr "百分比"
|
||||
|
||||
msgctxt "field:project.allocation,work:"
|
||||
msgid "Work"
|
||||
msgstr "工作"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,predecessor:"
|
||||
msgid "Predecessor"
|
||||
msgstr "前驱"
|
||||
|
||||
msgctxt "field:project.predecessor_successor,successor:"
|
||||
msgid "Successor"
|
||||
msgstr "后继"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_date:"
|
||||
msgid "Actual Finish"
|
||||
msgstr "实际完成"
|
||||
|
||||
msgctxt "field:project.work,actual_finish_time:"
|
||||
msgid "Actual Finish Time"
|
||||
msgstr "实际完成时间"
|
||||
|
||||
msgctxt "field:project.work,actual_start_date:"
|
||||
msgid "Actual Start"
|
||||
msgstr "实际开始"
|
||||
|
||||
msgctxt "field:project.work,actual_start_time:"
|
||||
msgid "Actual Start Time"
|
||||
msgstr "实际开始时间"
|
||||
|
||||
msgctxt "field:project.work,allocations:"
|
||||
msgid "Allocations"
|
||||
msgstr "资源分配"
|
||||
|
||||
msgctxt "field:project.work,back_leveling_delay:"
|
||||
msgid "Back Leveling Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_date:"
|
||||
msgid "Constraint Finish"
|
||||
msgstr "约束完成"
|
||||
|
||||
msgctxt "field:project.work,constraint_finish_time:"
|
||||
msgid "Constraint Finish Time"
|
||||
msgstr "约束完成时间"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_date:"
|
||||
msgid "Constraint Start"
|
||||
msgstr "约束开始"
|
||||
|
||||
msgctxt "field:project.work,constraint_start_time:"
|
||||
msgid "Constraint Start Time"
|
||||
msgstr "约束开始时间"
|
||||
|
||||
msgctxt "field:project.work,duration:"
|
||||
msgid "Duration"
|
||||
msgstr "持续时间"
|
||||
|
||||
msgctxt "field:project.work,early_finish_date:"
|
||||
msgid "Early Finish"
|
||||
msgstr "最早完成"
|
||||
|
||||
msgctxt "field:project.work,early_finish_time:"
|
||||
msgid "Early Finish Time"
|
||||
msgstr "最早完成时间"
|
||||
|
||||
msgctxt "field:project.work,early_start_date:"
|
||||
msgid "Early Start"
|
||||
msgstr "最早开始"
|
||||
|
||||
msgctxt "field:project.work,early_start_time:"
|
||||
msgid "Early Start Time"
|
||||
msgstr "最早开始时间"
|
||||
|
||||
msgctxt "field:project.work,late_finish_date:"
|
||||
msgid "Late Finish"
|
||||
msgstr "最迟完成"
|
||||
|
||||
msgctxt "field:project.work,late_finish_time:"
|
||||
msgid "Late Finish Time"
|
||||
msgstr "最迟完成时间"
|
||||
|
||||
msgctxt "field:project.work,late_start_date:"
|
||||
msgid "Late Start"
|
||||
msgstr "最迟开始"
|
||||
|
||||
msgctxt "field:project.work,late_start_time:"
|
||||
msgid "Late Start Time"
|
||||
msgstr "最迟开始时间"
|
||||
|
||||
msgctxt "field:project.work,leveling_delay:"
|
||||
msgid "Leveling Delay"
|
||||
msgstr "资源调配延迟"
|
||||
|
||||
msgctxt "field:project.work,predecessors:"
|
||||
msgid "Predecessors"
|
||||
msgstr "前驱"
|
||||
|
||||
msgctxt "field:project.work,successors:"
|
||||
msgid "Successors"
|
||||
msgstr "后继"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_leveling"
|
||||
msgid "Tasks Leveling"
|
||||
msgstr "任务资源调配"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.allocation,string:"
|
||||
msgid "Project Allocation"
|
||||
msgstr "资源分配"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:project.predecessor_successor,string:"
|
||||
msgid "Project Predecessor Successor"
|
||||
msgstr "前驱 - 后继"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Allocations"
|
||||
msgstr "资源分配"
|
||||
|
||||
msgctxt "view:project.work:"
|
||||
msgid "Plan"
|
||||
msgstr "规划"
|
||||
2
modules/project_plan/tests/__init__.py
Normal file
2
modules/project_plan/tests/__init__.py
Normal 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.
|
||||
BIN
modules/project_plan/tests/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/project_plan/tests/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
13
modules/project_plan/tests/test_module.py
Normal file
13
modules/project_plan/tests/test_module.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# 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.modules.company.tests import CompanyTestMixin
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
|
||||
|
||||
class ProjectPlanTestCase(CompanyTestMixin, ModuleTestCase):
|
||||
'Test ProjectPlan module'
|
||||
module = 'project_plan'
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
18
modules/project_plan/tryton.cfg
Normal file
18
modules/project_plan/tryton.cfg
Normal file
@@ -0,0 +1,18 @@
|
||||
[tryton]
|
||||
version=7.8.1
|
||||
depends:
|
||||
ir
|
||||
company
|
||||
project
|
||||
timesheet
|
||||
xml:
|
||||
work.xml
|
||||
allocation.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
allocation.Allocation
|
||||
work.Work
|
||||
work.PredecessorSuccessor
|
||||
wizard:
|
||||
work.Leveling
|
||||
11
modules/project_plan/view/allocation_form.xml
Normal file
11
modules/project_plan/view/allocation_form.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?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="employee"/>
|
||||
<field name="employee"/>
|
||||
<label name="percentage"/>
|
||||
<field name="percentage"/>
|
||||
<label name="work"/>
|
||||
<field name="work"/>
|
||||
</form>
|
||||
8
modules/project_plan/view/allocation_tree.xml
Normal file
8
modules/project_plan/view/allocation_tree.xml
Normal 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>
|
||||
<field name="employee" expand="1"/>
|
||||
<field name="percentage"/>
|
||||
<field name="work" expand="1"/>
|
||||
</tree>
|
||||
33
modules/project_plan/view/work_form.xml
Normal file
33
modules/project_plan/view/work_form.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?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. -->
|
||||
<data>
|
||||
<xpath expr="/form/notebook/page[@name='children']" position="after">
|
||||
<page string="Plan" id="plan">
|
||||
<label name="constraint_start_date"/>
|
||||
<field name="constraint_start_date"/>
|
||||
<label name="constraint_finish_date"/>
|
||||
<field name="constraint_finish_date"/>
|
||||
<label name="early_start_date"/>
|
||||
<field name="early_start_date"/>
|
||||
<label name="early_finish_date"/>
|
||||
<field name="early_finish_date"/>
|
||||
<label name="late_start_date"/>
|
||||
<field name="late_start_date"/>
|
||||
<label name="late_finish_date"/>
|
||||
<field name="late_finish_date"/>
|
||||
<label name="actual_start_date"/>
|
||||
<field name="actual_start_date"/>
|
||||
<label name="actual_finish_date"/>
|
||||
<field name="actual_finish_date"/>
|
||||
<label name="duration"/>
|
||||
<field name="duration"/>
|
||||
<newline/>
|
||||
<field name="predecessors" colspan="2"/>
|
||||
<field name="successors" colspan="2"/>
|
||||
</page>
|
||||
<page string="Allocations" name="allocations">
|
||||
<field name="allocations" colspan="4"/>
|
||||
</page>
|
||||
</xpath>
|
||||
</data>
|
||||
628
modules/project_plan/work.py
Normal file
628
modules/project_plan/work.py
Normal file
@@ -0,0 +1,628 @@
|
||||
# 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, deque
|
||||
from functools import reduce
|
||||
from heapq import heappop, heappush
|
||||
|
||||
from trytond.model import ModelSQL, fields, tree
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
from trytond.wizard import StateTransition, Wizard
|
||||
|
||||
|
||||
def intfloor(x):
|
||||
return int(round(x, 4))
|
||||
|
||||
|
||||
class Work(tree(parent='successors'), metaclass=PoolMeta):
|
||||
__name__ = 'project.work'
|
||||
predecessors = fields.Many2Many('project.predecessor_successor',
|
||||
'successor', 'predecessor', 'Predecessors',
|
||||
domain=[
|
||||
('parent', '=', Eval('parent', -1)),
|
||||
('id', '!=', Eval('id', -1)),
|
||||
])
|
||||
successors = fields.Many2Many('project.predecessor_successor',
|
||||
'predecessor', 'successor', 'Successors',
|
||||
domain=[
|
||||
('parent', '=', Eval('parent', -1)),
|
||||
('id', '!=', Eval('id', -1)),
|
||||
])
|
||||
leveling_delay = fields.Float("Leveling Delay", required=True)
|
||||
back_leveling_delay = fields.Float("Back Leveling Delay", required=True)
|
||||
allocations = fields.One2Many('project.allocation', 'work', 'Allocations',
|
||||
states={
|
||||
'invisible': Eval('type') != 'task',
|
||||
})
|
||||
duration = fields.Function(
|
||||
fields.TimeDelta('Duration', 'company_work_time'),
|
||||
'get_function_fields')
|
||||
early_start_time = fields.DateTime("Early Start Time", readonly=True)
|
||||
late_start_time = fields.DateTime("Late Start Time", readonly=True)
|
||||
early_finish_time = fields.DateTime("Early Finish Time", readonly=True)
|
||||
late_finish_time = fields.DateTime("Late Finish Time", readonly=True)
|
||||
actual_start_time = fields.DateTime("Actual Start Time")
|
||||
actual_finish_time = fields.DateTime("Actual Finish Time")
|
||||
constraint_start_time = fields.DateTime("Constraint Start Time")
|
||||
constraint_finish_time = fields.DateTime("Constraint Finish Time")
|
||||
early_start_date = fields.Function(fields.Date('Early Start'),
|
||||
'get_function_fields')
|
||||
late_start_date = fields.Function(fields.Date('Late Start'),
|
||||
'get_function_fields')
|
||||
early_finish_date = fields.Function(fields.Date('Early Finish'),
|
||||
'get_function_fields')
|
||||
late_finish_date = fields.Function(fields.Date('Late Finish'),
|
||||
'get_function_fields')
|
||||
actual_start_date = fields.Function(fields.Date('Actual Start'),
|
||||
'get_function_fields', setter='set_function_fields')
|
||||
actual_finish_date = fields.Function(fields.Date('Actual Finish'),
|
||||
'get_function_fields', setter='set_function_fields')
|
||||
constraint_start_date = fields.Function(fields.Date('Constraint Start',
|
||||
depends={'type'}), 'get_function_fields',
|
||||
setter='set_function_fields')
|
||||
constraint_finish_date = fields.Function(fields.Date('Constraint Finish',
|
||||
depends={'type'}), 'get_function_fields',
|
||||
setter='set_function_fields')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
|
||||
@staticmethod
|
||||
def default_leveling_delay():
|
||||
return 0.0
|
||||
|
||||
@staticmethod
|
||||
def default_back_leveling_delay():
|
||||
return 0.0
|
||||
|
||||
@classmethod
|
||||
def get_function_fields(cls, works, names):
|
||||
'''
|
||||
Function to compute function fields
|
||||
'''
|
||||
res = {}
|
||||
|
||||
ids = [w.id for w in works]
|
||||
if 'duration' in names:
|
||||
all_works = cls.search([
|
||||
('parent', 'child_of', ids),
|
||||
])
|
||||
all_works = set(all_works)
|
||||
|
||||
durations = {}
|
||||
id2work = {}
|
||||
leafs = set()
|
||||
for work in all_works:
|
||||
id2work[work.id] = work
|
||||
if not work.children:
|
||||
leafs.add(work.id)
|
||||
|
||||
total_allocation = 0
|
||||
effort = work.effort_duration or datetime.timedelta()
|
||||
if not work.allocations:
|
||||
durations[work.id] = effort
|
||||
continue
|
||||
for allocation in work.allocations:
|
||||
total_allocation += allocation.percentage
|
||||
durations[work.id] = datetime.timedelta(
|
||||
seconds=effort.total_seconds()
|
||||
/ (total_allocation / 100.0))
|
||||
|
||||
while leafs:
|
||||
for work_id in leafs:
|
||||
work = id2work[work_id]
|
||||
all_works.remove(work)
|
||||
if work.parent and work.parent.id in durations:
|
||||
durations[work.parent.id] += durations[work_id]
|
||||
next_leafs = set(w.id for w in all_works)
|
||||
for work in all_works:
|
||||
if not work.parent:
|
||||
continue
|
||||
if work.parent.id in next_leafs and work.parent in works:
|
||||
next_leafs.remove(work.parent.id)
|
||||
leafs = next_leafs
|
||||
res['duration'] = durations
|
||||
|
||||
fun_fields = ('early_start_date', 'early_finish_date',
|
||||
'late_start_date', 'late_finish_date',
|
||||
'actual_start_date', 'actual_finish_date',
|
||||
'constraint_start_date', 'constraint_finish_date')
|
||||
db_fields = ('early_start_time', 'early_finish_time',
|
||||
'late_start_time', 'late_finish_time',
|
||||
'actual_start_time', 'actual_finish_time',
|
||||
'constraint_start_time', 'constraint_finish_time')
|
||||
|
||||
for fun_field, db_field in zip(fun_fields, db_fields):
|
||||
if fun_field in names:
|
||||
values = {}
|
||||
for work in works:
|
||||
values[work.id] = getattr(work, db_field) \
|
||||
and getattr(work, db_field).date() or None
|
||||
res[fun_field] = values
|
||||
|
||||
return res
|
||||
|
||||
@classmethod
|
||||
def set_function_fields(cls, works, name, value):
|
||||
fun_fields = ('actual_start_date', 'actual_finish_date',
|
||||
'constraint_start_date', 'constraint_finish_date')
|
||||
db_fields = ('actual_start_time', 'actual_finish_time',
|
||||
'constraint_start_time', 'constraint_finish_time')
|
||||
for fun_field, db_field in zip(fun_fields, db_fields):
|
||||
if fun_field == name:
|
||||
cls.write(works, {
|
||||
db_field: (value
|
||||
and datetime.datetime.combine(value,
|
||||
datetime.time())
|
||||
or None),
|
||||
})
|
||||
break
|
||||
|
||||
@property
|
||||
def hours(self):
|
||||
if not self.duration:
|
||||
return 0
|
||||
return self.duration.total_seconds() / 60 / 60
|
||||
|
||||
@classmethod
|
||||
def add_minutes(cls, company, date, minutes):
|
||||
minutes = int(round(minutes))
|
||||
minutes = date.minute + minutes
|
||||
|
||||
hours = minutes // 60
|
||||
if hours:
|
||||
date = cls.add_hours(company, date, hours)
|
||||
|
||||
minutes = minutes % 60
|
||||
|
||||
date = datetime.datetime(
|
||||
date.year,
|
||||
date.month,
|
||||
date.day,
|
||||
date.hour,
|
||||
minutes,
|
||||
date.second)
|
||||
|
||||
return date
|
||||
|
||||
@classmethod
|
||||
def add_hours(cls, company, date, hours):
|
||||
while hours:
|
||||
if hours != intfloor(hours):
|
||||
minutes = (hours - intfloor(hours)) * 60
|
||||
date = cls.add_minutes(company, date, minutes)
|
||||
hours = intfloor(hours)
|
||||
|
||||
hours = date.hour + hours
|
||||
days = hours // company.hours_per_work_day
|
||||
if days:
|
||||
date = cls.add_days(company, date, days)
|
||||
|
||||
hours = hours % company.hours_per_work_day
|
||||
|
||||
date = datetime.datetime(
|
||||
date.year,
|
||||
date.month,
|
||||
date.day,
|
||||
intfloor(hours),
|
||||
date.minute,
|
||||
date.second)
|
||||
|
||||
hours = hours - intfloor(hours)
|
||||
|
||||
return date
|
||||
|
||||
@classmethod
|
||||
def add_days(cls, company, date, days):
|
||||
day_per_week = company.hours_per_work_week / company.hours_per_work_day
|
||||
|
||||
while days:
|
||||
if days != intfloor(days):
|
||||
hours = (days - intfloor(days)) * company.hours_per_work_day
|
||||
date = cls.add_hours(company, date, hours)
|
||||
days = intfloor(days)
|
||||
|
||||
days = date.weekday() + days
|
||||
|
||||
weeks = days // day_per_week
|
||||
days = days % day_per_week
|
||||
|
||||
if weeks:
|
||||
date = cls.add_weeks(company, date, weeks)
|
||||
|
||||
date += datetime.timedelta(days=-date.weekday() + intfloor(days))
|
||||
|
||||
days = days - intfloor(days)
|
||||
|
||||
return date
|
||||
|
||||
@classmethod
|
||||
def add_weeks(cls, company, date, weeks):
|
||||
day_per_week = company.hours_per_work_week / company.hours_per_work_day
|
||||
|
||||
if weeks != intfloor(weeks):
|
||||
days = (weeks - intfloor(weeks)) * day_per_week
|
||||
if days:
|
||||
date = cls.add_days(company, date, days)
|
||||
|
||||
date += datetime.timedelta(days=7 * intfloor(weeks))
|
||||
|
||||
return date
|
||||
|
||||
def compute_dates(self):
|
||||
values = {}
|
||||
|
||||
def get_early_finish(work):
|
||||
return values.get(work, {}).get(
|
||||
'early_finish_time', work.early_finish_time)
|
||||
|
||||
def get_late_start(work):
|
||||
return values.get(work, {}).get(
|
||||
'late_start_time', work.late_start_time)
|
||||
|
||||
def maxdate(x, y):
|
||||
return x and y and max(x, y) or x or y
|
||||
|
||||
def mindate(x, y):
|
||||
return x and y and min(x, y) or x or y
|
||||
|
||||
# propagate constraint_start_time
|
||||
constraint_start = reduce(maxdate, (pred.early_finish_time
|
||||
for pred in self.predecessors), None)
|
||||
|
||||
if constraint_start is None and self.parent:
|
||||
constraint_start = self.parent.early_start_time
|
||||
|
||||
constraint_start = maxdate(constraint_start,
|
||||
self.constraint_start_time)
|
||||
|
||||
works = deque([(self, constraint_start)])
|
||||
work2children = {}
|
||||
parent = None
|
||||
|
||||
while works or parent:
|
||||
if parent:
|
||||
work = parent
|
||||
parent = None
|
||||
|
||||
# Compute early_finish
|
||||
if work.children:
|
||||
early_finish_time = reduce(
|
||||
maxdate, map(get_early_finish, work.children), None)
|
||||
else:
|
||||
early_finish_time = None
|
||||
if values[work]['early_start_time']:
|
||||
early_finish_time = self.add_hours(work.company,
|
||||
values[work]['early_start_time'],
|
||||
work.hours)
|
||||
values[work]['early_finish_time'] = early_finish_time
|
||||
|
||||
# Propagate constraint_start on successors
|
||||
for w in work.successors:
|
||||
works.append((w, early_finish_time))
|
||||
|
||||
if not work.parent:
|
||||
continue
|
||||
|
||||
# housecleaning work2children
|
||||
if work.parent not in work2children:
|
||||
work2children[work.parent] = set()
|
||||
work2children[work.parent].update(work.successors)
|
||||
|
||||
if work in work2children[work.parent]:
|
||||
work2children[work.parent].remove(work)
|
||||
|
||||
# if no sibling continue to walk up the tree
|
||||
if not work2children.get(work.parent):
|
||||
if work.parent not in values:
|
||||
values[work.parent] = {}
|
||||
parent = work.parent
|
||||
|
||||
continue
|
||||
|
||||
work, constraint_start = works.popleft()
|
||||
# take constraint define on the work into account
|
||||
constraint_start = maxdate(constraint_start,
|
||||
work.constraint_start_time)
|
||||
|
||||
if constraint_start:
|
||||
early_start = self.add_hours(work.company, constraint_start,
|
||||
work.leveling_delay)
|
||||
else:
|
||||
early_start = None
|
||||
|
||||
# update values
|
||||
if work not in values:
|
||||
values[work] = {}
|
||||
values[work]['early_start_time'] = early_start
|
||||
|
||||
# Loop on children if they exist
|
||||
if work.children and work not in work2children:
|
||||
work2children[work] = set(work.children)
|
||||
# Propagate constraint_start on children
|
||||
for w in work.children:
|
||||
if w.predecessors:
|
||||
continue
|
||||
works.append((w, early_start))
|
||||
else:
|
||||
parent = work
|
||||
|
||||
# propagate constraint_finish_time
|
||||
constraint_finish = reduce(mindate, (succ.late_start_time
|
||||
for succ in self.successors), None)
|
||||
|
||||
if constraint_finish is None and self.parent:
|
||||
constraint_finish = self.parent.late_finish_time
|
||||
|
||||
constraint_finish = mindate(constraint_finish,
|
||||
self.constraint_finish_time)
|
||||
|
||||
works = deque([(self, constraint_finish)])
|
||||
work2children = {}
|
||||
parent = None
|
||||
|
||||
while works or parent:
|
||||
if parent:
|
||||
work = parent
|
||||
parent = None
|
||||
|
||||
# Compute late_start
|
||||
if work.children:
|
||||
reduce(mindate, map(get_late_start, work.children), None)
|
||||
else:
|
||||
late_start_time = None
|
||||
if values[work]['late_finish_time']:
|
||||
late_start_time = self.add_hours(work.company,
|
||||
values[work]['late_finish_time'],
|
||||
-work.hours)
|
||||
values[work]['late_start_time'] = late_start_time
|
||||
|
||||
# Propagate constraint_finish on predecessors
|
||||
for w in work.predecessors:
|
||||
works.append((w, late_start_time))
|
||||
|
||||
if not work.parent:
|
||||
continue
|
||||
|
||||
# housecleaning work2children
|
||||
if work.parent not in work2children:
|
||||
work2children[work.parent] = set()
|
||||
work2children[work.parent].update(work.predecessors)
|
||||
|
||||
if work in work2children[work.parent]:
|
||||
work2children[work.parent].remove(work)
|
||||
|
||||
# if no sibling continue to walk up the tree
|
||||
if not work2children.get(work.parent):
|
||||
if work.parent not in values:
|
||||
values[work.parent] = {}
|
||||
parent = work.parent
|
||||
|
||||
continue
|
||||
|
||||
work, constraint_finish = works.popleft()
|
||||
# take constraint define on the work into account
|
||||
constraint_finish = mindate(constraint_finish,
|
||||
work.constraint_finish_time)
|
||||
|
||||
if constraint_finish:
|
||||
late_finish = self.add_hours(work.company, constraint_finish,
|
||||
-work.back_leveling_delay)
|
||||
else:
|
||||
late_finish = None
|
||||
|
||||
# update values
|
||||
if work not in values:
|
||||
values[work] = {}
|
||||
values[work]['late_finish_time'] = late_finish
|
||||
|
||||
# Loop on children if they exist
|
||||
if work.children and work not in work2children:
|
||||
work2children[work] = set(work.children)
|
||||
# Propagate constraint_start on children
|
||||
for w in work.children:
|
||||
if w.successors:
|
||||
continue
|
||||
works.append((w, late_finish))
|
||||
else:
|
||||
parent = work
|
||||
|
||||
# write values
|
||||
write_fields = ('early_start_time', 'early_finish_time',
|
||||
'late_start_time', 'late_finish_time')
|
||||
to_write = []
|
||||
for work, val in values.items():
|
||||
write_cond = False
|
||||
for field in write_fields:
|
||||
if field in val and getattr(work, field) != val[field]:
|
||||
write_cond = True
|
||||
break
|
||||
|
||||
if write_cond:
|
||||
to_write.extend(([work], val))
|
||||
if to_write:
|
||||
self.write(*to_write)
|
||||
|
||||
def reset_leveling(self):
|
||||
def get_key(w):
|
||||
return (
|
||||
set(p.id for p in w.predecessors),
|
||||
set(s.id for s in w.successors))
|
||||
|
||||
if not self.parent:
|
||||
return
|
||||
siblings = self.search([
|
||||
('parent', '=', self.parent.id)
|
||||
])
|
||||
to_clean = []
|
||||
|
||||
ref_key = get_key(self)
|
||||
for sibling in siblings:
|
||||
if sibling.leveling_delay == sibling.back_leveling_delay == 0:
|
||||
continue
|
||||
if get_key(sibling) == ref_key:
|
||||
to_clean.append(sibling)
|
||||
|
||||
if to_clean:
|
||||
self.write(to_clean, {
|
||||
'leveling_delay': 0,
|
||||
'back_leveling_delay': 0,
|
||||
})
|
||||
|
||||
def create_leveling(self):
|
||||
# define some helper functions
|
||||
def get_key(w):
|
||||
return (
|
||||
set(p.id for p in w.predecessors),
|
||||
set(s.id for s in w.successors))
|
||||
|
||||
def over_alloc(current_alloc, work):
|
||||
return reduce(lambda res, alloc: (
|
||||
res
|
||||
or (current_alloc[alloc.employee.id]
|
||||
+ alloc.percentage) > 100),
|
||||
work.allocations,
|
||||
False)
|
||||
|
||||
def sum_allocs(current_alloc, work):
|
||||
res = defaultdict(float)
|
||||
for alloc in work.allocations:
|
||||
empl = alloc.employee.id
|
||||
res[empl] = current_alloc[empl] + alloc.percentage
|
||||
return res
|
||||
|
||||
def compute_delays(siblings):
|
||||
# time_line is a list [[end_delay, allocations], ...], this
|
||||
# mean that allocations is valid between the preceding end_delay
|
||||
# (or 0 if it doesn't exist) and the current end_delay.
|
||||
timeline = []
|
||||
for sibling in siblings:
|
||||
delay = 0
|
||||
ignored = []
|
||||
overloaded = []
|
||||
item = None
|
||||
|
||||
while timeline:
|
||||
# item is [end_delay, allocations]
|
||||
item = heappop(timeline)
|
||||
if over_alloc(item[1], sibling):
|
||||
ignored.extend(overloaded)
|
||||
ignored.append(item)
|
||||
delay = item[0]
|
||||
continue
|
||||
elif item[1] >= delay + sibling.duration:
|
||||
overloaded.append(item)
|
||||
else:
|
||||
# Succes!
|
||||
break
|
||||
|
||||
heappush(timeline,
|
||||
[delay + sibling.duration,
|
||||
sum_allocs(defaultdict(float), sibling),
|
||||
sibling.id])
|
||||
|
||||
for i in ignored:
|
||||
heappush(timeline, i)
|
||||
for i in overloaded:
|
||||
i[1] = sum_allocs(i[1], sibling)
|
||||
heappush(timeline, i)
|
||||
|
||||
yield sibling, delay
|
||||
|
||||
siblings = self.search([
|
||||
('parent', '=', self.parent.id if self.parent else None)
|
||||
])
|
||||
|
||||
refkey = get_key(self)
|
||||
siblings = [s for s in siblings if get_key(s) == refkey]
|
||||
|
||||
for sibling, delay in compute_delays(siblings):
|
||||
sibling.leveling_delay = delay
|
||||
|
||||
siblings.reverse()
|
||||
for sibling, delay in compute_delays(siblings):
|
||||
sibling.back_leveling_delay = delay
|
||||
self.__class__.save(siblings)
|
||||
|
||||
if self.parent:
|
||||
self.parent.compute_dates()
|
||||
|
||||
@classmethod
|
||||
def on_modification(cls, mode, works, field_names=None):
|
||||
super().on_modification(mode, works, field_names=field_names)
|
||||
if mode in {'create', 'write'}:
|
||||
for work in works:
|
||||
if field_names is None or 'effort' in field_names:
|
||||
work.reset_leveling()
|
||||
if field_names is None or field_names & {
|
||||
'constraint_start_time', 'constraint_finish_time',
|
||||
'effort'}:
|
||||
work.compute_dates()
|
||||
|
||||
@classmethod
|
||||
def on_delete(cls, works):
|
||||
callback = super().on_delete(works)
|
||||
to_update = set()
|
||||
for work in works:
|
||||
if work.parent and work.parent not in works:
|
||||
to_update.add(work.parent)
|
||||
to_update.update(
|
||||
c for c in work.parent.children if c not in works)
|
||||
|
||||
def replan():
|
||||
for work in to_update:
|
||||
work.reset_leveling()
|
||||
work.compute_dates()
|
||||
callback.append(replan)
|
||||
return callback
|
||||
|
||||
|
||||
class PredecessorSuccessor(ModelSQL):
|
||||
__name__ = 'project.predecessor_successor'
|
||||
predecessor = fields.Many2One(
|
||||
'project.work', "Predecessor", ondelete='CASCADE', required=True)
|
||||
successor = fields.Many2One(
|
||||
'project.work', "Successor", ondelete='CASCADE', required=True)
|
||||
|
||||
@classmethod
|
||||
def on_modification(cls, mode, records, field_names=None):
|
||||
super().on_modification(mode, records, field_names=field_names)
|
||||
if mode == 'create':
|
||||
if field_names is None or field_names & {
|
||||
'predecessor', 'successor', 'parent'}:
|
||||
for record in records:
|
||||
record.predecessor.reset_leveling()
|
||||
record.successor.reset_leveling()
|
||||
if record.predecessor.parent:
|
||||
record.predecessor.parent.compute_dates()
|
||||
|
||||
@classmethod
|
||||
def on_delete(cls, records):
|
||||
callback = super().on_delete(records)
|
||||
works = set()
|
||||
parents = set()
|
||||
for record in records:
|
||||
works.add(record.predecessor)
|
||||
works.add(record.successor)
|
||||
if record.predecessor.parent:
|
||||
parents.add(record.predecessor.parent)
|
||||
|
||||
def replan():
|
||||
for work in works:
|
||||
work.reset_leveling()
|
||||
for parent in parents:
|
||||
parent.compute_dates()
|
||||
callback.append(replan)
|
||||
return callback
|
||||
|
||||
|
||||
class Leveling(Wizard):
|
||||
__name__ = 'project_plan.work.leveling'
|
||||
start_state = 'leveling'
|
||||
leveling = StateTransition()
|
||||
|
||||
def transition_leveling(self):
|
||||
self.record.create_leveling()
|
||||
return 'end'
|
||||
25
modules/project_plan/work.xml
Normal file
25
modules/project_plan/work.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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_view_form">
|
||||
<field name="model">project.work</field>
|
||||
<field name="inherit" ref="project.work_view_form"/>
|
||||
<field name="name">work_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wizard_leveling">
|
||||
<field name="name">Tasks Leveling</field>
|
||||
<field name="wiz_name">project_plan.work.leveling</field>
|
||||
<field name="model">project.work</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="leveling_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">project.work,-1</field>
|
||||
<field name="action" ref="wizard_leveling"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
||||
Reference in New Issue
Block a user