コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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);
 }
コード例 #3
0
/**
 * 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;
    }
}