diff --git a/lib/Client.php b/lib/Client.php index da77f49..2ea3c02 100644 --- a/lib/Client.php +++ b/lib/Client.php @@ -2,16 +2,27 @@ namespace CloudLoyalty\Api; +use CloudLoyalty\Api\Generated\Model\ActivateGiftCardRequest; +use CloudLoyalty\Api\Generated\Model\ActivateGiftCardResponse; use CloudLoyalty\Api\Generated\Model\AdjustBalanceRequest; use CloudLoyalty\Api\Generated\Model\AdjustBalanceResponse; use CloudLoyalty\Api\Generated\Model\ApplyReturnRequest; use CloudLoyalty\Api\Generated\Model\ApplyReturnResponse; use CloudLoyalty\Api\Generated\Model\CalculateProductsRequest; use CloudLoyalty\Api\Generated\Model\CalculateProductsResult; +use CloudLoyalty\Api\Generated\Model\DiscardGiftCardRequest; +use CloudLoyalty\Api\Generated\Model\GenerateGiftCardRequest; +use CloudLoyalty\Api\Generated\Model\GenerateGiftCardResponse; +use CloudLoyalty\Api\Generated\Model\GetBonusHistoryRequest; +use CloudLoyalty\Api\Generated\Model\GetBonusHistoryResponse; +use CloudLoyalty\Api\Generated\Model\GetGiftCardResponse; use CloudLoyalty\Api\Generated\Model\GetHistoryRequest; use CloudLoyalty\Api\Generated\Model\GetHistoryResponse; +use CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryRequest; +use CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryResponse; use CloudLoyalty\Api\Generated\Model\GetSettingsRequest; use CloudLoyalty\Api\Generated\Model\GetSettingsResponse; +use CloudLoyalty\Api\Generated\Model\GiftCardQuery; use CloudLoyalty\Api\Generated\Model\IssuePromocodeRequest; use CloudLoyalty\Api\Generated\Model\IssuePromocodeResponse; use CloudLoyalty\Api\Generated\Model\NewClientRequest; @@ -54,7 +65,8 @@ class Client public static $arrayElementsHint = [ 'CloudLoyalty\Api\Generated\Model\CalculationResult' => [ - 'rows' => 'CloudLoyalty\Api\Generated\Model\CalculationResultRow' + 'rows' => 'CloudLoyalty\Api\Generated\Model\CalculationResultRow', + 'giftCards' => 'CloudLoyalty\Api\Generated\Model\CalculationResultGiftCard' ], 'CloudLoyalty\Api\Generated\Model\CalculationResultRow' => [ 'offers' => 'CloudLoyalty\Api\Generated\Model\CalculationResultRowOffersItem' @@ -74,6 +86,16 @@ class Client 'CloudLoyalty\Api\Generated\Model\CalculateProductsResultItem' => [ 'offers' => 'CloudLoyalty\Api\Generated\Model\AppliedOffer' ], + 'CloudLoyalty\Api\Generated\Model\GetBonusHistoryResponse' => [ + 'history' => 'CloudLoyalty\Api\Generated\Model\BonusHistoryEntry' + ], + 'CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryResponse' => [ + 'history' => 'CloudLoyalty\Api\Generated\Model\PurchaseHistoryPurchase' + ], + 'CloudLoyalty\Api\Generated\Model\PurchaseHistoryPurchase' => [ + 'giftCards' => 'CloudLoyalty\Api\Generated\Model\PurchaseGiftCard', + 'rows' => 'CloudLoyalty\Api\Generated\Model\PurchaseRow' + ], // @todo: breaking backward compatibility //'CloudLoyalty\Api\Generated\Model\GetHistoryResponse' => [ // 'history' => 'CloudLoyalty\Api\Generated\Model\HistoryEntry' @@ -284,6 +306,8 @@ public function sendConfirmationCode(SendConfirmationCodeRequest $request) } /** + * @deprecated in favour of getBonusHistory() + * @see getBonusHistory() * @param GetHistoryRequest $request * @return GetHistoryResponse * @throws ProcessingException @@ -294,6 +318,28 @@ public function getHistory(GetHistoryRequest $request) return $this->call('get-history', $request, 'CloudLoyalty\Api\Generated\Model\GetHistoryResponse'); } + /** + * @param GetBonusHistoryRequest $request + * @return GetBonusHistoryResponse + * @throws ProcessingException + * @throws TransportException + */ + public function getBonusHistory(GetBonusHistoryRequest $request) + { + return $this->call('get-bonus-history', $request, 'CloudLoyalty\Api\Generated\Model\GetBonusHistoryResponse'); + } + + /** + * @param GetPurchaseHistoryRequest $request + * @return GetPurchaseHistoryResponse + * @throws ProcessingException + * @throws TransportException + */ + public function getPurchaseHistory(GetPurchaseHistoryRequest $request) + { + return $this->call('get-purchase-history', $request, 'CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryResponse'); + } + /** * @param AdjustBalanceRequest $request * @return AdjustBalanceResponse @@ -426,6 +472,50 @@ public function calculateProducts(CalculateProductsRequest $request) return $this->call('calculate-products', $request, 'CloudLoyalty\Api\Generated\Model\CalculateProductsResult'); } + /** + * @param GenerateGiftCardRequest $request + * @return GenerateGiftCardResponse + * @throws ProcessingException + * @throws TransportException + */ + public function generateGiftCard(GenerateGiftCardRequest $request) + { + return $this->call('generate-gift-card', $request, 'CloudLoyalty\Api\Generated\Model\GenerateGiftCardResponse'); + } + + /** + * @param GiftCardQuery $request + * @return GetGiftCardResponse + * @throws ProcessingException + * @throws TransportException + */ + public function getGiftCard(GiftCardQuery $request) + { + return $this->call('get-gift-card', $request, 'CloudLoyalty\Api\Generated\Model\GetGiftCardResponse'); + } + + /** + * @param ActivateGiftCardRequest $request + * @return ActivateGiftCardResponse + * @throws ProcessingException + * @throws TransportException + */ + public function activateGiftCard(ActivateGiftCardRequest $request) + { + return $this->call('activate-gift-card', $request, 'CloudLoyalty\Api\Generated\Model\ActivateGiftCardResponse'); + } + + /** + * @param DiscardGiftCardRequest $request + * @return \stdClass + * @throws ProcessingException + * @throws TransportException + */ + public function discardGiftCard(DiscardGiftCardRequest $request) + { + return $this->call('discard-gift-card', $request, 'stdClass'); + } + /** * @param string $method * @param mixed $request diff --git a/lib/Generated/Model/BonusHistoryEntry.php b/lib/Generated/Model/BonusHistoryEntry.php new file mode 100644 index 0000000..1597472 --- /dev/null +++ b/lib/Generated/Model/BonusHistoryEntry.php @@ -0,0 +1,492 @@ +at; + } + + /** + * Дата произошедшего события + * + * @param \DateTime $at + * + * @return self + */ + public function setAt(\DateTime $at) + { + $this->at = $at; + return $this; + } + + /** + * Количество бонусов, на которое изменилось состояние счета. + * + * Для операций прихода значение положительное. Для расхода — отрицательное. + * + * + * @return float + */ + public function getAmount() + { + return $this->amount; + } + + /** + * Количество бонусов, на которое изменилось состояние счета. + * + * Для операций прихода значение положительное. Для расхода — отрицательное. + * + * + * @param float $amount + * + * @return self + */ + public function setAmount($amount) + { + $this->amount = $amount; + return $this; + } + + /** + * Вид произведенной операции. + * + * Одно из следующих значений: + * - OPERATION_APPLIED — списание на оплату покупки (расход) + * - OPERATION_COLLECTED — начисление за покупку (приход) + * - OPERATION_EXPIRED — сгорание бонусов по истечении срока (расход) + * - OPERATION_REFUNDED — отмена списания бонусов при возврате товара (приход) + * - OPERATION_CANCELLED — отмена начисленных бонусов при возврате товара (расход) + * - OPERATION_RECEIVED — начисление поощрительных бонусов (приход) + * - OPERATION_RECALLED — отзыв бонусов (расход) + * - OPERATION_APPLY_REVERTED — откат списанных бонусов при откате транзакции продажи (приход) + * - OPERATION_COLLECT_REVERTED — откат начисленных бонусов при откате транзакции продажи (расход) + * - OPERATION_COLLECTED_FRIEND — начисление за покупку друга (приход) + * + * Список операций в будущем может быть расширен. + * + * + * @return string + */ + public function getOperation() + { + return $this->operation; + } + + /** + * Вид произведенной операции. + * + * Одно из следующих значений: + * - OPERATION_APPLIED — списание на оплату покупки (расход) + * - OPERATION_COLLECTED — начисление за покупку (приход) + * - OPERATION_EXPIRED — сгорание бонусов по истечении срока (расход) + * - OPERATION_REFUNDED — отмена списания бонусов при возврате товара (приход) + * - OPERATION_CANCELLED — отмена начисленных бонусов при возврате товара (расход) + * - OPERATION_RECEIVED — начисление поощрительных бонусов (приход) + * - OPERATION_RECALLED — отзыв бонусов (расход) + * - OPERATION_APPLY_REVERTED — откат списанных бонусов при откате транзакции продажи (приход) + * - OPERATION_COLLECT_REVERTED — откат начисленных бонусов при откате транзакции продажи (расход) + * - OPERATION_COLLECTED_FRIEND — начисление за покупку друга (приход) + * + * Список операций в будущем может быть расширен. + * + * + * @param string $operation + * + * @return self + */ + public function setOperation($operation) + { + $this->operation = $operation; + return $this; + } + + /** + * Описание операции. + * + * Одно из следующих значений: + * - Оплата покупки + * - Начисление за покупку + * - Списание по истечении срока + * - Отмена списания + * - Отмена начисления + * - Начисление по акции + * - Отмена + * + * Список операций в будущем может быть расширен. + * + * + * @return string + */ + public function getOperationName() + { + return $this->operationName; + } + + /** + * Описание операции. + * + * Одно из следующих значений: + * - Оплата покупки + * - Начисление за покупку + * - Списание по истечении срока + * - Отмена списания + * - Отмена начисления + * - Начисление по акции + * - Отмена + * + * Список операций в будущем может быть расширен. + * + * + * @param string $operationName + * + * @return self + */ + public function setOperationName($operationName) + { + $this->operationName = $operationName; + return $this; + } + + /** + * + * + * @return HistoryEntryPurchase + */ + public function getOPERATION_APPLIED() + { + return $this->OPERATION_APPLIED; + } + + /** + * + * + * @param HistoryEntryPurchase $OPERATION_APPLIED + * + * @return self + */ + public function setOPERATION_APPLIED(HistoryEntryPurchase $OPERATION_APPLIED) + { + $this->OPERATION_APPLIED = $OPERATION_APPLIED; + return $this; + } + + /** + * + * + * @return HistoryEntryPurchase + */ + public function getOPERATION_COLLECTED() + { + return $this->OPERATION_COLLECTED; + } + + /** + * + * + * @param HistoryEntryPurchase $OPERATION_COLLECTED + * + * @return self + */ + public function setOPERATION_COLLECTED(HistoryEntryPurchase $OPERATION_COLLECTED) + { + $this->OPERATION_COLLECTED = $OPERATION_COLLECTED; + return $this; + } + + /** + * + * + * @return mixed + */ + public function getOPERATION_EXPIRED() + { + return $this->OPERATION_EXPIRED; + } + + /** + * + * + * @param mixed $OPERATION_EXPIRED + * + * @return self + */ + public function setOPERATION_EXPIRED($OPERATION_EXPIRED) + { + $this->OPERATION_EXPIRED = $OPERATION_EXPIRED; + return $this; + } + + /** + * + * + * @return HistoryEntryReturn + */ + public function getOPERATION_REFUNDED() + { + return $this->OPERATION_REFUNDED; + } + + /** + * + * + * @param HistoryEntryReturn $OPERATION_REFUNDED + * + * @return self + */ + public function setOPERATION_REFUNDED(HistoryEntryReturn $OPERATION_REFUNDED) + { + $this->OPERATION_REFUNDED = $OPERATION_REFUNDED; + return $this; + } + + /** + * + * + * @return HistoryEntryReturn + */ + public function getOPERATION_CANCELLED() + { + return $this->OPERATION_CANCELLED; + } + + /** + * + * + * @param HistoryEntryReturn $OPERATION_CANCELLED + * + * @return self + */ + public function setOPERATION_CANCELLED(HistoryEntryReturn $OPERATION_CANCELLED) + { + $this->OPERATION_CANCELLED = $OPERATION_CANCELLED; + return $this; + } + + /** + * + * + * @return BonusHistoryEntryOPERATIONRECEIVED + */ + public function getOPERATION_RECEIVED() + { + return $this->OPERATION_RECEIVED; + } + + /** + * + * + * @param BonusHistoryEntryOPERATIONRECEIVED $OPERATION_RECEIVED + * + * @return self + */ + public function setOPERATION_RECEIVED(BonusHistoryEntryOPERATIONRECEIVED $OPERATION_RECEIVED) + { + $this->OPERATION_RECEIVED = $OPERATION_RECEIVED; + return $this; + } + + /** + * + * + * @return BonusHistoryEntryOPERATIONRECALLED + */ + public function getOPERATION_RECALLED() + { + return $this->OPERATION_RECALLED; + } + + /** + * + * + * @param BonusHistoryEntryOPERATIONRECALLED $OPERATION_RECALLED + * + * @return self + */ + public function setOPERATION_RECALLED(BonusHistoryEntryOPERATIONRECALLED $OPERATION_RECALLED) + { + $this->OPERATION_RECALLED = $OPERATION_RECALLED; + return $this; + } + + /** + * + * + * @return HistoryEntryPurchase + */ + public function getOPERATION_APPLY_REVERTED() + { + return $this->OPERATION_APPLY_REVERTED; + } + + /** + * + * + * @param HistoryEntryPurchase $OPERATION_APPLY_REVERTED + * + * @return self + */ + public function setOPERATION_APPLY_REVERTED(HistoryEntryPurchase $OPERATION_APPLY_REVERTED) + { + $this->OPERATION_APPLY_REVERTED = $OPERATION_APPLY_REVERTED; + return $this; + } + + /** + * + * + * @return HistoryEntryPurchase + */ + public function getOPERATION_COLLECT_REVERTED() + { + return $this->OPERATION_COLLECT_REVERTED; + } + + /** + * + * + * @param HistoryEntryPurchase $OPERATION_COLLECT_REVERTED + * + * @return self + */ + public function setOPERATION_COLLECT_REVERTED(HistoryEntryPurchase $OPERATION_COLLECT_REVERTED) + { + $this->OPERATION_COLLECT_REVERTED = $OPERATION_COLLECT_REVERTED; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/BonusHistoryEntryOPERATIONRECALLED.php b/lib/Generated/Model/BonusHistoryEntryOPERATIONRECALLED.php new file mode 100644 index 0000000..f50a31a --- /dev/null +++ b/lib/Generated/Model/BonusHistoryEntryOPERATIONRECALLED.php @@ -0,0 +1,54 @@ +actionName; + } + + /** + * Акция, в рамках которой произошло списание + * + * В настоящий момент возможные значения: + * - Корректировка (изменение счета из интерфейса MAXMA или по API) + * + * + * @param string $actionName + * + * @return self + */ + public function setActionName($actionName) + { + $this->actionName = $actionName; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/BonusHistoryEntryOPERATIONRECEIVED.php b/lib/Generated/Model/BonusHistoryEntryOPERATIONRECEIVED.php new file mode 100644 index 0000000..200a0b5 --- /dev/null +++ b/lib/Generated/Model/BonusHistoryEntryOPERATIONRECEIVED.php @@ -0,0 +1,60 @@ +actionName; + } + + /** + * Акция, в рамках которой произошло начисление. + * + * В настоящий момент возможные значения: + * - Импорт (проставляется для бонусов, начисленных в рамках переноса бонусного счета из предыдущей бонусной системы) + * - Корректировка (ручное изменение счета из интерфейса MAXMA или по API) + * - Начисление в рассылке + * + * + * @param string $actionName + * + * @return self + */ + public function setActionName($actionName) + { + $this->actionName = $actionName; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/CalculationQuery.php b/lib/Generated/Model/CalculationQuery.php index e7975b0..d5509f3 100644 --- a/lib/Generated/Model/CalculationQuery.php +++ b/lib/Generated/Model/CalculationQuery.php @@ -78,6 +78,13 @@ class CalculationQuery */ protected $promocode; + /** + * Список уникальных кодов подарочных карт + * + * @var string[] + */ + protected $giftCards; + /** * Кратность округления суммы всех скидок * @@ -302,6 +309,29 @@ public function setPromocode($promocode) return $this; } + /** + * Список уникальных кодов подарочных карт + * + * @return string[] + */ + public function getGiftCards() + { + return $this->giftCards; + } + + /** + * Список уникальных кодов подарочных карт + * + * @param string[] $giftCards + * + * @return self + */ + public function setGiftCards(array $giftCards) + { + $this->giftCards = $giftCards; + return $this; + } + /** * Кратность округления суммы всех скидок * diff --git a/lib/Generated/Model/CalculationQueryRowProduct.php b/lib/Generated/Model/CalculationQueryRowProduct.php index a32d7dc..71df7d5 100644 --- a/lib/Generated/Model/CalculationQueryRowProduct.php +++ b/lib/Generated/Model/CalculationQueryRowProduct.php @@ -2,6 +2,10 @@ namespace CloudLoyalty\Api\Generated\Model; +/** + * @deprecated in favour of Product, left for backward compatibility + * @see Product + */ class CalculationQueryRowProduct extends Product { diff --git a/lib/Generated/Model/CalculationResult.php b/lib/Generated/Model/CalculationResult.php index dc1f689..af34f9a 100644 --- a/lib/Generated/Model/CalculationResult.php +++ b/lib/Generated/Model/CalculationResult.php @@ -38,6 +38,13 @@ class CalculationResult */ protected $promocode; + /** + * Список примененных подарочных карт + * + * @var CalculationResultGiftCard[] + */ + protected $giftCards; + /** * Список строк чека, количество и порядок соответствует строкам из запроса * @@ -129,4 +136,27 @@ public function setPromocode(CalculationResultPromocode $promocode) $this->promocode = $promocode; return $this; } + + /** + * Список примененных подарочных карт + * + * @return CalculationResultGiftCard[] + */ + public function getGiftCards() + { + return $this->giftCards; + } + + /** + * Список примененных подарочных карт + * + * @param CalculationResultGiftCard[] $giftCards + * + * @return self + */ + public function setGiftCards(array $giftCards) + { + $this->giftCards = $giftCards; + return $this; + } } \ No newline at end of file diff --git a/lib/Generated/Model/CalculationResultGiftCard.php b/lib/Generated/Model/CalculationResultGiftCard.php new file mode 100644 index 0000000..e004b62 --- /dev/null +++ b/lib/Generated/Model/CalculationResultGiftCard.php @@ -0,0 +1,156 @@ +code; + } + + /** + * Уникальный код примененной карты + * + * @param string $code + * + * @return self + */ + public function setCode($code) + { + $this->code = $code; + return $this; + } + + /** + * Статус карты. + * + * Одно из следующих значений: + * - ACTIVE — активная карта, доступная для использования + * - INACTIVE — карта требует предварительной активации + * - REDEEMED — израсходованная карта + * - EXPIRED — истёк срок действия карты + * - BLOCKED — заблокированная карта + * + * + * @return string + */ + public function getStatus() + { + return $this->status; + } + + /** + * Статус карты. + * + * Одно из следующих значений: + * - ACTIVE — активная карта, доступная для использования + * - INACTIVE — карта требует предварительной активации + * - REDEEMED — израсходованная карта + * - EXPIRED — истёк срок действия карты + * - BLOCKED — заблокированная карта + * + * + * @param string $status + * + * @return self + */ + public function setStatus($status) + { + $this->status = $status; + return $this; + } + + /** + * Использованная сумма + * + * @return float + */ + public function getUsedAmount() + { + return $this->usedAmount; + } + + /** + * Использованная сумма + * + * @param float $usedAmount + * + * @return self + */ + public function setUsedAmount($usedAmount) + { + $this->usedAmount = $usedAmount; + return $this; + } + + /** + * Ошибка + * + * @return Error + */ + public function getError() + { + return $this->error; + } + + /** + * Ошибка + * + * @param Error $error + * + * @return self + */ + public function setError(Error $error) + { + $this->error = $error; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/CalculationResultRowOffersItem.php b/lib/Generated/Model/CalculationResultRowOffersItem.php index 22b248b..7c92c69 100644 --- a/lib/Generated/Model/CalculationResultRowOffersItem.php +++ b/lib/Generated/Model/CalculationResultRowOffersItem.php @@ -2,6 +2,10 @@ namespace CloudLoyalty\Api\Generated\Model; +/** + * @deprecated in favour of AppliedOffer, left for backward compatibility + * @see AppliedOffer + */ class CalculationResultRowOffersItem extends AppliedOffer { diff --git a/lib/Generated/Model/CalculationResultSummary.php b/lib/Generated/Model/CalculationResultSummary.php index 0e2ca64..3ea8b09 100644 --- a/lib/Generated/Model/CalculationResultSummary.php +++ b/lib/Generated/Model/CalculationResultSummary.php @@ -24,6 +24,13 @@ class CalculationResultSummary */ protected $discounts; + /** + * Сумма, оплаченная одной или несколькими подарочными картами + * + * @var float + */ + protected $prepaidAmount; + /** * Сумма всех скидок по чеку * @@ -69,4 +76,27 @@ public function setDiscounts(CalculationResultDiscounts $discounts) $this->discounts = $discounts; return $this; } + + /** + * Сумма, оплаченная одной или несколькими подарочными картами + * + * @return float + */ + public function getPrepaidAmount() + { + return $this->prepaidAmount; + } + + /** + * Сумма, оплаченная одной или несколькими подарочными картами + * + * @param float $prepaidAmount + * + * @return self + */ + public function setPrepaidAmount($prepaidAmount) + { + $this->prepaidAmount = $prepaidAmount; + return $this; + } } \ No newline at end of file diff --git a/lib/Generated/Model/GenerateGiftCardRequest.php b/lib/Generated/Model/GenerateGiftCardRequest.php index de9086b..eccdcd1 100644 --- a/lib/Generated/Model/GenerateGiftCardRequest.php +++ b/lib/Generated/Model/GenerateGiftCardRequest.php @@ -15,28 +15,49 @@ class GenerateGiftCardRequest * * @var string */ - protected $code; + protected $kind; /** * Идентификатор номинала карты * * @return string */ + public function getKind() + { + return $this->kind; + } + + /** + * @deprecated in favour of getKind(), left for backward compatibility + * @see getKind() + * @return string + */ public function getCode() { - return $this->code; + return $this->getKind(); } /** * Идентификатор номинала карты * - * @param string $code + * @param string $kind * * @return self */ - public function setCode($code) + public function setKind($kind) { - $this->code = $code; + $this->kind = $kind; return $this; } + + /** + * @deprecated in favour of setKind(), left for backward compatibility + * @see setKind() + * @param string $code + * @return self + */ + public function setCode($code) + { + return $this->setKind($code); + } } \ No newline at end of file diff --git a/lib/Generated/Model/GetBonusHistoryRequest.php b/lib/Generated/Model/GetBonusHistoryRequest.php new file mode 100644 index 0000000..d6685cd --- /dev/null +++ b/lib/Generated/Model/GetBonusHistoryRequest.php @@ -0,0 +1,81 @@ +client; + } + + /** + * Данные о клиенте, для которого делается запрос. + * + * Делать запрос можно по номеру телефона клиента, по номеру карты или по внешнему идентификатору. + * + * + * @param ClientQuery $client + * + * @return self + */ + public function setClient(ClientQuery $client) + { + $this->client = $client; + return $this; + } + + /** + * + * + * @return GetBonusHistoryRequestPagination + */ + public function getPagination() + { + return $this->pagination; + } + + /** + * + * + * @param GetBonusHistoryRequestPagination $pagination + * + * @return self + */ + public function setPagination(GetBonusHistoryRequestPagination $pagination) + { + $this->pagination = $pagination; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetBonusHistoryRequestPagination.php b/lib/Generated/Model/GetBonusHistoryRequestPagination.php new file mode 100644 index 0000000..ef3d3a4 --- /dev/null +++ b/lib/Generated/Model/GetBonusHistoryRequestPagination.php @@ -0,0 +1,81 @@ +limit; + } + + /** + * Указывает максимальное число возвращаемых записей + * + * @param float $limit + * + * @return self + */ + public function setLimit($limit) + { + $this->limit = $limit; + return $this; + } + + /** + * Указывает смещение, с которого начнется возвращение данных. + * + * Начало отсчета — 0. + * + * + * @return float + */ + public function getOffset() + { + return $this->offset; + } + + /** + * Указывает смещение, с которого начнется возвращение данных. + * + * Начало отсчета — 0. + * + * + * @param float $offset + * + * @return self + */ + public function setOffset($offset) + { + $this->offset = $offset; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetBonusHistoryResponse.php b/lib/Generated/Model/GetBonusHistoryResponse.php new file mode 100644 index 0000000..5fc741e --- /dev/null +++ b/lib/Generated/Model/GetBonusHistoryResponse.php @@ -0,0 +1,72 @@ +history; + } + + /** + * + * + * @param BonusHistoryEntry[] $history + * + * @return self + */ + public function setHistory(array $history) + { + $this->history = $history; + return $this; + } + + /** + * + * + * @return GetBonusHistoryResponsePagination + */ + public function getPagination() + { + return $this->pagination; + } + + /** + * + * + * @param GetBonusHistoryResponsePagination $pagination + * + * @return self + */ + public function setPagination(GetBonusHistoryResponsePagination $pagination) + { + $this->pagination = $pagination; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetBonusHistoryResponsePagination.php b/lib/Generated/Model/GetBonusHistoryResponsePagination.php new file mode 100644 index 0000000..7e61464 --- /dev/null +++ b/lib/Generated/Model/GetBonusHistoryResponsePagination.php @@ -0,0 +1,42 @@ +total; + } + + /** + * Сколько всего записей + * + * @param float $total + * + * @return self + */ + public function setTotal($total) + { + $this->total = $total; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetGiftCardResponse.php b/lib/Generated/Model/GetGiftCardResponse.php new file mode 100644 index 0000000..a69d54f --- /dev/null +++ b/lib/Generated/Model/GetGiftCardResponse.php @@ -0,0 +1,42 @@ +giftCard; + } + + /** + * + * + * @param GiftCard $giftCard + * + * @return self + */ + public function setGiftCard(GiftCard $giftCard) + { + $this->giftCard = $giftCard; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetHistoryRequest.php b/lib/Generated/Model/GetHistoryRequest.php index f0aefcd..82080df 100644 --- a/lib/Generated/Model/GetHistoryRequest.php +++ b/lib/Generated/Model/GetHistoryRequest.php @@ -1,13 +1,11 @@ limit; - } - - /** - * Указывает максимальное число возвращаемых записей - * - * @param float $limit - * - * @return self - */ - public function setLimit($limit) - { - $this->limit = $limit; - return $this; - } - - /** - * Указывает смещение, с которого начнется возвращение данных. - * - * Начало отсчета — 0. - * - * - * @return float - */ - public function getOffset() - { - return $this->offset; - } - /** - * Указывает смещение, с которого начнется возвращение данных. - * - * Начало отсчета — 0. - * - * - * @param float $offset - * - * @return self - */ - public function setOffset($offset) - { - $this->offset = $offset; - return $this; - } } \ No newline at end of file diff --git a/lib/Generated/Model/GetHistoryResponse.php b/lib/Generated/Model/GetHistoryResponse.php index eefd93e..562b50c 100644 --- a/lib/Generated/Model/GetHistoryResponse.php +++ b/lib/Generated/Model/GetHistoryResponse.php @@ -1,13 +1,11 @@ total; - } - /** - * Сколько всего записей - * - * @param float $total - * - * @return self - */ - public function setTotal($total) - { - $this->total = $total; - return $this; - } } \ No newline at end of file diff --git a/lib/Generated/Model/GetPurchaseHistoryRequest.php b/lib/Generated/Model/GetPurchaseHistoryRequest.php new file mode 100644 index 0000000..9aa230c --- /dev/null +++ b/lib/Generated/Model/GetPurchaseHistoryRequest.php @@ -0,0 +1,81 @@ +client; + } + + /** + * Данные о клиенте, для которого делается запрос. + * + * Делать запрос можно по номеру телефона клиента, по номеру карты или по внешнему идентификатору. + * + * + * @param ClientQuery $client + * + * @return self + */ + public function setClient(ClientQuery $client) + { + $this->client = $client; + return $this; + } + + /** + * + * + * @return GetPurchaseHistoryRequestPagination + */ + public function getPagination() + { + return $this->pagination; + } + + /** + * + * + * @param GetPurchaseHistoryRequestPagination $pagination + * + * @return self + */ + public function setPagination(GetPurchaseHistoryRequestPagination $pagination) + { + $this->pagination = $pagination; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetPurchaseHistoryRequestPagination.php b/lib/Generated/Model/GetPurchaseHistoryRequestPagination.php new file mode 100644 index 0000000..5ab124f --- /dev/null +++ b/lib/Generated/Model/GetPurchaseHistoryRequestPagination.php @@ -0,0 +1,81 @@ +limit; + } + + /** + * Указывает максимальное число возвращаемых записей + * + * @param float $limit + * + * @return self + */ + public function setLimit($limit) + { + $this->limit = $limit; + return $this; + } + + /** + * Указывает смещение, с которого начнется возвращение данных. + * + * Начало отсчета — 0. + * + * + * @return float + */ + public function getOffset() + { + return $this->offset; + } + + /** + * Указывает смещение, с которого начнется возвращение данных. + * + * Начало отсчета — 0. + * + * + * @param float $offset + * + * @return self + */ + public function setOffset($offset) + { + $this->offset = $offset; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetPurchaseHistoryResponse.php b/lib/Generated/Model/GetPurchaseHistoryResponse.php new file mode 100644 index 0000000..2f84221 --- /dev/null +++ b/lib/Generated/Model/GetPurchaseHistoryResponse.php @@ -0,0 +1,72 @@ +history; + } + + /** + * + * + * @param PurchaseHistoryPurchase[] $history + * + * @return self + */ + public function setHistory(array $history) + { + $this->history = $history; + return $this; + } + + /** + * + * + * @return GetPurchaseHistoryResponsePagination + */ + public function getPagination() + { + return $this->pagination; + } + + /** + * + * + * @param GetPurchaseHistoryResponsePagination $pagination + * + * @return self + */ + public function setPagination(GetPurchaseHistoryResponsePagination $pagination) + { + $this->pagination = $pagination; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GetPurchaseHistoryResponsePagination.php b/lib/Generated/Model/GetPurchaseHistoryResponsePagination.php new file mode 100644 index 0000000..bbf974d --- /dev/null +++ b/lib/Generated/Model/GetPurchaseHistoryResponsePagination.php @@ -0,0 +1,42 @@ +total; + } + + /** + * Сколько всего записей + * + * @param float $total + * + * @return self + */ + public function setTotal($total) + { + $this->total = $total; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/GiftCard.php b/lib/Generated/Model/GiftCard.php index 3731ec3..e8116d7 100644 --- a/lib/Generated/Model/GiftCard.php +++ b/lib/Generated/Model/GiftCard.php @@ -18,12 +18,19 @@ class GiftCard protected $number; /** - * Код выпущенной карты + * Уникальный код подарочной карты * * @var string */ protected $code; + /** + * Код или артикул карты в товароучетной системе (для печатной карты) + * + * @var string + */ + protected $sku; + /** * Номинал * @@ -31,6 +38,49 @@ class GiftCard */ protected $initAmount; + /** + * Остаток на карте + * + * @var float + */ + protected $balance; + + /** + * Статус карты. + * + * Одно из следующих значений: + * - ACTIVE — активная карта, доступная для использования + * - INACTIVE — карта требует предварительной активации + * - REDEEMED — израсходованная карта + * - EXPIRED — истёк срок действия карты + * - BLOCKED — заблокированная карта + * + * + * @var string + */ + protected $status; + + /** + * Дата активации карты (если она активирована) + * + * @var \DateTime + */ + protected $activatedAt; + + /** + * Дата блокировки карты (если она заблокирована) + * + * @var \DateTime + */ + protected $blockedAt; + + /** + * Дата, с которой действует карта + * + * @var \DateTime + */ + protected $validFrom; + /** * Дата, до которой действует карта * @@ -62,7 +112,7 @@ public function setNumber($number) } /** - * Код выпущенной карты + * Уникальный код подарочной карты * * @return string */ @@ -72,7 +122,7 @@ public function getCode() } /** - * Код выпущенной карты + * Уникальный код подарочной карты * * @param string $code * @@ -84,6 +134,29 @@ public function setCode($code) return $this; } + /** + * Код или артикул карты в товароучетной системе (для печатной карты) + * + * @return string + */ + public function getSku() + { + return $this->sku; + } + + /** + * Код или артикул карты в товароучетной системе (для печатной карты) + * + * @param string $sku + * + * @return self + */ + public function setSku($sku) + { + $this->sku = $sku; + return $this; + } + /** * Номинал * @@ -107,6 +180,137 @@ public function setInitAmount($initAmount) return $this; } + /** + * Остаток на карте + * + * @return float + */ + public function getBalance() + { + return $this->balance; + } + + /** + * Остаток на карте + * + * @param float $balance + * + * @return self + */ + public function setBalance($balance) + { + $this->balance = $balance; + return $this; + } + + /** + * Статус карты. + * + * Одно из следующих значений: + * - ACTIVE — активная карта, доступная для использования + * - INACTIVE — карта требует предварительной активации + * - REDEEMED — израсходованная карта + * - EXPIRED — истёк срок действия карты + * - BLOCKED — заблокированная карта + * + * + * @return string + */ + public function getStatus() + { + return $this->status; + } + + /** + * Статус карты. + * + * Одно из следующих значений: + * - ACTIVE — активная карта, доступная для использования + * - INACTIVE — карта требует предварительной активации + * - REDEEMED — израсходованная карта + * - EXPIRED — истёк срок действия карты + * - BLOCKED — заблокированная карта + * + * + * @param string $status + * + * @return self + */ + public function setStatus($status) + { + $this->status = $status; + return $this; + } + + /** + * Дата активации карты (если она активирована) + * + * @return \DateTime + */ + public function getActivatedAt() + { + return $this->activatedAt; + } + + /** + * Дата активации карты (если она активирована) + * + * @param \DateTime $activatedAt + * + * @return self + */ + public function setActivatedAt(\DateTime $activatedAt) + { + $this->activatedAt = $activatedAt; + return $this; + } + + /** + * Дата блокировки карты (если она заблокирована) + * + * @return \DateTime + */ + public function getBlockedAt() + { + return $this->blockedAt; + } + + /** + * Дата блокировки карты (если она заблокирована) + * + * @param \DateTime $blockedAt + * + * @return self + */ + public function setBlockedAt(\DateTime $blockedAt) + { + $this->blockedAt = $blockedAt; + return $this; + } + + /** + * Дата, с которой действует карта + * + * @return \DateTime + */ + public function getValidFrom() + { + return $this->validFrom; + } + + /** + * Дата, с которой действует карта + * + * @param \DateTime $validFrom + * + * @return self + */ + public function setValidFrom(\DateTime $validFrom) + { + $this->validFrom = $validFrom; + return $this; + } + /** * Дата, до которой действует карта * diff --git a/lib/Generated/Model/GiftCardQuery.php b/lib/Generated/Model/GiftCardQuery.php index 82061c4..e78ff14 100644 --- a/lib/Generated/Model/GiftCardQuery.php +++ b/lib/Generated/Model/GiftCardQuery.php @@ -10,13 +10,6 @@ class GiftCardQuery { - /** - * Код номенклатуры или артикул - * - * @var string - */ - protected $sku; - /** * Уникальный код подарочной карты * @@ -25,25 +18,20 @@ class GiftCardQuery protected $code; /** - * Код номенклатуры или артикул - * - * @return string + * @deprecated not used anymore */ public function getSku() { - return $this->sku; + return null; } /** - * Код номенклатуры или артикул - * + * @deprecated not used anymore * @param string $sku - * * @return self */ public function setSku($sku) { - $this->sku = $sku; return $this; } diff --git a/lib/Generated/Model/HistoryEntry.php b/lib/Generated/Model/HistoryEntry.php index a63b928..77d5025 100644 --- a/lib/Generated/Model/HistoryEntry.php +++ b/lib/Generated/Model/HistoryEntry.php @@ -1,492 +1,12 @@ at; - } - - /** - * Дата произошедшего события - * - * @param \DateTime $at - * - * @return self - */ - public function setAt(\DateTime $at) - { - $this->at = $at; - return $this; - } - - /** - * Количество бонусов, на которое изменилось состояние счета. - * - * Для операций прихода значение положительное. Для расхода — отрицательное. - * - * - * @return float - */ - public function getAmount() - { - return $this->amount; - } - - /** - * Количество бонусов, на которое изменилось состояние счета. - * - * Для операций прихода значение положительное. Для расхода — отрицательное. - * - * - * @param float $amount - * - * @return self - */ - public function setAmount($amount) - { - $this->amount = $amount; - return $this; - } - - /** - * Вид произведенной операции. - * - * Одно из следующих значений: - * - OPERATION_APPLIED — списание на оплату покупки (расход) - * - OPERATION_COLLECTED — начисление за покупку (приход) - * - OPERATION_EXPIRED — сгорание бонусов по истечении срока (расход) - * - OPERATION_REFUNDED — отмена списания бонусов при возврате товара (приход) - * - OPERATION_CANCELLED — отмена начисленных бонусов при возврате товара (расход) - * - OPERATION_RECEIVED — начисление поощрительных бонусов (приход) - * - OPERATION_RECALLED — отзыв бонусов (расход) - * - OPERATION_APPLY_REVERTED — откат списанных бонусов при откате транзакции продажи (приход) - * - OPERATION_COLLECT_REVERTED — откат начисленных бонусов при откате транзакции продажи (расход) - * - OPERATION_COLLECTED_FRIEND — начисление за покупку друга (приход) - * - * Список операций в будущем может быть расширен. - * - * - * @return string - */ - public function getOperation() - { - return $this->operation; - } - - /** - * Вид произведенной операции. - * - * Одно из следующих значений: - * - OPERATION_APPLIED — списание на оплату покупки (расход) - * - OPERATION_COLLECTED — начисление за покупку (приход) - * - OPERATION_EXPIRED — сгорание бонусов по истечении срока (расход) - * - OPERATION_REFUNDED — отмена списания бонусов при возврате товара (приход) - * - OPERATION_CANCELLED — отмена начисленных бонусов при возврате товара (расход) - * - OPERATION_RECEIVED — начисление поощрительных бонусов (приход) - * - OPERATION_RECALLED — отзыв бонусов (расход) - * - OPERATION_APPLY_REVERTED — откат списанных бонусов при откате транзакции продажи (приход) - * - OPERATION_COLLECT_REVERTED — откат начисленных бонусов при откате транзакции продажи (расход) - * - OPERATION_COLLECTED_FRIEND — начисление за покупку друга (приход) - * - * Список операций в будущем может быть расширен. - * - * - * @param string $operation - * - * @return self - */ - public function setOperation($operation) - { - $this->operation = $operation; - return $this; - } - - /** - * Описание операции. - * - * Одно из следующих значений: - * - Оплата покупки - * - Начисление за покупку - * - Списание по истечении срока - * - Отмена списания - * - Отмена начисления - * - Начисление по акции - * - Отмена - * - * Список операций в будущем может быть расширен. - * - * - * @return string - */ - public function getOperationName() - { - return $this->operationName; - } - - /** - * Описание операции. - * - * Одно из следующих значений: - * - Оплата покупки - * - Начисление за покупку - * - Списание по истечении срока - * - Отмена списания - * - Отмена начисления - * - Начисление по акции - * - Отмена - * - * Список операций в будущем может быть расширен. - * - * - * @param string $operationName - * - * @return self - */ - public function setOperationName($operationName) - { - $this->operationName = $operationName; - return $this; - } - - /** - * - * - * @return HistoryEntryPurchase - */ - public function getOPERATIONAPPLIED() - { - return $this->oPERATIONAPPLIED; - } - - /** - * - * - * @param HistoryEntryPurchase $oPERATIONAPPLIED - * - * @return self - */ - public function setOPERATIONAPPLIED(HistoryEntryPurchase $oPERATIONAPPLIED) - { - $this->oPERATIONAPPLIED = $oPERATIONAPPLIED; - return $this; - } - - /** - * - * - * @return HistoryEntryPurchase - */ - public function getOPERATIONCOLLECTED() - { - return $this->oPERATIONCOLLECTED; - } - - /** - * - * - * @param HistoryEntryPurchase $oPERATIONCOLLECTED - * - * @return self - */ - public function setOPERATIONCOLLECTED(HistoryEntryPurchase $oPERATIONCOLLECTED) - { - $this->oPERATIONCOLLECTED = $oPERATIONCOLLECTED; - return $this; - } - - /** - * - * - * @return mixed - */ - public function getOPERATIONEXPIRED() - { - return $this->oPERATIONEXPIRED; - } - - /** - * - * - * @param mixed $oPERATIONEXPIRED - * - * @return self - */ - public function setOPERATIONEXPIRED($oPERATIONEXPIRED) - { - $this->oPERATIONEXPIRED = $oPERATIONEXPIRED; - return $this; - } - - /** - * - * - * @return HistoryEntryReturn - */ - public function getOPERATIONREFUNDED() - { - return $this->oPERATIONREFUNDED; - } - - /** - * - * - * @param HistoryEntryReturn $oPERATIONREFUNDED - * - * @return self - */ - public function setOPERATIONREFUNDED(HistoryEntryReturn $oPERATIONREFUNDED) - { - $this->oPERATIONREFUNDED = $oPERATIONREFUNDED; - return $this; - } - - /** - * - * - * @return HistoryEntryReturn - */ - public function getOPERATIONCANCELLED() - { - return $this->oPERATIONCANCELLED; - } - - /** - * - * - * @param HistoryEntryReturn $oPERATIONCANCELLED - * - * @return self - */ - public function setOPERATIONCANCELLED(HistoryEntryReturn $oPERATIONCANCELLED) - { - $this->oPERATIONCANCELLED = $oPERATIONCANCELLED; - return $this; - } - - /** - * - * - * @return HistoryEntryOPERATIONRECEIVED - */ - public function getOPERATIONRECEIVED() - { - return $this->oPERATIONRECEIVED; - } - - /** - * - * - * @param HistoryEntryOPERATIONRECEIVED $oPERATIONRECEIVED - * - * @return self - */ - public function setOPERATIONRECEIVED(HistoryEntryOPERATIONRECEIVED $oPERATIONRECEIVED) - { - $this->oPERATIONRECEIVED = $oPERATIONRECEIVED; - return $this; - } - - /** - * - * - * @return HistoryEntryOPERATIONRECALLED - */ - public function getOPERATIONRECALLED() - { - return $this->oPERATIONRECALLED; - } - - /** - * - * - * @param HistoryEntryOPERATIONRECALLED $oPERATIONRECALLED - * - * @return self - */ - public function setOPERATIONRECALLED(HistoryEntryOPERATIONRECALLED $oPERATIONRECALLED) - { - $this->oPERATIONRECALLED = $oPERATIONRECALLED; - return $this; - } - - /** - * - * - * @return HistoryEntryPurchase - */ - public function getOPERATIONAPPLYREVERTED() - { - return $this->oPERATIONAPPLYREVERTED; - } - - /** - * - * - * @param HistoryEntryPurchase $oPERATIONAPPLYREVERTED - * - * @return self - */ - public function setOPERATIONAPPLYREVERTED(HistoryEntryPurchase $oPERATIONAPPLYREVERTED) - { - $this->oPERATIONAPPLYREVERTED = $oPERATIONAPPLYREVERTED; - return $this; - } - - /** - * - * - * @return HistoryEntryPurchase - */ - public function getOPERATIONCOLLECTREVERTED() - { - return $this->oPERATIONCOLLECTREVERTED; - } - /** - * - * - * @param HistoryEntryPurchase $oPERATIONCOLLECTREVERTED - * - * @return self - */ - public function setOPERATIONCOLLECTREVERTED(HistoryEntryPurchase $oPERATIONCOLLECTREVERTED) - { - $this->oPERATIONCOLLECTREVERTED = $oPERATIONCOLLECTREVERTED; - return $this; - } } \ No newline at end of file diff --git a/lib/Generated/Model/HistoryEntryOPERATIONRECALLED.php b/lib/Generated/Model/HistoryEntryOPERATIONRECALLED.php index 63edc18..24f9c59 100644 --- a/lib/Generated/Model/HistoryEntryOPERATIONRECALLED.php +++ b/lib/Generated/Model/HistoryEntryOPERATIONRECALLED.php @@ -1,54 +1,12 @@ actionName; - } - /** - * Акция, в рамках которой произошло списание - * - * В настоящий момент возможные значения: - * - Корректировка (изменение счета из интерфейса MAXMA или по API) - * - * - * @param string $actionName - * - * @return self - */ - public function setActionName($actionName) - { - $this->actionName = $actionName; - return $this; - } } \ No newline at end of file diff --git a/lib/Generated/Model/HistoryEntryOPERATIONRECEIVED.php b/lib/Generated/Model/HistoryEntryOPERATIONRECEIVED.php index 9cffc31..7e9b755 100644 --- a/lib/Generated/Model/HistoryEntryOPERATIONRECEIVED.php +++ b/lib/Generated/Model/HistoryEntryOPERATIONRECEIVED.php @@ -1,60 +1,12 @@ actionName; - } - /** - * Акция, в рамках которой произошло начисление. - * - * В настоящий момент возможные значения: - * - Импорт (проставляется для бонусов, начисленных в рамках переноса бонусного счета из предыдущей бонусной системы) - * - Корректировка (ручное изменение счета из интерфейса MAXMA или по API) - * - Начисление в рассылке - * - * - * @param string $actionName - * - * @return self - */ - public function setActionName($actionName) - { - $this->actionName = $actionName; - return $this; - } } \ No newline at end of file diff --git a/lib/Generated/Model/HistoryEntryPurchase.php b/lib/Generated/Model/HistoryEntryPurchase.php index 402e0f8..478d9b5 100644 --- a/lib/Generated/Model/HistoryEntryPurchase.php +++ b/lib/Generated/Model/HistoryEntryPurchase.php @@ -21,6 +21,7 @@ class HistoryEntryPurchase * Дата продажи * * @var string + * FIXME: should be DateTime */ protected $executedAt; diff --git a/lib/Generated/Model/HistoryEntryReturn.php b/lib/Generated/Model/HistoryEntryReturn.php index 5ad889c..60b4952 100644 --- a/lib/Generated/Model/HistoryEntryReturn.php +++ b/lib/Generated/Model/HistoryEntryReturn.php @@ -21,6 +21,7 @@ class HistoryEntryReturn * Дата возврата * * @var string + * FIXME: should be DateTime */ protected $executedAt; diff --git a/lib/Generated/Model/PurchaseBonuses.php b/lib/Generated/Model/PurchaseBonuses.php new file mode 100644 index 0000000..2fcb525 --- /dev/null +++ b/lib/Generated/Model/PurchaseBonuses.php @@ -0,0 +1,72 @@ +applied; + } + + /** + * Применено + * + * @param int $applied + * + * @return self + */ + public function setApplied($applied) + { + $this->applied = $applied; + return $this; + } + + /** + * Накоплено + * + * @return int + */ + public function getCollected() + { + return $this->collected; + } + + /** + * Накоплено + * + * @param int $collected + * + * @return self + */ + public function setCollected($collected) + { + $this->collected = $collected; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/PurchaseDiscounts.php b/lib/Generated/Model/PurchaseDiscounts.php new file mode 100644 index 0000000..1e3d188 --- /dev/null +++ b/lib/Generated/Model/PurchaseDiscounts.php @@ -0,0 +1,192 @@ +auto; + } + + /** + * Скидка кассы + * + * @param float $auto + * + * @return self + */ + public function setAuto($auto) + { + $this->auto = $auto; + return $this; + } + + /** + * Ручная кассы + * + * @return float + */ + public function getManual() + { + return $this->manual; + } + + /** + * Ручная кассы + * + * @param float $manual + * + * @return self + */ + public function setManual($manual) + { + $this->manual = $manual; + return $this; + } + + /** + * Скидка по бонусам + * + * @return float + */ + public function getBonuses() + { + return $this->bonuses; + } + + /** + * Скидка по бонусам + * + * @param float $bonuses + * + * @return self + */ + public function setBonuses($bonuses) + { + $this->bonuses = $bonuses; + return $this; + } + + /** + * Скидка по промокоду + * + * @return float + */ + public function getPromocode() + { + return $this->promocode; + } + + /** + * Скидка по промокоду + * + * @param float $promocode + * + * @return self + */ + public function setPromocode($promocode) + { + $this->promocode = $promocode; + return $this; + } + + /** + * Скидка по акции + * + * @return float + */ + public function getOffer() + { + return $this->offer; + } + + /** + * Скидка по акции + * + * @param float $offer + * + * @return self + */ + public function setOffer($offer) + { + $this->offer = $offer; + return $this; + } + + /** + * Округление + * + * @return float + */ + public function getRounding() + { + return $this->rounding; + } + + /** + * Округление + * + * @param float $rounding + * + * @return self + */ + public function setRounding($rounding) + { + $this->rounding = $rounding; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/PurchaseGiftCard.php b/lib/Generated/Model/PurchaseGiftCard.php new file mode 100644 index 0000000..bc96c6a --- /dev/null +++ b/lib/Generated/Model/PurchaseGiftCard.php @@ -0,0 +1,72 @@ +code; + } + + /** + * Уникальный код + * + * @param string $code + * + * @return self + */ + public function setCode($code) + { + $this->code = $code; + return $this; + } + + /** + * Использованная сумма + * + * @return float + */ + public function getUsedAmount() + { + return $this->usedAmount; + } + + /** + * Использованная сумма + * + * @param float $usedAmount + * + * @return self + */ + public function setUsedAmount($usedAmount) + { + $this->usedAmount = $usedAmount; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/PurchaseHistoryPurchase.php b/lib/Generated/Model/PurchaseHistoryPurchase.php new file mode 100644 index 0000000..4774e5e --- /dev/null +++ b/lib/Generated/Model/PurchaseHistoryPurchase.php @@ -0,0 +1,540 @@ +shop; + } + + /** + * Данные о торговой точке + * + * @param ShopQuery $shop + * + * @return self + */ + public function setShop(ShopQuery $shop) + { + $this->shop = $shop; + return $this; + } + + /** + * Данные о кассире + * + * @return CashierQuery + */ + public function getCashier() + { + return $this->cashier; + } + + /** + * Данные о кассире + * + * @param CashierQuery $cashier + * + * @return self + */ + public function setCashier(CashierQuery $cashier) + { + $this->cashier = $cashier; + return $this; + } + + /** + * Уникальный идентификатор заказа; не задан, если это не заказ + * + * @return string + */ + public function getOrderId() + { + return $this->orderId; + } + + /** + * Уникальный идентификатор заказа; не задан, если это не заказ + * + * @param string $orderId + * + * @return self + */ + public function setOrderId($orderId) + { + $this->orderId = $orderId; + return $this; + } + + /** + * Статус заказа. Не задан, если это не заказ. + * + * Одно из следующих значений: + * - STATUS_NEW — заказ создан + * - STATUS_CONFIRMED — заказ завершен + * - STATUS_CANCELLED — заказ отменен + * + * + * @return string + */ + public function getOrderStatus() + { + return $this->orderStatus; + } + + /** + * Статус заказа. Не задан, если это не заказ. + * + * Одно из следующих значений: + * - STATUS_NEW — заказ создан + * - STATUS_CONFIRMED — заказ завершен + * - STATUS_CANCELLED — заказ отменен + * + * + * @param string $orderStatus + * + * @return self + */ + public function setOrderStatus($orderStatus) + { + $this->orderStatus = $orderStatus; + return $this; + } + + /** + * Уникальный идентификатор покупки; совпадает с идентификатором заказа, если это заказ + * + * @return string + */ + public function getTxid() + { + return $this->txid; + } + + /** + * Уникальный идентификатор покупки; совпадает с идентификатором заказа, если это заказ + * + * @param string $txid + * + * @return self + */ + public function setTxid($txid) + { + $this->txid = $txid; + return $this; + } + + /** + * Дата и время создания заказа или совершения покупки + * + * @return \DateTime + */ + public function getExecutedAt() + { + return $this->executedAt; + } + + /** + * Дата и время создания заказа или совершения покупки + * + * @param \DateTime $executedAt + * + * @return self + */ + public function setExecutedAt(\DateTime $executedAt) + { + $this->executedAt = $executedAt; + return $this; + } + + /** + * Идентификатор смены, в рамках которой была совершена покупка; не задан для заказа + * + * @return string + */ + public function getSessionId() + { + return $this->sessionId; + } + + /** + * Идентификатор смены, в рамках которой была совершена покупка; не задан для заказа + * + * @param string $sessionId + * + * @return self + */ + public function setSessionId($sessionId) + { + $this->sessionId = $sessionId; + return $this; + } + + /** + * Номер чека в кассовой системе; не задан для заказа + * + * @return string + */ + public function getReceiptId() + { + return $this->receiptId; + } + + /** + * Номер чека в кассовой системе; не задан для заказа + * + * @param string $receiptId + * + * @return self + */ + public function setReceiptId($receiptId) + { + $this->receiptId = $receiptId; + return $this; + } + + /** + * Сумма покупки + * + * @return float + */ + public function getTotalAmount() + { + return $this->totalAmount; + } + + /** + * Сумма покупки + * + * @param float $totalAmount + * + * @return self + */ + public function setTotalAmount($totalAmount) + { + $this->totalAmount = $totalAmount; + return $this; + } + + /** + * Сумма скидки + * + * @return float + */ + public function getTotalDiscount() + { + return $this->totalDiscount; + } + + /** + * Сумма скидки + * + * @param float $totalDiscount + * + * @return self + */ + public function setTotalDiscount($totalDiscount) + { + $this->totalDiscount = $totalDiscount; + return $this; + } + + /** + * Сумма после всех скидок + * + * @return float + */ + public function getPaidAmount() + { + return $this->paidAmount; + } + + /** + * Сумма после всех скидок + * + * @param float $paidAmount + * + * @return self + */ + public function setPaidAmount($paidAmount) + { + $this->paidAmount = $paidAmount; + return $this; + } + + /** + * Детализация по скидкам + * + * @return PurchaseDiscounts + */ + public function getDiscounts() + { + return $this->discounts; + } + + /** + * Детализация по скидкам + * + * @param PurchaseDiscounts $discounts + * + * @return self + */ + public function setDiscounts(PurchaseDiscounts $discounts) + { + $this->discounts = $discounts; + return $this; + } + + /** + * Детализация по начисленным бонусам + * + * @return PurchaseBonuses + */ + public function getBonuses() + { + return $this->bonuses; + } + + /** + * Детализация по начисленным бонусам + * + * @param PurchaseBonuses $bonuses + * + * @return self + */ + public function setBonuses(PurchaseBonuses $bonuses) + { + $this->bonuses = $bonuses; + return $this; + } + + /** + * Промокод, который был использован при покупке + * + * @return string + */ + public function getPromocode() + { + return $this->promocode; + } + + /** + * Промокод, который был использован при покупке + * + * @param string $promocode + * + * @return self + */ + public function setPromocode($promocode) + { + $this->promocode = $promocode; + return $this; + } + + /** + * Подарочные карты, использованные при покупке + * + * @return PurchaseGiftCard[] + */ + public function getGiftCards() + { + return $this->giftCards; + } + + /** + * Подарочные карты, использованные при покупке + * + * @param PurchaseGiftCard[] $giftCards + * + * @return self + */ + public function setGiftCards(array $giftCards) + { + $this->giftCards = $giftCards; + return $this; + } + + /** + * Сумма, оплаченная одной или несколькими подарочными картами + * + * @return float + */ + public function getPrepaidAmount() + { + return $this->prepaidAmount; + } + + /** + * Сумма, оплаченная одной или несколькими подарочными картами + * + * @param float $prepaidAmount + * + * @return self + */ + public function setPrepaidAmount($prepaidAmount) + { + $this->prepaidAmount = $prepaidAmount; + return $this; + } + + /** + * + * + * @return PurchaseRow[] + */ + public function getRows() + { + return $this->rows; + } + + /** + * + * + * @param PurchaseRow[] $rows + * + * @return self + */ + public function setRows(array $rows) + { + $this->rows = $rows; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/PurchaseRow.php b/lib/Generated/Model/PurchaseRow.php new file mode 100644 index 0000000..0975082 --- /dev/null +++ b/lib/Generated/Model/PurchaseRow.php @@ -0,0 +1,342 @@ +externalId; + } + + /** + * Внешний идентификатор товара или услуги + * + * @param string $externalId + * + * @return self + */ + public function setExternalId($externalId) + { + $this->externalId = $externalId; + return $this; + } + + /** + * Наименование товара или услуги + * + * @return string + */ + public function getTitle() + { + return $this->title; + } + + /** + * Наименование товара или услуги + * + * @param string $title + * + * @return self + */ + public function setTitle($title) + { + $this->title = $title; + return $this; + } + + /** + * Артикул или код товара или услуги + * + * @return string + */ + public function getSku() + { + return $this->sku; + } + + /** + * Артикул или код товара или услуги + * + * @param string $sku + * + * @return self + */ + public function setSku($sku) + { + $this->sku = $sku; + return $this; + } + + /** + * Количество + * + * @return float + */ + public function getQty() + { + return $this->qty; + } + + /** + * Количество + * + * @param float $qty + * + * @return self + */ + public function setQty($qty) + { + $this->qty = $qty; + return $this; + } + + /** + * Цена продажи + * + * @return float + */ + public function getPrice() + { + return $this->price; + } + + /** + * Цена продажи + * + * @param float $price + * + * @return self + */ + public function setPrice($price) + { + $this->price = $price; + return $this; + } + + /** + * Закупочная цена + * + * @return float + */ + public function getBuyingPrice() + { + return $this->buyingPrice; + } + + /** + * Закупочная цена + * + * @param float $buyingPrice + * + * @return self + */ + public function setBuyingPrice($buyingPrice) + { + $this->buyingPrice = $buyingPrice; + return $this; + } + + /** + * Итого по строке (до вычета скидок) + * + * @return float + */ + public function getTotalAmount() + { + return $this->totalAmount; + } + + /** + * Итого по строке (до вычета скидок) + * + * @param float $totalAmount + * + * @return self + */ + public function setTotalAmount($totalAmount) + { + $this->totalAmount = $totalAmount; + return $this; + } + + /** + * Сумма скидки + * + * @return float + */ + public function getTotalDiscount() + { + return $this->totalDiscount; + } + + /** + * Сумма скидки + * + * @param float $totalDiscount + * + * @return self + */ + public function setTotalDiscount($totalDiscount) + { + $this->totalDiscount = $totalDiscount; + return $this; + } + + /** + * Сумма после всех скидок + * + * @return float + */ + public function getPaidAmount() + { + return $this->paidAmount; + } + + /** + * Сумма после всех скидок + * + * @param float $paidAmount + * + * @return self + */ + public function setPaidAmount($paidAmount) + { + $this->paidAmount = $paidAmount; + return $this; + } + + /** + * Детализация по скидкам + * + * @return PurchaseDiscounts + */ + public function getDiscounts() + { + return $this->discounts; + } + + /** + * Детализация по скидкам + * + * @param PurchaseDiscounts $discounts + * + * @return self + */ + public function setDiscounts(PurchaseDiscounts $discounts) + { + $this->discounts = $discounts; + return $this; + } + + /** + * Детализация по начисленным бонусам + * + * @return PurchaseBonuses + */ + public function getBonuses() + { + return $this->bonuses; + } + + /** + * Детализация по начисленным бонусам + * + * @param PurchaseBonuses $bonuses + * + * @return self + */ + public function setBonuses(PurchaseBonuses $bonuses) + { + $this->bonuses = $bonuses; + return $this; + } +} \ No newline at end of file diff --git a/lib/Generated/Model/SendConfirmationCodeRequest.php b/lib/Generated/Model/SendConfirmationCodeRequest.php index 50595af..59a6f1c 100644 --- a/lib/Generated/Model/SendConfirmationCodeRequest.php +++ b/lib/Generated/Model/SendConfirmationCodeRequest.php @@ -31,18 +31,6 @@ class SendConfirmationCodeRequest */ protected $externalId; - /** - * Указывает, что запрос отправляется для незарегистрированного клиента (то есть без идентификации - * клиента по карте или номеру телефона). - * - * Если запрос делается для незарегистрированного клиента, обязательно указывается значение номера телефона в `to`. - * - * - * @deprecated - * @var bool - */ - protected $isAnonymousClient; - /** * Номер телефона для отправки сообщения. * @@ -137,35 +125,21 @@ public function setExternalId($externalId) } /** - * Указывает, что запрос отправляется для незарегистрированного клиента (то есть без идентификации - * клиента по карте или номеру телефона). - * - * Если запрос делается для незарегистрированного клиента, обязательно указывается значение номера телефона в `to`. - * - * - * @deprecated + * @deprecated not used anymore * @return bool */ public function getIsAnonymousClient() { - return $this->isAnonymousClient; + return false; } /** - * Указывает, что запрос отправляется для незарегистрированного клиента (то есть без идентификации - * клиента по карте или номеру телефона). - * - * Если запрос делается для незарегистрированного клиента, обязательно указывается значение номера телефона в `to`. - * - * - * @deprecated + * @deprecated not used anymore * @param bool $isAnonymousClient - * * @return self */ public function setIsAnonymousClient($isAnonymousClient) { - $this->isAnonymousClient = $isAnonymousClient; return $this; } diff --git a/lib/Serializer/Serializer.php b/lib/Serializer/Serializer.php index 847108a..905924f 100644 --- a/lib/Serializer/Serializer.php +++ b/lib/Serializer/Serializer.php @@ -179,7 +179,10 @@ protected function deserializeObject($a, $className) continue; } - $fieldName = lcfirst(substr($methodName, 3)); + $fieldName = substr($methodName, 3); + if (!preg_match('/^[A-Z0-9_]+$/', $fieldName)) { // skip for UPPERCASE fields + $fieldName = lcfirst($fieldName); + } // No such field in array? if (!isset($a[$fieldName])) { diff --git a/tests/ClientTest.php b/tests/ClientTest.php index 57214e7..b05e8e5 100644 --- a/tests/ClientTest.php +++ b/tests/ClientTest.php @@ -6,6 +6,7 @@ use CloudLoyalty\Api\Exception\ProcessingException; use CloudLoyalty\Api\Exception\TransportException; use CloudLoyalty\Api\Generated\Model\AppliedOffer; +use CloudLoyalty\Api\Generated\Model\BonusHistoryEntry; use CloudLoyalty\Api\Generated\Model\CalculateProductsRequest; use CloudLoyalty\Api\Generated\Model\CalculateProductsRequestItem; use CloudLoyalty\Api\Generated\Model\CalculateProductsResult; @@ -15,9 +16,27 @@ use CloudLoyalty\Api\Generated\Model\ClientInfoQuery; use CloudLoyalty\Api\Generated\Model\ClientInfoReply; use CloudLoyalty\Api\Generated\Model\ClientQuery; +use CloudLoyalty\Api\Generated\Model\GetBonusHistoryRequest; +use CloudLoyalty\Api\Generated\Model\GetBonusHistoryResponse; +use CloudLoyalty\Api\Generated\Model\GetBonusHistoryResponsePagination; +use CloudLoyalty\Api\Generated\Model\GetGiftCardResponse; +use CloudLoyalty\Api\Generated\Model\GetHistoryRequest; +use CloudLoyalty\Api\Generated\Model\GetHistoryResponse; +use CloudLoyalty\Api\Generated\Model\GetHistoryResponsePagination; +use CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryRequest; +use CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryResponse; +use CloudLoyalty\Api\Generated\Model\GetPurchaseHistoryResponsePagination; +use CloudLoyalty\Api\Generated\Model\GiftCard; +use CloudLoyalty\Api\Generated\Model\GiftCardQuery; +use CloudLoyalty\Api\Generated\Model\HistoryEntry; +use CloudLoyalty\Api\Generated\Model\HistoryEntryPurchase; use CloudLoyalty\Api\Generated\Model\NewClientRequest; use CloudLoyalty\Api\Generated\Model\NewClientResponse; use CloudLoyalty\Api\Generated\Model\Product; +use CloudLoyalty\Api\Generated\Model\PurchaseBonuses; +use CloudLoyalty\Api\Generated\Model\PurchaseDiscounts; +use CloudLoyalty\Api\Generated\Model\PurchaseHistoryPurchase; +use CloudLoyalty\Api\Generated\Model\PurchaseRow; use CloudLoyalty\Api\Generated\Model\ShopQuery; use CloudLoyalty\Api\Http\Request; use CloudLoyalty\Api\Http\Response; @@ -294,4 +313,260 @@ public function testCalculateProducts() $response ); } + + public function testGetHistory() + { + $httpClientMock = $this->createMock('CloudLoyalty\Api\Http\Client\NativeClient'); + + $httpClientMock->expects($this->once()) + ->method('sendRequest') + ->with($this->equalTo( + (new Request()) + ->setMethod('POST') + ->setUri('https://api.maxma.com/get-history') + ->setHeaders([ + 'Content-Type' => 'application/json', + 'Accept' => 'application/json', + 'X-Processing-Key' => 'test-key', + 'Accept-Language' => 'ru' + ]) + ->setBody('{"client":{"phoneNumber":"+79990000000"}}') + )) + ->willReturn( + (new Response()) + ->setStatusCode(200) + ->setReasonPhrase('OK') + ->setHeaders(['Content-Type' => 'application/json']) + ->setBody('{"history":[{"at":"2018-05-02T16:12:54+03:00","amount":63,' . + '"operation":"OPERATION_APPLIED","operationName":"Оплата покупки",' . + '"OPERATION_APPLIED":{"purchaseId":"66379","executedAt":"2018-05-02T16:12:50+03:00",' . + '"totalAmount":2300}},{"at":"2018-04-26T00:00:13+03:00","amount":-47,' . + '"operation":"OPERATION_EXPIRED","operationName":"Списание по истечении срока",' . + '"OPERATION_EXPIRED":{}}],"pagination":{"total":2}}') + ); + + $apiClient = new Client([], $httpClientMock); + $apiClient->setProcessingKey('test-key'); + + $response = $apiClient->getHistory( + (new GetHistoryRequest()) + ->setClient( + (new ClientQuery()) + ->setPhoneNumber('+79990000000') + ) + ); + + $this->assertEquals( + (new GetHistoryResponse()) + ->setHistory([ + [ + 'at' => '2018-05-02T16:12:54+03:00', + 'amount' => 63, + 'operation' => 'OPERATION_APPLIED', + 'operationName' => 'Оплата покупки', + 'OPERATION_APPLIED' => [ + 'purchaseId' => '66379', + 'executedAt' => '2018-05-02T16:12:50+03:00', + 'totalAmount' => 2300 + ] + ], + [ + 'at' => '2018-04-26T00:00:13+03:00', + 'amount' => -47, + 'operation' => 'OPERATION_EXPIRED', + 'operationName' => 'Списание по истечении срока', + 'OPERATION_EXPIRED' => [] + ] + ]) + ->setPagination( + (new GetHistoryResponsePagination()) + ->setTotal(2) + ), + $response + ); + } + + public function testGetBonusHistory() + { + $httpClientMock = $this->createMock('CloudLoyalty\Api\Http\Client\NativeClient'); + + $httpClientMock->expects($this->once()) + ->method('sendRequest') + ->with($this->equalTo( + (new Request()) + ->setMethod('POST') + ->setUri('https://api.maxma.com/get-bonus-history') + ->setHeaders([ + 'Content-Type' => 'application/json', + 'Accept' => 'application/json', + 'X-Processing-Key' => 'test-key', + 'Accept-Language' => 'ru' + ]) + ->setBody('{"client":{"phoneNumber":"+79990000000"}}') + )) + ->willReturn( + (new Response()) + ->setStatusCode(200) + ->setReasonPhrase('OK') + ->setHeaders(['Content-Type' => 'application/json']) + ->setBody('{"history":[{"at":"2018-05-02T16:12:54+03:00","amount":63,' . + '"operation":"OPERATION_APPLIED","operationName":"Оплата покупки",' . + '"OPERATION_APPLIED":{"purchaseId":"66379","executedAt":"2018-05-02T16:12:50+03:00",' . + '"totalAmount":2300}},{"at":"2018-04-26T00:00:13+03:00","amount":-47,' . + '"operation":"OPERATION_EXPIRED","operationName":"Списание по истечении срока",' . + '"OPERATION_EXPIRED":{}}],"pagination":{"total":2}}') + ); + + $apiClient = new Client([], $httpClientMock); + $apiClient->setProcessingKey('test-key'); + + $response = $apiClient->getBonusHistory( + (new GetBonusHistoryRequest()) + ->setClient( + (new ClientQuery()) + ->setPhoneNumber('+79990000000') + ) + ); + + $this->assertEquals( + (new GetBonusHistoryResponse()) + ->setHistory([ + (new BonusHistoryEntry()) + ->setAt(new \DateTime('2018-05-02T16:12:54+03:00')) + ->setAmount(63) + ->setOperation('OPERATION_APPLIED') + ->setOperationName('Оплата покупки') + ->setOPERATION_APPLIED( + (new HistoryEntryPurchase()) + ->setPurchaseId(66379) + ->setExecutedAt('2018-05-02T16:12:50+03:00') + ->setTotalAmount(2300) + ), + (new BonusHistoryEntry()) + ->setAt(new \DateTime('2018-04-26T00:00:13+03:00')) + ->setAmount(-47) + ->setOperation('OPERATION_EXPIRED') + ->setOperationName('Списание по истечении срока') + ->setOPERATION_EXPIRED([]) + ]) + ->setPagination( + (new GetBonusHistoryResponsePagination()) + ->setTotal(2) + ), + $response + ); + } + + public function testGetPurchaseHistory() + { + $httpClientMock = $this->createMock('CloudLoyalty\Api\Http\Client\NativeClient'); + + $httpClientMock->expects($this->once()) + ->method('sendRequest') + ->with($this->equalTo( + (new Request()) + ->setMethod('POST') + ->setUri('https://api.maxma.com/get-purchase-history') + ->setHeaders([ + 'Content-Type' => 'application/json', + 'Accept' => 'application/json', + 'X-Processing-Key' => 'test-key', + 'Accept-Language' => 'ru' + ]) + ->setBody('{"client":{"phoneNumber":"+79990000000"}}') + )) + ->willReturn( + (new Response()) + ->setStatusCode(200) + ->setReasonPhrase('OK') + ->setHeaders(['Content-Type' => 'application/json']) + ->setBody('{"history":[{"shop":{"code":"shop1","name":"Shop1"},"orderId":"order1",' . + '"orderStatus":"STATUS_NEW","txid":"order1","executedAt":"2025-01-11T00:00:00+03:00",' . + '"totalAmount":2016,"totalDiscount":16,"paidAmount":2000,"discounts":{"auto":4,' . + '"manual":5,"bonuses":10,"promocode":2,"offer":3,"rounding":1},"bonuses":{"applied":' . + '10,"collected":5},"rows":[{"externalId":"id_demiseason_jamper_1","title":' . + '"Демисезонная куртка1","sku":"sku-01","qty":1,"price":100,"totalAmount":100,' . + '"totalDiscount":0,"paidAmount":100,"discounts":{"auto":0,"manual":0,"bonuses":0,' . + '"promocode":0,"offer":0,"rounding":0},"bonuses":{"applied":0,"collected":0}}],' . + '"prepaidAmount":0}],"pagination":{"total":2}}') + ); + + $apiClient = new Client([], $httpClientMock); + $apiClient->setProcessingKey('test-key'); + + $response = $apiClient->getPurchaseHistory( + (new GetPurchaseHistoryRequest()) + ->setClient( + (new ClientQuery()) + ->setPhoneNumber('+79990000000') + ) + ); + + $this->assertTrue($response instanceof GetPurchaseHistoryResponse); + $this->assertTrue($response->getPagination() instanceof GetPurchaseHistoryResponsePagination); + $this->assertTrue($response->getHistory()[0] instanceof PurchaseHistoryPurchase); + $this->assertTrue($response->getHistory()[0]->getShop() instanceof ShopQuery); + $this->assertTrue($response->getHistory()[0]->getExecutedAt() instanceof \DateTime); + $this->assertTrue($response->getHistory()[0]->getDiscounts() instanceof PurchaseDiscounts); + $this->assertTrue($response->getHistory()[0]->getBonuses() instanceof PurchaseBonuses); + $this->assertTrue($response->getHistory()[0]->getRows()[0] instanceof PurchaseRow); + $this->assertTrue($response->getHistory()[0]->getRows()[0]->getBonuses() instanceof PurchaseBonuses); + $this->assertTrue($response->getHistory()[0]->getRows()[0]->getDiscounts() instanceof PurchaseDiscounts); + } + + public function testGetGiftCard() + { + $httpClientMock = $this->createMock('CloudLoyalty\Api\Http\Client\NativeClient'); + + $httpClientMock->expects($this->once()) + ->method('sendRequest') + ->with($this->equalTo( + (new Request()) + ->setMethod('POST') + ->setUri('https://api.maxma.com/get-gift-card') + ->setHeaders([ + 'Content-Type' => 'application/json', + 'Accept' => 'application/json', + 'X-Processing-Key' => 'test-key', + 'Accept-Language' => 'ru' + ]) + ->setBody('{"code":"2020728300990364"}') + )) + ->willReturn( + (new Response()) + ->setStatusCode(200) + ->setReasonPhrase('OK') + ->setHeaders(['Content-Type' => 'application/json']) + ->setBody('{"giftCard":{"number":"405","code":"2020728300990364","sku":"MXGCLM7XFM",' . + '"initAmount":500,"balance":500,"status":"ACTIVE","activatedAt":' . + '"2025-11-20T09:38:15.190Z","blockedAt":"2025-11-20T09:38:15.190Z",' . + '"validFrom":"2025-11-20T09:38:15.190Z","validUntil":"2025-11-20T09:38:15.190Z"}}') + ); + + $apiClient = new Client([], $httpClientMock); + $apiClient->setProcessingKey('test-key'); + + $response = $apiClient->getGiftCard( + (new GiftCardQuery()) + ->setCode('2020728300990364') + ); + + $this->assertEquals( + (new GetGiftCardResponse()) + ->setGiftCard( + (new GiftCard()) + ->setCode('2020728300990364') + ->setNumber(405) + ->setSku('MXGCLM7XFM') + ->setInitAmount(500) + ->setBalance(500) + ->setStatus('ACTIVE') + ->setActivatedAt(new \DateTime('2025-11-20T09:38:15.190Z')) + ->setBlockedAt(new \DateTime('2025-11-20T09:38:15.190Z')) + ->setValidFrom(new \DateTime('2025-11-20T09:38:15.190Z')) + ->setValidUntil(new \DateTime('2025-11-20T09:38:15.190Z')) + ), + $response + ); + } }