Devishree Brahmbhatt (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-coverage-purchase-requisition-dbr into 
lp:openobject-addons.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-coverage-purchase-requisition-dbr/+merge/83554

Hello,

Improve the purchase_requisition module YML test cases for following.

=> purchase_requisition.yml
    Define the main flow of purchase requisition module.

=> purchase_requisition_exclusive.yml
    Define the exclusive requisition test case

=> requisiton2request_quotation.yml
    Define the test cases for requisition to request for Quotation

=> cancel_purchase_requisition.yml
    Define the cancel process of purchase requisition from different state.

=> purchase_requisition_report.yml
    Define the test case of report

=> delete_requisition.yml
    Delete the requisition form different state.

==> Add:
========
  Create new Folders in test:
    - process
    - ui
  /process/cancel_purchase_requisition.yml
  /process/purchase_requisition_exclusive.yml
  /ui/requisiton2request_quotation.yml
  /ui/duplicate_requisition.yml

==> Move:
=========
  purchase_requisition.yml => test/process/purchase_requisition.yml
  purchase_requisition_test.yml => test/ui/delete_requisition.yml
  purchase_requisition_report.yml => test/ui/purchase_requisition_report.yml
    
==> Update:
===========
  purchase_requisition_demo.xml : Add new record.
  purchase_requisition_view.xml : For remove the error.

So, kindly review it.

Thanks.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-coverage-purchase-requisition-dbr/+merge/83554
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-coverage-purchase-requisition-dbr.
=== modified file 'purchase/purchase_demo.xml'
--- purchase/purchase_demo.xml	2011-11-13 22:53:42 +0000
+++ purchase/purchase_demo.xml	2011-11-28 07:14:29 +0000
@@ -6,6 +6,203 @@
             <field eval="[(4, ref('group_purchase_user'))]" name="groups_id"/>
         </record>
 
+<<<<<<< TREE
+=======
+    <!--Resource: purchase.order-->
+
+        <record id="order_purchase1" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_asus"/>
+            <field name="partner_address_id" ref="base.res_partner_address_tang"/>
+        </record>
+
+        <record id="order_purchase2" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_3"/>
+            <field name="partner_address_id" ref="base.res_partner_address_zen"/>
+        </record>
+
+        <record id="order_purchase3" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
+            <field name="partner_address_id" ref="base.res_partner_address_3000"/>
+        </record>
+
+        <record id="order_purchase4" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_4"/>
+            <field name="partner_address_id" ref="base.res_partner_address_7"/>
+        </record>
+
+        <record id="order_purchase5" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_maxtor"/>
+            <field name="partner_address_id" ref="base.res_partner_address_wong"/>
+        </record>
+
+        <record id="order_purchase6" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_vickingdirect0"/>
+            <field name="partner_address_id" ref="base.res_partner_address_brussels0"/>
+        </record>
+        <!--Resource: purchase.order.line-->
+
+        <record id="line1_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase1"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">New server config + material</field>
+            <field model="product.product" name="product_id" search="[]"/>
+            <field model="product.uom" name="product_uom" search="[]"/>
+            <field name="price_unit">150</field>
+            <field name="product_qty">5</field>
+        </record>
+
+        <record id="line2_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase1"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[PC1] Basic PC</field>
+            <field name="product_id" ref="product.product_product_pc1"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">450</field>
+            <field name="product_qty">2</field>
+        </record>
+
+        <record id="line3_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase2"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[PC3] Medium PC</field>
+            <field name="product_id" ref="product.product_product_pc3"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">900</field>
+            <field name="product_qty">1</field>
+        </record>
+
+        <record id="line4_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase3"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">Onsite Senior Intervention</field>
+            <field name="product_id" ref="product.product_product_0"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">900</field>
+            <field name="product_qty">10</field>
+        </record>
+
+        <record id="line5_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase3"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">Onsite Intervention</field>
+            <field name="product_id" ref="product.product_product_1"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">100</field>
+            <field name="product_qty">5</field>
+        </record>
+
+        <record id="line6_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase4"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[PC2] Basic+ PC (assembly on order)</field>
+            <field name="product_id" ref="product.product_product_pc2"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">40</field>
+            <field name="product_qty">5</field>
+        </record>
+
+        <record id="line7_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase4"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[MB1] Mainboard ASUStek A7N8X</field>
+            <field name="product_id" ref="product.product_product_mb1"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">45</field>
+            <field name="product_qty">15</field>
+        </record>
+
+        <record id="line8_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase4"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[MB2] Mainboard ASUStek A7V8X-X</field>
+            <field name="product_id" ref="product.product_product_mb2"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">45</field>
+            <field name="product_qty">15</field>
+        </record>
+
+        <record id="line9_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase5"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[CPU1] Processor AMD Athlon XP 1800+</field>
+            <field name="product_id" ref="product.product_product_cpu1"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">60</field>
+            <field name="product_qty">3</field>
+        </record>
+
+        <record id="line10_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase5"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[CPU3] Processor AMD Athlon XP 2200+</field>
+            <field name="product_id" ref="product.product_product_cpu3"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">50</field>
+            <field name="product_qty">13</field>
+        </record>
+
+        <record id="line11_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase5"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[HDD1] HDD Seagate 7200.8 80GB</field>
+            <field name="product_id" ref="product.product_product_hdd1"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">70</field>
+            <field name="product_qty">10</field>
+        </record>
+
+        <record id="line15_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase6"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[HDD3] HDD Seagate 7200.8 80GB</field>
+            <field name="product_id" ref="product.product_product_hdd3"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">70</field>
+            <field name="product_qty">10</field>
+        </record>
+
+        <record id="line12_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase5"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[HDD2] HDD Seagate 7200.8 120GB</field>
+            <field name="product_id" ref="product.product_product_hdd2"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">70</field>
+            <field name="product_qty">10</field>
+        </record>
+
+        <record id="line12_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase5"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[RAM] DDR 256MB PC400</field>
+            <field name="product_id" ref="product.product_product_ram"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">700</field>
+            <field name="product_qty">10</field>
+        </record>
+
+        <record id="line13_purchase" model="purchase.order.line">
+            <field name="order_id" ref="order_purchase4"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[RAM512] DDR 512MB PC400</field>
+            <field name="product_id" ref="product.product_product_ram512"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">1700</field>
+            <field name="product_qty">10</field>
+        </record>
+>>>>>>> MERGE-SOURCE
         <workflow action="purchase_confirm" model="purchase.order" ref="order_purchase2"/>
         <workflow action="purchase_confirm" model="purchase.order" ref="order_purchase6"/>
 

=== modified file 'purchase_requisition/__openerp__.py'
--- purchase_requisition/__openerp__.py	2011-10-16 01:28:00 +0000
+++ purchase_requisition/__openerp__.py	2011-11-28 07:14:29 +0000
@@ -43,8 +43,13 @@
                     "security/ir.model.access.csv","purchase_requisition_sequence.xml"
     ],
     "active": False,
