first commit

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

View File

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

View File

@@ -0,0 +1,117 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Променено на"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
#, fuzzy
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Вид"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Променено на"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
#, fuzzy
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Вид"
#, fuzzy
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Условие за плащане"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Party Relations"
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relacions"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Actiu"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Data final"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "De"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Data inicial"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "A"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tipus"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Actiu"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Data final"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "De"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Data inicial"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "A"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tipus"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Relació inversa"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Usos"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "El identificador principal del tipus de relació."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Crea automàticament la relació inversa."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relacions"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Tipus de relació"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relacions"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Tipus de relació"
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relació entre tercers"
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relació entre tercers"
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Tipus de relació entre tercers"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relacions"

View File

@@ -0,0 +1,113 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr ""
#, fuzzy
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Party Relations"
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Beziehungen"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Aktiv"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Enddatum"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Von"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Startdatum"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Zu"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Aktiv"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Enddatum"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Von"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Startdatum"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Zu"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Name"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Umkehrbeziehung"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Verwendungen"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "Das Hauptidentifizierungsmerkmal des Beziehungstypen."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Die Umkehrrelation automatisch erstellen."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Beziehungen"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Beziehungstypen"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Beziehungen"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Beziehungstypen"
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Partei Beziehung"
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Partei Beziehung"
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Partei Beziehungstyp"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Beziehungen"

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relaciones"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Activo"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Fecha fin"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "De"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Fecha inicio"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Para"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Activo"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Fecha final"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "De"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Fecha de Inicio"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Para"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Relación inversa"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Usos"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "El identificador principal del tipo de relación."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Crea automáticamente la relación inversa."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relaciones"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Tipos de relación"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relaciones"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Tipos de relación"
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relación entre terceros"
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relación entre terceros"
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Tipo de relación entre terceros"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relaciones"

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr ""
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr ""
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr ""
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr ""
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,114 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Seotud"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Saatja"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Muutmise kuupäev"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Saaja"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tüüp"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Saatja"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Muutmise kuupäev"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Saaja"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tüüp"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nimi"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Seotud"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Seose tüüp"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Seotud"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Seose tüüp"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Osapoole seos"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Osapoole seos"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Osapoole seos"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Seotud"

View File

@@ -0,0 +1,114 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "روابط"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "از"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "تاریخ نوشته"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "به"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "نوع"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "از"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "تاریخ نوشته"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "به"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "نوع"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "نام"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "رابطه معکوس"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "شناسه اصلی از نوع ارتباط."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "ایجاد خودکار رابطه معکوس."
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "روابط"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "انوع رابطه"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "روابط"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "انوع رابطه"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "رابطه نهاد/سازمان"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "رابطه نهاد/سازمان"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "رابطه نهاد/سازمان"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "روابط"

View File

@@ -0,0 +1,112 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr ""
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Party Relations"
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relations"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Actif"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Date de fin"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "de"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Date de début"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "À"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Actif"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Date de fin"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "de"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Date de début"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "À"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Relation inverse"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Usages"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "L'identifiant principal du type de relation."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Créer automatiquement la relation inverse."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relations"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Types de relation"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relations"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Types de relation"
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relation entre tiers"
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relation entre tiers"
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Type de relation entre tiers"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relations"

View File

@@ -0,0 +1,116 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Kapcsolatok"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "-tól; -től"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Utolsó módosítás dátuma"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "-hoz; -höz"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Típus"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "-tól; től"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Utolsó módosítás dátuma"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "-hoz; -höz"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Típus"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Név"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Fordított kapcsolat"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Kapcsolatok"
#, fuzzy
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Kapcsolatok"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Partner kapcsolat"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Partner kapcsolat"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Partner kapcsolat"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Kapcsolatok"

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Aktif"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Tanggal Akhir"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Dari"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Kepada"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Aktif"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Tanggal Akhir"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Dari"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Kepada"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nama"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr ""
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr ""
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr ""
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,114 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relazioni"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Attivo"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Da"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Utente scrittura"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
#, fuzzy
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Attivo"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Da"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Utente scrittura"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
#, fuzzy
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relazioni"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relazioni"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Party Relations"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relazioni"

