Files
crater/app/Http/Controllers/ReportController.php
Mohit Panjwani bdf2ba51d6 init crater
2019-11-11 12:16:00 +05:30

296 lines
9.5 KiB
PHP

<?php
namespace Laraspace\Http\Controllers;
use Illuminate\Http\Request;
use Laraspace\User;
use Laraspace\Invoice;
use Laraspace\Company;
use Laraspace\InvoiceItem;
use Laraspace\Expense;
use Laraspace\CompanySetting;
use Laraspace\Tax;
use PDF;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
class ReportController extends Controller
{
public function customersSalesReport($hash, Request $request)
{
$company = Company::where('unique_hash', $hash)->first();
$start = Carbon::createFromFormat('d/m/Y', $request->from_date);
$end = Carbon::createFromFormat('d/m/Y', $request->to_date);
$customers = User::with(['invoices' => function ($query) use ($start, $end) {
$query->whereBetween(
'invoice_date',
[$start->format('Y-m-d'), $end->format('Y-m-d')]
)
->where('paid_status', Invoice::STATUS_PAID);
}])
->customer()
->whereCompany($company->id)
->applyInvoiceFilters($request->only(['from_date', 'to_date']))
->get();
$totalAmount = 0;
foreach ($customers as $customer) {
$customerTotalAmount = 0;
foreach ($customer->invoices as $invoice) {
$customerTotalAmount += $invoice->total;
}
$customer->totalAmount = $customerTotalAmount;
$totalAmount += $customerTotalAmount;
}
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
$from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat);
$to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat);
$colors = [
'primary_text_color',
'heading_text_color',
'section_heading_text_color',
'border_color',
'body_text_color',
'footer_text_color',
'footer_total_color',
'footer_bg_color',
'date_text_color'
];
$colorSettings = CompanySetting::whereIn('option', $colors)
->whereCompany($company->id)
->get();
view()->share([
'customers' => $customers,
'totalAmount' => $totalAmount,
'colorSettings' => $colorSettings,
'company' => $company,
'from_date' => $from_date,
'to_date' => $to_date
]);
$pdf = PDF::loadView('app.pdf.reports.sales-customers');
if ($request->has('download')) {
return $pdf->download();
}
return $pdf->stream();
}
public function itemsSalesReport($hash, Request $request)
{
$company = Company::where('unique_hash', $hash)->first();
$items = InvoiceItem::with('item')
->whereCompany($company->id)
->applyInvoiceFilters($request->only(['from_date', 'to_date']))
->itemAttributes()
->get();
$totalAmount = 0;
foreach ($items as $item) {
$totalAmount += $item->total_amount;
}
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
$from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat);
$to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat);
$colors = [
'primary_text_color',
'heading_text_color',
'section_heading_text_color',
'border_color',
'body_text_color',
'footer_text_color',
'footer_total_color',
'footer_bg_color',
'date_text_color'
];
$colorSettings = CompanySetting::whereIn('option', $colors)
->whereCompany($company->id)
->get();
view()->share([
'items' => $items,
'colorSettings' => $colorSettings,
'totalAmount' => $totalAmount,
'company' => $company,
'from_date' => $from_date,
'to_date' => $to_date
]);
$pdf = PDF::loadView('app.pdf.reports.sales-items');
if ($request->has('download')) {
return $pdf->download();
}
return $pdf->stream();
}
public function expensesReport($hash, Request $request)
{
$company = Company::where('unique_hash', $hash)->first();
$expenseCategories = Expense::with('category')
->whereCompany($company->id)
->applyFilters($request->only(['from_date', 'to_date']))
->expensesAttributes()
->get();
$totalAmount = 0;
foreach ($expenseCategories as $category) {
$totalAmount += $category->total_amount;
}
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
$from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat);
$to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat);
$colors = [
'primary_text_color',
'heading_text_color',
'section_heading_text_color',
'border_color',
'body_text_color',
'footer_text_color',
'footer_total_color',
'footer_bg_color',
'date_text_color'
];
$colorSettings = CompanySetting::whereIn('option', $colors)
->whereCompany($company->id)
->get();
view()->share([
'expenseCategories' => $expenseCategories,
'colorSettings' => $colorSettings,
'totalExpense' => $totalAmount,
'company' => $company,
'from_date' => $from_date,
'to_date' => $to_date
]);
$pdf = PDF::loadView('app.pdf.reports.expenses');
if ($request->has('download')) {
return $pdf->download();
}
return $pdf->stream();
}
public function taxSummery($hash, Request $request)
{
$company = Company::where('unique_hash', $hash)->first();
$taxTypes = Tax::with('taxType', 'invoice', 'invoiceItem')
->whereCompany($company->id)
->whereInvoicesFilters($request->only(['from_date', 'to_date']))
->taxAttributes()
->get();
$totalAmount = 0;
foreach ($taxTypes as $taxType) {
$totalAmount += $taxType->total_tax_amount;
}
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
$from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat);
$to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat);
$colors = [
'primary_text_color',
'heading_text_color',
'section_heading_text_color',
'border_color',
'body_text_color',
'footer_text_color',
'footer_total_color',
'footer_bg_color',
'date_text_color'
];
$colorSettings = CompanySetting::whereIn('option', $colors)
->whereCompany($company->id)
->get();
view()->share([
'taxTypes' => $taxTypes,
'totalTaxAmount' => $totalAmount,
'colorSettings' => $colorSettings,
'company' => $company,
'from_date' => $from_date,
'to_date' => $to_date
]);
$pdf = PDF::loadView('app.pdf.reports.tax-summary');
if ($request->has('download')) {
return $pdf->download();
}
return $pdf->stream();
}
public function profitLossReport($hash, Request $request)
{
$company = Company::where('unique_hash', $hash)->first();
$invoicesAmount = Invoice::whereCompany($company->id)
->applyFilters($request->only(['from_date', 'to_date']))
->wherePaidStatus(Invoice::STATUS_PAID)
->sum('total');
$expenseCategories = Expense::with('category')
->whereCompany($company->id)
->applyFilters($request->only(['from_date', 'to_date']))
->expensesAttributes()
->get();
$totalAmount = 0;
foreach ($expenseCategories as $category) {
$totalAmount += $category->total_amount;
}
$dateFormat = CompanySetting::getSetting('carbon_date_format', $company->id);
$from_date = Carbon::createFromFormat('d/m/Y', $request->from_date)->format($dateFormat);
$to_date = Carbon::createFromFormat('d/m/Y', $request->to_date)->format($dateFormat);
$colors = [
'primary_text_color',
'heading_text_color',
'section_heading_text_color',
'border_color',
'body_text_color',
'footer_text_color',
'footer_total_color',
'footer_bg_color',
'date_text_color'
];
$colorSettings = CompanySetting::whereIn('option', $colors)
->whereCompany($company->id)
->get();
view()->share([
'company' => $company,
'income' => $invoicesAmount,
'expenseCategories' => $expenseCategories,
'totalExpense' => $totalAmount,
'colorSettings' => $colorSettings,
'company' => $company,
'from_date' => $from_date,
'to_date' => $to_date
]);
$pdf = PDF::loadView('app.pdf.reports.profit-loss');
if ($request->has('download')) {
return $pdf->download();
}
return $pdf->stream();
}
}