[IMP] better useability
authorFabien Pinckaers <fp@tinyerp.com>
Mon, 21 Jun 2010 21:20:55 +0000 (23:20 +0200)
committerFabien Pinckaers <fp@tinyerp.com>
Mon, 21 Jun 2010 21:20:55 +0000 (23:20 +0200)
bzr revid: fp@tinyerp.com-20100621212055-qxs8t6d1u6q73qwz

addons/crm/report/crm_lead_report_view.xml
addons/purchase/purchase.py
addons/purchase/purchase_view.xml
addons/sale/sale_view.xml
addons/stock/stock.py
addons/stock/stock_view.xml

index b911932..5292b29 100644 (file)
@@ -43,7 +43,7 @@
                     <field name="name" select="1"/>
                     <field name="month" select="1"/>
                     <field name="user_id" select="1"/>
-                                       <field name="section_id" select="1"/>
+                    <field name="section_id" select="1"/>
                     <field name="nbr" select="1"/>
                     <field name="delay_close"/>
                     <field name="stage_id"/>
 
 <!-- Leads by user and section Search View -->
 
-               <record id="view_report_crm_lead_filter" model="ir.ui.view">
+        <record id="view_report_crm_lead_filter" model="ir.ui.view">
             <field name="name">crm.lead.report.select</field>
             <field name="model">crm.lead.report</field>
             <field name="type">search</field>
             <field name="arch" type="xml">
                 <search string="Leads Analysis">
                     <group col="16" colspan="8">
-                           <filter string="Last 365 Days" icon="terp-go-year"
-                                       domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"/>
+                           <filter string="Last 365 Days" icon="terp-go-year"
+                               domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"/>
                         <filter string="Last 30 Days" icon="terp-go-month" name="This Month"
-                           domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"/>
+                            domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"/>
                         <filter icon="terp-go-week" string="7 Days" separator="1"
                             domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"/>
-                               <separator orientation="vertical" />
+                           <separator orientation="vertical" />
                         <filter icon="terp-check"
-                               string="Current"
-                               domain="[('state','in',('draft','open')]"/>
-                                           <filter icon="terp-check"
-                               string="Pending"
-                               domain="[('state','=','pending')]"/>
-                               <separator orientation="vertical" />
-                               <field name="section_id"
-                                       default="context.get('section_id', False)"
-                                       widget="selection"
-                                       context="{'invisible_section': False}">
-                               <filter icon="terp-crm"
-                                       context="{'invisible_section': False}"
-                                       domain="[('section_id.user_id','=',uid)]"
-                                       help="My section" />
-                               </field>
-                       <field name="user_id" select="1" widget="selection">
-                                       <filter icon="terp-personal+" string="My Case" help="My Case" domain="[('user_id','=',uid)]" />
-                                       </field>
+                            string="Current"
+                            domain="[('state','in',('draft','open')]"/>
+                        <filter icon="terp-check"
+                            string="Pending"
+                            domain="[('state','=','pending')]"/>
+                           <separator orientation="vertical" />
+                           <field name="section_id"
+                               default="context.get('section_id', False)"
+                               widget="selection"
+                               context="{'invisible_section': False}">
+                           <filter icon="terp-crm"
+                               context="{'invisible_section': False}"
+                               domain="[('section_id.user_id','=',uid)]"
+                               help="My section" />
+                           </field>
+                          <field name="user_id" widget="selection">
+                            <filter icon="terp-personal+" string="My Case" help="My Case" domain="[('user_id','=',uid)]" />
+                           </field>
                    </group>
                    <newline/>
                    <group  expand="0" string="Group By...">
                         <filter string="User" name="User" icon="terp-personal"
-                               domain="[]" context="{'group_by':'user_id'}" />
+                            domain="[]" context="{'group_by':'user_id'}" />
                        <filter string="Partner" icon="terp-personal" context="{'group_by':'partner_id'}" />
                         <separator orientation="vertical" />
                         <filter string="Section" icon="terp-personal+"
-                               domain="[]"
-                               context="{'group_by':'section_id'}" />
+                            domain="[]"
+                            context="{'group_by':'section_id'}" />
                         <filter string="Category" icon="terp-stock_symbol-selection"
-                               domain="[]" context="{'group_by':'categ_id'}" />
+                            domain="[]" context="{'group_by':'categ_id'}" />
                         <separator orientation="vertical" />
                         <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
                         <separator orientation="vertical"/>
                         <filter string="Priority"  icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
                         <separator orientation="vertical" />
                         <filter string="State" icon="terp-stock_effects-object-colorize"
