[MERGE]Merge with lp:~openerp-dev/openobject-addons/trunk-configuration-rework
bzr revid: mma@tinyerp.com-20110601125239-xe32ajnl2fkkwd3c
This commit is contained in:
commit
e1d6ace654
|
@ -22,12 +22,9 @@
|
|||
<field name="model">res.company</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Configuration" position="inside">
|
||||
<group col="2" colspan="2">
|
||||
<separator string="Reserve And Profit/Loss Account" colspan="2"/>
|
||||
<field name="currency_id" position="after">
|
||||
<field name="property_reserve_and_surplus_account" colspan="2"/>
|
||||
</group>
|
||||
</page>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<newline/>
|
||||
<separator string="Associations Details" colspan="4" />
|
||||
<separator string="Associations Features" colspan="4" />
|
||||
<field name="project" />
|
||||
<field name="project_gtd" />
|
||||
<field name="wiki" />
|
||||
|
|
|
@ -217,13 +217,12 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.view_company_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/notebook/page/field[@name='rml_header']" position="before">
|
||||
<group colspan="4" col="8">
|
||||
<label string="" colspan="7"/>
|
||||
<button name="preview_report" string="Preview Report" type="object" icon="gtk-print"/>
|
||||
</group>
|
||||
<separator string="Header/Footer of Reports" colspan="4"/>
|
||||
</xpath>
|
||||
<field name="rml_footer2" position="after">
|
||||
<group colspan="4" col="8">
|
||||
<label string="" colspan="7"/>
|
||||
<button name="preview_report" string="Preview Report" type="object" icon="gtk-print"/>
|
||||
</group>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
@ -234,6 +233,56 @@
|
|||
<field name="type">normal</field>
|
||||
<field name="state">cancel</field>
|
||||
</record>
|
||||
|
||||
<!-- Specify Your Terminology Config Wiz-->
|
||||
|
||||
<record id="view_partner_terminology_config_form" model="ir.ui.view">
|
||||
<field name="name">Specify Your Terminology</field>
|
||||
<field name="model">specify.partner.terminology</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.res_config_view_base"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<form position="attributes">
|
||||
<attribute name="string">Specify Your Terminology</attribute>
|
||||
</form>
|
||||
<xpath expr='//separator[@string="title"]' position='attributes'>
|
||||
<attribute name='string'>Specify Your Terminology</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//label[@string='description']"
|
||||
position="attributes">
|
||||
<attribute name="string">Based on the industry needs you can use this wizard to change the terminologies for Partners. </attribute>
|
||||
</xpath>
|
||||
<xpath expr='//separator[@string="vsep"]' position='attributes'>
|
||||
<attribute name='string'></attribute>
|
||||
<attribute name='rowspan'>12</attribute>
|
||||
</xpath>
|
||||
<group string="res_config_contents" position="replace">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="partner" />
|
||||
</group>
|
||||
</group>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_partner_terminology_config_form" model="ir.actions.act_window">
|
||||
<field name="name">Specify Your Terminology</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">specify.partner.terminology</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_partner_terminology_config_form"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<!-- Register configuration wizard -->
|
||||
|
||||
<record id="config_action_partner_terminology_config_form" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_partner_terminology_config_form"/>
|
||||
<field name="type">normal</field>
|
||||
<field name="state">skip</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -207,8 +207,8 @@ class user_preferences_config(osv.osv_memory):
|
|||
help="Set default for new user's timezone, used to perform timezone conversions "
|
||||
"between the server and the client."),
|
||||
'context_lang': fields.selection(_lang_get, 'Language', required=True,
|
||||
help="Sets default language for the new user's user interface, when UI "
|
||||
"translations are available"),
|
||||
help="Sets default language for the all user interface, when UI "
|
||||
"translations are available. If you want to Add new Language, you can add it from 'Load an Official Translation' wizard from 'Administration' menu."),
|
||||
'view': fields.selection([('simple','Simplified'),
|
||||
('extended','Extended')],
|
||||
'Interface', required=True, help= "If you use OpenERP for the first time we strongly advise you to select the simplified interface, which has less features but is easier. You can always switch later from the user preferences." ),
|
||||
|
@ -231,17 +231,10 @@ class user_preferences_config(osv.osv_memory):
|
|||
return res
|
||||
|
||||
def execute(self, cr, uid, ids, context=None):
|
||||
user_obj = self.pool.get('res.users')
|
||||
user_ids = user_obj.search(cr, uid, [], context=context)
|
||||
for o in self.browse(cr, uid, ids, context=context):
|
||||
ir_user_obj = self.pool.get('res.users')
|
||||
ids = ir_user_obj.search(cr, uid, [], context=context)
|
||||
line_datas ={
|
||||
'context_tz' : o.context_tz,
|
||||
'context_lang' : o.context_lang,
|
||||
'view' : o.view,
|
||||
'menu_tips' : o.menu_tips,
|
||||
}
|
||||
ir_user_obj.write(cr , uid, ids , line_datas, context=context)
|
||||
|
||||
user_obj.write(cr , uid, user_ids ,{'context_tz' : o.context_tz, 'context_lang' : o.context_lang, 'view' : o.view, 'menu_tips' : o.menu_tips}, context=context)
|
||||
ir_values_obj = self.pool.get('ir.values')
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'context_tz', ['res.users'], o.context_tz)
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'context_lang', ['res.users'], o.context_lang)
|
||||
|
@ -251,4 +244,77 @@ class user_preferences_config(osv.osv_memory):
|
|||
|
||||
user_preferences_config()
|
||||
|
||||
# Specify Your Terminology
|
||||
|
||||
class specify_partner_terminology(osv.osv_memory):
|
||||
_name = 'specify.partner.terminology'
|
||||
_inherit = 'res.config'
|
||||
_columns = {
|
||||
'partner': fields.selection([('Customer','Customer'),
|
||||
('Client','Client'),
|
||||
('Member','Member'),
|
||||
('Patient','Patient'),
|
||||
('Partner','Partner'),
|
||||
('Donor','Donor'),
|
||||
('Guest','Guest'),
|
||||
('Tenant','Tenant')
|
||||
],
|
||||
'Choose how to call a customer', required=True ),
|
||||
}
|
||||
_defaults={
|
||||
'partner' :'Partner',
|
||||
}
|
||||
|
||||
def make_translations(self, cr, uid, ids, name, type, src, value, res_id=0, context=None):
|
||||
trans_obj = self.pool.get('ir.translation')
|
||||
user_obj = self.pool.get('res.users')
|
||||
context_lang = user_obj.browse(cr, uid, uid, context=context).context_lang
|
||||
existing_trans_ids = trans_obj.search(cr, uid, [('name','=',name), ('lang','=',context_lang), ('type','=',type), ('src','=',src)])
|
||||
if existing_trans_ids:
|
||||
trans_obj.write(cr, uid, existing_trans_ids, {'value': value}, context=context)
|
||||
else:
|
||||
create_id = trans_obj.create(cr, uid, {'name': name,'lang': context_lang, 'type': type, 'src': src, 'value': value , 'res_id': res_id}, context=context)
|
||||
return {}
|
||||
|
||||
def execute(self, cr, uid, ids, context=None):
|
||||
def _case_insensitive_replace(ref_string, src, value):
|
||||
import re
|
||||
pattern = re.compile(src, re.IGNORECASE)
|
||||
return pattern.sub(value, ref_string)
|
||||
trans_obj = self.pool.get('ir.translation')
|
||||
fields_obj = self.pool.get('ir.model.fields')
|
||||
menu_obj = self.pool.get('ir.ui.menu')
|
||||
act_window_obj = self.pool.get('ir.actions.act_window')
|
||||
for o in self.browse(cr, uid, ids, context=context):
|
||||
#translate label of field
|
||||
field_ids = fields_obj.search(cr, uid, [('field_description','ilike','Customer')])
|
||||
for f_id in fields_obj.browse(cr ,uid, field_ids, context=context):
|
||||
field_ref = f_id.model_id.model + ',' + f_id.name
|
||||
self.make_translations(cr, uid, ids, field_ref, 'field', f_id.field_description, _case_insensitive_replace(f_id.field_description,'Customer',o.partner), context=context)
|
||||
#translate help tooltip of field
|
||||
for obj in self.pool.obj_pool.values():
|
||||
for field_name, field_rec in obj._columns.items():
|
||||
if field_rec.help.lower().count('customer'):
|
||||
field_ref = obj._name + ',' + field_name
|
||||
self.make_translations(cr, uid, ids, field_ref, 'help', field_rec.help, _case_insensitive_replace(field_rec.help,'Customer',o.partner), context=context)
|
||||
#translate menuitems
|
||||
menu_ids = menu_obj.search(cr,uid, [('name','ilike','Customer')])
|
||||
for m_id in menu_obj.browse(cr, uid, menu_ids, context=context):
|
||||
menu_name = m_id.name
|
||||
menu_ref = 'ir.ui.menu' + ',' + 'name'
|
||||
self.make_translations(cr, uid, ids, menu_ref, 'model', menu_name, _case_insensitive_replace(menu_name,'Customer',o.partner), res_id=m_id.id, context=context)
|
||||
#translate act window name
|
||||
act_window_ids = act_window_obj.search(cr, uid, [('name','ilike','Customer')])
|
||||
for act_id in act_window_obj.browse(cr ,uid, act_window_ids, context=context):
|
||||
act_ref = 'ir.actions.act_window' + ',' + 'name'
|
||||
self.make_translations(cr, uid, ids, act_ref, 'model', act_id.name, _case_insensitive_replace(act_id.name,'Customer',o.partner), res_id=act_id.id, context=context)
|
||||
#translate act window tooltips
|
||||
act_window_ids = act_window_obj.search(cr, uid, [('help','ilike','Customer')])
|
||||
for act_id in act_window_obj.browse(cr ,uid, act_window_ids, context=context):
|
||||
act_ref = 'ir.actions.act_window' + ',' + 'help'
|
||||
self.make_translations(cr, uid, ids, act_ref, 'model', act_id.help, _case_insensitive_replace(act_id.help,'Customer',o.partner), res_id=act_id.id, context=context)
|
||||
return {}
|
||||
|
||||
specify_partner_terminology()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Customer Relationship Management Details" colspan="4" />
|
||||
<separator string="Customer Relationship Management Features" colspan="4" />
|
||||
<field name="crm_claim" groups="base.group_extended" />
|
||||
<field name="crm_helpdesk" groups="base.group_extended" />
|
||||
<field name="crm_fundraising" groups="base.group_extended" />
|
||||
|
@ -31,7 +31,7 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm.crm_case_section_view_tree"/>
|
||||
<field name="help">Define a Sales Team to organize your different salesmen or sales departments into separate teams. Each team will work in its own list of opportunities, sales orders, etc. Each user can set a default team in his user preferences. The opportunities and sales order displayed, will automatically be filtered according to his team.</field>
|
||||
<field name="help">Define sales teams to structure your sales organization and assign users to each team. You should also define the sales stage to each team. As an example, if you use Solutions Selling techniques to track your opportunities, you can assign the following stage to the team: Territory, Qualified, Qualified Sponsors, Proposition, Negociaton, Won/Lost.</field>
|
||||
</record>
|
||||
|
||||
<record id="crm_case_section_installer_todo" model="ir.actions.todo">
|
||||
|
@ -48,7 +48,7 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm.crm_case_stage_tree"/>
|
||||
<field name="help">Add specific stages to leads and opportunities allowing your sales to better organise their sales pipeline. Stages will allow them to easily track how a specific lead or opportunity is positioned in the sales cycle.</field>
|
||||
<field name="help">Stages will allow salesmen to easily track how a specific opportunity is positioned in the sales cycle. In order to efficiently manage your sales pipeline, it's important to define conditions to go to the next step. Example: to set an opportunity as 'Qualified', you must set the "Expected Revenue" and the "Expected Closing Date." You should also have a look at the tooltip of the field "Change Probability Automatically".</field>
|
||||
</record>
|
||||
|
||||
<record id="crm_case_stage_installer_todo" model="ir.actions.todo">
|
||||
|
|
|
@ -61,9 +61,9 @@
|
|||
</notebook>
|
||||
<group col="6" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button string="Confirm" type="object" name="button_confirm_login" states="draft"/>
|
||||
<button string="Confirm" type="object" name="button_confirm_login" states="draft" icon="gtk-apply"/>
|
||||
<button string="Fetch Emails" type="object" name="button_fetch_mail" states="done"/>
|
||||
<button string="Set to Draft" type="object" name="set_draft"/>
|
||||
<button string="Set to Draft" type="object" name="set_draft" icon="gtk-convert"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Human Resources Details" colspan="4" />
|
||||
<separator string="Human Resources Features" colspan="4" />
|
||||
<field name="hr_holidays"/>
|
||||
<field name="hr_expense" />
|
||||
<field name="hr_recruitment" />
|
||||
|
|
|
@ -333,10 +333,17 @@ class hr_employee(osv.osv):
|
|||
holiday_obj = self.pool.get('hr.holidays')
|
||||
# Find for holidays status
|
||||
status_ids = type_obj.search(cr, uid, [('limit', '=', False)], context=context)
|
||||
if len(status_ids) != 1 :
|
||||
raise osv.except_osv(('warning !'),_("To use this feature, you should have only one leave type without the option 'Allow to Override Limit' set (%s Found).") % (len(status_ids)))
|
||||
status_id = status_ids and status_ids[0] or False
|
||||
if not status_id or diff <= 0:
|
||||
if not status_id:
|
||||
return False
|
||||
if diff > 0:
|
||||
leave_id = holiday_obj.create(cr, uid, {'name': _('Allocation for %s') % employee.name, 'employee_id': employee.id, 'holiday_status_id': status_id, 'type': 'add', 'holiday_type': 'employee', 'number_of_days_temp': diff}, context=context)
|
||||
elif diff < 0:
|
||||
leave_id = holiday_obj.create(cr, uid, {'name': _('Leave Request for %s') % employee.name, 'employee_id': employee.id, 'holiday_status_id': status_id, 'type': 'remove', 'holiday_type': 'employee', 'number_of_days_temp': abs(diff)}, context=context)
|
||||
else:
|
||||
return False
|
||||
leave_id = holiday_obj.create(cr, uid, {'name': 'Allocation for ' + employee.name,'employee_id': employee.id, 'holiday_status_id': status_id, 'type': 'add', 'holiday_type': 'employee', 'number_of_days_temp': diff}, context=context)
|
||||
holiday_obj.holidays_confirm(cr, uid, [leave_id])
|
||||
holiday_obj.holidays_validate2(cr, uid, [leave_id])
|
||||
return True
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- Casual leave -->
|
||||
<record model="hr.holidays.status" id="holiday_status_cl">
|
||||
<field name="name">Legal Leaves</field>
|
||||
<field name="limit">False</field>
|
||||
<field name="color_name">black</field>
|
||||
</record>
|
||||
|
||||
|
@ -20,7 +19,7 @@
|
|||
<!-- Compensatory Days -->
|
||||
<record model="hr.holidays.status" id="holiday_status_comp">
|
||||
<field name="name">Compensatory Days</field>
|
||||
<field name="limit">False</field>
|
||||
<field name="limit">True</field>
|
||||
<field name="color_name">brown</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -451,7 +451,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree string="Assign Leaves" editable="top">
|
||||
<field name="name" string="Employee"/>
|
||||
<field name="remaining_leaves"/>
|
||||
<field name="remaining_leaves" string="Remaining Legal Leaves"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Knowledge Management Details" colspan="4" />
|
||||
<separator string="Knowledge Management Features" colspan="4" />
|
||||
<field name="document_ftp" />
|
||||
<field name="document_webdav" />
|
||||
<field name="wiki" />
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Marketing Details" colspan="4" />
|
||||
<separator string="Marketing Features" colspan="4" />
|
||||
<field name="marketing_campaign" />
|
||||
<field name="email_template" />
|
||||
<field name="crm_profiling" />
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Manufacturing Details" colspan="4" />
|
||||
<separator string="Manufacturing Features" colspan="4" />
|
||||
<field name="stock_location" />
|
||||
<field name="mrp_jit" />
|
||||
<field name="mrp_operations" />
|
||||
|
|
|
@ -639,14 +639,11 @@
|
|||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.view_company_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Configuration" position="inside">
|
||||
<separator string="Other Information" colspan="4"/>
|
||||
<group colspan="4" col="2" >
|
||||
<field name="company_discount" />
|
||||
<newline/>
|
||||
<field name="max_diff" />
|
||||
</group>
|
||||
</page>
|
||||
<field name="currency_id" position="after">
|
||||
<separator string="Point of Sale" colspan="4"/>
|
||||
<field name="company_discount" />
|
||||
<field name="max_diff" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="product.product_normal_form_view"/>
|
||||
<field name="help">Create a product form for everything you buy or sell. Specify a supplier if the product can be purchased.</field>
|
||||
</record>
|
||||
|
||||
<!-- register configuration wizard -->
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Extra Tools Details" colspan="4" />
|
||||
<separator string="Extra Tools Features" colspan="4" />
|
||||
<field name="share" />
|
||||
<field name="lunch" />
|
||||
<field name="idea" />
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Project Management Details" colspan="4" />
|
||||
<separator string="Project Management Features" colspan="4" />
|
||||
<field name="project_issue" />
|
||||
<field name="project_long_term" />
|
||||
<field name="hr_timesheet_sheet" />
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Purchase Management Details" colspan="4" />
|
||||
<separator string="Purchase Management Features" colspan="4" />
|
||||
<field name="purchase_requisition" />
|
||||
<field name="purchase_analytic_plans" />
|
||||
</xpath>
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Advanced Reporting Details" colspan="4" />
|
||||
<separator string="Advanced Reporting Features" colspan="4" />
|
||||
<field name="base_report_designer" />
|
||||
<field name="base_report_creator" />
|
||||
</xpath>
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='product_expiry']" position="after">
|
||||
<xpath expr="//field[@name='report_designer']" position="after">
|
||||
<newline/>
|
||||
<separator string="Sales Management Details" colspan="4" />
|
||||
<separator string="Sales Management Features" colspan="4" />
|
||||
<field name="delivery" />
|
||||
<field name="sale_journal" />
|
||||
<field name="sale_layout" />
|
||||
|
|
Loading…
Reference in New Issue