mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-08 12:12:48 +01:00
Payment Terms via API (#1808)
Added the ability to get payment_terms, payment_term and create a new payment_term via the API.
This commit is contained in:
parent
d76fa94d66
commit
9d1cb37835
@ -605,7 +605,6 @@ if (! defined('APP_NAME')) {
|
||||
'dateFormats' => 'App\Models\DateFormat',
|
||||
'datetimeFormats' => 'App\Models\DatetimeFormat',
|
||||
'languages' => 'App\Models\Language',
|
||||
'paymentTerms' => 'App\Models\PaymentTerm',
|
||||
'paymentTypes' => 'App\Models\PaymentType',
|
||||
'countries' => 'App\Models\Country',
|
||||
'invoiceDesigns' => 'App\Models\InvoiceDesign',
|
||||
|
160
app/Http/Controllers/PaymentTermApiController.php
Normal file
160
app/Http/Controllers/PaymentTermApiController.php
Normal file
@ -0,0 +1,160 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Requests\CreatePaymentTermAPIRequest;
|
||||
use App\Http\Requests\PaymentTermRequest;
|
||||
use App\Http\Requests\UpdatePaymentTermRequest;
|
||||
use App\Libraries\Utils;
|
||||
use App\Models\PaymentTerm;
|
||||
use App\Ninja\Repositories\PaymentTermRepository;
|
||||
use Illuminate\Support\Facades\Input;
|
||||
|
||||
class PaymentTermApiController extends BaseAPIController
|
||||
{
|
||||
/**
|
||||
* @var PaymentTermRepository
|
||||
*/
|
||||
protected $paymentTermRepo;
|
||||
protected $entityType = ENTITY_PAYMENT_TERM;
|
||||
|
||||
/**
|
||||
* PaymentTermApiController constructor.
|
||||
*
|
||||
* @param PaymentTermRepository $paymentTermRepo
|
||||
*/
|
||||
public function __construct(PaymentTermRepository $paymentTermRepo)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->paymentTermRepo = $paymentTermRepo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @SWG\Get(
|
||||
* path="/paymentTerms",
|
||||
* summary="List payment terms",
|
||||
* operationId="listPaymentTerms",
|
||||
* tags={"payment terms"},
|
||||
* @SWG\Response(
|
||||
* response=200,
|
||||
* description="A list of payment terms",
|
||||
* @SWG\Schema(type="array", @SWG\Items(ref="#/definitions/PaymentTerms"))
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response="default",
|
||||
* description="an ""unexpected"" error"
|
||||
* )
|
||||
* )
|
||||
*/
|
||||
|
||||
public function index()
|
||||
{
|
||||
|
||||
$paymentTerms = PaymentTerm::scope()
|
||||
->orWhere('account_id',0)
|
||||
->orderBy('num_days', 'asc');
|
||||
|
||||
return $this->listResponse($paymentTerms);
|
||||
}
|
||||
|
||||
/**
|
||||
* @SWG\Get(
|
||||
* path="/paymentTerms/{payment_term_id}",
|
||||
* summary="Retrieve a payment term",
|
||||
* operationId="getPaymentTermId",
|
||||
* tags={"payment term"},
|
||||
* @SWG\Parameter(
|
||||
* in="path",
|
||||
* name="payment_term_id",
|
||||
* type="integer",
|
||||
* required=true
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response=200,
|
||||
* description="A single payment term",
|
||||
* @SWG\Schema(type="object", @SWG\Items(ref="#/definitions/PaymentTerms"))
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response="default",
|
||||
* description="an ""unexpected"" error"
|
||||
* )
|
||||
* )
|
||||
*/
|
||||
|
||||
public function show(PaymentTermRequest $request)
|
||||
{
|
||||
return $this->itemResponse($request->entity());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @SWG\Post(
|
||||
* path="/paymentTerms",
|
||||
* summary="Create a payment Term",
|
||||
* operationId="createPaymentTerm",
|
||||
* tags={"payment term"},
|
||||
* @SWG\Parameter(
|
||||
* in="body",
|
||||
* name="payment term",
|
||||
* @SWG\Schema(ref="#/definitions/PaymentTerm")
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response=200,
|
||||
* description="New payment Term",
|
||||
* @SWG\Schema(type="object", @SWG\Items(ref="#/definitions/PaymentTerm"))
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response="default",
|
||||
* description="an ""unexpected"" error"
|
||||
* )
|
||||
* )
|
||||
*/
|
||||
public function store(CreatePaymentTermAPIRequest $request)
|
||||
{
|
||||
|
||||
$paymentTerm = PaymentTerm::createNew();
|
||||
|
||||
$paymentTerm->num_days = Utils::parseInt(Input::get('num_days'));
|
||||
$paymentTerm->name = 'Net ' . $paymentTerm->num_days;
|
||||
$paymentTerm->save();
|
||||
|
||||
return $this->itemResponse($paymentTerm);
|
||||
}
|
||||
|
||||
/**
|
||||
* @SWG\Delete(
|
||||
* path="/paymentTerm/{num_days}",
|
||||
* summary="Delete a payment term",
|
||||
* operationId="deletePaymentTerm",
|
||||
* tags={"payment term"},
|
||||
* @SWG\Parameter(
|
||||
* in="path",
|
||||
* name="num_days",
|
||||
* type="integer",
|
||||
* required=true
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response=200,
|
||||
* description="Deleted payment Term",
|
||||
* @SWG\Schema(type="object", @SWG\Items(ref="#/definitions/PaymentTerm"))
|
||||
* ),
|
||||
* @SWG\Response(
|
||||
* response="default",
|
||||
* description="an ""unexpected"" error"
|
||||
* )
|
||||
* )
|
||||
*/
|
||||
public function destroy($numDays)
|
||||
{
|
||||
|
||||
$paymentTerm = PaymentTerm::where('num_days', $numDays)->first();
|
||||
|
||||
if(!$paymentTerm || $paymentTerm->account_id == 0)
|
||||
return $this->errorResponse(['message'=>'Cannot delete a default or non existent Payment Term'], 400);
|
||||
|
||||
$this->paymentTermRepo->archive($paymentTerm);
|
||||
|
||||
return $this->itemResponse($paymentTerm);
|
||||
}
|
||||
}
|
36
app/Http/Requests/CreatePaymentTermAPIRequest.php
Normal file
36
app/Http/Requests/CreatePaymentTermAPIRequest.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Models\Invoice;
|
||||
|
||||
class CreatePaymentTermAPIRequest extends Request
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
public function authorize()
|
||||
{
|
||||
return $this->user()->can('create', ENTITY_PAYMENT_TERM);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
|
||||
public function rules()
|
||||
{
|
||||
|
||||
$rules = [
|
||||
'num_days' => 'required|numeric|unique:payment_terms',
|
||||
];
|
||||
|
||||
|
||||
return $rules;
|
||||
}
|
||||
}
|
8
app/Http/Requests/PaymentTermRequest.php
Normal file
8
app/Http/Requests/PaymentTermRequest.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
class PaymentTermRequest extends EntityRequest
|
||||
{
|
||||
protected $entityType = ENTITY_PAYMENT_TERM;
|
||||
}
|
17
app/Http/Requests/UpdatePaymentTermRequest.php
Normal file
17
app/Http/Requests/UpdatePaymentTermRequest.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
class UpdatePaymentTermRequest extends EntityRequest
|
||||
{
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
36
app/Ninja/Transformers/PaymentTermTransformer.php
Normal file
36
app/Ninja/Transformers/PaymentTermTransformer.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Ninja\Transformers;
|
||||
|
||||
use App\Models\PaymentTerm;
|
||||
|
||||
/**
|
||||
* @SWG\Definition(definition="PaymentTerm", required={"payment_term_id"}, @SWG\Xml(name="PaymentTerm"))
|
||||
*/
|
||||
class PaymentTermTransformer extends EntityTransformer
|
||||
{
|
||||
/**
|
||||
* @SWG\Property(property="id", type="integer", example=1, readOnly=true)
|
||||
* @SWG\Property(property="num_days", type="number", format="integer", example=10, readOnly=true)
|
||||
* @SWG\Property(property="name", type="string", example="Net 7")
|
||||
*/
|
||||
|
||||
public function __construct($account = null, $serializer = null, $paymentTerm = null)
|
||||
{
|
||||
parent::__construct($account, $serializer);
|
||||
|
||||
$this->paymentTerm = $paymentTerm;
|
||||
}
|
||||
|
||||
|
||||
public function transform(PaymentTerm $paymentTerm)
|
||||
{
|
||||
return array_merge($this->getDefaults($paymentTerm), [
|
||||
'num_days' => (int) $paymentTerm->num_days,
|
||||
'name' => trans('texts.payment_terms_net') . ' ' . $paymentTerm->getNumDays(),
|
||||
'updated_at' => $this->getTimestamp($paymentTerm->updated_at),
|
||||
'archived_at' => $this->getTimestamp($paymentTerm->deleted_at),
|
||||
'is_default' => $paymentTerm->account_id == 0 ? 1 : 0,
|
||||
]);
|
||||
}
|
||||
}
|
@ -32,3 +32,4 @@ Route::resource('documents', 'DocumentAPIController');
|
||||
Route::resource('vendors', 'VendorApiController');
|
||||
Route::resource('expense_categories', 'ExpenseCategoryApiController');
|
||||
Route::post('ios_subscription_status', 'AccountApiController@iosSubscriptionStatus');
|
||||
Route::resource('payment_terms', 'PaymentTermApiController');
|
||||
|
Loading…
Reference in New Issue
Block a user