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