Atul Patel(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-improve-purchase-requisition-view-atp 
into lp:openobject-addons.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-improve-purchase-requisition-view-atp/+merge/109170

Hello,

Improve purchase requisition view from the usability point of view.

Thanks
Atul

-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-improve-purchase-requisition-view-atp/+merge/109170
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-improve-purchase-requisition-view-atp.
=== modified file 'purchase_requisition/purchase_requisition.py'
--- purchase_requisition/purchase_requisition.py	2012-05-23 04:57:07 +0000
+++ purchase_requisition/purchase_requisition.py	2012-06-07 15:32:45 +0000
@@ -31,6 +31,7 @@
 class purchase_requisition(osv.osv):
     _name = "purchase.requisition"
     _description="Purchase Requisition"
+    _inherit = ['ir.needaction_mixin', 'mail.thread']
     _columns = {
         'name': fields.char('Requisition Reference', size=32,required=True),
         'origin': fields.char('Source', size=32),
@@ -43,7 +44,7 @@
         'purchase_ids' : fields.one2many('purchase.order','requisition_id','Purchase Orders',states={'done': [('readonly', True)]}),
         'line_ids' : fields.one2many('purchase.requisition.line','requisition_id','Products to Purchase',states={'done': [('readonly', True)]}),
         'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),        
-        'state': fields.selection([('draft','New'),('in_progress','In Progress'),('cancel','Cancelled'),('done','Done')], 'Status', required=True)
+        'state': fields.selection([('draft','New'),('in_progress','Sent to Suppliers'),('cancel','Cancelled'),('done','Purchase Done')], 'Status', required=True)
     }
     _defaults = {
         'date_start': time.strftime('%Y-%m-%d %H:%M:%S'),
@@ -53,7 +54,7 @@
         'user_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).id ,
         'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition'),
     }
-
+    
     def copy(self, cr, uid, id, default=None, context=None):
         if not default:
             default = {}
@@ -63,6 +64,7 @@
             'name': self.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition'),
         })
         return super(purchase_requisition, self).copy(cr, uid, id, default, context)
+    
     def tender_cancel(self, cr, uid, ids, context=None):
         purchase_order_obj = self.pool.get('purchase.order')
         for purchase in self.browse(cr, uid, ids, context=context):
@@ -70,20 +72,41 @@
                 if str(purchase_id.state) in('draft','wait'):
                     purchase_order_obj.action_cancel(cr,uid,[purchase_id.id])
         self.write(cr, uid, ids, {'state': 'cancel'})
+        self.cancel_send_note(cr, uid, ids, context=context)
         return True
 
     def tender_in_progress(self, cr, uid, ids, context=None):
         self.write(cr, uid, ids, {'state':'in_progress'} ,context=context)
+        self.in_progress_send_note(cr, uid, ids, context=context)
         return True
 
     def tender_reset(self, cr, uid, ids, context=None):
         self.write(cr, uid, ids, {'state': 'draft'})
+        self.reset_send_note(cr, uid, ids, context=context)
         return True
 
     def tender_done(self, cr, uid, ids, context=None):
         self.write(cr, uid, ids, {'state':'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
+        self.done_to_send_note(cr, uid, ids, context=context)
         return True
 
+    def in_progress_send_note(self, cr, uid, ids, context=None):
+        for requisition in self.browse(cr, uid, ids, context=context):
+                self.message_append_note(cr, uid, [requisition.id], body=_("Draft Requistion  is <b>Sent to Suppliers</b>."), context=context)
+    
+    def reset_send_note(self, cr, uid, ids, context=None):
+        self.message_append_note(cr, uid, ids, body=_("""Purchase Requisition <b>set to Draft</b>."""), context=context)
+     
+    def done_to_send_note(self, cr, uid, ids, context=None):
+        self.message_append_note(cr, uid, ids, body=_("Purchase Requisition has been  <b>Done</b>."), context=context)
+        
+    def draft_send_note(self, cr, uid, ids, context=None):
+        return self.message_append_note(cr, uid, ids, body=_("Purchase Requisition has been set to <b>draft</b>."), context=context)
+    
+    def cancel_send_note(self, cr, uid, ids, context=None):
+        for obj in self.browse(cr, uid, ids, context=context):
+            self.message_append_note(cr, uid, [obj.id], body=_("Purchase Requisition has been <b>cancelled</b>."), context=context)
+
     def _planned_date(self, requisition, delay=0.0):
         company = requisition.company_id
         date_planned = False
@@ -164,6 +187,22 @@
                 }, context=context)
                 
         return res
