本文整理汇总了PHP中OrderDetail::add方法的典型用法代码示例。如果您正苦于以下问题:PHP OrderDetail::add方法的具体用法?PHP OrderDetail::add怎么用?PHP OrderDetail::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OrderDetail
的用法示例。
在下文中一共展示了OrderDetail::add方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: createOrderDetails
/**
* Creating order details of order
* @param $neteven_order
* @param $id_order
* @return mixed
*/
private function createOrderDetails($neteven_order, $id_order)
{
global $cookie;
$date_now = date('Y-m-d H:i:s');
if (in_array($neteven_order->Status, $this->getValue('t_list_order_status'))) {
return;
}
// If order detail doesn't exist
if (!($res = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'orders_gateway` WHERE `id_order_neteven` = ' . (int) $neteven_order->OrderID . ' AND `id_order_detail_neteven` = ' . (int) $neteven_order->OrderLineID))) {
// If product exist
$ref_temp = $neteven_order->SKU;
$type_temp = substr($ref_temp, 0, 1);
$id_p_temp = str_replace($type_temp, '', $ref_temp);
$where_req = '';
if ($type_temp == 'D') {
$where_req = 'pa.`id_product_attribute` = ' . (int) $id_p_temp;
}
if ($type_temp == 'P') {
$where_req = 'p.`id_product` = ' . (int) $id_p_temp;
}
if (self::$type_sku == 'reference') {
$where_req = ' (p.`reference` = "' . pSQL($ref_temp) . '" OR pa.`reference` = "' . pSQL($ref_temp) . '") ';
}
if (empty($where_req)) {
return;
}
$res_product = Db::getInstance()->getRow('
SELECT pl.`name` as name_product, p.`id_product`, pa.`id_product_attribute`, p.`reference` as product_reference, pa.`reference` as product_attribute_reference, p.`weight` as weight, GROUP_CONCAT(CONCAT(agl.`name`," : ",al.`name`) SEPARATOR ", ") as attribute_name
FROM `' . _DB_PREFIX_ . 'product` p
INNER JOIN `' . _DB_PREFIX_ . 'product_lang` pl ON(p.`id_product` = pl.`id_product` AND pl.`id_lang` = ' . (int) $this->getValue('id_lang') . ')
LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute` pa ON (pa.`id_product` = p.`id_product`)
LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_combination` pac ON (pac.`id_product_attribute`=pa.`id_product_attribute`)
LEFT JOIN `' . _DB_PREFIX_ . 'attribute` a ON (a.`id_attribute`=pac.`id_attribute`)
LEFT JOIN `' . _DB_PREFIX_ . 'attribute_lang` al ON (al.`id_attribute`=a.`id_attribute` AND al.`id_lang`=' . (int) $this->getValue('id_lang') . ')
LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group_lang` agl ON (agl.`id_attribute_group`=a.`id_attribute_group` AND agl.`id_lang`=' . (int) $this->getValue('id_lang') . ')
WHERE p.`active` = 1 AND ' . $where_req . '
GROUP BY pa.`id_product_attribute`, p.`id_product`
');
if ($res_product) {
// Get order detail informations
$product_reference = $res_product['product_reference'];
$id_product_attribute = 0;
$name = $res_product['name_product'];
$control_attribute_product = false;
if (!empty($res_product['id_product_attribute'])) {
$product_reference = $res_product['product_attribute_reference'];
$id_product_attribute = $res_product['id_product_attribute'];
if (!empty($res_product['attribute_name'])) {
$name .= ' - ' . $res_product['attribute_name'];
}
$control_attribute_product = true;
}
// Add product in cart
$order = new Order($id_order);
if (!Db::getInstance()->getRow('SELECT `id_cart` FROM `' . _DB_PREFIX_ . 'cart_product` WHERE `id_cart` = ' . (int) $order->id_cart . ' AND `id_product` = ' . (int) $res_product['id_product'] . ' AND `id_product_attribute` = ' . (int) $id_product_attribute)) {
Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'cart_product` (`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES (' . (int) $order->id_cart . ', ' . (int) $res_product['id_product'] . ', ' . (int) $id_product_attribute . ', ' . (int) $neteven_order->Quantity . ', "' . pSQL($date_now) . '")');
}
if ($this->time_analyse) {
$this->current_time_0 = time();
Toolbox::displayDebugMessage(self::getL('Order information') . ' : ' . ((int) $this->current_time_0 - (int) $this->current_time_2) . 's');
}
// Add order detail
$tax = new Tax(Configuration::get('PS_TAX'), $cookie->id_lang);
$price_product = ($neteven_order->Price->_ - floatval($neteven_order->VAT->_)) / $neteven_order->Quantity;
$order_detail = new OrderDetail();
$order_detail->id_order = $id_order;
$order_detail->product_id = $res_product['id_product'];
$order_detail->product_attribute_id = $id_product_attribute;
$order_detail->product_name = $name;
$order_detail->product_quantity = $neteven_order->Quantity;
$order_detail->product_quantity_in_stock = $neteven_order->Quantity;
$order_detail->product_quantity_refunded = 0;
$order_detail->product_quantity_return = 0;
$order_detail->product_quantity_reinjected = 0;
$order_detail->product_price = number_format((double) $price_product, 4, '.', '');
$order_detail->total_price_tax_excl = number_format((double) $price_product, 4, '.', '');
$order_detail->unit_price_tax_incl = number_format((double) $price_product, 4, '.', '');
$order_detail->unit_price_tax_excl = $tax->rate ? number_format((double) $price_product / ((double) $tax->rate / 100), 4, '.', '') : $price_product;
$order_detail->reduction_percent = 0;
$order_detail->reduction_amount = 0;
$order_detail->group_reduction = 0;
$order_detail->product_quantity_discount = 0;
$order_detail->product_ean13 = NULL;
$order_detail->product_upc = NULL;
$order_detail->product_reference = $product_reference;
$order_detail->product_supplier_reference = NULL;
$order_detail->product_weight = !empty($res_product['weight']) ? (double) $res_product['weight'] : 0;
$order_detail->tax_name = $tax->name;
$order_detail->tax_rate = (double) $tax->rate;
$order_detail->ecotax = 0;
$order_detail->ecotax_tax_rate = 0;
$order_detail->discount_quantity_applied = 0;
$order_detail->download_hash = '';
$order_detail->download_nb = 0;
//.........这里部分代码省略.........
示例2: postProcess
/**
* @global object $cookie Employee cookie necessary to keep trace of his/her actions
*/
public function postProcess()
{
global $currentIndex, $cookie;
/* Update shipping number */
if (Tools::isSubmit('submitShippingNumber') and $id_order = (int) Tools::getValue('id_order') and Validate::isLoadedObject($order = new Order($id_order))) {
if ($this->tabAccess['edit'] === '1') {
if (!$order->hasBeenShipped()) {
die(Tools::displayError('The shipping number can only be set once the order has been shipped.'));
}
$_GET['view' . $this->table] = true;
$shipping_number = pSQL(Tools::getValue('shipping_number'));
$order->shipping_number = $shipping_number;
$order->update();
if ($shipping_number) {
global $_LANGMAIL;
$customer = new Customer((int) $order->id_customer);
$carrier = new Carrier((int) $order->id_carrier);
if (!Validate::isLoadedObject($customer) or !Validate::isLoadedObject($carrier)) {
die(Tools::displayError());
}
$templateVars = array('{order_amount}' => Tools::displayPrice($order->total_paid, $currency, false), '{carrier_name}' => $carrier->name, '{tracking_number}' => $order->shipping_number, '{followup}' => str_replace('@', $order->shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => (int) $order->id);
if (strpos($order->payment, 'COD') === false) {
@Mail::Send((int) $order->id_lang, 'in_transit', Mail::l('Your order #' . $order->id . ' with IndusDiva.com has been shipped'), $templateVars, $customer->email, $customer->firstname . ' ' . $customer->lastname);
} else {
@Mail::Send((int) $order->id_lang, 'in_transit_cod', Mail::l('Your order #' . $order->id . ' with IndusDiva.com has been shipped'), $templateVars, $customer->email, $customer->firstname . ' ' . $customer->lastname);
}
//Send SMS
$delivery = new Address((int) $order->id_address_delivery);
if (strpos($order->payment, 'COD') === false) {
$smsText = 'Dear customer, your order #' . $order->id . ' at IndusDiva.com has been shipped via ' . $carrier->name . '. The airway bill no is ' . $order->shipping_number . '. www.indusdiva.com';
} else {
$smsText = 'Dear customer, your order #' . $order->id . ' at IndusDiva.com has been shipped. Carrier: ' . $carrier->name . ', AWB No. : ' . $order->shipping_number . ', Amount payable:' . Tools::displayPrice($order->total_paid, $currency, false) . '. www.indusdiva.com';
}
Tools::sendSMS($delivery->phone_mobile, $smsText);
}
} else {
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
}
} elseif (Tools::isSubmit('submitExpectedShippingDate') and $id_order = (int) Tools::getValue('id_order') and Validate::isLoadedObject($order = new Order($id_order))) {
$dateshipping = new DateTime(Tools::getValue('expected_shipping_date'));
$order->expected_shipping_date = pSQL($dateshipping->format('Y-m-d H:i:s'));
$order->update();
$order = new Order($id_order);
} elseif (Tools::isSubmit('submitCarrier') and $id_order = (int) Tools::getValue('id_order') and Validate::isLoadedObject($order = new Order($id_order))) {
$order->shipping_number = '';
$order->id_carrier = (int) Tools::getValue('id_carrier');
$order->update();
$order = new Order($id_order);
} elseif (Tools::isSubmit('submitState') and $id_order = (int) Tools::getValue('id_order') and Validate::isLoadedObject($order = new Order($id_order))) {
if ($this->tabAccess['edit'] === '1') {
$_GET['view' . $this->table] = true;
if (!($newOrderStatusId = (int) Tools::getValue('id_order_state'))) {
$this->_errors[] = Tools::displayError('Invalid new order status');
} else {
if ($newOrderStatusId == _PS_OS_DELIVERED_ && strpos($order->payment, 'COD')) {
$paymentHistory = new OrderPaymentHistory();
$paymentHistory->id_order = (int) $id_order;
$paymentHistory->id_employee = (int) $cookie->id_employee;
$paymentHistory->changeIdOrderPaymentState(_PS_PS_PAYMENT_WITH_CARRIER_, (int) $id_order);
$paymentHistory->addState();
}
$history = new OrderHistory();
$history->id_order = (int) $id_order;
$history->id_employee = (int) $cookie->id_employee;
$history->changeIdOrderState((int) $newOrderStatusId, (int) $id_order);
$order = new Order((int) $order->id);
$carrier = new Carrier((int) $order->id_carrier, (int) $order->id_lang);
$templateVars = array();
if ($history->id_order_state == _PS_OS_SHIPPING_ and $order->shipping_number) {
$templateVars = array('{followup}' => str_replace('@', $order->shipping_number, $carrier->url));
} elseif ($history->id_order_state == _PS_OS_CHEQUE_) {
$templateVars = array('{cheque_name}' => Configuration::get('CHEQUE_NAME') ? Configuration::get('CHEQUE_NAME') : '', '{cheque_address_html}' => Configuration::get('CHEQUE_ADDRESS') ? nl2br(Configuration::get('CHEQUE_ADDRESS')) : '');
} elseif ($history->id_order_state == _PS_OS_BANKWIRE_) {
$templateVars = array('{bankwire_owner}' => Configuration::get('BANK_WIRE_OWNER') ? Configuration::get('BANK_WIRE_OWNER') : '', '{bankwire_details}' => Configuration::get('BANK_WIRE_DETAILS') ? nl2br(Configuration::get('BANK_WIRE_DETAILS')) : '', '{bankwire_address}' => Configuration::get('BANK_WIRE_ADDRESS') ? nl2br(Configuration::get('BANK_WIRE_ADDRESS')) : '');
}
if ($history->id_order_state == _PS_OS_CANCELED_) {
$this->cancelOrder($id_order);
}
if ($history->addWithemail(true, $templateVars)) {
Tools::redirectAdmin($currentIndex . '&id_order=' . $id_order . '&vieworder' . '&token=' . $this->token);
}
$this->_errors[] = Tools::displayError('An error occurred while changing the status or was unable to send e-mail to the customer.');
}
} else {
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
}
} elseif (isset($_POST['submitMessage'])) {
$_GET['view' . $this->table] = true;
if ($this->tabAccess['edit'] === '1') {
if (!($id_order = (int) Tools::getValue('id_order')) or !($id_customer = (int) Tools::getValue('id_customer'))) {
$this->_errors[] = Tools::displayError('An error occurred before sending message');
} elseif (!Tools::getValue('message')) {
$this->_errors[] = Tools::displayError('Message cannot be blank');
} else {
/* Get message rules and and check fields validity */
$rules = call_user_func(array('Message', 'getValidationRules'), 'Message');
foreach ($rules['required'] as $field) {
//.........这里部分代码省略.........