* Revert "Remove consumptions depends"

This reverts commit ca4fd04b1f.

consumptions is used in Pyson expression for the states of field service.

* Revert "Remove consumptions depends"

This reverts commit 985fdab095.

consumptions is used in Pyson expression of states for field start_date.

* Add the CompanyTestMixin.

- Add missing field contexts.
- Add missing global rules.

* Update translation for de.

* Simplify the credit wizard by using self.records.

* Remove legacy company rules.

* Follow the common menu organization from tryton.org (bug10118).

* Use correct xml format for field priority.

* Revert "Revert "Remove consumptions depends""

This reverts commit d3a23e4f9b.

* Revert "Revert "Remove consumptions depends""

This reverts commit 996794dafd.

* Check rule only if _check_access is set and enforce companies rule
issue4080

* Add has_consumption field in contact line to eval readonly

#050435

* Add company to search by company + locales

#051236

Co-authored-by: Raimon Esteve <raimonesteve@gmail.com>
This commit is contained in:
Mathias Behrle 2023-01-11 16:51:31 +01:00 committed by Albert Cervera i Areny
parent 0a523dcfe4
commit 98f2453f33
6 changed files with 477 additions and 242 deletions

View file

@ -19,9 +19,12 @@
<field name="view" ref="contract_configuration_view_form"/> <field name="view" ref="contract_configuration_view_form"/>
<field name="act_window" ref="act_contract_configuration_form"/> <field name="act_window" ref="act_contract_configuration_form"/>
</record> </record>
<menuitem parent="menu_configuration" <menuitem
parent="menu_configuration"
sequence="0"
action="act_contract_configuration_form" action="act_contract_configuration_form"
id="menu_contract_configuration" icon="tryton-list"/> id="menu_contract_configuration"
icon="tryton-list"/>
<record model="ir.model.access" id="access_contract_configuration"> <record model="ir.model.access" id="access_contract_configuration">
<field name="model" search="[('model', '=', 'contract.configuration')]"/> <field name="model" search="[('model', '=', 'contract.configuration')]"/>
<field name="perm_read" eval="True"/> <field name="perm_read" eval="True"/>

View file