-    "test":['test/purchase_requisition_report.yml',
-            'test/purchase_requisition_test.yml',
+    "test":[
+            'test/process/purchase_requisition.yml',
+            'test/process/purchase_requisition_exclusive.yml',
+            'test/ui/requisiton2request_quotation.yml',
+            'test/process/cancel_purchase_requisition.yml',
+            'test/ui/purchase_requisition_report.yml',
+            'test/ui/delete_requisition.yml',
             ],
     "installable": True,
     "certificate" : "001023264099823179629",

=== modified file 'purchase_requisition/purchase_requisition_demo.xml'
--- purchase_requisition/purchase_requisition_demo.xml	2011-01-14 00:11:01 +0000
+++ purchase_requisition/purchase_requisition_demo.xml	2011-11-28 07:14:29 +0000
@@ -10,7 +10,7 @@
 
 		<record id="order_purchase_requisition1" model="purchase.requisition">
             <field name="user_id" model="res.users"/>
-            <field name="exclusive">multiple</field>
+            <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"/>
 		</record>
@@ -24,6 +24,46 @@
             <field name="product_qty">5</field>
         </record>
 
+        <!--Resource: purchase.order-->
+
+        <record id="requisition_order1" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_4"/>
+            <field name="partner_address_id" ref="base.res_partner_address_7"/>
+            <field name="requisition_id" ref="order_purchase_requisition1"/>
+        </record>
+               
+        <record id="requisition_order2" model="purchase.order">
+            <field name="location_id" ref="stock.stock_location_stock"/>
+            <field name="pricelist_id" ref="purchase.list0"/>
+            <field name="partner_id" ref="base.res_partner_vickingdirect0"/>
+            <field name="partner_address_id" ref="base.res_partner_address_brussels0"/>
+            <field name="requisition_id" ref="order_purchase_requisition1"/>
+        </record>
+
+        <!--Resource: purchase.order.line-->
+
+        <record id="line9_purchase" model="purchase.order.line">
+            <field name="order_id" ref="requisition_order1"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[CPU1] Processor AMD Athlon XP 1800+</field>
+            <field name="product_id" ref="product.product_product_cpu1"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">60</field>
+            <field name="product_qty">3</field>
+        </record>
+
+        <record id="line10_purchase" model="purchase.order.line">
+            <field name="order_id" ref="requisition_order2"/>
+            <field name="date_planned" eval="time.strftime('%Y/%m/%d')"/>
+            <field name="name">[CPU3] Processor AMD Athlon XP 2200+</field>
+            <field name="product_id" ref="product.product_product_cpu3"/>
+            <field name="product_uom" ref="product.product_uom_unit"/>
+            <field name="price_unit">50</field>
+            <field name="product_qty">13</field>
+        </record>        
+
 
     </data>
 </openerp>

=== modified file 'purchase_requisition/purchase_requisition_view.xml'
--- purchase_requisition/purchase_requisition_view.xml	2011-11-24 12:14:33 +0000
+++ purchase_requisition/purchase_requisition_view.xml	2011-11-28 07:14:29 +0000
@@ -21,7 +21,11 @@
         <field name="model">purchase.order</field>
         <field name="inherit_id" ref="purchase.view_purchase_order_filter"/>
         <field name="arch" type="xml">
+<<<<<<< TREE
             <xpath expr="/search/group/filter[@name='not_invoiced']" position="after">
+=======
+            <xpath expr="/search/group/filter[@string='Quotations']" position="after">
+>>>>>>> MERGE-SOURCE
              <separator orientation="vertical"/>
              <filter icon="terp-gtk-jump-to-rtl" string="Requisition" domain="[('requisition_id','!=',False)]"  help="Purchase Orders with requisition"/>
             </xpath>
@@ -34,7 +38,11 @@
         <field name="model">purchase.order</field>
         <field name="inherit_id" ref="purchase.view_request_for_quotation_filter"/>
         <field name="arch" type="xml">
+<<<<<<< TREE
             <xpath expr="/search/group/filter[@name='not_invoiced']" position="after">
+=======
+            <xpath expr="/search/group/filter[@string='Quotations']" position="after">
+>>>>>>> MERGE-SOURCE
              <separator orientation="vertical"/>
              <filter icon="terp-gtk-jump-to-rtl" string="Requisition" domain="[('requisition_id','!=',False)]"  help="Purchase Orders with requisition"/>
             </xpath>

=== added directory 'purchase_requisition/test/process'
=== added file 'purchase_requisition/test/process/cancel_purchase_requisition.yml'
--- purchase_requisition/test/process/cancel_purchase_requisition.yml	1970-01-01 00:00:00 +0000
+++ purchase_requisition/test/process/cancel_purchase_requisition.yml	2011-11-28 07:14:29 +0000
@@ -0,0 +1,73 @@
+-
+  In order to test the cancel flow of purchase requisition order.
+-
+  I cancel the "New" purchase requisition order.
+-
+  !python {model: purchase.requisition}: |
+    self.tender_cancel(cr, uid, [ref("order_purchase_requisition1")])
+-
+  I check that purchase requisition order is cancelled.
+-
+  !assert {model: purchase.requisition, id: order_purchase_requisition1}:
+    - state == 'cancel'
+-
+  I reset the state of requisition as "New".
+-
+  !python {model: purchase.requisition}: |
+    self.tender_reset(cr, uid, ref('order_purchase_requisition1'))
+-
+  I change state of requisition in "In progress".
+-
+  !python {model: purchase.requisition}: |
+    self.tender_in_progress(cr, uid, ref('order_purchase_requisition1'))
+-
+  I check that purchase requisition order is "In progress".
+-
+  !assert {model: purchase.requisition, id: order_purchase_requisition1}:
+    - state == 'in_progress'
+-
+  I try to cancel "In progress" purchase requisition order.
+-
+  !python {model: purchase.requisition}: |
+    self.tender_cancel(cr, uid, [ref("order_purchase_requisition1")])
+-
+  I check that purchase requisition order is cancelled.
+-
+  !assert {model: purchase.requisition, id: order_purchase_requisition1}:
+    - state == 'cancel'
+-
+  I reset the state of requisition as "New".
+-
+  !python {model: purchase.requisition}: |
+    self.tender_reset(cr, uid, ref('order_purchase_requisition1'))
+-
+  I check that purchase requisition order is New.
+-
+  !assert {model: purchase.requisition, id: order_purchase_requisition1}:
+    - state == 'draft'
+-
+  I change state of requisition as "done".
+-
+  !python {model: purchase.requisition}: |
+    self.tender_done(cr, uid, ref('order_purchase_requisition1'))
+-
+  I check that purchase requisition order is Done.
+-
+  !assert {model: purchase.requisition, id: order_purchase_requisition1}:
+    - state == 'done'
+-
+  I try to cancel "Done" purchase requisition order.
+-
+  !python {model: purchase.requisition}: |
+    self.tender_cancel(cr, uid, [ref("order_purchase_requisition1")])
+-
+  I check that purchase requisition order is cancelled.
+-
+  !assert {model: purchase.requisition, id: order_purchase_requisition1}:
+    - state == 'cancel'
+-
+  I reset the state of requisition as "New".
+-
+  !python {model: purchase.requisition}: |
+    self.tender_reset(cr, uid, ref('order_purchase_requisition1'))
+

=== renamed file 'purchase_requisition/test/purchase_requisition.yml' => 'purchase_requisition/test/process/purchase_requisition.yml'
--- purchase_requisition/test/purchase_requisition.yml	2011-01-14 00:11:01 +0000
+++ purchase_requisition/test/process/purchase_requisition.yml	2011-11-28 07:14:29 +0000
@@ -1,189 +1,44 @@
-
--
-  In order to test the purchase requisition module, I will do a sale order -> purchase_requisition ->
-  purchase flow and I will buy the required products at two different suppliers.
--
-  I start by creating a new product 'Laptop ACER', which is purchased at Asustek, in MTO,
-  with the generation of purchase requisitions.
--
-  !record {model: product.product, id: product_product_laptopacer0}:
-    categ_id: product.product_category_3
-    cost_method: standard
-    mes_type: fixed
-    name: Laptop ACER
-    procure_method: make_to_order
-    purchase_requisition: 1
-    seller_ids:
-      - delay: 1
-        name: base.res_partner_asus
-        qty: 5.0
-        min_qty: 1.0
-    supply_method: buy
-    type: product
-    uom_id: product.product_uom_unit
-    uom_po_id: product.product_uom_unit
-    volume: 0.0
-    warranty: 0.0
-    weight: 0.0
-    weight_net: 0.0
-    list_price: 100.0
--
-  Then I sell 5 Laptop ACER to the customer Agrolait, sale order TEST/TENDER/0001.
--
-  !record {model: sale.order, id: sale_order_testtender0}:
-    date_order: !eval time.strftime('%Y-%m-%d')
-    invoice_quantity: order
-    name: TEST/TENDER/0001
-    order_line:
-      - name: Laptop ACER
-        price_unit: 100.0
-        product_uom: product.product_uom_unit
-        product_uom_qty: 5.0
-        state: draft
-        delay: 7.0
-        product_id: product_product_laptopacer0
-        product_uos_qty: 5.0
-        th_weight: 0.0
-        type: make_to_order
-    order_policy: manual
-    partner_id: base.res_partner_agrolait
-    partner_invoice_id: base.res_partner_address_8
-    partner_order_id: base.res_partner_address_8
-    partner_shipping_id: base.res_partner_address_8
-    picking_policy: direct
-    pricelist_id: product.list0
-    shop_id: sale.shop
--
-  I confirm the sale order.
--
-  !workflow {model: sale.order, action: order_confirm, ref: sale_order_testtender0}
--
-  I launch the scheduler to compute all procurements, and specify all requisitions orders.
--
-  !python {model: procurement.order.compute.all}: |
-    proc_obj = self.pool.get('procurement.order')
-    proc_obj._procure_confirm(cr,uid)
--
-  On the purchase requisition, I create a new purchase order for the supplier 'DistriPC' by clicking on
-  the button 'New RfQ'. This opens a window to ask me the supplier and I set DistriPC .
--
-  !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
-    partner_address_id: base.res_partner_address_7
-    partner_id: base.res_partner_4
--
-  I create a new purchase order.
--
-  !python {model: purchase.requisition.partner}: |
-    req_obj = self.pool.get('purchase.requisition')
-    ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER')])
-    self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"lang":
-      'en_US', "active_model": "purchase.requisition", "tz": False, "record_id":
-      1, "active_ids": ids, "active_id": ids[0], })
-
--
- I check that I have two purchase orders on the purchase requisition.
--
- !python {model: purchase.order}: |
-    from tools.translate import _
-    order_ids =self.search(cr, uid, [('origin','=','TEST/TENDER/0001')])
-    ids=len(order_ids)
-    assert(ids == 2), _('Purchase Order not Created')
-
--
- I set the purchase requisition as 'Not Exclusive'.
--
- !python {model: purchase.requisition}: |
-    ids =self.search(cr, uid, [('origin','=','Laptop ACER')])
-    self.write(cr,uid,ids[0],{'exclusive': 'multiple' })
--
-  I change the quantities so that the purchase order for DistriPC includes 3 pieces and the
-  purchase order for Asustek includes 2 pieces.
--
-  !python {model: purchase.order}: |
-    line_obj=self.pool.get('purchase.order.line')
-    partner_obj=self.pool.get('res.partner')
-    requistion_obj=self.pool.get('purchase.requisition')
-    requistion_ids =requistion_obj.search(cr, uid, [('origin','=','Laptop ACER')])
-    partner_id1=partner_obj.search(cr,uid,[('name','=','ASUStek')])[0]
-    partner_id2=partner_obj.search(cr,uid,[('name','=','Distrib PC')])[0]
-    purchase_id1= self.search(cr, uid, [('partner_id','=',partner_id1),('requisition_id','in',requistion_ids)])
-    purchase_id2= self.search(cr, uid, [('partner_id','=',partner_id2),('requisition_id','in',requistion_ids)])
-    order_line1=self.browse(cr, uid, purchase_id1, context)[0].order_line[0].id
-    order_line2=self.browse(cr, uid, purchase_id2, context)[0].order_line[0].id
-    line_obj.write(cr, uid, order_line1, {'product_qty':2})
-    line_obj.write(cr, uid, order_line2, {'product_qty':3})
--
-  I confirm and validate both purchase orders.
--
-  !python {model: purchase.order}: |
-   order_ids= self.search(cr, uid, [])
-   import netsvc
-   wf_service = netsvc.LocalService("workflow")
-   for id in order_ids:
-      wf_service.trg_validate(uid, 'purchase.order',id,'purchase_confirm', cr)
-      wf_service.trg_validate(uid, 'purchase.order',id,'purchase_approve', cr)
--
-  I check that the delivery order of the customer is in state 'Waiting Goods'.
--
-  !python {model: stock.picking }: |
-    from tools.translate import _
-    picking_id = self.search(cr, uid, [('origin','=','TEST/TENDER/0001')])
-    if picking_id:
-      pick=self.browse(cr,uid,picking_id[0])
-      assert (pick.state =='confirmed'),_('Picking  is  not in confirm state.')
-      assert (pick.move_lines[0].state == 'waiting'), _('Stock Move is  not Waiting state.')
-
--
-  I receive the order of the supplier Asustek from the Incoming Products menu.
--
-  !python {model: stock.picking }: |
-   import time
-   partner_obj=self.pool.get('res.partner')
-   order_obj=self.pool.get('purchase.order')
-   partner_id=partner_obj.search(cr,uid,[('name','=','ASUStek')])[0]
-   picking_id = self.search(cr, uid, [('address_id.partner_id','=',partner_id),('type','=','in')])
-   if picking_id:
-     pick=self.browse(cr,uid,picking_id[0])
-     move =pick.move_lines[0]
-     partial_datas = {
-              'partner_id': pick.address_id.partner_id.id,
-              'address_id': pick.address_id.id,
-              'delivery_date' : time.strftime('%Y-%m-%d'),
-           }
-     partial_datas['move%s'%(move.id)]= {
-       'product_id': move.product_id.id,
-       'product_qty': move.product_qty,
-       'product_uom': move.product_uom.id,
-      }
-     self.do_partial(cr, uid, picking_id,partial_datas)
--
- I receive the order of the supplier DistriPC from the Incoming Shipments menu.
--
-  !python {model: stock.picking }: |
-   import time
-   partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','Distrib PC')])[0]
-   picking_id = self.search(cr, uid, [('address_id.partner_id','=',partner_id),('type','=','in')])
-   if picking_id:
-      pick=self.browse(cr,uid,picking_id[0])
-      move =pick.move_lines[0]
-      partial_datas = {
-           'partner_id':pick.address_id.partner_id.id,
-            'address_id': pick.address_id.id,
-            'delivery_date' : time.strftime('%Y-%m-%d'),
-           }
-      partial_datas['move%s'%(move.id)]= {
-          'product_id': move.product_id.id,
-          'product_qty': move.product_qty,
-          'product_uom': move.product_uom.id,
-      }
-      self.do_partial(cr, uid, picking_id,partial_datas)
--
-  I check that the delivery order of the customer is in the state Available.
--
-  !python {model: stock.picking }: |
-   from tools.translate import _
-   picking_id = self.search(cr, uid, [('origin','=','TEST/TENDER/0001'),('type','=','out')])
-   if picking_id:
-      pick=self.browse(cr,uid,picking_id[0])
-      assert(pick.state == 'assigned'), _('Picking  is  not in available state')
-
+-
+  In order to test the purchase requisition module, I have to checked product's boolean field 'purchase requisition'.
+-
+  I start by Checking the product, Product must have requisition field checked.
+-
+  !record {model: product.product, id: product.product_product_hdd3}:
+    purchase_requisition: True
+-
+  I create the product's procurement order and run that procurement.
+  After Run the procurement I check created purchase requisition [Tender].
+-
+  !python {model: product.product}: |
+    import netsvc
+    mk_proc = self.pool.get('make.procurement')
+    proc_order = self.pool.get('procurement.order')
+    pur_req = self.pool.get('purchase.requisition')
+    pur_order = self.pool.get('purchase.order')
+    context = {'active_model': 'product.product','active_ids': [ref('product.product_product_hdd3')],'active_id': ref('product.product_product_hdd3')}
+    default_data = mk_proc.default_get(cr, uid, ['uom_id', 'warehouse_id', 'date_planned', 'product_id', 'qty'], context)
+    vals = {'uom_id': ref('product.product_uom_unit'),'warehouse_id': ref('stock.stock_warehouse_shop0'),'qty': default_data.get('qty'),'date_planned': default_data.get('date_planned')}
+    ids = mk_proc.create(cr, uid, vals, context)
+    req_id = mk_proc.make_procurement(cr, uid, [ids], context)
+    order = proc_order.browse(cr, uid, [req_id.get('res_id')])
+    assert order[0].state == "confirmed", "Procurement Order should be in Confirmed state"
+    assert order[0].product_id.id == ref('product.product_product_hdd3'),"Product is not correspond in procurement order"
+    assert order[0].product_qty == default_data.get('qty'),"Product's quantity is not correspond in procurement order"
+    assert order[0].product_uom.id == ref('product.product_uom_unit'),"Product's UOM is not correspond in procurement order"
+    wf_service = netsvc.LocalService("workflow")
+    for proc in order:
+      wf_service.trg_validate(uid, 'procurement.order',proc.id,'button_check', cr)
+    proc_ids = proc_order.search(cr, uid, [('id','=',req_id.get('res_id')),('state','in',['running'])])
+    proc_id = proc_order.browse(cr, uid, proc_ids)
+    assert proc_id[0].state == 'running',"Generated Procurement should be in Running state"
+    if proc_id[0].requisition_id:
+      po_id = pur_order.search(cr, uid, [('requisition_id','=',proc_id[0].requisition_id.id)])
+      po_req = pur_order.browse(cr, uid, po_id)[0].requisition_id
+      pur_req_rec = pur_req.browse(cr, uid, [proc_id[0].requisition_id.id])
+      assert po_req == proc_id[0].requisition_id,"Created Requisition is not properly linked in purchase order"
+      assert pur_req_rec[0].state == 'draft',"Created Requisition should be in draft state"
+      for record in pur_req_rec[0].line_ids:
+        assert record.product_id.id == ref('product.product_product_hdd3'),"Requisition Product is not correspond"
+        assert record.product_qty == default_data.get('qty'),"Requisition Product's quantity is not correspond"
+        assert record.product_uom_id.id == ref('product.product_uom_unit'),"Requisition Product's UOM is not correspond"
+    

