Inheritance: extends BaseOrderHistory
コード例 #1
0
ファイル: OrderDetailController.php プロジェクト: Eximagen/3m
 public function postProcess()
 {
     parent::postProcess();
     if (Tools::isSubmit('markAsReceived')) {
         $idOrder = (int) Tools::getValue('id_order');
         $order = new Order($idOrder);
         if (Validate::isLoadedObject($order)) {
             if ($order->getCurrentState() == 15) {
                 $new_history = new OrderHistory();
                 $new_history->id_order = (int) $order->id;
                 $new_history->changeIdOrderState(16, $order);
                 // 16: Ready for Production
                 //var_dump($order,$new_history);
                 $myfile = fopen(PS_PRODUCT_IMG_PATH . "/orders/" . $order->reference . ".txt", "w") or die("Unable to open file!");
                 $txt = "Order Confirmed\n Order Reference: " . $order->reference;
                 fwrite($myfile, $txt);
                 fclose($myfile);
                 $new_history->addWithemail(true);
             }
             $this->context->smarty->assign('receipt_confirmation', true);
         } else {
             $this->_errors[] = Tools::displayError('Error: Invalid order number');
         }
     }
 }
コード例 #2
0
ファイル: retorno.php プロジェクト: dlanileonardo/pagseguro
function TransactionNotification($notificationCode)
{
    ob_clean();
    global $cookie;
    $credentials = new PagSeguroAccountCredentials(Configuration::get("PAGSEGURO_BUSINESS"), Configuration::get("PAGSEGURO_TOKEN"));
    try {
        $transaction = PagSeguroNotificationService::checkTransaction($credentials, $notificationCode);
        $id_transaction = $transaction->getCode();
        $id_status = $transaction->getStatus()->getValue();
        $order_state = Configuration::get("PAGSEGURO_STATUS_{$id_status}");
        $orderState = new OrderState($order_state);
        $status = $orderState->name[$cookie->id_lang];
        $id_order = Db::getInstance()->getValue("SELECT id_order FROM " . _DB_PREFIX_ . "pagseguro_order WHERE id_transaction = '{$id_transaction}'");
        $order = new Order(intval($id_order));
        /** ENVIO DO EMAIL * */
        $pagseguro = new pagseguro();
        $idCustomer = $order->id_customer;
        $idLang = $order->id_lang;
        $customer = new Customer(intval($idCustomer));
        $mailVars = array('{email}' => Configuration::get('PS_SHOP_EMAIL'), '{firstname}' => stripslashes($customer->firstname), '{lastname}' => stripslashes($customer->lastname), '{terceiro}' => stripslashes($pagseguro->displayName), '{id_order}' => stripslashes($pagseguro->currentOrder), '{status}' => stripslashes($status));
        $pagseguro->enviar($mailVars, 'pagseguro', $status, $pagseguro->displayName, $idCustomer, $idLang, $customer->email, 'modules/pagseguro/mails/');
        /** /ENVIO DO EMAIL * */
        $extraVars = array();
        $history = new OrderHistory();
        $history->id_order = intval($id_order);
        $history->changeIdOrderState(intval($order_state), intval($id_order));
        $history->addWithemail(true, $extraVars);
        die("Sucesso!");
    } catch (PagSeguroServiceException $e) {
        file_put_contents(dirname(__FILE__) . "/error.log", var_export($e, true));
        die("Error!");
    }
}
コード例 #3
0
 private function canceledOrderForError()
 {
     $history = new OrderHistory();
     $history->id_order = (int) $this->pagSeguro->currentOrder;
     $history->changeIdOrderState(6, (int) $this->pagSeguro->currentOrder);
     $history->save();
 }
コード例 #4
0
 public function refund($order_id)
 {
     $this->log_identifier = time();
     if (!$this->util->isPaymillOrder($order_id)) {
         return false;
     }
     $data = $this->getTransactionData($order_id);
     try {
         $result = $this->refund->create(array('transactionId' => $data['transaction'], 'params' => array('amount' => number_format($data['total_paid'], 2) * 100)));
         $return_value = isset($result['response_code']) && $result['response_code'] === 20000;
         $this->log('Refund resulted in ' . (string) $return_value, var_export($result, true));
         $db = Db::getInstance();
         $db->execute('UPDATE `' . _DB_PREFIX_ . 'pigmbh_paymill_transactiondata` SET `refund`=1 WHERE `id`=' . pSQL($order_id));
     } catch (Exception $exception) {
         $this->log('Refund exception ', var_export($exception->getMessage(), true));
         $return_value = false;
     }
     if ($return_value) {
         $new_order_state = Configuration::get('PS_OS_REFUND');
         $order = new Order($order_id);
         $history = new OrderHistory();
         $history->id_order = (int) $order->id;
         $history->changeIdOrderState($new_order_state, (int) $order->id);
         //order status=3
         $history->add(true);
     }
     return $return_value;
 }
コード例 #5
0
ファイル: result.php プロジェクト: venya/prestashop
 /**
  * @see FrontController::postProcess()
  */
 public function postProcess()
 {
     $oplata = new Oplata();
     if ($_POST['order_status'] == OplataCls::ORDER_DECLINED) {
         $this->errors[] = Tools::displayError('Order declined');
     }
     $settings = array('merchant_id' => $oplata->getOption('merchant'), 'secret_key' => $oplata->getOption('secret_key'));
     $isPaymentValid = OplataCls::isPaymentValid($settings, $_POST);
     if ($isPaymentValid !== true) {
         $this->errors[] = Tools::displayError($isPaymentValid);
     }
     $cart = $this->context->cart;
     if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active) {
         Tools::redirect('index.php?controller=order&step=1');
     }
     $customer = new Customer($cart->id_customer);
     if (!Validate::isLoadedObject($customer)) {
         Tools::redirect('index.php?controller=order&step=1');
     }
     if (empty($this->errors)) {
         list($orderId, ) = explode(OplataCls::ORDER_SEPARATOR, $_POST['order_id']);
         $history = new OrderHistory();
         $history->id_order = $orderId;
         $history->changeIdOrderState((int) Configuration::get('PS_OS_PAYMENT'), $orderId);
         $history->addWithemail(true, array('order_name' => $orderId));
         Tools::redirect('index.php?controller=order-confirmation&id_cart=' . $cart->id . '&id_module=' . $this->module->id . '&id_order=' . $this->module->currentOrder . '&key=' . $customer->secure_key);
     }
 }
