stock_example.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. declare(strict_types=1);
  3. require_once __DIR__ . '/../vendor/autoload.php';
  4. use SixShop\Wangdian\WangdianFactory;
  5. use SixShop\Wangdian\Exception\ApiException;
  6. // Create client
  7. $client = WangdianFactory::createSandboxClient(
  8. sid: 'your-sid',
  9. appKey: 'your-app-key',
  10. appSecret: 'your-app-secret'
  11. );
  12. try {
  13. // Query current stock
  14. echo "Querying stock information...\n";
  15. $queryParams = [
  16. 'start_time' => date('Y-m-d 00:00:00', strtotime('-7 days')),
  17. 'end_time' => date('Y-m-d 23:59:59'),
  18. ];
  19. $response = $client->stock()->query($queryParams);
  20. if ($response->isSuccess()) {
  21. $stocks = $response->getData();
  22. echo "Found " . count($stocks) . " stock records\n";
  23. foreach (array_slice($stocks, 0, 10) as $stock) {
  24. echo "- Spec: {$stock['spec_no']}, Stock: {$stock['num']}, Warehouse: {$stock['warehouse_no']}\n";
  25. }
  26. } else {
  27. echo "Stock query failed: " . $response->getMessage() . "\n";
  28. }
  29. // Push a stockin order
  30. echo "\nPushing stockin order...\n";
  31. $stockinData = [
  32. 'stockin_info' => [
  33. 'warehouse_no' => '001',
  34. 'stockin_type' => 1, // Manual stockin
  35. 'outer_no' => 'STOCKIN_' . time(),
  36. 'remark' => 'SDK测试入库',
  37. 'details_list' => [
  38. [
  39. 'spec_no' => 'TEST001-001',
  40. 'num' => 50,
  41. 'price' => 45.0,
  42. 'remark' => '测试商品入库'
  43. ]
  44. ]
  45. ]
  46. ];
  47. $response = $client->stock()->pushStockinOrder($stockinData);
  48. if ($response->isSuccess()) {
  49. echo "Stockin order pushed successfully!\n";
  50. echo "Response: " . $response->toJson() . "\n";
  51. } else {
  52. echo "Stockin order push failed: " . $response->getMessage() . "\n";
  53. }
  54. // Push stock transfer between warehouses
  55. echo "\nPushing stock transfer...\n";
  56. $transferData = [
  57. 'transfer_info' => [
  58. 'from_warehouse_no' => '001',
  59. 'to_warehouse_no' => '002',
  60. 'outer_no' => 'TRANSFER_' . time(),
  61. 'remark' => 'SDK测试调拨',
  62. 'details_list' => [
  63. [
  64. 'spec_no' => 'TEST001-001',
  65. 'num' => 10,
  66. 'remark' => '仓库间调拨'
  67. ]
  68. ]
  69. ]
  70. ];
  71. $response = $client->stock()->pushTransfer($transferData);
  72. if ($response->isSuccess()) {
  73. echo "Stock transfer pushed successfully!\n";
  74. echo "Response: " . $response->toJson() . "\n";
  75. } else {
  76. echo "Stock transfer push failed: " . $response->getMessage() . "\n";
  77. }
  78. // Query stock transfers
  79. echo "\nQuerying stock transfers...\n";
  80. $response = $client->stock()->queryTransfer([
  81. 'start_time' => date('Y-m-d 00:00:00'),
  82. 'end_time' => date('Y-m-d 23:59:59'),
  83. ]);
  84. if ($response->isSuccess()) {
  85. $transfers = $response->getData();
  86. echo "Found " . count($transfers) . " transfers today\n";
  87. foreach (array_slice($transfers, 0, 5) as $transfer) {
  88. echo "- Transfer No: {$transfer['transfer_no']}, Status: {$transfer['status']}\n";
  89. }
  90. } else {
  91. echo "Transfer query failed: " . $response->getMessage() . "\n";
  92. }
  93. } catch (ApiException $e) {
  94. echo "API Error: " . $e->getMessage() . "\n";
  95. echo "API Code: " . $e->getApiCode() . "\n";
  96. } catch (Exception $e) {
  97. echo "Error: " . $e->getMessage() . "\n";
  98. }