通过代码创建 account.move - Odoo v8
Creating account.move by code - Odoo v8
我是 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
应该是 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
但是,它显然不起作用,因为我们需要创建一个 account.move
并且使用这种方法,我尝试的是直接在 debit
上写 partner_journal
字段,field4
数量。
所以,我需要创建一个 account.move
来让它工作。
有什么例子或想法吗?
你问的不是那么简单你需要学习Odoo的会计模块以及Odoo如何处理会计。
所以首先我建议您阅读书籍“Working with Odoo”,其中一小章会让您对帐户模块有一个很好的了解。
然后查看 Odoo 模块中的代码 例如:当您确认 sale.order
以及 Odoo 如何创建包含两个 move.line
.
的 account.move
你会明白什么是account.account
和account.move
和account.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
})
我是 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
应该是 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
但是,它显然不起作用,因为我们需要创建一个 account.move
并且使用这种方法,我尝试的是直接在 debit
上写 partner_journal
字段,field4
数量。
所以,我需要创建一个 account.move
来让它工作。
有什么例子或想法吗?
你问的不是那么简单你需要学习Odoo的会计模块以及Odoo如何处理会计。
所以首先我建议您阅读书籍“Working with Odoo”,其中一小章会让您对帐户模块有一个很好的了解。
然后查看 Odoo 模块中的代码 例如:当您确认 sale.order
以及 Odoo 如何创建包含两个 move.line
.
account.move
你会明白什么是account.account
和account.move
和account.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
})