Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
4881 Lượt xem

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 



Ảnh đại diện
Huỷ bỏ
Tác giả

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

Câu trả lời hay nhất

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
Ảnh đại diện
Huỷ bỏ