=== added file 'purchase_requisition/test/process/purchase_requisition_exclusive.yml'
--- purchase_requisition/test/process/purchase_requisition_exclusive.yml	1970-01-01 00:00:00 +0000
+++ purchase_requisition/test/process/purchase_requisition_exclusive.yml	2011-11-28 07:14:29 +0000
@@ -0,0 +1,34 @@
+-
+  In order to test the exclusive type requisition, I have to create two differ purchase order of one requisition [Tender]
+-
+  I select purchase requisition of '[CPU1] Processor AMD Athlon XP 1800+' and '[CPU3] Processor AMD Athlon XP 2200+'.
+  So, those products must have requisition field checked.
+-
+  I start by Checking requisition field for '[CPU1] Processor AMD Athlon XP 1800+' product.
+-
+  !record {model: product.product, id: product.product_product_cpu1}:
+    purchase_requisition: True
+-
+  Checked requisition field for '[CPU3] Processor AMD Athlon XP 2200+' product. 
+-
+  !record {model: product.product, id: product.product_product_cpu3}:
+    purchase_requisition: True
+-
+  I search the purchase orders which have exclusive purchase requisition 'TE00001' and confirm any one of them.
+  Then check the remaining purchase orders goes in to cancel state.
+-
+  !python {model: purchase.order}: |
+    import netsvc
+    wf_service = netsvc.LocalService("workflow")
+    pur_order = self.pool.get('purchase.order')
+    ids = pur_order.search(cr, uid, [('requisition_id','=',ref('order_purchase_requisition1'))])
+    po_id = pur_order.browse(cr, uid, ids)
+    for po in po_id:
+      for line in po.order_line:
+        if line.product_id.purchase_requisition == False:
+          assert line.product_id.purchase_requisition == True, "Purchase Order's product must have requisition field checked"
+    po_confirm = po_id[0].id
+    wf_service.trg_validate(uid, 'purchase.order',po_confirm,'purchase_confirm', cr)
+    assert po_id[0].state == 'approved',"After confirm a purchase order it should be in confirm state"
+    assert po_id[1].state == 'cancel',"After confirmed a purchase order form the this requisition the second purchase order should be automatically goes in to cancelled state"
+

