Файл WSDL находится здесь: http://www.rasd.ro/BSEFinancialsWS/financials.asmx?WSDL
Вот операционная страница: http://www.rasd.ro/BSEFinancialsWS/financials.asmx?op=GetCompanyBalance
Для IdentityType Попробуйте Символ
Для Идентичность Попробуйте BVB
Для ReportType try Q1
Для Год Попробуйте 2011
По сути, вы получите:
> <CompanyBalance>
> <Company>
> <CompanyName>SC BURSA DE VALORI BUCURESTI SA</CompanyName>
> <FiscalCode>17777754</FiscalCode>
> </Company>
> <LastYear>2011</LastYear>
> <ReportType>Q1</ReportType>
> <NetCrtLiab>64931998</NetCrtLiab>
> <CrtAssets>67220118</CrtAssets>
> <FixedAssets>25299375</FixedAssets>
> <PaidUpCap>76741980</PaidUpCap>
> <ShahEqy>90231373</ShahEqy>
> <OpExp>2975724</OpExp>
> <ExtrExp>0</ExtrExp>
> <FinExp>1411570</FinExp>
> <TotExp>4387294</TotExp>
> <NetTurn>5977651</NetTurn>
> <Debt1>0</Debt1>
> <Debt2>2086920</Debt2>
> <TotLiab>2086920</TotLiab>
> <BackPay>0</BackPay>
> <NoPaidTax>0</NoPaidTax>
> <Empl>57</Empl> <BackLiab>0</BackLiab>
> <BackPaym>0</BackPaym>
> <Gross>2624119</Gross>
> <OpRes>3002199</OpRes>
> <ExtrRes>0</ExtrRes>
> <FinRes>-378080</FinRes>
> <NetRes>2196413</NetRes>
> <CurrRes>2624119</CurrRes>
> <ResPerShare xsi:nil="true"/>
> <TotAssets>90231373</TotAssets>
> <TotReceiv>3368756</TotReceiv>
> <RevInAdv>584055</RevInAdv>
> <OpIncome>5977923</OpIncome>
> <ExIncome>0</ExIncome>
> <FinInc>1033490</FinInc>
> <TotRev>**7011413**</TotRev>
> </CompanyBalance>
Обратите внимание на значение TotRev ? Ну, это должно быть s exactly how it
.
Теперь в моей реализации SoapClient у меня есть:
...
static $WSConf=array(
'financials'=>array('host'=>'rasd.ro','port'=>80,'wsdlURL'=>'http://www.rasd.ro/BSEFinancialsWS/financials.asmx?WSDL'),
'companies'=>array('host'=>'rasd.ro','port'=>80,'wsdlURL'=>'http://www.rasd.ro/BSEFinancialsWS/companiesandsecurities.asmx?WSDL'),);
...
private static function S($name) {
$name=strtolower($name);
if(!is_object(self::$soapClients[$name])) {
self::$soapClients[$name] = new SoapClient(self::$WSConf[$name]['wsdlURL']);
}
if(is_object(self::$soapClients[$name])) {
self::Delay();
return self::$soapClients[$name];
}
error_log('site.ro '.__FILE__.' error'."\n\n".__FILE__.': '.__CLASS___.'::'.__METHOD__."\n\n msc_WebServBVB2 ".date('Y-M-d H:i:s')."\nCannot init webservice {$name}", 3, WSBVBExtLOG);
}
...
public static function RaportareFinanciara($simbol,$timestampOrAn,$trimestru=false){
self::timerReset();
if(empty($trimestru)) {
$trimestru=utilsDT::Quarter($timestampOrAn);
$an=date('Y',$timestampOrAn);
}else{
$an=$timestampOrAn;
}
$IdentityType='Symbol';
$Identity=$simbol;
$Year=$an;
$ReportType=strtr($trimestru,array('1'=>'Q1','2'=>'Semestrial','3'=>'Q3','4'=>'Annual'));
$balanceType=self::GetBalanceType($IdentityType,$Identity,$ReportType,$Year);
$type=$balanceType['BalanceType'];
if(!empty($type)) {
switch($type) {
case 'Company':
$balance=self::GetCompanyBalance($IdentityType,$Identity,$ReportType,$Year);
break;
case 'Bank':
$balance=self::GetBankBalance($IdentityType,$Identity,$ReportType,$Year);
break;
case 'Assurance':
$balance=self::GetInsuranceBalance($IdentityType,$Identity,$ReportType,$Year);
break;
case 'Fund':
$balance=self::GetInvestmentFundsBalance($IdentityType,$Identity,$ReportType,$Year);
break;
default:
return false;
}
if(!empty($balance)) {
if(self::$debug) {
self::timerAddAction("Mapping balance fields to compatibility names for ".strtolower($type));
}
if(isset(self::$BVBROAPI_FldCorespCustom[strtolower($type)])) {
$FldCoresp=array_merge(self::$BVBROAPI_FldCoresp,self::$BVBROAPI_FldCorespCustom[strtolower($type)]);
}else{
$FldCoresp=self::$BVBROAPI_FldCoresp;
}
if(self::$debug) {
print_r($FldCoresp);
}
$result=array();
foreach($FldCoresp as $compat_name=>$wsname) {
if(isset($balance[$wsname])) {
$result[$compat_name]=$balance[$wsname];
}
}
$result['BallanceType']=$type;
if(!empty($result)) {
if(self::$debug) {
self::timerPrintInfo();
}
return $result;
}
}
if(self::$debug) {
self::timerAddAction("Balance empty");
}
}
if(self::$debug) {
self::timerPrintInfo();
}
return false;
}
...
публичная статическая функция GetCompanyBalance ($ IdentityType, $ Identity, $ ReportType, $ Year) {
самостоятельно :: timerReset ();
<code> if(self::$debug) {
self::timerAddAction("Called GetCompanyBalance ($IdentityType,$Identity,$ReportType,$Year) Method");
}
$cacheid='webservbvbext_balance'.$IdentityType.$Identity.$ReportType.$Year;
if(self::$debug) {
self::timerAddAction("Checking cache");
}
if(self::CM()->cacheIsExpired($cacheid)) {
if(self::$debug) {
self::timerAddAction("Calling webservice Method");
}
try{
$rawresult=self::S('Financials')->GetCompanyBalance(array('IdentityType'=>$IdentityType,'Identity'=>$Identity,'ReportType'=>$ReportType,'Year'=>$Year));
} catch (Exception $e) {
if(self::$debug) {
self::timerAddAction('Caught exception: ', $e->getMessage());
}
return false;
}
if(self::$debug) {
echo '<pre>';
print_r($rawresult);
echo '
';
}
if (self :: $ debug) {
self :: timerAddAction ("Отображение полей массива");
}
if (! empty ($ rawresult) && sizeof ($ rawresult)> = 1) {
$ Полей = массив ();
foreach ($ rawresult-> GetCompanyBalanceResult as $ key => $ Field) {
$ Field = (is_object ($ Field)? (Массив) $ Field: $ Field);
$ поля [$ ключ] = $ Field;
}
if ($ fields ['LastYear']! = $ Year || $ fields ['ReportType']! = $ ReportType) {
вернуть ложь;
}
if (self :: $ debug) {
self :: timerAddAction («Результаты кэширования»);
}
самостоятельно :: CM () -> cacheThis ($ CacheId, '', само :: $ cacheTime [ 'балланс'], $ поля, правда);
if (self :: $ debug) {
self :: timerAddAction («Завершено кэширование. Возвращаем данные»);
}
if (self :: $ debug) {
самостоятельно :: timerPrintInfo ();
}
if (! empty ($ fields)) {
вернуть $ поля;
}
}
вернуть ложь;
} Еще {
$ Из = само :: CM () -> getCached ($ CacheId);
if (is_array ($ out) &&! empty ($ out)) {
if (self :: $ debug) {
self :: timerAddAction ("Детали кэшированного запроса:" .date ('Y.m.d H: i: s', self :: CM () -> cacheTimeStmp ($ cacheid)));
самостоятельно :: timerPrintInfo ();
}
вернуть $ out;
}
вернуть ложь;
}
...
Так работает примерно так:
<code> $result=msc_WebServBVBExt::GetCompanyBalance('Symbol','BVB','Q1',2011);
echo "<pre>";
print_r($result);
echo "
";
Возвращает:
Array
(
[Company] => Массив
(
[CompanyName] => SC BURSA DE VALORI BUCURESTI SA
[FiscalCode] => 17777754
)
[LastYear] => 2011
[ReportType] => Q1
[NetCrtLiab] => 6493199800
[CrtAssets] => 6722011800
[FixedAssets] => 2529937500
[PaidUpCap] => 7674198000
[ShahEqy] => 9023137300
[OpExp] => 297572400
[ExtrExp] => 0
[FinExp] => 141157000
[TotExp] => 438729400
[NetTurn] => 597765100
[Debt1] => 0
[Debt2] => 208692000
[TotLiab] => 208692000
[BackPay] => 0
[NoPaidTax] => 0
[Empl] => 57
[BackLiab] => 0
[BackPaym] => 0
[Gross] => 262411900
[OpRes] => 300219900
[ExtrRes] => 0
[FinRes] => -37808000
[NetRes] => 219641300
[CurrRes] => 262411900
[ResPerShare] =>
[TotAssets] => 9023137300
[TotReceiv] => 336875600
[RevInAdv] => 58405500
[OpIncome] => 597792300
[ExIncome] => 0
[FinInc] => 103349000
**[TotRev] => 701141300**
)
}
Как вы заметили из последнего значения, к его концу добавлены 2 нуля.
Есть идеи почему?