public function store(TransactionRecorderRequest $request) { try { DB::transaction(function () use($request) { $recorder = new TransactionRecorder(); $slice = substr($request->account_code, 0, 1); $currentYear = CommonHelper::get_current_financial_year(); if ($slice == 1 || $slice == 2 || $slice == 3) { $recorder->from_whom_type = $request->from_whom_type; $recorder->from_whom = $request->from_whom; $recorder->total_amount = $request->total_amount; $recorder->amount = $request->amount; $recorder->transaction_detail = $request->transaction_detail; } elseif ($slice == 4) { $recorder->to_whom_type = $request->to_whom_type; $recorder->to_whom = $request->to_whom; $recorder->total_amount = $request->total_amount; $recorder->amount = $request->amount; $recorder->transaction_detail = $request->transaction_detail; } elseif ($slice == 5 || $slice == 6) { $recorder->amount = $request->amount; } $recorder->date = $request->date; $recorder->year = $currentYear; $recorder->workspace_id = Auth::user()->workspace_id; $recorder->account_code = $request->account_code; $recorder->created_by = Auth::user()->id; $recorder->created_at = time(); $recorder->save(); // IMPACTS ON ACCOUNTING TABLES $workspace_id = Auth::user()->workspace_id; $cashCode = 11000; $accountReceivableCode = 12000; $accountPayableCode = 41000; $revenueCode = 30000; $expenseCode = 20000; $drawCode = 50000; $investmentCode = 60000; $officeSuppliesCode = 27000; if ($request->account_code == 12000) { // ACCOUNT RECEIVABLE // Workspace Ledger Account Receivable Credit(-) $accountReceivableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountReceivableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $accountReceivableWorkspaceData->balance -= $request->amount; $accountReceivableWorkspaceData->update(); // Workspace Ledger Cash Debit(+) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance += $request->amount; $cashWorkspaceData->update(); // Personal Account Due(-) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->due -= $request->amount; $personData->update(); // General Journals Account Receivable Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountReceivableCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 41000) { // ACCOUNT PAYABLE // Account Payable Debit(-) $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountPayableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $accountPayableWorkspaceData->balance -= $request->amount; $accountPayableWorkspaceData->update(); // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Personal Account Balance(-) $person_type = $request->to_whom_type; $person_id = $request->to_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->balance -= $request->amount; $personData->update(); // General Journals Account Payable Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountPayableCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 30000) { // REVENUE $due = $request->total_amount - $request->amount; // Revenue Credit(+) with Total Amount $revenueWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $revenueCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $revenueWorkspaceData->balance += $request->total_amount; $revenueWorkspaceData->update(); // Workspace Ledger Cash Debit(+) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance += $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Account Receivable Debit(+) $accountReceivableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountReceivableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $accountReceivableWorkspaceData->balance += $due; $accountReceivableWorkspaceData->update(); if ($due > 0) { // Personal Account Due(+) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->due += $due; $personData->update(); // General Journals Account Receivable Debit with due $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountReceivableCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $due; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } // General Journals Revenue Credit with total amount $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $revenueCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->total_amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Debit with paid $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 20000) { // EXPENSE // Workspace Ledger Expense Account Debit(+) $expenseWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $expenseCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $expenseWorkspaceData->balance += $request->total_amount; $expenseWorkspaceData->update(); // Workspace Ledger Cash Credit(-) $due = $request->total_amount - $request->amount; $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Account Payable Credit with Due(+) $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountPayableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $accountPayableWorkspaceData->balance += $due; $accountPayableWorkspaceData->update(); if ($due > 0) { // Personal Account Due(+) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->balance += $due; $personData->update(); // General Journals Account Payable Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountPayableCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $due; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } // General Journals Expense Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $expenseCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->total_amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 50000) { // DRAW // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Draw Debit(+) $drawWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $drawCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $drawWorkspaceData->balance += $request->amount; $drawWorkspaceData->update(); // General Journals Draw Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $drawCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 60000) { // OWNERS INVESTMENT // Workspace Ledger Cash Debit(+) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance += $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Investment Account Credit(+) $investmentWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $investmentCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $investmentWorkspaceData->balance += $request->amount; $investmentWorkspaceData->update(); // General Journals Investment Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $investmentCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 27000) { // OFFICE SUPPLIES // Workspace Ledger Office Supplies Account Debit(+) $due = $request->total_amount - $request->amount; $ofcSuppliesWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $officeSuppliesCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $ofcSuppliesWorkspaceData->balance += $request->total_amount; $ofcSuppliesWorkspaceData->update(); // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Account Payable Credit with Due(+) $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountPayableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $accountPayableWorkspaceData->balance += $due; $accountPayableWorkspaceData->update(); if ($due > 0) { // Personal Account Due(+) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->balance += $due; $personData->update(); // General Journals Account Payable Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountPayableCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $due; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } // General Journals Office Supply Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $officeSuppliesCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->total_amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 29000 || $request->account_code == 29100 || $request->account_code == 29200 || $request->account_code == 29300 || $request->account_code == 29400 || $request->account_code == 29500 || $request->account_code == 29600 || $request->account_code == 29700 || $request->account_code == 29800 || $request->account_code == 29910 || $request->account_code == 29950 || $request->account_code == 29980 || $request->account_code == 29990 || $request->account_code == 29991 || $request->account_code == 23000) { $due = $request->total_amount - $request->amount; $accountCode = $request->account_code; // Workspace Ledger Account Debit(+) $repairWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $repairWorkspaceData->balance += $request->total_amount; $repairWorkspaceData->update(); // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Account Payable Credit with Due(+) $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountPayableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $accountPayableWorkspaceData->balance += $due; $accountPayableWorkspaceData->update(); if ($due > 0) { // Personal Account Due(+) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->balance += $due; $personData->update(); // General Journals Account Payable Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountPayableCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $due; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } // General Journals Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->total_amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 29930 || $request->account_code == 29960 || $request->account_code == 29996) { // DONATION, JAKAT or Middleman Commission $accountCode = $request->account_code; // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Workspace Ledger Account Debit(+) $repairWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $repairWorkspaceData->balance += $request->amount; $repairWorkspaceData->update(); // General Journals Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 29940) { $accountCode = $request->cash_adjustment_type; if ($accountCode == 29994) { // Invisible Expense // Workspace Ledger Invisible Expense Account Debit(+) $WorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $WorkspaceData->balance += $request->amount; $WorkspaceData->update(); // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // General Journals Invisible Expense Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->cash_adjustment_type == 37000) { // Invisible Income // Workspace Ledger Invisible Income Account Credit(+) $WorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $WorkspaceData->balance += $request->amount; $WorkspaceData->update(); // Workspace Ledger Cash Debit(+) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance += $request->amount; $cashWorkspaceData->update(); // General Journals Invisible Income Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } } elseif ($request->account_code == 12100) { // Loan Receive $accountCode = 41400; // Workspace Ledger Loan Payable Account Credit(+) $WorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $WorkspaceData->balance += $request->amount; $WorkspaceData->update(); // Workspace Ledger Cash Debit(+) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance += $request->amount; $cashWorkspaceData->update(); // Personal Account balance(+) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->balance += $request->amount; $personData->update(); // General Journals Loan Payable Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($request->account_code == 41400) { // Loan Pay $accountCode = $request->account_code; // Workspace Ledger Loan Payable Account Debit(-) $WorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $WorkspaceData->balance -= $request->amount; $WorkspaceData->update(); // Workspace Ledger Cash Credit(-) $cashWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first(); $cashWorkspaceData->balance -= $request->amount; $cashWorkspaceData->update(); // Personal Account balance(-) $person_type = $request->from_whom_type; $person_id = $request->from_whom; $personData = PersonalAccount::where(['person_id' => $person_id, 'person_type' => $person_type])->first(); $personData->balance -= $request->amount; $personData->update(); // General Journals Loan Payable Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $accountCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($request->date); $generalJournal->transaction_type = Config::get('common.transaction_type.general'); $generalJournal->reference_id = $recorder->id; $generalJournal->year = $currentYear; $generalJournal->account_code = $cashCode; $generalJournal->workspace_id = $workspace_id; $generalJournal->amount = $request->amount; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } }); } catch (\Exception $e) { //dd($e); Session()->flash('error_message', 'Transaction Recorder Creation Failed.'); return redirect('recorders'); } Session()->flash('flash_message', 'Transaction Recorder Creation Successful.'); return redirect('recorders'); }
public function getAdjustmentAmounts(Request $request) { $workspace_id = Auth::user()->workspace_id; $account = $request->input('account'); $year_str = strtotime(date('Y')); if ($account == 25000) { $purchaseDetail = PurchaseDetail::where(['status' => 1], ['created_at', '>', $year_str])->get(['unit_price', 'quantity']); $total_amount = 0; $total_quantity = 0; foreach ($purchaseDetail as $detail) { $total_amount += $detail->quantity * $detail->unit_price; $total_quantity += $detail->quantity; } $unit_price = $total_amount / $total_quantity; $stocks = RawStock::where('status', 1)->sum('quantity'); $remaining_amount = $stocks * $unit_price; $return = new stdClass(); $return->total_amount = $total_amount; $return->remaining_amount = $remaining_amount; return response()->json($return); } elseif ($account == 27000) { $supply_amount = TransactionRecorder::where(['workspace_id' => $workspace_id, 'account_code' => $account, 'status' => 1, 'year' => date('Y')])->sum('total_amount'); return response()->json($supply_amount); } }