=== removed file 'purchase_requisition/test/purchase_requisition_exclusive.yml'
--- purchase_requisition/test/purchase_requisition_exclusive.yml	2011-01-14 00:11:01 +0000
+++ purchase_requisition/test/purchase_requisition_exclusive.yml	1970-01-01 00:00:00 +0000
@@ -1,113 +0,0 @@
--
-  In order to test the purchase requisition module, I will do a sale order -> purchase_requisition ->
-  purchase flow and I will buy the required products at two different suppliers.
--
-  I start by creating a new product 'Laptop ACER', which is purchased at Asustek, in MTO,
-  with the generation of purchase requisitions.
--
-  !record {model: product.product, id: product_product_laptopacer1}:
-    categ_id: product.product_category_3
-    cost_method: standard
-    list_price: 1000.0
-    mes_type: fixed
-    name: Laptop ACER1
-    procure_method: make_to_order
-    purchase_requisition: 1
-    seller_ids:
-      - delay: 1
-        name: base.res_partner_asus
-        qty: 5.0
-        min_qty: 1.0
-    supply_method: buy
-    type: product
-    uom_id: product.product_uom_unit
-    uom_po_id: product.product_uom_unit
--
-  Then I sell 5 Laptop ACER to the customer Agrolait, sale order TEST/TENDER/0002
--
-  !record {model: sale.order, id: sale_order_testtender1}:
-    date_order: !eval time.strftime('%Y-%m-%d')
-    invoice_quantity: order
-    name: TEST/TENDER/0002
-    order_line:
-      - name: Laptop ACER1
-        price_unit: 1000.0
-        product_uom: product.product_uom_unit
-        product_uom_qty: 5.0
-        state: draft
-        'delay': 7.0
-        'product_id': product_product_laptopacer1
-        'type': make_to_order
-    order_policy: manual
-    partner_id: base.res_partner_agrolait
-    partner_invoice_id: base.res_partner_address_8
-    partner_order_id: base.res_partner_address_8
-    partner_shipping_id: base.res_partner_address_8
-    picking_policy: direct
-    pricelist_id: product.list0
-    shop_id: sale.shop
--
-  I confirm  sale order.
--
-  !workflow {model: sale.order, action: order_confirm, ref: sale_order_testtender1}
--
-  I launch the scheduler to compute all procurements, and planify all requisitions orders.
--
-  !python {model: procurement.order.compute.all}: |
-    proc_obj = self.pool.get('procurement.order')
-    proc_obj._procure_confirm(cr,uid)
--
-  I should find a purchase requisition with the origin 'TEST/TENDER/0002', that includes a request for
-  5 Laptop ACER, and a purchase order on the default supplier for this product.
--
- !python {model: purchase.requisition}: |
-    requisition_ids =self.search(cr, uid, [('origin','=','Laptop ACER1')])
-    ids=len(requisition_ids)
-    assert len(requisition_ids), "Purchase requisition  hasn't Created"
--
-  On the purchase requisition, I create a new purchase order for the supplier 'DistriPC' by clicking on
-  the button 'New Request for Quotation'. This opens a window to ask me the supplier and I set DistriPC .
--
-  I Create  purchase.requisition.partner .
--
-  !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
-    partner_address_id: base.res_partner_address_7
-    partner_id: base.res_partner_4
--
-  I create a new purchase order for the supplier 'DistriPC'.
--
-  !python {model: purchase.requisition.partner}: |
-    req_obj = self.pool.get('purchase.requisition')
-    ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
-    self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"lang":
-      'en_US', "active_model": "purchase.requisition", "tz": False, "record_id":
-      1, "active_ids": ids, "active_id": ids[0], })
--
-  I set the purchase requisition as 'Exclusive'
--
-  !python {model: purchase.requisition}: |
-    ids =self.search(cr, uid, [('origin','=','Laptop ACER1')])
-    self.write(cr,uid,ids[0],{'exclusive': 'exclusive' })
--
-  I confirm and validate the Request for Quotation of ASUStek.
--
- !python {model: purchase.order}: |
-   partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','ASUStek')])[0]
-   req_obj = self.pool.get('purchase.requisition')
-   ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
-   purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','in',ids)])[0]
-   import netsvc
-   wf_service = netsvc.LocalService("workflow")
-   if purchase_id:
-     wf_service.trg_validate(uid, 'purchase.order',purchase_id,'purchase_confirm', cr)
-     wf_service.trg_validate(uid, 'purchase.order',purchase_id,'purchase_approve', cr)
--
-  I check that Request for Quotation of DistriPC is cancelled.
--
-  !python {model: purchase.order}: |
-   partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','Distrib PC')])[0]
-   req_obj = self.pool.get('purchase.requisition')
-   ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
-   purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','in',ids)])[0]
-   state=self.browse(cr,uid,purchase_id).state
-   assert (state=='cancel')

