跳至内容
菜单
此问题已终结
2 回复
5588 查看

I created a sequence via user interface : Configuration/Technical/Sequences and identifiers/ Sequences

I also created its code so as so to call it, on the python method on : Configuration/technical/Sequence Code

The model concerned is account.invoice , I want that when validating the invoice, it switches to state open, and generate a sequence  number, for that : 

1.  I overrided the type of validate invoice button to object ( it was workflow )

2.  I used invoice_validate as a button method , and overrided it.

3.  I overrided the number field, it was related, I made it simple char field.

and then I used the sequence, after the code for more explaination.

.py :  

class AccountInvoice(orm.Model):

    _inherit = 'account.invoice'
    _name = 'account.invoice'
    _colmuns = {
        'number': fields.char(size=64, readonly=True),
    }

    def invoice_validate(self, cr, uid, ids, context=None):

        num_facture = self.pool.get('ir.sequence').get(cr, uid,'Invoice_number')

        self.write(cr, uid, ids[0], {'state':'open','number': num_facture,}, context=context)
        return True

.xml :

        <record id="invoice_form_custom" model="ir.ui.view">
            <field name="name">invoice.form.custom</field>
            <field name="model">account.invoice</field>
            <field name="inherit_id" ref="account.invoice_form"/>
            <field name="arch" type="xml">
                <xpath expr="//form/header/button[@name='invoice_open']" position="replace">
                    <button name="invoice_validate" states="draft" string="Valider" type="object" class="oe_highlight"/>
                </xpath>
            </field>
        </record>

The issue is that the sequence is not displayed on the field "number" I overrided, should I add "number" on the xml view also ?

Thanks

 

形象
丢弃
最佳答案

Hi, the invoice number is associated with Journal Entry Number (account.move), so you cannot modify like that...

And Invoice validate action is performed by a Workflow..

So do this, write your own function/method say action_XXX(), in which you generate and update the Number

Then override the workflow function to include your custom method...

Like this...


        <record id="act_open" model="workflow.activity">
            <field name="wkf_id" ref="wkf"/>
            <field name="name">open</field>
            <field name="action">action_date_assign()
action_XXX()
action_move_create()
action_number()
invoice_validate()</field>
            <field name="kind">function</field>
        </record>

形象
丢弃
编写者

Hi, I don't want to keep the actual invoice validation workflow, so no need to override it, I changed the type of the button "validate" into object, and related it to a method "x()", which is doing the right treatment I want. I want to give my validated invoice his own sequence, because it's no longer related to account_move. My problem now, is that I want to create a field, taking the new sequence and replacing the old invoice number field.it doesn't work with inheritance, always XML architecture error rising. The sequence is generated, and displayed on any char field of the form, but I want to place it in the heading of the invoice form right after INVOICE ( in bold caracter style).

最佳答案

To get a field displayed, you must add it to a view (in .xml file)

形象
丢弃
编写者

I've added it, here is the xml file : invoice.form.custom account.invoice <xpath expr="//form/header/button[@name='invoice_open']" position="replace"> <xpath expr="//form/sheet/group/group/field[@name='partner_id']" position="before"> XML architecture error rising.

We are talking about the field "number" !!!

编写者

Oh sorry, I pasted the wrong code, I added number with inheritance in the XML file, it didn't work, The purpose is to change the field number, so as to get a new sequence.

相关帖文 回复 查看 活动
0
9月 24
1420
2
3月 24
3089
2
2月 23
3656
6
10月 20
37791
1
9月 20
4363