0

我对供应商法案有疑问。

当我们创建供应商账单时,有一个日记帐项目选项卡,当我们选择收据时将生成数据。

我有要求用户要重新格式化日记帐项目,比如说添加 1 个借方和贷方的帐户项目。

我正在查看源代码,以及从此行生成的日记项目:

moves_lines = self.env['stock.move'].browse([rec.id for rec in picking_ids.move_ids_without_package])
new_lines = self.env['account.move.line'] 
for line in moves_lines:
    new_line = new_lines.new(line._prepare_picking_account_move_line(self))
    #  if  i  comment  the  above  line,  the  journal  items  will  not  generate    

    new_line.account_id = new_line._get_computed_account()
    new_line.stock_move_id = line.id
    new_line._onchange_price_subtotal()
    new_lines += new_line

我的问题是:

如何修改日记帐项目帐户格式?如果我评论 new_lines.new() 它不会生成日记项目。但我不知道如何修改日志项目生成。有关信息,代码是由以前的程序员创建的,但目前无法联系他们。

之前谢谢

4

1 回答 1

0

根据您的代码,您“只”需要创建一个新的帐户移动行并将其添加到您的记录集(new_lines)。

您可能必须这样做:

moves_lines = self.env['stock.move'].browse([rec.id for rec in picking_ids.move_ids_without_package])
new_lines = self.env['account.move.line'] 
for line in moves_lines:
    new_line = new_lines.new(line._prepare_picking_account_move_line(self))
    #  if  i  comment  the  above  line,  the  journal  items  will  not  generate    

    new_line.account_id = new_line._get_computed_account()
    new_line.stock_move_id = line.id
    new_line._onchange_price_subtotal()
    new_lines += new_line

# do your computation stuff here
dict_of_values = {
    debit: DEBIT_VALUE,
    credit: CREDIT_VALUE,
    account: ACCOUNT_ID,
    **any_other_required_values
}
new_account_move_line = self.env['account.move.line'].new(dict_of_values)
new_lines += new_account_move_line

另一种方法是收集您要创建的 account_move_lines 并将它们直接写入您的 account_move。

amls_to_write = []
amls_to_write += [(0, 0, aml_dict_of_values)]
your_account_move.write({'line_ids': amls_to_write})

关于“神秘”(0、0、值),它对应于:(ORM_METHOD_NUMBER,ID_OF_RECORD,VALUES_OF_RECORD)我让你看看ORM方法:(不要忘记更改你所在版本的链接开发中) https://www.odoo.com/documentation/14.0/developer/reference/addons/orm.html#common-orm-methods

请注意,AccountMove 模型有很多约束,您必须将 account_move_line 平衡在一起,才能使 account_move 的全局余额为 0。(基本会计资料)

顺便说一句,变量名称非常不清楚,这里有混淆的空间。您应该重命名它们以匹配它们的名称。

  • moves_lines并且line是 stock_move ->stock_movesstock_move
  • new_lines并且new_line是 account_move_line ->account_move_linesaccount_move_line(如果太长,则为 aml)
于 2021-10-20T08:15:38.340 回答