-                               domain="[]" context="{'group_by':'state'}" />
+                            domain="[]" context="{'group_by':'state'}" />
                         <separator orientation="vertical" />
                         <filter string="Company" icon="terp-go-home"
-                               domain="[]"
-                               context="{'group_by':'company_id'}" />
+                            domain="[]"
+                            context="{'group_by':'company_id'}" />
                         <separator orientation="vertical" />
                         <filter string="Day" icon="terp-go-today"
-                               domain="[]" context="{'group_by':'day'}"/>
+                            domain="[]" context="{'group_by':'day'}"/>
                         <filter string="Month" icon="terp-go-month"
-                               domain="[]" context="{'group_by':'month'}" />
+                            domain="[]" context="{'group_by':'month'}" />
                         <filter string="Year" icon="terp-go-year"
-                               domain="[]" context="{'group_by':'name'}" />
+                            domain="[]" context="{'group_by':'name'}" />
                   </group>
                    <newline/>
                    <group  expand="0" string="Extended options..." groups="base.group_extended">
                        <field name="partner_id"/>
-                               <separator orientation="vertical"/>
+                            <separator orientation="vertical"/>
                          <field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
                          <field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
                           <separator orientation="vertical"/>
                          <field name="company_id" widget="selection" groups="base.group_multi_company"/>
-                               <newline/>
+                           <newline/>
                           <field name="creation_date"/>
                           <field name="opening_date"/>
                           <field name="date_closed"/>
             </field>
         </record>
 
-<!--    Opportunity tree view  -->
+<!--     Opportunity tree view  -->
 
-       <record id="view_report_crm_opportunity_tree" model="ir.ui.view">
+    <record id="view_report_crm_opportunity_tree" model="ir.ui.view">
             <field name="name">crm.lead.report.tree</field>
             <field name="model">crm.lead.report</field>
             <field name="type">tree</field>
             <field name="act_window_id" ref="action_report_crm_lead"/>
        </record>
 
-          <record id="action_report_crm_opportunity" model="ir.actions.act_window">
+       <record id="action_report_crm_opportunity" model="ir.actions.act_window">
             <field name="name">Opportunities Analysis</field>
             <field name="res_model">crm.lead.report</field>
             <field name="view_type">form</field>
index 1b31ccc..139082d 100644 (file)
@@ -148,20 +148,22 @@ class purchase_order(osv.osv):
         return res
 
     _columns = {
-        'name': fields.char('Order Reference', size=64, required=True, select=True),
-        'origin': fields.char('Source Document', size=64,
+        'name': fields.char('Order Reference', size=64, required=True, select=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}),
+        'origin': fields.char('Source Document', size=64, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},
             help="Reference of the document that generated this purchase order request."
         ),
-        'partner_ref': fields.char('Supplier Reference', size=64),
+        'partner_ref': fields.char('Supplier Reference', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, size=64),
         'date_order':fields.date('Date Ordered', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, help="Date on which this document has been created."),
         'date_approve':fields.date('Date Approved', readonly=1),
         'partner_id':fields.many2one('res.partner', 'Supplier', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, change_default=True),
-        'partner_address_id':fields.many2one('res.partner.address', 'Address', required=True, states={'posted':[('readonly',True)]}),
-        'dest_address_id':fields.many2one('res.partner.address', 'Destination Address', states={'posted':[('readonly',True)]},
+        'partner_address_id':fields.many2one('res.partner.address', 'Address', required=True,
+            states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}),
+        'dest_address_id':fields.many2one('res.partner.address', 'Destination Address',
+            states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},
             help="Put an address if you want to deliver directly from the supplier to the customer." \
                 "In this case, it will remove the warehouse link and set the customer location."
         ),
