from odoo import api, fields, models, _ from odoo.exceptions import UserError from datetime import datetime from odoo.http import request import logging _logger = logging.getLogger(__name__) class InvoiceReklas(models.TransientModel): _name = 'invoice.reklas' _description = "digunakan untuk reklas Uang Muka Penjualan" reklas_id = fields.Many2one('account.move', string='Nomor CAB') pay_amt = fields.Float(string='Yang dibayarkan') reklas_type = fields.Selection([ ('penjualan', 'Penjualan'), ('pembelian', 'Pembelian'), ], string='Reklas Tipe') @api.onchange('reklas_type') def _onchange_reklas_type(self): if self.reklas_type == 'penjualan': invoices = self.env['account.move'].browse(self._context.get('active_ids', [])) self.pay_amt = invoices.amount_total def create_reklas(self): if not self.reklas_type: raise UserError('Reklas Tipe harus diisi') if not self.reklas_id: raise UserError('Nomor CAB harus diisi') invoices = self.env['account.move'].browse(self._context.get('active_ids', [])) current_time = datetime.now() for invoice in invoices: if self.reklas_type == 'penjualan': ref_name = 'REKLAS '+self.reklas_id.name+" UANG MUKA PENJUALAN "+invoice.name+" "+invoice.partner_id.name else: ref_name = 'REKLAS '+self.reklas_id.name+" UANG MUKA PEMBELIAN "+invoice.name+" "+invoice.partner_id.name if self.reklas_type == 'penjualan': parameters_header = { 'ref': ref_name, 'date': current_time, 'journal_id': 13 } else: parameters_header = { 'ref': ref_name, 'date': current_time, 'journal_id': 13 } account_move = request.env['account.move'].create([parameters_header]) _logger.info('Success Reklas with %s' % account_move.name) if self.reklas_type == 'penjualan': parameter_debit = { 'move_id': account_move.id, 'account_id': 668, # penerimaan belum alokasi 'partner_id': invoice.partner_id.id, 'currency_id': 12, 'debit': self.pay_amt, 'credit': 0, 'name': ref_name } parameter_credit = { 'move_id': account_move.id, 'account_id': 395, 'partner_id': invoice.partner_id.id, 'currency_id': 12, 'debit': 0, 'credit': self.pay_amt, 'name': ref_name } else: parameter_debit = { 'move_id': account_move.id, 'account_id': 438, 'partner_id': invoice.partner_id.id, 'currency_id': 12, 'debit': self.pay_amt, 'credit': 0, 'name': ref_name } parameter_credit = { 'move_id': account_move.id, 'account_id': 669, 'partner_id': invoice.partner_id.id, 'currency_id': 12, 'debit': 0, 'credit': self.pay_amt, 'name': ref_name } request.env['account.move.line'].create([parameter_debit, parameter_credit]) return { 'name': _('Journal Entries'), 'view_mode': 'form', 'res_model': 'account.move', 'target': 'current', 'view_id': False, 'type': 'ir.actions.act_window', 'res_id': account_move.id }