public function submitToZasilkovna($orders_id_arr) { $db = JFactory::getDBO(); $gw = new SoapClient("http://www.zasilkovna.cz/api/soap-php-bugfix.wsdl"); $zas_model = VmModel::getModel('zasilkovna'); $apiPassword = $zas_model->api_pass; $ordersForExport = $this->prepareForExport($orders_id_arr); $exportedOrders = array(); $failedOrders = array(); $exportedOrdersNumber = array(); foreach ($ordersForExport as $order) { try { if (isset($order['zasilkovna_packet_id']) && $order['zasilkovna_packet_id'] != 0) { //some better check? throw new Exception("Objednávka již byla podána na Zásilkovně. Nejprve zrušte číslo zásilky v administraci."); } $attributes = array('number' => $order['order_number'], 'name' => $order['first_name'], 'surname' => $order['last_name'], 'email' => $order['email'], 'phone' => $order['phone'], 'addressId' => $order['branch_id'], 'cod' => $order['cod'], 'value' => $order['total'], 'eshop' => $order['domain'], 'adultContent' => $order['adult_content'] == 1 ? true : false); if (array_key_exists($order['branch_id'], VirtueMartModelZasilkovna::$_couriers_to_address)) { $attributes['street'] = $order['address']; $attributes['houseNumber'] = $order['houseNumber']; $attributes['city'] = $order['city']; $attributes['zip'] = $order['zip_code']; } $packet = $gw->createPacket($apiPassword, $attributes); $q = "UPDATE " . $this->_table_name . " SET zasilkovna_packet_id=" . $packet->id . " WHERE order_number = '" . $order['order_number'] . "'; "; $db->setQuery($q); $db->loadAssocList(); $exportedOrders[] = array('order_number' => $order['order_number'], 'zasilkovna_id' => $packet->id); $exportedOrdersNumber[] = $order['order_number']; } catch (Exception $e) { $error_msg = ""; if (get_class($e) == 'SoapFault') { if (is_array($e->detail->PacketAttributesFault->attributes->fault)) { //more errors foreach ($e->detail->PacketAttributesFault->attributes->fault as $error) { $error_msg .= $error->name . ": " . $error->fault . " "; } } else { if (is_object($e->detail->PacketAttributesFault->attributes->fault)) { //only one error $error_msg .= $e->detail->PacketAttributesFault->attributes->fault->name . ": " . $e->detail->PacketAttributesFault->attributes->fault->fault . " "; } else { //structure error (missing parameter etc) $error_msg .= $e->faultstring . " "; } } } else { $error_msg = $e->getMessage(); } $failedOrders[] = array('order_number' => $order['order_number'], 'message' => $error_msg); } } $this->setExportedFlag($exportedOrdersNumber); return array('exported' => $exportedOrders, 'failed' => $failedOrders); }