-        'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', states={'posted':[('readonly',True)]}),
+        'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}),
         'location_id': fields.many2one('stock.location', 'Destination', required=True, domain=[('usage','<>','view')]),
         'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, help="The pricelist sets the currency used for this purchase order. It also computes the supplier price for the selected products/quantities."),
         'state': fields.selection([('draft', 'Request for Quotation'), ('wait', 'Waiting'), ('confirmed', 'Waiting Supplier Ack'), ('approved', 'Approved'),('except_picking', 'Shipping Exception'), ('except_invoice', 'Invoice Exception'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, help="The state of the purchase order or the quotation request. A quotation is a purchase order in a 'Draft' state. Then the order has to be confirmed by the user, the state switch to 'Confirmed'. Then the supplier must confirm the order to change the state to 'Approved'. When the purchase order is paid and received, the state becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the state becomes in exception.", select=True),
@@ -180,7 +182,7 @@ class purchase_order(osv.osv):
                 "From Picking: a draft invoice will be pre-generated based on validated receptions.\n" \
                 "Manual: no invoice will be pre-generated. The accountant will have to encode manually."
         ),
-        'minimum_planned_date':fields.function(_minimum_planned_date, fnct_inv=_set_minimum_planned_date, method=True,store=True, string='Expected Date', type='datetime', help="This is computed as the minimum scheduled date of all purchase order lines' products."),
+        'minimum_planned_date':fields.function(_minimum_planned_date, fnct_inv=_set_minimum_planned_date, method=True,store=True, string='Expected Date', type='date', help="This is computed as the minimum scheduled date of all purchase order lines' products."),
         'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Purchase Price'), string='Untaxed Amount',
             store={
                 'purchase.order.line': (_get_order, None, 10),
@@ -596,7 +598,7 @@ class purchase_order_line(osv.osv):
     _columns = {
         'name': fields.char('Description', size=256, required=True),
         'product_qty': fields.float('Quantity', required=True, digits=(16,2)),
-        'date_planned': fields.datetime('Scheduled date', required=True),
+        'date_planned': fields.date('Scheduled date', required=True),
         'taxes_id': fields.many2many('account.tax', 'purchase_order_taxe', 'ord_id', 'tax_id', 'Taxes'),
         'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
         'product_id': fields.many2one('product.product', 'Product', domain=[('purchase_ok','=',True)], change_default=True),
index c7f4267..4e5bdc8 100644 (file)
         </record>
 
      <!--supplier menu-->
-     <menuitem id="base.menu_procurement_management_supplier" name="Address Book"
+      <menuitem id="base.menu_procurement_management_supplier" name="Address Book"
             parent="base.menu_purchase_root" sequence="3"/>
-     <menuitem id="base.menu_procurement_management_supplier_name" name="Suppliers"
-            parent="base.menu_procurement_management_supplier" action="base.action_partner_supplier_form" sequence="1"/>
-     <menuitem
-            action="action_supplier_address_form"
-            id="menu_purchases_partner_address_form"
-            groups="base.group_extended"
-            parent="base.menu_procurement_management_supplier" sequence="3"/>
+      <menuitem id="base.menu_procurement_management_supplier_name" name="Suppliers"
+            parent="base.menu_procurement_management_supplier"
+            action="base.action_partner_supplier_form" sequence="1"/>
 
           <!--Inventory control-->
       <menuitem id="menu_procurement_management_inventory" name="Inventory Control"
@@ -99,7 +95,7 @@
                         <field name="invoiced"/>
                         <newline/>
                         <field name="warehouse_id" on_change="onchange_warehouse_id(warehouse_id)" widget="selection"/>
-                        <field name="origin"/>
+                        <field name="partner_ref"/>
                         <field name="shipped"/>
                         <field name="company_id" groups="base.group_multi_company" widget="selection"/>
                     </group>
                             <field name="partner_id" on_change="onchange_partner_id(partner_id)" domain="[('supplier','=', 1)]"/>
                             <field name="partner_address_id"/>
                             <field domain="[('type','=','purchase')]" name="pricelist_id" groups="base.group_extended"/>
-                            <field name="partner_ref"/>
+                            <field name="origin" groups="base.group_extended"/>
                             <newline/>
                             <field colspan="4" name="order_line" nolabel="1" mode="tree,form">
                                 <tree colors="red:date_planned&lt;=current_date;black:date_planned&gt;current_date" string="Purchase Order Lines">
                                     <field name="date_planned"/>
                                     <field name="name"/>
-                                    <field name="product_id"/>
                                     <field name="product_qty"/>
                                     <field name="product_uom"/>
                                     <field name="price_unit"/>
-                                    <field name="price_subtotal" groups="base.group_extended"/>
+                                    <field name="price_subtotal"/>
                                 </tree>
                                 <!-- default form view -->
                             </field>
             <field name="arch" type="xml">
                 <search string="Search Purchase Order">
                  <group col='10' colspan='4'>
-                    <filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" separator="1"/>
+                    <filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]"/>
+                    <filter icon="terp-accessories-archiver" name="sale_ok" string="Sales" domain="[('state','&lt;&gt;','draft'),('state','&lt;&gt;','cancel')]"/>
+                    <separator orientation="vertical"/>
                     <filter icon="terp-camera_test" name="confirmed" string="To Approve" domain="[('state','in',('wait','confirmed'))]" separator="1"/>
-                    <filter icon="terp-check" name="approved" string="Approved" domain="[('state','in',('approved','done'))]" separator="1"/>
                     <filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" separator="1"/>
                     <separator orientation="vertical"/>
-                    <filter icon="terp-gtk-go-back-rtl" string="To Invoice" domain="[('invoiced','=',1)]" separator="1"/>
-                    <separator orientation="vertical"/>
                     <field name="name" select="1" string="Reference"/>
                     <field name="partner_id" select="1"/>
                     <field name="product_id" select="1"/>
                             <field name="price_unit"/>
                             <field name="company_id" groups="base.group_multi_company" widget="selection"/>
                             <field name="account_analytic_id" colspan="4" groups="base.group_extended"/>
-                            <field name="price_subtotal" readonly="1"/>
                             <group colspan="4" col="4" groups="base.group_extended">
                                 <separator colspan="4" string="Taxes"/>
                                 <field colspan="4" nolabel="1" name="taxes_id"
                             <field colspan="4" name="invoice_lines" nolabel="1" widget="many2many"/>
                         </page>
                     </notebook>
-                    <group>
-                        <field name="state" />
-                    </group>
                 </form>
             </field>
         </record>
           -->
 
         <record id="purchase_line_form_action2" model="ir.actions.act_window">
-            <field name="name">Lines To Invoices</field>
+            <field name="name">Purchase Lines not Invoiced</field>
             <field name="type">ir.actions.act_window</field>
             <field name="res_model">purchase.order.line</field>
             <field name="domain">[('state','in',('confirmed','done')), ('invoiced','=',False)]</field>
index 6eb0673..63f85be 100644 (file)
                 <form string="Sales order">
                     <group col="6" colspan="4">
                         <field name="name"/>
-                        <field name="client_order_ref"/>
-                        <field name="shipped"/>
                         <field name="date_order"/>
-                        <field name="shop_id" on_change="onchange_shop_id(shop_id)" widget="selection" groups="base.group_extended"/>
+                        <field name="shipped"/>
+                        <field name="client_order_ref"/>
+                        <field name="shop_id" on_change="onchange_shop_id(shop_id)" widget="selection"/>
                         <field name="invoiced"/>
                     </group>
                     <notebook colspan="5">
             <field name="arch" type="xml">
                 <search string="Search Sales Order">
                     <filter icon="terp-document-new" string="Quotations" domain="[('state','=','draft')]"/>
-                    <filter icon="terp-check" string="Running" domain="[('state','in',('manual','progress'))]"/>
-                    <filter icon="terp-gtk-go-back-rtl" string="Sales To Invoice" domain="[('state','=','manual')]"/>
+                    <filter icon="terp-check" string="Sales" domain="[('state','in',('manual','progress'))]"/>
+                    <separator orientation="vertical"/>
+                    <filter icon="terp-gtk-go-back-rtl" string="To Invoice" domain="[('state','=','manual')]"/>
                     <separator orientation="vertical"/>
                     <field name="name" select="1"/>
                     <field name="partner_id" select="1"/>
index 2285dd2..0393cef 100644 (file)
@@ -1868,6 +1868,7 @@ class stock_move(osv.osv):
                                     'partner_id': partner_id,
                                     })]
         return lines
