getPackageInstance(); $packages = $manifest->getPackages(); $package_number = null; foreach ($packages as $id_package_ws) { $current_package = new DpdPolandPackage((int)$id_package_ws); if ($package_number === null) $package_number = $current_package->payerNumber; elseif ($package_number !== $current_package->payerNumber) $package_number = 'null'; } $params = array( 'dpdServicesParamsV1' => array( 'pickupAddress' => $package->getSenderAddress(), 'policy' => $policy, 'session' => array( 'sessionId' => (int)$package->sessionId, 'sessionType' => $package->getSessionType() ) ), 'outputDocFormatV1' => $output_doc_format, 'outputDocPageFormatV1' => $output_doc_page_format ); if ($manifest->id_manifest_ws) $params['dpdServicesParamsV1']['documentId'] = (int)$manifest->id_manifest_ws; $result = $this->generateProtocolV2($params); if (isset($result['documentData']) || (isset($result['session']) && isset($result['session']['statusInfo']) && $result['session']['statusInfo']['status'] == 'OK')) { if (!$manifest->id_manifest_ws) $manifest->id_manifest_ws = (int)$result['documentId']; if (!$manifest->getPackageIdWsByManifestIdWs($manifest->id_manifest_ws) && !$manifest->save()) return false; return $result['documentData']; } else return false; } /** * Generates multiple manifests for selected packages * * @param array $package_ids Packages IDs * @param string $output_doc_format Document format * @param string $output_doc_page_format Document page format * @param string $policy Policy type * @return bool Multiple manifests generated successfully */ 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(), '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->generateProtocolV2($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; } } }