I have an object named purchase.order,
I want to create 3 different menus and i want to generate 3 different sequence for these three menus.
Menus Sequence number
Purchase order PO00006
Request for material RFM00006
Request for product RFP00006
How can i create three different sequence number for same object?
Another doubt:
There are draft and confirmed purchase orders. I want to generate sequence number only for the confirmed quotations.
How can i do that?
Code
.py
from openerp.osv import fields, osv
from openerp.tools.translate import _
class purchase_seq(osv.osv):
_inherit = 'purchase.requisition'
_columns = {
'sequence_type':fields.selection([('mr','Material Request'),('pr','Purchase Requisition')],'Sequece Type'),
}
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if vals.get('sequence_type') == 'mr':
vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'material.order') or '/'
print "vals['name']1",vals['name']
if vals.get('sequence_type') == 'pr':
vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition') or '/'
print "vals['name']2",vals['name']
return super(purchase_seq, self).create(cr, uid, vals, context=context)
purchase_seq()
view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="purchase_sequence_form" model="ir.ui.view">
<field name="name">purchase.sequence.form.inherit</field>
<field name="model">purchase.requisition</field>
<field name="inherit_id" ref="purchase_requisition.view_purchase_requisition_form"/>
<field name="arch" type="xml">
<field name='name' position='after'>
<field name="sequence_type"/>
</field>
</field>
</record>
<record id="purchase_menu1" model="ir.actions.act_window">
<field name="name">Material Request</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.requisition</field>
<field name="domain">[('sequence_type','=',mr)]</field>
<field name="view_mode">tree,form</field>
</record>
<record id="purchase_menu2" model="ir.actions.act_window">
<field name="name">Purchase Requisitions</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.requisition</field>
<field name="domain">[('sequence_type','=',pr)]</field>
<field name="view_mode">tree,form</field>
</record>
</data>
</openerp>
sequence.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="seq_dcbnumber" model="ir.sequence">
<field name="name">Material Request</field>
<field name="code">material.order</field>
<field name="prefix">RFM</field>
<field name="padding">4</field>
</record>
<record id="seq_filenumber" model="ir.sequence">
<field name="name">Purchase Requisition</field>
<field name="code">purchase.order.requisition</field>
<field name="prefix">RPQ</field>
<field name="padding">4</field>
</record>
</data>
</openerp>
But its not generating the sequence number. I think my code has any mistake, but i dont know to fix it. Please help me...
hi rosey.Create one selection type field which contain three type.Based on the type(PO,RM,RP) you write condition and generate sequence number in the confirm button function.
Hi Saravanan, i know how to generate sequence number. But i dont know how to generate based on a condition. I dont know python code.
Using *Context * to create three different sequence number for same object. For example in the created 3 different menu in the 3 different action. xml window action pass the context value. In the window action 1 Quotations ir.actions.act_window purchase.order * {'purchase': True}* [] tree,form,graph,calendar In the window action 2 * {'reqestformaterial': True}* In the window action 3 * {'reqestforproduct': True}* And create 3 sequence in xml and python create method using context get sequence value. def create(self, cr, uid, vals, context=None): if context is None: context = {} if context.get('purchase'): vals['name'] = // refer the link same object more than one sequence field get if context.get('reqestformaterial'): vals['name'] = // refer the link same object more than one sequence field get if context.get('reqestforproduct'): vals['name'] = // refer the link same object more than one sequence field get return super(employee_sequence, self).create(cr, uid, vals, context=context) Refer the link [1]*https://www.odoo.com/forum/help-1/question/how-to-assign-sequence-number-for-two-different-fields-in-the-same-class-62046 * to get more than one sequence number for same object. [1] https://www.odoo.com/forum/help-1/question/how-to-assign-sequence-number-for-two-different-fields-in-the-same-class-62046
Hi Rosey,You just try this code sequence.xml Material Request material.order.requisition RFM 4 Purchase Requisition purchase.order.requisition RPQ 4 .py from openerp.osv import fields, osv from openerp.tools.translate import _ class purchase_seq(osv.osv): _inherit = 'purchase.requisition' _columns = { 'sequence_type':fields.selection([('mr','Material Request'),('pr','Purchase Requisition')],'Sequece Type',readonly=True), } def create(self, cr, uid, vals, context=None): if context is None: context = {} if context.get('sequence_type') == 'mr': vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'material.order.requisition') or '/' if context.get('sequence_type') == 'pr': vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition') or '/' return super(purchase_seq, self).create(cr, uid, vals, context=context) purchase_seq() view.xml purchase.sequence.form.inherit purchase.requisition Reqest For Material ir.actions.act_window purchase.order [('sequence_type','=',mr)] tree,form Request Purchase Requisition ir.actions.act_window purchase.order [('sequence_type','=',pr)] tree,form