Skip to content

Commit

Permalink
form stuff done
Browse files Browse the repository at this point in the history
  • Loading branch information
denisdulici committed Apr 26, 2018
1 parent 1e4d4cf commit b5e937b
Show file tree
Hide file tree
Showing 23 changed files with 345 additions and 56 deletions.
36 changes: 36 additions & 0 deletions app/Http/Controllers/Expenses/Bills.php
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,20 @@ public function store(Request $request)
'description' => trans('messages.success.added', ['type' => $bill->bill_number]),
]);

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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
event(new BillCreated($bill));

Expand Down Expand Up @@ -444,6 +458,28 @@ public function update(Bill $bill, Request $request)
$bill->totals()->delete();
$this->addTotals($bill, $request, $taxes, $sub_total, $discount_total, $tax_total);

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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
event(new BillUpdated($bill));

Expand Down
36 changes: 36 additions & 0 deletions app/Http/Controllers/Expenses/Payments.php
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,20 @@ public function store(Request $request)
$payment->attachMedia($media, 'attachment');
}

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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)]);

flash($message)->success();
Expand Down Expand Up @@ -195,6 +209,28 @@ public function update(Payment $payment, Request $request)
$payment->attachMedia($media, 'attachment');
}

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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)]);

flash($message)->success();
Expand Down
36 changes: 36 additions & 0 deletions app/Http/Controllers/Incomes/Invoices.php
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,20 @@ public function store(Request $request)
// Update next invoice number
$this->increaseNextInvoiceNumber();

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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
event(new InvoiceCreated($invoice));

Expand Down Expand Up @@ -465,6 +479,28 @@ public function update(Invoice $invoice, Request $request)
$invoice->totals()->delete();
$this->addTotals($invoice, $request, $taxes, $sub_total, $discount_total, $tax_total);

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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
event(new InvoiceUpdated($invoice));

Expand Down
36 changes: 36 additions & 0 deletions app/Http/Controllers/Incomes/Revenues.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,20 @@ public function store(Request $request)
$revenue->attachMedia($media, 'attachment');
}

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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)]);

flash($message)->success();
Expand Down Expand Up @@ -197,6 +211,28 @@ public function update(Revenue $revenue, Request $request)
$revenue->attachMedia($media, 'attachment');
}

// Recurring
if ($request->get('recurring_frequency') != 'no') {
$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)]);

flash($message)->success();
Expand Down
36 changes: 36 additions & 0 deletions app/Http/ViewComposers/Recurring.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

namespace App\Http\ViewComposers;

use Illuminate\View\View;

class Recurring
{

/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$recurring_frequencies = [
'no' => trans('general.no'),
'daily' => trans('recurring.daily'),
'weekly' => trans('recurring.weekly'),
'monthly' => trans('recurring.monthly'),
'yearly' => trans('recurring.yearly'),
'custom' => trans('recurring.custom'),
];

$recurring_custom_frequencies = [
'daily' => trans('recurring.days'),
'weekly' => trans('recurring.weeks'),
'monthly' => trans('recurring.months'),
'yearly' => trans('recurring.years'),
];

$view->with(['recurring_frequencies' => $recurring_frequencies, 'recurring_custom_frequencies' => $recurring_custom_frequencies]);
}
}
10 changes: 10 additions & 0 deletions app/Models/Common/Recurring.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@
class Recurring extends Model
{

protected $table = 'recurrings';

/**
* Attributes that should be mass-assignable.
*
* @var array
*/
protected $fillable = ['company_id', 'recurrable_id', 'recurrable_type', 'frequency', 'interval', 'started_at', 'count'];


/**
* Get all of the owning recurrable models.
*/
Expand Down
33 changes: 19 additions & 14 deletions app/Models/Expense/Bill.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,46 +58,51 @@ class Bill extends Model
*
* @var array
*/
protected $cloneable_relations = ['items', 'totals'];
protected $cloneable_relations = ['items', 'recurring', 'totals'];

public function category()
{
return $this->belongsTo('App\Models\Setting\Category');
}

public function vendor()
{
return $this->belongsTo('App\Models\Expense\Vendor');
}

public function currency()
{
return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code');
}

public function status()
public function histories()
{
return $this->belongsTo('App\Models\Expense\BillStatus', 'bill_status_code', 'code');
return $this->hasMany('App\Models\Expense\BillHistory');
}

public function items()
{
return $this->hasMany('App\Models\Expense\BillItem');
}

public function totals()
public function payments()
{
return $this->hasMany('App\Models\Expense\BillTotal');
return $this->hasMany('App\Models\Expense\BillPayment');
}

public function payments()
public function recurring()
{
return $this->hasMany('App\Models\Expense\BillPayment');
return $this->morphOne('App\Models\Common\Recurring', 'recurrable');
}

public function histories()
public function status()
{
return $this->hasMany('App\Models\Expense\BillHistory');
return $this->belongsTo('App\Models\Expense\BillStatus', 'bill_status_code', 'code');
}

public function totals()
{
return $this->hasMany('App\Models\Expense\BillTotal');
}

public function vendor()
{
return $this->belongsTo('App\Models\Expense\Vendor');
}

public function scopeDue($query, $date)
Expand Down
24 changes: 18 additions & 6 deletions app/Models/Expense/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,31 +44,43 @@ class Payment extends Model
'description' ,
];

/**
* Clonable relationships.
*
* @var array
*/
protected $cloneable_relations = ['recurring'];

public function account()
{
return $this->belongsTo('App\Models\Banking\Account');
}

public function currency()
public function category()
{
return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code');
return $this->belongsTo('App\Models\Setting\Category');
}

public function category()
public function currency()
{
return $this->belongsTo('App\Models\Setting\Category');
return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code');
}

public function vendor()
public function recurring()
{
return $this->belongsTo('App\Models\Expense\Vendor');
return $this->morphOne('App\Models\Common\Recurring', 'recurrable');
}

public function transfers()
{
return $this->hasMany('App\Models\Banking\Transfer');
}

public function vendor()
{
return $this->belongsTo('App\Models\Expense\Vendor');
}

/**
* Get only transfers.
*
Expand Down
6 changes: 3 additions & 3 deletions app/Models/Income/Invoice.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class Invoice extends Model
*
* @var array
*/
protected $cloneable_relations = ['items', 'totals'];
protected $cloneable_relations = ['items', 'recurring', 'totals'];

public function category()
{
Expand Down Expand Up @@ -91,9 +91,9 @@ public function payments()
return $this->hasMany('App\Models\Income\InvoicePayment');
}

public function recurrings()
public function recurring()
{
return $this->morphMany('App\Models\Common\Recurring', 'recurrable');
return $this->morphOne('App\Models\Common\Recurring', 'recurrable');
}

public function status()
Expand Down

0 comments on commit b5e937b

Please sign in to comment.