recurring trait
This commit is contained in:
parent
da4307eaf9
commit
b0e9de6347
@ -243,18 +243,7 @@ class Bills extends Controller
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$bill->createRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
$bill->recurring()->create([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['billed_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fire the event to make it extendible
|
// Fire the event to make it extendible
|
||||||
event(new BillCreated($bill));
|
event(new BillCreated($bill));
|
||||||
@ -459,26 +448,7 @@ class Bills extends Controller
|
|||||||
$this->addTotals($bill, $request, $taxes, $sub_total, $discount_total, $tax_total);
|
$this->addTotals($bill, $request, $taxes, $sub_total, $discount_total, $tax_total);
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$bill->updateRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
if ($bill->has('recurring')->count()) {
|
|
||||||
$function = 'update';
|
|
||||||
} else {
|
|
||||||
$function = 'create';
|
|
||||||
}
|
|
||||||
|
|
||||||
$bill->recurring()->$function([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['billed_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
$bill->recurring()->delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fire the event to make it extendible
|
// Fire the event to make it extendible
|
||||||
event(new BillUpdated($bill));
|
event(new BillUpdated($bill));
|
||||||
|
@ -97,18 +97,7 @@ class Payments extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$payment->createRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
$payment->recurring()->create([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['paid_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]);
|
$message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]);
|
||||||
|
|
||||||
@ -210,26 +199,7 @@ class Payments extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$payment->updateRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
if ($payment->has('recurring')->count()) {
|
|
||||||
$function = 'update';
|
|
||||||
} else {
|
|
||||||
$function = 'create';
|
|
||||||
}
|
|
||||||
|
|
||||||
$payment->recurring()->$function([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['paid_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
$payment->recurring()->delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.payments', 1)]);
|
$message = trans('messages.success.updated', ['type' => trans_choice('general.payments', 1)]);
|
||||||
|
|
||||||
|
@ -261,18 +261,7 @@ class Invoices extends Controller
|
|||||||
$this->increaseNextInvoiceNumber();
|
$this->increaseNextInvoiceNumber();
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$invoice->createRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
$invoice->recurring()->create([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['invoiced_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fire the event to make it extendible
|
// Fire the event to make it extendible
|
||||||
event(new InvoiceCreated($invoice));
|
event(new InvoiceCreated($invoice));
|
||||||
@ -480,26 +469,7 @@ class Invoices extends Controller
|
|||||||
$this->addTotals($invoice, $request, $taxes, $sub_total, $discount_total, $tax_total);
|
$this->addTotals($invoice, $request, $taxes, $sub_total, $discount_total, $tax_total);
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$invoice->updateRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
if ($invoice->has('recurring')->count()) {
|
|
||||||
$function = 'update';
|
|
||||||
} else {
|
|
||||||
$function = 'create';
|
|
||||||
}
|
|
||||||
|
|
||||||
$invoice->recurring()->$function([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['invoiced_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
$invoice->recurring()->delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fire the event to make it extendible
|
// Fire the event to make it extendible
|
||||||
event(new InvoiceUpdated($invoice));
|
event(new InvoiceUpdated($invoice));
|
||||||
|
@ -99,18 +99,7 @@ class Revenues extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$revenue->createRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
$revenue->recurring()->create([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['paid_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]);
|
$message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]);
|
||||||
|
|
||||||
@ -212,26 +201,7 @@ class Revenues extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recurring
|
// Recurring
|
||||||
if ($request->get('recurring_frequency') != 'no') {
|
$revenue->updateRecurring();
|
||||||
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
|
||||||
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
|
||||||
|
|
||||||
if ($revenue->has('recurring')->count()) {
|
|
||||||
$function = 'update';
|
|
||||||
} else {
|
|
||||||
$function = 'create';
|
|
||||||
}
|
|
||||||
|
|
||||||
$revenue->recurring()->$function([
|
|
||||||
'company_id' => session('company_id'),
|
|
||||||
'frequency' => $frequency,
|
|
||||||
'interval' => $interval,
|
|
||||||
'started_at' => $request['paid_at'],
|
|
||||||
'count' => (int) $request['recurring_count'],
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
$revenue->recurring()->delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.revenues', 1)]);
|
$message = trans('messages.success.updated', ['type' => trans_choice('general.revenues', 1)]);
|
||||||
|
|
||||||
|
@ -5,13 +5,14 @@ namespace App\Models\Expense;
|
|||||||
use App\Models\Model;
|
use App\Models\Model;
|
||||||
use App\Traits\Currencies;
|
use App\Traits\Currencies;
|
||||||
use App\Traits\DateTime;
|
use App\Traits\DateTime;
|
||||||
|
use App\Traits\Media;
|
||||||
|
use App\Traits\Recurring;
|
||||||
use Bkwld\Cloner\Cloneable;
|
use Bkwld\Cloner\Cloneable;
|
||||||
use Sofa\Eloquence\Eloquence;
|
use Sofa\Eloquence\Eloquence;
|
||||||
use App\Traits\Media;
|
|
||||||
|
|
||||||
class Bill extends Model
|
class Bill extends Model
|
||||||
{
|
{
|
||||||
use Cloneable, Currencies, DateTime, Eloquence, Media;
|
use Cloneable, Currencies, DateTime, Eloquence, Media, Recurring;
|
||||||
|
|
||||||
protected $table = 'bills';
|
protected $table = 'bills';
|
||||||
|
|
||||||
|
@ -6,13 +6,14 @@ use App\Models\Model;
|
|||||||
use App\Models\Setting\Category;
|
use App\Models\Setting\Category;
|
||||||
use App\Traits\Currencies;
|
use App\Traits\Currencies;
|
||||||
use App\Traits\DateTime;
|
use App\Traits\DateTime;
|
||||||
|
use App\Traits\Media;
|
||||||
|
use App\Traits\Recurring;
|
||||||
use Bkwld\Cloner\Cloneable;
|
use Bkwld\Cloner\Cloneable;
|
||||||
use Sofa\Eloquence\Eloquence;
|
use Sofa\Eloquence\Eloquence;
|
||||||
use App\Traits\Media;
|
|
||||||
|
|
||||||
class Payment extends Model
|
class Payment extends Model
|
||||||
{
|
{
|
||||||
use Cloneable, Currencies, DateTime, Eloquence, Media;
|
use Cloneable, Currencies, DateTime, Eloquence, Media, Recurring;
|
||||||
|
|
||||||
protected $table = 'payments';
|
protected $table = 'payments';
|
||||||
|
|
||||||
|
@ -6,13 +6,14 @@ use App\Models\Model;
|
|||||||
use App\Traits\Currencies;
|
use App\Traits\Currencies;
|
||||||
use App\Traits\DateTime;
|
use App\Traits\DateTime;
|
||||||
use App\Traits\Incomes;
|
use App\Traits\Incomes;
|
||||||
|
use App\Traits\Media;
|
||||||
|
use App\Traits\Recurring;
|
||||||
use Bkwld\Cloner\Cloneable;
|
use Bkwld\Cloner\Cloneable;
|
||||||
use Sofa\Eloquence\Eloquence;
|
use Sofa\Eloquence\Eloquence;
|
||||||
use App\Traits\Media;
|
|
||||||
|
|
||||||
class Invoice extends Model
|
class Invoice extends Model
|
||||||
{
|
{
|
||||||
use Cloneable, Currencies, DateTime, Eloquence, Incomes, Media;
|
use Cloneable, Currencies, DateTime, Eloquence, Incomes, Media, Recurring;
|
||||||
|
|
||||||
protected $table = 'invoices';
|
protected $table = 'invoices';
|
||||||
|
|
||||||
|
@ -6,13 +6,14 @@ use App\Models\Model;
|
|||||||
use App\Models\Setting\Category;
|
use App\Models\Setting\Category;
|
||||||
use App\Traits\Currencies;
|
use App\Traits\Currencies;
|
||||||
use App\Traits\DateTime;
|
use App\Traits\DateTime;
|
||||||
|
use App\Traits\Media;
|
||||||
|
use App\Traits\Recurring;
|
||||||
use Bkwld\Cloner\Cloneable;
|
use Bkwld\Cloner\Cloneable;
|
||||||
use Sofa\Eloquence\Eloquence;
|
use Sofa\Eloquence\Eloquence;
|
||||||
use App\Traits\Media;
|
|
||||||
|
|
||||||
class Revenue extends Model
|
class Revenue extends Model
|
||||||
{
|
{
|
||||||
use Cloneable, Currencies, DateTime, Eloquence, Media;
|
use Cloneable, Currencies, DateTime, Eloquence, Media, Recurring;
|
||||||
|
|
||||||
protected $table = 'revenues';
|
protected $table = 'revenues';
|
||||||
|
|
||||||
|
56
app/Traits/Recurring.php
Normal file
56
app/Traits/Recurring.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Traits;
|
||||||
|
|
||||||
|
trait Recurring
|
||||||
|
{
|
||||||
|
|
||||||
|
public function createRecurring()
|
||||||
|
{
|
||||||
|
$request = request();
|
||||||
|
|
||||||
|
if ($request->get('recurring_frequency') == 'no') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
||||||
|
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
||||||
|
$started_at = $request->get('paid_at') ?: ($request->get('invoiced_at') ?: $request->get('billed_at'));
|
||||||
|
|
||||||
|
$this->recurring()->create([
|
||||||
|
'company_id' => session('company_id'),
|
||||||
|
'frequency' => $frequency,
|
||||||
|
'interval' => $interval,
|
||||||
|
'started_at' => $started_at,
|
||||||
|
'count' => (int) $request['recurring_count'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateRecurring()
|
||||||
|
{
|
||||||
|
$request = request();
|
||||||
|
|
||||||
|
if ($request->get('recurring_frequency') == 'no') {
|
||||||
|
$this->recurring()->delete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
|
||||||
|
$interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval'];
|
||||||
|
$started_at = $request->get('paid_at') ?: ($request->get('invoiced_at') ?: $request->get('billed_at'));
|
||||||
|
|
||||||
|
if ($this->has('recurring')->count()) {
|
||||||
|
$function = 'update';
|
||||||
|
} else {
|
||||||
|
$function = 'create';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->recurring()->$function([
|
||||||
|
'company_id' => session('company_id'),
|
||||||
|
'frequency' => $frequency,
|
||||||
|
'interval' => $interval,
|
||||||
|
'started_at' => $started_at,
|
||||||
|
'count' => (int) $request['recurring_count'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,12 @@
|
|||||||
@php
|
@php
|
||||||
if (($page == 'create') || !$model->has('recurring')->count()) {
|
if (($page == 'create') || ($model->has('recurring')->count() > 0)) {
|
||||||
$frequency = 'no';
|
$frequency = 'no';
|
||||||
$interval = 1;
|
$interval = 1;
|
||||||
$custom_frequency = 'monthly';
|
$custom_frequency = 'monthly';
|
||||||
$count = 0;
|
$count = 0;
|
||||||
} else {
|
} else {
|
||||||
$r = $model->recurring;
|
$r = $model->recurring;
|
||||||
$frequency = $r->frequency;
|
$frequency = ($r->interval != 1) ? 'custom' : $r->frequency;
|
||||||
$interval = $r->interval;
|
$interval = $r->interval;
|
||||||
$custom_frequency = $r->frequency;
|
$custom_frequency = $r->frequency;
|
||||||
$count = $r->count;
|
$count = $r->count;
|
||||||
@ -40,4 +40,4 @@
|
|||||||
{!! Form::number('recurring_count', $count, ['class' => 'form-control']) !!}
|
{!! Form::number('recurring_count', $count, ['class' => 'form-control']) !!}
|
||||||
{!! $errors->first('recurring_count', '<p class="help-block">:message</p>') !!}
|
{!! $errors->first('recurring_count', '<p class="help-block">:message</p>') !!}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user