-
Notifications
You must be signed in to change notification settings - Fork 192
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
<?php | ||
|
||
namespace Mollie\Api\Endpoints; | ||
|
||
use Mollie\Api\Exceptions\ApiException; | ||
use Mollie\Api\Resources\LazyCollection; | ||
use Mollie\Api\Resources\SalesInvoice; | ||
use Mollie\Api\Resources\SalesInvoiceCollection; | ||
|
||
class SalesInvoiceEndpoint extends CollectionEndpointAbstract | ||
{ | ||
protected $resourcePath = "sales-invoices"; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public const RESOURCE_ID_PREFIX = 'invoice_'; | ||
|
||
/** | ||
* @return SalesInvoice | ||
*/ | ||
protected function getResourceObject(): SalesInvoice | ||
{ | ||
return new SalesInvoice($this->client); | ||
} | ||
|
||
/** | ||
* Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. | ||
* | ||
* @param int $count | ||
* @param \stdClass $_links | ||
* | ||
* @return SalesInvoiceCollection | ||
*/ | ||
protected function getResourceCollectionObject($count, $_links): SalesInvoiceCollection | ||
{ | ||
return new SalesInvoiceCollection($this->client, $count, $_links); | ||
} | ||
|
||
/** | ||
* Creates a payment in Mollie. | ||
* | ||
* @param array $data An array containing details on the payment. | ||
* @param array $filters | ||
* | ||
* @return SalesInvoice | ||
* @throws ApiException | ||
*/ | ||
public function create(array $data = []): SalesInvoice | ||
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 7.3
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 7.4
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 8
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 8.1
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 8.2
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 8.3
Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php GitHub Actions / PHP - 8.4
|
||
{ | ||
return $this->rest_create($data, []); | ||
} | ||
|
||
/** | ||
* Update the given Payment. | ||
* | ||
* Will throw a ApiException if the payment id is invalid or the resource cannot be found. | ||
* | ||
* @param string $salesInvoiceId | ||
* | ||
* @param array $data | ||
* @return SalesInvoice | ||
* @throws ApiException | ||
*/ | ||
public function update($salesInvoiceId, array $data = []): SalesInvoice | ||
{ | ||
if (empty($salesInvoiceId) || strpos($salesInvoiceId, self::RESOURCE_ID_PREFIX) !== 0) { | ||
throw new ApiException("Invalid sales invoice ID: '{$salesInvoiceId}'. A sales invoice ID should start with '" . self::RESOURCE_ID_PREFIX . "'."); | ||
} | ||
|
||
return parent::rest_update($salesInvoiceId, $data); | ||
} | ||
|
||
/** | ||
* @param string $salesInvoiceId | ||
* @param array $parameters | ||
* @return SalesInvoice | ||
* @throws ApiException | ||
*/ | ||
public function get($salesInvoiceId, array $parameters = []): SalesInvoice | ||
{ | ||
if (empty($salesInvoiceId) || strpos($salesInvoiceId, self::RESOURCE_ID_PREFIX) !== 0) { | ||
throw new ApiException("Invalid sales invoice ID: '{$salesInvoiceId}'. A sales invoice ID should start with '" . self::RESOURCE_ID_PREFIX . "'."); | ||
} | ||
|
||
return parent::rest_read($salesInvoiceId, $parameters); | ||
} | ||
|
||
/** | ||
* @param string $salesInvoiceId | ||
* | ||
* @param array $data | ||
* @throws ApiException | ||
*/ | ||
public function delete($salesInvoiceId, array $data = []): void | ||
{ | ||
$this->rest_delete($salesInvoiceId, $data); | ||
} | ||
|
||
/** | ||
* @param string $from The first payment ID you want to include in your list. | ||
* @param int $limit | ||
* | ||
* @return SalesInvoiceCollection | ||
* @throws ApiException | ||
*/ | ||
public function page($from = null, $limit = null) | ||
{ | ||
return $this->rest_list($from, $limit, []); | ||
} | ||
|
||
/** | ||
* @param string $from The first resource ID you want to include in your list. | ||
* @param int $limit | ||
* @param bool $iterateBackwards Set to true for reverse order iteration (default is false). | ||
* | ||
* @return LazyCollection | ||
*/ | ||
public function iterator(?string $from = null, ?int $limit = null, bool $iterateBackwards = false): LazyCollection | ||
{ | ||
return $this->rest_iterator($from, $limit, [], $iterateBackwards); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
<?php | ||
|
||
namespace Mollie\Api\Resources; | ||
|
||
use Mollie\Api\Types\SalesInvoiceStatus; | ||
|
||
class SalesInvoice extends BaseResource | ||
{ | ||
/** | ||
* @var string | ||
*/ | ||
public $resource; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $id; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
public $profileId; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
public $invoiceNumber; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $currency; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $status; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $vatScheme; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $vatMode; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
public $memo; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $paymentTerm; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $paymentDetails; | ||
/** | ||
* @var object | ||
*/ | ||
public $emailDetails; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $recipientIdentifier; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $recipient; | ||
|
||
/** | ||
* @var array | ||
*/ | ||
public $lines; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $webhookUrl; | ||
|
||
/** | ||
* @var object|null | ||
*/ | ||
public $discount; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $amountDue; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $subtotalAmount; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $totalAmount; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $totalVatAmount; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $discountedSubtotalAmount; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
public $createdAt; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
public $issuedAt; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
public $dueAt; | ||
|
||
/** | ||
* @var object | ||
*/ | ||
public $_links; | ||
|
||
/** | ||
* Returns whether the sales invoice is in draft status. | ||
* | ||
* @return bool | ||
*/ | ||
public function isDraft() | ||
{ | ||
return $this->status === SalesInvoiceStatus::DRAFT; | ||
} | ||
|
||
/** | ||
* Returns whether the sales invoice is issued. | ||
* | ||
* @return bool | ||
*/ | ||
public function isIssued() | ||
{ | ||
return $this->status === SalesInvoiceStatus::ISSUED; | ||
} | ||
|
||
/** | ||
* Returns whether the sales invoice is paid. | ||
* | ||
* @return bool | ||
*/ | ||
public function isPaid() | ||
{ | ||
return $this->status === SalesInvoiceStatus::PAID; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?php | ||
|
||
namespace Mollie\Api\Resources; | ||
|
||
class SalesInvoiceCollection extends CursorCollection | ||
{ | ||
/** | ||
* @return string | ||
*/ | ||
public function getCollectionResourceName() | ||
{ | ||
return "sales_invoices"; | ||
} | ||
|
||
/** | ||
* @return BaseResource | ||
*/ | ||
protected function createResourceObject() | ||
{ | ||
return new SalesInvoice($this->client); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
|
||
namespace Mollie\Api\Types; | ||
|
||
class SalesInvoiceStatus | ||
{ | ||
/** | ||
* The sales invoice is in draft status and has not been sent or paid. | ||
*/ | ||
const DRAFT = 'draft'; | ||
|
||
/** | ||
* The sales invoice has been issued to the customer but has not been paid yet. | ||
*/ | ||
const ISSUED = 'issued'; | ||
|
||
/** | ||
* The sales invoice has been fully paid. | ||
*/ | ||
const PAID = 'paid'; | ||
} |