+
     def unlink(self, cr, uid, ids, context=None):
         if context is None:
             context = {}
index 3d55ea1..c0abb93 100644 (file)
             <field name="view_mode">calendar</field>
             <field name="act_window_id" ref="action_picking_tree_delivery"/>
         </record>
-        <menuitem action="action_picking_tree_delivery" id="menu_action_picking_tree_delivery" parent="menu_stock_warehouse_mgmt" sequence="1"/>
+        <menuitem action="action_picking_tree_delivery" id="menu_action_picking_tree_delivery" parent="menu_stock_warehouse_mgmt" sequence="7"/>
 
         #
         # Sending Products
             <field name="view_mode">calendar</field>
             <field name="act_window_id" ref="action_picking_tree4"/>
         </record>
-        <menuitem action="action_picking_tree4" id="menu_action_picking_tree4" parent="menu_stock_warehouse_mgmt" sequence="2"/>
+        <menuitem action="action_picking_tree4" id="menu_action_picking_tree4" parent="menu_stock_warehouse_mgmt" sequence="1"/>
 
         <record id="view_picking_internal_search" model="ir.ui.view">
             <field name="name">stock.picking.internal.search</field>
             <field name="context">{'contact_display': 'partner',"search_default_confirmed":1}</field>
             <field name="search_view_id" ref="view_picking_internal_search"/>
         </record>
-        <menuitem action="action_picking_tree6" id="menu_action_picking_tree6" parent="menu_stock_warehouse_mgmt" sequence="4"/>
+        <menuitem action="action_picking_tree6" id="menu_action_picking_tree6" parent="menu_stock_warehouse_mgmt" sequence="2"/>
 
         <record id="view_move_tree" model="ir.ui.view">
             <field name="name">stock.move.tree</field>