Menyisipkan Baris Account Move Line pada Jurnal Inventory Valuation Odoo 16

Bismillah,
Assalamu'alaikum Warohmatullah Wabarokatuh,


Di artikel kali ini, insyaAllah saya akan memberikan sedikit tips bagaimana cara untuk menyisipkan baris jurnal (account.move.line) pada jurnal inventory valuation.

Contoh kasusnya adalah pada saat ada barang keluar dari penggunaan internal (internal used) jika kita masukkan master taxes pada transaksinya maka akan membentuk nilai pajak pada jurnal inventory yang terbentuk.

Berikut langkah - langkahnya :

1. Disini saya menggunakan fitur Move Order, yaitu fitur custom sebagai approval saat internal transfer atau internal used.



2. Untuk internal used, saya tambahkan field Taxes (many2one), dimana ketika field tersebut diisi master taxes maka akan membentuk jurnal taxes.

class MoveOrderLine(models.Model):
_name = 'move.order.line'

taxes_id = fields.Many2one('account.tax', string='Taxes', domain=[('type_tax_use', '=', 'sale')])

Jangan lupa tambahkan di xml-nya juga.

3. Tambahkan konfigurasi untuk menyimpan akun beban sebagai counterpart dari akun taxes

class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
account_tax_expense_id = fields.Many2one('account.account', string='Tax Expense', help="Config Tax Expense", config_parameter="aa_move_order.account_tax_expense_id", domain=[('account_type','=','expense')])

Jangan lupa tambahkan di xml-nya juga.

4. Overide function _account_entry_move di object stock.move

class StockMove(models.Model):
_inherit = 'stock.move'



def _account_entry_move(self, qty, description, svl_id, cost):
res = super(StockMove, self)._account_entry_move(qty, description, svl_id, cost)

if self.move_order_line_id.taxes_id:
config_settings = self.env['res.config.settings'].sudo().create({})
debit_account_id = config_settings.account_tax_expense_id.id

if not debit_account_id:
raise UserError('Tax Expense Account not found')
tax = self.move_order_line_id.taxes_id.json_friendly_compute_all(cost, self.company_id.currency_id.id)
tax_amount = 0
tax_account = False
if tax:
if len(tax['taxes'])==1:
tax_amount = tax['taxes'][0]['amount']
tax_account = tax['taxes'][0]['account_id']

if not tax_account:
raise UserError('Tax account not found')

debit_line_vals = {
'name': 'Beban Pajak',
'ref': self.move_order_line_id.move_id.name,
'balance': -tax_amount,
'account_id': debit_account_id,
}

credit_line_vals = {
'name': self.move_order_line_id.taxes_id.description,
'ref': self.move_order_line_id.move_id.name,
'balance': tax_amount,
'account_id': tax_account,
}

if res:
res[0]['line_ids'] += [(0, 0, debit_line_vals), (0, 0, credit_line_vals)]
return res


Berikut hasilnya :



Terima kasih, semoga bermanfaat.
Kahfi
Wassalamu'alaikum Warohmatullah Wabarokatuh










Cara membuat report menggunakan py3o