コード例 #6
0
 public function updateStatus(&$resp)
 {
     $this->log_on = Configuration::get('YA_P2P_LOGGING_ON');
     if ($resp->status == 'success') {
         $cart = $this->context->cart;
         if ($cart->id > 0) {
             if ($cart->orderExists()) {
                 $ord = new Order((int) Order::getOrderByCartId($cart->id));
                 $id_order = $ord->id;
             } else {
                 $ord = $this->module->validateOrder($cart->id, Configuration::get('PS_OS_PAYMENT'), $cart->getOrderTotal(true, Cart::BOTH), $this->module->displayName . " Банковская карта", null, array(), null, false, $cart->secure_key);
                 $id_order = $this->module->currentOrder;
             }
             if ($ord) {
                 $history = new OrderHistory();
                 $history->id_order = $id_order;
                 $history->changeIdOrderState(Configuration::get('PS_OS_PAYMENT'), $id_order);
                 $history->addWithemail(true);
             }
         }
         if ($this->log_on) {
             $this->module->logSave('payment_card: #' . $this->module->currentOrder . ' ' . $this->module->l('Order success'));
         }
         Tools::redirect($this->context->link->getPageLink('order-confirmation') . '&id_cart=' . $this->context->cart->id . '&id_module=' . $this->module->id . '&id_order=' . $this->module->currentOrder . '&key=' . $this->context->cart->secure_key);
     }
 }
コード例 #7
0
ファイル: callback.php プロジェクト: cloudipsp/prestashop
 /**
  * @see FrontController::postProcess()
  */
 public function postProcess()
 {
     if (empty($_POST)) {
         $fap = json_decode(file_get_contents("php://input"));
         $_POST = array();
         foreach ($fap as $key => $val) {
             $_POST[$key] = $val;
         }
     }
     try {
         if ($_POST['order_status'] == FondyCls::ORDER_DECLINED) {
             exit('Order declined');
         }
         $fondy = new Fondy();
         $settings = array('merchant_id' => $fondy->getOption('merchant'), 'secret_key' => $fondy->getOption('secret_key'));
         $isPaymentValid = FondyCls::isPaymentValid($settings, $_POST);
         if ($isPaymentValid !== true) {
             exit($isPaymentValid);
         }
         list($orderId, ) = explode(FondyCls::ORDER_SEPARATOR, $_POST['order_id']);
         $history = new OrderHistory();
         $history->id_order = $orderId;
         $id_order_state = _PS_OS_PAYMENT_;
         $history->changeIdOrderState(intval($id_order_state), intval($orderId));
         $history->addWithemail(true, "");
         exit('OK');
     } catch (Exception $e) {
         exit(get_class($e) . ': ' . $e->getMessage());
     }
 }
