public function generateMultiple($package_ids, $output_doc_format = 'PDF', $output_doc_page_format = 'LBL_PRINTER', $policy = 'STOP_ON_FIRST_ERROR') { $session_type = ''; $package_number = null; foreach ($package_ids as $id_package_ws) { $package = new DpdPolandPackage((int) $id_package_ws); if (!$session_type || $session_type == $package->getSessionType()) { $session_type = $package->getSessionType(); if ($package_number === null) { $package_number = $package->payerNumber; } elseif ($package_number !== $package->payerNumber) { $package_number = 'null'; } } else { self::$errors[] = $this->l('Manifests of DOMESTIC shipments cannot be mixed with INTERNATIONAL shipments'); return false; } } $params = array('dpdServicesParamsV1' => array('pickupAddress' => $package->getSenderAddress($package_number), 'policy' => $policy, 'session' => array('sessionType' => $session_type, 'packages' => array())), 'outputDocFormatV1' => $output_doc_format, 'outputDocPageFormatV1' => $output_doc_page_format); foreach ($package_ids as $id_package_ws) { $params['dpdServicesParamsV1']['session']['packages'][] = array('packageId' => (int) $id_package_ws); } $result = $this->generateProtocolV1($params); if (isset($result['session']) && isset($result['session']['statusInfo']) && $result['session']['statusInfo']['status'] == 'OK') { foreach ($package_ids as $id_package_ws) { $manifest = new DpdPolandManifest(); $manifest->id_manifest_ws = (int) $result['documentId']; $manifest->id_package_ws = (int) $id_package_ws; if (!$manifest->save()) { return false; } } return $result['documentData']; } else { if (isset($result['session']['statusInfo']['description'])) { self::$errors[] = $result['session']['statusInfo']['description']; } elseif (isset($result['session']['statusInfo']['status'])) { self::$errors[] = $result['session']['statusInfo']['status']; } return false; } }
public static function separatePackagesBySession($ids) { $international_packages = array(); $domestic_packages = array(); foreach ($ids as $id_package_ws) { $package = new DpdPolandPackage((int) $id_package_ws); $session_type = $package->getSessionType(); if ($session_type == 'INTERNATIONAL') { $international_packages[] = (int) $id_package_ws; } elseif ($session_type == 'DOMESTIC') { $domestic_packages[] = (int) $id_package_ws; } } return array('INTERNATIONAL' => $international_packages, 'DOMESTIC' => $domestic_packages); }
public function generateLabelsForMultiplePackages($package_ids, $outputDocFormat, $outputDocPageFormat, $policy) { $sessionType = ''; $packages = array(); foreach ($package_ids as $id_package_ws) { $package = new DpdPolandPackage((int) $id_package_ws); if (!$sessionType || $sessionType == $package->getSessionType()) { $sessionType = $package->getSessionType(); } else { self::$errors[] = $this->l('Manifests of DOMESTIC shipments cannot be mixed with INTERNATIONAL shipments'); return false; } $packages[] = array('packageId' => (int) $id_package_ws); } $this->prepareSenderAddress(); $params = array('dpdServicesParamsV1' => array('policy' => $policy, 'session' => array('packages' => $packages, 'sessionType' => $sessionType)), 'outputDocFormatV1' => $outputDocFormat, 'outputDocPageFormatV1' => $outputDocPageFormat, 'pickupAddress' => $this->sender); if (!($result = $this->generateSpedLabelsV1($params))) { return false; } if (isset($result['session']['statusInfo']['status']) && $result['session']['statusInfo']['status'] == 'OK') { foreach ($packages as $id_package_ws) { $package = new DpdPolandPackage($id_package_ws); $package->labels_printed = 1; $package->update(); } return $result['documentData']; } else { $packages = $result['session']['statusInfo']; $packages = array_values($packages) === $packages ? $packages : array($packages); // array must be multidimentional foreach ($packages as $package) { if (isset($package['description'])) { self::$errors[] = $package['description']; } elseif (isset($package['status'])) { self::$errors[] = $package['status']; } } return false; } }