%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/webservice/install/components/bitrix/webservice.sale/ |
| Current File : /home/bitrix/www/bitrix/modules/webservice/install/components/bitrix/webservice.sale/component.php |
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("webservice"))
return;
if(!CModule::IncludeModule("sale"))
return;
class CSaleWS extends IWebService
{
function CheckAuth()
{
$saleRight = $GLOBALS["APPLICATION"]->GetGroupRight("sale");
if ($saleRight == "D")
{
$GLOBALS["USER"]->RequiredHTTPAuthBasic();
return new CSOAPFault('Server Error', 'Unable to authorize user.');
}
return False;
}
function GetLiveFeedData($site_id = "", $lang = "en")
{
global $MESS;
if (($r = CSaleWS::CheckAuth()) !== False)
return $r;
$saleRight = $GLOBALS["APPLICATION"]->GetGroupRight("sale");
CComponentUtil::__IncludeLang("/bitrix/components/bitrix/webservice.sale/", "/component_1.php", $lang);
$arFilter = array();
$server_name = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]);
$protocol = (CMain::IsHTTPS() ? "https" : "http");
if (strlen($site_id) > 0)
{
$rsSites = CSite::GetByID($arFields["SITE_ID"]);
if ($arSite = $rsSites->Fetch())
{
$arFilterLID = array("LID" => $site_id);
if (strlen($arSite["SERVER_NAME"]) > 0)
$server_name = $arSite["SERVER_NAME"];
}
$strSiteCurrency = CSaleLang::GetLangCurrency($site_id);
}
else
{
$arFilterLID = array();
$strSiteCurrency = CCurrency::GetBaseCurrency();
}
if ($saleRight != "W")
$arFilterPerms = array(
"STATUS_PERMS_GROUP_ID" => $GLOBALS["USER"]->GetUserGroupArray(),
">=STATUS_PERMS_PERM_VIEW" => "Y"
);
else
$arFilterPerms = array();
$d = date("w");
if($d < 1)
$d = -6;
elseif($d > 1)
$d = $d-1;
else
$d = 0;
$BeforeLastWeek_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".(14+$d)), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$BeforeLastWeek_maxDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".(7+$d), "SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$LastWeek_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".(7+$d)), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$LastWeek_maxDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".$d, "SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$ThisWeek_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".$d), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$ThisWeek_maxDate = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j")+1, date("Y")), "FULL");
$BeforeYesterday_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-2"), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$BeforeYesterday_maxDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-1", "SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$Yesterday_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-1"), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$Yesterday_maxDate = ConvertTimeStamp(AddToTimeStamp(array("SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
$Today_minDate = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j"), date("Y")), "FULL");
$Today_maxDate = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j")+1, date("Y")), "FULL");
$arDatePeriods = array(
"BEFORE_LAST_WEEK" => array(
"MIN_DATE" => $BeforeLastWeek_minDate,
"MAX_DATE" => $BeforeLastWeek_maxDate
),
"LAST_WEEK" => array(
"MIN_DATE" => $LastWeek_minDate,
"MAX_DATE" => $LastWeek_maxDate
),
"THIS_WEEK" => array(
"MIN_DATE" => $ThisWeek_minDate,
"MAX_DATE" => $ThisWeek_maxDate
),
"BEFORE_YESTERDAY" => array(
"MIN_DATE" => $BeforeYesterday_minDate,
"MAX_DATE" => $BeforeYesterday_maxDate
),
"YESTERDAY" => array(
"MIN_DATE" => $Yesterday_minDate,
"MAX_DATE" => $Yesterday_maxDate
),
"TODAY" => array(
"MIN_DATE" => $Today_minDate,
"MAX_DATE" => $Today_maxDate
)
);
$arStatus1 = array(
"CREATED" => array(
"NAME" => GetMessage("BX_WS_SALE_STATUS_1_CREATED"),
"DB_FIELD" => "DATE"
),
"PAID" => array(
"NAME" => GetMessage("BX_WS_SALE_STATUS_1_PAID"),
"DB_FIELD" => "DATE_PAYED"
),
"CANCELED" => array(
"NAME" => GetMessage("BX_WS_SALE_STATUS_1_CANCELED"),
"DB_FIELD" => "DATE_UPDATE",
"Y_FIELD" => "CANCELED"
),
"ALLOW_DELIVERY" =>array(
"NAME" => GetMessage("BX_WS_SALE_STATUS_1_ALLOW_DELIVERY"),
"DB_FIELD" => "DATE_UPDATE",
"Y_FIELD" => "ALLOW_DELIVERY"
)
);
foreach($arDatePeriods as $key => $arPeriod)
{
foreach($arStatus1 as $status_code => $arStatus)
{
$arOrderStats[$key][$status_code] = 0;
$arOrderStats[$key]["PRICE_".$status_code] = 0;
}
foreach($arStatus1 as $status_code => $arStatus)
{
if (
!is_array($arGadgetParams["ORDERS_STATUS_1"])
|| in_array($status_code, $arGadgetParams["ORDERS_STATUS_1"])
)
{
if (array_key_exists("Y_FIELD", $arStatus) && strlen($arStatus["Y_FIELD"]) > 0)
$arFilterYField = array($arStatus["Y_FIELD"] => "Y");
else
$arFilterYField = array();
$arFilter = array_merge(
array(
$arStatus["DB_FIELD"]."_FROM"=> $arPeriod["MIN_DATE"],
$arStatus["DB_FIELD"]."_TO" => $arPeriod["MAX_DATE"]
),
$arFilterLID,
$arFilterPerms,
$arFilterYField
);
$dbOrder = CSaleOrder::GetList(Array(), $arFilter, array("SUM" => "PRICE", "COUNT" => "ID"));
if($arOrder = $dbOrder->Fetch())
{
$arOrderStats[$key][$status_code] = $arOrder["ID"];
$arOrderStats[$key]["PRICE_".$status_code] = $arOrder["PRICE"];
}
}
}
}
$strSaleStat = '<table border="0">';
$strSaleStat .= '<tr><td> </td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td><b>'.$arStatus["NAME"].'</b></td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_TODAY").'</td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td align="center">'.intval($arOrderStats["TODAY"][$status_code]).'</td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_YESTERDAY").'</td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td align="center">'.intval($arOrderStats["YESTERDAY"][$status_code]).'</td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_BEFOREYESTERDAY").'</td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td align="center">'.intval($arOrderStats["BEFORE_YESTERDAY"][$status_code]).'</td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_THISWEEK").'</td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td align="center">'.intval($arOrderStats["THIS_WEEK"][$status_code]).'</td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_LASTWEEK").'</td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td align="center">'.intval($arOrderStats["LAST_WEEK"][$status_code]).'</td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_BEFORELASTWEEK").'</td>';
foreach($arStatus1 as $status_code => $arStatus)
$strSaleStat .= '<td align="center">'.intval($arOrderStats["BEFORE_LAST_WEEK"][$status_code]).'</td>';
$strSaleStat .= '</tr>';
$strSaleStat .= '</table>';
$strSaleStatText = '';
foreach($arStatus1 as $status_code => $arStatus)
{
$strSaleStatText .= '#BR#'.$arStatus["NAME"].'#BR#';
$strSaleStatText .= GetMessage("BX_WS_SALE_TODAY").' '.intval($arOrderStats["TODAY"][$status_code]).(intval($arOrderStats["TODAY"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["TODAY"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
$strSaleStatText .= GetMessage("BX_WS_SALE_YESTERDAY").' '.intval($arOrderStats["YESTERDAY"][$status_code]).(intval($arOrderStats["YESTERDAY"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["YESTERDAY"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
$strSaleStatText .= GetMessage("BX_WS_SALE_BEFOREYESTERDAY").' '.intval($arOrderStats["BEFORE_YESTERDAY"][$status_code]).(intval($arOrderStats["BEFORE_YESTERDAY"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["BEFORE_YESTERDAY"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
$strSaleStatText .= GetMessage("BX_WS_SALE_THISWEEK").' '.intval($arOrderStats["THIS_WEEK"][$status_code]).(intval($arOrderStats["THIS_WEEK"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["THIS_WEEK"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
$strSaleStatText .= GetMessage("BX_WS_SALE_LASTWEEK").' '.intval($arOrderStats["LAST_WEEK"][$status_code]).(intval($arOrderStats["LAST_WEEK"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["LAST_WEEK"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
$strSaleStatText .= GetMessage("BX_WS_SALE_BEFORELASTWEEK").' '.intval($arOrderStats["BEFORE_LAST_WEEK"][$status_code]).(intval($arOrderStats["BEFORE_LAST_WEEK"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["BEFORE_LAST_WEEK"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
}
$arResult = array(
"TITLE" => htmlspecialchars(GetMessage("BX_WS_SALE_LF_TITLE")),
"MESSAGE" => htmlspecialchars($strSaleStat),
"TEXT_MESSAGE" => htmlspecialchars($strSaleStatText),
"URL" => htmlspecialchars($protocol."://".$server_name."/bitrix/admin/sale_stat.php?lang=".$lang)
);
return $arResult;
}
function GetWebServiceDesc()
{
$wsdesc = new CWebServiceDesc();
$wsdesc->wsname = "bitrix.webservice.sale";
$wsdesc->wsclassname = "CSaleWS";
$wsdesc->wsdlauto = true;
$wsdesc->wsendpoint = CWebService::GetDefaultEndpoint();
$wsdesc->wstargetns = CWebService::GetDefaultTargetNS();
$wsdesc->classTypes = array();
$wsdesc->structTypes["LiveFeedData"] = Array(
"TITLE" => array("varType" => "string"),
"MESSAGE" => array("varType" => "string"),
"TEXT_MESSAGE" => array("varType" => "string"),
"URL" => array("varType" => "string")
);
$wsdesc->classes = array(
"CSaleWS" => array(
"GetLiveFeedData" => array(
"type" => "public",
"name" => "GetLiveFeedData",
"input" => array(
"site_id" => array("varType" => "string", "strict" => "no"),
"lang" => array("varType" => "string", "strict" => "no")
),
"output" => array(
"livefeeddata" => array("varType" => "LiveFeedData")
)
)
)
);
return $wsdesc;
}
}
$arParams["WEBSERVICE_NAME"] = "bitrix.webservice.sale";
$arParams["WEBSERVICE_CLASS"] = "CSaleWS";
$arParams["WEBSERVICE_MODULE"] = "";
$APPLICATION->IncludeComponent(
"bitrix:webservice.server",
"",
$arParams
);
die();
?>