コード例 #8
0
function canceledOrderForErro($pag_seguro)
{
    $currentOrder = (int) $pag_seguro->currentOrder;
    $history = new OrderHistory();
    $history->id_order = $currentOrder;
    $history->changeIdOrderState(6, $currentOrder);
    $history->save();
}
コード例 #9
0
    public function validateOrderPay($id_cart, $id_order_state, $amount_paid, $extraCosts, $payment_method = 'Unknown', $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, $secure_key = false, Shop $shop = null)
    {
        $statusPending = Configuration::get('PAYNL_WAIT');
        $statusPaid = Configuration::get('PAYNL_SUCCESS');
        // Als er nog geen order van dit cartid is, de order valideren.
        $orderId = Order::getOrderByCartId($id_cart);
        if ($orderId == false) {
            if ($id_order_state == $statusPaid) {
                if ($extraCosts != 0) {
                    $id_order_state_tmp = $statusPending;
                } else {
                    $id_order_state_tmp = $statusPaid;
                }
            } else {
                $id_order_state_tmp = $id_order_state;
            }
            $result = parent::validateOrder($id_cart, $id_order_state_tmp, $amount_paid, $payment_method, $message, $extra_vars, $currency_special, $dont_touch_amount, $secure_key, $shop);
            $orderId = $this->currentOrder;
            if ($extraCosts == 0 && $id_order_state_tmp == $statusPaid) {
                //Als er geen extra kosten zijn, en de order staat op betaald zijn we klaar
                return $result;
            }
        }
        if ($orderId && $id_order_state == $statusPaid) {
            $order = new Order($orderId);
            $shippingCost = $order->total_shipping;
            $newShippingCosts = $shippingCost + $extraCosts;
            $extraCostsExcl = round($extraCosts / (1 + 21 / 100), 2);
            if ($extraCosts != 0) {
                //als de order extra kosten heeft, moeten deze worden toegevoegd.
                $order->total_shipping = $newShippingCosts;
                $order->total_shipping_tax_excl = $order->total_shipping_tax_excl + $extraCostsExcl;
                $order->total_shipping_tax_incl = $newShippingCosts;
                $order->total_paid_tax_excl = $order->total_paid_tax_excl + $extraCostsExcl;
                $order->total_paid_tax_incl = $order->total_paid_real = $order->total_paid = $order->total_paid + $extraCosts;
            }
            $result = $order->addOrderPayment($amount_paid, $payment_method, $extra_vars['transaction_id']);
            if (number_format($order->total_paid_tax_incl, 2) !== number_format($amount_paid, 2)) {
                $id_order_state = Configuration::get('PS_OS_ERROR');
            }
            //paymentid ophalen
            $orderPayment = OrderPayment::getByOrderId($order->id);
            $history = new OrderHistory();
            $history->id_order = (int) $order->id;
            $history->changeIdOrderState((int) $id_order_state, $order, $orderPayment);
            $res = Db::getInstance()->getRow('
			SELECT `invoice_number`, `invoice_date`, `delivery_number`, `delivery_date`
			FROM `' . _DB_PREFIX_ . 'orders`
			WHERE `id_order` = ' . (int) $order->id);
            $order->invoice_date = $res['invoice_date'];
            $order->invoice_number = $res['invoice_number'];
            $order->delivery_date = $res['delivery_date'];
            $order->delivery_number = $res['delivery_number'];
            $order->update();
            $history->addWithemail();
        }
        return $result;
    }
コード例 #10
0
 private function updateStatus($orderId, $statusId)
 {
     $order_state_id = $this->getStatus($statusId);
     $history = new OrderHistory();
     $history->id_order = $orderId;
     $history->id_order_state = $order_state_id;
     $history->changeIdOrderState($order_state_id, $orderId);
     $history->add(true);
 }
コード例 #11
0
 public static function changeOrderStatus($id_order, $id_new_state)
 {
     $new_history = new OrderHistory();
     $new_history->id_order = (int) $id_order;
     $new_history->changeIdOrderState((int) $id_new_state, $id_order, true);
     if (!$new_history->addWithemail(true)) {
         ShiptomyidLog::addLog('Error changing order_state to #' . $id_new_state, $id_order);
     }
 }
コード例 #12
0
ファイル: ems.php プロジェクト: antho-girard/syspay
function addSyspayOrderHistory($id_order, $order_state, $use_existings_payment = false)
{
    $history = new OrderHistory();
    $history->id_order = $id_order;
    $history->id_employee = (int) Configuration::get('SYSPAY_EMPLOYEE');
    $history->changeIdOrderState($order_state, $id_order, $use_existings_payment);
    $history->id_order_state = $order_state;
    $history->add(true);
}
コード例 #13
0
 public function postProcess()
 {
     parent::postProcess();
     //ИД заказа
     $ordernumber = Tools::getValue('InvId');
     //Сумма заказа
     $amount = Tools::getValue('OutSum');
     $signature = md5($amount . ':' . $ordernumber . ':' . Configuration::get('robokassa_password2'));
     //Проверка подписи
     if (strtoupper($signature) != Tools::getValue('SignatureValue')) {
         robokassa::validateAnsver($this->module->l('Invalid signature'));
     }
     if (Configuration::get('robokassa_postvalidate')) {
         $cart = new Cart((int) $ordernumber);
         //Проверка существования заказа
         if (!Validate::isLoadedObject($cart)) {
             robokassa::validateAnsver($this->module->l('Cart does not exist'));
         }
         $total_to_pay = $cart->getOrderTotal(true, Cart::BOTH);
         $currency_rub = new Currency(Currency::getIdByIsoCode('RUB'));
         if ($cart->id_currency != $currency_rub->id) {
             $currency = new Currency($cart->id_currency);
             $total_to_pay = $total_to_pay / $currency->conversion_rate * $currency_rub->conversion_rate;
         }
         $total_to_pay = number_format($total_to_pay, 2, '.', '');
         //Проверка суммы заказа
         if ($amount != $total_to_pay) {
             robokassa::validateAnsver($this->module->l('Incorrect payment summ'));
         }
         $this->module->validateOrder((int) $cart->id, Configuration::get('PS_OS_PAYMENT'), $cart->getOrderTotal(true, Cart::BOTH), $this->module->displayName, NULL, array(), NULL, false, $cart->secure_key);
     } else {
         $order = new Order((int) $ordernumber);
         //Проверка существования заказа
         if (!Validate::isLoadedObject($order)) {
             robokassa::validateAnsver($this->module->l('Order does not exist'));
         }
         $total_to_pay = $order->total_paid;
         $currency_rub = new Currency(Currency::getIdByIsoCode('RUB'));
         if ($order->id_currency != $currency_rub->id) {
             $currency = new Currency($order->id_currency);
             $total_to_pay = $total_to_pay / $currency->conversion_rate * $currency_rub->conversion_rate;
         }
         $total_to_pay = number_format($total_to_pay, 2, '.', '');
         //Проверка суммы заказа
         if ($amount != $total_to_pay) {
             robokassa::validateAnsver($this->module->l('Incorrect payment summ'));
         }
         //Меняем статус заказа
         $history = new OrderHistory();
         $history->id_order = $ordernumber;
         $history->changeIdOrderState(Configuration::get('PS_OS_PAYMENT'), $ordernumber);
         $history->addWithemail(true);
     }
     die('OK' . $ordernumber);
 }
コード例 #14
0
 /**
  * @see FrontController::postProcess()
  */
 public function postProcess()
 {
     // Log requests from Privat API side in Debug mode.
     if (Configuration::get('PRIVAT24_DEBUG_MODE')) {
         $logger = new FileLogger();
         $logger->setFilename(_PS_ROOT_DIR_ . '/log/' . $this->module->name . '_' . date('Ymd_His') . '_response.log');
         $logger->logError($_POST);
     }
     $payment = array();
     parse_str(Tools::getValue('payment'), $payment);
     $hash = sha1(md5(Tools::getValue('payment') . $this->module->merchant_password));
     if ($payment && $hash === Tools::getValue('signature')) {
         if ($payment['state'] == 'ok') {
             $state = Configuration::get('PRIVAT24_WAITINGPAYMENT_OS');
             $cart_id = (int) $payment['order'];
             $order = new Order(Order::getOrderByCartId($cart_id));
             if (!Validate::isLoadedObject($order)) {
                 PrestaShopLogger::addLog('Privat24: cannot get order by cart id ' . $cart_id, 3);
                 die;
             }
             if ($order->getCurrentState() != $state) {
                 PrestaShopLogger::addLog(sprintf('Privat24: order id %s current state %s !== expected state %s', $order->id, $order->getCurrentState(), $state), 3);
                 die;
             }
             // Check paid currency and paid amount.
             $id_currency = Currency::getIdByIsoCode($payment['ccy']);
             if (!$id_currency) {
                 PrestaShopLogger::addLog(sprintf('Privat24: order id %s cannot get currency id by iso code: %s', $order->id, $payment['ccy']), 3);
                 die;
             }
             if ($order->id_currency != $id_currency) {
                 PrestaShopLogger::addLog(sprintf('Privat 24: order id %s, order currency id %s does not match with %s', $order->id, $order->id_currency, $id_currency), 3);
                 die;
             }
             if ((double) $order->total_paid != (double) $payment['amt']) {
                 PrestaShopLogger::addLog(sprintf('Privat 24: order id %s order total paid %s does not match %s', $order->id, $order->total_paid, $payment['amt']), 3);
                 die;
             }
             $order_history = new OrderHistory();
             $order_history->id_order = $order->id;
             $order_history->changeIdOrderState(_PS_OS_PAYMENT_, $order->id);
             $order_history->addWithemail();
             $this->setPaymentTransaction($order, $payment);
             $this->module->paymentNotify($order, $payment);
             PrestaShopLogger::addLog(sprintf('Privat24 payment accepted: order id: %s, amount: %s, ref: %s', $order->id, $payment['amt'], $payment['ref']), 1);
         } else {
             PrestaShopLogger::addLog(sprintf('Privat24 payment failed: state: %s, order: %s, ref: %s', $payment['state'], $payment['order'], $payment['ref']), 3, null, null, null, true);
         }
     } else {
         PrestaShopLogger::addLog('Privat24: Payment callback bad signature.', 3, null, null, null, true);
     }
     die;
 }
コード例 #15
0
function updateOrder($orderId, $response)
{
    $order_state_id = (int) Configuration::get('PS_OS_BCASH_CANCELLED');
    if ($response->transactionStatusId == 6) {
        $order_state_id = (int) Configuration::get('PS_OS_BCASH_REFUNDED');
    }
    $history = new OrderHistory();
    $history->id_order = $orderId;
    $history->id_order_state = $order_state_id;
    $history->changeIdOrderState($order_state_id, $orderId);
    $history->add(true);
}
コード例 #16
0
 public function initContent()
 {
     global $smarty, $cart;
     $this->display_column_left = false;
     $this->display_column_right = false;
     parent::initContent();
     if (!empty($_POST)) {
         $b_is_SSL = function_exists('curl_init') && function_exists('curl_setopt') && function_exists('curl_exec') && function_exists('curl_close');
         $p24_session_id = $_POST["p24_session_id"];
         $p24_order_id = $_POST["p24_order_id"];
         $p24_id_sprzedawcy = Configuration::get('P24_ID_SPRZEDAWCY');
         //TWÓJ ID_SPRZEDAWCY;
         $sa_sid = explode('|', $_POST["p24_session_id"]);
         $sa_sid = preg_replace('/[^a-z0-9]/i', '', $sa_sid[1]);
         $o_order = Db::getInstance()->getRow('SELECT `i_id_order`,`i_amount` FROM `' . _DB_PREFIX_ . 'przelewy24_amount` WHERE `s_sid`="' . $sa_sid . '"');
         $p24_kwota = (int) $o_order['i_amount'];
         // WYNIK POBRANY Z TWOJEJ BAZY (w groszach)
         $i_id_order = $o_order['i_id_order'];
         $WYNIK = false;
         $url = 'secure.przelewy24.pl';
         if (Configuration::get('P24_TEST_MODE') == 1) {
             $url = 'sandbox.przelewy24.pl';
         }
         if ($b_is_SSL) {
             $WYNIK = p24_weryfikujSSL($p24_id_sprzedawcy, $p24_session_id, $p24_order_id, $p24_kwota, $url);
         } else {
             $WYNIK = p24_weryfikujNoSSL($p24_id_sprzedawcy, $p24_session_id, $p24_order_id, $p24_kwota, $url);
         }
         $o_przelewy24 = new Przelewy24();
         $opis = "przelewy24.pl";
         $cart = new Cart($i_id_order);
         $secure_key = $cart->secure_key;
         if ($WYNIK[0] == 'TRUE') {
             $order_id = Order::getOrderByCartId(intval($i_id_order));
             $order = new Order($order_id);
             $history = new OrderHistory();
             $history->id_order = intval($order_id);
             $order_state = Configuration::get('P24_ORDER_STATE_2');
             $history->changeIdOrderState($order_state, intval($order_id));
             $history->addWithemail(true);
             $payments = $order->getOrderPaymentCollection();
             if (count($payments) > 0) {
                 $payments[0]->transaction_id = $p24_order_id;
                 $payments[0]->update();
             }
         }
         $smarty->assign('p24_status', 'success');
     }
     $this->setTemplate('paymentSuccessful.tpl');
 }
コード例 #17
0
 private function updateOrderStatus($orderId, $statusName)
 {
     $query = '
         SELECT osl.`id_order_state`, osl.`name` FROM `' . _DB_PREFIX_ . 'order_state_lang` osl
         JOIN `' . _DB_PREFIX_ . 'order_state` os ON osl.`id_order_state` = os.`id_order_state` AND module_name = \'pagseguro\'
         WHERE osl.`name` LIKE "' . $statusName . '" GROUP BY osl.`name` LIMIT 0, 1
     ';
     if ($result = Db::getInstance()->executeS($query)) {
         $status = $result[0]['id_order_state'];
         $order = new Order($orderId);
         $history = new OrderHistory();
         $history->id_order = (int) $order->id;
         $history->changeIdOrderState($status, $order->id);
         return (bool) $history->addWithemail();
     }
     return false;
 }
コード例 #18
0
 public function initContent()
 {
     $order_id = (int) Tools::getValue('merchantReference');
     Logger::addLog('Adyen module: incoming notification for id_order ' . $order_id);
     if ($this->validateNotificationCredential()) {
         $psp_reference = (string) Tools::getValue('pspReference');
         $event_code = (string) Tools::getValue('eventCode');
         $auth_result = (string) Tools::getValue('authResult');
         $payment_method = (string) Tools::getValue('paymentMethod');
         $success = (string) Tools::getValue('success');
         $event_data = !empty($event_code) ? $event_code : $auth_result;
         // check if notification is already executed on server based on psp_reference and event_code
         if ((int) $order_id > 0 && !$this->isDuplicate($psp_reference, $event_code)) {
             // save notification to table so notification is handled only once
             Db::getInstance()->insert('adyen_event_data', array('psp_reference' => pSQL($psp_reference), 'adyen_event_code' => pSQL($event_code), 'adyen_event_result' => pSQL($event_data), 'id_order' => (int) $order_id, 'payment_method' => pSQL($payment_method), 'created_at' => date('Y-m-d H:i:s')));
             // get the order
             $order = new Order($order_id);
             $history = new OrderHistory();
             $history->id_order = (int) $order->id;
             if (strcmp($success, 'false') == 0 || $success == '' || $event_code == 'CANCELLATION') {
                 // failed if post value success is false or not filled in
                 $history->changeIdOrderState((int) Configuration::get('ADYEN_STATUS_CANCELLED'), (int) $order->id);
                 $history->add();
                 Logger::addLog('Adyen module: status for id_order ' . $order->id . ' is changed to cancelled');
             } else {
                 // if success is not false then check if eventCode is AUTHORISATION so that order status is accepted
                 if ($event_code == 'AUTHORISATION') {
                     $history->changeIdOrderState((int) Configuration::get('ADYEN_STATUS_AUTHORIZED'), (int) $order->id);
                     $history->add();
                     Logger::addLog('Adyen module: status for id_order ' . $order->id . ' is changed to authorized');
                 } else {
                     Logger::addLog('Adyen module: status for id_order ' . $order->id . ' is ' . $event_code . ' and is ignored');
                 }
             }
         } else {
             Logger::addLog('Adyen module: incoming notification ignored because it is already handled for id_order ' . $order_id);
         }
     } else {
         Logger::addLog('Adyen module: invalid credential for incoming notification of id_order ' . $order_id, 4);
         // unauthorized
         header('HTTP/1.1 401 Unauthorized', true, 401);
         exit;
     }
     // always return accepted
     die('[accepted]');
 }
コード例 #19
0
 /**
  * Makes requesting a refund
  */
 public function display()
 {
     $sa = new DotpaySellerApi($this->config->getDotpaySellerApiUrl());
     $result = $sa->makeReturnMoney($this->config->getDotpayApiUsername(), $this->config->getDotpayApiPassword(), Tools::getValue('payment'), Tools::getValue('amount'), Tools::getValue('order_id'), Tools::getValue('description'));
     if ($result['http_code'] == 200) {
         $status = 'success';
         $state = $this->config->getDotpayWaitingRefundStatusId();
         $history = new OrderHistory();
         $history->id_order = Tools::getValue('order_id');
         $history->changeIdOrderState($state, $history->id_order);
         $history->addWithemail(true);
     } else {
         $status = 'error';
         $this->context->cookie->dotpay_error = $result['detail'];
     }
     Tools::redirectAdmin($this->getRedirectUrl($status));
 }
コード例 #20
0
ファイル: gopay_tools.php プロジェクト: greench/prestashop
 public function processPayment($result, $orderId)
 {
     $gopay = new Gopay();
     $gpErrors = "";
     $history = new OrderHistory();
     $history->id_order = $orderId;
     if ($result["code"] == GopayHelper::WAITING) {
         $gpErrors = $result["description"];
     } else {
         if ($result["code"] == GopayHelper::PAYMENT_DONE) {
             if ($history->getLastOrderState($orderId)->id == intval(_PS_OS_GOPAY_)) {
                 $history->changeIdOrderState(intval(_PS_OS_PAYMENT_), intval($orderId));
                 $history->addWithemail();
             }
         } else {
             if ($result["code"] == GopayHelper::CANCELED || $result["code"] == GopayHelper::TIMEOUTED) {
                 if ($history->getLastOrderState($orderId)->id == intval(_PS_OS_GOPAY_)) {
                     $history->changeIdOrderState(intval(_PS_OS_CANCELED_), $orderId);
                     $history->addWithemail();
                 }
                 $gpErrors = $result["description"];
             }
         }
     }
     return $gpErrors;
 }
コード例 #21
0
ファイル: CartModule.php プロジェクト: buildshop/bs-common
 public function afterUninstall()
 {
     Yii::app()->settings->clear($this->id);
     //Yii::app()->unintallComponent('cart');
     $db = Yii::app()->db;
     $tablesArray = array(Order::model()->tableName(), OrderHistory::model()->tableName(), OrderProduct::model()->tableName(), OrderStatus::model()->tableName(), OrderProductHistroy::model()->tableName(), ShopPaymentMethod::model()->tableName(), ShopPaymentMethodTranslate::model()->tableName(), ShopDeliveryMethod::model()->tableName(), ShopDeliveryMethodTranslate::model()->tableName(), ShopDeliveryPayment::model()->tableName(), ProductNotifications::model()->tableName());
     foreach ($tablesArray as $table) {
         $db->createCommand()->dropTable($table);
     }
     return parent::afterInstall();
 }
コード例 #22
0
 /**
  * @see FrontController::initContent()
  */
 public function initContent()
 {
     // if customer press "back" from VTweb, they'll be redirected to re-order link in order to put back their order into shopping cart (normally, their shopping cart is emptied before redirected to VTWeb, so re-order is needed to make sure they have their order back in shopping cart).
     $this->display_column_left = false;
     $this->display_column_right = false;
     parent::initContent();
     global $smarty;
     if (null !== Tools::getValue('order_id') && '' !== Tools::getValue('order_id')) {
         $order_id = Tools::getValue('order_id');
     }
     // set order status in backend to be failure
     $history = new OrderHistory();
     $history->id_order = $order_id;
     $history->changeIdOrderState(Configuration::get('VI_PAYMENT_FAILURE_STATUS_MAP'), $order_id);
     $history->add(true);
     //
     $cart = $this->context->cart;
     $status = 'back';
     $this->context->smarty->assign(array('status' => $status, 'order_id' => $order_id, 'this_path' => $this->module->getPathUri(), 'this_path_ssl' => Tools::getShopDomainSsl(true, true) . __PS_BASE_URI__ . 'modules/' . $this->module->name . '/'));
     $this->setTemplate('notification.tpl');
 }
コード例 #23
0
ファイル: callback.php プロジェクト: venya/prestashop
 /**
  * @see FrontController::postProcess()
  */
 public function postProcess()
 {
     try {
         if ($_POST['order_status'] == OplataCls::ORDER_DECLINED) {
             exit('Order declined');
         }
         $oplata = new Oplata();
         $settings = array('merchant_id' => $oplata->getOption('merchant'), 'secret_key' => $oplata->getOption('secret_key'));
         $isPaymentValid = OplataCls::isPaymentValid($settings, $_POST);
         if ($isPaymentValid !== true) {
             exit($isPaymentValid);
         }
         list($orderId, ) = explode(OplataCls::ORDER_SEPARATOR, $_POST['order_id']);
         $history = new OrderHistory();
         $history->id_order = $orderId;
         $history->changeIdOrderState((int) Configuration::get('PS_OS_PAYMENT'), $orderId);
         $history->addWithemail(true, array('order_name' => $orderId));
         exit('OK');
     } catch (Exception $e) {
         exit(get_class($e) . ': ' . $e->getMessage());
     }
 }
コード例 #24
0
ファイル: result.php プロジェクト: cloudipsp/prestashop
 public function postProcess()
 {
     list($orderId, ) = explode(FondyCls::ORDER_SEPARATOR, $_POST['order_id']);
     $this->_order = new Order(intval($orderId));
     $this->_customer = new Customer($this->_order->id_customer);
     if ($_POST['order_status'] == FondyCls::ORDER_DECLINED) {
         $this->showError(Tools::displayError('Order declined'));
     }
     $settings = array('merchant_id' => $this->getOption('merchant'), 'secret_key' => $this->getOption('secret_key'));
     $isPaymentValid = FondyCls::isPaymentValid($settings, $_POST);
     if ($isPaymentValid !== true) {
         $this->showError(Tools::displayError($isPaymentValid));
     }
     if (!Validate::isLoadedObject($this->_customer)) {
         Tools::redirectLink(__PS_BASE_URI__ . 'order.php?step=1');
     }
     $history = new OrderHistory();
     $history->id_order = $orderId;
     $id_order_state = _PS_OS_PAYMENT_;
     $history->changeIdOrderState(intval($id_order_state), intval($orderId));
     $history->addWithemail(true, "");
     // redirect to success
     Tools::redirectLink(__PS_BASE_URI__ . 'modules/fondy/result-success.php');
 }
コード例 #25
0
 public function changeIdOrderState($new_order_state = NULL, $id_order)
 {
     if ($new_order_state != NULL) {
         Hook::updateOrderStatus(intval($new_order_state), intval($id_order));
         /* Best sellers */
         $newOS = new OrderState(intval($new_order_state));
         $oldOrderStatus = OrderHistory::getLastOrderState(intval($id_order));
         $cart = Cart::getCartByOrderId($id_order);
         $isValidated = $this->isValidated();
         if (Validate::isLoadedObject($cart)) {
             foreach ($cart->getProducts() as $product) {
                 /* If becoming logable => adding sale */
                 if ($newOS->logable and (!$oldOrderStatus or !$oldOrderStatus->logable)) {
                     ProductSale::addProductSale($product['id_product'], $product['cart_quantity']);
                 } elseif (!$newOS->logable and ($oldOrderStatus and $oldOrderStatus->logable)) {
                     ProductSale::removeProductSale($product['id_product'], $product['cart_quantity']);
                 }
                 if (!$isValidated and $newOS->logable and isset($oldOrderStatus) and $oldOrderStatus and $oldOrderStatus->id == _PS_OS_ERROR_) {
                     Product::updateQuantity($product);
                     Hook::updateQuantity($product, $order);
                 }
             }
         }
         $this->id_order_state = intval($new_order_state);
         /* Change invoice number of order ? */
         $newOS = new OrderState(intval($new_order_state));
         $order = new Order(intval($id_order));
         if (!Validate::isLoadedObject($newOS) or !Validate::isLoadedObject($order)) {
             die(Tools::displayError('Invalid new order state'));
         }
         /* The order is valid only if the invoice is available and the order is not cancelled */
         $order->valid = $newOS->logable;
         $order->update();
         if ($newOS->invoice and !$order->invoice_number) {
             $order->setInvoice();
         }
         if ($newOS->delivery and !$order->delivery_number) {
             $order->setDelivery();
         }
         Hook::postUpdateOrderStatus(intval($new_order_state), intval($id_order));
     }
 }
コード例 #26
0
ファイル: status.php プロジェクト: dotpay/dotpay
 /**
  * Checks a payment status of order in shop
  */
 public function initContent()
 {
     $cookie = new Cookie('lastOrder');
     if ($cookie->orderId != null) {
         $lastOrderState = OrderHistory::getLastOrderState($cookie->orderId);
         switch ($lastOrderState->id) {
             case $this->config->getDotpayNewStatusId():
                 if (Tools::getValue('lastRequest') === true) {
                     $cookie->logout();
                 }
                 die('0');
             case _PS_OS_PAYMENT_:
                 $cookie->logout();
                 die('1');
             default:
                 die('-1');
         }
     } else {
         die('NO');
     }
 }
コード例 #27
0
ファイル: notify.php プロジェクト: yiuked/tmcart
 public function changeOrderStatusSub($id_order)
 {
     Log::DEBUG("change:1." . $id_order);
     if ($id_order) {
         Log::DEBUG("change:2." . $id_order);
         $lastHistory = OrderHistory::getLastOrderState($id_order);
         if ($lastHistory->id == Configuration::get('PS_OS_PAYMENT')) {
             Log::DEBUG("change:2.1." . $id_order);
             return true;
         }
         $history = new OrderHistory();
         $history->id_order = (int) $id_order;
         $history->changeIdOrderState(Configuration::get('PS_OS_PAYMENT'), (int) $id_order);
         Log::DEBUG("change:3." . $id_order);
         if ($history->addWithemail()) {
             Log::DEBUG("change:4." . $id_order);
             return true;
         }
     }
     return false;
 }
コード例 #28
0
 public function cron($jobname, $params, &$message, &$errorcount)
 {
     switch ($jobname) {
         case 'set_shipping_completed':
             $this->setOrderShippingCompleted($message, $errorcount);
             break;
         case 'cancel_orders':
             $this->log("cron executed job '" . $jobname . "'", ShopgateLogger::LOGTYPE_DEBUG);
             $cancellationStatus = ConfigurationCore::get('SG_CANCELLATION_STATUS');
             $select = sprintf('SELECT ' . (version_compare(_PS_VERSION_, '1.5.0', '>=') ? ' o.current_state,  ' : ' o.id_order, ') . ' so.id_shopgate_order from %sshopgate_order as so
                     JOIN %sorders as o on so.id_order=o.id_order 
                     WHERE so.is_cancellation_sent_to_shopgate = 0', _DB_PREFIX_, _DB_PREFIX_);
             $result = Db::getInstance()->ExecuteS($select);
             if (empty($result)) {
                 $this->log('no orders to cancel found for shop:' . $this->config->getShopNumber(), ShopgateLogger::LOGTYPE_DEBUG);
                 return;
             }
             foreach ($result as $order) {
                 $sgOrder = new ShopgateOrderPrestashop($order['id_shopgate_order']);
                 if (is_string($sgOrder->order_number)) {
                     $sgOrder->order_number = (int) $sgOrder->order_number;
                 }
                 if (version_compare(_PS_VERSION_, '1.5.0', '>=')) {
                     $state = $order['current_state'];
                 } else {
                     $stateObject = OrderHistory::getLastOrderState($order['id_order']);
                     $state = $stateObject->id;
                 }
                 if ($state == $cancellationStatus) {
                     $sgOrder->cancelOrder($message);
                 } else {
                     $sgOrder->cancelOrder($message, true);
                 }
             }
             break;
         default:
             $this->log("job '" . $jobname . "' not found", ShopgateLogger::LOGTYPE_ERROR);
             throw new ShopgateLibraryException(ShopgateLibraryException::PLUGIN_CRON_UNSUPPORTED_JOB, 'Job name: "' . $jobname . '"', true);
     }
 }
コード例 #29
0
     } else {
         $message = $ppec->l('Price payed on paypal is not the same that on PrestaShop.') . '<br />';
     }
 }
 if (_PS_VERSION_ >= '1.5') {
     $ppec->getContext()->cookie->id_cart = $cart->id;
     $ppec->validateOrder((int) $cart->id, $payment_type, (double) $cart->getOrderTotal(true, Cart::BOTH), 'PayPal', $message, $transaction, (int) $cart->id_currency, false, $customer->secure_key, $ppec->getContext()->shop);
 } else {
     $ppec->validateOrder((int) $cart->id, $payment_type, (double) $cart->getOrderTotal(true, Cart::BOTH), 'PayPal', $message, $transaction, (int) $cart->id_currency, false, $customer->secure_key);
 }
 if (!$ppec->currentOrder) {
     $ppec->logs[] = $this->l('Cannot create order');
 } else {
     $id_order = (int) $ppec->currentOrder;
     $order = new Order($id_order);
     $history = new OrderHistory();
     $history->id_order = (int) $id_order;
     $history->changeIdOrderState((int) $payment_type, $id_order);
     $history->addWithemail();
     $history->add();
 }
 unset(Context::getContext()->cookie->{PaypalExpressCheckout::$COOKIE_NAME});
 // Update for the Paypal shipping cost
 if ($order) {
     $values = array('key' => $customer->secure_key, 'id_module' => (int) $ppec->id, 'id_cart' => (int) $cart->id, 'id_order' => (int) $ppec->currentOrder);
     $query = http_build_query($values, '', '&');
     if (_PS_VERSION_ < '1.5') {
         Tools::redirectLink(__PS_BASE_URI__ . '/modules/paypal/express_checkout/submit.php?' . $query);
     } else {
         $controller = new FrontController();
         $controller->init();
コード例 #30
0
    public function update_cart_by_junglee_xml($order_id, $data)
    {
        $xml = simplexml_load_string($data);
        $prefix = _DB_PREFIX_;
        $tablename = $prefix . 'orders';
        $total_amount = 0;
        $total_principal = 0;
        $shipping_amount = 0;
        $total_promo = 0;
        foreach ($xml->ProcessedOrder->ProcessedOrderItems->ProcessedOrderItem as $item) {
            $product_id = (string) $item->SKU;
            $product = new Product((int) $product_id);
            $SKU = $product->reference;
            $Title = (string) $item->Title;
            $Amount = (double) $item->Price->Amount;
            $other_promo = 0;
            foreach ($item->ItemCharges->Component as $amount_type) {
                $item_charge_type = (string) $amount_type->Type;
                if ($item_charge_type == 'Principal') {
                    $principal = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'Shipping') {
                    $Shipping = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'PrincipalPromo') {
                    $principal_promo = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'ShippingPromo') {
                    $shipping_promo = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'OtherPromo') {
                    $other_promo = (string) $amount_type->Charge->Amount;
                }
            }
            $CurrencyCode = (string) $item->Price->CurrencyCode;
            $Quantity = (int) $item->Quantity;
            $total_principal += $principal;
            $total_amount += $principal - $principal_promo + ($Shipping - $shipping_promo);
            $shipping_amount += $Shipping;
            $total_promo += $principal_promo + $shipping_promo + $other_promo;
        }
        $ShippingServiceLevel = (string) $xml->ProcessedOrder->ShippingServiceLevel;
        $sql = 'UPDATE `' . $prefix . 'pwa_orders` set `shipping_service` = "' . $ShippingServiceLevel . '" , `order_type` = "junglee" where `prestashop_order_id` = "' . $order_id . '" ';
        Db::getInstance()->Execute($sql);
        $email = (string) $xml->ProcessedOrder->BuyerInfo->BuyerEmailAddress;
        $sql = 'SELECT * from `' . $prefix . 'customer` where email = "' . $email . '" ';
        $results = Db::getInstance()->ExecuteS($sql);
        if (empty($results)) {
            $name = (string) $xml->ProcessedOrder->BuyerInfo->BuyerName;
            $name_arr = explode(' ', $name);
            if (count($name_arr) > 1) {
                $firstname = '';
                for ($i = 0; $i <= count($name_arr) - 2; $i++) {
                    $firstname = $firstname . ' ' . $name_arr[$i];
                }
                $lastname = $name_arr[count($name_arr) - 1];
            } else {
                $firstname = $name;
                $lastname = '.';
            }
            $password = Tools::passwdGen();
            $customer = new Customer();
            $customer->firstname = trim($firstname);
            $customer->lastname = $lastname;
            $customer->email = (string) $xml->ProcessedOrder->BuyerInfo->BuyerEmailAddress;
            $customer->passwd = md5($password);
            $customer->active = 1;
            if (Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) {
                $customer->is_guest = 1;
            } else {
                $customer->is_guest = 0;
            }
            $customer->add();
            $customer_id = $customer->id;
            if (Configuration::get('PS_CUSTOMER_CREATION_EMAIL') && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) {
                Mail::Send($this->context->language->id, 'account', Mail::l('Welcome!'), array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => $password), $customer->email, $customer->firstname . ' ' . $customer->lastname);
            }
        } else {
            $customer_id = $results[0]['id_customer'];
        }
        $id_country = Country::getByIso((string) $xml->ProcessedOrder->ShippingAddress->CountryCode);
        if ($id_country == 0 || $id_country == '') {
            $id_country = 110;
        }
        $name = (string) $xml->ProcessedOrder->ShippingAddress->Name;
        $name_arr = explode(' ', $name);
        if (count($name_arr) > 1) {
            $firstname = '';
            for ($i = 0; $i <= count($name_arr) - 2; $i++) {
                $firstname = $firstname . ' ' . $name_arr[$i];
            }
            $lastname = $name_arr[count($name_arr) - 1];
        } else {
            $firstname = $name;
            $lastname = '.';
        }
        $address = new Address();
        $address->id_country = $id_country;
        $address->id_state = 0;
        $address->id_customer = $customer_id;
        $address->alias = 'My Address';
        $address->firstname = trim($firstname);
        $address->lastname = $lastname;
        $address->address1 = (string) $xml->ProcessedOrder->ShippingAddress->AddressFieldOne;
        $address->address2 = (string) $xml->ProcessedOrder->ShippingAddress->AddressFieldTwo;
        $address->postcode = (string) $xml->ProcessedOrder->ShippingAddress->PostalCode;
        $address->city = (string) $xml->ProcessedOrder->ShippingAddress->City . ' ' . (string) $xml->ProcessedOrder->ShippingAddress->State;
        $address->active = 1;
        $address->add();
        $address_id = $address->id;
        //$id_order_state = Configuration::get('PS_OS_PREPARATION');
        $id_order_state = 99;
        $reference = Order::generateReference();
        $order = new Order();
        $order->id = $order_id;
        $order->id_customer = (int) $customer_id;
        $order->id_address_invoice = (int) $address_id;
        $carrier = null;
        $sql = 'SELECT id_carrier from  `' . $prefix . 'carrier` where `active` = 1 and `deleted` = 0 limit 0,1';
        $result = Db::getInstance()->ExecuteS($sql);
        $id_carrier = $result[0]['id_carrier'];
        $sql = 'SELECT id_currency from  `' . $prefix . 'currency` where `active` = 1 and `deleted` = 0 and `iso_code` = "INR" limit 0,1';
        $result = Db::getInstance()->ExecuteS($sql);
        $currency_id = $result[0]['id_currency'];
        $sql = 'UPDATE `' . $tablename . '` set 
			  `id_customer` = ' . (int) $customer_id . ',
			  `id_carrier` = ' . $id_carrier . ',
			  `id_address_invoice` = ' . (int) $address_id . ',
			  `id_address_delivery` = ' . (int) $address_id . ',
			  `id_currency` = ' . $currency_id . ',
			  `reference` = "' . $reference . '",
			  `secure_key` = "' . md5(uniqid()) . '",
			  
			  `total_paid` = ' . $total_amount . ',
			  `total_paid_tax_incl` = ' . $total_amount . ',
			  `total_paid_tax_excl` = ' . $total_amount . ',
			  `total_paid_real` = 0,
			 
			  `total_shipping` = ' . $shipping_amount . ',
			  `total_shipping_tax_incl` = ' . $shipping_amount . ',
			  `total_shipping_tax_excl` = ' . $shipping_amount . ',
			  
			  `total_discounts` = ' . (double) $total_promo . ',
			  `total_discounts_tax_incl` = ' . (double) $total_promo . ',
			  `total_discounts_tax_excl` = ' . (double) $total_promo . ',
			  
			  `total_products` = ' . $total_principal . ',
			  `total_products_wt` = ' . $total_principal . ',
			  
			  `invoice_date` = "0000-00-00 00:00:00",
			  `delivery_date` = "0000-00-00 00:00:00"
			  where `id_order` = ' . $order_id . ' ';
        //`round_mode` = '.Configuration::get('PS_PRICE_ROUND_MODE').',
        /*`total_wrapping_tax_incl` = '.$WrappingAmount.',
          `total_wrapping_tax_excl` = '.$WrappingAmount.',
          `total_wrapping` = '.$WrappingAmount.',*/
        Db::getInstance()->Execute($sql);
        $acknowledge_arr = array();
        $i = 0;
        foreach ($xml->ProcessedOrder->ProcessedOrderItems->ProcessedOrderItem as $item) {
            $product_id = (string) $item->SKU;
            $product = new Product((int) $product_id);
            $SKU = $product->reference;
            $AmazonOrderItemCode = (string) $item->AmazonOrderItemCode;
            $Title = (string) $item->Title;
            $Amount = (double) $item->Price->Amount;
            $acknowledge_arr['items'][$i]['AmazonOrderItemCode'] = $AmazonOrderItemCode;
            $acknowledge_arr['items'][$i]['product_id'] = $product_id;
            $CurrencyCode = (string) $item->Price->CurrencyCode;
            $Quantity = (int) $item->Quantity;
            $other_promo = 0;
            foreach ($item->ItemCharges->Component as $amount_type) {
                $item_charge_type = (string) $amount_type->Type;
                if ($item_charge_type == 'Principal') {
                    $principal = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'Shipping') {
                    $Shipping = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'PrincipalPromo') {
                    $principal_promo = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'ShippingPromo') {
                    $shipping_promo = (string) $amount_type->Charge->Amount;
                }
                if ($item_charge_type == 'OtherPromo') {
                    $other_promo = (string) $amount_type->Charge->Amount;
                }
            }
            $sql = 'INSERT into `' . $prefix . 'order_detail` set
							`id_order` = ' . $order_id . ',
							`product_id` = ' . $product_id . ',
							`product_name` = "' . $Title . '",
							`product_quantity` = ' . $Quantity . ',
							`product_quantity_in_stock` = ' . $Quantity . ',
							`product_price` = ' . $Amount . ',
							`product_reference` = "' . $SKU . '",
							`total_price_tax_incl` = ' . $Amount * $Quantity . ',
							`total_price_tax_excl` = ' . $Amount * $Quantity . ',
							`unit_price_tax_incl` = ' . $Amount . ',
							`unit_price_tax_excl` = ' . $Amount . ',
							`original_product_price` = ' . $Amount . '
							';
            Db::getInstance()->Execute($sql);
            $sql = 'UPDATE `' . $prefix . 'stock_available` set
						`quantity` = `quantity` - ' . $Quantity . '
						where `id_product` = ' . $product_id . ' and
						`id_product_attribute` = 0
						';
            Db::getInstance()->Execute($sql);
            $date = date('Y-m-d');
            $sql = 'UPDATE `' . $prefix . 'product_sale` set
						`quantity` = `quantity` + ' . $Quantity . ',
						`sale_nbr` = `sale_nbr` + ' . $Quantity . ',
						`date_upd` = ' . $date . '
						where `id_product` = ' . $product_id . '
						';
            Db::getInstance()->Execute($sql);
            $i++;
        }
        // Adding an entry in order_carrier table
        if (!is_null($carrier)) {
            $order_carrier = new OrderCarrier();
            $order_carrier->id_order = (int) $order->id;
            $order_carrier->id_carrier = (int) $id_carrier;
            $order_carrier->weight = '0';
            $order_carrier->shipping_cost_tax_excl = (double) $shipping_amount;
            $order_carrier->shipping_cost_tax_incl = (double) $shipping_amount;
            $order_carrier->add();
        } else {
            $order_carrier = new OrderCarrier();
            $order_carrier->id_order = (int) $order->id;
            $order_carrier->id_carrier = (int) $id_carrier;
            $order_carrier->weight = '0';
            $order_carrier->shipping_cost_tax_excl = (double) $shipping_amount;
            $order_carrier->shipping_cost_tax_incl = (double) $shipping_amount;
            $order_carrier->add();
        }
        // Set the order status
        $history = new OrderHistory();
        $history->id_order = (int) $order->id;
        $history->changeIdOrderState((int) $id_order_state, $order->id, true);
        $history->addWithemail(true, array());
        $acknowledge_arr['MerchantOrderID'] = (int) $order->id;
    }