Untitled
unknown
php
a year ago
4.3 kB
14
Indexable
// Check if $screenId is not null and matches the ledger screen ID
$isScreenLedger = $screenId != null && config('screens.ledger.ledger') == $screenId;
// Rewrite the retained earnings brought forward data if the conditions are met
if ($journal->account_title_id == config('const.account_earnedsurplus') && $isScreenLedger) {
Log::debug('Condition met for rewriting retained earnings.', ['journal' => $journal]);
// Retrieve company term and first term
$companyTerm = session('selectedterm');
$firstTerm = CompanyAccountTerm::retrieveTerms(bn_selected_company_id())->first();
// Initialize variables
$openingBalance = $journal->sum_pre_amount;
$rangeAdjustments = [0];
$retainedEarnings_c = $journal->c_amount;
$retainedEarnings_d = $journal->d_amount;
$retainedEarnings_pre = $beCarryAmountSurplus = 0;
// Iterate through each company term
CompanyAccountTerm::retrieveTerms(bn_selected_company_id())->each(function (CompanyAccountTerm $term) use (&$retainedEarnings_pre, $rangeAdjustments) {
// Calculate begin and end dates
$begin = Carbon::createFromFormat('Y-m-d', $term->term_beginmonth)->format('Ym');
$end = Carbon::createFromFormat('Y-m-d', $term->term_endmonth)->format('Ym');
// Skip the current term
if ($term->id === session('selectedterm')) {
return false;
}
// Get previous earned surplus for the term
$previousEarnedsurplus = CompanyJournalDetail::getLedger([
'company_id' => $term->company_id,
'accountterm_id' => $term->id,
'account_title_id' => config('const.account_earnedsurplus')
]);
// Create a financial report instance
$financialReport = new FinancialReportService($term->company_id, $term->id, $begin, 2, bn_language_id());
// Get P/L data last year
$plBalances = $financialReport->createPlData($begin, $end, 0, 1, [], -1, $rangeAdjustments);
$plBalance = end($plBalances);
// Accumulate the retained earnings and profit in this year
$retainedEarnings_pre = BridgenoteTraitCollection::bn_add(
$plBalance['amount'] + $previousEarnedsurplus->sum_amount,
$retainedEarnings_pre
);
});
// Adjust opening balance based on conditions
if ($companyTerm == $firstTerm->id && !empty($accountEarnedsurplusNA)) {
$openingBalance = 0;
}
// Calculate opening balance
$openingBalance = BridgenoteTraitCollection::bn_add($openingBalance, $beCarryAmountSurplus, session('roundup_digit'));
$calculateDl = BridgenoteTraitCollection::bn_sub($journal->d_amount, $journal->c_amount, session('roundup_digit'));
$calculateCr = BridgenoteTraitCollection::bn_sub($journal->c_amount, $journal->d_amount, session('roundup_digit'));
// Update journal entries based on conditions
if ($journal->detailed_id == -1 || ($journal->detailed_id == 0 && $companyTerm == $firstTerm->id)) {
$journal->pre_amount = BridgenoteTraitCollection::bn_add($retainedEarnings_pre, $openingBalance, session('roundup_digit'));
$journal->d_amount = $retainedEarnings_d;
$journal->c_amount = $retainedEarnings_c;
$journal->amount = $retainedEarnings_pre + $openingBalance + ($journal->dc_type == 'DL' ? $calculateDl : $calculateCr);
} elseif ($companyTerm != $firstTerm->id) {
if ($journal->detailed_id == 0) {
$journal->pre_amount = BridgenoteTraitCollection::bn_add($retainedEarnings_pre, $openingBalance, session('roundup_digit'));
$journal->amount = $retainedEarnings_pre + $openingBalance + ($journal->dc_type == 'DL' ? $calculateDl : $calculateCr);
} else {
$journal->pre_amount = 0;
$journal->amount = ($journal->dc_type == 'DL' ? $calculateDl : $calculateCr);
}
} elseif ($companyTerm == $firstTerm->id && $journal->detailed_id > 0) {
$journal->pre_amount = 0;
$journal->amount = ($journal->dc_type == 'DL' ? $calculateDl : $calculateCr);
}
// Round and update sum amounts
$journal->sum_pre_amount = round($journal->pre_amount, session('roundup_digit'));
$journal->sum_amount = round($journal->amount, session('roundup_digit'));
}Editor is loading...
Leave a Comment