Skip to Content
Menu
This question has been flagged
2 Replies
4115 Views

i want to show the sequence name based on the value of a selection field 'type', my code is like this:

.xml

<record id='certification_view_form' model='ir.ui.view'>
            <field name="name">hr.certification.form</field>
            <field name="model">certificat.order</field>
            <field name="arch" type="xml">
               <form>
                <header>
                    <button name="action_validate_one" type="object" string="Valider" class="oe_highlight" attrs="{'invisible':[('type','!=','one')]}" state="draft"/>
                    <button name="action_validate_two" type="object" string="Valider" class="oe_highlight"  attrs="{'invisible':[('type','!=','two')]}" state="draft"/>
		field name="state" widget="statusbar"/>
                </header>
                <sheet>
                    <div class='oe_title'>
                        <h1>
                            <field name="name" readonly="1"  attrs="{'invisible': [('type','!=','one')]}"/>
                            <field name="name_sal" readonly="1"  attrs="{'invisible': [('type','!=','two')]}"/>
                        </h1>
                    </div>
                        <group>
                            <field name="type"/>
                        </group>
                </sheet>
                </form>
	  </field>
        </record>


.py


name = fields.Char(string='Reference one', required=True, copy=False, readonly=True, index=True, default=lambda self: ('New'))
    name_sal = fields.Char(string='Reference two', required=True, copy=False, readonly=True, index=True, default=lambda self: ('New'))



     @api.model 
    def create(self, vals):
        if vals.get('name', ('New')) == ('New'):
            vals['name'] = self.env['ir.sequence'].next_by_code('one.order') or ('New')
        result = super(certificationsorder, self).create(vals)
        return result
    
    @api.model 
    def create_sal(self, vals):
        if vals.get('name_sal', ('New')) == ('New'):
            vals['name_sal'] = self.env['ir.sequence'].next_by_code('two.order') or ('New')
        result = super(certificationsorder, self).create_sal(vals)
        return result 

    def action_validate_one(self):
        for rec in self:
            rec.state = 'valide'
	
    def action_validate_two(self):
        for rec in self:
            rec.state = 'valide'


Data/sequence.xml

<record id="seq_one_order" model="ir.sequence">
            <field name="name">Type One Order</field>
            <field name="code">one.order</field>
            <field name="prefix">ATTESTTRV</field>
            <field name="padding">5</field>
            <field name="company_id" eval="False"/>
        </record>
        
         <record id="seq_two_order" model="ir.sequence">
            <field name="name">Type Two Order</field>
            <field name="code">two.order</field>
            <field name="prefix">ATTESTSAL</field>
            <field name="padding">5</field>
            <field name="company_id" eval="False"/>
        </record>

for the type = one the sequence works fine, but for the type two it dosent work i don't know what is still missing 



Avatar
Discard
Author

thanks Eman, it works, sorry for replying that late. thank you again

Best Answer

Hello Hima,

I dont understand what def create_sale(self,vals) is

Try this - 

def create(self, vals):
if vals.get('name', ('New')) == ('New'):
    vals['name'] = self.env['ir.sequence'].next_by_code('one.order') or ('New')
 if vals.get('name_sal', ('New')) == ('New'):
    vals['name_sal'] = self.env['ir.sequence'].next_by_code('two.order') or ('New')
result = super(certificationsorder, self).create(vals)
return result
Avatar
Discard