36 lines
4.2 KiB
PHP
36 lines
4.2 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
class JournalDescriptionService
|
|
{
|
|
private $CI;
|
|
public function __construct(){$this->CI=&get_instance();}
|
|
public function build(array $header,array $lines)
|
|
{
|
|
$type=isset($header['ref_type'])?(string)$header['ref_type']:'';
|
|
if($type===''||$type==='manual_journal')return trim((string)$header['keterangan']);
|
|
$total=0;foreach($lines as$line)$total+=isset($line['debit'])?(float)$line['debit']:0;
|
|
$labels=array('payroll'=>'Posting Payroll','payroll_payment'=>'Pembayaran Payroll','invoice'=>'Posting Invoice Penjualan','customer_payment'=>'Penerimaan Pembayaran Pelanggan','credit_note'=>'Credit Note Penjualan','customer_refund'=>'Refund Pelanggan','receivable_writeoff'=>'Penghapusan Piutang','invoice_reversal'=>'Reversal Invoice','journal_reversal'=>'Reversal Jurnal','stock_logs'=>'Mutasi Persediaan','invoice_details'=>'Penjualan Item Invoice','asset_acquisition'=>'Perolehan Aset','asset_depreciation'=>'Penyusutan Aset','asset_disposal'=>'Pelepasan/Penjualan Aset','asset_addition'=>'Penambahan Nilai Aset','asset_impairment'=>'Impairment Aset','asset_revaluation'=>'Revaluasi Aset','asset_lost'=>'Aset Hilang','asset_damaged'=>'Aset Rusak','cash_transaction'=>'Transaksi Kas/Bank','cash_transfer'=>'Transfer Antar Rekening','supplier_invoice'=>'Posting Tagihan Supplier','supplier_payment'=>'Pembayaran Supplier','supplier_opening_balance'=>'Saldo Awal Hutang Supplier','purchase_return'=>'Retur Pembelian','supplier_debit_note'=>'Debit Note Supplier');
|
|
$parts=array('[AUTO] '.(isset($labels[$type])?$labels[$type]:ucwords(str_replace('_',' ',$type))));
|
|
$document=$this->document($type,isset($header['ref_id'])?$header['ref_id']:null);
|
|
if(!$document['number']&&!empty($header['no_ref']))$document['number']=$header['no_ref'];
|
|
if($type==='customer_payment'&&!$document['party']&&preg_match('/#(\d+)/',(string)$header['keterangan'],$match)){$customer=$this->CI->db->select('nama')->get_where('customers',array('id'=>(int)$match[1]))->row();if($customer)$document['party']=$customer->nama;}
|
|
if($type==='supplier_payment'&&!$document['party']&&preg_match('/#(\d+)/',(string)$header['keterangan'],$match)){$supplier=$this->CI->db->select('name')->get_where('suppliers',array('id'=>(int)$match[1]))->row();if($supplier)$document['party']=$supplier->name;}
|
|
if($document['number'])$parts[]='Dokumen: '.$document['number'];
|
|
if($document['party'])$parts[]='Pihak: '.$document['party'];
|
|
$parts[]='Tanggal transaksi: '.$header['tanggal'];
|
|
$parts[]='Nilai jurnal: Rp '.number_format($total,2,',','.');
|
|
$parts[]='Sumber: '.$type.'#'.(isset($header['ref_id'])&&$header['ref_id']!==null?$header['ref_id']:'-');
|
|
$original=trim((string)$header['keterangan']);if($original!==''&&stripos($original,'[AUTO]')!==0)$parts[]='Rincian: '.$original;
|
|
return implode(' | ',$parts);
|
|
}
|
|
private function document($type,$id)
|
|
{
|
|
$result=array('number'=>null,'party'=>null);if(!$id)return$result;
|
|
if(in_array($type,array('invoice','invoice_reversal','receivable_writeoff','credit_note'),true)){$row=$this->CI->db->select('invoices.no_invoice,customers.nama')->from('invoices')->join('customers','customers.id=invoices.customer_id','left')->where('invoices.id',(int)$id)->get()->row();if($row)return array('number'=>$row->no_invoice,'party'=>$row->nama);}
|
|
if($type==='journal_reversal'){$row=$this->CI->db->select('no_ref')->get_where('journals',array('id'=>(int)$id))->row();if($row)$result['number']=$row->no_ref;}
|
|
if($type==='supplier_invoice'){$row=$this->CI->db->select('supplier_invoices.internal_no,supplier_invoices.supplier_invoice_no,suppliers.name')->from('supplier_invoices')->join('suppliers','suppliers.id=supplier_invoices.supplier_id')->where('supplier_invoices.id',(int)$id)->get()->row();if($row)return array('number'=>$row->internal_no.'/'.$row->supplier_invoice_no,'party'=>$row->name);}
|
|
if($type==='supplier_opening_balance'){$row=$this->CI->db->select('supplier_code,name')->get_where('suppliers',array('id'=>(int)$id))->row();if($row)return array('number'=>'OPEN-'.$row->supplier_code,'party'=>$row->name);}
|
|
return$result;
|
|
}
|
|
}
|