@ -115,7 +115,7 @@ class Contract(RRuleMixin, Workflow, ModelSQL, ModelView):
states=_STATES, depends=_DEPENDS) states=_STATES, depends=_DEPENDS)
party = fields.Many2One('party.party', 'Party', required=True, party = fields.Many2One('party.party', 'Party', required=True,
context={ context={
'company': Eval('company'), 'company': Eval('company', -1),
}, },
states=_STATES, depends=_DEPENDS + ['company']) states=_STATES, depends=_DEPENDS + ['company'])
number = fields.Char('Number', states=_STATES, number = fields.Char('Number', states=_STATES,

View file

@ -200,7 +200,7 @@
<record model="ir.ui.view" id="contract_line_view_list_sequence"> <record model="ir.ui.view" id="contract_line_view_list_sequence">
<field name="model">contract.line</field> <field name="model">contract.line</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="priority">20</field> <field name="priority" eval="20"/>
<field name="name">contract_line_list_sequence</field> <field name="name">contract_line_list_sequence</field>
</record> </record>
<record model="ir.ui.view" id="contract_line_view_form"> <record model="ir.ui.view" id="contract_line_view_form">
@ -504,12 +504,41 @@
<field name="act_window" ref="act_contract_review_line"/> <field name="act_window" ref="act_contract_review_line"/>
</record> </record>
<!-- Global rules -->
<record model="ir.rule.group" id="rule_group_contract_companies">
<field name="name">User in companies</field>
<field name="model" search="[('model', '=', 'contract')]"/>
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_contract_companies">
<field name="domain"
eval="[('company', 'in', Eval('companies', []))]"
pyson="1"/>
<field name="rule_group" ref="rule_group_contract_companies"/>
</record>
<record model="ir.rule.group" id="rule_group_contract_review_companies">
<field name="name">User in companies</field>
<field name="model" search="[('model', '=', 'contract.review')]"/>
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_contract_review_companies">
<field name="domain"
eval="[('company', 'in', Eval('companies', []))]"
pyson="1"/>
<field name="rule_group" ref="rule_group_contract_review_companies"/>
</record>
<!-- Menus --> <!-- Menus -->
<record model="ir.ui.icon" id="contract_icon"> <record model="ir.ui.icon" id="contract_icon">
<field name="name">tryton-membership</field> <field name="name">tryton-membership</field>
<field name="path">icons/tryton-membership.svg</field> <field name="path">icons/tryton-membership.svg</field>
</record> </record>
<menuitem id="menu_contract" name="Contracts" icon="tryton-membership"/> <menuitem
name="Contracts"
sequence="100"
id="menu_contract"
icon="tryton-membership"/>
<record model="ir.ui.menu-res.group" id="menu_contract_group_contract"> <record model="ir.ui.menu-res.group" id="menu_contract_group_contract">
<field name="menu" ref="menu_contract"/> <field name="menu" ref="menu_contract"/>
@ -556,16 +585,25 @@
<field name="rule_group" ref="rule_group_contract_consumption"/> <field name="rule_group" ref="rule_group_contract_consumption"/>
</record> </record>
<menuitem name="Configuration" parent="menu_contract" <menuitem
id="menu_configuration" sequence="0" icon="tryton-settings"/> name="Configuration"
parent="menu_contract"
id="menu_configuration"
sequence="0"
icon="tryton-settings"/>
<record model="ir.ui.menu-res.group" <record model="ir.ui.menu-res.group"
id="menu_configuration_group_contract_admin"> id="menu_configuration_group_contract_admin">
<field name="menu" ref="menu_configuration"/> <field name="menu" ref="menu_configuration"/>
<field name="group" ref="group_contract_admin"/> <field name="group" ref="group_contract_admin"/>
</record> </record>
<menuitem action="act_contract_service" id="menu_contract_service" <menuitem
parent="menu_configuration" sequence="10" name="Contract Services"/> parent="menu_configuration"
name="Contract Services"
sequence="10"
action="act_contract_service"
id="menu_contract_service"/>
<menuitem action="act_contract" id="menu_contract_form" <menuitem action="act_contract" id="menu_contract_form"
parent="menu_contract" sequence="20" name="Contracts"/> parent="menu_contract" sequence="20" name="Contracts"/>

View file

@ -76,15 +76,14 @@ class CreditInvoice(metaclass=PoolMeta):
def default_start(self, fields): def default_start(self, fields):
pool = Pool() pool = Pool()
Invoice = pool.get('account.invoice')
Consumption = pool.get('contract.consumption') Consumption = pool.get('contract.consumption')
default = super(CreditInvoice, self).default_start(fields) default = super().default_start(fields)
default.update({ default.update({
'from_contract': False, 'from_contract': False,
'reinvoice_contract': False, 'reinvoice_contract': False,
}) })
for invoice in Invoice.browse(Transaction().context['active_ids']): for invoice in self.records:
for line in invoice.lines: for line in invoice.lines:
if isinstance(line.origin, Consumption): if isinstance(line.origin, Consumption):
default['from_contract'] = True default['from_contract'] = True
@ -93,17 +92,15 @@ class CreditInvoice(metaclass=PoolMeta):
def do_credit(self, action): def do_credit(self, action):
pool = Pool() pool = Pool()
Invoice = pool.get('account.invoice')
Consumption = pool.get('contract.consumption') Consumption = pool.get('contract.consumption')
transaction = Transaction()
action, data = super(CreditInvoice, self).do_credit(action) action, data = super().do_credit(action)
if self.start.reinvoice_contract: if self.start.reinvoice_contract:
consumptions = set([]) consumptions = set([])
for invoice in Invoice.browse(transaction.context['active_ids']): for invoice in self.records:
for line in invoice.lines: for line in invoice.lines:
if isinstance(line.origin, Consumption): if isinstance(line.origin, Consumption):
consumptions.add(line.origin) consumptions.add(line.origin)
with transaction.set_context(force_reinvoice=True): with Transaction().set_context(force_reinvoice=True):
Consumption.generate_invoice(list(consumptions)) Consumption.generate_invoice(list(consumptions))
return action, data return action, data

View file

@ -2,67 +2,6 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n" msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:contract.consumption:"
msgid "Consumption \"%s\" can not be deleted because it is already invoiced."
msgstr ""
"Abrechnung \"%s\" kann nicht gelöscht werden, weil sie bereits fakturiert "
"ist."
msgctxt "error:contract.consumption:"
msgid ""
"Contract Line \"%(contract_line)s\" misses an \"account revenue\" default "
"property."
msgstr ""
"Fehlende Standardeigenschaft \"Ertragskonto\" für Vertragsposition "
"\"%(contract_line)s\"."
msgctxt "error:contract.consumption:"
msgid ""
"No payment term could be found for contract invoice of customer "
"\"%(customer)s\"."
msgstr "Für Kunde \"%(customer)s\" ist keine Zahlungsbedingung eingetragen."
msgctxt "error:contract.consumption:"
msgid "Please, configure a journal before creating contract invoices."
msgstr ""
"Bitte konfigurieren Sie ein Journal vor der Fakturierung von Verträgen."
msgctxt "error:contract.consumption:"
msgid ""
"Product \"%(product)s\" of contract line %(contract_line)s misses a revenue "
"account."
msgstr ""
"Fehlendes Ertragskonto für Variante \"%(product)s\" in Vertragsposition "
"%(contract_line)s."
msgctxt "error:contract.line:"
msgid ""
"Contract Line \"%(line)s\" cannot be removed because contract "
"\"%(contract)s\" is not in draft state."
msgstr ""
"Vertragsposition \"%(line)s\" kann nicht entfernt werden, weil Vertrag "
"\"%(contract)s\" nicht in Status \"Entwurf\" ist."
msgctxt "error:contract:"
msgid ""
"Contract \"%(contract)s\" can not be finished because line \"%(line)s\" has "
"no end date."
msgstr ""
"Vertrag \"%(contract)s\" kann nicht beendet werden, weil für Position "
"\"%(line)s\" Kein Enddatum eingetragen ist."
msgctxt "error:contract:"
msgid "Contract \"%s\" can not be moved to draft because it has consumptions."
msgstr ""
"Vertrag \"%s\" kann nicht auf Status \"Entwurf\" zurückgesetzt werden, weil "
"bereits Abrechnungen für ihn erzeugt wurden."
msgctxt "error:contract:"
msgid "Start Date is required in line \"%(line)s\" of contract \"%(contract)s\"."
msgstr ""
"Anfangsdatum ist erforderlich für Position \"%(line)s\" von Vertrag "
"\"%(contract)s\"."
msgctxt "field:account.invoice.credit.start,from_contract:" msgctxt "field:account.invoice.credit.start,from_contract:"
msgid "From Contract" msgid "From Contract"
msgstr "Von Vertrag" msgstr "Von Vertrag"
@ -75,18 +14,14 @@ msgctxt "field:contract,company:"
msgid "Company" msgid "Company"
msgstr "Unternehmen" msgstr "Unternehmen"
msgctxt "field:contract,create_date:"
msgid "Create Date"
msgstr "Erstellungsdatum"
msgctxt "field:contract,create_uid:"
msgid "Create User"
msgstr "Erstellt durch"
msgctxt "field:contract,currency:" msgctxt "field:contract,currency:"
msgid "Currency" msgid "Currency"
msgstr "Währung" msgstr "Währung"
msgctxt "field:contract,currency_digits:"
msgid "Currency Digits"
msgstr "Währung (signifikante Stellen)"
msgctxt "field:contract,end_date:" msgctxt "field:contract,end_date:"
msgid "End Date" msgid "End Date"
msgstr "Enddatum" msgstr "Enddatum"
@ -95,14 +30,14 @@ msgctxt "field:contract,first_invoice_date:"
msgid "First Invoice Date" msgid "First Invoice Date"
msgstr "Erstes Fakturierungsdatum" msgstr "Erstes Fakturierungsdatum"
msgctxt "field:contract,first_review_date:"
msgid "First Review Date"
msgstr "Erstes Wiedervorlagedatum"
msgctxt "field:contract,freq:" msgctxt "field:contract,freq:"
msgid "Frequency" msgid "Frequency"
msgstr "Häufigkeit" msgstr "Häufigkeit"
msgctxt "field:contract,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:contract,interval:" msgctxt "field:contract,interval:"
msgid "Interval" msgid "Interval"
msgstr "Intervall" msgstr "Intervall"
@ -111,6 +46,10 @@ msgctxt "field:contract,lines:"
msgid "Lines" msgid "Lines"
msgstr "Positionen" msgstr "Positionen"
msgctxt "field:contract,months_renewal:"
msgid "Months Renewal"
msgstr "Monatliche Erneuerung"
msgctxt "field:contract,number:" msgctxt "field:contract,number:"
msgid "Number" msgid "Number"
msgstr "Nummer" msgstr "Nummer"
@ -119,14 +58,26 @@ msgctxt "field:contract,party:"
msgid "Party" msgid "Party"
msgstr "Partei" msgstr "Partei"
msgctxt "field:contract,rec_name:" msgctxt "field:contract,payment_term:"
msgid "Name" msgid "Payment Term"
msgstr "Name" msgstr "Zahlungsbedingung"
msgctxt "field:contract,reference:" msgctxt "field:contract,reference:"
msgid "Reference" msgid "Reference"
msgstr "Beleg-Nr." msgstr "Beleg-Nr."
msgctxt "field:contract,review_alarm:"
msgid "Alarm Date"
msgstr "Erinnerungsdatum"
msgctxt "field:contract,review_limit_date:"
msgid "Limit Date"
msgstr "Befristungsdatum"
msgctxt "field:contract,reviews:"
msgid "Reviews"
msgstr "Überprüfungen"
msgctxt "field:contract,start_date:" msgctxt "field:contract,start_date:"
msgid "Start Date" msgid "Start Date"
msgstr "Anfangsdatum" msgstr "Anfangsdatum"
@ -139,45 +90,41 @@ msgctxt "field:contract,state:"
msgid "State" msgid "State"
msgstr "Status" msgstr "Status"
msgctxt "field:contract,write_date:"
msgid "Write Date"
msgstr "Zuletzt geändert"
msgctxt "field:contract,write_uid:"
msgid "Write User"
msgstr "Letzte Änderung durch"
msgctxt "field:contract.configuration,contract_sequence:" msgctxt "field:contract.configuration,contract_sequence:"
msgid "Contract Reference Sequence" msgid "Contract Reference Sequence"
msgstr "Nummernkreis Vertragsbeleg" msgstr "Nummernkreis Vertragsbeleg"
msgctxt "field:contract.configuration,create_date:" msgctxt "field:contract.configuration,default_months_renewal:"
msgid "Create Date" msgid "Review Months Renewal"
msgstr "Erstellungsdatum" msgstr "Überprüfung monatliche Erneuerung"
msgctxt "field:contract.configuration,create_uid:" msgctxt "field:contract.configuration,default_review_alarm:"
msgid "Create User" msgid "Alarm Date"
msgstr "Erstellt durch" msgstr "Erinnerungsdatum"
msgctxt "field:contract.configuration,id:" msgctxt "field:contract.configuration,default_review_limit_date:"
msgid "ID" msgid "Limit Date"
msgstr "ID" msgstr "Befristungsdatum"
msgctxt "field:contract.configuration,journal:" msgctxt "field:contract.configuration,journal:"
msgid "Journal" msgid "Journal"
msgstr "Journal" msgstr "Journal"
msgctxt "field:contract.configuration,rec_name:" msgctxt "field:contract.configuration.account,company:"
msgid "Name" msgid "Company"
msgstr "Name" msgstr "Unternehmen"
msgctxt "field:contract.configuration,write_date:" msgctxt "field:contract.configuration.account,journal:"
msgid "Write Date" msgid "Journal"
msgstr "Zuletzt geändert" msgstr "Journal"
msgctxt "field:contract.configuration,write_uid:" msgctxt "field:contract.configuration.sequence,company:"
msgid "Write User" msgid "Company"
msgstr "Letzte Änderung durch" msgstr "Unternehmen"
msgctxt "field:contract.configuration.sequence,contract_sequence:"
msgid "Contract Reference Sequence"
msgstr "Nummernkreis Vertragsbeleg"
msgctxt "field:contract.consumption,contract:" msgctxt "field:contract.consumption,contract:"
msgid "Contract" msgid "Contract"
@ -187,17 +134,9 @@ msgctxt "field:contract.consumption,contract_line:"
msgid "Contract Line" msgid "Contract Line"
msgstr "Vertragsposition" msgstr "Vertragsposition"
msgctxt "field:contract.consumption,create_date:"
msgid "Create Date"
msgstr "Erstellungsdatum"
msgctxt "field:contract.consumption,create_uid:"
msgid "Create User"
msgstr "Erstellt durch"
msgctxt "field:contract.consumption,credit_lines:" msgctxt "field:contract.consumption,credit_lines:"
msgid "Credit Lines" msgid "Credit Lines"
msgstr "Gutschriftspositionen" msgstr "Stornopositionen"
msgctxt "field:contract.consumption,end_date:" msgctxt "field:contract.consumption,end_date:"
msgid "End Date" msgid "End Date"
@ -207,10 +146,6 @@ msgctxt "field:contract.consumption,end_period_date:"
msgid "Finish Period Date" msgid "Finish Period Date"
msgstr "Ende Abrechnungszeitraum" msgstr "Ende Abrechnungszeitraum"
msgctxt "field:contract.consumption,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:contract.consumption,init_period_date:" msgctxt "field:contract.consumption,init_period_date:"
msgid "Start Period Date" msgid "Start Period Date"
msgstr "Beginn Abrechnungszeitraum" msgstr "Beginn Abrechnungszeitraum"
@ -223,38 +158,18 @@ msgctxt "field:contract.consumption,invoice_lines:"
msgid "Invoice Lines" msgid "Invoice Lines"
msgstr "Rechnungspositionen" msgstr "Rechnungspositionen"
msgctxt "field:contract.consumption,rec_name:"
msgid "Name"
msgstr "Name"
msgctxt "field:contract.consumption,start_date:" msgctxt "field:contract.consumption,start_date:"
msgid "Start Date" msgid "Start Date"
msgstr "Anfangsdatum" msgstr "Anfangsdatum"
msgctxt "field:contract.consumption,write_date:"
msgid "Write Date"
msgstr "Zuletzt geändert"
msgctxt "field:contract.consumption,write_uid:"
msgid "Write User"
msgstr "Letzte Änderung durch"
msgctxt "field:contract.create_consumptions.start,date:" msgctxt "field:contract.create_consumptions.start,date:"
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
msgctxt "field:contract.create_consumptions.start,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:contract.create_invoices.start,date:" msgctxt "field:contract.create_invoices.start,date:"
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
msgctxt "field:contract.create_invoices.start,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:contract.line,consumptions:" msgctxt "field:contract.line,consumptions:"
msgid "Consumptions" msgid "Consumptions"
msgstr "Abrechnungen" msgstr "Abrechnungen"
@ -267,14 +182,6 @@ msgctxt "field:contract.line,contract_state:"
msgid "Contract State" msgid "Contract State"
msgstr "Vertragsstatus" msgstr "Vertragsstatus"
msgctxt "field:contract.line,create_date:"
msgid "Create Date"
msgstr "Erstellungsdatum"
msgctxt "field:contract.line,create_uid:"
msgid "Create User"
msgstr "Erstellt durch"
msgctxt "field:contract.line,description:" msgctxt "field:contract.line,description:"
msgid "Description" msgid "Description"
msgstr "Beschreibung" msgstr "Beschreibung"
@ -283,10 +190,6 @@ msgctxt "field:contract.line,end_date:"
msgid "End Date" msgid "End Date"
msgstr "Enddatum" msgstr "Enddatum"
msgctxt "field:contract.line,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:contract.line,last_consumption_date:" msgctxt "field:contract.line,last_consumption_date:"
msgid "Last Consumption Date" msgid "Last Consumption Date"
msgstr "Letztes Abrechnungsdatum" msgstr "Letztes Abrechnungsdatum"
@ -295,14 +198,6 @@ msgctxt "field:contract.line,last_consumption_invoice_date:"
msgid "Last Invoice Date" msgid "Last Invoice Date"
msgstr "Letztes Fakturierungsdatum" msgstr "Letztes Fakturierungsdatum"
msgctxt "field:contract.line,rec_name:"
msgid "Name"
msgstr "Name"
msgctxt "field:contract.line,sequence:"
msgid "Sequence"
msgstr "Reihenfolge"
msgctxt "field:contract.line,service:" msgctxt "field:contract.line,service:"
msgid "Service" msgid "Service"
msgstr "Leistung" msgstr "Leistung"
@ -315,25 +210,61 @@ msgctxt "field:contract.line,unit_price:"
msgid "Unit Price" msgid "Unit Price"
msgstr "Preis" msgstr "Preis"
msgctxt "field:contract.line,write_date:" msgctxt "field:contract.review,activities:"
msgid "Write Date" msgid "Activities"
msgstr "Zuletzt geändert" msgstr "Wiedervorlagen"
msgctxt "field:contract.line,write_uid:" msgctxt "field:contract.review,alarm_date:"
msgid "Write User" msgid "Alarm Date"
msgstr "Letzte Änderung durch" msgstr "Erinnerungsdatum"
msgctxt "field:contract.service,create_date:" msgctxt "field:contract.review,company:"
msgid "Create Date" msgid "Company"
msgstr "Erstellungsdatum" msgstr "Unternehmen"
msgctxt "field:contract.service,create_uid:" msgctxt "field:contract.review,contract:"
msgid "Create User" msgid "Contract"
msgstr "Erstellt durch" msgstr "Vertrag"
msgctxt "field:contract.service,id:" msgctxt "field:contract.review,limit_date:"
msgid "ID" msgid "Limit Date"
msgstr "ID" msgstr "Befristungsdatum"
msgctxt "field:contract.review,lines:"
msgid "Lines"
msgstr "Positionen"
msgctxt "field:contract.review,review_date:"
msgid "Review Date"
msgstr "Überprüfungsdatum"
msgctxt "field:contract.review,state:"
msgid "State"
msgstr "Status"
msgctxt "field:contract.review,visual:"
msgid "Visual"
msgstr "Visuell"
msgctxt "field:contract.review.line,contract_line:"
msgid "Contract Line"
msgstr "Vertragsposition"
msgctxt "field:contract.review.line,increase_percentage:"
msgid "Increase Percentage (%)"
msgstr "Prozentsatz Zunahme (%)"
msgctxt "field:contract.review.line,price:"
msgid "Price"
msgstr "Preis"
msgctxt "field:contract.review.line,review:"
msgid "Review"
msgstr "Überprüfung"
msgctxt "field:contract.review.line,updated_price:"
msgid "Updated Price"
msgstr "Aktualisierter Preis"
msgctxt "field:contract.service,name:" msgctxt "field:contract.service,name:"
msgid "Name" msgid "Name"
@ -343,28 +274,60 @@ msgctxt "field:contract.service,product:"
msgid "Product" msgid "Product"
msgstr "Variante" msgstr "Variante"
msgctxt "field:contract.service,rec_name:"
msgid "Name"
msgstr "Name"
msgctxt "field:contract.service,write_date:"
msgid "Write Date"
msgstr "Zuletzt geändert"
msgctxt "field:contract.service,write_uid:"
msgid "Write User"
msgstr "Letzte Änderung durch"
msgctxt "field:party.party,contract_grouping_method:" msgctxt "field:party.party,contract_grouping_method:"
msgid "Contract Grouping Method" msgid "Contract Grouping Method"
msgstr "Gruppierungsmethode Vertrag" msgstr "Gruppierungsmethode Vertrag"
msgctxt "field:party.party,contract_grouping_methods:"
msgid "Contract Grouping Methods"
msgstr "Gruppierungsmethoden Vertrag"
msgctxt "field:party.party.contract_grouping_method,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:party.party.contract_grouping_method,contract_grouping_method:"
msgid "Contract Grouping Method"
msgstr "Gruppierungsmethode Vertrag"
msgctxt "field:party.party.contract_grouping_method,party:"
msgid "Party"
msgstr "Partei"
msgctxt "help:account.invoice.credit.start,reinvoice_contract:" msgctxt "help:account.invoice.credit.start,reinvoice_contract:"
msgid "If true, the consumption that generated this line will be reinvoiced." msgid "If true, the consumption that generated this line will be reinvoiced."
msgstr "" msgstr ""
"Bei Aktivierung wird die Abrechnung, die diese Position erzeugt hat, " "Bei Aktivierung wird die Abrechnung, die diese Position erzeugt hat, "
"nochmals fakturiert." "nochmals fakturiert."
msgctxt "help:contract,first_review_date:"
msgid "Date on which the actions should be performed."
msgstr "Das Datum an dem der Vorgang durchgeführt werden soll."
msgctxt "help:contract,review_alarm:"
msgid "The date when actions related to reviews should start to be managed."
msgstr ""
"Das Datum an dem mit der Bearbeitung der mit der Überprüfung verbundenen "
"Aktionen begonnen werden sollte."
msgctxt "help:contract,review_limit_date:"
msgid "The deadline date on which the actions should be performed."
msgstr "Das Datum der Fristende für die Bearbeitung der Aktionen."
msgctxt "help:contract.configuration,default_review_alarm:"
msgid "The date when actions related to reviews should start to be managed."
msgstr ""
"Das Datum an dem mit der Bearbeitung der mit der Überprüfung verbundenen "
"Aktionen begonnen werden sollte."
msgctxt "help:contract.configuration,default_review_limit_date:"
msgid "The deadline date on which the actions should be performed."
msgstr "Das Datum der Fristende für die Bearbeitung der Aktionen."
msgctxt "help:contract.review,state:"
msgid "The current state of the review."
msgstr "Der aktuelle Status der Überprüfung."
msgctxt "model:contract,name:" msgctxt "model:contract,name:"
msgid "Contract" msgid "Contract"
msgstr "Vertrag" msgstr "Vertrag"
@ -373,22 +336,42 @@ msgctxt "model:contract.configuration,name:"
msgid "Contract Configuration" msgid "Contract Configuration"
msgstr "Einstellungen" msgstr "Einstellungen"
msgctxt "model:contract.configuration.account,name:"
msgid "Contract Configuration Accounting"
msgstr "Vertrag Einstellungen Buchhaltung"
msgctxt "model:contract.configuration.sequence,name:"
msgid "Contract Configuration Sequence"
msgstr "Vertrag Einstellungen Nummernkreis"
msgctxt "model:contract.consumption,name:" msgctxt "model:contract.consumption,name:"
msgid "Contract Consumption" msgid "Contract Consumption"
msgstr "Abrechnung" msgstr "Abrechnung"
msgctxt "model:contract.create_consumptions.start,name:" msgctxt "model:contract.create_consumptions.start,name:"
msgid "Create Consumptions Start" msgid "Create Consumptions Start"
msgstr "Abrechnungen erzeugen Start" msgstr "Abrechnungen Erzeugen Start"
msgctxt "model:contract.create_invoices.start,name:" msgctxt "model:contract.create_invoices.start,name:"
msgid "Create Invoices Start" msgid "Create Invoices Start"
msgstr "Rechnungen erstellen Start" msgstr "Rechnungen erstellen Start"
msgctxt "model:contract.create_reviews.start,name:"
msgid "Create Contract Reviews Start"
msgstr "Überprüfungen Erstellen Start"
msgctxt "model:contract.line,name:" msgctxt "model:contract.line,name:"
msgid "Contract Line" msgid "Contract Line"
msgstr "Vertragsposition" msgstr "Vertragsposition"
msgctxt "model:contract.review,name:"
msgid "Contract Review"
msgstr "Vertrag Überprüfung"
msgctxt "model:contract.review.line,name:"
msgid "Contract Review Line"
msgstr "Vertrag Überprüfung Zeile"
msgctxt "model:contract.service,name:" msgctxt "model:contract.service,name:"
msgid "Contract Service" msgid "Contract Service"
msgstr "Vertragsleistung" msgstr "Vertragsleistung"
@ -417,6 +400,14 @@ msgctxt "model:ir.action,name:act_contract_line"
msgid "Contract Lines" msgid "Contract Lines"
msgstr "Vertragspositionen" msgstr "Vertragspositionen"
msgctxt "model:ir.action,name:act_contract_review_form_relate"
msgid "Reviews"
msgstr "Überprüfungen"
msgctxt "model:ir.action,name:act_contract_review_line"
msgid "Contract Review Lines"
msgstr "Vertrag Überprüfung Zeile"
msgctxt "model:ir.action,name:act_contract_service" msgctxt "model:ir.action,name:act_contract_service"
msgid "Contract Services" msgid "Contract Services"
msgstr "Vertragsleistungen" msgstr "Vertragsleistungen"
@ -429,6 +420,10 @@ msgctxt "model:ir.action,name:act_open_contract"
msgid "Contracts" msgid "Contracts"
msgstr "Verträge" msgstr "Verträge"
msgctxt "model:ir.action,name:act_review"
msgid "Reviews"
msgstr "Überprüfungen"
msgctxt "model:ir.action,name:wizard_create_consumptions" msgctxt "model:ir.action,name:wizard_create_consumptions"
msgid "Create Consumptions" msgid "Create Consumptions"
msgstr "Abrechnungen erzeugen" msgstr "Abrechnungen erzeugen"
@ -437,6 +432,10 @@ msgctxt "model:ir.action,name:wizard_create_invoices"
msgid "Create Invoices" msgid "Create Invoices"
msgstr "Rechnungen erstellen" msgstr "Rechnungen erstellen"
msgctxt "model:ir.action,name:wizard_create_reviews"
msgid "Create Reviews"
msgstr "Überprüfungen erstellen"
msgctxt "" msgctxt ""
"model:ir.action.act_window.domain,name:act_contract_consumption_domain_all" "model:ir.action.act_window.domain,name:act_contract_consumption_domain_all"
msgid "All" msgid "All"
@ -459,6 +458,167 @@ msgctxt "model:ir.action.act_window.domain,name:act_contract_domain_draft"
msgid "Draft" msgid "Draft"
msgstr "Entwurf" msgstr "Entwurf"
msgctxt "model:ir.action.act_window.domain,name:act_review_domain_all"
msgid "All"
msgstr "Alle"
msgctxt "model:ir.action.act_window.domain,name:act_review_domain_pending"
msgid "Pending"
msgstr "Schwebend"
msgctxt "model:ir.action.act_window.domain,name:act_review_domain_processing"
msgid "Processing"
msgstr "In Arbeit"
msgctxt "model:ir.action.act_window.domain,name:act_review_domain_to_notice"
msgid "Notice"
msgstr "Zur Kenntnisnahme"
msgctxt "model:ir.message,text:cannot_delete"
msgid ""
"Contract Line \"%(line)s\" cannot be removed because contract "
"\"%(contract)s\" has consumptions."
msgstr ""
"Vertragsposition \"%(line)s\" kann nicht entfernt werden, weil für Vertrag "
"\"%(contract)s\" bereits Abrechnungen erstellt wurden."
msgctxt "model:ir.message,text:cannot_draft"
msgid "Contract \"%s\" can not be moved to draft because it has consumptions."
msgstr ""
"Vertrag \"%s\" kann nicht auf Status \"Entwurf\" zurückgestellt werden, weil"
" bereits Abrechnungen für ihn erzeugt wurden."
msgctxt "model:ir.message,text:cannot_finish"
msgid ""
"Contract \"%(contract)s\" can not be finished because line \"%(line)s\" has "
"no end date."
msgstr ""
"Vertrag \"%(contract)s\" kann nicht beendet werden, wei die Position "
"\"%(line)s\" kein Enddatum aufweist."
msgctxt "model:ir.message,text:delete_invoiced_consumption"
msgid ""
"Consumption \"%(consumption)s\" can not be deleted because it is already "
"invoiced."
msgstr ""
"Abrechnung \"%(consumption)s\" kann nicht gelöscht werden, weil sie bereits "
"fakturiert ist."
msgctxt "model:ir.message,text:line_start_date_required"
msgid "Start Date is required in line \"%(line)s\" of contract \"%(contract)s\"."
msgstr ""
"Für Position \"%(line)s\" in Vertrag \"%(contract)s\" ist ein Startdatum "
"erforderlich."
msgctxt "model:ir.message,text:missing_account_revenue"
msgid ""
"Product \"%(product)s\" of contract line %(contract_line)s misses a revenue "
"account."
msgstr ""
"Für Variante \"%(product)s\" in Vertragsposition %(contract_line)s ist kein "
"Ertragskonto definiert."
msgctxt "model:ir.message,text:missing_account_revenue_property"
msgid ""
"Contract Line \"%(contract_line)s\" misses an \"account revenue\" default "
"property."
msgstr ""
"Fehlende Standardeinstellung für Ertragskonto in Vertragsposition "
"\"%(contract_line)s\"."
msgctxt "model:ir.message,text:missing_journal"
msgid "Please, configure a journal before creating contract invoices."
msgstr "Bitte erstellen Sie ein Journal vor der Erstellung von Rechnungen."
msgctxt "model:ir.message,text:msg_review_cannot_delete"
msgid ""
"Contract Review \"%(review)s\" cannot be removed because is not in pending "
"state."
msgstr ""
"Überprüfung \"%(review)s\" kann nicht entfernt werden, da sie in keinem "
"bearbeitbaren Status ist."
msgctxt "model:ir.message,text:msg_review_with_lines"
msgid ""
"Contract Review \"%(review)s\" cannot move to \"Pending\" because it has "
"lines created."
msgstr "Es wurden bereits Zeilen für Wiedervorlage \"%(review)s\" erzeugt."
msgctxt "model:ir.message,text:pending_contract"
msgid ""
"The party \"%(party)s\" can not be erased because he has pending contracts "
"for the company \"%(company)s\"."
msgstr ""
"Partei \"%(party)s\" kann nicht gelöscht werden, weil es noch schwebende "
"Verträge für sie in Unternehmen \"%(company)s\" gibt."
msgctxt "model:ir.model.button,confirm:contract_cancel_button"
msgid ""
"Cancelled contracts no longer create consumptions. Are you sure you want to "
"cancel this contract?"
msgstr ""
"Für annullierte Verträge werden keine Abrechnungen erstellt. Fortfahren?"
msgctxt "model:ir.model.button,string:contract_cancel_button"
msgid "Cancel"
msgstr "Abbrechen"
msgctxt "model:ir.model.button,string:contract_confirm_button"
msgid "Confirm"
msgstr "Bestätigen"
msgctxt "model:ir.model.button,string:contract_consumption_invoice_button"
msgid "Invoice"
msgstr "Rechnung"
msgctxt "model:ir.model.button,string:contract_draft_button"
msgid "Draft"
msgstr "Entwurf"
msgctxt "model:ir.model.button,string:contract_finish_button"
msgid "Finish"
msgstr "Beenden"
msgctxt "model:ir.model.button,string:contract_review_cancelled_button"
msgid "Cancelled"
msgstr "Annulliert"
msgctxt "model:ir.model.button,string:contract_review_done_button"
msgid "Done"
msgstr "Erledigt"
msgctxt "model:ir.model.button,string:contract_review_pending_button"
msgid "Pending"
msgstr "Schwebend"
msgctxt "model:ir.model.button,string:contract_review_processing_button"
msgid "Processing"
msgstr "In Arbeit"
msgctxt "model:ir.rule.group,name:rule_group_contract"
msgid "Contract Company Rule"
msgstr "Vertrag Unternehmen Regel"
msgctxt "model:ir.rule.group,name:rule_group_contract_companies"
msgid "User in companies"
msgstr "Benutzer im Unternehmen"
msgctxt "model:ir.rule.group,name:rule_group_contract_consumption"
msgid "Contract Consumption Company Rule"
msgstr "Vertrag Abrechnung Unternehmen Regel"
msgctxt "model:ir.rule.group,name:rule_group_contract_line"
msgid "Contract Line Company Rule"
msgstr "Vertragsposition Unternehmen Regel"
msgctxt "model:ir.rule.group,name:rule_group_contract_review"
msgid "User in company"
msgstr "Benutzer in Unternehmen"
msgctxt "model:ir.rule.group,name:rule_group_contract_review_companies"
msgid "User in companies"
msgstr "Benutzer im Unternehmen"
msgctxt "model:ir.sequence,name:sequence_contract" msgctxt "model:ir.sequence,name:sequence_contract"
msgid "Contract" msgid "Contract"
msgstr "Vertrag" msgstr "Vertrag"
@ -503,6 +663,18 @@ msgctxt "model:ir.ui.menu,name:menu_create_invoices"
msgid "Create Invoices" msgid "Create Invoices"
msgstr "Rechnungen erstellen" msgstr "Rechnungen erstellen"
msgctxt "model:ir.ui.menu,name:menu_create_reviews"
msgid "Create Reviews"
msgstr "Überprüfungen erstellen"
msgctxt "model:ir.ui.menu,name:menu_review"
msgid "Reviews"
msgstr "Überprüfungen"
msgctxt "model:party.party.contract_grouping_method,name:"
msgid "Party Contract Grouping Method"
msgstr "Partei Vertragsgruppierungsmethode"
msgctxt "model:res.group,name:group_contract" msgctxt "model:res.group,name:group_contract"
msgid "Contracts" msgid "Contracts"
msgstr "Verträge" msgstr "Verträge"
@ -511,10 +683,6 @@ msgctxt "model:res.group,name:group_contract_admin"
msgid "Contracts Administration" msgid "Contracts Administration"
msgstr "Verträge Administration" msgstr "Verträge Administration"
msgctxt "selection:contract,freq:"
msgid ""
msgstr " "
msgctxt "selection:contract,freq:" msgctxt "selection:contract,freq:"
msgid "Daily" msgid "Daily"
msgstr "Täglich" msgstr "Täglich"
@ -563,13 +731,53 @@ msgctxt "selection:contract.line,contract_state:"
msgid "Finished" msgid "Finished"
msgstr "Beendet" msgstr "Beendet"
msgctxt "selection:contract.review,state:"
msgid "Cancelled"
msgstr "Annulliert"
msgctxt "selection:contract.review,state:"
msgid "Done"
msgstr "Erledigt"
msgctxt "selection:contract.review,state:"
msgid "Pending"
msgstr "Schwebend"
msgctxt "selection:contract.review,state:"
msgid "Processing"
msgstr "In Arbeit"
msgctxt "selection:ir.cron,method:"
msgid "Contract - Create Reviews"
msgstr "Überprüfungen für Verträge erstellen"
msgctxt "selection:party.party,contract_grouping_method:" msgctxt "selection:party.party,contract_grouping_method:"
msgid "Group contracts" msgid "Group contracts"
msgstr "Verträge gruppieren" msgstr "Verträge gruppieren"
msgctxt "selection:party.party,contract_grouping_method:" msgctxt "selection:party.party,contract_grouping_method:"
msgid "None" msgid "None"
msgstr "Keine" msgstr " - "
msgctxt ""
"selection:party.party.contract_grouping_method,contract_grouping_method:"
msgid "Group contracts"
msgstr "Verträge gruppieren"
msgctxt ""
"selection:party.party.contract_grouping_method,contract_grouping_method:"
msgid "Group contracts"
msgstr "Verträge gruppieren"
msgctxt ""
"selection:party.party.contract_grouping_method,contract_grouping_method:"
msgid "None"
msgstr " - "
msgctxt ""
"selection:party.party.contract_grouping_method,contract_grouping_method:"
msgid "None"
msgstr " - "
msgctxt "view:account.invoice.credit.start:" msgctxt "view:account.invoice.credit.start:"
msgid "" msgid ""
@ -577,11 +785,11 @@ msgid ""
"want to credit them?" "want to credit them?"
msgstr "" msgstr ""
"Diese Rechnung(en) wurden aus Verträgen erzeugt. Wollen Sie sie tatsächlich " "Diese Rechnung(en) wurden aus Verträgen erzeugt. Wollen Sie sie tatsächlich "
"gutschreiben?" "stornieren?"
msgctxt "view:contract.configuration:" msgctxt "view:contract.configuration:"
msgid "Contract Configuration" msgid "Reviews"
msgstr "Einstellungen" msgstr "Überprüfungen"
msgctxt "view:contract.consumption:" msgctxt "view:contract.consumption:"
msgid "Contract Consumption" msgid "Contract Consumption"
@ -591,62 +799,42 @@ msgctxt "view:contract.consumption:"
msgid "Invoice" msgid "Invoice"
msgstr "Fakturieren" msgstr "Fakturieren"
msgctxt "view:contract.create_consumptions.start:"
msgid "Create Consumptions"
msgstr "Abrechnungen erzeugen"
msgctxt "view:contract.create_consumptions.start:" msgctxt "view:contract.create_consumptions.start:"
msgid "Create Contract Consumptions up to" msgid "Create Contract Consumptions up to"
msgstr "Abrechnungen erzeugen bis" msgstr "Abrechnungen erzeugen bis"
msgctxt "view:contract.create_invoices.start:"
msgid "Create Invoices"
msgstr "Rechnungen erstellen"
msgctxt "view:contract.create_invoices.start:" msgctxt "view:contract.create_invoices.start:"
msgid "Create invoices up to" msgid "Create invoices up to"
msgstr "Rechnungen erstellen bis" msgstr "Rechnungen erstellen bis"
msgctxt "view:contract.create_reviews.start:"
msgid "Create Contract Reviews"
msgstr "Überprüfungen erstellen"
msgctxt "view:contract.line:" msgctxt "view:contract.line:"
msgid "Contract Line" msgid "Contract Line"
msgstr "Vertragsposition" msgstr "Vertragsposition"
msgctxt "view:contract.review:"
msgid "Contract"
msgstr "Vertrag"
msgctxt "view:contract.service:" msgctxt "view:contract.service:"
msgid "Contract Service" msgid "Contract Service"
msgstr "Vertragsleistung" msgstr "Vertragsleistung"
msgctxt "view:contract:"
msgid "Cancel"
msgstr "Annullieren"
msgctxt "view:contract:"
msgid ""
"Cancelled contracts no longer create consumptions. Are you sure you want to "
"cancel this contract?"
msgstr ""
"Annullierte Verträge können nicht mehr abgerechnet werden. Tatsächlich "
"fortfahren?"
msgctxt "view:contract:"
msgid "Confirm"
msgstr "Bestätigen"
msgctxt "view:contract:" msgctxt "view:contract:"
msgid "Contract" msgid "Contract"
msgstr "Vertrag" msgstr "Vertrag"
msgctxt "view:contract:"
msgid "Draft"
msgstr "Entwurf"
msgctxt "view:contract:"
msgid "Finish"
msgstr "Beenden"
msgctxt "view:contract:" msgctxt "view:contract:"
msgid "Invoice recurrence" msgid "Invoice recurrence"
msgstr "Wiederkehrende Abrechnung" msgstr "Wiederkehrende Abrechnung"
msgctxt "view:contract:"
msgid "Review"
msgstr "Überprüfung"
msgctxt "view:party.party:" msgctxt "view:party.party:"
msgid "Contract" msgid "Contract"
msgstr "Vertrag" msgstr "Vertrag"
@ -667,3 +855,11 @@ msgstr "OK"
msgctxt "wizard_button:contract.create_invoices,start,end:" msgctxt "wizard_button:contract.create_invoices,start,end:"
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
msgctxt "wizard_button:contract.create_reviews,start,create_reviews:"
msgid "OK"
msgstr "OK"
msgctxt "wizard_button:contract.create_reviews,start,end:"
msgid "Cancel"
msgstr "Abbrechen"

View file

@ -43,8 +43,9 @@ class PartyContractGroupingMethod(CompanyValueMixin, ModelSQL):
party = fields.Many2One( party = fields.Many2One(
'party.party', "Party", ondelete='CASCADE', 'party.party', "Party", ondelete='CASCADE',
context={ context={
'company': Eval('company'), 'company': Eval('company', -1),
}, depends=['company']) },
depends=['company'])
contract_grouping_method = contract_grouping_method contract_grouping_method = contract_grouping_method
@classmethod @classmethod