Files
accounting_dev_v2/application/libraries/TaxService.php
T
2026-09-11 16:03:00 +07:00

10 lines
2.2 KiB
PHP

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class TaxService
{
private $CI;public function __construct(){$this->CI=&get_instance();}
private function code($type,$date){return$this->CI->db->where('tax_type',$type)->where('is_active',1)->where('effective_from <=',$date)->group_start()->where('effective_to IS NULL',null,false)->or_where('effective_to >=',$date)->group_end()->order_by('effective_from','DESC')->get('tax_codes')->row();}
public function invoice($id,$journal){$i=$this->CI->db->get_where('invoices',array('id'=>$id))->row();$tax=$this->code('sales',$i->tanggal);if(!$tax)return;foreach($this->CI->db->get_where('invoice_details',array('invoice_id'=>$id))->result()as$l)if((float)$l->tax_amount>0&&!$this->CI->db->get_where('tax_transactions',array('idempotency_key'=>'INV-TAX-'.$l->id))->row())$this->CI->db->insert('tax_transactions',array('tax_date'=>$i->tanggal,'tax_code_id'=>$tax->id,'direction'=>'output','source_type'=>'invoice','source_id'=>$id,'source_line_id'=>$l->id,'counterparty_type'=>'customer','counterparty_id'=>$i->customer_id,'tax_base'=>(float)$l->subtotal-(float)$l->tax_amount,'tax_amount'=>$l->tax_amount,'status'=>'posted','journal_id'=>$journal,'idempotency_key'=>'INV-TAX-'.$l->id,'created_at'=>date('Y-m-d H:i:s')));}
public function supplierInvoice($id,$journal){$i=$this->CI->db->get_where('supplier_invoices',array('id'=>$id))->row();$tax=$this->code('purchase',$i->invoice_date);if(!$tax)$tax=$this->code('sales',$i->invoice_date);if(!$tax)return;foreach($this->CI->db->get_where('supplier_invoice_lines',array('supplier_invoice_id'=>$id))->result()as$l)if((float)$l->tax_amount>0&&!$this->CI->db->get_where('tax_transactions',array('idempotency_key'=>'BILL-TAX-'.$l->id))->row())$this->CI->db->insert('tax_transactions',array('tax_date'=>$i->invoice_date,'tax_code_id'=>$tax->id,'direction'=>'input','source_type'=>'supplier_invoice','source_id'=>$id,'source_line_id'=>$l->id,'counterparty_type'=>'supplier','counterparty_id'=>$i->supplier_id,'tax_invoice_no'=>$i->supplier_invoice_no,'tax_base'=>(float)$l->line_total-(float)$l->tax_amount,'tax_amount'=>$l->tax_amount,'status'=>'posted','journal_id'=>$journal,'idempotency_key'=>'BILL-TAX-'.$l->id,'created_at'=>date('Y-m-d H:i:s')));}
}