Triggered actions for Recurring Expenses

This commit is contained in:
David Bomba 2022-03-30 13:14:46 +11:00
parent ed9ac5c93d
commit 2d0c6fd0af
3 changed files with 78 additions and 1 deletions

View File

@ -276,7 +276,8 @@ class RecurringExpenseController extends BaseController
}
$recurring_expense = $this->recurring_expense_repo->save($request->all(), $recurring_expense);
$recurring_expense->service()->triggeredActions($request)->save();
$this->uploadLogo($request->file('company_logo'), $recurring_expense->company, $recurring_expense);
event(new RecurringExpenseWasUpdated($recurring_expense, $recurring_expense->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
@ -372,6 +373,7 @@ class RecurringExpenseController extends BaseController
public function store(StoreRecurringExpenseRequest $request)
{
$recurring_expense = $this->recurring_expense_repo->save($request->all(), RecurringExpenseFactory::create(auth()->user()->company()->id, auth()->user()->id));
$recurring_expense->service()->triggeredActions($request)->save();
event(new RecurringExpenseWasCreated($recurring_expense, $recurring_expense->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));

View File

@ -50,6 +50,10 @@ class TriggeredActions extends AbstractService
$this->quote = $this->quote->service()->convert()->save();
}
if ($this->request->has('approve') && $this->request->input('approve') == 'true' && in_array($this->quote->status_id, [Quote::STATUS_SENT, Quote::STATUS_DRAFT])) {
$this->quote = $this->quote->service()->convert()->save();
}
return $this->quote;
}

View File

@ -211,5 +211,76 @@ class RecurringExpenseApiTest extends TestCase
$this->assertEquals(RecurringInvoice::STATUS_PAUSED, $arr['data'][0]['status_id']);
}
public function testRecurringExpenseStartedWithTriggeredAction()
{
$data = [
'ids' => [$this->encodePrimaryKey($this->recurring_expense->id)],
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->put('/api/v1/recurring_expenses/'.$this->recurring_expense->hashed_id.'?start=true', []);
$arr = $response->json();
$this->assertEquals(RecurringInvoice::STATUS_ACTIVE, $arr['data']['status_id']);
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->put('/api/v1/recurring_expenses/'.$this->recurring_expense->hashed_id.'?stop=true', []);
$arr = $response->json();
$this->assertEquals(RecurringInvoice::STATUS_PAUSED, $arr['data']['status_id']);
}
public function testRecurringExpensePostWithStartAction()
{
$data = [
'amount' => 10,
'client_id' => $this->client->hashed_id,
'number' => '123321',
'frequency_id' => 5,
'remaining_cycles' =>5
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->post('/api/v1/recurring_expenses?start=true', $data);
$response->assertStatus(200);
$arr = $response->json();
$this->assertEquals(RecurringInvoice::STATUS_ACTIVE, $arr['data']['status_id']);
}
public function testRecurringExpensePostWithStopAction()
{
$data = [
'amount' => 10,
'client_id' => $this->client->hashed_id,
'number' => '1233x21',
'frequency_id' => 5,
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->post('/api/v1/recurring_expenses?stop=true', $data);
$response->assertStatus(200);
$arr = $response->json();
$this->assertEquals(RecurringInvoice::STATUS_PAUSED, $arr['data']['status_id']);
}
}