[IMP] Remove duplicate fields names
This commit is contained in:
@@ -352,7 +352,7 @@ class AccountBankStatementLine(models.Model):
|
||||
name = fields.Char(string='Label', required=True)
|
||||
date = fields.Date(required=True, default=lambda self: self._context.get('date', fields.Date.context_today(self)))
|
||||
amount = fields.Monetary(digits=0, currency_field='journal_currency_id')
|
||||
journal_currency_id = fields.Many2one('res.currency', related='statement_id.currency_id',
|
||||
journal_currency_id = fields.Many2one('res.currency', string="Journal's Currency", related='statement_id.currency_id',
|
||||
help='Utility field to express amount currency', readonly=True)
|
||||
partner_id = fields.Many2one('res.partner', string='Partner')
|
||||
bank_account_id = fields.Many2one('res.partner.bank', string='Bank Account')
|
||||
|
||||
@@ -366,7 +366,7 @@ class AccountInvoice(models.Model):
|
||||
|
||||
#fields use to set the sequence, on the first invoice of the journal
|
||||
sequence_number_next = fields.Char(string='Next Number', compute="_get_sequence_number_next", inverse="_set_sequence_next")
|
||||
sequence_number_next_prefix = fields.Char(string='Next Number', compute="_get_sequence_prefix")
|
||||
sequence_number_next_prefix = fields.Char(string='Next Number Prefix', compute="_get_sequence_prefix")
|
||||
|
||||
_sql_constraints = [
|
||||
('number_uniq', 'unique(number, company_id, journal_id, type)', 'Invoice Number must be unique per Company!'),
|
||||
@@ -1500,9 +1500,9 @@ class AccountInvoiceLine(models.Model):
|
||||
default=_default_account,
|
||||
help="The income or expense account related to the selected product.")
|
||||
price_unit = fields.Float(string='Unit Price', required=True, digits=dp.get_precision('Product Price'))
|
||||
price_subtotal = fields.Monetary(string='Amount',
|
||||
price_subtotal = fields.Monetary(string='Amount (without Taxes)',
|
||||
store=True, readonly=True, compute='_compute_price', help="Total amount without taxes")
|
||||
price_total = fields.Monetary(string='Amount',
|
||||
price_total = fields.Monetary(string='Amount (with Taxes)',
|
||||
store=True, readonly=True, compute='_compute_price', help="Total amount with taxes")
|
||||
price_subtotal_signed = fields.Monetary(string='Amount Signed', currency_field='company_currency_id',
|
||||
store=True, readonly=True, compute='_compute_price',
|
||||
@@ -1696,9 +1696,9 @@ class AccountInvoiceTax(models.Model):
|
||||
tax_id = fields.Many2one('account.tax', string='Tax', ondelete='restrict')
|
||||
account_id = fields.Many2one('account.account', string='Tax Account', required=True, domain=[('deprecated', '=', False)])
|
||||
account_analytic_id = fields.Many2one('account.analytic.account', string='Analytic account')
|
||||
amount = fields.Monetary()
|
||||
amount_rounding = fields.Monetary()
|
||||
amount_total = fields.Monetary(string="Amount", compute='_compute_amount_total')
|
||||
amount = fields.Monetary('Tax Amount')
|
||||
amount_rounding = fields.Monetary('Amount Delta')
|
||||
amount_total = fields.Monetary(string="Amount Total", compute='_compute_amount_total')
|
||||
manual = fields.Boolean(default=True)
|
||||
sequence = fields.Integer(help="Gives the sequence order when displaying a list of invoice tax.")
|
||||
company_id = fields.Many2one('res.company', string='Company', related='account_id.company_id', store=True, readonly=True)
|
||||
|
||||
@@ -1562,9 +1562,9 @@ class AccountPartialReconcile(models.Model):
|
||||
amount = fields.Monetary(currency_field='company_currency_id', help="Amount concerned by this matching. Assumed to be always positive")
|
||||
amount_currency = fields.Monetary(string="Amount in Currency")
|
||||
currency_id = fields.Many2one('res.currency', string='Currency')
|
||||
company_currency_id = fields.Many2one('res.currency', related='company_id.currency_id', readonly=True,
|
||||
company_currency_id = fields.Many2one('res.currency', string="Company Currency", related='company_id.currency_id', readonly=True,
|
||||
help='Utility field to express amount currency')
|
||||
company_id = fields.Many2one('res.company', related='debit_move_id.company_id', store=True, string='Currency')
|
||||
company_id = fields.Many2one('res.company', related='debit_move_id.company_id', store=True, string='Company')
|
||||
full_reconcile_id = fields.Many2one('account.full.reconcile', string="Full Reconcile", copy=False)
|
||||
max_date = fields.Date(string='Max Date of Matched Lines', compute='_compute_max_date',
|
||||
readonly=True, copy=False, store=True,
|
||||
|
||||
@@ -290,7 +290,7 @@ class account_payment(models.Model):
|
||||
invoice_ids = fields.Many2many('account.invoice', 'account_invoice_payment_rel', 'payment_id', 'invoice_id', string="Invoices", copy=False, readonly=True)
|
||||
has_invoices = fields.Boolean(compute="_get_has_invoices", help="Technical field used for usability purposes")
|
||||
payment_difference = fields.Monetary(compute='_compute_payment_difference', readonly=True)
|
||||
payment_difference_handling = fields.Selection([('open', 'Keep open'), ('reconcile', 'Mark invoice as fully paid')], default='open', string="Payment Difference", copy=False)
|
||||
payment_difference_handling = fields.Selection([('open', 'Keep open'), ('reconcile', 'Mark invoice as fully paid')], default='open', string="Payment Difference Handling", copy=False)
|
||||
writeoff_account_id = fields.Many2one('account.account', string="Difference Account", domain=[('deprecated', '=', False)], copy=False)
|
||||
writeoff_label = fields.Char(
|
||||
string='Journal Item Label',
|
||||
|
||||
@@ -380,7 +380,7 @@ class ResPartner(models.Model):
|
||||
groups='account.group_account_invoice')
|
||||
currency_id = fields.Many2one('res.currency', compute='_get_company_currency', readonly=True,
|
||||
string="Currency", help='Utility field to express amount currency')
|
||||
contracts_count = fields.Integer(compute='_compute_contracts_count', string="Contracts", type='integer')
|
||||
contracts_count = fields.Integer(compute='_compute_contracts_count', string="Contracts Count", type='integer')
|
||||
journal_item_count = fields.Integer(compute='_compute_journal_item_count', string="Journal Items", type="integer")
|
||||
property_account_payable_id = fields.Many2one('account.account', company_dependent=True,
|
||||
string="Account Payable", oldname="property_account_payable",
|
||||
|
||||
@@ -28,7 +28,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
module_account_accountant = fields.Boolean(string='Accounting')
|
||||
group_analytic_accounting = fields.Boolean(string='Analytic Accounting',
|
||||
implied_group='analytic.group_analytic_accounting')
|
||||
group_warning_account = fields.Boolean(string="Warnings", implied_group='account.group_warning_account')
|
||||
group_warning_account = fields.Boolean(string="Warnings in Invoices", implied_group='account.group_warning_account')
|
||||
group_cash_rounding = fields.Boolean(string="Cash Rounding", implied_group='account.group_cash_rounding')
|
||||
module_account_asset = fields.Boolean(string='Assets Management')
|
||||
module_account_deferred_revenue = fields.Boolean(string="Revenue Recognition")
|
||||
|
||||
@@ -42,11 +42,11 @@ class AccountInvoiceReport(models.Model):
|
||||
company_id = fields.Many2one('res.company', string='Company', readonly=True)
|
||||
user_id = fields.Many2one('res.users', string='Salesperson', readonly=True)
|
||||
price_total = fields.Float(string='Total Without Tax', readonly=True)
|
||||
user_currency_price_total = fields.Float(string="Total Without Tax", compute='_compute_amounts_in_user_currency', digits=0)
|
||||
user_currency_price_total = fields.Float(string="Total Without Tax in Currency", compute='_compute_amounts_in_user_currency', digits=0)
|
||||
price_average = fields.Float(string='Average Price', readonly=True, group_operator="avg")
|
||||
user_currency_price_average = fields.Float(string="Average Price", compute='_compute_amounts_in_user_currency', digits=0)
|
||||
user_currency_price_average = fields.Float(string="Average Price in Currency", compute='_compute_amounts_in_user_currency', digits=0)
|
||||
currency_rate = fields.Float(string='Currency Rate', readonly=True, group_operator="avg", groups="base.group_multi_currency")
|
||||
nbr = fields.Integer(string='# of Lines', readonly=True) # TDE FIXME master: rename into nbr_lines
|
||||
nbr = fields.Integer(string='Line Count', readonly=True) # TDE FIXME master: rename into nbr_lines
|
||||
type = fields.Selection([
|
||||
('out_invoice', 'Customer Invoice'),
|
||||
('in_invoice', 'Vendor Bill'),
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<field name="name"/>
|
||||
<field name="account_id" groups="account.group_account_user"/>
|
||||
<field name="base"/>
|
||||
<field name="amount_total"/>
|
||||
<field name="amount_total" string="Amount"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -112,7 +112,7 @@
|
||||
<field name="account_id" groups="account.group_account_user"/>
|
||||
<field name="account_analytic_id" domain="[('company_id', '=', parent.company_id)]" groups="analytic.group_analytic_accounting"/>
|
||||
<field name="manual"/>
|
||||
<field name="amount_total"/>
|
||||
<field name="amount_total" string="Amount"/>
|
||||
<field name="base"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</group>
|
||||
@@ -279,7 +279,7 @@
|
||||
<field name="discount" groups="base.group_no_one"/>
|
||||
<field name="invoice_line_tax_ids" widget="many2many_tags" options="{'no_create': True}" context="{'type':parent.type}"
|
||||
domain="[('type_tax_use','=','purchase'),('company_id', '=', parent.company_id)]"/>
|
||||
<field name="price_subtotal"/>
|
||||
<field name="price_subtotal" string="Amount"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -429,7 +429,7 @@
|
||||
<field name="discount" groups="base.group_no_one"/>
|
||||
<field name="invoice_line_tax_ids" widget="many2many_tags" options="{'no_create': True}" context="{'type':parent.type}"
|
||||
domain="[('type_tax_use','=','sale'),('company_id', '=', parent.company_id)]"/>
|
||||
<field name="price_subtotal"/>
|
||||
<field name="price_subtotal" string="Subtotal"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
</tree>
|
||||
<kanban class="o_kanban_mobile">
|
||||
|
||||
@@ -396,7 +396,7 @@
|
||||
<field name="group_warning_account"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_warning_account"/>
|
||||
<label for="group_warning_account" string="Warnings"/>
|
||||
<div class="text-muted">
|
||||
Get warnings when invoicing specific customers
|
||||
</div>
|
||||
|
||||
@@ -20,8 +20,8 @@ class AccountingReport(models.TransientModel):
|
||||
account_report_id = fields.Many2one('account.financial.report', string='Account Reports', required=True, default=_get_account_report)
|
||||
label_filter = fields.Char(string='Column Label', help="This label will be displayed on report to show the balance computed for the given comparison filter.")
|
||||
filter_cmp = fields.Selection([('filter_no', 'No Filters'), ('filter_date', 'Date')], string='Filter by', required=True, default='filter_no')
|
||||
date_from_cmp = fields.Date(string='Start Date')
|
||||
date_to_cmp = fields.Date(string='End Date')
|
||||
date_from_cmp = fields.Date(string='Start Date Comparison')
|
||||
date_to_cmp = fields.Date(string='End Date Comparison')
|
||||
debit_credit = fields.Boolean(string='Display Debit/Credit Columns', help="This option allows you to get more details about the way your balances are computed. Because it is space consuming, we do not allow to use it while doing a comparison.")
|
||||
|
||||
def _build_comparison_context(self, data):
|
||||
|
||||
@@ -9,7 +9,7 @@ class AccountMoveLineReconcile(models.TransientModel):
|
||||
_name = 'account.move.line.reconcile'
|
||||
_description = 'Account move line reconcile'
|
||||
|
||||
trans_nbr = fields.Integer(string='# of Transaction', readonly=True)
|
||||
trans_nbr = fields.Integer(string='Transaction Count', readonly=True)
|
||||
credit = fields.Float(string='Credit amount', readonly=True, digits=0)
|
||||
debit = fields.Float(string='Debit amount', readonly=True, digits=0)
|
||||
writeoff = fields.Float(string='Write-Off amount', readonly=True, digits=0)
|
||||
|
||||
@@ -18,8 +18,8 @@ class AssetAssetReport(models.Model):
|
||||
depreciation_value = fields.Float(string='Amount of Depreciation Lines', readonly=True)
|
||||
installment_value = fields.Float(string='Amount of Installment Lines', readonly=True)
|
||||
move_check = fields.Boolean(string='Posted', readonly=True)
|
||||
installment_nbr = fields.Integer(string='# of Installment Lines', readonly=True)
|
||||
depreciation_nbr = fields.Integer(string='# of Depreciation Lines', readonly=True)
|
||||
installment_nbr = fields.Integer(string='Installment Count', readonly=True)
|
||||
depreciation_nbr = fields.Integer(string='Depreciation Count', readonly=True)
|
||||
gross_value = fields.Float(string='Gross Amount', readonly=True)
|
||||
posted_value = fields.Float(string='Posted Amount', readonly=True)
|
||||
unposted_value = fields.Float(string='Unposted Amount', readonly=True)
|
||||
|
||||
@@ -144,5 +144,5 @@ class IrModelFieldsAnonymizationMigrationFix(models.Model):
|
||||
model_name = fields.Char('Model')
|
||||
field_name = fields.Char('Field')
|
||||
query = fields.Text()
|
||||
query_type = fields.Selection(selection=[('sql', 'sql'), ('python', 'python')], string='Query')
|
||||
query_type = fields.Selection(selection=[('sql', 'sql'), ('python', 'python')], string='Query Type')
|
||||
sequence = fields.Integer()
|
||||
|
||||
@@ -9,7 +9,7 @@ class Partner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
country_enforce_cities = fields.Boolean(related='country_id.enforce_cities')
|
||||
city_id = fields.Many2one('res.city', string='City')
|
||||
city_id = fields.Many2one('res.city', string='City of Address')
|
||||
|
||||
@api.onchange('city_id')
|
||||
def _onchange_city_id(self):
|
||||
@@ -29,7 +29,7 @@ class Partner(models.Model):
|
||||
<div>
|
||||
<field name="country_enforce_cities" invisible="1"/>
|
||||
<field name='city' attrs="{'invisible': [('country_enforce_cities', '=', True), ('city_id', '!=', False)], 'readonly': [('type', '=', 'contact'), ('parent_id', '!=', False)]}"/>
|
||||
<field name='city_id' attrs="{'invisible': [('country_enforce_cities', '=', False)], 'readonly': [('type', '=', 'contact'), ('parent_id', '!=', False)]}" context="{'default_country_id': country_id}" domain="[('country_id', '=', country_id)]"/>
|
||||
<field name='city_id' attrs="{'invisible': [('country_enforce_cities', '=', False)], 'readonly': [('type', '=', 'contact'), ('parent_id', '!=', False)]}" context="{'default_country_id': country_id}" domain="[('country_id', '=', country_id)]" string="City"/>
|
||||
</div>
|
||||
"""
|
||||
city_id_node = etree.fromstring(replacement_xml)
|
||||
|
||||
@@ -28,7 +28,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
help="Share your partners to all companies defined in your instance.\n"
|
||||
" * Checked : Partners are visible for every companies, even if a company is defined on the partner.\n"
|
||||
" * Unchecked : Each company can see only its partner (partners where company is defined). Partners not related to a company are visible for all companies.")
|
||||
default_custom_report_footer = fields.Boolean("Custom Report Footer")
|
||||
default_custom_report_footer = fields.Boolean("Default Custom Report Footer")
|
||||
report_footer = fields.Text(related="company_id.report_footer", string='Custom Report Footer', help="Footer text displayed at the bottom of all reports.")
|
||||
group_multi_currency = fields.Boolean(string='Multi-Currencies',
|
||||
implied_group='base.group_multi_currency',
|
||||
|
||||
@@ -116,7 +116,7 @@ class ResPartner(models.Model):
|
||||
vat = country_code + vat
|
||||
return vat
|
||||
|
||||
@api.constrains('vat', 'commercial_partner_country_id')
|
||||
@api.constrains('vat')
|
||||
def check_vat(self):
|
||||
if self.env.context.get('company_id'):
|
||||
company = self.env['res.company'].browse(self.env.context['company_id'])
|
||||
|
||||
@@ -816,7 +816,7 @@ class Meeting(models.Model):
|
||||
('-1', 'Last')
|
||||
], string='By day')
|
||||
final_date = fields.Date('Repeat Until')
|
||||
user_id = fields.Many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}, default=lambda self: self.env.user)
|
||||
user_id = fields.Many2one('res.users', 'Owner', states={'done': [('readonly', True)]}, default=lambda self: self.env.user)
|
||||
partner_id = fields.Many2one('res.partner', string='Responsible', related='user_id.partner_id', readonly=True)
|
||||
active = fields.Boolean('Active', default=True, help="If the active field is set to false, it will allow you to hide the event alarm information without removing it.")
|
||||
categ_ids = fields.Many2many('calendar.event.type', 'meeting_category_rel', 'event_id', 'type_id', 'Tags')
|
||||
|
||||
@@ -72,7 +72,7 @@ class Lead(models.Model):
|
||||
team_id = fields.Many2one('crm.team', string='Sales Channel', oldname='section_id', default=lambda self: self.env['crm.team'].sudo()._get_default_team_id(user_id=self.env.uid),
|
||||
index=True, track_visibility='onchange', help='When sending mails, the default email address is taken from the sales channel.')
|
||||
kanban_state = fields.Selection([('grey', 'No next activity planned'), ('red', 'Next activity late'), ('green', 'Next activity is planned')],
|
||||
string='Activity State', compute='_compute_kanban_state')
|
||||
string='Kanban State', compute='_compute_kanban_state')
|
||||
email_cc = fields.Text('Global CC', help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma")
|
||||
description = fields.Text('Notes')
|
||||
create_date = fields.Datetime('Create Date', readonly=True)
|
||||
|
||||
@@ -23,7 +23,7 @@ class Team(models.Model):
|
||||
string='Number of open opportunities', readonly=True)
|
||||
opportunities_amount = fields.Integer(
|
||||
compute='_compute_opportunities',
|
||||
string='Amount of quotations to invoice', readonly=True)
|
||||
string='Opportunities Revenues', readonly=True)
|
||||
dashboard_graph_model = fields.Selection(selection_add=[('crm.opportunity.report', 'Pipeline')])
|
||||
dashboard_graph_period_pipeline = fields.Selection([
|
||||
('week', 'Within a Week'),
|
||||
@@ -37,7 +37,7 @@ class Team(models.Model):
|
||||
('month', 'Expected Closing Month'),
|
||||
('user', 'Salesperson'),
|
||||
('stage', 'Stage'),
|
||||
], string='Group by', default='day', help="How this channel's dashboard graph will group the results.")
|
||||
], string='Grouping Method', default='day', help="How this channel's dashboard graph will group the results.")
|
||||
|
||||
def _compute_unassigned_leads_count(self):
|
||||
leads_data = self.env['crm.lead'].read_group([
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<field name="is_ssl"/>
|
||||
<field name="object_id"/>
|
||||
<field name="date"/>
|
||||
<field name="message_ids" string="# of emails"/>
|
||||
<field name="message_ids" string="Email Count"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -27,9 +27,9 @@ class FleetVehicle(models.Model):
|
||||
log_services = fields.One2many('fleet.vehicle.log.services', 'vehicle_id', 'Services Logs')
|
||||
log_contracts = fields.One2many('fleet.vehicle.log.contract', 'vehicle_id', 'Contracts')
|
||||
cost_count = fields.Integer(compute="_compute_count_all", string="Costs")
|
||||
contract_count = fields.Integer(compute="_compute_count_all", string='Contracts')
|
||||
contract_count = fields.Integer(compute="_compute_count_all", string='Contract Count')
|
||||
service_count = fields.Integer(compute="_compute_count_all", string='Services')
|
||||
fuel_logs_count = fields.Integer(compute="_compute_count_all", string='Fuel Logs')
|
||||
fuel_logs_count = fields.Integer(compute="_compute_count_all", string='Fuel Log Count')
|
||||
odometer_count = fields.Integer(compute="_compute_count_all", string='Odometer')
|
||||
acquisition_date = fields.Date('Immatriculation Date', required=False, help='Date when the vehicle has been immatriculated')
|
||||
color = fields.Char(help='Color of the vehicle')
|
||||
|
||||
@@ -7,4 +7,4 @@ from odoo import fields, models
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = "res.config.settings"
|
||||
|
||||
google_drive_uri_copy = fields.Char(related='google_drive_uri', string='URI', help="The URL to generate the authorization code from Google")
|
||||
google_drive_uri_copy = fields.Char(related='google_drive_uri', string='URI Copy', help="The URL to generate the authorization code from Google")
|
||||
|
||||
@@ -25,7 +25,7 @@ class HrEmployee(models.Model):
|
||||
|
||||
attendance_ids = fields.One2many('hr.attendance', 'employee_id', help='list of attendances for the employee')
|
||||
last_attendance_id = fields.Many2one('hr.attendance', compute='_compute_last_attendance_id', store=True)
|
||||
attendance_state = fields.Selection(string="Attendance", compute='_compute_attendance_state', selection=[('checked_out', "Checked out"), ('checked_in', "Checked in")])
|
||||
attendance_state = fields.Selection(string="Attendance Status", compute='_compute_attendance_state', selection=[('checked_out', "Checked out"), ('checked_in', "Checked in")])
|
||||
manual_attendance = fields.Boolean(string='Manual Attendance', compute='_compute_manual_attendance', inverse='_inverse_manual_attendance',
|
||||
help='The employee will have access to the "My Attendances" menu to check in and out from his session')
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class Employee(models.Model):
|
||||
string='Home-Work Dist.', help="In kilometers", groups="hr.group_hr_user")
|
||||
contract_ids = fields.One2many('hr.contract', 'employee_id', string='Contracts')
|
||||
contract_id = fields.Many2one('hr.contract', compute='_compute_contract_id', string='Current Contract', help='Latest contract of the employee')
|
||||
contracts_count = fields.Integer(compute='_compute_contracts_count', string='Contracts')
|
||||
contracts_count = fields.Integer(compute='_compute_contracts_count', string='Contract Count')
|
||||
|
||||
def _compute_contract_id(self):
|
||||
""" get the lastest contract """
|
||||
|
||||
@@ -14,6 +14,7 @@ class HrExpenseRegisterPaymentWizard(models.TransientModel):
|
||||
"you can manage the numbering in the journal configuration page.")
|
||||
payment_method_code_2 = fields.Char(related='payment_method_id.code',
|
||||
help="Technical field used to adapt the interface to the payment type selected.",
|
||||
string="Payment Method Code 2",
|
||||
readonly=True)
|
||||
|
||||
@api.onchange('journal_id')
|
||||
|
||||
@@ -9,7 +9,7 @@ class HrEmployee(models.Model):
|
||||
_description = 'Employee'
|
||||
|
||||
slip_ids = fields.One2many('hr.payslip', 'employee_id', string='Payslips', readonly=True)
|
||||
payslip_count = fields.Integer(compute='_compute_payslip_count', string='Payslips', groups="hr_payroll.group_hr_payroll_user")
|
||||
payslip_count = fields.Integer(compute='_compute_payslip_count', string='Payslip Count', groups="hr_payroll.group_hr_payroll_user")
|
||||
|
||||
@api.multi
|
||||
def _compute_payslip_count(self):
|
||||
|
||||
@@ -15,15 +15,15 @@ class Job(models.Model):
|
||||
'res.partner', "Job Location", default=_default_address_id,
|
||||
help="Address where employees are working")
|
||||
application_ids = fields.One2many('hr.applicant', 'job_id', "Applications")
|
||||
application_count = fields.Integer(compute='_compute_application_count', string="Applications")
|
||||
application_count = fields.Integer(compute='_compute_application_count', string="Application Count")
|
||||
manager_id = fields.Many2one(
|
||||
'hr.employee', related='department_id.manager_id', string="Department Manager",
|
||||
readonly=True, store=True)
|
||||
user_id = fields.Many2one('res.users', "Recruitment Responsible", track_visibility='onchange')
|
||||
hr_responsible_id = fields.Many2one('res.users', "HR Responsible", track_visibility='onchange',
|
||||
help="Person responsible of validating the employee's contracts.")
|
||||
document_ids = fields.One2many('ir.attachment', compute='_compute_document_ids', string="Applications")
|
||||
documents_count = fields.Integer(compute='_compute_document_ids', string="Documents")
|
||||
document_ids = fields.One2many('ir.attachment', compute='_compute_document_ids', string="Documents")
|
||||
documents_count = fields.Integer(compute='_compute_document_ids', string="Document Count")
|
||||
alias_id = fields.Many2one(
|
||||
'mail.alias', "Alias", ondelete="restrict", required=True,
|
||||
help="Email alias for this job position. New emails will automatically create new applicants for this job position.")
|
||||
|
||||
@@ -36,7 +36,7 @@ class HrContract(models.Model):
|
||||
company_car_total_depreciated_cost = fields.Monetary()
|
||||
public_transport_reimbursed_amount = fields.Monetary(string='Reimbursed amount',
|
||||
compute='_compute_public_transport_reimbursed_amount', readonly=False, store=True)
|
||||
others_reimbursed_amount = fields.Monetary(string='Reimbursed amount')
|
||||
others_reimbursed_amount = fields.Monetary(string='Other Reimbursed amount')
|
||||
transport_employer_cost = fields.Monetary(compute='_compute_transport_employer_cost', string="Employer cost from employee transports")
|
||||
warrants_cost = fields.Monetary(compute='_compute_warrants_cost')
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ class AccountInvoice(models.Model):
|
||||
l10n_ch_isr_valid = fields.Boolean(compute='_compute_l10n_ch_isr_valid', help='Boolean value. True iff all the data required to generate the ISR are present')
|
||||
|
||||
l10n_ch_isr_sent = fields.Boolean(defaut=False, help="Boolean value telling whether or not the ISR corresponding to this invoice has already been printed or sent by mail.")
|
||||
l10n_ch_currency_name = fields.Char(related='currency_id.name', help="The name of this invoice's currency") #This field is used in the "invisible" condition field of the 'Print ISR' button.
|
||||
l10n_ch_currency_name = fields.Char(related='currency_id.name', string="Currency Name", help="The name of this invoice's currency") #This field is used in the "invisible" condition field of the 'Print ISR' button.
|
||||
|
||||
@api.depends('partner_bank_id.bank_id.l10n_ch_postal_eur', 'partner_bank_id.bank_id.l10n_ch_postal_chf')
|
||||
def _compute_l10n_ch_isr_postal(self):
|
||||
|
||||
@@ -70,7 +70,7 @@ class MailActivity(models.Model):
|
||||
# owner
|
||||
res_id = fields.Integer('Related Document ID', index=True, required=True)
|
||||
res_model_id = fields.Many2one(
|
||||
'ir.model', 'Related Document Model',
|
||||
'ir.model', 'Document Model',
|
||||
index=True, ondelete='cascade', required=True)
|
||||
res_model = fields.Char(
|
||||
'Related Document Model',
|
||||
@@ -299,13 +299,13 @@ class MailActivityMixin(models.AbstractModel):
|
||||
activity_state = fields.Selection([
|
||||
('overdue', 'Overdue'),
|
||||
('today', 'Today'),
|
||||
('planned', 'Planned')], string='State',
|
||||
('planned', 'Planned')], string='Activity State',
|
||||
compute='_compute_activity_state',
|
||||
groups="base.group_user",
|
||||
help='Status based on activities\nOverdue: Due date is already passed\n'
|
||||
'Today: Activity date is today\nPlanned: Future activities.')
|
||||
activity_user_id = fields.Many2one(
|
||||
'res.users', 'Responsible',
|
||||
'res.users', 'Responsible User',
|
||||
related='activity_ids.user_id',
|
||||
search='_search_activity_user_id',
|
||||
groups="base.group_user")
|
||||
|
||||
@@ -37,7 +37,7 @@ class MaintenanceEquipmentCategory(models.Model):
|
||||
equipment_ids = fields.One2many('maintenance.equipment', 'category_id', string='Equipments', copy=False)
|
||||
equipment_count = fields.Integer(string="Equipment", compute='_compute_equipment_count')
|
||||
maintenance_ids = fields.One2many('maintenance.request', 'category_id', copy=False)
|
||||
maintenance_count = fields.Integer(string="Maintenance", compute='_compute_maintenance_count')
|
||||
maintenance_count = fields.Integer(string="Maintenance Count", compute='_compute_maintenance_count')
|
||||
alias_id = fields.Many2one(
|
||||
'mail.alias', 'Alias', ondelete='restrict', required=True,
|
||||
help="Email alias for this equipment category. New emails will automatically "
|
||||
@@ -137,7 +137,7 @@ class MaintenanceEquipment(models.Model):
|
||||
color = fields.Integer('Color Index')
|
||||
scrap_date = fields.Date('Scrap Date')
|
||||
maintenance_ids = fields.One2many('maintenance.request', 'equipment_id')
|
||||
maintenance_count = fields.Integer(compute='_compute_maintenance_count', string="Maintenance", store=True)
|
||||
maintenance_count = fields.Integer(compute='_compute_maintenance_count', string="Maintenance Count", store=True)
|
||||
maintenance_open_count = fields.Integer(compute='_compute_maintenance_count', string="Current Maintenance", store=True)
|
||||
period = fields.Integer('Days between each preventive maintenance')
|
||||
next_action_date = fields.Date(compute='_compute_next_maintenance', string='Date of the next preventive maintenance', store=True)
|
||||
@@ -275,7 +275,7 @@ class MaintenanceRequest(models.Model):
|
||||
description = fields.Text('Description')
|
||||
request_date = fields.Date('Request Date', track_visibility='onchange', default=fields.Date.context_today,
|
||||
help="Date requested for the maintenance to happen")
|
||||
owner_user_id = fields.Many2one('res.users', string='Created by', default=lambda s: s.env.uid)
|
||||
owner_user_id = fields.Many2one('res.users', string='Created by User', default=lambda s: s.env.uid)
|
||||
category_id = fields.Many2one('maintenance.equipment.category', related='equipment_id.category_id', string='Category', store=True, readonly=True)
|
||||
equipment_id = fields.Many2one('maintenance.equipment', string='Equipment', index=True)
|
||||
technician_user_id = fields.Many2one('res.users', string='Owner', track_visibility='onchange', oldname='user_id')
|
||||
|
||||
@@ -10,7 +10,7 @@ class MailComposeMessage(models.TransientModel):
|
||||
|
||||
mass_mailing_campaign_id = fields.Many2one('mail.mass_mailing.campaign', string='Mass Mailing Campaign')
|
||||
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing', ondelete='cascade')
|
||||
mass_mailing_name = fields.Char(string='Mass Mailing')
|
||||
mass_mailing_name = fields.Char(string='Mass Mailing Name')
|
||||
mailing_list_ids = fields.Many2many('mail.mass_mailing.list', string='Mailing List')
|
||||
|
||||
@api.multi
|
||||
|
||||
@@ -36,14 +36,14 @@ class MrpWorkcenter(models.Model):
|
||||
workorder_count = fields.Integer('# Work Orders', compute='_compute_workorder_count')
|
||||
workorder_ready_count = fields.Integer('# Read Work Orders', compute='_compute_workorder_count')
|
||||
workorder_progress_count = fields.Integer('Total Running Orders', compute='_compute_workorder_count')
|
||||
workorder_pending_count = fields.Integer('Total Running Orders', compute='_compute_workorder_count')
|
||||
workorder_pending_count = fields.Integer('Total Pending Orders', compute='_compute_workorder_count')
|
||||
workorder_late_count = fields.Integer('Total Late Orders', compute='_compute_workorder_count')
|
||||
|
||||
time_ids = fields.One2many('mrp.workcenter.productivity', 'workcenter_id', 'Time Logs')
|
||||
working_state = fields.Selection([
|
||||
('normal', 'Normal'),
|
||||
('blocked', 'Blocked'),
|
||||
('done', 'In Progress')], 'Status', compute="_compute_working_state", store=True)
|
||||
('done', 'In Progress')], 'Workcenter Status', compute="_compute_working_state", store=True)
|
||||
blocked_time = fields.Float(
|
||||
'Blocked Time', compute='_compute_blocked_time',
|
||||
help='Blocked hour(s) over the last month', digits=(16, 2))
|
||||
|
||||
@@ -113,7 +113,6 @@ class MrpWorkorder(models.Model):
|
||||
final_lot_id = fields.Many2one(
|
||||
'stock.production.lot', 'Lot/Serial Number', domain="[('product_id', '=', product_id)]",
|
||||
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]})
|
||||
tracking = fields.Selection(related='production_id.product_id.tracking')
|
||||
time_ids = fields.One2many(
|
||||
'mrp.workcenter.productivity', 'workorder_id')
|
||||
is_user_working = fields.Boolean(
|
||||
|
||||
@@ -16,7 +16,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
module_mrp_workorder = fields.Boolean("Work Orders")
|
||||
module_mrp_repair = fields.Boolean("Repair")
|
||||
module_quality_control = fields.Boolean("Quality")
|
||||
group_mrp_routings = fields.Boolean("Work Orders",
|
||||
group_mrp_routings = fields.Boolean("MRP Work Orders",
|
||||
implied_group='mrp.group_mrp_routings')
|
||||
|
||||
@api.model
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<field name="module_mrp_workorder" invisible="1"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_mrp_routings"/>
|
||||
<label for="group_mrp_routings" string="Work Orders"/>
|
||||
<div class="text-muted">
|
||||
Process operations at specific work centers based on the routing
|
||||
</div>
|
||||
|
||||
@@ -864,7 +864,7 @@ class PosOrderLine(models.Model):
|
||||
order_id = fields.Many2one('pos.order', string='Order Ref', ondelete='cascade')
|
||||
create_date = fields.Datetime(string='Creation Date', readonly=True)
|
||||
tax_ids = fields.Many2many('account.tax', string='Taxes', readonly=True)
|
||||
tax_ids_after_fiscal_position = fields.Many2many('account.tax', compute='_get_tax_ids_after_fiscal_position', string='Taxes')
|
||||
tax_ids_after_fiscal_position = fields.Many2many('account.tax', compute='_get_tax_ids_after_fiscal_position', string='Taxes to Apply')
|
||||
pack_lot_ids = fields.One2many('pos.pack.operation.lot', 'pos_order_line_id', string='Lot/serial Number')
|
||||
|
||||
@api.model
|
||||
|
||||
@@ -26,7 +26,7 @@ class PosOrderReport(models.Model):
|
||||
average_price = fields.Float(string='Average Price', readonly=True, group_operator="avg")
|
||||
location_id = fields.Many2one('stock.location', string='Location', readonly=True)
|
||||
company_id = fields.Many2one('res.company', string='Company', readonly=True)
|
||||
nbr_lines = fields.Integer(string='# of Lines', readonly=True, oldname='nbr')
|
||||
nbr_lines = fields.Integer(string='Sale Line Count', readonly=True, oldname='nbr')
|
||||
product_qty = fields.Integer(string='Product Quantity', readonly=True)
|
||||
journal_id = fields.Many2one('account.journal', string='Journal')
|
||||
delay_validation = fields.Integer(string='Delay Validation')
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<field name="qty"/>
|
||||
<field name="price_unit" widget="monetary"/>
|
||||
<field name="discount" widget="monetary"/>
|
||||
<field name="tax_ids_after_fiscal_position" widget="many2many_tags"/>
|
||||
<field name="tax_ids_after_fiscal_position" widget="many2many_tags" string="Taxes"/>
|
||||
<field name="tax_ids" widget="many2many_tags" invisible="1"/>
|
||||
<field name="price_subtotal" widget="monetary"/>
|
||||
<field name="price_subtotal_incl" widget="monetary"/>
|
||||
@@ -50,7 +50,7 @@
|
||||
<field name="price_unit" widget="monetary"/>
|
||||
<field name="price_subtotal" invisible="1" widget="monetary"/>
|
||||
<field name="price_subtotal_incl" invisible="1" widget="monetary"/>
|
||||
<field name="tax_ids_after_fiscal_position" widget="many2many_tags"/>
|
||||
<field name="tax_ids_after_fiscal_position" widget="many2many_tags" string="Taxes"/>
|
||||
<field name="tax_ids" widget="many2many_tags" invisible="1"/>
|
||||
<field name="notice"/>
|
||||
</group>
|
||||
|
||||
@@ -28,7 +28,7 @@ class AccountBankStatementLine(models.Model):
|
||||
_inherit = "account.bank.statement.line"
|
||||
|
||||
mercury_card_number = fields.Char(string='Card Number', help='The last 4 numbers of the card used to pay')
|
||||
mercury_prefixed_card_number = fields.Char(string='Card Number', compute='_compute_prefixed_card_number', help='The card number used for the payment.')
|
||||
mercury_prefixed_card_number = fields.Char(string='Card Number Prefix', compute='_compute_prefixed_card_number', help='The card number used for the payment.')
|
||||
mercury_card_brand = fields.Char(string='Card Brand', help='The brand of the payment card (e.g. Visa, AMEX, ...)')
|
||||
mercury_card_owner_name = fields.Char(string='Card Owner Name', help='The name of the card owner')
|
||||
mercury_ref_no = fields.Char(string='Mercury reference number', help='Payment reference number from Mercury Pay')
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
<field name="inherit_id" ref="point_of_sale.view_pos_pos_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='amount']" position="before">
|
||||
<field name="mercury_prefixed_card_number"/>
|
||||
<field name="mercury_prefixed_card_number" string="Card Number"/>
|
||||
<field name="mercury_card_brand"/>
|
||||
<field name="mercury_card_owner_name"/>
|
||||
</xpath>
|
||||
|
||||
@@ -13,7 +13,7 @@ class PosConfig(models.Model):
|
||||
floor_ids = fields.One2many('restaurant.floor', 'pos_config_id', string='Restaurant Floors', help='The restaurant floors served by this point of sale.')
|
||||
printer_ids = fields.Many2many('restaurant.printer', 'pos_config_printer_rel', 'config_id', 'printer_id', string='Order Printers')
|
||||
is_table_management = fields.Boolean('Table Management')
|
||||
is_order_printer = fields.Boolean('Order Printers')
|
||||
is_order_printer = fields.Boolean('Order Printer')
|
||||
module_pos_restaurant = fields.Boolean(default=True)
|
||||
|
||||
@api.onchange('iface_tipproduct')
|
||||
|
||||
@@ -18,7 +18,7 @@ class CrmTeam(models.Model):
|
||||
('month', 'Month'),
|
||||
('user', 'Salesperson'),
|
||||
('pos', 'Point of Sale'),
|
||||
], string='Group by', default='day', help="How this channel's dashboard graph will group the results.")
|
||||
], string='POS Grouping', default='day', help="How this channel's dashboard graph will group the results.")
|
||||
|
||||
@api.onchange('dashboard_graph_group_pos')
|
||||
def _onchange_dashboard_graph_group_pos(self):
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<attribute name="attrs">{'invisible': ['|', ('dashboard_graph_model', '=', 'crm.opportunity.report'), ('team_type', '=', 'pos')]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='dashboard_graph_group']" position="after">
|
||||
<field name="dashboard_graph_group_pos" attrs="{'invisible': [('team_type', '!=', 'pos')]}"/>
|
||||
<field name="dashboard_graph_group_pos" string="Group by" attrs="{'invisible': [('team_type', '!=', 'pos')]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="default_code"/>
|
||||
<field name="name"/>
|
||||
<field name="list_price"/>
|
||||
<field name="list_price" string="Sales Price"/>
|
||||
<field name="standard_price"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="type"/>
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<field name="categ_id" string="Product Category"/>
|
||||
</group>
|
||||
<group name="group_standard_price">
|
||||
<field name="list_price" widget='monetary' options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="list_price" string="Sales Price" widget='monetary' options="{'currency_field': 'currency_id'}"/>
|
||||
<field name="company_id" groups="base.group_multi_company"
|
||||
options="{'no_create': True}"/>
|
||||
<field name="uom_id" groups="product.group_uom" options="{'no_create': True}"/>
|
||||
|
||||
@@ -17,9 +17,9 @@ class ProductProduct(models.Model):
|
||||
('open_paid', 'Open and Paid'),
|
||||
('draft_open_paid', 'Draft, Open and Paid')
|
||||
], string='Invoice State', readonly=True)
|
||||
sale_avg_price = fields.Float(compute='_compute_product_margin_fields_values', string='Avg. Unit Price',
|
||||
sale_avg_price = fields.Float(compute='_compute_product_margin_fields_values', string='Avg. Sale Unit Price',
|
||||
help="Avg. Price in Customer Invoices.")
|
||||
purchase_avg_price = fields.Float(compute='_compute_product_margin_fields_values', string='Avg. Unit Price',
|
||||
purchase_avg_price = fields.Float(compute='_compute_product_margin_fields_values', string='Avg. Purchase Unit Price',
|
||||
help="Avg. Price in Vendor Bills ")
|
||||
sale_num_invoiced = fields.Float(compute='_compute_product_margin_fields_values', string='# Invoiced in Sale',
|
||||
help="Sum of Quantity in Customer Invoices")
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<field name="invoice_state" />
|
||||
|
||||
<separator string="Sales" colspan="4"/>
|
||||
<field name="sale_avg_price"/>
|
||||
<field name="sale_avg_price" string="Avg. Unit Price"/>
|
||||
<field name="list_price" string="Catalog Price" readonly="1"/>
|
||||
<field name="sale_num_invoiced" />
|
||||
<field name="sales_gap" />
|
||||
@@ -39,7 +39,7 @@
|
||||
<field name="sale_expected" />
|
||||
|
||||
<separator string="Purchases" colspan="4"/>
|
||||
<field name="purchase_avg_price"/>
|
||||
<field name="purchase_avg_price" string="Avg. Unit Price"/>
|
||||
<field name="standard_price" string="Standard Price" readonly="1"/>
|
||||
<field name="purchase_num_invoiced" />
|
||||
<field name="purchase_gap" />
|
||||
|
||||
@@ -197,8 +197,8 @@ class Project(models.Model):
|
||||
default=lambda self: self.env.user.company_id.resource_calendar_id.id,
|
||||
help="Timetable working hours to adjust the gantt diagram report")
|
||||
type_ids = fields.Many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', string='Tasks Stages')
|
||||
task_count = fields.Integer(compute='_compute_task_count', string="Tasks")
|
||||
task_needaction_count = fields.Integer(compute='_compute_task_needaction_count', string="Tasks")
|
||||
task_count = fields.Integer(compute='_compute_task_count', string="Task Count")
|
||||
task_needaction_count = fields.Integer(compute='_compute_task_needaction_count', string="Task Activitie Count")
|
||||
task_ids = fields.One2many('project.task', 'project_id', string='Tasks',
|
||||
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)])
|
||||
color = fields.Integer(string='Color Index')
|
||||
@@ -482,7 +482,7 @@ class Task(models.Model):
|
||||
('done', 'Green'),
|
||||
('blocked', 'Red')], string='Kanban State',
|
||||
copy=False, default='normal', required=True)
|
||||
kanban_state_label = fields.Char(compute='_compute_kanban_state_label', string='Kanban State', track_visibility='onchange')
|
||||
kanban_state_label = fields.Char(compute='_compute_kanban_state_label', string='Kanban State Label', track_visibility='onchange')
|
||||
create_date = fields.Datetime(index=True)
|
||||
write_date = fields.Datetime(index=True) #not displayed in the view but it might be useful with base_automation module (and it needs to be defined first for that)
|
||||
date_start = fields.Datetime(string='Starting Date',
|
||||
|
||||
@@ -130,7 +130,7 @@ class PurchaseOrder(models.Model):
|
||||
order_line = fields.One2many('purchase.order.line', 'order_id', string='Order Lines', states={'cancel': [('readonly', True)], 'done': [('readonly', True)]}, copy=True)
|
||||
notes = fields.Text('Terms and Conditions')
|
||||
|
||||
invoice_count = fields.Integer(compute="_compute_invoice", string='# of Bills', copy=False, default=0, store=True)
|
||||
invoice_count = fields.Integer(compute="_compute_invoice", string='Bill Count', copy=False, default=0, store=True)
|
||||
invoice_ids = fields.Many2many('account.invoice', compute="_compute_invoice", string='Bills', copy=False, store=True)
|
||||
invoice_status = fields.Selection([
|
||||
('no', 'Nothing to Bill'),
|
||||
@@ -138,7 +138,7 @@ class PurchaseOrder(models.Model):
|
||||
('invoiced', 'No Bill to Receive'),
|
||||
], string='Billing Status', compute='_get_invoiced', store=True, readonly=True, copy=False, default='no')
|
||||
|
||||
picking_count = fields.Integer(compute='_compute_picking', string='Receptions', default=0, store=True)
|
||||
picking_count = fields.Integer(compute='_compute_picking', string='Picking count', default=0, store=True)
|
||||
picking_ids = fields.Many2many('stock.picking', compute='_compute_picking', string='Receptions', copy=False, store=True)
|
||||
|
||||
# There is no inverse function on purpose since the date may be different on each line
|
||||
|
||||
@@ -12,7 +12,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
po_order_approval = fields.Boolean("Order Approval", default=lambda self: self.env.user.company_id.po_double_validation == 'two_step')
|
||||
po_double_validation = fields.Selection(related='company_id.po_double_validation', string="Levels of Approvals *")
|
||||
po_double_validation_amount = fields.Monetary(related='company_id.po_double_validation_amount', string="Minimum Amount", currency_field='company_currency_id')
|
||||
company_currency_id = fields.Many2one('res.currency', related='company_id.currency_id', readonly=True,
|
||||
company_currency_id = fields.Many2one('res.currency', related='company_id.currency_id', string="Company Currency", readonly=True,
|
||||
help='Utility field to express amount currency')
|
||||
default_purchase_method = fields.Selection([
|
||||
('purchase', 'Ordered quantities'),
|
||||
@@ -21,7 +21,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
help="This default value is applied to any new product created. "
|
||||
"This can be changed in the product detail form.", default="receive")
|
||||
module_purchase_requisition = fields.Boolean("Purchase Agreements")
|
||||
group_warning_purchase = fields.Boolean("Warnings", implied_group='purchase.group_warning_purchase')
|
||||
group_warning_purchase = fields.Boolean("Purchase Warnings", implied_group='purchase.group_warning_purchase')
|
||||
module_stock_dropshipping = fields.Boolean("Dropshipping")
|
||||
group_manage_vendor_price = fields.Boolean("Vendor Pricelists",
|
||||
implied_group="purchase.group_manage_vendor_price")
|
||||
|
||||
@@ -24,7 +24,7 @@ class res_partner(models.Model):
|
||||
property_purchase_currency_id = fields.Many2one(
|
||||
'res.currency', string="Supplier Currency", company_dependent=True,
|
||||
help="This currency will be used, instead of the default one, for purchases from the current partner")
|
||||
purchase_order_count = fields.Integer(compute='_purchase_invoice_count', string='# of Purchase Order')
|
||||
purchase_order_count = fields.Integer(compute='_purchase_invoice_count', string='Purchase Order Count')
|
||||
supplier_invoice_count = fields.Integer(compute='_purchase_invoice_count', string='# Vendor Bills')
|
||||
purchase_warn = fields.Selection(WARNING_MESSAGE, 'Purchase Order', help=WARNING_HELP, required=True, default="no-message")
|
||||
purchase_warn_msg = fields.Text('Message for Purchase Order')
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<field name="group_warning_purchase"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_warning_purchase"/>
|
||||
<label for="group_warning_purchase" string="Warnings"/>
|
||||
<div class="text-muted">
|
||||
Get warnings in orders for products or vendors
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@ class Rating(models.Model):
|
||||
parent_res_id = fields.Integer('Parent Document', index=True)
|
||||
rated_partner_id = fields.Many2one('res.partner', string="Rated person", help="Owner of the rated resource")
|
||||
partner_id = fields.Many2one('res.partner', string='Customer', help="Author of the rating")
|
||||
rating = fields.Float(string="Rating", group_operator="avg", default=0, help="Rating value: 0=Unhappy, 10=Happy")
|
||||
rating = fields.Float(string="Rating Number", group_operator="avg", default=0, help="Rating value: 0=Unhappy, 10=Happy")
|
||||
rating_image = fields.Binary('Image', compute='_compute_rating_image')
|
||||
rating_text = fields.Selection([
|
||||
('satisfied', 'Satisfied'),
|
||||
|
||||
@@ -16,19 +16,19 @@ class ResConfigSettings(models.TransientModel):
|
||||
group_discount_per_so_line = fields.Boolean("Discounts", implied_group='sale.group_discount_per_so_line')
|
||||
module_sale_margin = fields.Boolean("Margins")
|
||||
group_sale_layout = fields.Boolean("Sections on Sales Orders", implied_group='sale.group_sale_layout')
|
||||
group_warning_sale = fields.Boolean("Warnings", implied_group='sale.group_warning_sale')
|
||||
group_warning_sale = fields.Boolean("Sale Order Warnings", implied_group='sale.group_warning_sale')
|
||||
portal_confirmation = fields.Boolean('Online Signature & Payment')
|
||||
portal_confirmation_options = fields.Selection([
|
||||
('sign', 'Signature'),
|
||||
('pay', 'Payment')], string="Online Signature & Payment options")
|
||||
module_sale_payment = fields.Boolean("Online Signature & Payment", help='Technical field implied by user choice of online_confirmation')
|
||||
module_sale_payment = fields.Boolean("Sale Payment", help='Technical field implied by user choice of online_confirmation')
|
||||
module_website_quote = fields.Boolean("Quotations Templates")
|
||||
group_sale_delivery_address = fields.Boolean("Customer Addresses", implied_group='sale.group_delivery_invoice_address')
|
||||
multi_sales_price = fields.Boolean("Multiple Sales Prices per Product")
|
||||
multi_sales_price_method = fields.Selection([
|
||||
('percentage', 'Multiple prices per product (e.g. customer segments, currencies)'),
|
||||
('formula', 'Prices computed from formulas (discounts, margins, roundings)')
|
||||
], default='percentage', string="Pricelists")
|
||||
], default='percentage', string="Pricelists Method")
|
||||
sale_pricelist_setting = fields.Selection([
|
||||
('fixed', 'A single sales price per product'),
|
||||
('percentage', 'Multiple prices per product (e.g. customer segments, currencies)'),
|
||||
@@ -60,7 +60,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
domain="[('type', '=', 'service')]",
|
||||
oldname='deposit_product_id_setting',
|
||||
help='Default product used for payment advances')
|
||||
auto_done_setting = fields.Boolean("Lock Confirmed Orders")
|
||||
auto_done_setting = fields.Boolean("Lock Confirmed Sales")
|
||||
module_website_sale_digital = fields.Boolean("Sell digital products - provide downloadable content on your customer portal")
|
||||
|
||||
auth_signup_uninvited = fields.Selection([
|
||||
|
||||
@@ -8,9 +8,9 @@ from odoo.addons.base.models.res_partner import WARNING_MESSAGE, WARNING_HELP
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
sale_order_count = fields.Integer(compute='_compute_sale_order_count', string='# of Sales Order')
|
||||
sale_order_count = fields.Integer(compute='_compute_sale_order_count', string='Sale Order Count')
|
||||
sale_order_ids = fields.One2many('sale.order', 'partner_id', 'Sales Order')
|
||||
sale_warn = fields.Selection(WARNING_MESSAGE, 'Sales Order', default='no-message', help=WARNING_HELP)
|
||||
sale_warn = fields.Selection(WARNING_MESSAGE, 'Sales Warnings', default='no-message', help=WARNING_HELP)
|
||||
sale_warn_msg = fields.Text('Message for Sales Order')
|
||||
|
||||
def _compute_sale_order_count(self):
|
||||
|
||||
@@ -142,7 +142,7 @@ class SaleOrder(models.Model):
|
||||
|
||||
order_line = fields.One2many('sale.order.line', 'order_id', string='Order Lines', states={'cancel': [('readonly', True)], 'done': [('readonly', True)]}, copy=True, auto_join=True)
|
||||
|
||||
invoice_count = fields.Integer(string='# of Invoices', compute='_get_invoiced', readonly=True)
|
||||
invoice_count = fields.Integer(string='Invoice Count', compute='_get_invoiced', readonly=True)
|
||||
invoice_ids = fields.Many2many("account.invoice", string='Invoices', compute="_get_invoiced", readonly=True, copy=False)
|
||||
invoice_status = fields.Selection([
|
||||
('upselling', 'Upselling Opportunity'),
|
||||
@@ -843,7 +843,7 @@ class SaleOrderLine(models.Model):
|
||||
price_unit = fields.Float('Unit Price', required=True, digits=dp.get_precision('Product Price'), default=0.0)
|
||||
|
||||
price_subtotal = fields.Monetary(compute='_compute_amount', string='Subtotal', readonly=True, store=True)
|
||||
price_tax = fields.Float(compute='_compute_amount', string='Taxes', readonly=True, store=True)
|
||||
price_tax = fields.Float(compute='_compute_amount', string='Total Tax', readonly=True, store=True)
|
||||
price_total = fields.Monetary(compute='_compute_amount', string='Total', readonly=True, store=True)
|
||||
|
||||
price_reduce = fields.Float(compute='_get_price_reduce', string='Price Reduce', digits=dp.get_precision('Product Price'), readonly=True, store=True)
|
||||
@@ -855,7 +855,7 @@ class SaleOrderLine(models.Model):
|
||||
|
||||
product_id = fields.Many2one('product.product', string='Product', domain=[('sale_ok', '=', True)], change_default=True, ondelete='restrict', required=True)
|
||||
product_updatable = fields.Boolean(compute='_compute_product_updatable', string='Can Edit Product', readonly=True, default=True)
|
||||
product_uom_qty = fields.Float(string='Quantity', digits=dp.get_precision('Product Unit of Measure'), required=True, default=1.0)
|
||||
product_uom_qty = fields.Float(string='Ordered Quantity', digits=dp.get_precision('Product Unit of Measure'), required=True, default=1.0)
|
||||
product_uom = fields.Many2one('product.uom', string='Unit of Measure', required=True)
|
||||
# Non-stored related field to allow portal user to see the image of the product he has ordered
|
||||
product_image = fields.Binary('Product Image', related="product_id.image", store=False)
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
<field name="group_warning_sale"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_warning_sale"/>
|
||||
<label for="group_warning_sale" string="Sale Warnings"/>
|
||||
<div class="text-muted">
|
||||
Get warnings in orders for products or customers
|
||||
</div>
|
||||
|
||||
@@ -48,7 +48,7 @@ class SaleAdvancePaymentInv(models.TransientModel):
|
||||
], string='What do you want to invoice?', default=_get_advance_payment_method, required=True)
|
||||
product_id = fields.Many2one('product.product', string='Down Payment Product', domain=[('type', '=', 'service')],
|
||||
default=_default_product_id)
|
||||
count = fields.Integer(default=_count, string='# of Orders')
|
||||
count = fields.Integer(default=_count, string='Order Count')
|
||||
amount = fields.Float('Down Payment Amount', digits=dp.get_precision('Account'), help="The amount to be invoiced in advance, taxes excluded.")
|
||||
deposit_account_id = fields.Many2one("account.account", string="Income Account", domain=[('deprecated', '=', False)],
|
||||
help="Account used for deposits", default=_default_deposit_account_id)
|
||||
|
||||
@@ -19,7 +19,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
default_picking_policy = fields.Selection([
|
||||
('direct', 'Ship products as soon as available, with back orders'),
|
||||
('one', 'Ship all products at once')
|
||||
], "Shipping Management", default='direct', default_model="sale.order", required=True)
|
||||
], "Picking Policy", default='direct', default_model="sale.order", required=True)
|
||||
|
||||
@api.onchange('use_security_lead')
|
||||
def _onchange_use_security_lead(self):
|
||||
|
||||
@@ -8,7 +8,7 @@ class ResUsers(models.Model):
|
||||
_inherit = 'res.users'
|
||||
|
||||
sale_team_id = fields.Many2one(
|
||||
'crm.team', 'Sales Channel',
|
||||
'crm.team', 'Sales Team',
|
||||
help='Sales Channel the user is member of. Used to compute the members of a sales channel through the inverse one2many')
|
||||
|
||||
@api.model
|
||||
|
||||
@@ -23,8 +23,8 @@ class ResConfigSettings(models.TransientModel):
|
||||
group_stock_adv_location = fields.Boolean("Multi-Step Routes",
|
||||
implied_group='stock.group_adv_location',
|
||||
help="Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks).")
|
||||
group_warning_stock = fields.Boolean("Warnings", implied_group='stock.group_warning_stock')
|
||||
propagation_minimum_delta = fields.Integer(related='company_id.propagation_minimum_delta', string="No Rescheduling Propagation")
|
||||
group_warning_stock = fields.Boolean("Warnings for Stock", implied_group='stock.group_warning_stock')
|
||||
propagation_minimum_delta = fields.Integer(related='company_id.propagation_minimum_delta', string="Minimum Delta for Propagation")
|
||||
use_propagation_minimum_delta = fields.Boolean(
|
||||
string="No Rescheduling Propagation",
|
||||
oldname='default_new_propagation_minimum_delta',
|
||||
|
||||
@@ -336,7 +336,7 @@ class InventoryLine(models.Model):
|
||||
'Theoretical Quantity', compute='_compute_theoretical_qty',
|
||||
digits=dp.get_precision('Product Unit of Measure'), readonly=True, store=True)
|
||||
inventory_location_id = fields.Many2one(
|
||||
'stock.location', 'Location', related='inventory_id.location_id', related_sudo=False)
|
||||
'stock.location', 'Inventory Location', related='inventory_id.location_id', related_sudo=False)
|
||||
|
||||
@api.one
|
||||
@api.depends('location_id', 'product_id', 'package_id', 'product_uom_id', 'company_id', 'prod_lot_id', 'partner_id')
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<field name="group_warning_stock"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_warning_stock"/>
|
||||
<label for="group_warning_stock" string="Warnings"/>
|
||||
<div class="text-muted">
|
||||
Get informative or blocking warnings on partners
|
||||
</div>
|
||||
|
||||
@@ -9,4 +9,4 @@ class Attachment(models.Model):
|
||||
_inherit = "ir.attachment"
|
||||
|
||||
# related for backward compatibility with saas-6
|
||||
website_url = fields.Char(string="Attachment URL", related='local_url', deprecated=True)
|
||||
website_url = fields.Char(string="Website URL", related='local_url', deprecated=True)
|
||||
|
||||
@@ -148,7 +148,7 @@ class BlogPost(models.Model):
|
||||
post_date = fields.Datetime('Publishing date', compute='_compute_post_date', inverse='_set_post_date', store=True,
|
||||
help="The blog post will be visible for your visitors as of this date on the website if it is set as published.")
|
||||
create_uid = fields.Many2one('res.users', 'Created by', index=True, readonly=True)
|
||||
write_date = fields.Datetime('Last Modified on', index=True, readonly=True)
|
||||
write_date = fields.Datetime('Last Updated on', index=True, readonly=True)
|
||||
write_uid = fields.Many2one('res.users', 'Last Contributor', index=True, readonly=True)
|
||||
author_avatar = fields.Binary(related='author_id.image_small', string="Avatar")
|
||||
visits = fields.Integer('No of Views')
|
||||
|
||||
@@ -30,10 +30,10 @@ class Event(models.Model):
|
||||
_inherit = "event.event"
|
||||
|
||||
track_ids = fields.One2many('event.track', 'event_id', 'Tracks')
|
||||
track_count = fields.Integer('Tracks', compute='_compute_track_count')
|
||||
track_count = fields.Integer('Track Count', compute='_compute_track_count')
|
||||
|
||||
sponsor_ids = fields.One2many('event.sponsor', 'event_id', 'Sponsors')
|
||||
sponsor_count = fields.Integer('Sponsors', compute='_compute_sponsor_count')
|
||||
sponsor_count = fields.Integer('Sponsor Count', compute='_compute_sponsor_count')
|
||||
|
||||
website_track = fields.Boolean('Tracks on Website')
|
||||
website_track_proposal = fields.Boolean('Proposals on Website')
|
||||
|
||||
@@ -28,13 +28,13 @@
|
||||
type="action"
|
||||
class="oe_stat_button"
|
||||
icon="fa-inbox">
|
||||
<field name="track_count" widget="statinfo"/>
|
||||
<field name="track_count" string="Tracks" widget="statinfo"/>
|
||||
</button>
|
||||
<button name="%(action_event_sponsor_from_event)d"
|
||||
type="action"
|
||||
class="oe_stat_button"
|
||||
icon="fa-users">
|
||||
<field name="sponsor_count" widget="statinfo"/>
|
||||
<field name="sponsor_count" string="Sponsors" widget="statinfo"/>
|
||||
</button>
|
||||
</button>
|
||||
<label for="website_menu" position="after">
|
||||
|
||||
@@ -22,7 +22,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
|
||||
salesperson_id = fields.Many2one('res.users', related='website_id.salesperson_id', string='Salesperson')
|
||||
salesteam_id = fields.Many2one('crm.team', related='website_id.salesteam_id', string='Sales Channel', domain=[('team_type', '!=', 'pos')])
|
||||
module_website_sale_delivery = fields.Boolean("Shipping Costs")
|
||||
module_website_sale_delivery = fields.Boolean("eCommerce Shipping Costs")
|
||||
# field used to have a nice radio in form view, resuming the 2 fields above
|
||||
sale_delivery_settings = fields.Selection([
|
||||
('none', 'No shipping management on website'),
|
||||
|
||||
@@ -12,7 +12,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
('always', 'Show inventory on website and prevent sales if not enough stock'),
|
||||
('threshold', 'Show inventory below a threshold and prevent sales if not enough stock'),
|
||||
('custom', 'Show product-specific notifications'),
|
||||
], string='Inventory', default='never')
|
||||
], string='Inventory Availability', default='never')
|
||||
available_threshold = fields.Float(string='Availability Threshold')
|
||||
|
||||
@api.multi
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="inherit_id" ref="website_sale.product_template_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="website_style_ids" position="before">
|
||||
<field name="inventory_availability" widget="selection" attrs="{'invisible':[('type', 'in', ['service', 'consu'])]}"/>
|
||||
<field name="inventory_availability" string="Inventory" widget="selection" attrs="{'invisible':[('type', 'in', ['service', 'consu'])]}"/>
|
||||
<field name="available_threshold" attrs="{'invisible': ['|', ('type', 'in', ['service', 'consu']), ('inventory_availability', '!=', 'threshold')], 'required': [('inventory_availability', '=', 'threshold'), ('type', '=', 'product')]}"/>
|
||||
<field name="custom_message" attrs="{'invisible': ['|', ('type', 'in', ['service', 'consu']), ('inventory_availability', '!=', 'custom')]}"/>
|
||||
</field>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<div class="content-group">
|
||||
<div class="row mt16" title="Default availability mode set on newly created stockable products. This can be changed at the product level.">
|
||||
<label for="inventory_availability" string="Default Availability Mode" class="col-md-3 o_light_label" />
|
||||
<field name="inventory_availability" />
|
||||
<field name="inventory_availability" string="Inventory"/>
|
||||
</div><br/>
|
||||
<div class="row" attrs="{'invisible': [('inventory_availability', '!=', 'threshold')]}">
|
||||
<label for="available_threshold" string="Default threshold" class="col-md-3 o_light_label" />
|
||||
|
||||
@@ -173,7 +173,7 @@ class IrActionsActWindow(models.Model):
|
||||
help="View type: Tree type to use for the tree view, set to 'tree' for a hierarchical tree view, or 'form' for a regular list view")
|
||||
usage = fields.Char(string='Action Usage',
|
||||
help="Used to filter menu and home actions from the user form.")
|
||||
view_ids = fields.One2many('ir.actions.act_window.view', 'act_window_id', string='Views')
|
||||
view_ids = fields.One2many('ir.actions.act_window.view', 'act_window_id', string='No of Views')
|
||||
views = fields.Binary(compute='_compute_views',
|
||||
help="This function field computes the ordered list of views that should be enabled " \
|
||||
"when displaying the result of an action, federating view mode, views and " \
|
||||
@@ -358,7 +358,7 @@ class IrActionsServer(models.Model):
|
||||
"based on the sequence. Low number means high priority.")
|
||||
model_id = fields.Many2one('ir.model', string='Model', required=True, ondelete='cascade',
|
||||
help="Model on which the server action runs.")
|
||||
model_name = fields.Char(related='model_id.model', readonly=True, store=True)
|
||||
model_name = fields.Char(related='model_id.model', string='Model Name', readonly=True, store=True)
|
||||
# Python code
|
||||
code = fields.Text(string='Python Code', groups='base.group_system',
|
||||
default=DEFAULT_PYTHON_CODE,
|
||||
|
||||
@@ -126,7 +126,7 @@ class IrSequence(models.Model):
|
||||
suffix = fields.Char(help="Suffix value of the record for the sequence", trim=False)
|
||||
number_next = fields.Integer(string='Next Number', required=True, default=1, help="Next number of this sequence")
|
||||
number_next_actual = fields.Integer(compute='_get_number_next_actual', inverse='_set_number_next_actual',
|
||||
string='Next Number',
|
||||
string='Actual Next Number',
|
||||
help="Next number that will be used. This number can be incremented "
|
||||
"frequently so the displayed value might already be obsolete")
|
||||
number_increment = fields.Integer(string='Step', required=True, default=1,
|
||||
@@ -340,7 +340,7 @@ class IrSequenceDateRange(models.Model):
|
||||
sequence_id = fields.Many2one("ir.sequence", string='Main Sequence', required=True, ondelete='cascade')
|
||||
number_next = fields.Integer(string='Next Number', required=True, default=1, help="Next number of this sequence")
|
||||
number_next_actual = fields.Integer(compute='_get_number_next_actual', inverse='_set_number_next_actual',
|
||||
string='Next Number',
|
||||
string='Actual Next Number',
|
||||
help="Next number that will be used. This number can be incremented "
|
||||
"frequently so the displayed value might already be obsolete")
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ class View(models.Model):
|
||||
('search', 'Search'),
|
||||
('qweb', 'QWeb')], string='View Type')
|
||||
arch = fields.Text(compute='_compute_arch', inverse='_inverse_arch', string='View Architecture', nodrop=True)
|
||||
arch_base = fields.Text(compute='_compute_arch_base', inverse='_inverse_arch_base', string='View Architecture')
|
||||
arch_base = fields.Text(compute='_compute_arch_base', inverse='_inverse_arch_base', string='Base View Architecture')
|
||||
arch_db = fields.Text(string='Arch Blob', translate=xml_translate, oldname='arch')
|
||||
arch_fs = fields.Char(string='Arch Filename')
|
||||
inherit_id = fields.Many2one('ir.ui.view', string='Inherited View', ondelete='restrict', index=True)
|
||||
@@ -207,7 +207,7 @@ class View(models.Model):
|
||||
help="ID of the view defined in xml file")
|
||||
groups_id = fields.Many2many('res.groups', 'ir_ui_view_group_rel', 'view_id', 'group_id',
|
||||
string='Groups', help="If this field is empty, the view applies to all users. Otherwise, the view applies to the users of those groups only.")
|
||||
model_ids = fields.One2many('ir.model.data', 'res_id', domain=[('model', '=', 'ir.ui.view')], auto_join=True)
|
||||
model_ids = fields.One2many('ir.model.data', 'res_id', string="Models", domain=[('model', '=', 'ir.ui.view')], auto_join=True)
|
||||
create_date = fields.Datetime(readonly=True)
|
||||
write_date = fields.Datetime(string='Last Modification Date', readonly=True)
|
||||
|
||||
|
||||
@@ -213,7 +213,6 @@ class Partner(models.Model):
|
||||
# technical field used for managing commercial fields
|
||||
commercial_partner_id = fields.Many2one('res.partner', compute='_compute_commercial_partner',
|
||||
string='Commercial Entity', store=True, index=True)
|
||||
commercial_partner_country_id = fields.Many2one('res.country', related='commercial_partner_id.country_id', store=True)
|
||||
commercial_company_name = fields.Char('Company Name Entity', compute='_compute_commercial_company_name',
|
||||
store=True)
|
||||
company_name = fields.Char('Company Name')
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
<group>
|
||||
<field name="padding"/>
|
||||
<field name="number_increment"/>
|
||||
<field name="number_next_actual" attrs="{'invisible': [('use_date_range', '=', True)]}"/>
|
||||
<field name="number_next_actual" string="Next Number" attrs="{'invisible': [('use_date_range', '=', True)]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="date_range_ids" attrs="{'invisible': [('use_date_range', '=', False)]}">
|
||||
<tree string="Sequences" editable="top">
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
<field name="number_next_actual"/>
|
||||
<field name="number_next_actual" string="Next Number"/>
|
||||
</tree>
|
||||
</field>
|
||||
<group col="3" string="Legend (for prefix, suffix)">
|
||||
@@ -78,7 +78,7 @@
|
||||
<field name="prefix"/>
|
||||
<field name="padding"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="number_next_actual"/>
|
||||
<field name="number_next_actual" string="Next Number"/>
|
||||
<field name="number_increment"/>
|
||||
<field name="implementation"/>
|
||||
</tree>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<page string="Architecture">
|
||||
<button type="object" name="open_translations"
|
||||
string="Edit Translations" class="oe_link oe_right"/>
|
||||
<field name="arch_base" widget="ace" options="{'mode': 'xml'}"/>
|
||||
<field name="arch_base" string="View Architecture" widget="ace" options="{'mode': 'xml'}"/>
|
||||
</page>
|
||||
<page string="Access Rights">
|
||||
<field name="groups_id"/>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</kanban>
|
||||
</field>
|
||||
<h3>The following documents will be permanently lost</h3>
|
||||
<field name="model_ids">
|
||||
<field name="model_ids" string="Models">
|
||||
<tree string="Models">
|
||||
<field name="name" string="Document"/>
|
||||
<field name="count"/>
|
||||
|
||||
@@ -317,8 +317,8 @@ class Related(models.Model):
|
||||
|
||||
name = fields.Char()
|
||||
# related fields with a single field
|
||||
related_name = fields.Char(related='name')
|
||||
related_related_name = fields.Char(related='related_name')
|
||||
related_name = fields.Char(related='name', string='A related on Name')
|
||||
related_related_name = fields.Char(related='related_name', string='A related on a related on Name')
|
||||
|
||||
|
||||
class ComputeInverse(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user