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