View File

@@ -0,0 +1,116 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "ຄວາມສຳພັນ"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "ຈາກ"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "ວັນທີບັນທຶກ"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "ເຖິງ"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "ປະເພດ"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "ຈາກ"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "ວັນທີບັນທຶກ"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "ເຖິງ"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "ປະເພດ"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "ຊື່"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "ຄວາມສຳພັນກັບກັນ"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "ຕົວລະບຸຕົວຕົນຫຼັກຂອງປະເພດສາຍພົວພັນ"
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "ສ້າງສາຍພົວພັນຢ້ອນກັບຢ່າງອັດຕະໂນມັດ"
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "ຄວາມສຳພັນ"
#, fuzzy
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "ຄວາມສຳພັນ"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "ຄວາມສຳພັນຂອງພາກສ່ວນ"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "ຄວາມສຳພັນຂອງພາກສ່ວນ"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "ຄວາມສຳພັນຂອງພາກສ່ວນ"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "ຄວາມສຳພັນ"

View File

@@ -0,0 +1,114 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Sąryšis"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Nuo"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Pakeitimo data"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Į"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tipas"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Nuo"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Pakeitimo data"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Į"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tipas"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Pavadinimas"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Atvirkštinis sąryšis"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "Pagrindinis sąryšio tipo identifikatorius."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Automatiškai sukurti atvirkštinį sąryšį."
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Sąryšis"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Sąryšių tipai"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Sąryšis"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Sąryšių tipai"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Kontrahento ryšiai"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Kontrahento ryšiai"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Kontrahento ryšiai"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Sąryšiai"

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relaties"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Actief"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Eind Datum"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Van"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Start Datum"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Tot"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Actief"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Eind Datum"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Van"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Start Datum"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Tot"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Naam"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Omgekeerde relatie"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Gebruik"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "De hoofdidentificatie van het relatietype."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Creëer automatisch de omgekeerde relatie."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relaties"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relatietypen"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relaties"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relatietypen"
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relatie relatie"
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relatie relatie"
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Relatie relatie soort"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relaties"

View File

@@ -0,0 +1,114 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relacje"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Od"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Data zapisu"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Do"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Od"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Data zapisu"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Do"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nazwa"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Odwrotna relacja"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Zastosowania"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "Główny identyfikator typu relacji."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Utwórz automatycznie odwróconą relację."
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relacje"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Typy relacji"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relacje"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Typy relacji"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relacje strony"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relacje strony"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Relacje strony"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relacje"

View File

@@ -0,0 +1,110 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relações"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Ativo"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Data Final"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "De"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Data de Início"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Para"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Ativo"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Data Final"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "De"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Data Inicial"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Para"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Relação Reversa"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Usos"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "O principal identificador do tipo de relação."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Criar a relação inversa automaticamente."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relações"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Tipos de Relação"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relações"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Tipos de Relação"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relação da Pessoa"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relação da Pessoa"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Tipo de relação entre pessoas"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relações"

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Relaţii"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Activ"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Data de sfârșit"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "De la"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Data de început"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "La"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Tip"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Activ"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Data de sfârşit"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "De la"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Data de început"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "La"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Tip"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Denumire"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Relația inversă"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Utilizari"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "Principalul identificator al tipului de relație."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Creați automat relația inversă."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relaţii"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Tipuri de relații"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relaţii"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Tipuri de relații"
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Relații Parteneri"
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Relații Parteneri"
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Tip Relație Parteneri"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relaţii"

View File

