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, если это слишком долго)