close #231 : Bill attachment not working

This commit is contained in:
cuneytsenturk
2018-03-06 17:22:59 +03:00
parent f394a61773
commit 0f87195254
8 changed files with 143 additions and 41 deletions

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers\Expenses;
use App\Events\BillCreated;
//use App\Events\BillPrinting;
use App\Events\BillUpdated;
use App\Http\Controllers\Controller;
use App\Http\Requests\Expense\Bill as Request;
@ -19,12 +20,16 @@ use App\Models\Item\Item;
use App\Models\Setting\Category;
use App\Models\Setting\Currency;
use App\Models\Setting\Tax;
use App\Models\Common\Media;
use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
use App\Utilities\Modules;
use Date;
use File;
use Image;
use Storage;
class Bills extends Controller
{
@ -394,10 +399,10 @@ class Bills extends Controller
$bill->attachMedia($media, 'attachment');
}
// Delete previous invoice totals
// Delete previous bill totals
BillTotal::where('bill_id', $bill->id)->delete();
// Add invoice totals
// Add bill totals
$this->addTotals($bill, $request, $taxes, $sub_total, $tax_total);
// Fire the event to make it extendible
@ -465,17 +470,11 @@ class Bills extends Controller
*/
public function printBill(Bill $bill)
{
$paid = 0;
$bill = $this->prepareBill($bill);
foreach ($bill->payments as $item) {
$item->default_currency_code = $bill->currency_code;
$logo = $this->getLogo($bill);
$paid += $item->getDynamicConvertedAmount();
}
$bill->paid = $paid;
return view('expenses.bills.bill', compact('bill'));
return view($bill->template_path, compact('bill', 'logo'));
}
/**
@ -487,22 +486,16 @@ class Bills extends Controller
*/
public function pdfBill(Bill $bill)
{
$paid = 0;
$bill = $this->prepareBill($bill);
foreach ($bill->payments as $item) {
$item->default_currency_code = $bill->currency_code;
$logo = $this->getLogo($bill);
$paid += $item->getDynamicConvertedAmount();
}
$bill->paid = $paid;
$html = view('expenses.bills.bill', compact('bill'))->render();
$html = view($bill->template_path, compact('bill', 'logo'))->render();
$pdf = \App::make('dompdf.wrapper');
$pdf->loadHTML($html);
$file_name = 'bill_'.time().'.pdf';
$file_name = 'bill_' . time() . '.pdf';
return $pdf->download($file_name);
}
@ -615,6 +608,25 @@ class Bills extends Controller
return redirect()->back();
}
protected function prepareBill(Bill $bill)
{
$paid = 0;
foreach ($bill->payments as $item) {
$item->default_currency_code = $bill->currency_code;
$paid += $item->getDynamicConvertedAmount();
}
$bill->paid = $paid;
$bill->template_path = 'expenses.bills.bill';
//event(new BillPrinting($bill));
return $bill;
}
protected function addTotals($bill, $request, $taxes, $sub_total, $tax_total)
{
$sort_order = 1;
@ -658,26 +670,26 @@ class Bills extends Controller
]);
}
protected function getLogo()
protected function getLogo($bill)
{
$logo = '';
$media_id = setting('general.company_logo');
if (setting('general.invoice_logo')) {
$media_id = setting('general.invoice_logo');
if (isset($bill->vendor->logo) && !empty($bill->vendor->logo->id)) {
$media_id = $bill->vendor->logo->id;
}
$media = Media::find($media_id);
if (empty($media)) {
return $logo;
}
if (!empty($media)) {
$path = Storage::path($media->getDiskPath());
$path = Storage::path($media->getDiskPath());
if (!is_file($path)) {
return $logo;
if (!is_file($path)) {
return $logo;
}
} else {
$path = asset('public/img/company.png');
}
$image = Image::make($path)->encode()->getEncoded();

View File

@ -6,10 +6,12 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\Expense\Vendor as Request;
use App\Models\Expense\Vendor;
use App\Models\Setting\Currency;
use App\Traits\Uploads;
use App\Utilities\ImportFile;
class Vendors extends Controller
{
use Uploads;
/**
* Display a listing of the resource.
@ -48,7 +50,14 @@ class Vendors extends Controller
$request['email'] = '';
}
Vendor::create($request->all());
$vendor = Vendor::create($request->all());
// Upload logo
if ($request->file('logo')) {
$media = $this->getMedia($request->file('logo'), 'vendors');
$vendor->attachMedia($media, 'logo');
}
$message = trans('messages.success.added', ['type' => trans_choice('general.vendors', 1)]);
@ -135,6 +144,13 @@ class Vendors extends Controller
$vendor->update($request->all());
// Upload logo
if ($request->file('logo')) {
$media = $this->getMedia($request->file('logo'), 'vendors');
$vendor->attachMedia($media, 'logo');
}
$message = trans('messages.success.updated', ['type' => trans_choice('general.vendors', 1)]);
flash($message)->success();