代码之家  ›  专栏  ›  技术社区  ›  NeoVe

正在创建帐户。按代码移动-Odoo v8

  •  1
  • NeoVe  · 技术社区  · 8 年前

    我是新手 account.account Odoo的型号。

    我想知道,有没有关于如何创建 account.move 在Odoo v8上?(新API)

    例如,假设我有以下模型:

    class model1(models.Model):
    
        field1 = fields.Float(string="Field 3")
        field2 = fields.Float(string="Field 3")
        field3 = fields.Float(string="Field 3", compute="compute") 
        partner_journal = fields.Many2one('account.account', string="Journal")
        state = fields.Selection([
            ('draft','Draft'),
            ('awaitingraw','Awaiting raw materials'),
            ('work_in_progress','Print in Progress'),
            ('delivered','Delivered'),
            ('cancel','Cancel'),
        ], string="State")
        csheet = fields.One2many('model2', 'sheets', string="Sheets")
    
        @api.depends('field1','field2','field3')
        def compute(self):
            if self.field1 or self.field2:
                self.field3 = self.field1 + self.field2
    
    class model2(models.Model):
    
        field4 = fields.Float(string="Field 4")
        field5 = fields.Float(string="Field 5")
        field6 = fields.Float(string="Field 6")
        sheets = fields.Many2one('model1', string="Sheets")
    

    从…起 model2 我需要创建一个 账户移动 比如说,我需要 field3 应该是 credit 在选择的任何日记帐上 partner_journal 领域

    我试过这样的方法:

    @api.multi
    @api.depends('field1', 'field2', 'field3', 'state', 'csheet')
    def accounting_scenarios(self):
        for record in self:
            if not len(record.partner_journal):
                raise Warning('Please Enter Journal !')
            if record.state in ('awaitingraw'):
                record.partner_journal.debit = record.csheets.field4
    

    但是,这显然行不通,因为我们需要创建一个 账户移动 用这种方法,我试着直接在上面写 partner_日记帐 在…上 debit 字段 field4

    所以,我需要创建一个 账户移动 让它发挥作用。

    有什么例子或想法吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Charif DZ    8 年前

    你所问的并不是那么容易,你需要学习Odoo的会计模块以及Odoo如何处理会计。

    所以首先我建议你读这本书“ 使用Odoo “这里有一个小章节可以让您对account模块有一个很好的了解。

    然后查看Odoo模块中的代码,例如:当您确认 sale.order 以及奥多如何创建 account.move 包含两个 move.line .

    你会明白什么是 account.account 账户移动 account.move.line , journal entry .

    但总体思路是:您需要创建 acount.move 还有他的 账户移动线 .

    在里面 账户移动 您需要指定与此交易相关的日记账以及其他一些有用的信息。 在里面 账户移动线 在这里定义与事务相关的所有数据。货币、合作伙伴(如果有)、账户、借方和贷方。

    同一示例Odoo 8.0:

          # List of move.line 
          move_lines = [
                        (0, 0, {
                            'name': libelle, # a label so accountant can understand where this line come from
                            'debit': self_debit, # amount of debit
                            'credit': self_credit, # amount of credit
                            'account_id': account_id, # account 
                            'date': date,
                            'partner_id': partner_id, # partner if there is one
                            'currency_id': currency_id or (account.currency_id.id or False),
                        }),
                        (0, 0, {
                            'name': libelle,
                            'debit': debit, 
                            'credit': credit,
                            'account_id': writeoff_acc_id,
                            'analytic_account_id': context.get('analytic_id', False),
                            'date': date,
                            'partner_id': partner_id,
                            'currency_id': currency_id or (account.currency_id.id or False),
                        })
                    ]
    
            # Create account move
            self.pool.get('account.move').create(cr, uid, {
                            'period_id': period_id, #Fiscal period
                            'journal_id': journal_id, # journal ex: sale journal, cash journal, bank journal....
                            'date':date,
                            'state': 'draft',
                            'line_id': move_lines, # this is one2many field to account.move.line
                        })