[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: AccountingUtil.php
<?php namespace Modules\Accounting\Utils; use App\Business; use App\Transaction; use App\TransactionPayment; use App\Utils\Util; use DB; use Modules\Accounting\Entities\AccountingAccountsTransaction; class AccountingUtil extends Util { public function balanceFormula($accounting_accounts_alias = 'accounting_accounts', $accounting_account_transaction_alias = 'AAT') { return "SUM( IF( ($accounting_accounts_alias.account_primary_type='asset' AND $accounting_account_transaction_alias.type='debit') OR ($accounting_accounts_alias.account_primary_type='expense' AND $accounting_account_transaction_alias.type='debit') OR ($accounting_accounts_alias.account_primary_type='income' AND $accounting_account_transaction_alias.type='credit') OR ($accounting_accounts_alias.account_primary_type='equity' AND $accounting_account_transaction_alias.type='credit') OR ($accounting_accounts_alias.account_primary_type='liability' AND $accounting_account_transaction_alias.type='credit'), amount, -1*amount)) as balance"; } public function getAccountingSettings($business_id) { $accounting_settings = Business::where('id', $business_id) ->value('accounting_settings'); $accounting_settings = ! empty($accounting_settings) ? json_decode($accounting_settings, true) : []; return $accounting_settings; } public function getAgeingReport($business_id, $type, $group_by, $location_id = null) { $today = \Carbon::now()->format('Y-m-d'); $query = Transaction::where('transactions.business_id', $business_id); if ($type == 'sell') { $query->where('transactions.type', 'sell') ->where('transactions.status', 'final'); } elseif ($type == 'purchase') { $query->where('transactions.type', 'purchase') ->where('transactions.status', 'received'); } if (! empty($location_id)) { $query->where('transactions.location_id', $location_id); } $dues = $query->whereNotNull('transactions.pay_term_number') ->whereIn('transactions.payment_status', ['partial', 'due']) ->join('contacts as c', 'c.id', '=', 'transactions.contact_id') ->select( DB::raw( 'DATEDIFF( "'.$today.'", IF( transactions.pay_term_type="days", DATE_ADD(transactions.transaction_date, INTERVAL transactions.pay_term_number DAY), DATE_ADD(transactions.transaction_date, INTERVAL transactions.pay_term_number MONTH) ) ) as diff' ), DB::raw('SUM(transactions.final_total - (SELECT COALESCE(SUM(IF(tp.is_return = 1, -1*tp.amount, tp.amount)), 0) FROM transaction_payments as tp WHERE tp.transaction_id = transactions.id) ) as total_due'), 'c.name as contact_name', 'transactions.contact_id', 'transactions.invoice_no', 'transactions.ref_no', 'transactions.transaction_date', DB::raw('IF( transactions.pay_term_type="days", DATE_ADD(transactions.transaction_date, INTERVAL transactions.pay_term_number DAY), DATE_ADD(transactions.transaction_date, INTERVAL transactions.pay_term_number MONTH) ) as due_date') ) ->groupBy('transactions.id') ->get(); $report_details = []; if ($group_by == 'contact') { foreach ($dues as $due) { if (! isset($report_details[$due->contact_id])) { $report_details[$due->contact_id] = [ 'name' => $due->contact_name, '<1' => 0, '1_30' => 0, '31_60' => 0, '61_90' => 0, '>90' => 0, 'total_due' => 0, ]; } if ($due->diff < 1) { $report_details[$due->contact_id]['<1'] += $due->total_due; } elseif ($due->diff >= 1 && $due->diff <= 30) { $report_details[$due->contact_id]['1_30'] += $due->total_due; } elseif ($due->diff >= 31 && $due->diff <= 60) { $report_details[$due->contact_id]['31_60'] += $due->total_due; } elseif ($due->diff >= 61 && $due->diff <= 90) { $report_details[$due->contact_id]['61_90'] += $due->total_due; } elseif ($due->diff > 90) { $report_details[$due->contact_id]['>90'] += $due->total_due; } $report_details[$due->contact_id]['total_due'] += $due->total_due; } } elseif ($group_by == 'due_date') { $report_details = [ 'current' => [], '1_30' => [], '31_60' => [], '61_90' => [], '>90' => [], ]; foreach ($dues as $due) { $temp_array = [ 'transaction_date' => $this->format_date($due->transaction_date), 'due_date' => $this->format_date($due->due_date), 'ref_no' => $due->ref_no, 'invoice_no' => $due->invoice_no, 'contact_name' => $due->contact_name, 'due' => $due->total_due, ]; if ($due->diff < 1) { $report_details['current'][] = $temp_array; } elseif ($due->diff >= 1 && $due->diff <= 30) { $report_details['1_30'][] = $temp_array; } elseif ($due->diff >= 31 && $due->diff <= 60) { $report_details['31_60'][] = $temp_array; } elseif ($due->diff >= 61 && $due->diff <= 90) { $report_details['61_90'][] = $temp_array; } elseif ($due->diff > 90) { $report_details['>90'][] = $temp_array; } } } return $report_details; } /** * Function to delete a mapping */ public function deleteMap($transaction_id, $transaction_payment_id){ AccountingAccountsTransaction::where('transaction_id', $transaction_id) ->whereIn('map_type', ['payment_account', 'deposit_to']) ->where('transaction_payment_id', $transaction_payment_id) ->delete(); } /** * Function to save a mapping */ public function saveMap($type, $id, $user_id, $business_id, $deposit_to, $payment_account, $note = null){ if ($type == 'sell') { $transaction = Transaction::where('business_id', $business_id)->where('id', $id)->firstorFail(); //$payment_account will increase = sales = credit $payment_data = [ 'accounting_account_id' => $payment_account, 'transaction_id' => $id, 'transaction_payment_id' => null, 'amount' => $transaction->final_total, 'type' => 'credit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'payment_account', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; //Deposit to will increase = debit $deposit_data = [ 'accounting_account_id' => $deposit_to, 'transaction_id' => $id, 'transaction_payment_id' => null, 'amount' => $transaction->final_total, 'type' => 'debit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'deposit_to', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; } elseif (in_array($type, ['purchase_payment', 'sell_payment'])) { $transaction_payment = TransactionPayment::where('id', $id)->where('business_id', $business_id) ->firstorFail(); //$payment_account will increase = sales = credit $payment_data = [ 'accounting_account_id' => $payment_account, 'transaction_id' => null, 'transaction_payment_id' => $id, 'amount' => $transaction_payment->amount, 'type' => 'credit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'payment_account', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; //Deposit to will increase = debit $deposit_data = [ 'accounting_account_id' => $deposit_to, 'transaction_id' => null, 'transaction_payment_id' => $id, 'amount' => $transaction_payment->amount, 'type' => 'debit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'deposit_to', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; } elseif ($type == 'purchase') { $transaction = Transaction::where('business_id', $business_id)->where('id', $id)->firstorFail(); //$payment_account will increase = sales = credit $payment_data = [ 'accounting_account_id' => $payment_account, 'transaction_id' => $id, 'transaction_payment_id' => null, 'amount' => $transaction->final_total, 'type' => 'credit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'payment_account', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; //Deposit to will increase = debit $deposit_data = [ 'accounting_account_id' => $deposit_to, 'transaction_id' => $id, 'transaction_payment_id' => null, 'amount' => $transaction->final_total, 'type' => 'debit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'deposit_to', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; }elseif ($type == 'expense') { $transaction = Transaction::where('business_id', $business_id)->where('id', $id)->firstorFail(); $payment_data = [ 'accounting_account_id' => $payment_account, 'transaction_id' => $id, 'transaction_payment_id' => null, 'amount' => $transaction->final_total, 'type' => 'credit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'payment_account', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; $deposit_data = [ 'accounting_account_id' => $deposit_to, 'transaction_id' => $id, 'transaction_payment_id' => null, 'amount' => $transaction->final_total, 'type' => 'debit', 'sub_type' => $type, 'note' => $note, 'map_type' => 'deposit_to', 'created_by' => $user_id, 'operation_date' => \Carbon::now(), ]; } AccountingAccountsTransaction::updateOrCreateMapTransaction($payment_data); AccountingAccountsTransaction::updateOrCreateMapTransaction($deposit_data); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.85 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285