public function getTransactionList($merchantList = null, \DateTime $dStartDate = null, \DateTime $dEndDate = null)
{
$totalTransactions = array();
$merchantIdList = \Oara\Utilities::getMerchantIdMapFromMerchantList($merchantList);
$dEndDate->add(new \DateInterval('P1D'));
$publisherStatisticsServiceUrl = 'https://api.affili.net/V2.0/PublisherStatistics.svc?wsdl';
$publisherStatisticsService = new \SoapClient($publisherStatisticsServiceUrl, array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE, 'soap_version' => SOAP_1_1));
$iterationNumber = self::calculeIterationNumber(\count($merchantIdList), 100);
for ($currentIteration = 0; $currentIteration < $iterationNumber; $currentIteration++) {
$merchantListSlice = \array_slice(\array_keys($merchantIdList), 100 * $currentIteration, 100);
$merchantListAux = array();
foreach ($merchantListSlice as $merchant) {
$merchantListAux[] = (string) $merchant;
}
$params = array('StartDate' => \strtotime($dStartDate->format("Y-m-d")), 'EndDate' => \strtotime($dEndDate->format("Y-m-d")), 'TransactionStatus' => 'All', 'ProgramIds' => $merchantListAux);
$currentPage = 1;
$transactionList = self::affilinetCall('transaction', $publisherStatisticsService, $params, 0, $currentPage);
while (isset($transactionList->TotalRecords) && $transactionList->TotalRecords > 0 && isset($transactionList->TransactionCollection->Transaction)) {
$transactionCollection = array();
if (!\is_array($transactionList->TransactionCollection->Transaction)) {
$transactionCollection[] = $transactionList->TransactionCollection->Transaction;
} else {
$transactionCollection = $transactionList->TransactionCollection->Transaction;
}
foreach ($transactionCollection as $transactionObject) {
$transaction = array();
$transaction["status"] = $transactionObject->TransactionStatus;
$transaction["unique_id"] = $transactionObject->TransactionId;
$transaction["commission"] = $transactionObject->PublisherCommission;
$transaction["amount"] = $transactionObject->NetPrice;
$dateString = \explode(".", $transactionObject->RegistrationDate);
$transactionDate = \DateTime::createFromFormat("Y-m-d\\TH:i:s", $dateString[0]);
$transaction["date"] = $transactionDate->format("Y-m-d H:i:s");
$transaction["merchantId"] = $transactionObject->ProgramId;
$transaction["custom_id"] = $transactionObject->SubId;
if ($transaction['status'] == 'Confirmed') {
$transaction['status'] = \Oara\Utilities::STATUS_CONFIRMED;
} else {
if ($transaction['status'] == 'Open') {
$transaction['status'] = \Oara\Utilities::STATUS_PENDING;
} else {
if ($transaction['status'] == 'Cancelled') {
$transaction['status'] = \Oara\Utilities::STATUS_DECLINED;
}
}
}
$totalTransactions[] = $transaction;
}
$currentPage++;
$transactionList = self::affilinetCall('transaction', $publisherStatisticsService, $params, 0, $currentPage);
}
}
return $totalTransactions;
}