=== added directory 'purchase_requisition/test/ui'
=== renamed file 'purchase_requisition/test/purchase_requisition_test.yml' => 'purchase_requisition/test/ui/delete_requisition.yml'
--- purchase_requisition/test/purchase_requisition_test.yml	2011-10-10 11:50:02 +0000
+++ purchase_requisition/test/ui/delete_requisition.yml	2011-11-28 07:14:29 +0000
@@ -1,166 +1,19 @@
 -
-  In order to test the purchase requisition flow,I start by creating a new product 'MOB1'
-- 
-  !record {model: product.product, id: product_product_mob1}:
-    name: MOB1
-    categ_id: product.product_category_3
-    cost_method: standard
-    mes_type: fixed
-    price_margin: 2.0
-    procure_method: make_to_stock
-    property_stock_inventory: stock.location_inventory
-    property_stock_procurement: stock.location_procurement
-    property_stock_production: stock.location_production
-    standard_price: 2000.0
-    supply_method: buy
-    type: product
-    uom_id: product.product_uom_unit
-    uom_po_id: product.product_uom_unit
-    volume: 0.0
-    warranty: 0.0
-    weight: 0.0
-    weight_net: 0.0
-- 
-  I create purchase requisition for MOB1 for 1 quantity.
-- 
-  !record {model: purchase.requisition, id: purchase_requisition_te0}:
-    company_id: base.main_company
-    exclusive: multiple
-    line_ids:
-      - company_id: base.main_company
-        product_id: product_product_mob1
-        product_qty: 10.0
-        product_uom_id: product.product_uom_unit
-    name: TE00009
-- 
-  Initially purchase requisition is in draft state.
--
-  !assert {model: purchase.requisition, id: purchase_requisition_te0}:
-    - state == 'draft'  
-- 
-  Copy purchase requisition which is in draft state than confirm and Done it.
--
-  !python {model: purchase.requisition}: |
-    copy_id = self.copy(cr, uid, ref("purchase_requisition_te0"))   
-    self.tender_cancel(cr, uid, [copy_id], context=None)
-    self.tender_reset(cr, uid, [copy_id], context=None)
-    self.tender_in_progress(cr, uid, [copy_id], context=None)
-    self.tender_done(cr, uid, [copy_id], context=None)
-- 
-  I confirm the purchase requisition for MOB1.
-- 
-  !python {model: purchase.requisition}: |
-    self.tender_in_progress(cr, uid, [ref("purchase_requisition_te0")])
--
-  I check that the purchase requisition which was initially in the draft state has transmit to In Progress after confirm it.
--
-  !assert {model: purchase.requisition, id: purchase_requisition_te0}:
-    - state == 'in_progress'
-- 
-  In order to create a purchase order for 'Axelor', i click on the wizard 'Request a Quotation' and create record for wizard.
-- 
-  !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
-    partner_address_id: base.res_partner_address_3000
-    partner_id: base.res_partner_desertic_hispafuentes
-- 
-  I click on 'Create Quotation' for creating PO.
-- 
-  !python {model: purchase.requisition.partner}: |
-    self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"active_model": "purchase.requisition",
-      "active_ids": [ref("purchase_requisition_te0")],"active_id": ref("purchase_requisition_te0"), })
--
-  I confirm the purchase order of Axelor.
--
-  !python {model: purchase.order}: |
-    purchase_id= self.search(cr, uid, [('requisition_id','=',ref("purchase_requisition_te0"))])
-    import netsvc
-    wf_service = netsvc.LocalService("workflow")   
-    if purchase_id:
-      wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_confirm', cr)
-      wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_approve', cr)
--
-  I check that Quotation of Axelor is Approved.
--        
-  !python {model: purchase.order}: |
-   purchase_id= self.search(cr, uid, [('requisition_id','=',ref("purchase_requisition_te0"))])[0]
-   state=self.browse(cr,uid,purchase_id).state
-   assert (state=='approved')
-- 
-  I click on Done button
-- 
-  !python {model: purchase.requisition}: |
-    self.tender_done(cr, uid, [ref("purchase_requisition_te0")],)
--
-  I check that after click on Done button state is in done.
--
-  !assert {model: purchase.requisition, id: purchase_requisition_te0}:
-    - state == 'done'
--
-  In order to test the purchase requisition flow for Requisition Type is exclusive 
-- 
-  I create purchase requisition for Requisition Type is exclusive 
-- 
-  !record {model: purchase.requisition, id: purchase_requisition_ex1}:
-    company_id: base.main_company
-    exclusive: exclusive
-    line_ids:
-      - company_id: base.main_company
-        product_id: product_product_mob1
-        product_qty: 10.0
-        product_uom_id: product.product_uom_unit
-    name: TE000010
-- 
-   I Create a First Purchase Order for the supplier 'Distrib PC'.
-- 
-  !record {model: purchase.requisition.partner, id: purchase_requisition_partner_1}:
-    partner_address_id: base.res_partner_address_7
-    partner_id: base.res_partner_4
-- 
-  I create Quotations For supplier 'Distrib PC'.
-- 
-  !python {model: purchase.requisition.partner}: |
-    self.create_order(cr, uid, [ref("purchase_requisition_partner_1")], {"active_model": "purchase.requisition",
-      "active_ids": [ref("purchase_requisition_ex1")],"active_id": ref("purchase_requisition_ex1"), })    
-- 
-   I Create a Second Purchase Order for the supplier ASUStek.
-- 
-  !record {model: purchase.requisition.partner, id: purchase_requisition_partner_2}:
-    partner_address_id: base.res_partner_address_tang
-    partner_id: base.res_partner_asus
-- 
-  I create Quotations For supplier 'ASUStek'.
-- 
-  !python {model: purchase.requisition.partner}: |
-    self.create_order(cr, uid, [ref("purchase_requisition_partner_2")], {"active_model": "purchase.requisition",
-      "active_ids": [ref("purchase_requisition_ex1")],"active_id": ref("purchase_requisition_ex1"), })
-- 
-  I check that Initially purchase requisition is draft state.
--
-  !assert {model: purchase.requisition, id: purchase_requisition_ex1}:
-    - state == 'draft'  
--
-  I confirm the Second purchase order of ASUStek, than check that Quotation is Approved.
--
-  !python {model: purchase.order}: |
-    purchase_id= self.search(cr, uid, [('partner_id','=',ref("base.res_partner_asus")),('requisition_id','=',ref("purchase_requisition_ex1"))])
-    import netsvc
-    wf_service = netsvc.LocalService("workflow")   
-    if purchase_id:
-      wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_confirm', cr)
-      wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_approve', cr)
-    state=self.browse(cr,uid,purchase_id[0]).state
-    assert (state=='approved')
+  In order to test to delete process on purchase requisition order.
+-
+  I delete draft purchase requisition order.
+-
+  !python {model: purchase.order}: |
+    self.unlink(cr, uid, [ref("order_purchase_requisition1")])
+-
+  Now I try to cancel purchase requisition order.
+-
+  !python {model: purchase.requisition}: |
+    self.tender_cancel(cr, uid, [ref("order_purchase_requisition1")])
+-
+  I delete cancelled purchase requisition order.
+-
+  !python {model: purchase.order}: |
+    self.unlink(cr, uid, [ref("order_purchase_requisition1")])
+
     
