Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Naoray committed Dec 10, 2024
1 parent 8e9e133 commit be3dbe7
Show file tree
Hide file tree
Showing 5 changed files with 342 additions and 0 deletions.
123 changes: 123 additions & 0 deletions src/Endpoints/SalesInvoiceEndpoint.php
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

View workflow job for this annotation

GitHub Actions / PHP - 7.3

PHPDoc tag @param references unknown parameter: $filters

Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php

View workflow job for this annotation

GitHub Actions / PHP - 7.4

PHPDoc tag @param references unknown parameter: $filters

Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php

View workflow job for this annotation

GitHub Actions / PHP - 8

PHPDoc tag @param references unknown parameter: $filters

Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php

View workflow job for this annotation

GitHub Actions / PHP - 8.1

PHPDoc tag @param references unknown parameter: $filters

Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php

View workflow job for this annotation

GitHub Actions / PHP - 8.2

PHPDoc tag @param references unknown parameter: $filters

Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php

View workflow job for this annotation

GitHub Actions / PHP - 8.3

PHPDoc tag @param references unknown parameter: $filters

Check failure on line 49 in src/Endpoints/SalesInvoiceEndpoint.php

View workflow job for this annotation

GitHub Actions / PHP - 8.4

PHPDoc tag @param references unknown parameter: $filters
{
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);
}
}
9 changes: 9 additions & 0 deletions src/MollieApiClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
use Mollie\Api\Endpoints\ProfileEndpoint;
use Mollie\Api\Endpoints\ProfileMethodEndpoint;
use Mollie\Api\Endpoints\RefundEndpoint;
use Mollie\Api\Endpoints\SalesInvoiceEndpoint;
use Mollie\Api\Endpoints\SessionEndpoint;
use Mollie\Api\Endpoints\SettlementCaptureEndpoint;
use Mollie\Api\Endpoints\SettlementChargebackEndpoint;
Expand Down Expand Up @@ -122,6 +123,13 @@ class MollieApiClient
*/
public $customerPayments;

/**
* RESTful Sales Invoice resource.
*
* @var SalesInvoiceEndpoint
*/
public $salesInvoices;

/**
* RESTful Settlement resource.
*
Expand Down Expand Up @@ -444,6 +452,7 @@ public function initializeEndpoints()
$this->profileMethods = new ProfileMethodEndpoint($this);
$this->profiles = new ProfileEndpoint($this);
$this->refunds = new RefundEndpoint($this);
$this->salesInvoices = new SalesInvoiceEndpoint($this);
$this->settlementCaptures = new SettlementCaptureEndpoint($this);
$this->settlementChargebacks = new SettlementChargebackEndpoint($this);
$this->settlementPayments = new SettlementPaymentEndpoint($this);
Expand Down
167 changes: 167 additions & 0 deletions src/Resources/SalesInvoice.php
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;
}
}
22 changes: 22 additions & 0 deletions src/Resources/SalesInvoiceCollection.php
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);
}
}
21 changes: 21 additions & 0 deletions src/Types/SalesInvoiceStatus.php
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';
}

0 comments on commit be3dbe7

Please sign in to comment.