Initial import from Docker volume

This commit is contained in:
root
2025-12-26 13:11:43 +00:00
commit 4998dc066a
13336 changed files with 1767801 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
from . import party
def register():
Pool.register(
party.RelationType,
party.Relation,
party.RelationAll,
party.Party,
module='party_relationship', type_='model')

Binary file not shown.

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,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relation Types"
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,name:"
msgid "Party Relation"
msgstr "Relació entre tercers"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relació entre tercers"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Tipus de relació"
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,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relation Types"
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,name:"
msgid "Party Relation"
msgstr "Partei Beziehung"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Partei Beziehung"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "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,name:"
msgid "Party Relation"
msgstr "Relación entre terceros"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relación entre terceros"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Tipo de relación"
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,name:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr ""
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,111 @@
#
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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "Osapoole seos"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Osapoole seos"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Seose tüüp"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Seotud"

View File

@@ -0,0 +1,111 @@
#
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 "انوع رابطه"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "رابطه نهاد/سازمان"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "رابطه نهاد/سازمان"
msgctxt "model:party.relation.type,name:"
msgid "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,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relation Types"
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,name:"
msgid "Party Relation"
msgstr "Relation tiers"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relation tiers"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Type de relation"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relations"

View File

@@ -0,0 +1,113 @@
#
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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "Partner kapcsolat"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Partner kapcsolat"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Kapcsolat típusa"
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,name:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.type,name:"
msgid "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,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relation Types"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relazioni"

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 "ຈາກ"
#, 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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "ຄວາມສຳພັນຂອງພາກສ່ວນ"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "ຄວາມສຳພັນຂອງພາກສ່ວນ"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "ປະເພດຄວາມສຳພັນ"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "ຄວາມສຳພັນ"

View File

@@ -0,0 +1,111 @@
#
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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "Kontrahento ryšiai"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Kontrahento ryšiai"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Sąryšio tipas"
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,name:"
msgid "Party Relation"
msgstr "Relatie relatie (party relation)"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relatie relatie (party relation)"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relatie Type"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relaties"

View File

@@ -0,0 +1,111 @@
#
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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "Relacje strony"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relacje strony"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Typy relacji"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "Relacje"

View File

@@ -0,0 +1,111 @@
#
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 ""
msgctxt "field:party.relation,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation,from_:"
msgid "From"
msgstr "De"
#, fuzzy
msgctxt "field:party.relation,start_date:"
msgid "Start Date"
msgstr "Data de Edição"
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 ""
msgctxt "field:party.relation.all,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:party.relation.all,from_:"
msgid "From"
msgstr "De"
#, fuzzy
msgctxt "field:party.relation.all,start_date:"
msgid "Start Date"
msgstr "Data de Edição"
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 ""
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."
#, fuzzy
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"
#, fuzzy
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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "Relação da Pessoa"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relação da Pessoa"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Tipo de Relação"
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,name:"
msgid "Party Relation"
msgstr "Relații de parte"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Relații de parte"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Tipuri de relații"
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,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relation Types"
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 "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"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "Partnersko razmerje"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Partnersko razmerje"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Vrste 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,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "Party Relations"
#, fuzzy
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "Relation Types"
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,name:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr ""
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr ""
msgctxt "view:party.party:"
msgid "Relations"
msgstr ""

View File

@@ -0,0 +1,111 @@
#
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 "关系类型"
msgctxt "model:party.relation,name:"
msgid "Party Relation"
msgstr "参与者关系"
msgctxt "model:party.relation.all,name:"
msgid "Party Relation"
msgstr "参与者关系"
msgctxt "model:party.relation.type,name:"
msgid "Relation Type"
msgstr "关系类型"
msgctxt "view:party.party:"
msgid "Relations"
msgstr "关系"

View File

@@ -0,0 +1,348 @@
# 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
from trytond.config import 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)
default_depth = config.getint('party_relationship', 'depth', default=7)
class RelationType(ModelSQL, ModelView):
'Relation Type'
__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):
'Party Relation'
__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.Equality())),
Index(t, (t.to, Index.Equality())),
})
def get_active(self, name):
pool = Pool()
Date = pool.get('ir.date')
context = Transaction().context
date = context.get('date', 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', 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):
'Party Relation'
__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')
relations = Relation.create(vlist)
return cls.browse([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')
all_records = sum(args[0:None:2], [])
# Increase transaction counter
Transaction().counter += 1
# Clean local cache
for record in all_records:
for record_id in (record.id, record.reverse_id):
record._local_cache.pop(record_id, None)
# Clean cursor cache
for cache in Transaction().cache.values():
if cls.__name__ in cache:
cache_cls = cache[cls.__name__]
for record in all_records:
for record_id in (record.id, record.reverse_id):
cache_cls.pop(record_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)
@classmethod
def delete(cls, relations):
pool = Pool()
Relation = pool.get('party.relation')
# Increase transaction counter
Transaction().counter += 1
# Clean cursor cache
for cache in list(Transaction().cache.values()):
for cache in (cache,
list(cache.get('_language_cache', {}).values())):
if cls.__name__ in cache:
cache_cls = cache[cls.__name__]
for record in relations:
for record_id in (record.id, record.reverse_id):
cache_cls.pop(record_id, None)
Relation.delete(cls.convert_instances(relations))
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', default_depth)
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,6 @@
[tryton]
version=7.2.0
depends:
party
xml:
party.xml

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>