Odoo 13 - изменение элементов журнала при создании продавца счетов

У меня вопрос по поводу Билла продавца.

Когда мы создаем счет поставщика, есть вкладка «Элементы журнала», данные которой будут сгенерированы, когда мы выберем «Квитанции».

У меня есть требование, чтобы пользователь хотел переформатировать элемент журнала, скажем, добавить 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(), он не будет генерировать элементы журнала. Но я не знаю, как изменить генерацию записей журнала. Для информации код был создан предыдущим программистом, но в настоящее время с ним невозможно связаться.

Спасибо раньше

1 ответ

Согласно вашему фрагменту кода вам «просто» нужно создать новую строку перемещения учетной записи и добавить ее в свой набор записей (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_moves а также stock_move
  • new_lines а также new_line account_move_line -> account_move_lines а также account_move_line (или aml, если это слишком долго)
Другие вопросы по тегам