ThinkPHP调用odoo80Web服务.docx
- 文档编号:17027314
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:17
- 大小:17.11KB
ThinkPHP调用odoo80Web服务.docx
《ThinkPHP调用odoo80Web服务.docx》由会员分享,可在线阅读,更多相关《ThinkPHP调用odoo80Web服务.docx(17页珍藏版)》请在冰点文库上搜索。
ThinkPHP调用odoo80Web服务
ThinkPHP调用odoo8.0Web服务
ThinkPHP调用odoo8.0Web服务,以下代码:
php
namespaceHome\Controller;
useThink\Controller;
useOrg\Ripcord\Ripcord;//
classApiControllerextendsController{
public$url;
public$db;
public$username;
public$password;
public$models;
public$common;
function__construct(){
self:
:
_initialize();
}
function_initialize(){
//$url='';
//$db='test';
//$username="admin";
//$password="admin";
//从官方获取一个测试账号与数据库
$info=Ripcord:
:
client('
list($this->url,$this->db,$this->username,$this->password)=array(
$info['host'],
$info['database'],
$info['user'],
$info['password']
);
$this->common=Ripcord:
:
client("$this->url/xmlrpc/2/common");
//Loggingin
$uid=$this->common->authenticate($this->db,$this->username,$this->password,array());
define(UID,$uid);
$this->models=Ripcord:
:
client("$this->url/xmlrpc/2/object");
}
/**
*获取版本
*/
publicfunctionversion(){
$data=$common->version();
dump($common);
dump($data);
}
/**
*检测权限
*/
publicfunctioncheck_access_rights(){
//检测对象是否有权限
$data=self:
:
execute_kw('res.partner','check_access_rights',array(
'read'
),array(
'raise_exception'=>false
));
dump($data);
}
publicfunctionsearch(){
//Listrecords
$data=self:
:
execute_kw('res.partner','search',array(
array(
array(
'is_company',
'=',
true
),
array(
'customer',
'=',
true
)
)
));
dump($data);
}
publicfunctionsearch_page(){
//Pagination
$data=self:
:
execute_kw('res.partner','search',array(
array(
array(
'is_company',
'=',
true
),
array(
'customer',
'=',
true
)
)
),array(
'offset'=>10,
'limit'=>5
));
dump($data);
}
publicfunctionsearch_count(){
//Countrecords
$data=self:
:
execute_kw('res.partner','search_count',array(
array(
array(
'is_company',
'=',
true
),
array(
'customer',
'=',
true
)
)
));
dump($data);
}
publicfunctionread_records(){
//Readrecords
$ids=self:
:
execute_kw('res.partner','search',array(
array(
array(
'is_company',
'=',
true
),
array(
'customer',
'=',
true
)
)
),array(
'limit'=>1
));
$records=self:
:
execute_kw('res.partner','read',array(
$ids
));
//countthenumberoffieldsfetchedbydefault
$data=count($records[0]);
dump($data);
}
publicfunctionread_field(){
//只显示需要的字段
$data=self:
:
execute_kw('res.partner','read',array(
$ids
),array(
'fields'=>array(
'name',
'country_id',
'comment'
)
));
dump($data);
}
publicfunctionrecord_attr(){
//Listingrecordfields
$data=self:
:
execute_kw('res.partner','fields_get',array(),array(
'attributes'=>array(
'string',
'help',
'type'
)
));
dump($data);
}
publicfunctionsearch_read(){
//Searchandread
$data=self:
:
execute_kw('res.partner','search_read',array(
array(
array(
'is_company',
'=',
true
),
array(
'customer',
'=',
true
)
)
),array(
'fields'=>array(
'name',
'country_id',
'comment'
),
'limit'=>5
));
dump($data);
}
publicfunctioncreate(){
//Createrecords
$id=self:
:
execute_kw('res.partner','create',array(
array(
'name'=>"NewPartner"
)
));
dump($id);
}
/**
*更新记录
*
*@paramunknown$id
*/
publicfunctionupdate($id){
//Updaterecords
self:
:
execute_kw('res.partner','write',array(
array(
$id
),
array(
'name'=>"Newerpartner"
)
));
}
publicfunctionname_get($id){
//getrecordnameafterhavingchangedit
$data=self:
:
execute_kw('res.partner','name_get',array(
array(
$id
)
));
dump($data);
}
publicfunctiondelete($id){
//Deleterecords
self:
:
execute_kw('res.partner','unlink',array(
array(
$id
)
));
//checkifthedeletedrecordisstillinthedatabase
$data=self:
:
execute_kw('res.partner','search',array(
array(
array(
'id',
'=',
$id
)
)
));
dump($data);
}
/**
*Availablereportscanbelistedbysearchingtheir.actions.report.xmlmodel,fieldsofinterestbeing
*model
*themodelonwhichthereportapplies,canbeusedtolookforavailablereportsonaspecificmodel
*name
*human-readablereportname
*report_name
*thetechnicalnameofthereport,usedtoprintit
*ReportscanbeprintedoverRPCwiththefollowinginformation:
*thenameofthereport(report_name)
*theidsoftherecordstoincludeinthereport
*/
publicfunctionreport(){
header("Pragma:
public");//required
header("Expires:
0");
header("Cache-Control:
must-revalidate,post-check=0,pre-check=0");
header("Cache-Control:
private",false);//requiredforcertainbrowsers
header("Content-Type:
application/pdf");
//header("Content-Disposition:
attachment;filename=\"".basename($fullPath)."\";");
header("Content-Transfer-Encoding:
binary");
//header("Content-Length:
".$fsize);
//Reportprinting
$invoice_ids=self:
:
execute_kw('account.invoice','search',array(
array(
array(
'type',
'=',
'out_invoice'
),
array(
'state',
'=',
'open'
)
)
));
$report=ripcord:
:
client("$this->url/xmlrpc/2/report");
$result=$report->render_report($this->db,UID,$this->password,'account.report_invoice',$invoice_ids);
$report_data=base64_decode($result['result']);
echo$report_data;
}
/**
*Whilewepreviouslyusedfields_get()toqueryamodel’sandhavebeenusinganarbitrarymodelfromthestart,Odoostoresmostmodelmetadatainsideafewmeta-modelswhichallowbothqueryingthesystemandalteringmodelsandfields(withsomelimitations)ontheflyoverXML-RPC.
*ir.model
*
*ProvidesinformationsaboutOdoomodelsthemselvesviaitsvariousfields
*name
*ahuman-readabledescriptionofthemodel
*model
*thenameofeachmodelinthesystem
*state
*whetherthemodelwasgeneratedinPythoncode(base)orbycreatinganir.modelrecord(manual)
*field_id
*listofthemodel’sfieldsthroughaOne2manytoir.model.fields
*view_ids
*One2manytotheViewsdefinedforthemodel
*access_ids
*One2manyrelationtotheAccessControlsetonthemodel
*ir.modelcanbeusedto
*querythesystemforinstalledmodels(asapreconditiontooperationsonthemodelortoexplorethesystem’scontent)
*getinformationaboutaspecificmodel(generallybylistingthefieldsassociatedwithit)
*createnewmodelsdynamicallyoverRPC
*Warning
*“custom”modelnamesmuststartwithx_
*thestatemustbeprovidedandmanual,otherwisethemodelwillnotbeloaded
*itisnotpossibletoaddnewmethodstoacustommodel,onlyfields
*/
publicfunctioninspection(){
//Inspectionandintrospection
self:
:
execute_kw('ir.model','create',array(
array(
'name'=>"CustomModel",
'model'=>'x_custom_model',
'state'=>'manual'
)
));
$data=self:
:
execute_kw('x_custom_model','fields_get',array(),array(
'attributes'=>array(
'string',
'help',
'type'
)
));
dump($data);
}
/**
*ir.model.fields
*
*ProvidesinformationsaboutthefieldsofOdoomodelsandallowsaddingcustomfieldswithoutusingPythoncode
*model_id
*Many2onetoir.modeltowhichthefieldbelongs
*name
*thefield’stechnicalname(usedinreadorwrite)
*field_description
*thefield’suser-readablelabel(e.g.stringinfields_get)
*ttype
*thetypeoffieldtocreate
*state
*whetherthefieldwascreatedviaPythoncode(base)orviair.model.fields(manual)
*required,readonly,translate
*enablesthecorrespondingflagonthefield
*groups
*field-levelaccesscontrol,aMany2manytores.groups
*selection,size,on_delete,relation,relation_field,domain
*type-specificpropertiesandcustomizations,seethefieldsdocumentationfordetails
*Likecustommodels,onlynewfieldscreatedwithstate="manual"areactivatedasactualfieldsonthemodel.
*computedfieldscannotbeaddedviair.model.fields,somefieldmeta-information(defaults,onchange)cannotbeseteither
*/
publicfunctioncustom_model(){
//
$id=self:
:
execute_kw('ir.model','create',array(
array(
'name'=>"CustomModel",
'model'=>'x_custom',
'state'=>'manual'
)
));
self:
:
execute_kw('ir.model.fields','create',array(
array(
'model_id'=>$id,
'name'=>'x_name',
'ttype'=>'char',
'state'=>'manual',
'required'=>true
)
));
$record_id=self:
:
execute_kw('x_custom','create',array(
array(
'x_name'=>"testrecord"
)
));
$data=self:
:
execute_kw('x_custom','read',array(
array(
$record_id
)
));
dump($data);
}
/**
*Workflowscanbemovedalongbysendingthemsignals.
*Insteadofusingthetop-levelexecute_kw,
*signalsaresentusingexec_workflow.Signalsaresenttoaspecificrecord,
*andpossiblytriggeratransitionontheworkflowinstanceassociatedwiththerecord.
*/
publicfunctionworkflow(){
//Workflowmanipulations
$client=self:
:
execute_kw('res.partner','search_read',array(
array(
array(
'customer',
'=',
true
)
)
),array(
'limit'=>1,
'fields'=>array(
'property_account_receivable',
'property_payment_term',
'property_account_position'
)
))[0];
$invoice_id=self:
:
execute_kw('account.invoice','create',array(
array(
'partner_id'=>$client['id'],
'account_id'=>$client['property_account_receivable'][0],
'invoice_line'=>array(
array(
0,
false,
array(
'name'=>"AAA"
)
)
)
)
));
$this->models->exec_workflow($this->db,$this->uid,$this->password,'account.invoice','invoice_open',$invoice_id);
}
publicfunctionindex(){
dump($this);
}
publicfunctionexecute_kw($objName,$cmd,$args){
$data=$this->models->execute_kw($this->db,UID,$this->password,$objName,$cmd,$args);
return$data;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ThinkPHP 调用 odoo80Web 服务