summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/invoice_reklas.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/invoice_reklas.py')
-rw-r--r--indoteknik_custom/models/invoice_reklas.py97
1 files changed, 70 insertions, 27 deletions
diff --git a/indoteknik_custom/models/invoice_reklas.py b/indoteknik_custom/models/invoice_reklas.py
index 5e21a787..b7d52371 100644
--- a/indoteknik_custom/models/invoice_reklas.py
+++ b/indoteknik_custom/models/invoice_reklas.py
@@ -20,12 +20,26 @@ class InvoiceReklas(models.TransientModel):
@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
- # Tambahan ini:
- if len(invoices) == 1 and invoices.move_type == 'entry':
- self.reklas_id = invoices.id
+ active_ids = self._context.get('active_ids', [])
+ if not active_ids:
+ return
+
+ move = self.env['account.move'].browse(active_ids[0])
+ cab = False
+
+ if move.move_type == 'entry':
+ cab = move
+ elif move.move_type == 'in_invoice':
+ if move.reklas_misc_id:
+ cab = move.reklas_misc_id
+ elif move.purchase_order_id and move.purchase_order_id.move_id:
+ cab = move.purchase_order_id.move_id
+
+ if cab:
+ self.reklas_id = cab.id
+
+ # ✅ Selalu ambil nilai dari invoice yang direklas (bukan dari CAB)
+ self.pay_amt = move.amount_total
@api.model
def default_get(self, fields):
@@ -33,11 +47,23 @@ class InvoiceReklas(models.TransientModel):
active_ids = self._context.get('active_ids', [])
if active_ids:
move = self.env['account.move'].browse(active_ids[0])
+ cab = False
+
if move.move_type == 'entry':
- res['reklas_id'] = move.id
- res['pay_amt'] = move.amount_total # atau amount_residual jika mau sisa
+ cab = move
+ elif move.move_type == 'in_invoice':
+ if move.reklas_misc_id:
+ cab = move.reklas_misc_id
+ elif move.purchase_order_id and move.purchase_order_id.move_id:
+ cab = move.purchase_order_id.move_id
+
+ if cab:
+ res['reklas_id'] = cab.id
+
+ res['pay_amt'] = move.amount_total
return res
+
@api.onchange('reklas_type')
def _onchange_reklas_type(self):
if self.reklas_type == 'penjualan':
@@ -49,33 +75,47 @@ class InvoiceReklas(models.TransientModel):
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
- }
+ # Ambil nama PO jika ada
+ po_name = invoice.purchase_order_id.name if invoice.purchase_order_id else ''
+
+ # Susun nama referensi dengan aman
+ ref_name = 'REKLAS {} UANG MUKA {} {}{} {}'.format(
+ self.reklas_id.name or '',
+ 'PENJUALAN' if self.reklas_type == 'penjualan' else 'PEMBELIAN',
+ invoice.name or '',
+ f" - {po_name}" if po_name else '',
+ invoice.partner_id.name or ''
+ )
+
+ # Header jurnal reklas
+ 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)
+ # ✅ Set Bill asal sebagai source document
+ account_move.bill_id = invoice.id
+
+ # Tambahkan info asal invoice ke jurnal (opsional)
+ account_move.invoice_origin = invoice.name
+
+ # Simpan hubungan balik ke invoice
+ invoice.reklas_misc_id = account_move.id
+
+ # Buat line debit dan kredit
if self.reklas_type == 'penjualan':
parameter_debit = {
'move_id': account_move.id,
- 'account_id': 668, # penerimaan belum alokasi
+ 'account_id': 668, # penerimaan belum alokasi
'partner_id': invoice.partner_id.id,
'currency_id': 12,
'debit': self.pay_amt,
@@ -91,7 +131,7 @@ class InvoiceReklas(models.TransientModel):
'credit': self.pay_amt,
'name': ref_name
}
- else:
+ else: # pembelian
parameter_debit = {
'move_id': account_move.id,
'account_id': 438,
@@ -110,7 +150,11 @@ class InvoiceReklas(models.TransientModel):
'credit': self.pay_amt,
'name': ref_name
}
+
+ # Simpan journal lines
request.env['account.move.line'].create([parameter_debit, parameter_credit])
+
+ # Tampilkan hasil jurnal reklas
return {
'name': _('Journal Entries'),
'view_mode': 'form',
@@ -120,4 +164,3 @@ class InvoiceReklas(models.TransientModel):
'type': 'ir.actions.act_window',
'res_id': account_move.id
}
- \ No newline at end of file