@@ -0,0 +1,117 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Дата изменения"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
#, fuzzy
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Тип"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Дата изменения"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
#, fuzzy
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Тип"
#, fuzzy
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Правило оплаты"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Party Relations"
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,110 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "Razmerja"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr "Aktivno"
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr "Končni datum"
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "Od"
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Začetni datum"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "Do"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "Vrsta"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr "Aktivno"
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr "Končni datum"
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "Od"
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Začetni datum"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "Do"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "Vrsta"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "Naziv"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "Obratno razmerje"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "Uporaba"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "Glavni identifikator za vrsto razmerjo."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "Samodejno izdelava obratnega razmerja."
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Razmerja"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Vrsta razmerja"
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Razmerja"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Vrsta razmerja"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Partnersko razmerje"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Partnersko razmerje"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Vrsta partnerskega razmerja"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Razmerja"

View File

@@ -0,0 +1,112 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr ""
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "Relation Types"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "Relation Types"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "Party Relations"
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,107 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr ""
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr ""
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr ""
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr ""
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr ""
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr ""
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr ""
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr ""
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr ""
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr ""
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr ""
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr ""
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr ""
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,114 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:party.party,relations:"
msgid "Relations"
msgstr "关系"
msgctxt "field:party.relation,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "从"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "写入日期"
msgctxt "field:party.relation,to:"
msgid "To"
msgstr "至"
msgctxt "field:party.relation,type:"
msgid "Type"
msgstr "类型"
msgctxt "field:party.relation.all,active:"
msgid "Active"
msgstr ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "从"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "写入日期"
msgctxt "field:party.relation.all,to:"
msgid "To"
msgstr "至"
msgctxt "field:party.relation.all,type:"
msgid "Type"
msgstr "类型"
msgctxt "field:party.relation.type,name:"
msgid "Name"
msgstr "名称"
msgctxt "field:party.relation.type,reverse:"
msgid "Reverse Relation"
msgstr "反向关系"
msgctxt "field:party.relation.type,usages:"
msgid "Usages"
msgstr "用法"
msgctxt "help:party.relation.type,name:"
msgid "The main identifier of the relation type."
msgstr "此关系类型的主标识."
msgctxt "help:party.relation.type,reverse:"
msgid "Create automatically the reverse relation."
msgstr "自动创建反向关系."
#, fuzzy
msgctxt "model:ir.action,name:act_relation_all"
msgid "Relations"
msgstr "关系"
msgctxt "model:ir.action,name:act_relation_type"
msgid "Relation Types"
msgstr "关系类型"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_relation_all"
msgid "Relations"
msgstr "关系"
msgctxt "model:ir.ui.menu,name:menu_relation_type"
msgid "Relation Types"
msgstr "关系类型"
#, fuzzy
msgctxt "model:party.relation,string:"
msgid "Party Relation"
msgstr "参与者关系"
#, fuzzy
msgctxt "model:party.relation.all,string:"
msgid "Party Relation"
msgstr "参与者关系"
#, fuzzy
msgctxt "model:party.relation.type,string:"
msgid "Party Relation Type"
msgstr "参与者关系"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "关系"

View File

