usability improvement for crm, product, sale
bzr revid: rga@rga-desktop-20100525103859-a6hnc19h4m2rzfeq
This commit is contained in:
parent
6df9520176
commit
d11e854163
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
|
||||
<!-- Attendee form view-->
|
||||
|
||||
<record id="base_calendar_attendee_form_view" model="ir.ui.view">
|
||||
|
@ -24,7 +24,7 @@
|
|||
<field name="user_id" string="Invited User"/>
|
||||
<newline/>
|
||||
<field name="partner_address_id"
|
||||
string="Partner Contact" />
|
||||
string="Contact" />
|
||||
<field name="partner_id"
|
||||
string="Partner" readonly="1" />
|
||||
</group>
|
||||
|
@ -67,7 +67,7 @@
|
|||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Attendee tree view-->
|
||||
|
||||
<record id="base_calendar_attendee_tree_view" model="ir.ui.view">
|
||||
|
@ -86,9 +86,9 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Attendee search view-->
|
||||
|
||||
|
||||
<record id="base_calendar_attendee_search_view" model="ir.ui.view">
|
||||
<field name="name">calendar.attendee.search</field>
|
||||
<field name="model">calendar.attendee</field>
|
||||
|
@ -108,23 +108,19 @@
|
|||
<field name="cutype" string="Invitation type" select="1"/>
|
||||
<field name="event_date" select="1"/>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="16">
|
||||
<filter string="Type" icon="terp-project" help="Invitation Type"
|
||||
domain="[]" context="{'group_by':'cutype'}" />
|
||||
<filter string="Role" icon="terp-project"
|
||||
domain="[]" context="{'group_by':'role'}" />
|
||||
<filter string="Required Reply" icon="terp-crm"
|
||||
domain="[]" context="{'group_by':'rsvp'}" />
|
||||
<separator orientation="vertical" />
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="User" icon="terp-partner" domain="[]"
|
||||
context="{'group_by':'user_id'}" />
|
||||
<filter string="Contact" icon="terp-partner" domain="[]"
|
||||
context="{'group_by':'partner_address_id'}" />
|
||||
<filter string="Type" icon="terp-project" help="Invitation Type"
|
||||
domain="[]" context="{'group_by':'cutype'}" />
|
||||
<filter string="State" icon="terp-project" help="Invitation Type"
|
||||
domain="[]" context="{'group_by':' state'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_view_attendee_form" model="ir.actions.act_window">
|
||||
<field name="name">Event Invitations</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
@ -136,12 +132,12 @@
|
|||
</record>
|
||||
|
||||
<!-- Calenadar's menu -->
|
||||
|
||||
|
||||
<menuitem id="base.menu_calendar_configuration" name="Calendar"
|
||||
parent="base.menu_base_config" sequence="10" />
|
||||
|
||||
<!-- Invitation menu -->
|
||||
|
||||
|
||||
<menuitem id="menu_attendee_invitations"
|
||||
name="Event Invitations" parent="base.menu_calendar_configuration"
|
||||
sequence="10" action="action_view_attendee_form" />
|
||||
|
@ -181,7 +177,6 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_res_alarm_view" model="ir.actions.act_window">
|
||||
<field name="name">Available Alarms</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
@ -189,7 +184,7 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Menu for Alarms-->
|
||||
|
||||
<menuitem id="menu_crm_meeting_avail_alarm"
|
||||
|
@ -296,7 +291,7 @@
|
|||
nolabel="1" widget="one2many" mode="tree,form">
|
||||
<tree string="Invitation details" editable="top">
|
||||
<field name="email" />
|
||||
<field name="role" select="1" />
|
||||
<field name="role" width="200" select="1" />
|
||||
<field name="state" />
|
||||
</tree>
|
||||
<form string="Invitation details">
|
||||
|
|
|
@ -75,24 +75,23 @@
|
|||
<field name="name" string="Summary"/>
|
||||
<field name="date" string="Planned Date"/>
|
||||
<field name="user_id"/>
|
||||
<button string="Schedule a Meeting"
|
||||
name="action_make_meeting"
|
||||
icon="gtk-redo"
|
||||
type="object" />
|
||||
<button string="Convert to Opportunity"
|
||||
name="%(phonecall2opportunity_act)d"
|
||||
icon="gtk-index" type="action"
|
||||
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
|
||||
|
||||
<field name="partner_phone"/>
|
||||
<field name="duration"/>
|
||||
<field name="section_id" colspan="1" widget="selection" />
|
||||
<button string="Convert to Opportunity"
|
||||
name="%(phonecall2opportunity_act)d"
|
||||
icon="gtk-index" type="action"
|
||||
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
|
||||
<button string="Schedule a Meeting"
|
||||
name="action_make_meeting"
|
||||
icon="gtk-redo"
|
||||
type="object" />
|
||||
<label colspan="6" string=""/>
|
||||
<button string="Schedule Other Call"
|
||||
icon="gtk-redo"
|
||||
name="%(phonecall_to_phonecall_act)d"
|
||||
type="action" />
|
||||
|
||||
</group>
|
||||
<group col="3" colspan="2">
|
||||
<separator colspan="3" string="Contacts" />
|
||||
|
@ -150,18 +149,17 @@
|
|||
<field name="name" string="Summary"/>
|
||||
<field name="date" string="Planned Date"/>
|
||||
<field name="user_id"/>
|
||||
<button string="Convert to Opportunity"
|
||||
name="%(phonecall2opportunity_act)d"
|
||||
icon="gtk-index" type="action"
|
||||
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
|
||||
<field name="partner_phone"/>
|
||||
<field name="duration"/>
|
||||
<field name="section_id" colspan="1" widget="selection" />
|
||||
<button string="Schedule a Meeting"
|
||||
name="action_make_meeting"
|
||||
icon="gtk-redo"
|
||||
type="object" />
|
||||
|
||||
<field name="partner_phone"/>
|
||||
<field name="duration"/>
|
||||
<field name="section_id" colspan="1" widget="selection" />
|
||||
<button string="Convert to Opportunity"
|
||||
name="%(phonecall2opportunity_act)d"
|
||||
icon="gtk-index" type="action"
|
||||
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
|
||||
<label colspan="6" string=""/>
|
||||
<button string="Schedule Other Call"
|
||||
icon="gtk-redo"
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
<menuitem id="base.menu_crm_configuration" name="Cases"
|
||||
parent="base.menu_base_config" sequence="0" groups="base.group_extended"/>
|
||||
|
||||
<menuitem id="base.menu_crm_sales" name="Sales"
|
||||
parent="base.menu_base_config" sequence="0" groups="base.group_extended"/>
|
||||
|
||||
<menuitem id="base.next_id_64" name="Reporting"
|
||||
parent="base.menu_base_partner" sequence="8" />
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
help="My section" />
|
||||
|
||||
</field>
|
||||
<field name="company_id" widget="selection">
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company">
|
||||
<filter icon="terp-crm"
|
||||
context="{'invisible_section': False}"
|
||||
domain="[('section_id.user_id.company_id','=',uid)]"
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
help="My section" />
|
||||
|
||||
</field>
|
||||
<field name="company_id" widget="selection">
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company">
|
||||
<filter icon="terp-crm"
|
||||
context="{'invisible_section': False}"
|
||||
domain="[('section_id.user_id.company_id','=',uid)]"
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
<field name="date_planned"/>
|
||||
<field name="warehouse_id" colspan="4"/>
|
||||
<newline/>
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Cancel" />
|
||||
|
|
|
@ -12,15 +12,15 @@
|
|||
<field name="user_salesman_id" />
|
||||
<field name="partner_id" on_change="onchange_partner_pricelist(partner_id)"/>
|
||||
<field name="contract_number" groups="base.group_extended"/>
|
||||
|
||||
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Sale Order ">
|
||||
<page string="Sale Order ">
|
||||
<field name="lines" colspan="4" nolabel="1">
|
||||
<tree string="Order lines" editable="bottom">
|
||||
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,qty,parent.partner_id)" width="275" />
|
||||
<field name="qty" />
|
||||
<field name="qty_rfd" groups="base.group_extended"/>
|
||||
<field name="qty_rfd" groups="base.group_extended"/>
|
||||
<field name="discount" on_change="onchange_discount(discount,price_unit)" />
|
||||
<field name="price_ded" on_change="onchange_ded(price_ded, price_unit)" />
|
||||
<field name="price_unit" readonly="1"/>
|
||||
|
@ -729,7 +729,7 @@
|
|||
<field name="expense_pdt"/>
|
||||
<field name="am_out"/>
|
||||
<field name="disc_controle"/>
|
||||
<field name="company_id" groups="base.group_extended,base.group_multi_company""/>
|
||||
<field name="company_id" groups="base.group_extended,base.group_multi_company"/>
|
||||
</group>
|
||||
<group colspan="2" col="2" name="Prices">
|
||||
<separator string="Prices" colspan="2"/>
|
||||
|
|
|
@ -262,7 +262,7 @@ class product_template(osv.osv):
|
|||
'produce_delay': fields.float('Manufacturing Lead Time', help="Average time to produce this product. This is only for the production order and, if it is a multi-level bill of material, it's only for the level of this product. Different lead times will be summed for all levels and purchase orders."),
|
||||
'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procurement Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."),
|
||||
'rental': fields.boolean('Can be Rent'),
|
||||
'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]"),
|
||||
'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"),
|
||||
'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Sale Price'), help="Base price for computing the customer price. Sometimes called the catalog price."),
|
||||
'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Account'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price."),
|
||||
'volume': fields.float('Volume', help="The volume in m3."),
|
||||
|
@ -586,7 +586,7 @@ class product_packaging(osv.osv):
|
|||
_rec_name = 'ean'
|
||||
_columns = {
|
||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of packaging."),
|
||||
'name' : fields.char('Description', size=64),
|
||||
'name' : fields.text('Description', size=64),
|
||||
'qty' : fields.float('Quantity by Package',
|
||||
help="The total number of products you can put by pallet or box."),
|
||||
'ul' : fields.many2one('product.ul', 'Type of Package', required=True),
|
||||
|
@ -645,9 +645,9 @@ class product_supplierinfo(osv.osv):
|
|||
_name = "product.supplierinfo"
|
||||
_description = "Information about a product supplier"
|
||||
_columns = {
|
||||
'name' : fields.many2one('res.partner', 'Partner', required=True, ondelete='cascade', help="Supplier of this product"),
|
||||
'product_name': fields.char('Partner Product Name', size=128, help="This partner's product name will be used when printing a request for quotation. Keep empty to use the internal one."),
|
||||
'product_code': fields.char('Partner Product Code', size=64, help="This partner's product code will be used when printing a request for quotation. Keep empty to use the internal one."),
|
||||
'name' : fields.many2one('res.partner', 'Supplier', required=True, ondelete='cascade', help="Supplier of this product"),
|
||||
'product_name': fields.char('Supplier Product Name', size=128, help="This supplier's product name will be used when printing a request for quotation. Keep empty to use the internal one."),
|
||||
'product_code': fields.char('Supplier Product Code', size=64, help="This supplier's product code will be used when printing a request for quotation. Keep empty to use the internal one."),
|
||||
'sequence' : fields.integer('Sequence', help="Assigns the priority to the list of product supplier."),
|
||||
'qty' : fields.float('Minimal Quantity', required=True, help="The minimal quantity to purchase to this supplier, expressed in the default unit of measure."),
|
||||
'product_id' : fields.many2one('product.template', 'Product', required=True, ondelete='cascade', select=True),
|
||||
|
|
|
@ -17,18 +17,22 @@
|
|||
<field name="default_code"/>
|
||||
<field name="name"/>
|
||||
<field name="categ_id" widget="selection" operator="child_of"/>
|
||||
<newline/>
|
||||
<group col='8' colspan='15' expand='1' string='Group by...'>
|
||||
<newline/>
|
||||
<group expand="0" string="Extended filters..." groups="base.group_extended">
|
||||
<field name="pricelist_id" widget="selection" context="{'pricelist': self}" />
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand='0' string='Group by...' groups="base.group_extended">
|
||||
<filter string='Category' icon="terp-stock" domain="[]" context="{'group_by' : 'categ_id'}" />
|
||||
<separator orientation="vertical"/>
|
||||
<filter string='Default UOM' icon="terp-stock" domain="[]" context="{'group_by' : 'uom_id'}" />
|
||||
<separator orientation="vertical"/>
|
||||
<filter string='Type' icon="terp-stock" domain="[]" context="{'group_by' : 'type'}" />
|
||||
</group>
|
||||
<newline/>
|
||||
<newline/>
|
||||
<group col='8' colspan='14' expand="0" string="Extended options..." groups="base.group_extended">
|
||||
<field name="pricelist_id" widget="selection" context="{'pricelist': self}" />
|
||||
</group>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -104,7 +108,7 @@
|
|||
</group>
|
||||
|
||||
<group colspan="2" col="2" name="uom">
|
||||
<separator string="UOM" colspan="2"/>
|
||||
<separator string="Unit of Measure" colspan="2"/>
|
||||
<field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" widget="selection"/>
|
||||
<field name="uom_po_id" widget="selection"/>
|
||||
</group>
|
||||
|
@ -139,7 +143,7 @@
|
|||
|
||||
</page>
|
||||
<page string="Prices & Suppliers">
|
||||
<separator string="Base Prices" colspan="4"/>
|
||||
<separator string=" Base Prices" colspan="4"/>
|
||||
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
|
||||
<field name="list_price"/>
|
||||
<newline/>
|
||||
|
@ -175,8 +179,8 @@
|
|||
<field name="height"/>
|
||||
<field name="width"/>
|
||||
<field name="length"/>
|
||||
<separator colspan="4" string="Other Info"/>
|
||||
<field colspan="4" name="name"/>
|
||||
<separator colspan="4" string="Description"/>
|
||||
<field colspan="4" name="name" nolabel="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
|
|
|
@ -10,16 +10,17 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Price list">
|
||||
<field name="price_list" />
|
||||
<field name="price_list" widget="selection"/>
|
||||
<field name="qty1" colspan="2" />
|
||||
<field name="qty2" colspan="2" />
|
||||
<field name="qty3" colspan="2" />
|
||||
<field name="qty4" colspan="2" />
|
||||
<field name="qty5" colspan="2" />
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="Close" />
|
||||
<button name="print_report" string="Print Report"
|
||||
colspan="1" type="object" icon="gtk-print" />
|
||||
<separator colspan="4"/>
|
||||
<group col="2" colspan="4">
|
||||
<button icon="gtk-cancel" special="cancel" string="Close"/>
|
||||
<button name="print_report" string="Print Report" type="object" icon="gtk-print"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -227,7 +227,7 @@ class sale_order(osv.osv):
|
|||
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)]}, required=True, change_default=True, select=True),
|
||||
'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}),
|
||||
'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="The name and address of the contact who requested the order or quotation."),
|
||||
'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}),
|
||||
'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sale order"),
|
||||
|
||||
'incoterm': fields.selection(_incoterm_get, 'Incoterm', size=3),
|
||||
'picking_policy': fields.selection([('direct', 'Partial Delivery'), ('one', 'Complete Delivery')],
|
||||
|
@ -243,7 +243,7 @@ class sale_order(osv.osv):
|
|||
- The 'Shipping & Manual Invoice' will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
|
||||
- The 'Invoice on Order After Delivery' choice will generate the draft invoice based on sale order after all picking lists have been finished.
|
||||
- The 'Invoice from the picking' choice is used to create an invoice during the picking process."""),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current sale order"),
|
||||
'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),
|
||||
|
||||
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)]}),
|
||||
|
@ -824,7 +824,7 @@ class sale_order_line(osv.osv):
|
|||
'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'address_allotment_id': fields.many2one('res.partner.address', 'Allotment Partner'),
|
||||
'product_uom_qty': fields.float('Quantity (UoM)', digits=(16, 2), required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'product_uom': fields.many2one('product.uom', 'Product UoM', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'product_uom': fields.many2one('product.uom', 'Unit of Measure ', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'product_uos_qty': fields.float('Quantity (UoS)', readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'product_uos': fields.many2one('product.uom', 'Product UoS'),
|
||||
'product_packaging': fields.many2one('product.packaging', 'Packaging'),
|
||||
|
@ -1036,7 +1036,7 @@ class sale_order_line(osv.osv):
|
|||
if product_obj.uos_id.category_id.id != uos2.category_id.id:
|
||||
uos = False
|
||||
else:
|
||||
uos = False
|
||||
uos = False
|
||||
if product_obj.description_sale:
|
||||
result['notes'] = product_obj.description_sale
|
||||
fpos = fiscal_position and self.pool.get('account.fiscal.position').browse(cr, uid, fiscal_position) or False
|
||||
|
|
|
@ -380,7 +380,8 @@
|
|||
<field name="delay" groups="base.group_extended"/>
|
||||
<field name="price_subtotal"/>
|
||||
<field name="th_weight"/>
|
||||
<field colspan="4" name="tax_id" domain="[('parent_id','=',False),('type_tax_use','<>','purchase')]"/>
|
||||
<separator colspan="4" string="Taxes"/>
|
||||
<field colspan="4" name="tax_id" domain="[('parent_id','=',False),('type_tax_use','<>','purchase')]" nolabel="1"/>
|
||||
<separator colspan="4" string="States"/>
|
||||
<field name="state"/>
|
||||
<group col="2" colspan="2">
|
||||
|
@ -397,12 +398,12 @@
|
|||
<!-- <page string="Properties" groups="base.group_extended">-->
|
||||
<!-- <field name="property_ids" nolabel="1"/>-->
|
||||
<!-- </page>-->
|
||||
<page string="Notes">
|
||||
<field colspan="4" name="notes" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Invoice Lines" groups="base.group_extended">
|
||||
<field colspan="4" name="invoice_lines" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field colspan="4" name="notes" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
|
@ -443,10 +444,14 @@
|
|||
<filter icon="terp-purchase" string="Shipped"
|
||||
domain="[('state','=','done')]"
|
||||
name="unshipped"
|
||||
separator="1" />
|
||||
/>
|
||||
<filter icon="terp-purchase" string="Uninvoiced" name="uninvoiced"
|
||||
domain="[('invoiced','<>', 1),('state','<>','draft'),('state','<>','cancel')]"
|
||||
separator="1" />
|
||||
domain="[('invoiced','<>', 1),('state','<>','draft'),('state','<>','cancel')]"
|
||||
/>
|
||||
<filter icon="terp-purchase" string="Sale Order"
|
||||
domain="[('state','=','confirmed')]"
|
||||
name="sale order"
|
||||
/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="order_id"/>
|
||||
<field name="order_partner_id"/>
|
||||
|
@ -468,7 +473,6 @@
|
|||
<field name="res_model">sale.order.line</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,graph</field>
|
||||
<field name="context">{"search_default_uninvoiced":1,"search_default_unshipped":1}</field>
|
||||
<field name="search_view_id" ref="view_sales_order_uninvoiced_line_filter" />
|
||||
<field name="filter" eval="True"/>
|
||||
</record>
|
||||
|
|
Loading…
Reference in New Issue