public function visitExternalOrder(ShopgateExternalOrder $o) { // get properties $properties = $o->buildProperties(); // iterate the simple variables $properties = $this->iterateSimpleProperties($properties); // visit invoice address if (!empty($properties['invoice_address']) && $properties['invoice_address'] instanceof ShopgateAddress) { $properties['invoice_address']->accept($this); $properties['invoice_address'] = $this->array; } // visit delivery address if (!empty($properties['delivery_address']) && $properties['delivery_address'] instanceof ShopgateAddress) { $properties['delivery_address']->accept($this); $properties['delivery_address'] = $this->array; } // visit the items and delivery notes arrays $properties['custom_fields'] = $this->iterateObjectList($properties['custom_fields']); $properties['external_coupons'] = $this->iterateObjectList($properties['external_coupons']); $properties['items'] = $this->iterateObjectList($properties['items']); $properties['delivery_notes'] = $this->iterateObjectList($properties['delivery_notes']); $properties['order_taxes'] = $this->iterateObjectList($properties['order_taxes']); $properties['extra_costs'] = $this->iterateObjectList($properties['extra_costs']); // set last value to converted array $this->array = $properties; }