Ejemplo n.º 1
0
 public function store(SupplierRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $supplier = new Supplier();
             $supplier->suppliers_type = $request->input('suppliers_type');
             $supplier->company_name = $request->input('company_name');
             $supplier->company_address = $request->input('company_address');
             $supplier->company_office_phone = $request->input('company_office_phone');
             $supplier->company_office_fax = $request->input('company_office_fax');
             $supplier->contact_person = $request->input('contact_person');
             $supplier->contact_person_phone = $request->input('contact_person_phone');
             $supplier->supplier_description = $request->input('supplier_description');
             $supplier->status = $request->input('status');
             $supplier->created_at = time();
             $supplier->created_by = Auth::user()->id;
             $supplier->save();
             //Personal Account Creation
             $personal = new PersonalAccount();
             $personal->person_type = Config::get('common.person_type_supplier');
             if (!empty($request->input('balance'))) {
                 $personal->balance = $request->input('balance');
             }
             if (!empty($request->input('due'))) {
                 $personal->due = $request->input('due');
             }
             $personal->person_id = $supplier->id;
             $personal->created_by = Auth::user()->id;
             $personal->created_at = time();
             $personal->save();
             $year = CommonHelper::get_current_financial_year();
             $user = Auth::user();
             $time = time();
             if (!empty($request->input('balance'))) {
                 // Update Workspace Ledger
                 $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 41000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                 $workspaceLedger->balance += $request->input('balance');
                 $workspaceLedger->updated_by = $user->id;
                 $workspaceLedger->updated_by = $time;
                 $workspaceLedger->save();
             }
             if (!empty($request->input('due'))) {
                 // Update Workspace Ledger
                 $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 12000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                 $workspaceLedger->balance += $request->input('due');
                 $workspaceLedger->updated_by = $user->id;
                 $workspaceLedger->updated_by = $time;
                 $workspaceLedger->save();
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Data cannot Save. Please Try Again');
         return redirect('suppliers');
     }
     Session()->flash('flash_message', 'Data has been Saved');
     return redirect('suppliers');
 }
 public function update($id, ProductStockInitializationsRequest $request)
 {
     $year = CommonHelper::get_current_financial_year();
     $stock = new Stock();
     $stock::where(['product_id' => $id, 'stock_type' => Config::get('common.balance_type_opening'), 'year' => $year])->increment('quantity', $request->input('opening_stock'), ['updated_at' => time(), 'updated_by' => Auth::user()->id]);
     $stock::where(['product_id' => $id, 'stock_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->increment('quantity', $request->input('opening_stock'), ['updated_at' => time(), 'updated_by' => Auth::user()->id]);
     Session()->flash('flash_message', 'Product Stock has been initialized!');
     return redirect('product_stock_initializations');
 }
Ejemplo n.º 3
0
 public function edit($id)
 {
     try {
         DB::transaction(function () use($id) {
             $cashCode = 11000;
             $currentYear = CommonHelper::get_current_financial_year();
             $workspace_id = Auth::user()->workspace_id;
             $cashTransaction = CashTransaction::findOrFail($id);
             $cashTransaction->received = 1;
             $cashTransaction->receiving_date = date('d-m-Y');
             $cashTransaction->updated_by = Auth::user()->id;
             $cashTransaction->updated_at = time();
             $cashTransaction->update();
             // Workspace Ledger Impact
             // Workspace Ledger Cash Credit(-)
             $cashWorkspaceDataSender = WorkspaceLedger::where(['workspace_id' => $cashTransaction->workspace_from, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
             $cashWorkspaceDataSender->balance -= $cashTransaction->amount;
             $cashWorkspaceDataSender->update();
             // Workspace Ledger Cash Debit(+)
             $cashWorkspaceDataReceiver = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $cashCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
             $cashWorkspaceDataReceiver->balance += $cashTransaction->amount;
             $cashWorkspaceDataReceiver->update();
             // General Journal Impact
             // Sender Cash Account Credit
             $generalJournal = new GeneralJournal();
             $generalJournal->date = strtotime(date('d-m-Y'));
             $generalJournal->transaction_type = Config::get('common.transaction_type.cash_transfer');
             $generalJournal->reference_id = $id;
             $generalJournal->year = $currentYear;
             $generalJournal->account_code = $cashCode;
             $generalJournal->workspace_id = $cashTransaction->workspace_from;
             $generalJournal->amount = $cashTransaction->amount;
             $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $generalJournal->created_by = Auth::user()->id;
             $generalJournal->created_at = time();
             $generalJournal->save();
             // Receiver Cash Account Debit
             $generalJournal = new GeneralJournal();
             $generalJournal->date = strtotime(date('d-m-Y'));
             $generalJournal->transaction_type = Config::get('common.transaction_type.cash_transfer');
             $generalJournal->reference_id = $id;
             $generalJournal->year = $currentYear;
             $generalJournal->account_code = $cashCode;
             $generalJournal->workspace_id = $workspace_id;
             $generalJournal->amount = $cashTransaction->amount;
             $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
             $generalJournal->created_by = Auth::user()->id;
             $generalJournal->created_at = time();
             $generalJournal->save();
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Cash Not Received!');
         return redirect('cash_transaction');
     }
     Session()->flash('flash_message', 'Cash Received & Account Debited Successfully!');
     return redirect('cash_transaction');
 }
Ejemplo n.º 4
0
 public function getReport(Request $request)
 {
     $this->validate($request, ['workspace_id' => 'required']);
     $workspace_id = $request->workspace_id;
     $debits = DB::table('general_journals')->select('general_journals.*', 'chart_of_accounts.name')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where('transaction_type', '!=', Config::get('common.transaction_type.cash_transfer'))->where(['workspace_id' => $workspace_id, 'dr_cr_indicator' => Config::get('common.debit_credit_indicator.debit'), 'year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->get();
     $credits = DB::table('general_journals')->select('general_journals.*', 'chart_of_accounts.name')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where('transaction_type', '!=', Config::get('common.transaction_type.cash_transfer'))->where(['workspace_id' => $workspace_id, 'dr_cr_indicator' => Config::get('common.debit_credit_indicator.credit'), 'year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->get();
     $debits = json_decode(json_encode($debits), true);
     $credits = json_decode(json_encode($credits), true);
     $ajaxView = view('reports.trialBalance.view', compact('debits', 'credits'))->render();
     return response()->json($ajaxView);
 }
Ejemplo n.º 5
0
 /**
  * Update the specified resource in storage.
  *
  * @param  Request  $request
  * @param  int  $id
  * @return Response
  */
 public function update(Request $request, $id)
 {
     /**
      * @var $user \App\User
      */
     $user = \Auth::user();
     $order_model = $user->orderedProducts()->findOrFail($id);
     $order_model->quantity = $request->get('quantity');
     $order_model->save();
     $user = \App\Helpers\CommonHelper::getCurrentUser();
     return ['calls' => [['call' => 'updateHtmlContext', 'params' => ['#product-mini-item-' . $order_model->product_id, view('catalog.product_mini_item', ['product' => $order_model->product])->render()]], ['call' => 'updateHtmlContext', 'params' => ['#basket-mini-box', view('basket.mini_box')->render()]], ['call' => 'updateHtmlContext', 'params' => ['#basket-orders-container', view('basket.orders_items')->render()]], ['call' => 'updateHtmlContext', 'params' => ['#basket-total-sum', $user->getAmountOpenOrders()]]]];
 }
Ejemplo n.º 6
0
 public function getReport(Request $request)
 {
     $this->validate($request, ['stock_type' => 'required']);
     $stock_type = $request->stock_type;
     $currentYear = CommonHelper::get_current_financial_year();
     if ($stock_type == 1) {
         $stocks = DB::table('raw_stocks')->select('raw_stocks.*', 'materials.name')->where(['stock_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->join('materials', 'materials.id', '=', 'raw_stocks.material_id')->get();
     } elseif ($stock_type == 2) {
         $stocks = DB::table('stocks')->select('stocks.*', 'products.title')->where(['stock_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->join('products', 'products.id', '=', 'stocks.product_id')->get();
     }
     $ajaxView = view('reports.stocks.view', compact('stocks', 'stock_type'))->render();
     return response()->json($ajaxView);
 }
Ejemplo n.º 7
0
 public function getReport(Request $request)
 {
     $customers = Customer::where('status', 1)->lists('name', 'id');
     $employees = Employee::where('status', 1)->lists('name', 'id');
     $suppliers = Supplier::where('status', 1)->lists('company_name', 'id');
     $cashInHand = DB::table('workspace_ledgers')->where(['account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => CommonHelper::get_current_financial_year()])->sum('balance');
     $sales = DB::table('general_journals')->select('general_journals.*', 'chart_of_accounts.name', 'sales_order.customer_id', 'sales_order.customer_type')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->join('sales_order', 'sales_order.id', '=', 'general_journals.reference_id')->where(['transaction_type' => Config::get('common.transaction_type.sales'), 'account_code' => 31000, 'year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->where('general_journals.date', '=', strtotime(date('d-m-Y')))->get();
     $salesReturns = DB::table('general_journals')->select('general_journals.*', 'chart_of_accounts.name', 'sales_order.customer_id', 'sales_order.customer_type')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->join('sales_order', 'sales_order.id', '=', 'general_journals.reference_id')->where(['transaction_type' => Config::get('common.transaction_type.sales_return'), 'account_code' => 32000, 'year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->where('general_journals.date', '=', strtotime(date('d-m-Y')))->get();
     $expenses = DB::table('general_journals')->select('general_journals.*', 'chart_of_accounts.name')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where('general_journals.account_code', 'like', '2%')->where('general_journals.date', '=', strtotime(date('d-m-Y')))->get();
     $sales = json_decode(json_encode($sales), true);
     $salesReturns = json_decode(json_encode($salesReturns), true);
     $expenses = json_decode(json_encode($expenses), true);
     $ajaxView = view('reports.cashFlow.view', compact('sales', 'salesReturns', 'expenses', 'customers', 'employees', 'suppliers', 'cashInHand'))->render();
     return response()->json($ajaxView);
 }
 public function getReport(Request $request)
 {
     $this->validate($request, ['ending_date' => 'required']);
     $workspace_id = $request->workspace;
     $ending_date = strtotime($request->ending_date);
     if ($workspace_id > 0) {
         $revenues = DB::table('general_journals')->select('general_journals.*', DB::raw('SUM(amount) as sum_amount'), 'chart_of_accounts.name', 'chart_of_accounts.contra_status')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where(['workspace_id' => $workspace_id, 'year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->where('general_journals.account_code', 'like', '3%')->where('general_journals.date', '<=', $ending_date)->groupBy('general_journals.account_code')->get();
         $expenses = DB::table('general_journals')->select('general_journals.*', DB::raw('SUM(amount) as sum_amount'), 'chart_of_accounts.name', 'chart_of_accounts.contra_status')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where(['workspace_id' => $workspace_id, 'year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->where('general_journals.account_code', 'like', '2%')->where('general_journals.date', '<=', $ending_date)->groupBy('general_journals.account_code')->get();
     } else {
         $revenues = DB::table('general_journals')->select('general_journals.*', DB::raw('SUM(amount) as sum_amount'), 'chart_of_accounts.name', 'chart_of_accounts.contra_status')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where(['year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->where('general_journals.account_code', 'like', '3%')->where('general_journals.date', '<=', $ending_date)->groupBy('general_journals.account_code')->get();
         $expenses = DB::table('general_journals')->select('general_journals.*', DB::raw('SUM(amount) as sum_amount'), 'chart_of_accounts.name', 'chart_of_accounts.contra_status')->join('chart_of_accounts', 'chart_of_accounts.code', '=', 'general_journals.account_code')->where(['year' => CommonHelper::get_current_financial_year(), 'general_journals.status' => 1])->where('general_journals.account_code', 'like', '2%')->where('general_journals.date', '<=', $ending_date)->groupBy('general_journals.account_code')->get();
     }
     $ajaxView = view('reports.incomeStatement.view', compact('revenues', 'expenses', 'ending_date'))->render();
     return response()->json($ajaxView);
 }
 public function store(DiscardedStockRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $materialInput = $request->input('material_id');
             $quantityInput = $request->input('quantity');
             $rawStock = RawStock::where(['material_id' => $materialInput, 'year' => CommonHelper::get_current_financial_year(), 'stock_type' => Config::get('common.balance_type_intermediate')])->first();
             $rawStock->quantity += $quantityInput;
             $rawStock->updated_by = Auth::user()->id;
             $rawStock->updated_at = time();
             $rawStock->update();
         });
     } catch (\Exception $e) {
         Session()->flash('warning_message', 'Discarded Material Entry Not Done!');
         return redirect('discarded_stock');
     }
     Session()->flash('flash_message', 'Discarded Material Entry Successful!');
     return redirect('discarded_stock');
 }
Ejemplo n.º 10
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Closure $next
  * @param  string|null $guard
  * @return mixed
  */
 public function handle($request, Closure $next, $guard = null)
 {
     $user = Auth::user();
     $route_uri = $request->route()->getName();
     $route = strstr($route_uri, '.', true);
     $currentYear = CommonHelper::get_current_financial_year();
     $closingStatus = DB::table('account_closings')->where(['year' => $currentYear, 'workspace_id' => $user->workspace_id])->value('status');
     $existingYearDetail = DB::table('financial_years')->where('year', $currentYear)->first();
     $permission = UserHelper::get_route_permission($route);
     if (!isset($closingStatus) || $closingStatus == 1 && $existingYearDetail->end_date < strtotime(date('Y-m-d'))) {
         return $next($request);
     } else {
         Session()->flash('warning_message', 'Year closed already! If you want to do any Transaction, Please request for the Rollback!');
         if (isset($permission->list) && $permission->list == 1) {
             return redirect($route);
         } else {
             return redirect('/home');
         }
     }
 }
Ejemplo n.º 11
0
 public function store(MaterialRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $material = new Material();
             $material->name = $request->input('name');
             $material->type = $request->input('type');
             $material->status = $request->input('status');
             $material->created_by = Auth::user()->id;
             $material->created_at = time();
             $material->save();
             $insertedId = $material->id;
             // Current Year Opening Stock
             $rawStock = new RawStock();
             $rawStock->material_id = $insertedId;
             $rawStock->year = CommonHelper::get_current_financial_year();
             $rawStock->stock_type = Config::get('common.balance_type_opening');
             $rawStock->created_by = Auth::user()->id;
             $rawStock->created_at = time();
             $rawStock->save();
             // Current Year Intermediate Stock
             $rawStock = new RawStock();
             $rawStock->material_id = $insertedId;
             $rawStock->year = CommonHelper::get_current_financial_year();
             $rawStock->stock_type = Config::get('common.balance_type_intermediate');
             $rawStock->created_by = Auth::user()->id;
             $rawStock->created_at = time();
             $rawStock->save();
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Material not created!');
         return redirect('materials');
     }
     Session()->flash('flash_message', 'Material has been created!');
     return redirect('materials');
 }
Ejemplo n.º 12
0
 public function update($id, SalaryPaymentRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $inputs = $request->input();
             $user = Auth::user();
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $balance_type = Config::get('common.balance_type_intermediate');
             $year = CommonHelper::get_current_financial_year();
             $salaryPayment = SalaryPayment::find($id);
             $salary = Salary::where(['id' => $salaryPayment->salary_id, 'employee_id' => $salaryPayment->employee_id, 'workspace_id' => $salaryPayment->workspace_id])->first();
             if ($salary->net > $inputs['salary'] && $salaryPayment->amount > $inputs['salary']) {
                 //Decrease amount from Salary payment table
                 $salaryPayment->amount -= $inputs['salary'];
                 $salaryPayment->updated_by = $user->id;
                 $salaryPayment->updated_at = $time;
                 $salaryPayment->update();
                 //Update salaries table
                 $salary->due = $salary->net - $inputs['salary'];
                 $salary->paid = $inputs['salary'];
                 $salary->payment_status = Config::get('common.salary_payment_status.partial');
                 $salary->update();
                 //Update Personal Account
                 $personalAccount = PersonalAccount::where(['person_id' => $salaryPayment->employee_id, 'person_type' => Config::get('common.person_type_employee')])->first();
                 $personalAccount->balance += $salaryPayment->amount - $inputs['salary'];
                 //ADD
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->save();
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $salaryPayment->amount - $inputs['salary'];
                 //Add Wage Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $salaryPayment->amount - $inputs['salary'];
                 //Add Cash
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $id, 'account_code' => 42000, 'workspace_id' => $user->workspace_id, 'year' => $year])->first();
                 $generalJournal->amount -= $salaryPayment->amount - $inputs['salary'];
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $id, 'account_code' => 11000, 'workspace_id' => $user->workspace_id, 'year' => $year])->first();
                 $generalJournal->amount -= $salaryPayment->amount - $inputs['salary'];
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Salary payment update cannot successful. Please Try again.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Salary payment update successfully.');
     return redirect('salary_payment');
 }
Ejemplo n.º 13
0
 public function store(AdjustmentRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $currentYear = CommonHelper::get_current_financial_year();
             $workspace_id = Auth::user()->workspace_id;
             $adjustment = new Adjustment();
             $adjustment->year = $currentYear;
             $adjustment->account_from = $request->account_from;
             $adjustment->amount = $request->amount;
             if ($request->account_from == 25000) {
                 $adjustment->account_to = 14000;
             } elseif ($request->account_from == 27000) {
                 $adjustment->account_to = 13000;
             }
             $adjustment->created_by = Auth::user()->id;
             $adjustment->created_at = time();
             $adjustment->save();
             if ($request->account_from == 25000) {
                 // Workspace_id hardcoded for head office
                 // Workspace Ledger Purchase Credit(-)
                 $purchaseWorkspaceData = WorkspaceLedger::where(['workspace_id' => 1, 'account_code' => 25000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
                 $purchaseWorkspaceData->balance = $purchaseWorkspaceData->balance - $request->amount;
                 $purchaseWorkspaceData->update();
                 // Workspace Ledger Inventory Raw Material Account Debit(+)
                 $assetWorkspaceData = WorkspaceLedger::where(['workspace_id' => 1, 'account_code' => 14000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
                 $assetWorkspaceData->balance += $request->amount;
                 $assetWorkspaceData->update();
                 // General Journals Insert
                 $generalJournal = new GeneralJournal();
                 $generalJournal->date = strtotime(date('d-m-Y'));
                 $generalJournal->transaction_type = Config::get('common.transaction_type.purchase');
                 $generalJournal->reference_id = $adjustment->id;
                 $generalJournal->year = $currentYear;
                 $generalJournal->account_code = 14000;
                 $generalJournal->workspace_id = 1;
                 // Hard Coded 1 For Head Office (Raw Material)
                 $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_from == 27000) {
                 // Workspace Ledger Office Supply Credit(-)
                 $officeWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => 27000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
                 $officeWorkspaceData->balance = $officeWorkspaceData->balance - $request->amount;
                 $officeWorkspaceData->update();
                 // Workspace Ledger Inventory Office Supplies Account Debit(+)
                 $assetWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => 13000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
                 $assetWorkspaceData->balance += $request->amount;
                 $assetWorkspaceData->update();
                 // General Journals Insert
                 $generalJournal = new GeneralJournal();
                 $generalJournal->date = strtotime(date('d-m-Y'));
                 $generalJournal->transaction_type = Config::get('common.transaction_type.office_supply');
                 $generalJournal->reference_id = $adjustment->id;
                 $generalJournal->year = $currentYear;
                 $generalJournal->account_code = 13000;
                 $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();
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Adjustment not done!');
         return redirect('adjustments');
     }
     Session()->flash('flash_message', 'Adjustment has been done!');
     return redirect('adjustments');
 }
Ejemplo n.º 14
0
 public function update($id, SalesOrderRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $inputs = $request->input();
             $user = Auth::user();
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $year = CommonHelper::get_current_financial_year();
             if (empty($inputs['transport_cost'])) {
                 $inputs['transport_cost'] = 0;
             }
             if (empty($inputs['labour_cost'])) {
                 $inputs['labour_cost'] = 0;
             }
             if (empty($inputs['discount'])) {
                 $inputs['discount'] = 0;
             }
             if (!isset($inputs['paid_from_personal_account'])) {
                 $inputs['paid_from_personal_account'] = 0;
             }
             $salesOrder = SalesOrder::find($id);
             $oldSalesOrder = clone $salesOrder;
             $salesOrder->total = $inputs['total'] - $inputs['discount'];
             $salesOrder->discount = $inputs['discount'];
             $salesOrder->paid = $inputs['paid'];
             $salesOrder->personal_account_paid = $inputs['paid_from_personal_account'];
             $salesOrder->due = $inputs['due'];
             $salesOrder->transport_cost = $inputs['transport_cost'];
             $salesOrder->labour_cost = $inputs['labour_cost'];
             $salesOrder->remarks = $inputs['remarks'];
             $salesOrder->updated_by = $user->id;
             $salesOrder->updated_at = $time;
             $salesOrder->update();
             if (isset($inputs['delete_product'])) {
                 foreach ($inputs['delete_product'] as $product) {
                     $salesOrderItem = SalesOrderItem::where('sales_order_id', '=', $id)->where('product_id', '=', $product['product_id'])->first();
                     if ($salesOrderItem) {
                         $salesOrderItem->delete();
                     }
                 }
             }
             $old_products = SalesOrderItem::where('sales_order_id', '=', $id)->where('status', '!=', 4)->get();
             $arrange_old_items = [];
             foreach ($old_products as $old_product) {
                 $arrange_old_items[$old_product['product_id']] = $old_product;
             }
             foreach ($inputs['product'] as $product) {
                 if (isset($arrange_old_items[$product['product_id']])) {
                     $salesOrderItem = SalesOrderItem::find($arrange_old_items[$product['product_id']]['id']);
                     $salesOrderItem->sales_quantity = $product['sales_quantity'];
                     $salesOrderItem->sales_unit_type = $product['sales_unit_type'];
                     $salesOrderItem->unit_price = $product['unit_price'];
                     $salesOrderItem->updated_by = $user->id;
                     $salesOrderItem->updated_at = $time;
                     $salesOrderItem->update();
                 } else {
                     $salesOrderItem = new SalesOrderItem();
                     $salesOrderItem->sales_order_id = $id;
                     $salesOrderItem->product_id = $product['product_id'];
                     $salesOrderItem->sales_quantity = $product['sales_quantity'];
                     $salesOrderItem->sales_unit_type = $product['sales_unit_type'];
                     $salesOrderItem->unit_price = $product['unit_price'];
                     $salesOrderItem->created_by = $user->id;
                     $salesOrderItem->created_at = $time;
                     $salesOrderItem->status = 1;
                     $salesOrderItem->save();
                 }
                 unset($arrange_old_items[$product['product_id']]);
             }
             $balance_type = Config::get('common.balance_type_intermediate');
             $transaction_type = Config::get('common.transaction_type.sales');
             $new_total_amount = $inputs['total'];
             $old_total_amount = $oldSalesOrder['total'];
             if ($new_total_amount > $old_total_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 31000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_total_amount - $inputs['discount'];
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 31000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->year = $year;
                 $workspace->balance += $new_total_amount - $old_total_amount - $inputs['discount'];
                 //Add Product Sales
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
             } elseif ($new_total_amount < $old_total_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 31000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_total_amount - $inputs['discount'];
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 31000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->year = $year;
                 $workspace->balance -= $old_total_amount - ($new_total_amount - $inputs['discount']);
                 //Subtract Product Sales
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
             }
             $new_paid_amount = $inputs['paid'];
             $old_paid_amount = $oldSalesOrder['paid'];
             if (!$new_paid_amount && $old_paid_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 11000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $old_paid_amount) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $old_paid_amount;
                 //sub Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
             } elseif (!$old_paid_amount && $new_paid_amount) {
                 //Insert data into General Journal
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $id;
                 $journal->year = $year;
                 $journal->account_code = 11000;
                 //Cash
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $new_paid_amount;
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->year = $year;
                 $workspace->balance += $new_paid_amount;
                 //Add Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
             } elseif ($new_paid_amount > $old_paid_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 11000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_paid_amount;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_paid_amount - $old_paid_amount;
                 //Add Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
             } elseif ($new_paid_amount < $old_paid_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 11000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_paid_amount;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $old_paid_amount - $new_paid_amount) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $old_paid_amount - $new_paid_amount;
                 //sub Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 dd($workspace);
             }
             $new_account_paid = $inputs['paid_from_personal_account'];
             $old_account_paid = $oldSalesOrder->personal_account_paid;
             if (!$new_account_paid && $old_account_paid) {
                 $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
                 $personal->balance += $old_account_paid;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $old_account_paid;
                 //Add Account Payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 41000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->delete();
             } elseif ($new_account_paid && !$old_account_paid) {
                 $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
                 $personal->balance -= $new_account_paid;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $new_account_paid;
                 //Add Account Payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $id;
                 $journal->year = $year;
                 $journal->account_code = 41000;
                 //Account Payable
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $new_account_paid;
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
             } elseif ($new_account_paid > $old_account_paid) {
                 $personal = PersonalAccount::where('person_id', $salesOrder->customer_id)->where('person_type', $salesOrder->customer_type)->first();
                 $personal->balance -= $new_account_paid - $old_account_paid;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $new_account_paid - $old_account_paid;
                 //Sub Account Payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 41000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_account_paid;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->update();
             } elseif ($new_account_paid < $old_account_paid) {
                 $personal = PersonalAccount::where('person_id', $salesOrder->customer_id)->where('person_type', $salesOrder->customer_type)->first();
                 $personal->balance += $old_account_paid - $new_account_paid;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $old_account_paid - $new_account_paid;
                 //Add Account Payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 41000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_account_paid;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->update();
             }
             $new_due_amount = $inputs['due'];
             $old_due_amount = $oldSalesOrder['due'];
             if ($new_due_amount && !$old_due_amount) {
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $id;
                 $journal->year = $year;
                 $journal->account_code = 12000;
                 //Account Receivable
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $new_due_amount;
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_due_amount;
                 //add account receivable debit
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 // Update Personal Account
                 $personal = PersonalAccount::where('person_id', $oldSalesOrder['customer_id'])->where('person_type', $oldSalesOrder['customer_type'])->first();
                 $personal->due += $new_due_amount;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->save();
             } elseif ($old_due_amount && !$new_due_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 12000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $old_due_amount;
                 //sub account receivable credit
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 // Update Personal Account
                 $personal = PersonalAccount::where('person_id', $oldSalesOrder['customer_id'])->where('person_type', $oldSalesOrder['customer_type'])->first();
                 $personal->due -= $old_due_amount;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->save();
             } elseif ($new_due_amount > $old_due_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 12000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_due_amount;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_due_amount - $old_due_amount;
                 //add account receivable debit
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 // Update Personal Account
                 $personal = PersonalAccount::where('person_id', $oldSalesOrder['customer_id'])->where('person_type', $oldSalesOrder['customer_type'])->first();
                 $personal->due += $new_due_amount - $old_due_amount;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->save();
             } elseif ($new_due_amount < $old_due_amount) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 12000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_due_amount;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $old_due_amount - $new_due_amount;
                 //add account receivable credit
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 // Update Personal Account
                 $personal = PersonalAccount::where('person_id', $oldSalesOrder['customer_id'])->where('person_type', $oldSalesOrder['customer_type'])->first();
                 $personal->due -= $old_due_amount - $new_due_amount;
                 $personal->updated_by = $user->id;
                 $personal->updated_at = $time;
                 $personal->save();
             }
             $new_transportation_cost = $inputs['transport_cost'];
             $old_transportation_cost = $oldSalesOrder['transport_cost'];
             if ($new_transportation_cost <= 0 && $old_transportation_cost) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 35000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 35000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $old_transportation_cost;
                 //sub transportation earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $old_transportation_cost) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $old_transportation_cost;
                 //Sub Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($new_transportation_cost && $old_transportation_cost <= 0) {
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $id;
                 $journal->year = $year;
                 $journal->account_code = 35000;
                 //Account Receivable
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $new_transportation_cost;
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 35000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_transportation_cost;
                 //add transportation earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_transportation_cost;
                 //Add Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($new_transportation_cost > $old_transportation_cost) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 35000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_transportation_cost;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 35000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_transportation_cost - $old_transportation_cost;
                 //Add transportation earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_transportation_cost - $old_transportation_cost;
                 //Add Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($new_transportation_cost < $old_transportation_cost) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 35000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_transportation_cost;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 35000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $old_transportation_cost - $new_transportation_cost;
                 //Add transportation earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $old_transportation_cost - $new_transportation_cost) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $old_transportation_cost - $new_transportation_cost;
                 //Sub Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             }
             $new_labour_cost = $inputs['labour_cost'];
             $old_labour_cost = $oldSalesOrder['labour_cost'];
             if ($new_labour_cost <= 0 && $old_labour_cost) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 34000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 34000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $old_labour_cost;
                 //sub labour earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $old_labour_cost) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $old_labour_cost;
                 //Sub Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($new_labour_cost && $old_labour_cost <= 0) {
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $id;
                 $journal->year = $year;
                 $journal->account_code = 34000;
                 //labour earning
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $new_labour_cost;
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 34000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_labour_cost;
                 //add labour earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_labour_cost;
                 //Add Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($new_labour_cost > $old_labour_cost) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 34000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_labour_cost;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 34000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_labour_cost - $old_labour_cost;
                 //Add transportation earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $new_labour_cost - $old_labour_cost;
                 //Add Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($new_labour_cost < $old_labour_cost) {
                 $general_journal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 34000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $general_journal->amount = $new_labour_cost;
                 $general_journal->updated_by = $user->id;
                 $general_journal->updated_at = $time;
                 $general_journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 34000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $old_labour_cost - $new_labour_cost;
                 //Add labour earning
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $old_labour_cost - $new_labour_cost) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $old_labour_cost - $new_labour_cost;
                 //Sub Cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Sales Order not Updated!');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Sales Order has been Updated!');
     return redirect('salesOrder');
 }
Ejemplo n.º 15
0
 public function store(Request $request)
 {
     $this->validate($request, ['customer_id' => 'required', 'product' => 'required|array', 'total' => 'required|numeric', 'return_type' => 'required']);
     try {
         DB::transaction(function () use($request) {
             $inputs = $request->input();
             $user_id = Auth::user()->id;
             $workspace_id = Auth::user()->workspace_id;
             $balance_type = Config::get('common.balance_type_intermediate');
             $transaction_type = Config::get('common.transaction_type.sales_return');
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $year = CommonHelper::get_current_financial_year();
             $data['customer_id'] = $inputs['customer_id'];
             $data['workspace_id'] = $workspace_id;
             $data['customer_type'] = $inputs['customer_type'];
             $data['total_amount'] = $inputs['total'];
             if ($inputs['return_type'] == 3) {
                 $data['due'] = $inputs['total'];
             } elseif ($inputs['return_type'] == 4) {
                 $data['due'] = $inputs['total'] - $inputs['due_paid'];
             }
             if (isset($inputs['due_paid'])) {
                 $data['due_paid'] = $inputs['due_paid'];
             }
             $data['return_type'] = $inputs['return_type'];
             $data['date'] = $time;
             $data['created_by'] = $user_id;
             $data['created_at'] = $time;
             $sales_return_id = DB::table('sales_return')->insertGetId($data);
             unset($data);
             $data['sales_return_id'] = $sales_return_id;
             $data['created_by'] = $user_id;
             $data['created_at'] = $time;
             foreach ($inputs['product'] as $product) {
                 $data['product_id'] = $product['product_id'];
                 $data['quantity'] = $product['quantity_returned'];
                 $data['unit_price'] = $product['unit_price'];
                 $data['unit_type'] = $product['unit_type'];
                 DB::table('sales_return_details')->insert($data);
                 $quantity_returned = $product['quantity_returned'];
                 $stock = Stock::where('year', '=', $year)->where('stock_type', '=', $balance_type)->where('product_id', '=', $product['product_id'])->first();
                 if ($product['unit_type'] == 2) {
                     $quantity_returned = $product['quantity_returned'] / $product['weight'] * $product['length'];
                 }
                 $stock->quantity += $quantity_returned;
                 $stock->updated_by = $user_id;
                 $stock->updated_at = $time;
                 $stock->update();
             }
             if ($inputs['return_type'] == 1) {
                 //For Cash
                 // Update Workspace Ledger
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $inputs['total']) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $inputs['total'];
                 //Subtract Cash
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 32000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['total'];
                 //Add Product Sales Return
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 //Insert data into General Journal
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 11000;
                 //Cash
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 32000;
                 //Product Sales Return
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
             } elseif ($inputs['return_type'] == 2) {
                 // For Pay due
                 // Update Workspace Ledger
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $inputs['total'];
                 //Subtract Account Receivable
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 32000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['total'];
                 //Add Product Sales Return
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 //Insert data into General Journal
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 12000;
                 //Account Receivable
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 32000;
                 //Product Sales Return
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 // Update Personal Account
                 $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
                 $personal->due -= $inputs['due_paid'];
                 if ($inputs['total'] > $inputs['due_paid']) {
                     $personal->balance += $inputs['total'] - $inputs['due_paid'];
                 }
                 $personal->updated_by = $user_id;
                 $personal->updated_at = $time;
                 $personal->save();
             } elseif ($inputs['return_type'] == 3) {
                 //For Due
                 // Update Workspace Ledger
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['total'];
                 //Add Account Payable
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 32000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['total'];
                 //Add Product Sales Return
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 //Insert data into General Journal
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 41000;
                 //Account Payable
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 32000;
                 //Product Sales Return
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 //Update Personal Account
                 $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
                 $personal->balance += $inputs['total'];
                 $personal->updated_by = $user_id;
                 $personal->updated_at = $time;
                 $personal->save();
             } elseif ($inputs['return_type'] == 4) {
                 //For Pay Due & Cash Return
                 // Update Workspace Ledger
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $inputs['total'] - $inputs['due_paid']) {
                     Session()->flash('warning_message', 'Insufficient cash balance!');
                     throw new \Exception();
                 }
                 $workspace->balance -= $inputs['total'] - $inputs['due_paid'];
                 //Subtract Cash
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 32000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['total'];
                 //Add Product Sales Return
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $inputs['due_paid'];
                 //Subtract Account Receivable
                 $workspace->updated_by = $user_id;
                 $workspace->updated_at = $time;
                 $workspace->save();
                 //Insert data into General Journal
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 11000;
                 //Cash
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'] - $inputs['due_paid'];
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 32000;
                 //Product Sales Return
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['total'];
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $sales_return_id;
                 $journal->year = $year;
                 $journal->account_code = 12000;
                 // Account Receivable
                 $journal->workspace_id = $workspace_id;
                 $journal->amount = $inputs['due_paid'];
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->created_by = $user_id;
                 $journal->created_at = $time;
                 $journal->save();
                 //Update Personal Account
                 $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
                 $personal->due -= $inputs['due_paid'];
                 $personal->updated_by = $user_id;
                 $personal->updated_at = $time;
                 $personal->save();
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Sales Returned Failed.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Sales Returned Successful.');
     return redirect('sales_return');
 }
Ejemplo n.º 16
0
 public function update($id, Request $request)
 {
     $this->validate($request, ['product' => 'array', 'total' => 'required']);
     //        dd($request->input());
     try {
         DB::transaction(function () use($id, $request) {
             $inputs = $request->input();
             $user = Auth::user();
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $year = CommonHelper::get_current_financial_year();
             $transaction_type = Config::get('common.transaction_type.defect_receive');
             $balance_type = Config::get('common.balance_type_intermediate');
             //Defect table affected.
             $defect = Defect::find($id);
             $oldDefect = clone $defect;
             $defect->total = $inputs['total'];
             $defect->cash = $inputs['cash'];
             $defect->due_paid = $inputs['due_paid'];
             $defect->due = $inputs['due'];
             if (isset($inputs['is_replacement'])) {
                 $defect->is_replacement = $inputs['is_replacement'];
                 $defect->replacement = $inputs['new_total'];
             }
             $defect->remarks = $inputs['remarks'];
             $defect->updated_by = $user->id;
             $defect->updated_at = $time;
             $defect->update();
             $defect_amount = $inputs['cash'] + $inputs['due_paid'] + $inputs['due'];
             if ($defect_amount > 0) {
                 $journal = GeneralJournal::where('account_code', '=', 36000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $defect_amount;
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 36000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($oldDefect->total > $defect_amount) {
                     $workspace->balance += $oldDefect->total - $defect_amount;
                     //sub defect receive
                 } elseif ($oldDefect->total < $defect_amount) {
                     $workspace->balance += $defect_amount - $oldDefect->total;
                     //sub defect receive
                 }
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } else {
                 $journal = GeneralJournal::where('account_code', '=', 36000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 36000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $oldDefect->cash + $oldDefect->due_paid + $oldDefect->due;
                 //sub defect receive
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             }
             if (isset($inputs['delete_product'])) {
                 foreach ($inputs['delete_product'] as $product) {
                     $defectItem = DefectItem::where('defect_id', '=', $id)->where('product_id', '=', $product['product_id'])->first();
                     if ($defectItem) {
                         $defectItem->delete();
                     }
                 }
             }
             //Get Scrap Id
             $material = Material::where('name', '=', 'Scrap')->where('status', '=', 1)->first();
             //Old Defect Items
             foreach ($inputs['old_product'] as $product) {
                 $defectItem = DefectItem::where('defect_id', '=', $id)->where('product_id', '=', $product['product_id'])->first();
                 $oldDefectItem = clone $defectItem;
                 $defectItem->quantity = $product['receive_quantity'];
                 $defectItem->unit_type = $product['unit_type'];
                 $defectItem->unit_price = $product['unit_price'];
                 $defectItem->updated_by = $user->id;
                 $defectItem->updated_at = $time;
                 $defectItem->update();
                 //Material stock updated
                 $rawStock = RawStock::where('year', '=', $year)->where('stock_type', '=', Config::get('common.balance_type_intermediate'))->where('material_id', '=', $material->id)->first();
                 if ($product['unit_type'] == 1) {
                     if ($oldDefectItem->unit_type == 1) {
                         if ($oldDefectItem->quantity > $product['receive_quantity']) {
                             $rawStock->quantity -= ($oldDefectItem->quantity - $product['receive_quantity']) / $product['length'] * $product['weight'];
                         } elseif ($oldDefectItem->quantity < $product['receive_quantity']) {
                             $rawStock->quantity += ($product['receive_quantity'] - $oldDefectItem->quantity) / $product['length'] * $product['weight'];
                         }
                     } elseif ($oldDefectItem->unit_type == 2) {
                         $old_quantity = $oldDefectItem->quantity / $product['weight'] * $product['length'];
                         if ($old_quantity > $product['receive_quantity']) {
                             $rawStock->quantity -= ($old_quantity - $product['receive_quantity']) / $product['length'] * $product['weight'];
                         } elseif ($old_quantity < $product['receive_quantity']) {
                             $rawStock->quantity += ($product['receive_quantity'] - $old_quantity) / $product['length'] * $product['weight'];
                         }
                     }
                 } elseif ($product['unit_type'] == 2) {
                     if ($oldDefectItem->unit_type == 1) {
                         $old_quantity = $oldDefectItem->quantity / $product['length'] * $product['weight'];
                         if ($old_quantity > $product['receive_quantity']) {
                             $rawStock->quantity -= $old_quantity - $product['receive_quantity'];
                         } elseif ($old_quantity < $product['receive_quantity']) {
                             $rawStock->quantity += $product['receive_quantity'] - $old_quantity;
                         }
                     } elseif ($oldDefectItem->unit_type == 2) {
                         if ($oldDefectItem->quantity > $product['receive_quantity']) {
                             $rawStock->quantity -= $oldDefectItem->quantity - $product['receive_quantity'];
                         } elseif ($oldDefectItem->quantity < $product['receive_quantity']) {
                             $rawStock->quantity += $product['receive_quantity'] - $oldDefectItem->quantity;
                         }
                     }
                 }
                 $rawStock->updated_by = $user->id;
                 $rawStock->updated_at = $time;
                 $rawStock->update();
             }
             //New Defect Items
             if (!empty($inputs['product'])) {
                 foreach ($inputs['product'] as $product) {
                     $defectItem = new DefectItem();
                     $defectItem->defect_id = $id;
                     $defectItem->product_id = $product['product_id'];
                     $defectItem->quantity = $product['receive_quantity'];
                     $defectItem->unit_type = $product['unit_type'];
                     $defectItem->unit_price = $product['unit_price'];
                     $defectItem->created_by = $user->id;
                     $defectItem->created_at = $time;
                     $defectItem->save();
                     //Material stock updated
                     $rawStock = RawStock::where('year', '=', $year)->where('stock_type', '=', Config::get('common.balance_type_intermediate'))->where('material_id', '=', $material->id)->first();
                     if ($product['unit_type'] == 1) {
                         $rawStock->quantity += $product['receive_quantity'] / $product['length'] * $product['weight'];
                     } else {
                         $rawStock->quantity += $product['receive_quantity'];
                     }
                     $rawStock->updated_by = $user->id;
                     $rawStock->updated_at = $time;
                     $rawStock->update();
                 }
             }
             if ($inputs['cash'] && !$oldDefect->cash) {
                 //Cash
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $id;
                 $journal->year = $year;
                 $journal->account_code = 11000;
                 //Cash
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $inputs['cash'];
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $inputs['cash'] - $oldDefect->cash;
                 //sub cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif (!$inputs['cash'] && $oldDefect->cash) {
                 //Cash
                 $journal = GeneralJournal::where('account_code', '=', 11000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $oldDefect->cash;
                 //add cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             } elseif ($inputs['cash'] > $oldDefect->cash) {
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 if ($workspace->balance < $inputs['cash'] - $oldDefect->cash) {
                     Session()->flash('warning_message', 'Insufficient cash balance!.');
                     throw new \Exception();
                 }
                 $workspace->balance -= $inputs['cash'] - $oldDefect->cash;
                 //sub cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $journal = GeneralJournal::where('account_code', '=', 11000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $inputs['cash'];
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
             } elseif ($inputs['cash'] < $oldDefect->cash) {
                 $journal = GeneralJournal::where('account_code', '=', 11000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $inputs['cash'];
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $oldDefect->cash - $inputs['cash'];
                 //add cash
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
             }
             if ($inputs['due_paid'] && !$oldDefect->due_paid) {
                 //Due Pay
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $defect->id;
                 $journal->year = $year;
                 $journal->account_code = 12000;
                 //Account Receivable
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $inputs['due_paid'];
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $inputs['due_paid'];
                 //sub account receivable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->due -= $inputs['due_paid'];
                 //Sub due
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             } elseif (!$inputs['due_paid'] && $oldDefect->due_paid) {
                 $journal = GeneralJournal::where('account_code', '=', 12000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $oldDefect->due_paid;
                 //add account receivable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->due += $oldDefect->due_paid;
                 //add due
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             } elseif ($inputs['due_paid'] > $oldDefect->due_paid) {
                 $journal = GeneralJournal::where('account_code', '=', 12000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $inputs['due_paid'];
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $inputs['due_paid'] - $oldDefect->due_paid;
                 //sub account receivable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->due -= $inputs['due_paid'] - $oldDefect->due_paid;
                 //Sub due
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             } elseif ($inputs['due_paid'] < $oldDefect->due_paid) {
                 $journal = GeneralJournal::where('account_code', '=', 12000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $inputs['due_paid'];
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $oldDefect->due_paid - $inputs['due_paid'];
                 //add account receivable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $oldDefect->customer_id)->first();
                 $personalAccount->due += $oldDefect->due_paid - $inputs['due_paid'];
                 //add due
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             }
             if ($inputs['due'] && !$oldDefect->due) {
                 // Due
                 $journal = new GeneralJournal();
                 $journal->date = $date;
                 $journal->transaction_type = $transaction_type;
                 $journal->reference_id = $defect->id;
                 $journal->year = $year;
                 $journal->account_code = 41000;
                 //Account Payable
                 $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $journal->workspace_id = $user->workspace_id;
                 $journal->amount = $inputs['due'];
                 $journal->created_by = $user->id;
                 $journal->created_at = $time;
                 $journal->save();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['due'];
                 //add account payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->balance += $inputs['due'];
                 //Add Balance
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             } elseif (!$inputs['due'] && $oldDefect->due) {
                 // Due
                 $journal = GeneralJournal::where('account_code', '=', 41000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->delete();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $oldDefect->due;
                 //sub account payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->balance -= $oldDefect->due;
                 //Sub Balance
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             } elseif ($inputs['due'] > $oldDefect->due) {
                 // Due
                 $journal = GeneralJournal::where('account_code', '=', 41000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $inputs['due'];
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance += $inputs['due'] - $oldDefect->due;
                 //add account payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->balance += $inputs['due'] - $oldDefect->due;
                 //Add Balance
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             } elseif ($inputs['due'] < $oldDefect->due) {
                 // Due
                 $journal = GeneralJournal::where('account_code', '=', 41000)->where('workspace_id', '=', $user->workspace_id)->where('reference_id', '=', $id)->where('transaction_type', '=', $transaction_type)->where('year', '=', $year)->first();
                 $journal->amount = $inputs['due'];
                 $journal->updated_by = $user->id;
                 $journal->updated_at = $time;
                 $journal->update();
                 $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $user->workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $workspace->balance -= $oldDefect->due - $inputs['due'];
                 //sub account payable
                 $workspace->updated_by = $user->id;
                 $workspace->updated_at = $time;
                 $workspace->update();
                 $personalAccount = PersonalAccount::where('person_type', '=', $oldDefect->customer_type)->where('person_id', '=', $inputs['customer_id'])->first();
                 $personalAccount->balance -= $oldDefect->due - $inputs['due'];
                 //sub Balance
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
             }
             if (isset($inputs['is_replacement']) && !$oldDefect->is_replacement) {
                 //Replacement
                 $defectReplacement = new SalesOrder();
                 $defectReplacement->workspace_id = $user->workspace_id;
                 $defectReplacement->defect_id = $defect->id;
                 $defectReplacement->order_type = Config::get('common.sales_order_type.replacement');
                 $defectReplacement->customer_id = $inputs['customer_id'];
                 $defectReplacement->customer_type = $oldDefect->customer_type;
                 $defectReplacement->total = $inputs['new_total'];
                 $defectReplacement->date = $time;
                 $defectReplacement->delivery_status = 1;
                 $defectReplacement->created_by = $user->id;
                 $defectReplacement->created_at = $time;
                 $defectReplacement->save();
                 foreach ($inputs['new_product'] as $new_product) {
                     $defectReplacementItem = new SalesOrderItem();
                     $defectReplacementItem->sales_order_id = $defectReplacement->id;
                     $defectReplacementItem->product_id = $new_product['product_id'];
                     $defectReplacementItem->sales_quantity = $new_product['sales_quantity'];
                     $defectReplacementItem->sales_unit_type = $new_product['sales_unit_type'];
                     $defectReplacementItem->unit_price = $new_product['unit_price'];
                     $defectReplacementItem->created_by = $user->id;
                     $defectReplacementItem->created_at = $time;
                     $defectReplacementItem->save();
                     $stock = Stock::where('product_id', '=', $new_product['product_id'])->where('stock_type', '=', $balance_type)->where('year', '=', $year)->first();
                     if ($new_product['sales_unit_type'] == 1) {
                         if ($stock->quantity < $new_product['sales_quantity']) {
                             Session()->flash('warning_message', 'Insufficient stock!.');
                             throw new \Exception();
                         }
                         $stock->quantity -= $new_product['sales_quantity'];
                         //Sub stock
                     } elseif ($new_product['sales_unit_type'] == 2) {
                         $sales_quantity = $new_product['sales_quantity'] / $new_product['weight'] * $new_product['length'];
                         if ($stock->quantity < $sales_quantity) {
                             Session()->flash('warning_message', 'Insufficient stock!.');
                             throw new \Exception();
                         }
                         $stock->quantity -= $sales_quantity;
                         //Sub stock
                     }
                     $stock->updated_by = $user->id;
                     $stock->updated_at = $time;
                     $stock->update();
                 }
             } elseif (isset($inputs['is_replacement']) && $oldDefect->is_replacement) {
                 $defectReplacement = SalesOrder::where('defect_id', '=', $id)->first();
                 $oldDefectReplacement = clone $defectReplacement;
                 $defectReplacement->total = $inputs['new_total'];
                 $defectReplacement->updated_by = $user->id;
                 $defectReplacement->updated_at = $time;
                 $defectReplacement->update();
                 if (isset($inputs['delete_replacement_product'])) {
                     foreach ($inputs['delete_replacement_product'] as $product) {
                         $defectReplacementItem = SalesOrderItem::where('sales_order_id', '=', $defectReplacement->id)->where('product_id', '=', $product['product_id'])->first();
                         if ($defectReplacementItem) {
                             $defectReplacementItem->delete();
                         }
                     }
                 }
                 //Old Product
                 foreach ($inputs['old_replacement_product'] as $new_product) {
                     $defectReplacementItem = SalesOrderItem::where('sales_order_id', '=', $defectReplacement->id)->where('product_id', '=', $new_product['product_id'])->first();
                     $oldDefectReplacementItem = clone $defectReplacementItem;
                     $defectReplacementItem->sales_quantity = $new_product['sales_quantity'];
                     $defectReplacementItem->sales_unit_type = $new_product['sales_unit_type'];
                     $defectReplacementItem->unit_price = $new_product['unit_price'];
                     $defectReplacementItem->updated_by = $user->id;
                     $defectReplacementItem->updated_at = $time;
                     $defectReplacementItem->update();
                     $stock = Stock::where('product_id', '=', $new_product['product_id'])->where('stock_type', '=', $balance_type)->where('year', '=', $year)->first();
                     if ($oldDefectReplacementItem->sales_unit_type == 1) {
                         if ($new_product['sales_unit_type'] == 1) {
                             if ($oldDefectReplacementItem->sales_quantity > $new_product['sales_quantity']) {
                                 $stock->quantity += $oldDefectReplacementItem->sales_quantity - $new_product['sales_quantity'];
                                 //Add stock
                             } elseif ($oldDefectReplacementItem->sales_quantity < $new_product['sales_quantity']) {
                                 $sales_quantity = $new_product['sales_quantity'] - $oldDefectReplacementItem->sales_quantity;
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         } elseif ($new_product['sales_unit_type'] == 2) {
                             $new_sales_quantity = $new_product['sales_quantity'] / $new_product['weight'] * $new_product['length'];
                             if ($oldDefectReplacementItem->sales_quantity > $new_sales_quantity) {
                                 $stock->quantity += $oldDefectReplacementItem->sales_quantity - $new_sales_quantity;
                                 //Add stock
                             } elseif ($oldDefectReplacementItem->sales_quantity < $new_sales_quantity) {
                                 $sales_quantity = $new_sales_quantity - $oldDefectReplacementItem->sales_quantity;
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         }
                     } elseif ($oldDefectReplacementItem->sales_unit_type == 2) {
                         if ($new_product['sales_unit_type'] == 1) {
                             $new_sales_quantity = $oldDefectReplacementItem->sales_quantity / $new_product['weight'] * $new_product['length'];
                             if ($new_sales_quantity > $new_product['sales_quantity']) {
                                 $stock->quantity += $new_sales_quantity - $new_product['sales_quantity'];
                                 $stock->quantity += $new_sales_quantity - $new_product['sales_quantity'];
                                 //Add stock
                             } elseif ($new_sales_quantity < $new_product['sales_quantity']) {
                                 $sales_quantity = $new_product['sales_quantity'] - $new_sales_quantity;
                                 //Sub stock
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         } elseif ($new_product['sales_unit_type'] == 2) {
                             $old_sales_quantity = $oldDefectReplacementItem->sales_quantity / $new_product['weight'] * $new_product['length'];
                             $new_sales_quantity = $new_product['sales_quantity'] / $new_product['weight'] * $new_product['length'];
                             if ($old_sales_quantity > $new_sales_quantity) {
                                 $stock->quantity += $old_sales_quantity - $new_sales_quantity;
                                 //Add stock
                             } elseif ($old_sales_quantity < $new_sales_quantity) {
                                 $sales_quantity = $new_sales_quantity - $old_sales_quantity;
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         }
                     }
                     $stock->updated_by = $user->id;
                     $stock->updated_at = $time;
                     $stock->update();
                 }
                 //New Product
                 if (!empty($inputs['new_product'])) {
                     foreach ($inputs['new_product'] as $new_product) {
                         $defectReplacementItem = new SalesOrderItem();
                         $defectReplacementItem->sales_order_id = $defectReplacement->id;
                         $defectReplacementItem->product_id = $new_product['product_id'];
                         $defectReplacementItem->sales_quantity = $new_product['sales_quantity'];
                         $defectReplacementItem->sales_unit_type = $new_product['sales_unit_type'];
                         $defectReplacementItem->unit_price = $new_product['unit_price'];
                         $defectReplacementItem->created_by = $user->id;
                         $defectReplacementItem->created_at = $time;
                         $defectReplacementItem->save();
                         $stock = Stock::where('product_id', '=', $new_product['product_id'])->where('stock_type', '=', $balance_type)->where('year', '=', $year)->first();
                         $stock->quantity -= $new_product['sales_quantity'];
                         //Sub stock
                         $stock->updated_by = $user->id;
                         $stock->updated_at = $time;
                         $stock->update();
                     }
                 }
             } elseif (!isset($inputs['is_replacement']) && $oldDefect->is_replacement) {
                 $defectReplacement = SalesOrder::where('defect_id', '=', $id)->first();
                 $oldDefectReplacement = clone $defectReplacement;
                 $defectReplacement->total = $inputs['new_total'];
                 $defectReplacement->updated_by = $user->id;
                 $defectReplacement->updated_at = $time;
                 $defectReplacement->update();
                 if (isset($inputs['delete_replacement_product'])) {
                     foreach ($inputs['delete_replacement_product'] as $product) {
                         $defectReplacementItem = SalesOrderItem::where('sales_order_id', '=', $defectReplacement->id)->where('product_id', '=', $product['product_id'])->first();
                         if ($defectReplacementItem) {
                             $defectReplacementItem->delete();
                         }
                     }
                 }
                 //Old Product
                 foreach ($inputs['old_replacement_product'] as $new_product) {
                     $defectReplacementItem = SalesOrderItem::where('sales_order_id', '=', $defectReplacement->id)->where('product_id', '=', $new_product['product_id'])->first();
                     $oldDefectReplacementItem = clone $defectReplacementItem;
                     $defectReplacementItem->sales_quantity = $new_product['sales_quantity'];
                     $defectReplacementItem->sales_unit_type = $new_product['sales_unit_type'];
                     $defectReplacementItem->unit_price = $new_product['unit_price'];
                     $defectReplacementItem->updated_by = $user->id;
                     $defectReplacementItem->updated_at = $time;
                     $defectReplacementItem->update();
                     $stock = Stock::where('product_id', '=', $new_product['product_id'])->where('stock_type', '=', $balance_type)->where('year', '=', $year)->first();
                     if ($oldDefectReplacementItem->sales_unit_type == 1) {
                         if ($new_product['sales_unit_type'] == 1) {
                             if ($oldDefectReplacementItem->sales_quantity > $new_product['sales_quantity']) {
                                 $stock->quantity += $oldDefectReplacementItem->sales_quantity - $new_product['sales_quantity'];
                                 //Add stock
                             } elseif ($oldDefectReplacementItem->sales_quantity < $new_product['sales_quantity']) {
                                 $sales_quantity = $new_product['sales_quantity'] - $oldDefectReplacementItem->sales_quantity;
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         } elseif ($new_product['sales_unit_type'] == 2) {
                             $new_sales_quantity = $new_product['sales_quantity'] / $new_product['weight'] * $new_product['length'];
                             if ($oldDefectReplacementItem->sales_quantity > $new_sales_quantity) {
                                 $stock->quantity += $oldDefectReplacementItem->sales_quantity - $new_sales_quantity;
                                 //Add stock
                             } elseif ($oldDefectReplacementItem->sales_quantity < $new_sales_quantity) {
                                 $sales_quantity = $new_sales_quantity - $oldDefectReplacementItem->sales_quantity;
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         }
                     } elseif ($oldDefectReplacementItem->sales_unit_type == 2) {
                         if ($new_product['sales_unit_type'] == 1) {
                             $new_sales_quantity = $oldDefectReplacementItem->sales_quantity / $new_product['weight'] * $new_product['length'];
                             if ($new_sales_quantity > $new_product['sales_quantity']) {
                                 $stock->quantity += $new_sales_quantity - $new_product['sales_quantity'];
                                 $stock->quantity += $new_sales_quantity - $new_product['sales_quantity'];
                                 //Add stock
                             } elseif ($new_sales_quantity < $new_product['sales_quantity']) {
                                 $sales_quantity = $new_product['sales_quantity'] - $new_sales_quantity;
                                 //Sub stock
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         } elseif ($new_product['sales_unit_type'] == 2) {
                             $old_sales_quantity = $oldDefectReplacementItem->sales_quantity / $new_product['weight'] * $new_product['length'];
                             $new_sales_quantity = $new_product['sales_quantity'] / $new_product['weight'] * $new_product['length'];
                             if ($old_sales_quantity > $new_sales_quantity) {
                                 $stock->quantity += $old_sales_quantity - $new_sales_quantity;
                                 //Add stock
                             } elseif ($old_sales_quantity < $new_sales_quantity) {
                                 $sales_quantity = $new_sales_quantity - $old_sales_quantity;
                                 if ($stock->quantity < $sales_quantity) {
                                     Session()->flash('warning_message', 'Insufficient stock!.');
                                     throw new \Exception();
                                 }
                                 $stock->quantity -= $sales_quantity;
                                 //Sub stock
                             }
                         }
                     }
                     $stock->updated_by = $user->id;
                     $stock->updated_at = $time;
                     $stock->update();
                 }
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Defect receive update not success. Please try again.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Defect receive updated successfully.');
     return redirect('receive_defect');
 }
Ejemplo n.º 17
0
 public function update($id, ProductionRegisterRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $user = Auth::user();
             $existingRegister = DB::table('production_registers')->where('id', $id)->first();
             $productionRegister = ProductionRegister::findOrFail($id);
             $productionRegister->date = $request->input('date');
             $productionRegister->production = $request->input('production');
             $productionRegister->updated_by = Auth::user()->id;
             $productionRegister->updated_at = time();
             $productionRegister->update();
             $existingStock = DB::table('stocks')->where(['year' => CommonHelper::get_current_financial_year(), 'stock_type' => Config::get('common.balance_type_intermediate'), 'workspace_id' => $user->workspace_id, 'product_id' => $existingRegister->product_id])->first();
             $product_length = DB::table('products')->where('id', $id)->value('length');
             if ($existingRegister->production != $request->input('production')) {
                 if ($existingRegister->production > $request->input('production')) {
                     $difference = $existingRegister->production - $request->input('production');
                     $stock = Stock::findOrFail($existingStock->id);
                     $stock->quantity = $existingStock->quantity - $difference * $product_length;
                     $stock->updated_by = Auth::user()->id;
                     $stock->updated_at = time();
                     $stock->update();
                 } elseif ($existingRegister->production < $request->input('production')) {
                     $difference = $request->input('production') - $existingRegister->production;
                     $stock = Stock::findOrFail($existingStock->id);
                     $stock->quantity = $existingStock->quantity + $difference * $product_length;
                     $stock->updated_by = Auth::user()->id;
                     $stock->updated_at = time();
                     $stock->update();
                 }
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Production Register not updated!');
         return redirect('productionRegisters');
     }
     Session()->flash('flash_message', 'Production Register has been updated!');
     return redirect('productionRegisters');
 }
Ejemplo n.º 18
0
 public function store(Request $request)
 {
     try {
         DB::transaction(function () use($request) {
             $inputs = $request->input();
             $user = Auth::user();
             $time = time();
             $year = CommonHelper::get_current_financial_year();
             $order_quantity = 0;
             $deliver_quantity = 0;
             $products = Product::whereIn('id', array_keys($inputs['quantity']))->get()->toArray();
             //                dd($products);
             foreach ($inputs['quantity'] as $key => $value) {
                 if ($value > 0) {
                     $salesDelivery = SalesDeliveryDetail::firstOrNew(['sales_order_id' => $inputs['sales_order_id'], 'product_id' => $key]);
                     if ($salesDelivery->id) {
                         $salesDelivery->updated_by = $user->id;
                         $salesDelivery->updated_at = $time;
                         $d_quantity = $salesDelivery->delivered_quantity += $inputs['deliver_now'][$key];
                         $salesDelivery->last_delivered_quantity = $inputs['deliver_now'][$key];
                         $salesDelivery->save();
                     } else {
                         $salesDelivery->sales_order_id = $inputs['sales_order_id'];
                         $salesDelivery->created_by = $user->id;
                         $salesDelivery->created_at = $time;
                         $salesDelivery->status = 2;
                         //Partial Delivery
                         $salesDelivery->product_id = $key;
                         $salesDelivery->order_quantity = $value;
                         $d_quantity = $salesDelivery->delivered_quantity = $inputs['deliver_now'][$key];
                         $salesDelivery->last_delivered_quantity = $inputs['deliver_now'][$key];
                         $salesDelivery->save();
                     }
                     if ($d_quantity == $value) {
                         $salesDelivery->status = 4;
                         //product delivery completed
                         $salesDelivery->save();
                         $salesOrderItem = SalesOrderItem::firstOrNew(['sales_order_id' => $inputs['sales_order_id'], 'product_id' => $key]);
                         $salesOrderItem->status = 4;
                         // Sales item Delivery Completed
                         $salesOrderItem->save();
                     } else {
                         $salesDelivery->status = 2;
                         //Partial Delivery
                         $salesDelivery->save();
                         $salesOrderItem = SalesOrderItem::firstOrNew(['sales_order_id' => $inputs['sales_order_id'], 'product_id' => $key]);
                         $salesOrderItem->status = 2;
                         //Partial Delivery
                         $salesOrderItem->save();
                     }
                     $deliver_quantity += $d_quantity;
                     $order_quantity += $value;
                     $quantity_delivered = $inputs['deliver_now'][$key];
                     $stocks = Stock::where(['year' => $year, 'stock_type' => Config::get('common.balance_type_intermediate'), 'workspace_id' => $user->workspace_id, 'product_id' => $key])->first();
                     if ($inputs['unit_type'][$key] == 2) {
                         foreach ($products as $item) {
                             if ($item['id'] == $key) {
                                 $quantity_delivered = $quantity_delivered / $item['weight'] * $item['length'];
                                 break;
                             }
                         }
                     }
                     if ($stocks->quantity < $quantity_delivered) {
                         Session()->flash('warning_message', 'Insufficient stock.');
                         throw new \Exception();
                     }
                     $stocks->quantity -= $quantity_delivered;
                     $stocks->updated_by = $user->id;
                     $stocks->updated_at = $time;
                     $stocks->update();
                 }
                 if ($deliver_quantity == $order_quantity) {
                     $salesOrder = SalesOrder::find($inputs['sales_order_id']);
                     $salesOrder->status = 4;
                     // Sales Delivery Completed
                     $salesOrder->save();
                 } else {
                     $salesOrder = SalesOrder::find($inputs['sales_order_id']);
                     $salesOrder->status = 2;
                     //Partial Delivery
                     $salesOrder->save();
                 }
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Products delivered failed.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Products delivered successfully.');
     return redirect('salesDelivery');
 }
Ejemplo n.º 19
0
 public function update($id, SalaryGeneratorRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $user = Auth::user();
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $year = CommonHelper::get_current_financial_year();
             $transaction_type = Config::get('common.transaction_type.salary');
             $balance_type = Config::get('common.balance_type_intermediate');
             $inputs = $request->input();
             $salary = Salary::find($id);
             $copy = clone $salary;
             $salary->cut = $inputs['cut'];
             $salary->net = $inputs['net'];
             $salary->net_due = $inputs['net'];
             if ($inputs['over_time'] > 0) {
                 $salary->over_time = $inputs['over_time'];
                 $salary->over_time_due = $inputs['overtime_amount'];
                 $salary->over_time_amount = $inputs['overtime_amount'];
             }
             if ($inputs['bonus'] > 0) {
                 $salary->bonus = $inputs['bonus'];
                 $salary->bonus_due = $inputs['bonus'];
             }
             $salary->update();
             $personalAccount = PersonalAccount::where(['person_id' => $copy->employee_id, 'person_type' => Config::get('common.person_type_employee')])->first();
             if ($inputs['net'] > $copy->net) {
                 $balance = $inputs['net'] - $copy->net;
                 $personalAccount->balance += $balance;
                 //Add
             } elseif ($inputs['net'] < $copy->net) {
                 $balance = $copy->net - $inputs['net'];
                 $personalAccount->balance -= $balance;
                 //Sub
             }
             if ($inputs['overtime_amount'] > $copy->over_time_amount) {
                 $personalAccount->overtime_balance += $inputs['overtime_amount'] - $copy->over_time_amount;
             } elseif ($inputs['overtime_amount'] < $copy->over_time_amount) {
                 $personalAccount->overtime_balance -= $copy->over_time_amount - $inputs['overtime_amount'];
             }
             if ($inputs['bonus'] > $copy->bonus) {
                 $personalAccount->bonus_balance += $inputs['bonus'] - $copy->bonus;
             } elseif ($inputs['bonus'] < $copy->bonus) {
                 $personalAccount->bonus_balance -= $copy->bonus - $inputs['bonus'];
             }
             $personalAccount->updated_by = $user->id;
             $personalAccount->updated_at = $time;
             $personalAccount->save();
             if ($inputs['net'] > $copy->net) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $balance;
                 //Add Salary Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 22000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $balance;
                 //Add Salary Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 42000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount += $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 22000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount += $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             } elseif ($inputs['net'] < $copy->net) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $balance;
                 //Add Salary Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 22000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $balance;
                 //Add Salary Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 42000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 22000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             }
             if ($inputs['over_time'] && !$copy->over_time) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['overtime_amount'];
                 //Add Overtime Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = new GeneralJournal();
                 $generalJournal->date = $date;
                 $generalJournal->transaction_type = $transaction_type;
                 $generalJournal->reference_id = $salary->id;
                 $generalJournal->year = $year;
                 $generalJournal->account_code = 44000;
                 $generalJournal->workspace_id = $user->workspace_id;
                 $generalJournal->amount = $inputs['over_time'];
                 $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                 $generalJournal->created_by = $user->id;
                 $generalJournal->created_at = $time;
                 $generalJournal->save();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['overtime_amount'];
                 //Add Overtime Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $generalJournal = new GeneralJournal();
                 $generalJournal->date = $date;
                 $generalJournal->transaction_type = $transaction_type;
                 $generalJournal->reference_id = $salary->id;
                 $generalJournal->year = $year;
                 $generalJournal->account_code = 29993;
                 $generalJournal->workspace_id = $user->workspace_id;
                 $generalJournal->amount = $inputs['over_time'];
                 $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $generalJournal->created_by = $user->id;
                 $generalJournal->created_at = $time;
                 $generalJournal->save();
             } else {
                 if (!$inputs['over_time'] && $copy->over_time) {
                     //Update Workspace Ledger
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $copy->over_time;
                     //Add Overtime Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     // General Journal Table Impact
                     $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 44000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                     $generalJournal->delete();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance = $copy->over_time;
                     //Add Overtime Expense
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     // General Journal Table Impact
                     $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29993, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                     $generalJournal->deleet();
                 } else {
                     if ($inputs['over_time'] > $copy->over_time) {
                         //Update Workspace Ledger
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance += $inputs['overtime_amount'] - $copy->overtime_amount;
                         //Add Overtime Payable
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance += $inputs['overtime_amount'] - $copy->overtime_amount;
                         //Add Overtime Expense
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         // General Journal Table Impact
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 44000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount += $inputs['overtime_amount'] - $copy->overtime_amount;
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29993, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount += $inputs['overtime_amount'] - $copy->overtime_amount;
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                     } elseif ($inputs['over_time'] < $copy->over_time) {
                         //Update Workspace Ledger
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance -= $copy->overtime_amount - $inputs['overtime_amount'];
                         //Sub Overtime Payable
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance -= $copy->overtime_amount - $inputs['overtime_amount'];
                         //Sub Overtime Expense
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         // General Journal Table Impact
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 44000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount -= $copy->overtime_amount - $inputs['overtime_amount'];
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29993, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount -= $copy->overtime_amount - $inputs['overtime_amount'];
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                     }
                 }
             }
             if ($inputs['bonus'] > $copy->bonus) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['bonus'] - $copy->bonus;
                 //Add bonus Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29970, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['bonus'] - $copy->bonus;
                 //Add bonus Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 45000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 if ($generalJournal) {
                     $generalJournal->amount += $inputs['bonus'] - $copy->bonus;
                     $generalJournal->updated_by = $user->id;
                     $generalJournal->updated_at = $time;
                     $generalJournal->save();
                 } else {
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = $transaction_type;
                     $generalJournal->reference_id = $salary->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 45000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['bonus'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29970, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 if ($generalJournal) {
                     $generalJournal->amount += $inputs['bonus'] - $copy->bonus;
                     $generalJournal->updated_by = $user->id;
                     $generalJournal->updated_at = $time;
                     $generalJournal->save();
                 } else {
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = $transaction_type;
                     $generalJournal->reference_id = $salary->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 29970;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['bonus'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
             } elseif ($inputs['bonus'] < $copy->bonus) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $copy->bonus - $inputs['bonus'];
                 //Sub bonus Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29970, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $copy->bonus - $inputs['bonus'];
                 //Sub bonus Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 45000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $copy->bonus - $inputs['bonus'];
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29970, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $copy->bonus - $inputs['bonus'];
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             }
         });
     } catch (\Exception $e) {
         dd($e);
         Session()->flash('error_message', 'Salary cannot Update. Please Try again.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Salary updated successfully.');
     return redirect('salary_generator');
 }
Ejemplo n.º 20
0
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $salt = \App\Helpers\CommonHelper::getSalt();
     $passowrd = \App\Helpers\CommonHelper::makePassword('123456', $salt);
     DB::table('users')->insert(['uid' => uniqid() . mt_rand(1000, 2000), 'mobile' => '18612341234', 'password' => $passowrd, 'salt' => $salt, 'created_at' => Carbon::now()->toDateTimeString(), 'updated_at' => Carbon::now()->toDateTimeString()]);
 }
Ejemplo n.º 21
0
 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');
 }
Ejemplo n.º 22
0
 public function store(MakePaymentRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $payment = new Payment();
             $currentYear = CommonHelper::get_current_financial_year();
             $payment->to_whom_type = $request->to_whom_type;
             $payment->to_whom = $request->to_whom;
             $payment->total_amount = $request->total_amount;
             $payment->amount = $request->amount;
             $payment->transaction_detail = $request->transaction_detail;
             $payment->date = $request->date;
             $payment->year = $currentYear;
             $payment->workspace_id = Auth::user()->workspace_id;
             $payment->account_code = $request->account_code;
             $payment->voucher_no = $request->voucher_no;
             $payment->created_by = Auth::user()->id;
             $payment->created_at = time();
             $payment->save();
             // IMPACTS ON ACCOUNTING TABLES
             $workspace_id = Auth::user()->workspace_id;
             $cashCode = 11000;
             $accountPayableCode = 41000;
             $transaction_type = Config::get('common.transaction_type.payment');
             // Workspace Ledger Account Payable Debit(-)
             $accountReceivableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $accountPayableCode, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $currentYear])->first();
             $accountReceivableWorkspaceData->balance -= $request->amount;
             $accountReceivableWorkspaceData->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 = $transaction_type;
             $generalJournal->reference_id = $payment->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 = $transaction_type;
             $generalJournal->reference_id = $payment->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', 'Payment Creation Failed!');
         return redirect('make_payments');
     }
     Session()->flash('flash_message', 'Payment Done Successfully!');
     return redirect('make_payments');
 }
Ejemplo n.º 23
0
 public function update($id, InitializationRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $currentYear = CommonHelper::get_current_financial_year();
             $balanceInput = $request->input('balance');
             foreach ($balanceInput as $code => $amount) {
                 $WorkspaceLedger = new WorkspaceLedger();
                 $GeneralLedger = new GeneralLedger();
                 $WorkspaceLedger->workspace_id = $id;
                 $WorkspaceLedger->year = $currentYear;
                 $WorkspaceLedger->account_code = $code;
                 $WorkspaceLedger->balance_type = Config::get('common.balance_type_opening');
                 $WorkspaceLedger->balance = $amount;
                 $WorkspaceLedger->created_by = Auth::user()->id;
                 $WorkspaceLedger->created_at = time();
                 $WorkspaceLedger->save();
                 $WorkspaceLedger = new WorkspaceLedger();
                 // Intermediate row insert
                 $WorkspaceLedger->workspace_id = $id;
                 $WorkspaceLedger->year = $currentYear;
                 $WorkspaceLedger->account_code = $code;
                 $WorkspaceLedger->balance_type = Config::get('common.balance_type_intermediate');
                 $WorkspaceLedger->balance = $amount;
                 $WorkspaceLedger->created_by = Auth::user()->id;
                 $WorkspaceLedger->created_at = time();
                 $WorkspaceLedger->save();
                 $existingGeneralData = GeneralLedger::where(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_opening'), 'year' => $currentYear])->first();
                 if ($existingGeneralData) {
                     $existingGeneral = GeneralLedger::firstOrNew(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_opening'), 'year' => $currentYear]);
                     $existingGeneral->year = $currentYear;
                     $existingGeneral->account_code = $code;
                     $existingGeneral->balance_type = Config::get('common.balance_type_opening');
                     $existingGeneral->balance = $existingGeneralData->balance + $amount;
                     $existingGeneral->updated_by = Auth::user()->id;
                     $existingGeneral->updated_at = time();
                     $existingGeneral->update();
                 } else {
                     $GeneralLedger->year = $currentYear;
                     $GeneralLedger->account_code = $code;
                     $GeneralLedger->balance_type = Config::get('common.balance_type_opening');
                     $GeneralLedger->balance = $amount;
                     $GeneralLedger->created_by = Auth::user()->id;
                     $GeneralLedger->created_at = time();
                     $GeneralLedger->save();
                 }
                 //                // General Intermediate Data Insert/ Update
                 //                $GeneralLedger = New GeneralLedger;
                 //                $existingGeneralIntermediateData = GeneralLedger::where(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_intermediate')])->first();
                 //
                 //                if($existingGeneralIntermediateData)
                 //                {
                 //                    $existingGeneralIntermediate = GeneralLedger::firstOrNew(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_intermediate')]);
                 //
                 //                    $existingGeneralIntermediate->year = date('Y');
                 //                    $existingGeneralIntermediate->account_code = $code;
                 //                    $existingGeneralIntermediate->balance_type = Config::get('common.balance_type_intermediate');
                 //                    $existingGeneralIntermediate->balance = $existingGeneralData->balance + $amount;
                 //                    $existingGeneralIntermediate->updated_by = Auth::user()->id;
                 //                    $existingGeneralIntermediate->updated_at = time();
                 //                    $existingGeneralIntermediate->update();
                 //                }
                 //                else
                 //                {
                 //                    $GeneralLedger->year = date('Y');
                 //                    $GeneralLedger->account_code = $code;
                 //                    $GeneralLedger->balance_type = Config::get('common.balance_type_intermediate');
                 //                    $GeneralLedger->balance = $amount;
                 //                    $GeneralLedger->created_by = Auth::user()->id;
                 //                    $GeneralLedger->created_at = time();
                 //                    $GeneralLedger->save();
                 //                }
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Accounts not Initialized!');
         return redirect('initializations');
     }
     Session()->flash('flash_message', 'Accounts Initialized!');
     return redirect('initializations');
 }
Ejemplo n.º 24
0
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function store(PurchasesReturnRequest $request)
 {
     if (!$request->input('items')) {
         Session()->flash('error_message', 'Purchases Return has not been Completed');
         return redirect('purchases');
     }
     $inputs = $request->input();
     DB::beginTransaction();
     try {
         $user_id = Auth::user()->id;
         $workspace_id = Auth::user()->workspace_id;
         $balance_type = Config::get('common.balance_type_intermediate');
         $transaction_type = Config::get('common.transaction_type.purchase_return');
         $person_type_supplier = Config::get('common.person_type_supplier');
         $year = CommonHelper::get_current_financial_year();
         $time = time();
         $purchase = new PurchasesReturn();
         $purchase->supplier_id = $request->input('supplier_id');
         $purchase->purchase_return_date = $request->input('purchase_return_date');
         $purchase->transportation_cost = $request->input('transportation_cost');
         $purchase->total_amout = $request->input('total');
         if ($inputs['return_type'] == 1) {
             $purchase->due = 0;
             $purchase->due_paid = 0;
         } elseif ($inputs['return_type'] == 2) {
             $purchase->due = 0;
             $purchase->due_paid = $request->input('total');
         } elseif ($inputs['return_type'] == 3) {
             $purchase->due = $request->input('total');
             $purchase->due_paid = 0;
         } elseif ($inputs['return_type'] == 4) {
             $purchase->due = 0;
             $purchase->due_paid = $request->input('pay_due_amount');
         }
         $purchase->return_type = $request->input('return_type');
         $purchase->created_at = time();
         $purchase->created_by = $user_id;
         $purchase->save();
         $purchase_return_id = $purchase->id;
         foreach ($request->input('items') as $item) {
             //purchase Return details
             $item['purchases_return_id'] = $purchase_return_id;
             $item['status'] = 1;
             $item['created_at'] = time();
             $item['created_by'] = $user_id;
             PurchasesReturnDetail::create($item);
             //update stock info
             RawStock::where(['material_id' => $item['material_id'], 'year' => $year, 'stock_type' => $balance_type])->decrement('quantity', $item['quantity'], ['updated_at' => $time, 'updated_by' => $user_id]);
         }
         if ($inputs['transportation_cost'] > 0) {
             // Update Workspace Ledger
             $workspace = WorkspaceLedger::where(['account_code' => 29997, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['transportation_cost'];
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance -= $inputs['transportation_cost'];
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             //Insert data into General Journal
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 11000;
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['transportation_cost'];
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 29997;
             //purchase return transportation cost
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['transportation_cost'];
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
         }
         //general journal entry
         if ($inputs['return_type'] == 1) {
             // Update Workspace Ledger
             WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->increment('balance', $inputs['total'], ['updated_at' => $time, 'updated_by' => $user_id]);
             $workspace = WorkspaceLedger::where(['account_code' => 26000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['total'];
             //Add Purchase Return
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             //Insert data into General Journal
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 11000;
             //Cash
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 26000;
             //purchase Return
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
         } elseif ($inputs['return_type'] == 2) {
             // Update Workspace Ledger
             $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance -= $inputs['total'];
             //Subtract Liabilities Account Payable
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             $workspace = WorkspaceLedger::where(['account_code' => 26000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['total'];
             //Add Purchase Return
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             //Insert data into General Journal
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 41000;
             // Liabilities Account Payable
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 26000;
             //Product Sales Return
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             // Update Personal Account
             $personal = PersonalAccount::where('person_id', $inputs['supplier_id'])->where('person_type', $person_type_supplier)->first();
             $personal->balance -= $inputs['total'];
             $personal->updated_by = $user_id;
             $personal->updated_at = $time;
             $personal->save();
         } elseif ($inputs['return_type'] == 3) {
             // Update Workspace Ledger
             $workspace = WorkspaceLedger::where(['account_code' => 12000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['total'];
             //Account Receivable
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             $workspace = WorkspaceLedger::where(['account_code' => 26000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['total'];
             //Add Purchase Return
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             //Insert data into General Journal
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 12000;
             //Account Receiveable
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 26000;
             //Add Purchase Return
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             //Update Personal Account
             $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
             $personal->due += $inputs['total'];
             $personal->updated_by = $user_id;
             $personal->updated_at = $time;
             $personal->save();
         } elseif ($inputs['return_type'] == 4) {
             // Update Workspace Ledger
             $workspace = WorkspaceLedger::where(['account_code' => 11000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['cash_return_amount'];
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             $workspace = WorkspaceLedger::where(['account_code' => 26000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance += $inputs['total'];
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             $workspace = WorkspaceLedger::where(['account_code' => 41000, 'workspace_id' => $workspace_id, 'balance_type' => $balance_type, 'year' => $year])->first();
             $workspace->balance -= $inputs['pay_due_amount'];
             //Account Payable
             $workspace->updated_by = $user_id;
             $workspace->updated_at = $time;
             $workspace->save();
             //Insert data into General Journal
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 11000;
             //Cash
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['cash_return_amount'];
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 26000;
             //Product Sales Return
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['total'];
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             $journal = new GeneralJournal();
             $journal->date = strtotime($request->input('purchase_return_date'));
             $journal->transaction_type = $transaction_type;
             $journal->reference_id = $purchase_return_id;
             $journal->year = $year;
             $journal->account_code = 41000;
             // Account Payable
             $journal->workspace_id = $workspace_id;
             $journal->amount = $inputs['pay_due_amount'];
             $journal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
             $journal->created_by = $user_id;
             $journal->created_at = $time;
             $journal->save();
             //Update Personal Account
             $personal = PersonalAccount::where('person_id', $inputs['customer_id'])->where('person_type', $inputs['customer_type'])->first();
             $personal->blance -= $inputs['pay_due_amount'];
             $personal->updated_by = $user_id;
             $personal->updated_at = $time;
             $personal->save();
         }
         DB::commit();
         Session()->flash('flash_message', 'Purchases Return has been Completed');
     } catch (\Exception $e) {
         DB::rollBack();
         Session()->flash('flash_error', 'Purchases Return has not Completed!');
     }
     return redirect('purchases_return');
 }
Ejemplo n.º 25
0
 public function store(BankTransactionRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $inputs = $request->input();
             $time = time();
             $user = Auth::user();
             $year = CommonHelper::get_current_financial_year();
             $bankTransaction = new BankTransaction();
             // Transaction Entry
             $bankTransaction->bank_id = $inputs['bank_id'];
             $bankTransaction->transaction_type = $inputs['transaction_type'];
             $bankTransaction->amount = $inputs['amount'];
             $bankTransaction->transaction_date = $inputs['transaction_date'];
             $bankTransaction->created_by = $user->id;
             $bankTransaction->created_at = $time;
             $bankTransaction->save();
             if ($inputs['amount'] > 0) {
                 if ($inputs['transaction_type'] == 1) {
                     // Bank Balance Update
                     $bank = Bank::findOrfail($inputs['bank_id']);
                     $bank->balance += $inputs['amount'];
                     $bank->updated_by = $user->id;
                     $bank->updated_by = $time;
                     $bank->save();
                     // Update Workspace Ledger Bank
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance += $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // Update Workspace Ledger Cash
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance -= $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // General Journals Cash Credit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_deposit');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['amount'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = Auth::user()->id;
                     $generalJournal->created_at = time();
                     $generalJournal->save();
                     // Bank Account Debit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_deposit');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = $bank->account_code;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['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 ($inputs['transaction_type'] == 2) {
                     // Bank Balance Update
                     $bank = Bank::findOrfail($inputs['bank_id']);
                     $bank->balance -= $inputs['amount'];
                     $bank->updated_by = $user->id;
                     $bank->updated_by = $time;
                     $bank->save();
                     // Update Workspace Ledger Bank
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance -= $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // Update Workspace Ledger Cash
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance += $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // General Journals Cash Debit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_withdraw');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['amount'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = Auth::user()->id;
                     $generalJournal->created_at = time();
                     $generalJournal->save();
                     // Bank Account Credit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_withdraw');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = $bank->account_code;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['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 ($inputs['transaction_type'] == 3) {
                     // Bank Balance Update
                     $bank = Bank::findOrfail($inputs['bank_id']);
                     $bank->balance += $inputs['amount'];
                     $bank->updated_by = $user->id;
                     $bank->updated_by = $time;
                     $bank->save();
                     // Update Workspace Ledger Bank
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance += $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // Update Workspace Ledger Interest
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 38000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance += $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // General Journals Cash Debit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_interest');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['amount'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = Auth::user()->id;
                     $generalJournal->created_at = time();
                     $generalJournal->save();
                     // Bank Interest Credit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_interest');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 38000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['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 ($inputs['transaction_type'] == 4) {
                     // Bank Balance Update
                     $bank = Bank::findOrfail($inputs['bank_id']);
                     $bank->balance -= $inputs['amount'];
                     $bank->updated_by = $user->id;
                     $bank->updated_by = $time;
                     $bank->save();
                     // Update Workspace Ledger Bank
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance -= $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // Update Workspace Ledger Bank Charge
                     $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29995, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $workspaceLedger->balance += $inputs['amount'];
                     $workspaceLedger->updated_by = $user->id;
                     $workspaceLedger->updated_by = $time;
                     $workspaceLedger->save();
                     // General Journals Cash Credit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_charge');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['amount'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = Auth::user()->id;
                     $generalJournal->created_at = time();
                     $generalJournal->save();
                     // Bank Charge Debit
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = strtotime($inputs['transaction_date']);
                     $generalJournal->transaction_type = Config::get('common.transaction_type.bank_charge');
                     $generalJournal->reference_id = $bankTransaction->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 29995;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['amount'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = Auth::user()->id;
                     $generalJournal->created_at = time();
                     $generalJournal->save();
                 }
             }
         });
     } catch (\Exception $e) {
         Session::flash('error_message', 'Failed to do Bank Transaction. Please try again!');
         return Redirect::back();
     }
     Session::flash('flash_message', 'Bank Transaction done successfully!');
     return redirect('bank_transactions');
 }
Ejemplo n.º 26
0
 /**
  * Возвращает сумму открытых заказов
  */
 public function getAmountOpenOrdersAsString($catalog_id = null)
 {
     $open_orders = $this->orderedProducts($catalog_id)->get();
     if ($open_orders->count() < 1) {
         return 0;
     }
     $amount = 0;
     foreach ($open_orders as $order) {
         $amount = $amount + $order->price * $order->quantity;
     }
     $amount_as_string = \App\Helpers\CommonHelper::NumberToString($amount);
     return $amount_as_string;
 }
Ejemplo n.º 27
0
<?php

/**
 * @var $user \App\User
 */
if (!isset($user)) {
    $user = \App\Helpers\CommonHelper::getCurrentUser();
}
$open_orders_catalogs_ids_arr = $user->getOpenOrdersCatalogsIdsArr();
?>

<p>
    <button class="btn btn-link">
        <span class="glyphicon glyphicon-menu-hamburger"></span> Отобразить информацию о всех товарах
    </button>
    <a href="/deferred" class="btn btn-default">Отложенные товары</a>
    <a href="/history" class="btn btn-default">История заказов</a>
    <a href="/history" class="btn btn-primary" title="Список оплаченных заказов, ожидающих доставки" data-toggle="tooltip" data-placement="right">
        Мои заказы, ожидающие доставки
    </a>
</p>

@foreach($open_orders_catalogs_ids_arr as $open_orders_catalog_id)
    <?php 
$catalog_model = \App\Models\Catalog::find($open_orders_catalog_id);
$deferred_products = $user->deferredProducts($open_orders_catalog_id)->get();
?>
    <div class="panel panel-default">
        <div class="panel-heading">
            <div class="row">
                <div class="col-lg-9">
Ejemplo n.º 28
0
 public function store(Request $request)
 {
     $yearClosingStatus = AccountClosing::where(['year' => CommonHelper::get_current_financial_year(), 'type' => 2])->lists('id');
     if (sizeof($yearClosingStatus) == 0) {
         $workspaces = Workspace::where('status', 1)->lists('id');
         $closedWorkspaces = AccountClosing::where(['year' => CommonHelper::get_current_financial_year(), 'type' => 1])->lists('workspace_id');
         if (sizeof($workspaces) == sizeof($closedWorkspaces)) {
             try {
                 DB::transaction(function () use($request) {
                     $heads = ChartOfAccount::where('status', 1)->lists('code');
                     $currentYear = CommonHelper::get_current_financial_year();
                     foreach ($heads as $head) {
                         $headTotal = WorkspaceLedger::where(['account_code' => $head, 'year' => CommonHelper::get_current_financial_year(), 'balance_type' => Config::get('common.balance_type_closing')])->sum('balance');
                         // Closing Balance Set
                         $generalLedger = new GeneralLedger();
                         $generalLedger->year = $currentYear;
                         $generalLedger->account_code = $head;
                         $generalLedger->balance_type = Config::get('common.balance_type_closing');
                         $generalLedger->balance = $headTotal;
                         $generalLedger->created_by = Auth::user()->id;
                         $generalLedger->created_at = time();
                         $generalLedger->save();
                         // Opening Balance Set for Next Financial Year
                         if (substr($head, 0, 1) == 1 || substr($head, 0, 1) == 4 || substr($head, 0, 1) == 6) {
                             $generalLedger = new GeneralLedger();
                             $generalLedger->year = CommonHelper::get_next_financial_year();
                             $generalLedger->account_code = $head;
                             $generalLedger->balance_type = Config::get('common.balance_type_opening');
                             $generalLedger->balance = $headTotal;
                             $generalLedger->created_by = Auth::user()->id;
                             $generalLedger->created_at = time();
                             $generalLedger->save();
                         } else {
                             $generalLedger = new GeneralLedger();
                             $generalLedger->year = CommonHelper::get_next_financial_year();
                             $generalLedger->account_code = $head;
                             $generalLedger->balance_type = Config::get('common.balance_type_opening');
                             $generalLedger->balance = 0;
                             $generalLedger->created_by = Auth::user()->id;
                             $generalLedger->created_at = time();
                             $generalLedger->save();
                         }
                     }
                     // Account Closing table Impact
                     $accountClosing = new AccountClosing();
                     $accountClosing->type = 2;
                     // Year Closing type=2 and Workspace Closing type=1;
                     $accountClosing->year = $currentYear;
                     $accountClosing->save();
                     // Raw Stock Table Impact
                     $rawMaterials = RawStock::where(['year' => CommonHelper::get_current_financial_year(), 'stock_type' => Config::get('common.balance_type_intermediate')])->get();
                     foreach ($rawMaterials as $rawMaterial) {
                         // Current Year Opening Balance
                         $rawStock = new RawStock();
                         $rawStock->year = $currentYear;
                         $rawStock->stock_type = Config::get('common.balance_type_closing');
                         $rawStock->material_id = $rawMaterial->material_id;
                         $rawStock->quantity = $rawMaterial->quantity;
                         $rawStock->created_by = Auth::user()->id;
                         $rawStock->created_at = time();
                         // Next Year Opening Balance
                         $rawStock = new RawStock();
                         $rawStock->year = CommonHelper::get_next_financial_year();
                         $rawStock->stock_type = Config::get('common.balance_type_opening');
                         $rawStock->material_id = $rawMaterial->material_id;
                         $rawStock->quantity = $rawMaterial->quantity;
                         $rawStock->created_by = Auth::user()->id;
                         $rawStock->created_at = time();
                         // Next Year Intermediate Balance
                         $rawStock = new RawStock();
                         $rawStock->year = CommonHelper::get_next_financial_year();
                         $rawStock->stock_type = Config::get('common.balance_type_intermediate');
                         $rawStock->material_id = $rawMaterial->material_id;
                         $rawStock->quantity = $rawMaterial->quantity;
                         $rawStock->created_by = Auth::user()->id;
                         $rawStock->created_at = time();
                     }
                     // Current Year Data Fetch
                     $existingYearDetail = DB::table('financial_years')->where('year', $currentYear)->first();
                     $nextYear = CommonHelper::get_next_financial_year();
                     // Current Year Inactive
                     DB::table('financial_years')->where('year', $currentYear)->update(['status' => 0]);
                     // New Year Insert
                     DB::table('financial_years')->insert(['year' => $nextYear, 'start_date' => strtotime(date("Y-m-d", $existingYearDetail->start_date) . " + 1 year"), 'end_date' => strtotime(date("Y-m-d", $existingYearDetail->end_date) . " + 1 year"), 'created_by' => Auth::user()->id, 'created_at' => time()]);
                 });
             } catch (\Exception $e) {
                 Session()->flash('error_message', 'Year Closing Not Done!');
                 return redirect('year_closing');
             }
             Session()->flash('flash_message', 'Year Closed And New Year Opened Successfully!');
             return redirect('year_closing');
         } else {
             Session()->flash('warning_message', 'Warning: All Workspace Account Not Closed Yet!');
             return redirect('year_closing');
         }
     } else {
         Session()->flash('warning_message', 'Warning: Year Closing Done For This Year!');
         return redirect('year_closing');
     }
 }
Ejemplo n.º 29
0
 public function store(ProviderRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $inputs = $request->input();
             $time = time();
             $user = Auth::user();
             $year = CommonHelper::get_current_financial_year();
             $file = $request->file('picture');
             $provider = new Provider();
             $destinationPath = base_path() . '/public/image/provider/';
             if ($request->hasFile('picture')) {
                 $name = time() . $file->getClientOriginalName();
                 $file->move($destinationPath, $name);
                 $inputs['picture'] = $name;
                 $provider->picture = $inputs['picture'];
             }
             $provider->name = $inputs['name'];
             $provider->mobile = $inputs['mobile'];
             $provider->address = $inputs['address'];
             $provider->company_name = $inputs['company_name'];
             $provider->company_address = $inputs['company_address'];
             $provider->created_by = $user->id;
             $provider->created_at = $time;
             $provider->save();
             // Personal Account Creation
             $personal = new PersonalAccount();
             $personal->person_type = Config::get('common.person_type_provider');
             if (!empty($inputs['balance'])) {
                 $personal->balance = $inputs['balance'];
             }
             if (!empty($inputs['due'])) {
                 $personal->due = $inputs['due'];
             }
             $personal->person_id = $provider->id;
             $personal->created_by = Auth::user()->id;
             $personal->created_at = $time;
             $personal->save();
             if ($inputs['balance'] > 0) {
                 // Update Workspace Ledger
                 $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 41000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                 $workspaceLedger->balance += $inputs['balance'];
                 $workspaceLedger->updated_by = $user->id;
                 $workspaceLedger->updated_by = $time;
                 $workspaceLedger->save();
             }
             if ($inputs['due'] > 0) {
                 // Update Workspace Ledger
                 $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 12000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                 $workspaceLedger->balance += $inputs['due'];
                 $workspaceLedger->updated_by = $user->id;
                 $workspaceLedger->updated_by = $time;
                 $workspaceLedger->save();
             }
         });
     } catch (\Exception $e) {
         Session::flash('error_message', 'Failed to create Product & Service Provider. Please try again!');
         return Redirect::back();
     }
     Session::flash('flash_message', 'Product & Service Provider created successfully!');
     return redirect('providers');
 }
Ejemplo n.º 30
0
 public function update($id, UsageRegisterRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $existingRegister = UsageRegister::where('id', $id)->first();
             $UsageRegister = UsageRegister::findOrFail($id);
             $existingStock = RawStock::where(['year' => CommonHelper::get_current_financial_year(), 'stock_type' => Config::get('common.balance_type_intermediate'), 'material_id' => $existingRegister->material_id])->first();
             if ($existingStock->quantity + $existingRegister->usage >= $request->input('usage')) {
                 $UsageRegister->date = $request->input('date');
                 $UsageRegister->material_id = $request->input('material_id');
                 $UsageRegister->usage = $request->input('usage');
                 $UsageRegister->status = $request->input('status');
                 $UsageRegister->updated_by = Auth::user()->id;
                 $UsageRegister->updated_at = time();
                 $UsageRegister->update();
                 if ($existingRegister->usage != $request->input('usage')) {
                     if ($existingRegister->usage > $request->input('usage')) {
                         $difference = $existingRegister->usage - $request->input('usage');
                         $stock = RawStock::findOrFail($existingStock->id);
                         $stock->quantity = $existingStock->quantity + $difference;
                         $stock->updated_by = Auth::user()->id;
                         $stock->updated_at = time();
                         $stock->update();
                     } elseif ($existingRegister->usage < $request->input('usage')) {
                         $difference = $request->input('usage') - $existingRegister->usage;
                         $stock = RawStock::findOrFail($existingStock->id);
                         $stock->quantity = $existingStock->quantity - $difference;
                         $stock->updated_by = Auth::user()->id;
                         $stock->updated_at = time();
                         $stock->update();
                     }
                 }
             } else {
                 Session()->flash('warning_message', 'Alert: Not Enough Stock! Usage Quantity ' . $request->input('usage') . ' is greater than Raw Material Stock ' . ($existingStock->quantity + $existingRegister->usage) . '');
                 throw new \Exception('error');
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Usage Register not updated!');
         return redirect('usageRegisters');
     }
     Session()->flash('flash_message', 'Usage Register has been updated!');
     return redirect('usageRegisters');
 }