--
-  I check that Quotation of Distrib PC is cancelled.
--        
-  !python {model: purchase.order}: |
-   partner_id=self.pool.get('res.partner').search(cr,uid,[('name','=','Distrib PC')])[0]
-   purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','=',ref("purchase_requisition_ex1"))])[0]
-   state=self.browse(cr,uid,purchase_id).state
-   assert (state=='cancel')
--
-  I check that Purchase Requisition is Done.
--
-  !assert {model: purchase.requisition, id: purchase_requisition_ex1}:
-    - state == 'done'

=== renamed file 'purchase_requisition/test/purchase_requisition_report.yml' => 'purchase_requisition/test/ui/purchase_requisition_report.yml'
=== added file 'purchase_requisition/test/ui/requisiton2request_quotation.yml'
--- purchase_requisition/test/ui/requisiton2request_quotation.yml	1970-01-01 00:00:00 +0000
+++ purchase_requisition/test/ui/requisiton2request_quotation.yml	2011-11-28 07:14:29 +0000
@@ -0,0 +1,23 @@
+- 
+  In order to create a Quotatoion, I click on the wizard 'Request a Quotation' and create record from wizard.
+- 
+  !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}:
+    partner_address_id: base.res_partner_address_3000
+    partner_id: base.res_partner_desertic_hispafuentes
+- 
+  I click on 'Create Quotation' for creating a Quatation.
+- 
+  !python {model: purchase.requisition.partner}: |
+    self.create_order(cr, uid, [ref("purchase_requisition_partner_0")], {"active_model": "purchase.requisition",
+      "active_ids": [ref("order_purchase_requisition1")],"active_id": ref("order_purchase_requisition1"), })
+-
+  I check that the purchase order created.
+-
+  !python {model: purchase.order}: |
+    purchase_ids= self.search(cr, uid, [('requisition_id','=',ref("order_purchase_requisition1"))])
+    assert purchase_ids, "Purchase Order is not created from this wizard"
+    rfq = self.browse(cr, uid, purchase_ids[0])
+    assert rfq.state == 'draft',"Purchase Order should be in draft state"
+    assert rfq.partner_address_id.id == ref('base.res_partner_address_3000'),"Purchase Order Partner address is not correspond"
+    assert rfq.partner_id.id == ref('base.res_partner_desertic_hispafuentes'),"Purchase Order Partner is not correspond"
+

_______________________________________________
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