/** * */ public function addItem($pn_object_id, $pa_values, $pa_options = null) { if (isset($pa_options['order_id']) && (int) $pa_options['order_id']) { $vn_order_id = (int) $pa_options['order_id']; } else { $vn_order_id = $this->getPrimaryKey(); } if (!$vn_order_id) { return null; } $t_item = new ca_commerce_order_items(); $t_item->setMode(ACCESS_WRITE); $t_item->set('order_id', $vn_order_id); $t_item->set('object_id', $pn_object_id); foreach ($pa_values as $vs_f => $vs_v) { $t_item->set($vs_f, $vs_v); } if (isset($pa_options['additional_fees']) && is_array($pa_options['additional_fees'])) { $va_fees = array(); foreach ($pa_options['additional_fees'] as $vs_code => $vn_fee) { $va_fees[$vs_code] = sprintf("%4.2f", $vn_fee); } $t_item->set('additional_fees', $va_fees); } // set fulfillment method if (!isset($pa_values['fullfillment_method'])) { if (isset($this->opo_services_list[$t_item->get('service')]['fulfillment_method'])) { $t_item->set('fullfillment_method', $this->opo_services_list[$t_item->get('service')]['fulfillment_method']); } } $t_item->insert(); if ($t_item->numErrors()) { $this->errors = $t_item->errors; return null; } // Add first representation by default $t_object = new ca_objects($pn_object_id); $vn_rep_id = $t_object->getPrimaryRepresentationID(); if ($this->get('order_type') == 'O') { $t_item->addRepresentations(isset($pa_options['representation_ids']) && is_array($pa_options['representation_ids']) ? $pa_options['representation_ids'] : array($vn_rep_id)); } return $t_item; }