Odoo 13 — Изменение элементов журнала при создании Поставщика счетов

#odoo-13 #odoo-accounting

Вопрос:

У меня есть вопрос по поводу Счета поставщика.

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

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