gpt4 book ai didi

python - 通过代码创建 account.move - Odoo v8

转载 作者:行者123 更新时间:2023-11-30 22:24:51 26 4
gpt4 key购买 nike

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

我想知道,是否有一些关于如何在 Odoo v8 上创建 account.move 的示例? (新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 我需要在日记中创建一个 account.move ,比方说,我需要 field3 应该是 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

但是,它显然不起作用,因为我们需要创建一个 account.move ,而使用这种方法,我尝试的是直接在 partner_journal 上写入在借方字段中,field4数量。

因此,我需要创建一个 account.move 才能使其正常工作。

有什么例子或想法吗?

最佳答案

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

首先,我建议您阅读《使用 Odoo》一书,其中有一小章可以让您对帐户模块有一个很好的了解。

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

你会明白什么是account.accountaccount.moveaccount.move.line , journal entry .

但总体思路:您需要创建一个 acount.move和他的account.move.line .

account.move您需要指定该翻译与哪个期刊相关以及一些其他有用的信息。 在 account.move.line您可以在此处定义与交易相关的所有数据。货币、合作伙伴(如果有)、账户、借方和贷方。

相同示例 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
})

关于python - 通过代码创建 account.move - Odoo v8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com