+    
+    def get_needaction_user_ids(self, cr, uid, ids, context=None):
+        result = dict.fromkeys(ids, [])
+        for obj in self.browse(cr, uid, ids, context=context):
+            if (obj.state == 'draft') and obj.user_id:
+                result[obj.id] = [obj.user_id.id]
+        return result
+    
+    def create_send_note(self, cr, uid, ids, context=None):
+        return self.message_append_note(cr, uid, ids, body=_("Purchase Requisition has been <b>created</b>."), context=context)  
+
+    def create(self, cr, uid, vals, context=None):
+        requisition =  super(purchase_requisition, self).create(cr, uid, vals, context=context)
+        if requisition:
+            self.create_send_note(cr, uid, [requisition], context=context)
+        return requisition
 
 purchase_requisition()
 
@@ -172,7 +211,6 @@
     _name = "purchase.requisition.line"
     _description="Purchase Requisition Line"
     _rec_name = 'product_id'
-
     _columns = {
         'product_id': fields.many2one('product.product', 'Product' ),
         'product_uom_id': fields.many2one('product.uom', 'Product Unit of Measure'),
@@ -203,6 +241,7 @@
     _columns = {
         'requisition_id' : fields.many2one('purchase.requisition','Purchase Requisition')
     }
+
     def wkf_confirm_order(self, cr, uid, ids, context=None):
         res = super(purchase_order, self).wkf_confirm_order(cr, uid, ids, context=context)
         proc_obj = self.pool.get('procurement.order')
@@ -224,7 +263,7 @@
     _inherit = 'product.product'
 
     _columns = {
-        'purchase_requisition': fields.boolean('Purchase Requisition', help="Check this box so that requisitions generates purchase requisitions instead of directly requests for quotations.")
+        'purchase_requisition': fields.boolean('Purchase Requisition', help="Check this box so that procurement generates  purchase requisition instead of only generating requests for quotation.")
     }
     _defaults = {
         'purchase_requisition': False

=== modified file 'purchase_requisition/purchase_requisition_demo.xml'
--- purchase_requisition/purchase_requisition_demo.xml	2012-03-06 12:05:25 +0000
+++ purchase_requisition/purchase_requisition_demo.xml	2012-06-07 15:32:45 +0000
@@ -13,7 +13,7 @@
     <!--Resource: purchase.requisition-->
 
 		<record id="requisition1" model="purchase.requisition">
-            <field name="user_id" model="res.users"/>
+            <field name="user_id" ref="base.user_root"/>
             <field name="exclusive">exclusive</field>
             <field name="date_start" eval="time.strftime('%Y/%m/%d %H:%M:%S')"/>
             <field name="warehouse_id" ref="stock.stock_warehouse_shop0"/>

=== modified file 'purchase_requisition/purchase_requisition_view.xml'
--- purchase_requisition/purchase_requisition_view.xml	2012-06-04 12:11:39 +0000
+++ purchase_requisition/purchase_requisition_view.xml	2012-06-07 15:32:45 +0000
@@ -34,22 +34,22 @@
         <field name="arch" type="xml">
             <form layout="manual">
             <header>
-                <button name="tender_in_progress" states="draft" string="Start" type="object" />
+                <button name="tender_in_progress" states="draft" string="Send to Suppliers" type="object" />
                 <button name="tender_reset" states="done,cancel" string="Reset to Draft" type="object" />
-                <button name="tender_done" states="in_progress" string="Done" type="object" />
+                <button name="tender_done" states="in_progress" string=" Purchase Done" type="object" />
                 <button name="tender_cancel" states="draft,in_progress" string="Cancel" type="object" />
                 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,in_progress,done" statusbar_colors='{"in_progress":"blue"}'/>
             </header>
             <sheet string="Purchase Requisition" layout="auto">
-                <group colspan="4" col="6">
-                    <field name="name"/>
-                    <field name="user_id"/>
-                    <field name="exclusive"/>
-                    <field name="date_start"/>
-                    <field name="date_end"/>
-                    <field name="origin"/>
-                    <field name="warehouse_id" widget="selection"/>
-                    <field name="company_id" groups="base.group_multi_company" widget="selection"/>
+            <group colspan="4" col="4" class="oe_form_group_label_border">
+               <field name="name"/>
+               <field name="exclusive"/>
+               <field name="user_id"/>
+               <field name="date_start"/>
+               <field name="origin"/>
+               <field name="date_end"/>
+               <field name="warehouse_id" widget="selection" groups="stock.group_locations"/>
+               <field name="company_id" groups="base.group_multi_company" widget="selection"/>
                 </group>
                 <notebook colspan="4">
                     <page string="Products">
@@ -57,19 +57,17 @@
                             <tree string="Products" editable="bottom">
                                 <field name="product_id" on_change="onchange_product_id(product_id,product_uom_id)"/>
                                 <field name="product_qty"/>
-                                <field name="product_uom_id"/>
+                                <field name="product_uom_id" groups="product.group_uom"/>
                             </tree>
                             <form string="Products">
-                                <field name="product_id" />
+                                <field name="product_id"/>
                                 <field name="product_qty"/>
-                                <field name="product_uom_id" />
+                                <field name="product_uom_id" groups="product.group_uom"/>
                                 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
                             </form>
-
                         </field>
-                    </page>
-                    <page string="Quotations">
-                        <field colspan="4" name="purchase_ids" nolabel="1" mode="tree,form">
+                        <separator colspan="4" string="Quotations"/>
+                        <field colspan="4" name="purchase_ids" nolabel="1" mode="tree,form" readonly="1" >
                             <tree string="Purchase Order">
                                 <field name="name" string="Reference"/>
                                 <field name="date_order" string="Order Date"/>
@@ -84,18 +82,22 @@
                                 <button name="purchase_approve" states="confirmed" string="Approved by Supplier" icon="gtk-ok"/>
                             </tree>
                          </field>
-                        <separator colspan="4" string=""/>
-                         <group col="8" colspan="4">
-                          <label colspan="6"  string=""/>
-                        <button name="%(action_purchase_requisition_partner)d" string="Request a Quotation" type="action" icon="gtk-execute"
-                           attrs="{'readonly': [('state', '=', 'done')]}" />
-                        </group>
-                   </page>
+                         <group colspan="4" col="4">
+                            <button name="%(action_purchase_requisition_partner)d" string="Request a Quotation" type="action" icon="gtk-execute"
+                            attrs="{'invisible': [('line_ids','=',False),('state', 'not in', ('in_progress'))]}"/>
+                            <group cosplan="4" col="4">
+                                <label   string="" />
+                            </group>
+                        </group>                             
+                    </page>
                     <page string="Notes">
                         <field name="description" colspan="4" nolabel="1"/>
                     </page>
                 </notebook>
             </sheet>
+            <div class="oe_form_sheet_width">
+                  <field name="message_ids" colspan="4" widget="ThreadView" nolabel="1"/>
+            </div> 
             </form>
         </field>
     </record>
@@ -104,15 +106,17 @@
         <field name="type">tree</field>
         <field name="model">purchase.requisition</field>
         <field name="arch" type="xml">
-            <tree colors="grey:state == 'done';red:date_end&lt;current_date and state not in ('done','cancel');black:date_end&gt;=current_date;" string="Purchase Requisition">
+            <tree fonts="bold:needaction_pending==True" colors="grey:state == 'cancel';red:date_end&lt;current_date;black:date_end&gt;=current_date;" string="Purchase Requisition">
+                <field name="needaction_pending" invisible="1"/>
                 <field name="name"/>
+                <field name="date_start"/>
                 <field name="user_id"/>
-                <field name="date_start"/>
+                <field name="company_id" groups="base.group_multi_company" widget="selection"/>
                 <field name="date_end"/>
                 <field name="origin"/>
                 <field name="state"/>
             </tree>
-        </field>
+      </field>
     </record>
 
     <record id="view_purchase_requisition_filter" model="ir.ui.view">
@@ -123,8 +127,8 @@
                 <search string="Search Purchase Requisition">
                  <group>
                     <filter icon="terp-document-new" name="draft" string="New" domain="[('state','=','draft')]" help="New Purchase Requisition"/>
-                    <filter icon="terp-camera_test" string="In Progress" domain="[('state','=','in_progress')]" help="Purchase Requisition in negociation"/>
-                    <filter icon="terp-dialog-close" string="Done" domain="[('state','=','done')]" help="Current Purchase Requisition"/>
+                    <filter icon="terp-camera_test" string="Sent to Suppliers" domain="[('state','=','in_progress')]" help="Purchase Requisition in negociation"/>
+                    <filter icon="terp-dialog-close" string="Purchase Done" domain="[('state','=','done')]" help="Current Purchase Requisition"/>
                     <separator orientation="vertical"/>
                     <filter icon="terp-personal-" string="Unassigned"  domain="[('user_id','=', False)]" help="Unassigned  Requisition"/>
                     <separator orientation="vertical"/>

=== modified file 'purchase_requisition/wizard/purchase_requisition_partner.py'
--- purchase_requisition/wizard/purchase_requisition_partner.py	2012-03-06 12:05:25 +0000
+++ purchase_requisition/wizard/purchase_requisition_partner.py	2012-06-07 15:32:45 +0000
@@ -28,7 +28,7 @@
     _name = "purchase.requisition.partner"
     _description = "Purchase Requisition Partner"
     _columns = {
-        'partner_id': fields.many2one('res.partner', 'Partner', required=True,domain=[('supplier', '=', True)]),
+        'partner_id': fields.many2one('res.partner', 'Supplier', required=True,domain=[('supplier', '=', True)]),
     }
 
     def view_init(self, cr, uid, fields_list, context=None):

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to