bereank / coupler
一个专门为与SAP Business One服务层API无缝集成而设计的Laravel-PHP库。
Requires (Dev)
- orchestra/testbench: 8.0
- phpunit/phpunit: ^10.0
README
一个专门为与SAP Business One服务层API无缝集成而设计的Laravel-PHP库。
它受到了syedhussim的 php-sapb1 的极大启发。
安装
您可以通过composer安装此包
composer require bereank/coupler
用法
创建一个数组来存储您的SAP Business One服务层配置详情。
$config = [ 'https' => true, 'host' => 'IP or Hostname', 'port' => 50000, 'sslOptions' => [ "cafile" => "path/to/certificate.crt", "verify_peer" => true, "verify_peer_name" => true, ], 'version' => 2 ];
创建一个新的服务层会话。
$sap = SAPClient::createSession($config, 'SAP UserName', 'SAP Password', 'Company');
静态 createSession() 方法将返回一个 SAPClient 的新实例。SAPClient对象提供了一个 service($name) 方法,该方法返回一个具有指定名称的新服务实例。使用此服务对象,您可以执行CRUD操作。
查询服务
服务类的 queryBuilder() 方法返回一个 Query 的新实例。Query类允许您使用链式方法来筛选请求的服务。
以下代码示例展示了如何使用Orders服务筛选销售订单。
$sap = SAPClient::createSession($config, 'SAP UserName', 'SAP Password', 'Company'); $orders = $sap->getService('Orders'); $result = $orders->queryBuilder() ->select('DocEntry,DocNum') ->orderBy('DocNum', 'asc') ->limit(5) ->findAll();
findAll() 方法将返回一个匹配搜索条件的记录集合。要使用 id 返回特定记录,请使用 find($id) 方法。
... $orders = $sap->getService('Orders'); $result = $orders->queryBuilder() ->select('DocEntry,DocNum') ->find(123456); // DocEntry value
根据服务,$id 可能是一个数值或字符串。如果您想知道哪个字段用作服务的 id,请像下面这样在服务对象上调用 getMetaData() 方法。
... $meta = $orders->getMetaData();
创建服务
以下代码示例展示了如何使用服务对象的 create() 方法创建新的销售订单。
... $orders = $sap->getService('Orders'); $result = $orders->create([ 'CardCode' => 'BP Card Code', 'DocDueDate' => 'Doc due date', 'DocumentLines' => [ [ "ItemCode" => "Item Code", "Quantity" => 100, ] ] ]);
您必须提供创建销售订单所需的所有用户定义字段。如果成功,新创建的销售订单将作为对象返回。
更新服务
以下代码示例演示了如何使用服务对象的 update() 方法更新服务。
... $orders = $sap->getService('Orders'); $result = $orders->update(19925, [ 'Comments' => 'Comment added here' ]);
请注意,update() 方法的第一个参数是要更新的实体的 id。在销售订单的情况下,id 是 DocEntry 字段。如果更新成功,则返回一个布尔值 true。
添加头信息
您可以通过在服务实例上调用 headers() 方法并传递一个包含头信息的数组来指定 oData 头信息。
... $orders = $sap->getService('Orders'); $orders->headers(['Prefer' => 'odata.maxpagesize=0']); $result = $orders->queryBuilder() ->select('DocEntry,DocNum') ->find(123456); // DocEntry value
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请审查 我们的安全策略,了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。