duplicate feature

This commit is contained in:
denisdulici
2017-11-26 15:20:17 +03:00
parent a80c5757b0
commit 402b4c7e79
28 changed files with 256 additions and 23 deletions

View File

@ -39,7 +39,7 @@ class Controller extends BaseController
}
// Add CRUD permission check
$this->middleware('permission:create-' . $controller)->only(['create', 'store']);
$this->middleware('permission:create-' . $controller)->only(['create', 'store', 'duplicate']);
$this->middleware('permission:read-' . $controller)->only(['index', 'show', 'edit']);
$this->middleware('permission:update-' . $controller)->only(['update']);
$this->middleware('permission:delete-' . $controller)->only('destroy');

View File

@ -261,6 +261,24 @@ class Bills extends Controller
return redirect('expenses/bills/' . $bill->id);
}
/**
* Duplicate the specified resource.
*
* @param Bill $bill
*
* @return Response
*/
public function duplicate(Bill $bill)
{
$clone = $bill->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.bills', 1)]);
flash($message)->success();
return redirect('expenses/bills/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -90,6 +90,24 @@ class Payments extends Controller
return redirect('expenses/payments');
}
/**
* Duplicate the specified resource.
*
* @param Payment $payment
*
* @return Response
*/
public function duplicate(Payment $payment)
{
$clone = $payment->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.payments', 1)]);
flash($message)->success();
return redirect('expenses/payments/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -52,6 +52,24 @@ class Vendors extends Controller
return redirect('expenses/vendors');
}
/**
* Duplicate the specified resource.
*
* @param Vendor $vendor
*
* @return Response
*/
public function duplicate(Vendor $vendor)
{
$clone = $vendor->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.vendors', 1)]);
flash($message)->success();
return redirect('expenses/vendors/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -83,6 +83,24 @@ class Customers extends Controller
return redirect('incomes/customers');
}
/**
* Duplicate the specified resource.
*
* @param Customer $customer
*
* @return Response
*/
public function duplicate(Customer $customer)
{
$clone = $customer->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.customers', 1)]);
flash($message)->success();
return redirect('incomes/customers/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -24,6 +24,7 @@ use App\Notifications\Income\Invoice as Notification;
use App\Notifications\Item\Item as ItemNotification;
use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Traits\Incomes;
use App\Traits\Uploads;
use App\Utilities\Modules;
use Date;
@ -31,7 +32,7 @@ use File;
class Invoices extends Controller
{
use DateTime, Currencies, Uploads;
use DateTime, Currencies, Incomes, Uploads;
/**
* Display a listing of the resource.
@ -100,11 +101,7 @@ class Invoices extends Controller
$taxes = Tax::enabled()->pluck('name', 'id');
// Generate next invoice number
$prefix = setting('general.invoice_number_prefix', 'INV-');
$next = setting('general.invoice_number_next', '1');
$digit = setting('general.invoice_number_digit', '5');
$number = $prefix . str_pad($next, $digit, '0', STR_PAD_LEFT);
$number = $this->getNextInvoiceNumber();
return view('incomes.invoices.create', compact('customers', 'currencies', 'items', 'taxes', 'number'));
}
@ -235,9 +232,7 @@ class Invoices extends Controller
InvoiceHistory::create($request->all());
// Update next invoice number
$next = setting('general.invoice_number_next', 1) + 1;
setting(['general.invoice_number_next' => $next]);
setting()->save();
$this->increaseNextInvoiceNumber();
// Fire the event to make it extendible
event(new InvoiceCreated($invoice));
@ -249,6 +244,27 @@ class Invoices extends Controller
return redirect('incomes/invoices/' . $invoice->id);
}
/**
* Duplicate the specified resource.
*
* @param Invoice $invoice
*
* @return Response
*/
public function duplicate(Invoice $invoice)
{
$clone = $invoice->duplicate();
// Update next invoice number
$this->increaseNextInvoiceNumber();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.invoices', 1)]);
flash($message)->success();
return redirect('incomes/invoices/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -91,6 +91,24 @@ class Revenues extends Controller
return redirect('incomes/revenues');
}
/**
* Duplicate the specified resource.
*
* @param Revenue $revenue
*
* @return Response
*/
public function duplicate(Revenue $revenue)
{
$clone = $revenue->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.revenues', 1)]);
flash($message)->success();
return redirect('incomes/revenues/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*

View File

@ -67,6 +67,24 @@ class Items extends Controller
return redirect('items/items');
}
/**
* Duplicate the specified resource.
*
* @param Item $item
*
* @return Response
*/
public function duplicate(Item $item)
{
$clone = $item->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.items', 1)]);
flash($message)->success();
return redirect('items/items/' . $clone->id . '/edit');
}
/**
* Show the form for editing the specified resource.
*