[MERGE]: Merged with tpa's branch.
bzr revid: uco@tinyerp.com-20120307121804-l01yy3rz3oamcbwh
This commit is contained in:
@@ -6,16 +6,9 @@
|
||||
<field name="name">Sales Application</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.view_res_config_settings"/>
|
||||
<field name="inherit_id" ref="mail.view_sales_config_plugin"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//form/group[@name='crm']/group[@name='plugin']" position="inside">
|
||||
<group col="4" colspan="2">
|
||||
<separator string="Plugins" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="module_plugin_thunderbird"/>
|
||||
<newline/>
|
||||
<field name="module_plugin_outlook"/>
|
||||
</group>
|
||||
<xpath expr="//form/group[@name='crm']/group[@name='plugin']/group[@name='plugins']" position="after">
|
||||
<group col="2" colspan="2" name="emails">
|
||||
<separator string="Emails" colspan="2"/>
|
||||
<field name="fetchmail_crm"/>
|
||||
@@ -31,7 +24,7 @@
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
|
||||
|
||||
<xpath expr="//form/group[@name='crm']/group[@name='plugin']" position="after">
|
||||
<group colspan="4" col="4" name="synchronization">
|
||||
<separator string="Import and Synchronize data from an other application" colspan="4"/>
|
||||
@@ -60,7 +53,7 @@
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem id="base.menu_sale_config" name="Sales" parent="base.menu_config" sequence="1" action="base.action_sale_config"/>
|
||||
|
||||
</data>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<group colspan="2" col="2" name="invoice_data">
|
||||
<separator colspan="2" string="Invoicing Data"/>
|
||||
<field name="to_invoice" widget="selection"/>
|
||||
<field name="pricelist_id" domain="[('type','=','sale')]" attrs="{'required':[('to_invoice','!=',False)]}"/>
|
||||
<field name="pricelist_id" groups="base.group_sale_pricelist_per_customer" domain="[('type','=','sale')]" attrs="{'required':[('to_invoice','!=',False)]}"/>
|
||||
<field name="amount_max"/>
|
||||
</group>
|
||||
<group colspan="2" col="2" name="invoice_stats">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="inherit_id" ref="base.view_res_config_settings"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//form/group[@name='crm']/group[@name='plugin']" position="inside">
|
||||
<group col="4" colspan="2">
|
||||
<group col="4" colspan="2" name="plugins">
|
||||
<separator string="Plugins" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="module_plugin_thunderbird"/>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<page string="Invoicing">
|
||||
<field name="invoice_method" colspan="4"/>
|
||||
<field
|
||||
name="pricelist_id" context="{'product_id':product_id}"
|
||||
name="pricelist_id" groups="base.group_sale_pricelist_per_customer" context="{'product_id':product_id}"
|
||||
attrs="{'readonly':[('invoice_method','=', 'none')]}"/>
|
||||
<field name="partner_invoice_id" attrs="{'readonly':[('invoice_method','=', 'none')]}"/>
|
||||
<!-- <field name="invoice_id"/> -->
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<field name="name">Sales Application</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="mail.view_sale_config_settings"/>
|
||||
<field name="inherit_id" ref="mail.view_sales_config_plugin"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="module_plugin_outlook" position="after">
|
||||
<button name="%(action_outlook_installer)d" type="action" string="Configure Outlook" icon="gtk-execute"/>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<field name="name">Sales Application</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="mail.view_sale_config_settings"/>
|
||||
<field name="inherit_id" ref="mail.view_sales_config_plugin"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="module_plugin_thunderbird" position="after">
|
||||
<button name="%(action_thunderbird_installer)d" type="action" string="Configure Thunderbird" icon="gtk-execute"/>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="shop_id" widget="selection"/>
|
||||
<field name="user_id"/>
|
||||
<field name="pricelist_id" domain="[('type','=','sale')]"/>
|
||||
<field name="pricelist_id" groups="base.group_sale_pricelist_per_customer" domain="[('type','=','sale')]"/>
|
||||
<field name="picking_id" readonly="1" groups="base.group_extended"/>
|
||||
</group>
|
||||
<group colspan="2" col="3">
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<field name="categ_id" widget="selection" operator="child_of" groups="base.group_extended"/>
|
||||
<newline/>
|
||||
<group expand="0" string="Context..." groups="base.group_extended">
|
||||
<field name="pricelist_id" widget="selection" context="{'pricelist': self}" />
|
||||
<field name="pricelist_id" widget="selection" context="{'pricelist': self}" groups="base.group_sale_pricelist_per_customer"/>
|
||||
<separator orientation="vertical" groups="base.group_multi_company" />
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company" />
|
||||
</group>
|
||||
@@ -552,7 +552,7 @@
|
||||
<field name="product_uom"/>
|
||||
<field name="delay"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
<field colspan="4" groups="base.group_extended" name="pricelist_ids" nolabel="1" widget="one2many_list">
|
||||
<field colspan="4" groups="base.group_sale_pricelist_per_customer" name="pricelist_ids" nolabel="1" widget="one2many_list">
|
||||
<tree editable="bottom" string="Pricelist">
|
||||
<field name="min_quantity"/>
|
||||
<field name="price"/>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
name="Price List"
|
||||
res_model="product.price_list"
|
||||
src_model="product.product"
|
||||
groups="base.group_sale_pricelist_per_customer"
|
||||
view_mode="form" target="new" view_type="form" />
|
||||
|
||||
</data>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<field name="warn_customer" position="after">
|
||||
<group colspan="4" col="4">
|
||||
<separator colspan="4" string="Invoicing Data"/>
|
||||
<field name="pricelist_id" domain="[('type','=','sale')]" widget="selection"/>
|
||||
<field name="pricelist_id" groups="base.group_sale_pricelist_per_customer" domain="[('type','=','sale')]" widget="selection"/>
|
||||
<field name="to_invoice" widget="selection" string="Invoice Task Work"/>
|
||||
<field name="amount_max" groups="base.group_extended"/>
|
||||
<field name="amount_invoiced" groups="base.group_extended"/>
|
||||
|
||||
+28
-45
@@ -27,13 +27,13 @@ class sale_configuration(osv.osv_memory):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
_columns = {
|
||||
'sale_orders': fields.boolean('Based on Sales Orders',
|
||||
'sale_orders': fields.boolean('Based on Sales Orders',
|
||||
help="To allow your salesman to make invoices for sale order lines using 'Lines to Invoice' menu."),
|
||||
'deli_orders': fields.boolean('Based on Delivery Orders',
|
||||
help="To allow your salesman to make invoices for Delivery Orders using 'Deliveries to Invoice' menu."),
|
||||
'task_work': fields.boolean('Based on Tasks\' Work',
|
||||
help="""Lets you transfer the entries under tasks defined for Project Management to
|
||||
the Timesheet line entries for particular date and particular user with the effect of creating, editing and deleting either ways
|
||||
the Timesheet line entries for particular date and particular user with the effect of creating, editing and deleting either ways
|
||||
and to automatically creates project tasks from procurement lines.
|
||||
It installs the project_timesheet and project_mrp modules."""),
|
||||
'module_account_analytic_analysis': fields.boolean('Based on Timesheet',
|
||||
@@ -43,7 +43,7 @@ class sale_configuration(osv.osv_memory):
|
||||
'default_order_policy': fields.selection([
|
||||
('manual', 'Invoice Based on Sales Orders'),
|
||||
('picking', 'Invoice Based on Deliveries'),
|
||||
], 'Main Method Based On', required=True, default_model='sale.order',
|
||||
], 'Main Method Based On', required=True, default_model='sale.order',
|
||||
help="You can generate invoices based on sales orders or based on shippings."),
|
||||
'module_delivery': fields.boolean('Do you charge the delivery?',
|
||||
help ="""
|
||||
@@ -52,7 +52,7 @@ class sale_configuration(osv.osv_memory):
|
||||
It installs the delivery module.
|
||||
"""),
|
||||
'time_unit': fields.many2one('product.uom','Working Time Unit'),
|
||||
'default_picking_policy' : fields.boolean("Deliver all products at once?", default_model='sale.order',
|
||||
'default_picking_policy' : fields.boolean("Deliver all products at once?", default_model='sale.order',
|
||||
help = "You can set picking policy on sale order that will allow you to deliver all products at once."),
|
||||
'group_sale_delivery_address':fields.boolean("Multiple Address", group='base.group_user', implied_group='base.group_sale_delivery_address',
|
||||
help="Allows you to set different delivery address and invoice address. It assigns Multiple Address group to all employees."),
|
||||
@@ -60,7 +60,7 @@ class sale_configuration(osv.osv_memory):
|
||||
help="This allows you to apply discounts per sale order lines, it assigns Discounts per sale order lines group to all employees."),
|
||||
'module_sale_layout':fields.boolean("Notes & subtotals per line",help="Allows to format sale order lines using notes, separators, titles and subtotals. It installs the sale_layout module."),
|
||||
'module_warning': fields.boolean("Alerts by products or customers",
|
||||
help="""To raise user specific warning messages on different products used in Sales Orders, Purchase Orders, Invoices and Deliveries.
|
||||
help="""To raise user specific warning messages on different products used in Sales Orders, Purchase Orders, Invoices and Deliveries.
|
||||
It installs the warning module."""),
|
||||
'module_sale_margin': fields.boolean("Display Margin For Users",
|
||||
help="""This adds the 'Margin' on sales order.
|
||||
@@ -71,7 +71,7 @@ class sale_configuration(osv.osv_memory):
|
||||
It installs the sale_journal module."""),
|
||||
'module_analytic_user_function' : fields.boolean("User function by contracts",
|
||||
help="""Allows you to define what is the default function of a specific user on a given account.
|
||||
This is mostly used when a user encodes his timesheet. The values are retrieved and the fields are auto-filled.
|
||||
This is mostly used when a user encodes his timesheet. The values are retrieved and the fields are auto-filled.
|
||||
But the possibility to change these values is still available.
|
||||
It installs analytic_user_function module."""),
|
||||
'module_analytic_journal_billing_rate' : fields.boolean("Billing rates by contracts",
|
||||
@@ -82,13 +82,16 @@ class sale_configuration(osv.osv_memory):
|
||||
('no_tax', 'No Tax'),
|
||||
('global_on_order', 'Global On Order'),
|
||||
('on_order_line', 'On Order Lines'),
|
||||
], 'Taxes', required=True,
|
||||
], 'Taxes', required=True,
|
||||
help="""
|
||||
If you want to apply global tax on sale order then select 'Global On Order' it will add 'Global On Order' group to employees.
|
||||
If you want to apply different taxes for sale order lines then select 'On Order Lines' it will add 'On Order Lines' group to employees.
|
||||
"""),
|
||||
'group_sale_taxes_global_on_order':fields.boolean("Global on order", group='base.group_user', implied_group='base.group_sale_taxes_global_on_order'),
|
||||
'group_sale_taxes_on_order_line':fields.boolean("On order line", group='base.group_user', implied_group='base.group_sale_taxes_on_order_line'),
|
||||
'module_project_timesheet': fields.boolean("Project Timesheet"),
|
||||
'module_project_mrp': fields.boolean("Project mrp"),
|
||||
|
||||
}
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
@@ -131,7 +134,7 @@ class sale_configuration(osv.osv_memory):
|
||||
'time_unit': lambda self, cr, uid, c: self.pool.get('product.uom').search(cr, uid, [('name', '=', _('Hour'))], context=c) and self.pool.get('product.uom').search(cr, uid, [('name', '=', _('Hour'))], context=c)[0] or False,
|
||||
'tax_policy': 'global_on_order',
|
||||
}
|
||||
|
||||
|
||||
def _check_default_tax(self, cr, uid, context=None):
|
||||
ir_values_obj = self.pool.get('ir.values')
|
||||
for tax in ir_values_obj.get(cr, uid, 'default', False, ['product.product']):
|
||||
@@ -156,7 +159,7 @@ class sale_configuration(osv.osv_memory):
|
||||
menu_id = data_obj.get_object(cr, uid, 'sale', 'menu_action_picking_list_to_invoice').id
|
||||
menu_obj.write(cr, uid, menu_id, {'groups_id':[(4,group_id)]})
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'groups_id', ['ir.ui.menu'], [(4,group_id)])
|
||||
|
||||
|
||||
if wizard.default_picking_policy:
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'picking_policy', ['sale.order'], 'one')
|
||||
|
||||
@@ -171,7 +174,18 @@ class sale_configuration(osv.osv_memory):
|
||||
self.pool.get('res.company').write(cr, uid, [company_id], {
|
||||
'project_time_mode_id': wizard.time_unit.id
|
||||
}, context=context)
|
||||
|
||||
|
||||
return res
|
||||
|
||||
def onchange_task_work(self, cr, uid, ids, task_work, context=None):
|
||||
res = {'value': {}}
|
||||
if task_work:
|
||||
res['value'].update({'module_project_timesheet': True})
|
||||
res['value'].update({'module_project_mrp': True})
|
||||
else:
|
||||
res['value'].update({'module_project_timesheet': False})
|
||||
res['value'].update({'module_project_mrp': False})
|
||||
|
||||
return res
|
||||
|
||||
def onchange_tax_policy(self, cr, uid, ids, tax_policy, context=None):
|
||||
@@ -180,12 +194,15 @@ class sale_configuration(osv.osv_memory):
|
||||
self.set_tax_policy(cr, uid, ids, context=context)
|
||||
if tax_policy == 'global_on_order':
|
||||
res['value'].update({'group_sale_taxes_global_on_order': True})
|
||||
res['value'].update({'group_sale_taxes_on_order_line': False})
|
||||
|
||||
elif tax_policy == 'on_order_line':
|
||||
res['value'].update({'group_sale_taxes_on_order_line': True})
|
||||
res['value'].update({'group_sale_taxes_global_on_order': False})
|
||||
else:
|
||||
res['value'].update({'group_sale_taxes_on_order_line': False, 'group_sale_taxes_global_on_order': False})
|
||||
return res
|
||||
|
||||
|
||||
def set_default_taxes(self, cr, uid, ids, context=None):
|
||||
ir_values_obj = self.pool.get('ir.values')
|
||||
taxes = self._check_default_tax(cr, uid, context=context)
|
||||
@@ -193,40 +210,6 @@ class sale_configuration(osv.osv_memory):
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'tax_id', ['sale.order'], taxes[0])
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'tax_id', ['sale.order.line'], taxes)
|
||||
ir_values_obj.set(cr, uid, 'default', False, 'taxes_id', ['product.product'], taxes)
|
||||
|
||||
#TODO: TO BE REMOVED
|
||||
# def set_tax_policy(self, cr, uid, ids, context=None):
|
||||
# data_obj = self.pool.get('ir.model.data')
|
||||
# users_obj = self.pool.get('res.users')
|
||||
# groups_obj = self.pool.get('res.groups')
|
||||
# ir_values_obj = self.pool.get('ir.values')
|
||||
# dummy,user_group_id = data_obj.get_object_reference(cr, uid, 'base', 'group_user')
|
||||
# tax_policy = self.browse(cr, uid, ids[0], context=context).tax_policy
|
||||
# order_group_id = data_obj.get_object(cr, uid, 'base', 'group_sale_taxes_global_on_order').id
|
||||
# order_line_group_id = data_obj.get_object(cr, uid, 'base', 'group_sale_taxes_on_order_line').id
|
||||
# group_id = False
|
||||
# remove_group_id = False
|
||||
#
|
||||
# if tax_policy == 'global_on_order':
|
||||
# group_id = order_group_id
|
||||
# remove_group_id = order_line_group_id
|
||||
# elif tax_policy == 'on_order_line':
|
||||
# group_id = order_line_group_id
|
||||
# remove_group_id = order_group_id
|
||||
#
|
||||
# if group_id:
|
||||
# groups_obj.write(cr, uid, [user_group_id], {'implied_ids': [(4,group_id)]})
|
||||
# users_obj.write(cr, uid, [uid], {'groups_id': [(4,group_id)]})
|
||||
# ir_values_obj.set(cr, uid, 'default', False, 'groups_id', ['res.users'], [(4,group_id)])
|
||||
# groups_obj.write(cr, uid, [user_group_id], {'implied_ids': [(3,remove_group_id)]})
|
||||
# users_obj.write(cr, uid, [uid], {'groups_id': [(3,remove_group_id)]})
|
||||
# ir_values_obj.set(cr, uid, 'default', False, 'groups_id', ['res.users'], [(3,remove_group_id)])
|
||||
# else:
|
||||
# groups = [order_group_id, order_line_group_id]
|
||||
# for group_id in groups:
|
||||
# groups_obj.write(cr, uid, [user_group_id], {'implied_ids': [(3,group_id)]})
|
||||
# users_obj.write(cr, uid, [uid], {'groups_id': [(3,group_id)]})
|
||||
# ir_values_obj.set(cr, uid, 'default', False, 'groups_id', ['res.users'], [(3,group_id)])
|
||||
|
||||
sale_configuration()
|
||||
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
<newline/>
|
||||
<field name="deli_orders"/>
|
||||
<newline/>
|
||||
<field name="task_work"/>
|
||||
<field name="task_work" on_change="onchange_task_work(task_work)"/>
|
||||
<field name="module_project_timesheet" invisible="1"/>
|
||||
<field name="module_project_mrp" invisible="1"/>
|
||||
<newline/>
|
||||
<field name="module_account_analytic_analysis"/>
|
||||
<newline/>
|
||||
@@ -40,6 +42,8 @@
|
||||
<group col="2" colspan="1">
|
||||
<field name="tax_policy" on_change="onchange_tax_policy(tax_policy)"/>
|
||||
</group>
|
||||
<field name="group_sale_taxes_global_on_order" invisible="1"/>
|
||||
<field name="group_sale_taxes_on_order_line" invisible="1"/>
|
||||
<newline/>
|
||||
<field name="module_sale_margin"/>
|
||||
<newline/>
|
||||
@@ -63,7 +67,7 @@
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem id="base.menu_sale_config" name="Sales" parent="base.menu_config" sequence="1" action="base.action_sale_config"/>
|
||||
|
||||
</data>
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
ref('base.group_sale_delivery_address'),
|
||||
ref('base.group_sale_disc_per_sale_order_line'),
|
||||
ref('base.group_sale_taxes_global_on_order'),
|
||||
ref('base.group_sale_taxes_on_order_line'),
|
||||
])]"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, False, parent.date_order, product_packaging, parent.fiscal_position, True, context)"/>
|
||||
<field name="product_uom"
|
||||
nolabel="1"
|
||||
groups="base.group_sale_uom_per_product"
|
||||
required="0"
|
||||
attrs="{'invisible':[('layout_type','!=','article')], 'required':[('layout_type','not in',['title','text','subtotal','line','break'])]}"
|
||||
on_change="product_uom_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, False, parent.date_order, context)"/>
|
||||
@@ -99,7 +100,7 @@
|
||||
<tree string="Sales order lines">
|
||||
<field colspan="4" name="name"/>
|
||||
<field name="product_uom_qty" string="Qty"/>
|
||||
<field name="product_uom" string="UoM"/>
|
||||
<field name="product_uom" string="UoM" groups="base.group_sale_uom_per_product"/>
|
||||
<field name="discount"/>
|
||||
<field name="price_unit"/>
|
||||
<!-- field name="price_net"/-->
|
||||
|
||||
Reference in New Issue
Block a user