/** * if cart is edited at shop, send new data to SOFORT * @param string $transactionId * @param array $articles * @param string $comment */ public function editArticlesSofort($transactionId, $articles, $comment = '') { $PnagInvoice = new PnagInvoice(shopGetConfigKey(), $transactionId); $sofortArticles = array(); $orderId = ''; $taxLow = 0; $taxHigh = 0; $subtotal = 0; $shipping = 0; $discount = array(); $agio = array(); foreach ($articles as $article) { if ($orderId == '') { $orderId = (int) $article['articleOrdersId']; } if ($article['articleQuantity'] != 'delete') { array_push($sofortArticles, array('itemId' => $article['articleId'], 'productNumber' => $article['articleNumber'], 'title' => HelperFunctions::convertEncoding($article['articleTitle'], 3), 'description' => HelperFunctions::convertEncoding($article['articleDescription'], 3), 'quantity' => $article['articleQuantity'], 'unitPrice' => number_format($article['articlePrice'], 2, '.', ''), 'tax' => number_format($article['articleTax'], 2, '.', ''))); } switch ($article['articleType']) { case 'shipping': $shipping = $article['articlePrice']; break; case 'discount': $splitItemId = explode('|', $article['articleId']); $discountClass = $splitItemId[1]; array_push($discount, array('class' => $discountClass, 'value' => $article['articlePrice'])); break; case 'agio': $splitItemId = explode('|', $article['articleId']); $agioClass = $splitItemId[1]; array_push($agio, array('class' => $agioClass, 'value' => $article['articlePrice'])); break; case 'product': $subtotal += $article['articleQuantity'] * $article['articlePrice']; break; } switch ($article['articleTax']) { case 7: $taxLow += $article['articleQuantity'] * $article['articlePrice']; break; case 19: $taxHigh += $article['articleQuantity'] * $article['articlePrice']; break; } } $lastShopTotal = HelperFunctions::getLastFieldValueFromSofortTable($orderId, 'amount'); $time = strftime('%Y-%m-%d %H:%M:%S', time()); $errors = $PnagInvoice->updateInvoice($transactionId, $sofortArticles, $comment); $warnings = $PnagInvoice->getWarnings(); if ($errors) { return array('errors' => $errors, 'warnings' => $warnings); } $PnagInvoice->refreshTransactionData(); $orderStatus = shopDbQuery('SELECT orders_status FROM ' . TABLE_ORDERS . ' WHERE orders_id = "' . $orderId . '"'); $orderStatus = shopDbFetchArray($orderStatus); $this->_insertNewTotalCommentToHistory($orderId, $orderStatus['orders_status'], $time, $PnagInvoice, $lastShopTotal); $this->editArticlesShop($PnagInvoice, $orderId); return false; }
/** * get current order-status from table orders and table orders_sofort * @return array with order_status from both tables */ function getAllCurrentOrderStatus($ordersId) { if (!$ordersId) { return false; } $sofortStatus = HelperFunctions::getLastFieldValueFromSofortTable($ordersId, 'status'); $query = xtc_db_query('SELECT orders_status FROM orders WHERE orders_id = ' . HelperFunctions::escapeSql($ordersId)); $result = xtc_db_fetch_array($query); $coreStatus = $result['orders_status']; return array('sofortOrdersStatus' => $sofortStatus, 'coreStatus' => $coreStatus); }
/** * Check if an already refunded invoice was enabled again */ function refundedInvoiceWasJustReanimated($orderId, $currentStatus) { $lastStatus = HelperFunctions::getLastFieldValueFromSofortTable($orderId, 'status'); if ($lastStatus == 'refunded' && $currentStatus != 'refunded') { return true; } else { return false; } }