From c688aa98e67cdf5a5ee875427a5badd022024317 Mon Sep 17 00:00:00 2001 From: Freerk Minnema Date: Thu, 24 Jan 2019 10:23:28 +0100 Subject: [PATCH] Added: - getTableListV2 - getPackingSlips - getCashDrawerBalancingList - getActivities - createActivity - updateActivity - deleteActivity --- Mplusqapiclient.php | 432 ++++++++++++++++++++++++++++-- Mplusqapiclient_versiontester.php | 38 ++- 2 files changed, 438 insertions(+), 32 deletions(-) diff --git a/Mplusqapiclient.php b/Mplusqapiclient.php index 2821904..5a93910 100755 --- a/Mplusqapiclient.php +++ b/Mplusqapiclient.php @@ -2,7 +2,7 @@ class MplusQAPIclient { - const CLIENT_VERSION = '1.11.0'; + const CLIENT_VERSION = '1.12.0'; var $MIN_API_VERSION_MAJOR = 0; @@ -900,6 +900,26 @@ public function getTableList($terminal, $attempts=0) //---------------------------------------------------------------------------- + public function getTableListV2($terminal, $attempts=0) + { + try { + $result = $this->client->getTableListV2($this->parser->convertTerminal($terminal)); + return $this->parser->parseTableListV2($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->getTableListV2($terminal, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END getTableListV2() + + //---------------------------------------------------------------------------- + public function getAvailablePaymentMethods($terminal, $attempts=0) { try { @@ -1564,16 +1584,16 @@ public function deliverOrderV2($orderDelivery, $attempts=0) //---------------------------------------------------------------------------- - public function getProposals($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $supplierRelationNumbers=null, $syncMarkerLimit=null, $attempts=0) + public function getProposals($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $supplierRelationNumbers=null, $syncMarkerLimit=null, $activityId=null, $attempts=0) { try { - $result = $this->client->getProposals($this->parser->convertGetProposalsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers)); + $result = $this->client->getProposals($this->parser->convertGetProposalsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $activityId)); return $this->parser->parseGetProposalsResult($result); } catch (SoapFault $e) { $msg = $e->getMessage(); if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { sleep(1); - return $this->getProposals($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $syncMarkerLimit, $attempts+1); + return $this->getProposals($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $syncMarkerLimit, $activityId, $attempts+1); } else { throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); } @@ -1624,6 +1644,26 @@ public function getOrder($orderId, $attempts=0) //---------------------------------------------------------------------------- + public function getPackingSlips($syncMarker, $syncMarkerLimit=null, $fromFinancialDate=null, $throughFinancialDate=null, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $supplierRelationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $activityId=null, $attempts=0) + { + try { + $result = $this->client->getPackingSlips($this->parser->convertGetPackingSlipsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $supplierRelationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $activityId)); + return $this->parser->parseGetPackingSlipsResult($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->getPackingSlips($syncMarker, $syncMarkerLimit, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END getPackingSlips() + + //---------------------------------------------------------------------------- + public function getPackingSlipsByOrder($orderId, $attempts=0) { try { @@ -1640,20 +1680,20 @@ public function getPackingSlipsByOrder($orderId, $attempts=0) } catch (Exception $e) { throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); } - } // END getOrder() + } // END getPackingSlipsByOrder() //---------------------------------------------------------------------------- - public function getOrders($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $syncMarkerLimit=null, $attempts=0) + public function getOrders($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $syncMarkerLimit=null, $activityId=null, $attempts=0) { try { - $result = $this->client->getOrders($this->parser->convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit)); + $result = $this->client->getOrders($this->parser->convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, null, $activityId)); return $this->parser->parseGetOrdersResult($result); } catch (SoapFault $e) { $msg = $e->getMessage(); if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { sleep(1); - return $this->getOrders($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $attempts+1); + return $this->getOrders($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $activityId, $attempts+1); } else { throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); } @@ -1664,13 +1704,19 @@ public function getOrders($syncMarker, $fromFinancialDate, $throughFinancialDate //---------------------------------------------------------------------------- - public function getOrderChanges($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers = null, $employeeNumbers = null, $relationNumbers = null, $articleNumbers = null, $articleTurnoverGroups = null, $articlePluNumbers = null, $articleBarcodes = null, $syncMarkerLimit = null, $orderTypeList = null) + public function getOrderChanges($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $syncMarkerLimit=null, $orderTypeList=null, $activityId=null, $attempts=0) { try { - $result = $this->client->getOrderChanges($this->parser->convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $orderTypeList)); + $result = $this->client->getOrderChanges($this->parser->convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $orderTypeList, $activityId)); return $this->parser->parseGetOrderChangesResult($result); } catch (SoapFault $e) { - throw new MplusQAPIException('SoapFault occurred: '.$e->getMessage(), 0, $e); + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->getOrderChanges($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $orderTypeList, $activityId, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } } catch (Exception $e) { throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); } @@ -1898,16 +1944,16 @@ public function deliverInterbranchShipment($interbranchShipmentNumber, $branchNu //---------------------------------------------------------------------------- - public function getReceipts($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $supplierRelationNumbers=null, $syncMarkerLimit=null, $includeOrderReferences=null, $attempts=0) + public function getReceipts($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $supplierRelationNumbers=null, $syncMarkerLimit=null, $includeOrderReferences=null, $activityId=null, $attempts=0) { try { - $result = $this->client->getReceipts($this->parser->convertGetReceiptsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $includeOrderReferences)); + $result = $this->client->getReceipts($this->parser->convertGetReceiptsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $includeOrderReferences, $activityId)); return $this->parser->parseGetReceiptsResult($result); } catch (SoapFault $e) { $msg = $e->getMessage(); if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { sleep(1); - return $this->getReceipts($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $syncMarkerLimit, $attempts+1); + return $this->getReceipts($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $syncMarkerLimit, $includeOrderReferences, $activityId, $attempts+1); } else { throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); } @@ -1958,16 +2004,16 @@ public function getReceiptsByCashCount($cashCountId, $attempts=0) //---------------------------------------------------------------------------- - public function getInvoices($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $supplierRelationNumbers=null, $finalizeInvoices=null, $syncMarkerLimit=null, $attempts=0) + public function getInvoices($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers=null, $employeeNumbers=null, $relationNumbers=null, $articleNumbers=null, $articleTurnoverGroups=null, $articlePluNumbers=null, $articleBarcodes=null, $supplierRelationNumbers=null, $finalizeInvoices=null, $syncMarkerLimit=null, $activityId=null, $attempts=0) { try { - $result = $this->client->getInvoices($this->parser->convertGetInvoicesRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $finalizeInvoices)); + $result = $this->client->getInvoices($this->parser->convertGetInvoicesRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $finalizeInvoices, $activityId)); return $this->parser->parseGetInvoicesResult($result); } catch (SoapFault $e) { $msg = $e->getMessage(); if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { sleep(1); - return $this->getInvoices($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $finalizeInvoices, $syncMarkerLimit, $attempts+1); + return $this->getInvoices($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $finalizeInvoices, $syncMarkerLimit, $activityId, $attempts+1); } else { throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); } @@ -2118,6 +2164,26 @@ public function getCashCountList($fromFinancialDate, $throughFinancialDate, $sin //---------------------------------------------------------------------------- + public function getCashDrawerBalancingList($fromFinancialDate, $throughFinancialDate, $syncMarker=null, $syncMarkerLimit=null, $attempts=0) + { + try { + $result = $this->client->getCashDrawerBalancingList($this->parser->convertGetCashDrawerBalancingListRequest($fromFinancialDate, $throughFinancialDate, $syncMarker, $syncMarkerLimit)); + return $this->parser->parseGetCashDrawerBalancingListResult($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->getCashDrawerBalancingList($fromFinancialDate, $throughFinancialDate, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END getCashDrawerBalancingList() + + //---------------------------------------------------------------------------- + public function getTurnoverGroups($attempts=0) { try { @@ -2957,6 +3023,86 @@ public function encryptString($plainString, $encryptionKey, $attempts=0) //---------------------------------------------------------------------------- + public function getActivities($syncMarker, $syncMarkerLimit, $attempts=0) + { + try { + $result = $this->client->getActivities($this->parser->convertGetActivitiesRequest($syncMarker, $syncMarkerLimit)); + return $this->parser->parseGetActivitiesResult($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->getActivities($syncMarker, $syncMarkerLimit, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END getActivities() + + //---------------------------------------------------------------------------- + + public function createActivity($createActivity, $attempts=0) + { + try { + $result = $this->client->createActivity($this->parser->convertCreateActivityRequest($createActivity)); + return $this->parser->parseCreateActivityResult($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->createActivity($createActivity, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END createActivity() + + //---------------------------------------------------------------------------- + + public function updateActivity($updateActivity, $attempts=0) + { + try { + $result = $this->client->updateActivity($this->parser->convertUpdateActivityRequest($updateActivity)); + return $this->parser->parseUpdateActivityResult($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->updateActivity($updateActivity, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END updateActivity() + + //---------------------------------------------------------------------------- + + public function deleteActivity($activityId, $attempts=0) + { + try { + $result = $this->client->deleteActivity($this->parser->convertDeleteActivityRequest($activityId)); + return $this->parser->parseDeleteActivityResult($result); + } catch (SoapFault $e) { + $msg = $e->getMessage(); + if (false !== stripos($msg, 'Could not connect to host') and $attempts < 3) { + sleep(1); + return $this->deleteActivity($activityId, $attempts+1); + } else { + throw new MplusQAPIException('SoapFault occurred: '.$msg, 0, $e); + } + } catch (Exception $e) { + throw new MplusQAPIException('Exception occurred: '.$e->getMessage(), 0, $e); + } + } // END deleteActivity() + + //---------------------------------------------------------------------------- + } //============================================================================== @@ -3207,6 +3353,20 @@ public function parseTableList($soapTableList) //---------------------------------------------------------------------------- + public function parseTableListV2($soapTableListV2) + { + if (isset($soapTableListV2->wholeTable)) { + $soapTableListV2 = $soapTableListV2->wholeTable; + } + $table_list = array(); + foreach ($soapTableListV2 as $soapTableV2) { + $table_list[] = objectToArray($soapTableV2); + } + return $table_list; + } // END parseTableListV2() + + //---------------------------------------------------------------------------- + public function parseAvailablePaymentMethods($soapAvailablePaymentMethods) { if (isset($soapAvailablePaymentMethods->paymentMethodList->paymentMethod)) { @@ -4195,6 +4355,32 @@ public function parseDeliverInterbranchShipmentResult($in) //---------------------------------------------------------------------------- + public function parseGetPackingSlipsResult($soapPackingSlipsResult) + { + $packing_slips = array(); + if (isset($soapPackingSlipsResult->packingSlipList->packingSlip)) { + $soapPackingSlips = $soapPackingSlipsResult->packingSlipList->packingSlip; + $packing_slips = objectToArray($soapPackingSlips); + foreach ($packing_slips as $key => $packing_slip) { + if (isset($packing_slip['lineList']['line'])) { + $packing_slip['lineList'] = $packing_slip['lineList']['line']; + } else { + $packing_slip['lineList'] = array(); + } + foreach ($packing_slip['lineList'] as $line_key => $line) { + if (isset($line['preparationList']['line'])) { + $line['preparationList'] = $line['preparationList']['line']; + } + $packing_slip['lineList'][$line_key] = $line; + } + $packing_slips[$key] = $packing_slip; + } + } + return $packing_slips; + } // END parseGetPackingSlipsResult() + + //---------------------------------------------------------------------------- + public function parseGetPackingSlipsByOrderResult($soapPackingSlipsByOrdersResult) { $packing_slips = array(); @@ -4310,6 +4496,26 @@ public function parseGetCashCountListResult($soapCashCountListResult) //---------------------------------------------------------------------------- + public function parseGetCashDrawerBalancingListResult($soapCashDrawerBalancingListResult) + { + $cashDrawerBalancingList = array(); + if (isset($soapCashDrawerBalancingListResult->cashDrawerBalancingList->cashDrawerBalancing)) { + $soapCashDrawerBalancingList = $soapCashDrawerBalancingListResult->cashDrawerBalancingList->cashDrawerBalancing; + $cashDrawerBalancingList = objectToArray($soapCashDrawerBalancingList); + /*foreach ($cashCountList as $idx => $cashCount) { + if (isset($cashCount['cashCountLineList'])) { + if (isset($cashCount['cashCountLineList']['cashCountLine'])) { + $cashCount['cashCountLineList'] = $cashCount['cashCountLineList']['cashCountLine']; + } + } + $cashCountList[$idx] = $cashCount; + }*/ + } + return $cashDrawerBalancingList; + } // END parseGetCashDrawerBalancingListResult() + + //---------------------------------------------------------------------------- + public function parseWordAliases($soapWordAliases) { $word_aliases = array(); @@ -5128,6 +5334,40 @@ public function parseUpdateProductResult($soapUpdateProductResult) { //---------------------------------------------------------------------------- + public function parseGetActivitiesResult($soapGetActivitiesResult) + { + $activities = array(); + if (isset($soapGetActivitiesResult->activityList->activity)) { + foreach ($soapGetActivitiesResult->activityList->activity as $soapActivity) { + $activities[] = objectToArray($soapActivity); + } + } + return $activities; + } // END parseGetActivitiesResult() + + //---------------------------------------------------------------------------- + + public function parseCreateActivityResult($soapCreateActivityResult) + { + i($soapCreateActivityResult); + } // END parseCreateActivityResult() + + //---------------------------------------------------------------------------- + + public function parseUpdateActivityResult($soapUpdateActivityResult) + { + i($soapUpdateActivityResult); + } // END parseUpdateActivityResult() + + //---------------------------------------------------------------------------- + + public function parseDeleteActivityResult($soapDeleteActivityResult) + { + i($soapDeleteActivityResult); + } // END parseDeleteActivityResult() + + //---------------------------------------------------------------------------- + public function convertGetPaymentMethodsV2Request($accountNumber) { $array = array('request'=>array()); @@ -5306,7 +5546,7 @@ public function convertGetShiftsRequest($fromFinancialDate, $throughFinancialDat //---------------------------------------------------------------------------- - public function convertGetReceiptsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $includeOrderReferences) + public function convertGetReceiptsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $includeOrderReferences, $activityId) { $fromFinancialDate = is_null($fromFinancialDate)?null:$this->convertMplusDate($fromFinancialDate, 'fromFinancialDate'); $throughFinancialDate = is_null($throughFinancialDate)?null:$this->convertMplusDate($throughFinancialDate, 'throughFinancialDate'); @@ -5356,6 +5596,10 @@ public function convertGetReceiptsRequest($syncMarker, $syncMarkerLimit, $fromFi $request['supplierRelationNumbers'] = array_values($supplierRelationNumbers); } + if (!is_null($activityId)) { + $request['activityId'] = $activityId; + } + if (!is_null($includeOrderReferences)) { if (is_bool($includeOrderReferences)) { $request['includeOrderReferences'] = $includeOrderReferences; @@ -5475,6 +5719,10 @@ public function convertGetProposalsRequest($syncMarker, $syncMarkerLimit, $fromF } $request['supplierRelationNumbers'] = array_values($supplierRelationNumbers); } + + if (!is_null($activityId)) { + $request['activityId'] = $activityId; + } $object = arrayToObject(array('request'=>$request)); return $object; @@ -5482,7 +5730,7 @@ public function convertGetProposalsRequest($syncMarker, $syncMarkerLimit, $fromF //---------------------------------------------------------------------------- - public function convertGetInvoicesRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $finalizeInvoices) + public function convertGetInvoicesRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $supplierRelationNumbers, $finalizeInvoices, $activityId) { $fromFinancialDate = is_null($fromFinancialDate)?null:$this->convertMplusDate($fromFinancialDate, 'fromFinancialDate'); $throughFinancialDate = is_null($throughFinancialDate)?null:$this->convertMplusDate($throughFinancialDate, 'throughFinancialDate'); @@ -5532,6 +5780,10 @@ public function convertGetInvoicesRequest($syncMarker, $syncMarkerLimit, $fromFi $request['supplierRelationNumbers'] = array_values($supplierRelationNumbers); } + if (!is_null($activityId)) { + $request['activityId'] = $activityId; + } + if ( ! is_null($finalizeInvoices) and is_bool($finalizeInvoices)) { $request['finalizeInvoices'] = $finalizeInvoices; } @@ -5543,7 +5795,66 @@ public function convertGetInvoicesRequest($syncMarker, $syncMarkerLimit, $fromFi //---------------------------------------------------------------------------- - public function convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $orderTypeList=null) + public function convertGetPackingSlipsRequest($syncMarker, $syncMarkerLimit, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $supplierRelationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $activityId) + { + $fromFinancialDate = is_null($fromFinancialDate)?null:$this->convertMplusDate($fromFinancialDate, 'fromFinancialDate'); + $throughFinancialDate = is_null($throughFinancialDate)?null:$this->convertMplusDate($throughFinancialDate, 'throughFinancialDate'); + if ( ! is_array($branchNumbers) and ! is_null($branchNumbers)) { + $branchNumbers = array($branchNumbers); + } + if ( ! is_array($employeeNumbers) and ! is_null($employeeNumbers)) { + $employeeNumbers = array($employeeNumbers); + } + if ( ! is_array($relationNumbers) and ! is_null($relationNumbers)) { + $relationNumbers = array($relationNumbers); + } + if ( ! is_array($supplierRelationNumbers) and ! is_null($supplierRelationNumbers)) { + $supplierRelationNumbers = array($supplierRelationNumbers); + } + if ( ! is_array($articleNumbers) and ! is_null($articleNumbers)) { + $articleNumbers = array($articleNumbers); + } + if ( ! is_array($articleTurnoverGroups) and ! is_null($articleTurnoverGroups)) { + $articleTurnoverGroups = array($articleTurnoverGroups); + } + if ( ! is_array($articlePluNumbers) and ! is_null($articlePluNumbers)) { + $articlePluNumbers = array($articlePluNumbers); + } + if ( ! is_array($articleBarcodes) and ! is_null($articleBarcodes)) { + $articleBarcodes = array($articleBarcodes); + } + + $array = array(); + if ( ! is_null($syncMarker)) { + $array['syncMarker'] = (int)$syncMarker; + if ( ! is_null($syncMarkerLimit) and $syncMarkerLimit > 0) { + $array['syncMarkerLimit'] = (int)$syncMarkerLimit; + } + } + if ( ! is_null($fromFinancialDate)) { + $array['fromFinancialDate'] = $fromFinancialDate; + } + if ( ! is_null($throughFinancialDate)) { + $array['throughFinancialDate'] = $throughFinancialDate; + } + $array['branchNumbers'] = empty($branchNumbers)?null:array_values($branchNumbers); + $array['employeeNumbers'] = empty($employeeNumbers)?null:array_values($employeeNumbers); + $array['relationNumbers'] = empty($relationNumbers)?null:array_values($relationNumbers); + $array['supplierRelationNumbers'] = empty($supplierRelationNumbers)?null:array_values($supplierRelationNumbers); + $array['articleNumbers'] = empty($articleNumbers)?null:array_values($articleNumbers); + $array['articleTurnoverGroups'] = empty($articleTurnoverGroups)?null:array_values($articleTurnoverGroups); + $array['articlePluNumbers'] = empty($articlePluNumbers)?null:array_values($articlePluNumbers); + $array['articleBarcodes'] = empty($articleBarcodes)?null:array_values($articleBarcodes); + if (!is_null($activityId)) { + $array['activityId'] = $activityId; + } + $object = arrayToObject(array('request'=>$array)); + return $object; + } // END convertGetPackingSlipsRequest() + + //---------------------------------------------------------------------------- + + public function convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throughFinancialDate, $branchNumbers, $employeeNumbers, $relationNumbers, $articleNumbers, $articleTurnoverGroups, $articlePluNumbers, $articleBarcodes, $syncMarkerLimit, $orderTypeList=null, $activityId=null) { $fromFinancialDate = is_null($fromFinancialDate)?null:$this->convertMplusDate($fromFinancialDate, 'fromFinancialDate'); $throughFinancialDate = is_null($throughFinancialDate)?null:$this->convertMplusDate($throughFinancialDate, 'throughFinancialDate'); @@ -5598,6 +5909,9 @@ public function convertGetOrdersRequest($syncMarker, $fromFinancialDate, $throug } $array['orderTypeList'] = $orderTypeList; } + if (!is_null($activityId)) { + $array['activityId'] = $activityId; + } $object = arrayToObject(array('request'=>$array)); return $object; } // END convertGetOrdersRequest() @@ -5937,6 +6251,23 @@ public function convertGetCashCountListRequest($fromFinancialDate, $throughFinan //---------------------------------------------------------------------------- + public function convertGetCashDrawerBalancingListRequest($fromFinancialDate, $throughFinancialDate, $syncMarker, $syncMarkerLimit) + { + $syncMarker = is_null($syncMarker) ? null : (int)$syncMarker; + $syncMarkerLimit = is_null($syncMarkerLimit) ? null : (int)$syncMarkerLimit; + $fromFinancialDate = is_null($fromFinancialDate) ? null : $this->convertMplusDate($fromFinancialDate, 'fromFinancialDate'); + $throughFinancialDate = is_null($throughFinancialDate) ? null : $this->convertMplusDate($throughFinancialDate, 'throughFinancialDate'); + $object = arrayToObject(array('request'=>array( + 'fromFinancialDate'=>$fromFinancialDate, + 'throughFinancialDate'=>$throughFinancialDate, + 'syncMarker'=>$syncMarker, + 'syncMarkerLimit'=>$syncMarkerLimit, + ))); + return $object; + } // END convertGetCashDrawerBalancingListRequest() + + //---------------------------------------------------------------------------- + public function convertUpdateTurnoverGroupsRequest($turnoverGroups) { $array = array('request'=>array( @@ -6658,8 +6989,8 @@ public function convertOrder($order, $as_array=false) if ($as_array) { return $order; } else { - $object = arrayToObject(array('order'=>$order)); - return $object; + $object = arrayToObject(array('order'=>$order)); + return $object; } } // END convertOrder() @@ -7306,8 +7637,63 @@ public function convertGetRelationPointsRequest($relationNumbers, $syncMarker, $ } $object = arrayToObject($array); return $object; - } + } // END convertGetRelationPointsRequest() + + //---------------------------------------------------------------------------- + public function convertGetActivitiesRequest($syncMarker, $syncMarkerLimit) + { + $array = array('request'=>array()); + if ( ! is_null($syncMarker)) { + $array['request']['syncMarker'] = (int)$syncMarker; + if ( ! is_null($syncMarkerLimit) and $syncMarkerLimit > 0) { + $array['request']['syncMarkerLimit'] = (int)$syncMarkerLimit; + } + } + $object = arrayToObject($array); + return $object; + } // END convertGetActivitiesRequest() + + //---------------------------------------------------------------------------- + + public function convertCreateActivityRequest($createActivity) + { + $createActivity['employeeStartTimestamp'] = $this->convertMplusDateTime($createActivity['employeeStartTimestamp'], 'employeeStartTimestamp'); + $createActivity['employeeEndTimestamp'] = $this->convertMplusDateTime($createActivity['employeeEndTimestamp'], 'employeeEndTimestamp'); + $createActivity['managerStartTimestamp'] = $this->convertMplusDateTime($createActivity['managerStartTimestamp'], 'managerStartTimestamp'); + $createActivity['managerEndTimestamp'] = $this->convertMplusDateTime($createActivity['managerEndTimestamp'], 'managerEndTimestamp'); + $object = arrayToObject(array('request'=>array('createActivity'=>$createActivity))); + return $object; + } // END convertCreateActivityRequest() + + //---------------------------------------------------------------------------- + + public function convertUpdateActivityRequest($updateActivity) + { + if (isset($updateActivity['employeeStartTimestamp'])) { + $updateActivity['employeeStartTimestamp'] = $this->convertMplusDateTime($updateActivity['employeeStartTimestamp'], 'employeeStartTimestamp'); + } + if (isset($updateActivity['employeeEndTimestamp'])) { + $updateActivity['employeeEndTimestamp'] = $this->convertMplusDateTime($updateActivity['employeeEndTimestamp'], 'employeeEndTimestamp'); + } + if (isset($updateActivity['managerStartTimestamp'])) { + $updateActivity['managerStartTimestamp'] = $this->convertMplusDateTime($updateActivity['managerStartTimestamp'], 'managerStartTimestamp'); + } + if (isset($updateActivity['managerEndTimestamp'])) { + $updateActivity['managerEndTimestamp'] = $this->convertMplusDateTime($updateActivity['managerEndTimestamp'], 'managerEndTimestamp'); + } + $object = arrayToObject(array('request'=>array('updateActivity'=>$updateActivity))); + return $object; + } // END convertUpdateActivityRequest() + + //---------------------------------------------------------------------------- + + public function convertDeleteActivityRequest($activityId) + { + $object = arrayToObject(array('request'=>array('activityId'=>$activityId))); + return $object; + } // END convertDeleteActivityRequest() + //---------------------------------------------------------------------------- public function convertRegisterTerminalRequest($terminal, $forceRegistration) diff --git a/Mplusqapiclient_versiontester.php b/Mplusqapiclient_versiontester.php index ab95def..faee99c 100755 --- a/Mplusqapiclient_versiontester.php +++ b/Mplusqapiclient_versiontester.php @@ -22,6 +22,10 @@ class MplusQAPIclient_VersionTester * @var string */ private $apiFingerprint = null; + /** + * @var string + */ + private $detectedFingerprint = null; /** * @var string */ @@ -56,7 +60,7 @@ public function __construct($params=null) throw new MplusQAPIException_VersionTester('MplusQAPIclient_VersionTester needs the JSON PHP extension.'); } - if ( ! is_nulL($params)) { + if ( ! is_null($params)) { $this->setApiServer($params['apiServer']); $this->setApiPort($params['apiPort']); $this->setApiPath($params['apiPath']); @@ -177,13 +181,24 @@ public function initClient() 'cache_wsdl' => WSDL_CACHE_NONE, ); - if ($require_fingerprint_check and ! $this->checkFingerprint($location)) { - throw new MplusQAPIException_VersionTester('Fingerprint of SSL certificate doesn\'t match.'); - } - $wsdl_url = $location.'?wsdl'; - $this->client = new SoapClient($wsdl_url, $options); + try { + // Don't wait longer than 5 seconds for the headers. + // We call get_headers() here because we want a relatively fast check if the API is available at all + // , before we actually initialize the SoapClient and start running requests + ini_set('default_socket_timeout', 5); + if (false === @get_headers($wsdl_url)) { + throw new MplusQAPIException_VersionTester(sprintf('Cannot find API WSDL @ %s', $wsdl_url)); + } + $this->client = @new SoapClient($wsdl_url, $options); + if (false === $this->client or is_null($this->client)) { + throw new MplusQAPIException_VersionTester('Unable to load SoapClient.'); + } + } catch (SoapFault $exception) { + throw new MplusQAPIException_VersionTester($exception->getMessage()); + } + return true; } // END initClient() //---------------------------------------------------------------------------- @@ -222,27 +237,32 @@ public function getLastErrorMessage() protected function checkFingerprint($location) { + $this->detectedFingerprint = null; $fingerprint_matches = false; $g = stream_context_create (array('ssl' => array('capture_peer_cert' => true))); if (false === ($r = @stream_socket_client(str_replace('https', 'ssl', $location), $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g))) { + $this->detectedFingerprint = 'Unable to stream_socket_client()'; return $fingerprint_matches; } $cont = stream_context_get_params($r); if (isset($cont['options']['ssl']['peer_certificate'])) { // $certificate_info = openssl_x509_parse($cont['options']['ssl']['peer_certificate']); $resource = $cont['options']['ssl']['peer_certificate']; - $fingerprint = null; $output = null; if (false !== ($result = openssl_x509_export($resource, $output))) { $output = str_replace('-----BEGIN CERTIFICATE-----', '', $output); $output = str_replace('-----END CERTIFICATE-----', '', $output); $output = base64_decode($output); - $fingerprint = sha1($output); - if ($fingerprint == $this->apiFingerprint) { + $this->detectedFingerprint = sha1($output); + if ($this->detectedFingerprint == $this->apiFingerprint) { $fingerprint_matches = true; } + } else { + $this->detectedFingerprint = 'Unable to openssl_x509_export()'; } + } else { + $this->detectedFingerprint = 'Cannot find \'peer_certificate\''; } return $fingerprint_matches; } // END checkFingerprint()