addError( new Main\Error(Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASEF_01')));
return $result;
}
$shipmentId = current($shipmentIds);
if(intval($shipmentId) <= 0)
{
$result->addError( new Main\Error(Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASEF_02')));
return $result;
}
$res = Requests\ShipmentTable::getList(array(
'filter' => array(
'=SHIPMENT_ID' => $shipmentId,
'=REQUEST.DELIVERY_ID' => $this->deliveryService->getId()
)
));
$row = $res->fetch();
if(!$row || $row['EXTERNAL_ID'] == '')
{
$result->addError(
new Main\Error(
Loc::getMessage(
'SALE_DLVRS_ADD_DREQ_RBASEF_03',
array('#SHIPMENT_LINK#' => Requests\Helper::getShipmentEditLink($shipmentId))
)));
return $result;
}
$this->path = str_replace('{id}', $row['EXTERNAL_ID'], $this->path);
return $this->send();
}
/**
* @param array $requestData
* @param array $additional
* @return Requests\ResultFile
*/
public function send(array $requestData = array(), array $additional = array())
{
$result = new Requests\ResultFile();
$httpRes = false;
if(@$this->httpClient->query($this->type, $this->getUrl()))
$httpRes = $this->httpClient->getResult();
$errors = $this->httpClient->getError();
if (!$httpRes && !empty($errors))
{
$result = new Requests\Result();
foreach($errors as $errorCode => $errMes)
{
if($errMes == 'Socket connection error.')
{
$errMes = Loc::getMessage(
'SALE_DLVRS_ADD_DREQ_RBASE_SEND_ERROR',
array('#URL#' => $this->url)
);
}
$result->addError(new Main\Error($errMes, $errorCode));
}
}
else
{
$status = $this->httpClient->getStatus();
if ($status != 200)
{
if($status == 403)
$errorMsg = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASEF_04');
elseif($status == 404)
$errorMsg = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASEF_05');
elseif($status == 500)
$errorMsg = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASEF_06');
else
$errorMsg = 'Http status: '.$status;
$result->addError(new Main\Error($errorMsg,'STATUS_'.$status));
}
}
if($result->isSuccess())
{
$headers = $this->httpClient->getHeaders();
$fileName = $headers->getFilename();
if($fileName <> '')
{
$ext = '';
$contentType = $headers->getContentType();
if($contentType == 'application/zip')
{
$ext = 'zip';
}
elseif($contentType == 'application/pdf')
{
$ext = 'pdf';
}
if($ext <> '')
{
$fileName .= '.'.$ext;
}
$result->setFileName($fileName);
$result->setFileContent($httpRes);
}
}
return $result;
}
}