Working on recurring schedules

This commit is contained in:
David Bomba 2020-09-24 21:03:59 +10:00
parent b906e1e92f
commit 4cf56d5138
5 changed files with 35 additions and 26 deletions

View File

@ -82,6 +82,6 @@ class SelfUpdateController extends BaseController
Artisan::call('ninja:post-update'); Artisan::call('ninja:post-update');
return response()->json(['message'=>$res], 200); return response()->json(['message' => ''], 200);
} }
} }

View File

@ -17,6 +17,7 @@ use App\Helpers\Email\InvoiceEmail;
use App\Jobs\Invoice\EmailInvoice; use App\Jobs\Invoice\EmailInvoice;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use App\Utils\Ninja;
use App\Utils\Traits\GeneratesCounter; use App\Utils\Traits\GeneratesCounter;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;

View File

@ -202,27 +202,27 @@ class RecurringInvoice extends BaseModel
{ {
switch ($this->frequency_id) { switch ($this->frequency_id) {
case self::FREQUENCY_WEEKLY: case self::FREQUENCY_WEEKLY:
return Carbon::parse($this->next_send_date->addWeek()); return Carbon::parse($this->next_send_date)->addWeek();
case self::FREQUENCY_TWO_WEEKS: case self::FREQUENCY_TWO_WEEKS:
return Carbon::parse($this->next_send_date->addWeeks(2)); return Carbon::parse($this->next_send_date)->addWeeks(2);
case self::FREQUENCY_FOUR_WEEKS: case self::FREQUENCY_FOUR_WEEKS:
return Carbon::parse($this->next_send_date->addWeeks(4)); return Carbon::parse($this->next_send_date)->addWeeks(4);
case self::FREQUENCY_MONTHLY: case self::FREQUENCY_MONTHLY:
return Carbon::parse($this->next_send_date->addMonthNoOverflow()); return Carbon::parse($this->next_send_date)->addMonthNoOverflow();
case self::FREQUENCY_TWO_MONTHS: case self::FREQUENCY_TWO_MONTHS:
return Carbon::parse($this->next_send_date->addMonthsNoOverflow(2)); return Carbon::parse($this->next_send_date)->addMonthsNoOverflow(2);
case self::FREQUENCY_THREE_MONTHS: case self::FREQUENCY_THREE_MONTHS:
return Carbon::parse($this->next_send_date->addMonthsNoOverflow(3)); return Carbon::parse($this->next_send_date)->addMonthsNoOverflow(3);
case self::FREQUENCY_FOUR_MONTHS: case self::FREQUENCY_FOUR_MONTHS:
return Carbon::parse($this->next_send_date->addMonthsNoOverflow(4)); return Carbon::parse($this->next_send_date)->addMonthsNoOverflow(4);
case self::FREQUENCY_SIX_MONTHS: case self::FREQUENCY_SIX_MONTHS:
return Carbon::parse($this->next_send_date->addMonthsNoOverflow(6)); return Carbon::parse($this->next_send_date)->addMonthsNoOverflow(6);
case self::FREQUENCY_ANNUALLY: case self::FREQUENCY_ANNUALLY:
return Carbon::parse($this->next_send_date->addYear()); return Carbon::parse($this->next_send_date)->addYear();
case self::FREQUENCY_TWO_YEARS: case self::FREQUENCY_TWO_YEARS:
return Carbon::parse($this->next_send_date->addYears(2)); return Carbon::parse($this->next_send_date)->addYears(2);
case self::FREQUENCY_THREE_YEARS: case self::FREQUENCY_THREE_YEARS:
return Carbon::parse($this->next_send_date->addYears(3)); return Carbon::parse($this->next_send_date)->addYears(3);
default: default:
return null; return null;
} }
@ -233,27 +233,27 @@ class RecurringInvoice extends BaseModel
switch ($this->frequency_id) { switch ($this->frequency_id) {
case self::FREQUENCY_WEEKLY: case self::FREQUENCY_WEEKLY:
return Carbon::parse($date->addWeek()); return Carbon::parse($date)->addWeek();
case self::FREQUENCY_TWO_WEEKS: case self::FREQUENCY_TWO_WEEKS:
return Carbon::parse($date->addWeeks(2)); return Carbon::parse($date)->addWeeks(2);
case self::FREQUENCY_FOUR_WEEKS: case self::FREQUENCY_FOUR_WEEKS:
return Carbon::parse($date->addWeeks(4)); return Carbon::parse($date)->addWeeks(4);
case self::FREQUENCY_MONTHLY: case self::FREQUENCY_MONTHLY:
return Carbon::parse($date->addMonthNoOverflow()); return Carbon::parse($date)->addMonthNoOverflow();
case self::FREQUENCY_TWO_MONTHS: case self::FREQUENCY_TWO_MONTHS:
return Carbon::parse($date->addMonthsNoOverflow(2)); return Carbon::parse($date)->addMonthsNoOverflow(2);
case self::FREQUENCY_THREE_MONTHS: case self::FREQUENCY_THREE_MONTHS:
return Carbon::parse($date->addMonthsNoOverflow(3)); return Carbon::parse($date)->addMonthsNoOverflow(3);
case self::FREQUENCY_FOUR_MONTHS: case self::FREQUENCY_FOUR_MONTHS:
return Carbon::parse($date->addMonthsNoOverflow(4)); return Carbon::parse($date)->addMonthsNoOverflow(4);
case self::FREQUENCY_SIX_MONTHS: case self::FREQUENCY_SIX_MONTHS:
return Carbon::parse($date->addMonthsNoOverflow(6)); return Carbon::parse($date)->addMonthsNoOverflow(6);
case self::FREQUENCY_ANNUALLY: case self::FREQUENCY_ANNUALLY:
return Carbon::parse($date->addYear()); return Carbon::parse($date)->addYear();
case self::FREQUENCY_TWO_YEARS: case self::FREQUENCY_TWO_YEARS:
return Carbon::parse($date->addYears(2)); return Carbon::parse($date)->addYears(2);
case self::FREQUENCY_THREE_YEARS: case self::FREQUENCY_THREE_YEARS:
return Carbon::parse($date->addYears(3)); return Carbon::parse($date)->addYears(3);
default: default:
return null; return null;
} }
@ -381,9 +381,15 @@ class RecurringInvoice extends BaseModel
if($this->remaining_cycles == -1) if($this->remaining_cycles == -1)
$iterations = 10; $iterations = 10;
$next_send_date = Carbon::parse($this->next_send_date)->copy();
$data = []; $data = [];
$next_send_date = Carbon::parse($this->next_send_date)->copy(); // $data[] = [
// 'next_send_date' => $next_send_date->format('Y-m-d'),
// 'due_date' => $next_due_date->format('Y-m-d'),
// ];
for($x=0; $x<$iterations; $x++) for($x=0; $x<$iterations; $x++)
{ {
@ -398,7 +404,7 @@ class RecurringInvoice extends BaseModel
'due_date' => $next_due_date->format('Y-m-d'), 'due_date' => $next_due_date->format('Y-m-d'),
]; ];
$next_send_date = $this->calculateDueDate($next_send_date); $next_send_date = $this->nextDateByFrequency($next_send_date->format('Y-m-d'));
} }

View File

@ -72,6 +72,7 @@ class RefundPayment
{ {
if ($this->refund_data['gateway_refund'] !== false && $this->total_refund > 0) { if ($this->refund_data['gateway_refund'] !== false && $this->total_refund > 0) {
if ($this->payment->company_gateway) { if ($this->payment->company_gateway) {
$response = $gateway->driver($this->payment->client)->refund($this->payment, $this->total_refund); $response = $gateway->driver($this->payment->client)->refund($this->payment, $this->total_refund);
if ($response['success']) { if ($response['success']) {

View File

@ -12,6 +12,7 @@
namespace App\Services\Recurring; namespace App\Services\Recurring;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use Illuminate\Support\Carbon;
class RecurringService class RecurringService
{ {
@ -42,7 +43,7 @@ class RecurringService
if(Carbon::parse($this->recurring_entity->next_send_date)->lt(now())) if(Carbon::parse($this->recurring_entity->next_send_date)->lt(now()))
return $this; return $this;
$this->status_id = RecurringInvoice::STATUS_ACTIVE; $this->recurring_entity->status_id = RecurringInvoice::STATUS_ACTIVE;
return $this; return $this;