Skip to content

Commit

Permalink
Added returns support to the register sales api
Browse files Browse the repository at this point in the history
  • Loading branch information
szeber committed May 28, 2016
1 parent 51c3475 commit 231688a
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/ShoppinPal/Vend/Api/V0/RegisterSales.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,20 @@
use ShoppinPal\Vend\Api\BaseApiAbstract;
use ShoppinPal\Vend\DataObject\Entity\V0\RegisterSale;
use YapepBase\Communication\CurlHttpRequest;
use YapepBase\Exception\ParameterException;

class RegisterSales extends BaseApiAbstract
{
public function create(RegisterSale $registerSale)
{
if ($registerSale->returnFor) {
return $this->createReturn($registerSale);
}

return $this->doCreate($registerSale);
}

protected function doCreate(RegisterSale $registerSale)
{
$request = $this->getAuthenticatedRequestForUri('api/register_sales');
$request->setMethod(CurlHttpRequest::METHOD_POST);
Expand All @@ -18,6 +28,26 @@ public function create(RegisterSale $registerSale)
$result = $this->sendRequest($request);

return new RegisterSale($result['register_sale'], RegisterSale::UNKNOWN_PROPERTY_IGNORE);
}

public function createReturn(RegisterSale $registerSale)
{
if (empty($registerSale->returnFor)) {
throw new ParameterException('No returnFor set in sale');
}

// We need to do an empty PUT request for the original sale to the V2 return endpoint, then modify it via V0.
$returnApiUrl = '/api/2.0/sales/' . urlencode($registerSale->returnFor) . '/actions/return';
$request = $this->getAuthenticatedRequestForUri($returnApiUrl);

$request->setMethod(CurlHttpRequest::METHOD_PUT);

$returnResult = $this->sendRequest($request);

$modifiedRegisterSale = clone($registerSale);

$modifiedRegisterSale->id = $returnResult['data']['id'];

return $this->doCreate($modifiedRegisterSale);
}
}

0 comments on commit 231688a

Please sign in to comment.