dbfdg id; } public function creatorId() { if($this->type == 'company' || $this->type == 'super admin') { return $this->id; } else { return $this->created_by; } } public function currentLanguage() { return $this->lang; } public function priceFormat($price) { $settings = Utility::settings(); return (($settings['site_currency_symbol_position'] == "pre") ? $settings['site_currency_symbol'] : '') . number_format($price, Utility::getValByName('decimal_number')) . (($settings['site_currency_symbol_position'] == "post") ? $settings['site_currency_symbol'] : ''); } public function currencySymbol() { $settings = Utility::settings(); return $settings['site_currency_symbol']; } public function dateFormat($date) { $settings = Utility::settings(); return date($settings['site_date_format'], strtotime($date)); } public function timeFormat($time) { $settings = Utility::settings(); return date($settings['site_time_format'], strtotime($time)); } public function purchaseNumberFormat($number) { $settings = Utility::settings(); return $settings["purchase_prefix"] . sprintf("%05d", $number); } public function invoiceNumberFormat($number) { $settings = Utility::settings(); return $settings["invoice_prefix"] . sprintf("%05d", $number); } public function billNumberFormat($number) { $settings = Utility::settings(); return $settings["bill_prefix"] . sprintf("%05d", $number); } public function billChartData() { $month[] = __('January'); $month[] = __('February'); $month[] = __('March'); $month[] = __('April'); $month[] = __('May'); $month[] = __('June'); $month[] = __('July'); $month[] = __('August'); $month[] = __('September'); $month[] = __('October'); $month[] = __('November'); $month[] = __('December'); $data['month'] = $month; $data['currentYear'] = date('M-Y'); $totalBill = Bill::where('vender_id', \Auth::user()->id)->count(); $unpaidArr = array(); for($i = 1; $i <= 12; $i++) { $unpaidBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->whereRaw('month(`send_date`) = ?', $i)->where('status', '1')->where('due_date', '>', date('Y-m-d'))->get(); $paidBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->whereRaw('month(`send_date`) = ?', $i)->where('status', '4')->get(); $partialBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->whereRaw('month(`send_date`) = ?', $i)->where('status', '3')->get(); $dueBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->whereRaw('month(`send_date`) = ?', $i)->where('status', '1')->where('due_date', '<', date('Y-m-d'))->get(); $totalUnpaid = 0; for($j = 0; $j < count($unpaidBill); $j++) { $unpaidAmount = $unpaidBill[$j]->getDue(); $totalUnpaid += $unpaidAmount; } $totalPaid = 0; for($j = 0; $j < count($paidBill); $j++) { $paidAmount = $paidBill[$j]->getTotal(); $totalPaid += $paidAmount; } $totalPartial = 0; for($j = 0; $j < count($partialBill); $j++) { $partialAmount = $partialBill[$j]->getDue(); $totalPartial += $partialAmount; } $totalDue = 0; for($j = 0; $j < count($dueBill); $j++) { $dueAmount = $dueBill[$j]->getDue(); $totalDue += $dueAmount; } $unpaidData[] = $totalUnpaid; $paidData[] = $totalPaid; $partialData[] = $totalPartial; $dueData[] = $totalDue; $dataStatus['unpaid'] = $unpaidData; $dataStatus['paid'] = $paidData; $dataStatus['partial'] = $partialData; $dataStatus['due'] = $dueData; } $data['data'] = $dataStatus; $unpaidBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->where('status', '1')->where('due_date', '>', date('Y-m-d'))->get(); $paidBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->where('status', '4')->get(); $partialBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->where('status', '3')->get(); $dueBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->where('status', '1')->where('due_date', '<', date('Y-m-d'))->get(); $progressData['totalBill'] = $totalBill = Bill:: where('vender_id', \Auth::user()->id)->whereRaw('year(`send_date`) = ?', array(date('Y')))->count(); $progressData['totalUnpaidBill'] = $totalUnpaidBill = count($unpaidBill); $progressData['totalPaidBill'] = $totalPaidBill = count($paidBill); $progressData['totalPartialBill'] = $totalPartialBill = count($partialBill); $progressData['totalDueBill'] = $totalDueBill = count($dueBill); $progressData['unpaidPr'] = ($totalBill != 0) ? ($totalUnpaidBill * 100) / $totalBill : 0; $progressData['paidPr'] = ($totalBill != 0) ? ($totalPaidBill * 100) / $totalBill : 0; $progressData['partialPr'] = ($totalBill != 0) ? ($totalPartialBill * 100) / $totalBill : 0; $progressData['duePr'] = ($totalBill != 0) ? ($totalDueBill * 100) / $totalBill : 0; $progressData['unpaidColor'] = '#fc544b'; $progressData['paidColor'] = '#63ed7a'; $progressData['partialColor'] = '#6777ef'; $progressData['dueColor'] = '#ffa426'; $data['progressData'] = $progressData; return $data; } public function vendorBill($vendorId) { $bills = Bill:: where('vender_id', $vendorId)->orderBy('bill_date', 'desc')->get(); return $bills; } public function vendorOverdue($vendorId) { $dueBill = Bill:: where('vender_id', $vendorId)->whereNotIn('status', ['0', '4',]) ->where('due_date', '<', date('Y-m-d'))->get(); $due = 0; foreach($dueBill as $bill) { $due += $bill->getDue(); } return $due; } public function bills() { return $this->hasMany(Bill::class, 'vender_id'); } public function vendorTotalBillSum($vendorId) { return $this->bills() ->with(['items','accounts']) // Eager load the items relationship to avoid N+1 problem ->get() ->sum->getTotal(); } // public function vendorTotalBillSum($vendorId) // { // $bills = Bill:: where('vender_id', $vendorId)->get(); // $total = 0; // foreach($bills as $bill) // { // $total += $bill->getTotal(); // } // return $total; // } public function vendorTotalBill($vendorId) { $bills = Bill:: where('vender_id', $vendorId)->count(); return $bills; } }