@@ -0,0 +1,341 @@
# 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 as dt
import json
from functools import partial
from sql import As, Column, Literal, Null, Union, With
from sql.aggregate import Min
from sql.conditionals import Coalesce
import trytond.config as config
from trytond.model import Index, ModelSQL, ModelView, convert_from, fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval, If
from trytond.transaction import Transaction
dumps = partial(json.dumps, separators=(',', ':'), sort_keys=True)
class RelationType(ModelSQL, ModelView):
__name__ = 'party.relation.type'
name = fields.Char('Name', required=True, translate=True,
help="The main identifier of the relation type.")
reverse = fields.Many2One('party.relation.type', 'Reverse Relation',
help="Create automatically the reverse relation.")
usages = fields.MultiSelection([], "Usages")
@classmethod
def view_attributes(cls):
attributes = super().view_attributes()
if not cls.usages.selection:
attributes.extend([
('//separator[@name="usages"]',
'states', {'invisible': True}),
('//field[@name="usages"]', 'invisible', 1),
])
return attributes
class Relation(ModelSQL):
__name__ = 'party.relation'
from_ = fields.Many2One(
'party.party', "From", required=True, ondelete='CASCADE')
to = fields.Many2One(
'party.party', "To", required=True, ondelete='CASCADE')
type = fields.Many2One(
'party.relation.type', 'Type', required=True)
start_date = fields.Date(
"Start Date",
domain=[
If(Eval('start_date') & Eval('end_date'),
('start_date', '<=', Eval('end_date', None)),
()),
])
end_date = fields.Date(
"End Date",
domain=[
If(Eval('start_date') & Eval('end_date'),
('end_date', '>=', Eval('start_date', None)),
()),
])
active = fields.Function(fields.Boolean("Active"), 'get_active')
@classmethod
def __setup__(cls):
super().__setup__()
if not callable(cls.table_query):
t = cls.__table__()
cls._sql_indexes.update({
Index(t, (t.from_, Index.Range())),
Index(t, (t.to, Index.Range())),
})
def get_active(self, name):
pool = Pool()
Date = pool.get('ir.date')
context = Transaction().context
date = context.get('date') or Date.today()
start_date = self.start_date or dt.date.min
end_date = self.end_date or dt.date.max
return start_date <= date <= end_date
@classmethod
def domain_active(cls, domain, tables):
pool = Pool()
Date = pool.get('ir.date')
context = Transaction().context
date = context.get('date') or Date.today()
table, _ = tables[None]
_, operator, value = domain
start_date = Coalesce(table.start_date, dt.date.min)
end_date = Coalesce(table.end_date, dt.date.max)
expression = (start_date <= date) & (end_date >= date)
if operator in {'=', '!='}:
if (operator == '=') != value:
expression = ~expression
elif operator in {'in', 'not in'}:
if True in value and False not in value:
pass
elif False in value and True not in value:
expression = ~expression
else:
expression = Literal(True)
else:
expression = Literal(True)
return expression
@classmethod
def search_rec_name(cls, name, clause):
if clause[1].startswith('!') or clause[1].startswith('not '):
bool_op = 'AND'
else:
bool_op = 'OR'
return [bool_op,
('from_',) + tuple(clause[1:]),
('to',) + tuple(clause[1:]),
('type',) + tuple(clause[1:]),
]
class RelationAll(Relation, ModelView):
__name__ = 'party.relation.all'
@classmethod
def table_query(cls):
pool = Pool()
Relation = pool.get('party.relation')
Type = pool.get('party.relation.type')
relation = Relation.__table__()
type = Type.__table__()
tables = {
None: (relation, None)
}
reverse_tables = {
None: (relation, None),
'type': {
None: (type, (relation.type == type.id)
& (type.reverse != Null)),
},
}
columns = []
reverse_columns = []
for name, field in Relation._fields.items():
if hasattr(field, 'get'):
continue
column, reverse_column = cls._get_column(tables, reverse_tables,
name)
columns.append(column)
reverse_columns.append(reverse_column)
query = convert_from(None, tables, type_='INNER').select(*columns)
reverse_query = convert_from(
None, reverse_tables, type_='INNER').select(*reverse_columns)
return Union(query, reverse_query, all_=True)
@classmethod
def _get_column(cls, tables, reverse_tables, name):
table, _ = tables[None]
reverse_table, _ = reverse_tables[None]
if name == 'id':
return As(table.id * 2, name), As(reverse_table.id * 2 + 1, name)
elif name == 'from_':
return table.from_, reverse_table.to.as_(name)
elif name == 'to':
return table.to, reverse_table.from_.as_(name)
elif name == 'type':
reverse_type, _ = reverse_tables[name][None]
return table.type, reverse_type.reverse.as_(name)
else:
return Column(table, name), Column(reverse_table, name)
@staticmethod
def convert_instances(relations):
"Converts party.relation.all instances to party.relation "
pool = Pool()
Relation = pool.get('party.relation')
return Relation.browse([x.id // 2 for x in relations])
@property
def reverse_id(self):
if self.id % 2:
return self.id - 1
else:
return self.id + 1
@classmethod
def create(cls, vlist):
pool = Pool()
Relation = pool.get('party.relation')
vlist = cls._before_create(vlist)
relations = Relation.create(vlist)
return cls.browse(cls._after_create([r.id * 2 for r in relations]))
@classmethod
def write(cls, *args):
pool = Pool()
Relation = pool.get('party.relation')
RelationType = pool.get('party.relation.type')
ids, field_names, on_write, trigger_eligibles, *args = (
cls._before_write(*args))
relations = cls.browse(ids)
# Clean local cache of reverse
for relation in relations:
relation._local_cache.pop(relation.reverse_id, None)
# Clean cursor cache of reverse
for cache in Transaction().cache.values():
if cls.__name__ in cache:
cache_cls = cache[cls.__name__]
for relation in relations:
cache_cls.pop(relation.reverse_id, None)
actions = iter(args)
args = []
for relations, values in zip(actions, actions):
reverse_values = values.copy()
if 'from_' in values and 'to' in values:
reverse_values['from_'], reverse_values['to'] = \
reverse_values['to'], reverse_values['from_']
elif 'from_' in values:
reverse_values['to'] = reverse_values.pop('from_')
elif 'to' in values:
reverse_values['from_'] = reverse_values.pop('to')
if values.get('type'):
type_ = RelationType(values['type'])
reverse_values['type'] = (type_.reverse.id
if type_.reverse else None)
straight_relations = [r for r in relations if not r.id % 2]
reverse_relations = [r for r in relations if r.id % 2]
if straight_relations:
args.extend(
(cls.convert_instances(straight_relations), values))
if reverse_relations:
args.extend(
(cls.convert_instances(reverse_relations), reverse_values))
Relation.write(*args)
cls._after_write(ids, field_names, on_write, trigger_eligibles)
@classmethod
def delete(cls, relations):
pool = Pool()
Relation = pool.get('party.relation')
ids, on_delete = cls._before_delete(relations)
# Clean cursor cache of reverse
for cache in list(Transaction().cache.values()):
if cls.__name__ in cache:
cache_cls = cache[cls.__name__]
for relation in relations:
cache_cls.pop(relation.reverse_id, None)
Relation.delete(cls.convert_instances(relations))
cls._after_delete(ids, on_delete)
class Party(metaclass=PoolMeta):
__name__ = 'party.party'
relations = fields.One2Many('party.relation.all', 'from_', 'Relations')
@classmethod
def _distance_query(cls, usages=None, party=None, depth=None):
pool = Pool()
RelationAll = pool.get('party.relation.all')
RelationType = pool.get('party.relation.type')
transaction = Transaction()
context = transaction.context
database = transaction.database
query = super()._distance_query(
usages=usages, party=party, depth=depth)
if usages is None:
usages = context.get('relation_usages', [])
if party is None:
party = context.get('related_party')
if depth is None:
depth = context.get(
'depth',
config.getint('party_relationship', 'depth', default=7))
if not party:
return query
all_relations = RelationAll.__table__()
if usages:
relation_type = RelationType.__table__()
try:
usages_clause = database.json_any_keys_exist(
relation_type.usages, list(usages))
except NotImplementedError:
usages_clause = Literal(False)
for usage in usages:
usages_clause |= relation_type.usages.like(
'%' + dumps(usage) + '%')
relations = (all_relations
.join(relation_type,
condition=all_relations.type == relation_type.id)
.select(
Column(all_relations, '*'),
where=usages_clause))
else:
relations = all_relations
active_clause = RelationAll.domain_active(
('active', '=', True), {None: (relations, None)})
distance = With('from_', 'to', 'distance', recursive=True)
distance.query = relations.select(
Column(relations, 'from_'),
relations.to,
Literal(1).as_('distance'),
where=(Column(relations, 'from_') == party) & active_clause)
distance.query |= (distance
.join(relations,
condition=distance.to == Column(relations, 'from_'))
.select(
distance.from_,
relations.to,
(distance.distance + Literal(1)).as_('distance'),
where=(relations.to != party)
& (distance.distance < depth)))
distance.query.all_ = True
relation_distance = distance.select(
distance.to, Min(distance.distance).as_('distance'),
group_by=[distance.to], with_=[distance])
if query:
relation_distance |= query
return relation_distance

View File

@@ -0,0 +1,100 @@
<?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="relation_type_view_tree">
<field name="model">party.relation.type</field>
<field name="type">tree</field>
<field name="name">relation_type_tree</field>
</record>
<record model="ir.ui.view" id="relation_type_view_form">
<field name="model">party.relation.type</field>
<field name="type">form</field>
<field name="name">relation_type_form</field>
</record>
<record model="ir.action.act_window" id="act_relation_type">
<field name="name">Relation Types</field>
<field name="res_model">party.relation.type</field>
</record>
<record model="ir.action.act_window.view" id="act_relation_type_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="relation_type_view_tree"/>
<field name="act_window" ref="act_relation_type"/>
</record>
<record model="ir.action.act_window.view" id="act_relation_type_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="relation_type_view_form"/>
<field name="act_window" ref="act_relation_type"/>
</record>
<menuitem
parent="party.menu_configuration"
sequence="20"
action="act_relation_type"
id="menu_relation_type"/>
<record model="ir.model.access" id="access_relation_type">
<field name="model">party.relation.type</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_relation_type_admin">
<field name="model">party.relation.type</field>
<field name="group" ref="party.group_party_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.ui.view" id="relation_view_tree">
<field name="model">party.relation.all</field>
<field name="type">tree</field>
<field name="name">relation_tree</field>
</record>
<record model="ir.ui.view" id="relation_view_form">
<field name="model">party.relation.all</field>
<field name="type">form</field>
<field name="name">relation_form</field>
</record>
<record model="ir.action.act_window" id="act_relation_all">
<field name="name">Relations</field>
<field name="res_model">party.relation.all</field>
</record>
<record model="ir.action.act_window.view" id="act_relation_all_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="relation_view_tree"/>
<field name="act_window" ref="act_relation_all"/>
</record>
<record model="ir.action.act_window.view" id="act_relation_all_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="relation_view_form"/>
<field name="act_window" ref="act_relation_all"/>
</record>
<menuitem
parent="party.menu_party"
sequence="20"
action="act_relation_all"
id="menu_relation_all"/>
<record model="ir.ui.view" id="party_view_form">
<field name="model">party.party</field>
<field name="inherit" ref="party.party_view_form"/>
<field name="name">party_form</field>
</record>
</data>
</tryton>

View File

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

View File

@@ -0,0 +1,295 @@
# 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 sys
import unittest
from trytond import backend
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.transaction import Transaction
class TestCase(ModuleTestCase):
'Test Party relationship module'
module = 'party_relationship'
@with_transaction()
def test_reverse_relationship(self):
'Test reverse relationship'
pool = Pool()
Party = pool.get('party.party')
RelationType = pool.get('party.relation.type')
Relation = pool.get('party.relation')
employee_of, = RelationType.create([{
'name': 'Employee of',
}])
works_for, = RelationType.create([{
'name': 'Works for',
'reverse': employee_of.id,
}])
RelationType.write([employee_of], {
'reverse': works_for.id,
})
company, employee = Party.create([{
'name': 'Company',
}, {
'name': 'Employee',
}])
Relation.create([{
'from_': company.id,
'to': employee.id,
'type': employee_of.id
}])
company_relation, = company.relations
employee_relation, = employee.relations
self.assertEqual(company_relation.type, employee_of)
self.assertEqual(company_relation.to, employee)
self.assertEqual(employee_relation.type, works_for)
self.assertEqual(employee_relation.to, company)
@with_transaction()
def test_without_reverse_relationship(self):
'Test without reverse relationship'
pool = Pool()
Party = pool.get('party.party')
RelationType = pool.get('party.relation.type')
Relation = pool.get('party.relation')
employee_of, = RelationType.create([{
'name': 'Employee of',
}])
works_for, = RelationType.create([{
'name': 'Works for',
}])
company, employee = Party.create([{
'name': 'Company',
}, {
'name': 'Employee',
}])
Relation.create([{
'from_': company.id,
'to': employee.id,
'type': employee_of.id
}])
company_relation, = company.relations
self.assertEqual(len(employee.relations), 0)
self.assertEqual(company_relation.type, employee_of)
self.assertEqual(company_relation.to, employee)
@with_transaction()
def test_relation_all(self):
'Test relation all'
pool = Pool()
Party = pool.get('party.party')
RelationType = pool.get('party.relation.type')
RelationAll = pool.get('party.relation.all')
relation_type, reverse_relation_type = RelationType.create([{
'name': 'Relation',
}, {
'name': 'Reverse',
}])
relation_type.reverse = reverse_relation_type
relation_type.save()
reverse_relation_type.reverse = relation_type
reverse_relation_type.save()
party1, party2, party3 = Party.create([{
'name': 'Party 1',
}, {
'name': 'Party 2',
}, {
'name': 'Party 3',
}])
relation, = RelationAll.create([{
'from_': party1.id,
'to': party2.id,
'type': relation_type.id,
}])
self.assertFalse(relation.id % 2)
reverse_relation, = RelationAll.search([
('id', '!=', relation.id),
])
self.assertTrue(reverse_relation.id % 2)
self.assertEqual(relation.reverse_id, reverse_relation.id)
self.assertEqual(reverse_relation.from_, party2)
self.assertEqual(reverse_relation.to, party1)
reverse_relation.from_ = party3
reverse_relation.save()
relation.save() # clear cache
self.assertEqual(reverse_relation.from_, party3)
self.assertEqual(reverse_relation.to, party1)
self.assertEqual(relation.from_, party1)
self.assertEqual(relation.to, party3)
reverse_relation.type = reverse_relation_type
reverse_relation.save()
self.assertEqual(reverse_relation.from_, party3)
self.assertEqual(reverse_relation.to, party1)
self.assertEqual(reverse_relation.type, reverse_relation_type)
self.assertEqual(relation.from_, party1)
self.assertEqual(relation.to, party3)
self.assertEqual(relation.type, relation_type)
relation.type = relation_type
relation.save()
self.assertEqual(reverse_relation.from_, party3)
self.assertEqual(reverse_relation.to, party1)
self.assertEqual(reverse_relation.type, reverse_relation_type)
self.assertEqual(relation.from_, party1)
self.assertEqual(relation.to, party3)
self.assertEqual(relation.type, relation_type)
reverse_relation.to = party2
reverse_relation.save()
relation.save() # clear cache
self.assertEqual(reverse_relation.from_, party3)
self.assertEqual(reverse_relation.to, party2)
self.assertEqual(relation.from_, party2)
self.assertEqual(relation.to, party3)
reverse_relation.from_ = party2
reverse_relation.to = party1
reverse_relation.save()
relation.save() # clear cache
self.assertEqual(reverse_relation.from_, party2)
self.assertEqual(reverse_relation.to, party1)
self.assertEqual(relation.from_, party1)
self.assertEqual(relation.to, party2)
relation.from_ = party2
relation.to = party1
relation.save()
reverse_relation.save() # clear cache
self.assertEqual(relation.from_, party2)
self.assertEqual(relation.to, party1)
self.assertEqual(reverse_relation.from_, party1)
self.assertEqual(reverse_relation.to, party2)
RelationAll.delete([reverse_relation])
self.assertEqual(RelationAll.search([]), [])
@unittest.skipIf(
backend.name == 'sqlite' and sys.version_info < (3, 6),
"Executing distance query prevents complete rollback")
@with_transaction()
def test_party_distance(self):
"Test party distance"
pool = Pool()
Party = pool.get('party.party')
RelationType = pool.get('party.relation.type')
Relation = pool.get('party.relation')
usages = RelationType.usages.selection
self.addCleanup(setattr, RelationType.usages, 'selection', usages)
RelationType.usages.selection = usages + [('test', "Test")]
relation, reverse = RelationType.create([{
'name': 'Relation',
}, {
'name': 'Reverse',
}])
relation.reverse = reverse
relation.save()
reverse.reverse = relation
reverse.save()
A, B, C, D = Party.create([{
'name': 'A',
}, {
'name': 'B',
}, {
'name': 'C',
}, {
'name': 'D'
}])
Relation.create([{
'from_': A.id,
'to': C.id,
'type': relation.id,
}, {
'from_': C.id,
'to': D.id,
'type': relation.id,
}])
parties = Party.search([])
self.assertEqual([p.distance for p in parties], [None] * 4)
with Transaction().set_context(related_party=A.id):
parties = Party.search([])
self.assertEqual(
[(p.name, p.distance) for p in parties],
[('A', 0), ('C', 1), ('D', 2), ('B', None)])
another_relation, = RelationType.create([{
'name': 'Another Relation',
'usages': ['test'],
}])
Relation.create([{
'from_': A.id,
'to': B.id,
'type': another_relation.id,
}])
with Transaction().set_context(
related_party=A.id, relation_usages=['test']):
parties = Party.search([])
self.assertEqual(
[(p.name, p.distance) for p in parties],
[('A', 0), ('B', 1), ('C', None), ('D', None)])
with Transaction().set_context(related_party=A.id):
parties = Party.search([])
self.assertEqual(
[(p.name, p.distance) for p in parties],
[('A', 0), ('B', 1), ('C', 1), ('D', 2)])
@with_transaction()
def test_contact_mechanism_distance(self):
"Test relation distance"
pool = Pool()
Party = pool.get('party.party')
ContactMechanism = pool.get('party.contact_mechanism')
RelationType = pool.get('party.relation.type')
Relation = pool.get('party.relation')
relation, = RelationType.create([{
'name': 'Relation',
}])
A, B, C = Party.create([{
'name': "A",
'contact_mechanisms': [
('create', [{'value': "A", 'type': 'other'}])],
}, {
'name': "B",
'contact_mechanisms': [
('create', [{'value': "B", 'type': 'other'}])],
}, {
'name': "C",
'contact_mechanisms': [
('create', [{'value': "C", 'type': 'other'}])],
}])
Relation.create([{
'from_': A.id,
'to': C.id,
'type': relation.id,
}])
with Transaction().set_context(related_party=A.id):
contact_mechanisms = ContactMechanism.search([])
self.assertEqual(
[c.value for c in contact_mechanisms],
['A', 'C', 'B'])
del ModuleTestCase

View File

@@ -0,0 +1,13 @@
[tryton]
version=7.8.0
depends:
party
xml:
party.xml
[register]
model:
party.RelationType
party.Relation
party.RelationAll
party.Party

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="/form/notebook" position="inside">
<page string="Relations" id="relations">
<field name="relations" colspan="4"/>
</page>
</xpath>
</data>

View File

@@ -0,0 +1,18 @@
<?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>
<group col="6" colspan="4" id="relation">
<label name="from_"/>
<field name="from_"/>
<label name="type"/>
<field name="type" widget="selection"/>
<label name="to"/>
<field name="to"/>
</group>
<label name="start_date"/>
<field name="start_date"/>
<label name="end_date"/>
<field name="end_date"/>
</form>

View File

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

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form>
<label name="name"/>
<field name="name"/>
<label name="reverse"/>
<field name="reverse"/>
<separator name="usages" colspan="4"/>
<field name="usages" colspan="4"/>
</form>

View File

@@ -0,0 +1,7 @@
<?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="name" expand="1"/>
<field name="reverse" expand="1"/>
</tree>