[IMP] Account,...: Change 'string' attribute on some fields to avoid repeated names
In odoo at many places the filter items are having repeated strings eventhough the fiter works differently , so find all the places where this happens and give proper string to each filter..
This commit is contained in:
committed by
Yannick Tivisse
parent
74936dbb64
commit
a5e7a4c8ae
@@ -102,7 +102,7 @@ class AccountAccount(models.Model):
|
||||
deprecated = fields.Boolean(index=True, default=False)
|
||||
user_type_id = fields.Many2one('account.account.type', string='Type', required=True, oldname="user_type",
|
||||
help="Account Type is used for information purpose, to generate country-specific legal reports, and set the rules to close a fiscal year and generate opening entries.")
|
||||
internal_type = fields.Selection(related='user_type_id.type', store=True, readonly=True)
|
||||
internal_type = fields.Selection(related='user_type_id.type', string="Internal Type", store=True, readonly=True)
|
||||
#has_unreconciled_entries = fields.Boolean(compute='_compute_has_unreconciled_entries',
|
||||
# help="The account has at least one unreconciled debit and credit since last time the invoices & payments matching was performed.")
|
||||
last_time_entries_checked = fields.Datetime(string='Latest Invoices & Payments Matching Date', readonly=True, copy=False,
|
||||
@@ -746,16 +746,16 @@ class AccountOperationTemplate(models.Model):
|
||||
tax_id = fields.Many2one('account.tax', string='Tax', ondelete='restrict', domain=[('type_tax_use', '=', 'purchase')])
|
||||
analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account', ondelete='set null')
|
||||
|
||||
second_account_id = fields.Many2one('account.account', string='Account', ondelete='cascade', domain=[('deprecated', '=', False)])
|
||||
second_journal_id = fields.Many2one('account.journal', string='Journal', ondelete='cascade', help="This field is ignored in a bank statement reconciliation.")
|
||||
second_label = fields.Char(string='Journal Item Label')
|
||||
second_account_id = fields.Many2one('account.account', string='Second Account', ondelete='cascade', domain=[('deprecated', '=', False)])
|
||||
second_journal_id = fields.Many2one('account.journal', string='Second Journal', ondelete='cascade', help="This field is ignored in a bank statement reconciliation.")
|
||||
second_label = fields.Char(string='Second Journal Item Label')
|
||||
second_amount_type = fields.Selection([
|
||||
('fixed', 'Fixed'),
|
||||
('percentage', 'Percentage of amount')
|
||||
], string='Amount type', required=True, default='percentage')
|
||||
second_amount = fields.Float(string='Amount', digits=0, required=True, default=100.0, help="Fixed amount will count as a debit if it is negative, as a credit if it is positive.")
|
||||
second_tax_id = fields.Many2one('account.tax', string='Tax', ondelete='restrict', domain=[('type_tax_use', '=', 'purchase')])
|
||||
second_analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account', ondelete='set null')
|
||||
], string="Second Amount type",required=True, default='percentage')
|
||||
second_amount = fields.Float(string='Second Amount', digits=0, required=True, default=100.0, help="Fixed amount will count as a debit if it is negative, as a credit if it is positive.")
|
||||
second_tax_id = fields.Many2one('account.tax', string='Second Tax', ondelete='restrict', domain=[('type_tax_use', '=', 'purchase')])
|
||||
second_analytic_account_id = fields.Many2one('account.analytic.account', string='Second Analytic Account', ondelete='set null')
|
||||
|
||||
@api.onchange('name')
|
||||
def onchange_name(self):
|
||||
|
||||
@@ -208,7 +208,7 @@ class AccountInvoice(models.Model):
|
||||
|
||||
refund_invoice_id = fields.Many2one('account.invoice', string="Invoice for which this invoice is the refund")
|
||||
number = fields.Char(related='move_id.name', store=True, readonly=True, copy=False)
|
||||
move_name = fields.Char(string='Journal Entry', readonly=True,
|
||||
move_name = fields.Char(string='Journal Entry Name', readonly=True,
|
||||
default=False, copy=False,
|
||||
help="Technical field holding the number given to the invoice, automatically set when the invoice is validated then stored to set the same number again if the invoice is cancelled, set to draft and re-validated.")
|
||||
reference = fields.Char(string='Vendor Reference',
|
||||
@@ -270,22 +270,22 @@ class AccountInvoice(models.Model):
|
||||
|
||||
amount_untaxed = fields.Monetary(string='Untaxed Amount',
|
||||
store=True, readonly=True, compute='_compute_amount', track_visibility='always')
|
||||
amount_untaxed_signed = fields.Monetary(string='Untaxed Amount', currency_field='company_currency_id',
|
||||
amount_untaxed_signed = fields.Monetary(string='Untaxed Amount in Company Currency', currency_field='company_currency_id',
|
||||
store=True, readonly=True, compute='_compute_amount')
|
||||
amount_tax = fields.Monetary(string='Tax',
|
||||
store=True, readonly=True, compute='_compute_amount')
|
||||
amount_total = fields.Monetary(string='Total',
|
||||
store=True, readonly=True, compute='_compute_amount')
|
||||
amount_total_signed = fields.Monetary(string='Total', currency_field='currency_id',
|
||||
amount_total_signed = fields.Monetary(string='Total in Invoice Currency', currency_field='currency_id',
|
||||
store=True, readonly=True, compute='_compute_amount',
|
||||
help="Total amount in the currency of the invoice, negative for credit notes.")
|
||||
amount_total_company_signed = fields.Monetary(string='Total', currency_field='company_currency_id',
|
||||
amount_total_company_signed = fields.Monetary(string='Total in Company Currency', currency_field='company_currency_id',
|
||||
store=True, readonly=True, compute='_compute_amount',
|
||||
help="Total amount in the currency of the company, negative for credit notes.")
|
||||
currency_id = fields.Many2one('res.currency', string='Currency',
|
||||
required=True, readonly=True, states={'draft': [('readonly', False)]},
|
||||
default=_default_currency, track_visibility='always')
|
||||
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)
|
||||
journal_id = fields.Many2one('account.journal', string='Journal',
|
||||
required=True, readonly=True, states={'draft': [('readonly', False)]},
|
||||
default=_default_journal,
|
||||
@@ -302,12 +302,12 @@ class AccountInvoice(models.Model):
|
||||
|
||||
residual = fields.Monetary(string='Amount Due',
|
||||
compute='_compute_residual', store=True, help="Remaining amount due.")
|
||||
residual_signed = fields.Monetary(string='Amount Due', currency_field='currency_id',
|
||||
residual_signed = fields.Monetary(string='Amount Due in Invoice Currency', currency_field='currency_id',
|
||||
compute='_compute_residual', store=True, help="Remaining amount due in the currency of the invoice.")
|
||||
residual_company_signed = fields.Monetary(string='Amount Due', currency_field='company_currency_id',
|
||||
residual_company_signed = fields.Monetary(string='Amount Due in Company Currency', currency_field='company_currency_id',
|
||||
compute='_compute_residual', store=True, help="Remaining amount due in the currency of the company.")
|
||||
payment_ids = fields.Many2many('account.payment', 'account_invoice_payment_rel', 'invoice_id', 'payment_id', string="Payments", copy=False, readonly=True)
|
||||
payment_move_line_ids = fields.Many2many('account.move.line', string='Payments', compute='_compute_payments', store=True)
|
||||
payment_move_line_ids = fields.Many2many('account.move.line', string='Payment Move Lines', compute='_compute_payments', store=True)
|
||||
user_id = fields.Many2one('res.users', string='Salesperson', track_visibility='onchange',
|
||||
readonly=True, states={'draft': [('readonly', False)]},
|
||||
default=lambda self: self.env.user)
|
||||
|
||||
@@ -355,7 +355,7 @@ class AccountMoveLine(models.Model):
|
||||
credit_cash_basis = fields.Monetary(currency_field='company_currency_id', default=0.0, compute='_compute_cash_basis', store=True)
|
||||
balance_cash_basis = fields.Monetary(compute='_compute_cash_basis', store=True, currency_field='company_currency_id', default=0.0, help="Technical field holding the debit_cash_basis - credit_cash_basis in order to open meaningful graph views from reports")
|
||||
amount_currency = fields.Monetary(default=0.0, help="The amount expressed in an optional other currency if it is a multi-currency entry.")
|
||||
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', store=True)
|
||||
currency_id = fields.Many2one('res.currency', string='Currency', default=_get_currency,
|
||||
help="The optional other currency if it is a multi-currency entry.")
|
||||
@@ -367,7 +367,7 @@ class AccountMoveLine(models.Model):
|
||||
ondelete="cascade", domain=[('deprecated', '=', False)], default=lambda self: self._context.get('account_id', False))
|
||||
move_id = fields.Many2one('account.move', string='Journal Entry', ondelete="cascade",
|
||||
help="The move of this entry line.", index=True, required=True, auto_join=True)
|
||||
narration = fields.Text(related='move_id.narration', string='Internal Note')
|
||||
narration = fields.Text(related='move_id.narration', string='Narration')
|
||||
ref = fields.Char(related='move_id.ref', string='Partner Reference', store=True, copy=False)
|
||||
payment_id = fields.Many2one('account.payment', string="Originator Payment", help="Payment that created this entry")
|
||||
statement_id = fields.Many2one('account.bank.statement', string='Statement',
|
||||
|
||||
@@ -31,7 +31,7 @@ class account_abstract_payment(models.AbstractModel):
|
||||
_description = "Contains the logic shared between models which allows to register payments"
|
||||
|
||||
payment_type = fields.Selection([('outbound', 'Send Money'), ('inbound', 'Receive Money')], string='Payment Type', required=True)
|
||||
payment_method_id = fields.Many2one('account.payment.method', string='Payment Type', required=True, oldname="payment_method")
|
||||
payment_method_id = fields.Many2one('account.payment.method', string='Payment Method Type', required=True, oldname="payment_method")
|
||||
payment_method_code = fields.Char(related='payment_method_id.code',
|
||||
help="Technical field used to adapt the interface to the payment type selected.", readonly=True)
|
||||
|
||||
|
||||
@@ -135,8 +135,8 @@
|
||||
<field name="user_id"/>
|
||||
<field name="date_due"/>
|
||||
<field name="origin"/>
|
||||
<field name="amount_total_signed"/>
|
||||
<field name="residual_signed"/>
|
||||
<field name="amount_total_signed" string="Total"/>
|
||||
<field name="residual_signed" string="Amount Due"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
<field name="state"/>
|
||||
@@ -200,7 +200,7 @@
|
||||
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
||||
<field name="date_due"/>
|
||||
<field name="origin"/>
|
||||
<field name="amount_total_signed"/>
|
||||
<field name="amount_total_signed" string="Total"/>
|
||||
<field name="residual_signed" string="To Pay"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
|
||||
@@ -787,19 +787,19 @@
|
||||
</div>
|
||||
<group attrs="{'invisible':[('has_second_line','!=',True)]}">
|
||||
<group>
|
||||
<field name="second_account_id" domain="[('company_id', '=', company_id)]"/>
|
||||
<field name="second_amount_type"/>
|
||||
<field name="second_tax_id" domain="[('company_id', '=', company_id)]" widget="selection"/>
|
||||
<field name="second_analytic_account_id" groups="analytic.group_analytic_accounting" domain="[('company_id', '=', company_id)]"/>
|
||||
<field name="second_account_id" string="Account" domain="[('company_id', '=', company_id)]"/>
|
||||
<field name="second_amount_type" string="Amount type"/>
|
||||
<field name="second_tax_id" string="Tax" domain="[('company_id', '=', company_id)]" widget="selection"/>
|
||||
<field name="second_analytic_account_id" string="Analytic Account" groups="analytic.group_analytic_accounting" domain="[('company_id', '=', company_id)]"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="second_label"/>
|
||||
<label for="second_amount"/>
|
||||
<field name="second_label" string="Journal Item Label"/>
|
||||
<label for="second_amount" string="Amount"/>
|
||||
<div>
|
||||
<field name="second_amount" class="oe_inline"/>
|
||||
<label string="%" class="oe_inline" attrs="{'invisible':[('amount_type','!=','percentage')]}" />
|
||||
</div>
|
||||
<field name="second_journal_id" domain="[('company_id', '=', company_id)]" widget="selection"/>
|
||||
<field name="second_journal_id" string="Journal" domain="[('company_id', '=', company_id)]" widget="selection"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
|
||||
@@ -931,7 +931,7 @@ class calendar_event(osv.Model):
|
||||
'color_partner_id': fields.related('user_id', 'partner_id', 'id', type="integer", string="Color index of creator", store=False), # Color of creator
|
||||
'active': fields.boolean('Active', 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'),
|
||||
'attendee_ids': fields.one2many('calendar.attendee', 'event_id', 'Attendees', ondelete='cascade'),
|
||||
'attendee_ids': fields.one2many('calendar.attendee', 'event_id', 'Participant', ondelete='cascade'),
|
||||
'partner_ids': fields.many2many('res.partner', 'calendar_event_res_partner_rel', string='Attendees', states={'done': [('readonly', True)]}),
|
||||
'alarm_ids': fields.many2many('calendar.alarm', 'calendar_alarm_calendar_event_rel', string='Reminders', ondelete="restrict", copy=False),
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class StockMove(models.Model):
|
||||
return self.env['product.uom'].search([('category_id', '=', uom_categ_id), ('factor', '=', 1)], limit=1)
|
||||
|
||||
weight = fields.Float(compute='_cal_move_weight', digits=dp.get_precision('Stock Weight'), store=True)
|
||||
weight_uom_id = fields.Many2one('product.uom', string='Unit of Measure', required=True, readonly=True, help="Unit of Measure (Unit of Measure) is the unit of measurement for Weight", default=_default_uom)
|
||||
weight_uom_id = fields.Many2one('product.uom', string='Weight Unit of Measure', required=True, readonly=True, help="Unit of Measure (Unit of Measure) is the unit of measurement for Weight", default=_default_uom)
|
||||
|
||||
@api.depends('product_id', 'product_uom_qty', 'product_uom')
|
||||
def _cal_move_weight(self):
|
||||
|
||||
@@ -72,7 +72,7 @@ class event_event(models.Model):
|
||||
oldname='register_current', string='Reserved Seats',
|
||||
store=True, readonly=True, compute='_compute_seats')
|
||||
seats_available = fields.Integer(
|
||||
oldname='register_avail', string='Maximum Attendees',
|
||||
oldname='register_avail', string='Available Seats',
|
||||
store=True, readonly=True, compute='_compute_seats')
|
||||
seats_unconfirmed = fields.Integer(
|
||||
oldname='register_prospect', string='Unconfirmed Seat Reservations',
|
||||
|
||||
@@ -176,7 +176,7 @@ class GoogleDrive(models.Model):
|
||||
|
||||
name = fields.Char('Template Name', required=True)
|
||||
model_id = fields.Many2one('ir.model', 'Model', ondelete='set null', required=True)
|
||||
model = fields.Char('Model', related='model_id.model', readonly=True)
|
||||
model = fields.Char('Related Model', related='model_id.model', readonly=True)
|
||||
filter_id = fields.Many2one('ir.filters', 'Filter', domain="[('model_id', '=', model)]")
|
||||
google_drive_template_url = fields.Char('Template URL', required=True)
|
||||
google_drive_resource_id = fields.Char('Resource Id', compute='_compute_ressource_id')
|
||||
|
||||
@@ -108,7 +108,7 @@ class Employee(models.Model):
|
||||
return tools.image_resize_image_big(open(image_path, 'rb').read().encode('base64'))
|
||||
|
||||
# we need a related field in order to be able to sort the employee by name
|
||||
name_related = fields.Char('Name', related='resource_id.name', readonly=True, store=True)
|
||||
name_related = fields.Char(related='resource_id.name', string="Resource Name", readonly=True, store=True)
|
||||
country_id = fields.Many2one('res.country', string='Nationality (Country)')
|
||||
birthday = fields.Date('Date of Birth')
|
||||
ssnid = fields.Char('SSN No', help='Social Security Number')
|
||||
|
||||
@@ -130,7 +130,7 @@ class LunchOrderLine(models.Model):
|
||||
_name = 'lunch.order.line'
|
||||
_description = 'lunch order line'
|
||||
|
||||
name = fields.Char(related='product_id.name', readonly=True)
|
||||
name = fields.Char(related='product_id.name', string="Product Name", readonly=True)
|
||||
order_id = fields.Many2one('lunch.order', 'Order', ondelete='cascade', required=True)
|
||||
product_id = fields.Many2one('lunch.product', 'Product', required=True)
|
||||
category_id = fields.Many2one('lunch.product.category', string='Product Category',
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<search string="Search">
|
||||
<filter name='is_mine' string="My Orders" domain="[('user_id','=',uid)]"/>
|
||||
<separator/>
|
||||
<field name="name" filter_domain="['|', ('name', 'ilike', self), ('note', 'ilike', self)]"/>
|
||||
<field name="name" string="Product" filter_domain="['|', ('name', 'ilike', self), ('note', 'ilike', self)]"/>
|
||||
<filter name="not_confirmed" string="Not Received" domain="[('state','!=',('confirmed'))]"/>
|
||||
<filter name="confirmed" string="Received" domain="[('state','=','confirmed')]"/>
|
||||
<filter name="cancelled" string="Cancelled" domain="[('state','=','cancelled')]"/>
|
||||
|
||||
+1
-1
@@ -605,7 +605,7 @@ class mrp_production(osv.osv):
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
'ready_production': fields.function(_moves_assigned, type='boolean', string="Ready for production", store={'stock.move': (_mrp_from_move, ['state'], 10)}),
|
||||
'product_tmpl_id': fields.related('product_id', 'product_tmpl_id', type='many2one', relation='product.template', string='Product'),
|
||||
'product_tmpl_id': fields.related('product_id', 'product_tmpl_id', type='many2one', relation='product.template', string='Product Template'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
||||
@@ -102,7 +102,7 @@ class mrp_production_workcenter_line(osv.osv):
|
||||
"* When the user cancels the work order it will be set in 'Canceled' status.\n" \
|
||||
"* When order is completely processed that time it is set in 'Finished' status."),
|
||||
'date_planned': fields.datetime('Scheduled Date', select=True),
|
||||
'date_planned_end': fields.function(_get_date_end, string='End Date', type='datetime', fnct_inv=_set_date_end, fnct_search=_search_date_planned_end),
|
||||
'date_planned_end': fields.function(_get_date_end, string='Planned End Date', type='datetime', fnct_inv=_set_date_end, fnct_search=_search_date_planned_end),
|
||||
'date_start': fields.datetime('Start Date'),
|
||||
'date_finished': fields.datetime('End Date'),
|
||||
'delay': fields.float('Working Hours',help="The elapsed time between operation start and stop in this Work Center",readonly=True),
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
<group>
|
||||
<group string="Planned Date">
|
||||
<field name="date_planned"/>
|
||||
<field name="date_planned_end" readonly="1"/>
|
||||
<field name="date_planned_end" string="End Date" readonly="1"/>
|
||||
</group>
|
||||
|
||||
<group string="Duration">
|
||||
|
||||
@@ -186,7 +186,7 @@ class project(osv.osv):
|
||||
'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
|
||||
'task_count': fields.function(_task_count, type='integer', string="Tasks",),
|
||||
'task_needaction_count': fields.function(_task_needaction_count, type='integer', string="Tasks",),
|
||||
'task_ids': fields.one2many('project.task', 'project_id',
|
||||
'task_ids': fields.one2many('project.task', 'project_id', string='Tasks',
|
||||
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]),
|
||||
'color': fields.integer('Color Index'),
|
||||
'user_id': fields.many2one('res.users', 'Project Manager'),
|
||||
@@ -888,7 +888,7 @@ class account_analytic_account(osv.osv):
|
||||
return result
|
||||
|
||||
_columns = {
|
||||
'use_tasks': fields.boolean('Tasks', help="Check this box to manage internal activities through this project"),
|
||||
'use_tasks': fields.boolean(string='Use Tasks', help="Check this box to manage internal activities through this project"),
|
||||
'company_uom_id': fields.related('company_id', 'project_time_mode_id', string="Company UOM", type='many2one', relation='product.uom'),
|
||||
'project_ids': fields.one2many('project.project', 'analytic_account_id', 'Projects'),
|
||||
'project_count': fields.function(_compute_project_count, string='Project Count', type='integer')
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
</h1>
|
||||
<div name="options_active" class="oe_edit_only">
|
||||
<div>
|
||||
<field name="use_tasks" class="oe_inline" string="Use Tasks"/>
|
||||
<label for="use_tasks" class="oe_inline"/>
|
||||
<field name="use_tasks" class="oe_inline"/>
|
||||
<label for="use_tasks" class="oe_inline" string="Tasks"/>
|
||||
<span attrs="{'invisible':[('use_tasks', '=', False)]}">as </span>
|
||||
<field name="label_tasks" class="oe_inline oe_input_align" attrs="{'invisible': [('use_tasks', '=', False)]}"/>
|
||||
</div>
|
||||
|
||||
@@ -507,7 +507,7 @@ class account_analytic_account(osv.Model):
|
||||
_description = 'Analytic Account'
|
||||
|
||||
_columns = {
|
||||
'use_issues': fields.boolean('Issues', help="Check this box to manage customer activities through this project"),
|
||||
'use_issues': fields.boolean('Use Issues', help="Check this box to manage customer activities through this project"),
|
||||
}
|
||||
|
||||
def on_change_template(self, cr, uid, ids, template_id, date_start=False, context=None):
|
||||
|
||||
@@ -271,9 +271,9 @@
|
||||
</xpath>
|
||||
<xpath expr='//div[@name="options_active"]' position='inside'>
|
||||
<div>
|
||||
<field name="use_issues" class="oe_inline" string="Use Issues"
|
||||
<field name="use_issues" class="oe_inline"
|
||||
on_change="on_change_use_tasks_or_issues(use_tasks, use_issues)"/>
|
||||
<label for="use_issues" class="oe_inline"/>
|
||||
<label for="use_issues" class="oe_inline" string="Issues"/>
|
||||
<span attrs="{'invisible':[('use_issues', '=', False)]}">as </span>
|
||||
<field name="label_issues" class="oe_inline oe_input_align" attrs="{'invisible': [('use_issues', '=', False)]}"/>
|
||||
</div>
|
||||
|
||||
@@ -49,9 +49,9 @@ class Project(models.Model):
|
||||
self.percentage_satisfaction_task = activity['great'] * 100 / sum(activity.values()) if sum(activity.values()) else -1
|
||||
|
||||
percentage_satisfaction_task = fields.Integer(
|
||||
compute='_compute_percentage_satisfaction_task', string='% Happy', store=True, default=-1)
|
||||
compute='_compute_percentage_satisfaction_task', string="Happy % on Task", store=True, default=-1)
|
||||
percentage_satisfaction_project = fields.Integer(
|
||||
compute="_compute_percentage_satisfaction_project", string="% Happy", store=True, default=-1)
|
||||
compute="_compute_percentage_satisfaction_project", string="Happy % on Project", store=True, default=-1)
|
||||
is_visible_happy_customer = fields.Boolean(string="Customer Satisfaction", default=False,
|
||||
help="Display information about rating of the project on kanban and form view. This buttons will only be displayed if at least a rating exists.")
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ class Project(models.Model):
|
||||
activity = project_issue.rating_get_grades()
|
||||
self.percentage_satisfaction_issue = activity['great'] * 100 / sum(activity.values()) if sum(activity.values()) else -1
|
||||
|
||||
percentage_satisfaction_issue = fields.Integer(compute='_compute_percentage_satisfaction_issue', string='% Happy', store=True, default=-1)
|
||||
percentage_satisfaction_issue = fields.Integer(compute='_compute_percentage_satisfaction_issue', string="Happy % on Issue", store=True, default=-1)
|
||||
|
||||
@api.multi
|
||||
def action_view_issue_rating(self):
|
||||
|
||||
@@ -45,7 +45,7 @@ class StockMove(models.Model):
|
||||
states={'done': [('readonly', True)]})
|
||||
ordered_qty = fields.Float('Ordered Quantity', digits_compute=dp.get_precision('Product Unit of Measure'))
|
||||
product_qty = fields.Float(
|
||||
'Quantity', compute='_compute_product_qty', inverse='_set_product_qty',
|
||||
'Real Quantity', compute='_compute_product_qty', inverse='_set_product_qty',
|
||||
digits=0, store=True,
|
||||
help='Quantity in the default UoM of the product')
|
||||
product_uom_qty = fields.Float(
|
||||
|
||||
@@ -9,7 +9,7 @@ class ReportStockForecat(models.Model):
|
||||
|
||||
date = fields.Date(string='Date')
|
||||
product_id = fields.Many2one('product.product', string='Product', readonly=True)
|
||||
product_tmpl_id = fields.Many2one('product.template', string='Product', related='product_id.product_tmpl_id', readonly=True)
|
||||
product_tmpl_id = fields.Many2one('product.template', string='Product Template', related='product_id.product_tmpl_id', readonly=True)
|
||||
cumulative_quantity = fields.Float(string='Cumulative Quantity', readonly=True)
|
||||
quantity = fields.Float(readonly=True)
|
||||
|
||||
|
||||
@@ -604,7 +604,7 @@ class survey_question(osv.Model):
|
||||
'validation_max_float_value': fields.float('Maximum value'),
|
||||
'validation_min_date': fields.datetime('Minimum Date'),
|
||||
'validation_max_date': fields.datetime('Maximum Date'),
|
||||
'validation_error_msg': fields.char('Error message',
|
||||
'validation_error_msg': fields.char('Validation Error message',
|
||||
oldname='validation_valid_err_msg',
|
||||
translate=True),
|
||||
|
||||
@@ -807,7 +807,7 @@ class survey_label(osv.Model):
|
||||
_columns = {
|
||||
'question_id': fields.many2one('survey.question', 'Question',
|
||||
ondelete='cascade'),
|
||||
'question_id_2': fields.many2one('survey.question', 'Question',
|
||||
'question_id_2': fields.many2one('survey.question', 'Question 2',
|
||||
ondelete='cascade'),
|
||||
'sequence': fields.integer('Label Sequence order'),
|
||||
'value': fields.char("Suggested value", translate=True,
|
||||
|
||||
@@ -135,7 +135,7 @@ class BlogPost(osv.Model):
|
||||
select=True, readonly=True,
|
||||
),
|
||||
'create_uid': fields.many2one(
|
||||
'res.users', 'Author',
|
||||
'res.users', 'Created by',
|
||||
select=True, readonly=True,
|
||||
),
|
||||
'write_date': fields.datetime(
|
||||
|
||||
@@ -8,9 +8,9 @@ class EventEvent(models.Model):
|
||||
_inherit = 'event.event'
|
||||
|
||||
question_ids = fields.One2many('event.question', 'event_id', 'Questions', copy=True)
|
||||
general_question_ids = fields.One2many('event.question', 'event_id', 'Questions',
|
||||
general_question_ids = fields.One2many('event.question', 'event_id', 'General Questions',
|
||||
domain=[('is_individual', '=', False)])
|
||||
specific_question_ids = fields.One2many('event.question', 'event_id', 'Questions',
|
||||
specific_question_ids = fields.One2many('event.question', 'event_id', 'Specific Questions',
|
||||
domain=[('is_individual', '=', True)])
|
||||
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ class Post(models.Model):
|
||||
# vote
|
||||
vote_ids = fields.One2many('forum.post.vote', 'post_id', string='Votes')
|
||||
user_vote = fields.Integer('My Vote', compute='_get_user_vote')
|
||||
vote_count = fields.Integer('Votes', compute='_get_vote_count', store=True)
|
||||
vote_count = fields.Integer('Total Votes', compute='_get_vote_count', store=True)
|
||||
|
||||
# favorite
|
||||
favourite_ids = fields.Many2many('res.users', string='Favourite')
|
||||
|
||||
@@ -88,7 +88,7 @@ class ProductTemplate(models.Model):
|
||||
website_size_x = fields.Integer('Size X', default=1)
|
||||
website_size_y = fields.Integer('Size Y', default=1)
|
||||
website_style_ids = fields.Many2many('product.style', string='Styles')
|
||||
website_sequence = fields.Integer('Sequence', help="Determine the display order in the Website E-commerce",
|
||||
website_sequence = fields.Integer('Website Sequence', help="Determine the display order in the Website E-commerce",
|
||||
default=lambda self: self._default_website_sequence())
|
||||
public_categ_ids = fields.Many2many('product.public.category', string='Website Product Category',
|
||||
help="Those categories are used to group similar products for e-commerce.")
|
||||
|
||||
@@ -512,7 +512,7 @@ class IrActionsServer(models.Model):
|
||||
# Workflow signal
|
||||
use_relational_model = fields.Selection([('base', 'Use the base model of the action'),
|
||||
('relational', 'Use a relation field on the base model')],
|
||||
string='Target Model', default='base', required=True)
|
||||
string='Relational Target Model', default='base', required=True)
|
||||
wkf_transition_id = fields.Many2one('workflow.transition', string='Signal to Trigger',
|
||||
help="Select the workflow signal to trigger.")
|
||||
wkf_model_id = fields.Many2one('ir.model', string='Target Model',
|
||||
@@ -529,7 +529,7 @@ class IrActionsServer(models.Model):
|
||||
('copy_current', 'Copy the current record'),
|
||||
('copy_other', 'Choose and copy a record in the database')],
|
||||
string="Creation Policy", default='new', required=True)
|
||||
crud_model_id = fields.Many2one('ir.model', string='Target Model',
|
||||
crud_model_id = fields.Many2one('ir.model', string='Create/Write Target Model',
|
||||
oldname='srcmodel_id', help="Model for record creation / update. Set this field only to specify a different model than the base model.")
|
||||
crud_model_name = fields.Char(string='Create/Write Target Model Name', related='crud_model_id.model', store=True, readonly=True)
|
||||
ref_object = fields.Reference(string='Reference record', selection='_select_objects', oldname='copy_object')
|
||||
|
||||
@@ -27,12 +27,12 @@ class Property(models.Model):
|
||||
res_id = fields.Char(string='Resource', index=True, help="If not set, acts as a default value for new resources",)
|
||||
company_id = fields.Many2one('res.company', string='Company', index=True)
|
||||
fields_id = fields.Many2one('ir.model.fields', string='Field', ondelete='cascade', required=True, index=True)
|
||||
value_float = fields.Float(string='Value')
|
||||
value_integer = fields.Integer(string='Value')
|
||||
value_text = fields.Text(string='Value') # will contain (char, text)
|
||||
value_binary = fields.Binary(string='Value')
|
||||
value_reference = fields.Char(string='Value')
|
||||
value_datetime = fields.Datetime(string='Value')
|
||||
value_float = fields.Float()
|
||||
value_integer = fields.Integer()
|
||||
value_text = fields.Text() # will contain (char, text)
|
||||
value_binary = fields.Binary()
|
||||
value_reference = fields.Char()
|
||||
value_datetime = fields.Datetime()
|
||||
type = fields.Selection([('char', 'Char'),
|
||||
('float', 'Float'),
|
||||
('boolean', 'Boolean'),
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="value_integer" attrs="{'invisible' : [('type', 'not in', ('integer', 'boolean'))]}"/>
|
||||
<field name="value_float" attrs="{'invisible' : [('type', '!=', 'float')]}"/>
|
||||
<field name="value_datetime" attrs="{'invisible' : [('type', 'not in', ('date', 'datetime'))]}"/>
|
||||
<field name="value_text" attrs="{'invisible' : [('type', 'not in', ('char', 'text'))]}"/>
|
||||
<field name="value_reference" attrs="{'invisible' : [('type', '!=', 'many2one')]}"/>
|
||||
<field name="value_binary" attrs="{'invisible' : [('type', '!=', 'binary')]}"/>
|
||||
<field name="value_integer" string="Value" attrs="{'invisible' : [('type', 'not in', ('integer', 'boolean'))]}"/>
|
||||
<field name="value_float" string="Value" attrs="{'invisible' : [('type', '!=', 'float')]}"/>
|
||||
<field name="value_datetime" string="Value" attrs="{'invisible' : [('type', 'not in', ('date', 'datetime'))]}"/>
|
||||
<field name="value_text" string="Value" attrs="{'invisible' : [('type', 'not in', ('char', 'text'))]}"/>
|
||||
<field name="value_reference" string="Value" attrs="{'invisible' : [('type', '!=', 'many2one')]}"/>
|
||||
<field name="value_binary" string="Value" attrs="{'invisible' : [('type', '!=', 'binary')]}"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
|
||||
@@ -125,7 +125,7 @@ class Company(models.Model):
|
||||
rml_header1 = fields.Char(string='Company Tagline', help="Appears by default on the top right corner of your printed documents (report header).")
|
||||
rml_header2 = fields.Text(string='RML Internal Header', required=True, default=_header2)
|
||||
rml_header3 = fields.Text(string='RML Internal Header for Landscape Reports', required=True, default=_header3)
|
||||
rml_footer = fields.Text(string='Report Footer', translate=True, help="Footer text displayed at the bottom of all reports.")
|
||||
rml_footer = fields.Text(string='Custom Report Footer', translate=True, help="Footer text displayed at the bottom of all reports.")
|
||||
rml_footer_readonly = fields.Text(related='rml_footer', string='Report Footer', readonly=True)
|
||||
custom_footer = fields.Boolean(help="Check this to define the report footer manually. Otherwise it will be filled in automatically.")
|
||||
font = fields.Many2one('res.font', string="Font", default=lambda self: self._get_font(),
|
||||
|
||||
@@ -136,7 +136,7 @@ class Partner(models.Model, FormatAddress):
|
||||
return self.env['res.company']._company_default_get('res.partner')
|
||||
|
||||
name = fields.Char(index=True)
|
||||
display_name = fields.Char(compute='_compute_display_name', string='Name', store=True, index=True)
|
||||
display_name = fields.Char(compute='_compute_display_name', store=True, index=True)
|
||||
date = fields.Date(index=True)
|
||||
title = fields.Many2one('res.partner.title')
|
||||
parent_id = fields.Many2one('res.partner', string='Related Company', index=True)
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<field eval="8" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Contacts">
|
||||
<field name="display_name"/>
|
||||
<field name="display_name" string="Name"/>
|
||||
<field name="function" invisible="1"/>
|
||||
<field name="phone"/>
|
||||
<field name="email"/>
|
||||
|
||||
@@ -150,7 +150,7 @@ class Message(models.Model):
|
||||
display_name = fields.Char(string='Abstract', compute='_compute_display_name')
|
||||
size = fields.Integer(compute='_compute_size', search='_search_size')
|
||||
double_size = fields.Integer(compute='_compute_double_size')
|
||||
discussion_name = fields.Char(related='discussion.name')
|
||||
discussion_name = fields.Char(related='discussion.name', string="Discussion Name")
|
||||
author_partner = fields.Many2one(
|
||||
'res.partner', compute='_compute_author_partner',
|
||||
search='_search_author_partner')
|
||||
|
||||
Reference in New Issue
Block a user