/**
     * Returns articles from the order. Delivers a JSON String with article details
     *
     * @see templates/backend/plugins/PigmbhKlarnaPayment/index.php
     * @throws KlarnaException
     */
    public function returnArticlesAction()
    {
        $this->View()->setTemplate();
        $piKlarnaArticleNr = explode(";", $this->Request()->articlenr);
        $piKlarnaQuantity = explode(";", $this->Request()->anzahl);
        $piKlarnaInvoiceNumber = explode(";", $this->Request()->rechnungsnr);
        $piKlarnaOrderNumber = $this->Request()->myordernumber;
        $piKlarnaError = array();
        $piKlarnaQuantityprorechnung = array();
        $piKlarnaNewInvoiceNumber = array();
        $piKlarnaArticlesQuantity = array();
        $myresult = array();
        if (sizeof($piKlarnaArticleNr) > 0) {
            $i = 0;
            $j = 0;
            for ($i = 0; $i < sizeof($piKlarnaArticleNr); $i++) {
                if ($i == 0) {
                    $piKlarnaQuantityprorechnung[$j] = $piKlarnaQuantity[$i];
                    $piKlarnaNewInvoiceNumber[$j] = $piKlarnaInvoiceNumber[$i];
                    $sql = "SELECT SUM(anzahl) FROM Pi_klarna_payment_bills_articles WHERE invoice_number = ?";
                    $piKlarnaArticlesQuantity[$j] = Shopware()->Db()->fetchOne($sql, array($piKlarnaInvoiceNumber[$i]));
                }
                else {
                    if ($piKlarnaInvoiceNumber[$i] == $piKlarnaNewInvoiceNumber[$j]) {
                        $piKlarnaQuantityprorechnung[$j]+=$piKlarnaQuantity[$i];
                    }
                    else {
                        $j++;
                        $piKlarnaNewInvoiceNumber[$j] = $piKlarnaInvoiceNumber[$i];
                        $piKlarnaQuantityprorechnung[$j] = $piKlarnaQuantity[$i];
                        $sql = "SELECT SUM(anzahl) FROM Pi_klarna_payment_bills_articles WHERE invoice_number = ?";
                        $piKlarnaArticlesQuantity[$j] = Shopware()->Db()->fetchOne($sql, array($piKlarnaInvoiceNumber[$i]));
                    }
                }
            }
            $p = 0;
            $k = piKlarnaCreateKlarnaInstance($piKlarnaOrderNumber);
            for ($i = 0; $i < sizeof($piKlarnaNewInvoiceNumber); $i++) {
                if ($piKlarnaArticlesQuantity[$i] == $piKlarnaQuantityprorechnung[$i]) {
                    try {
                        $credNo = '';
                        $result = $k->creditInvoice(
                            $piKlarnaNewInvoiceNumber[$i], $credNo = ''
                        );
                        $piKlarnaError['errormessage'] = "";
                        $piKlarnaError['error'] = false;
                        $myresult[$p] = $result;
                        $p++;
                    }
                    catch (Exception $e) {
                        $piKlarnaError['error'] = true;
                        $piKlarnaError['errormessage'] = $e->getMessage() . " (#" . $e->getCode() . ")";
                    }
                }
                else {
                    for ($j = 0; $j < sizeof($piKlarnaArticleNr); $j++) {
                        if ($piKlarnaInvoiceNumber[$j] == $piKlarnaNewInvoiceNumber[$i]) {
                            if ($piKlarnaQuantity[$j] > 0) {
                                $qty = $piKlarnaQuantity[$j];
                                $artNo = $piKlarnaArticleNr[$j];
                                $result = array();
                                $credNo = '';
                                $k->addArtNo(
                                    $qty = $piKlarnaQuantity[$j],
                                    $artNo = $piKlarnaArticleNr[$j]); 
                                try {
                                    $result = $k->creditPart(
                                        $piKlarnaNewInvoiceNumber[$i], $credNo = '' 
                                    );
                                    $piKlarnaError['errormessage'] = "";
                                    $piKlarnaError['error'] = false;
                                }
                                catch (Exception $e) {
                                    $piKlarnaError['error'] = true;
                                    $piKlarnaError['errormessage'] = $e->getMessage() . " (#" . $e->getCode() . ")";
                                }
                            }
                        }
                    }
                }
            }
            if ($piKlarnaError['errormessage'] == "") {
                for ($i = 0; $i < sizeof($piKlarnaArticleNr); $i++) {
                    if ($piKlarnaQuantity[$i] > 0) {
                        $sql = "UPDATE Pi_klarna_payment_order_detail
                                SET
                                    retourniert = retourniert + ?,
                                    geliefert = geliefert - ?
                                WHERE ordernumber = ?
                                AND bestell_nr = ?";
                        Shopware()->Db()->query($sql,array(
                            (int)$piKlarnaQuantity[$i], 
                            (int)$piKlarnaQuantity[$i], 
                            $piKlarnaOrderNumber, 
                            $piKlarnaArticleNr[$i]
                        ));
                        
                        $sql = "UPDATE Pi_klarna_payment_order_detail 
                                SET gesamtpreis = geliefert * einzelpreis
                                WHERE ordernumber = ?
                                AND bestell_nr = ?";
                        Shopware()->Db()->query($sql,array(
                            $piKlarnaOrderNumber, 
                            $piKlarnaArticleNr[$i]
                        ));
                        $sql = "UPDATE s_order_details SET quantity = quantity - ? WHERE ordernumber = ? AND articleordernumber = ?";
                        Shopware()->Db()->query($sql,array(
                            (int)$piKlarnaQuantity[$i], 
                            $piKlarnaOrderNumber, 
                            $piKlarnaArticleNr[$i]
                        ));
                        $sql = "UPDATE Pi_klarna_payment_bills_articles
                                SET anzahl = anzahl - ?
                                WHERE order_number = ?
                                AND bestell_nr = ?
                                AND invoice_number = ?";
                        Shopware()->Db()->query($sql,array(
                            (int)$piKlarnaQuantity[$i], 
                            $piKlarnaOrderNumber, 
                            $piKlarnaArticleNr[$i],
                            $piKlarnaInvoiceNumber[$i]
                        ));
                        $sql = "SELECT bestellt
                                FROM Pi_klarna_payment_order_detail
                                WHERE ordernumber = ?
                                AND bestell_nr = ?
                        ";
                        $piKlarnaOrdered = Shopware()->Db()->fetchOne($sql,array($piKlarnaOrderNumber, $piKlarnaArticleNr[$i]));
                        $sql = "SELECT retourniert
                            FROM Pi_klarna_payment_order_detail
                            WHERE ordernumber = ?
                            AND bestell_nr= ?
                        ";
                        $piKlarnaReturned = Shopware()->Db()->fetchOne($sql,array($piKlarnaOrderNumber, $piKlarnaArticleNr[$i]));
                        if ($piKlarnaOrdered == $piKlarnaReturned) {
                            $piKlarnaCompleteReturnStatusId=piKlarnaGetCompleteReturnStatusId();
                            $sql = "UPDATE Pi_klarna_payment_order_detail
                                    SET versandstatus = ?
                                    WHERE ordernumber = ?
                                    AND bestell_nr = ?";
                            Shopware()->Db()->query($sql, array(
                                (int)$piKlarnaCompleteReturnStatusId, 
                                $piKlarnaOrderNumber, 
                                $piKlarnaArticleNr[$i]
                            ));
                        }
                        if ($piKlarnaArticleNr[$i] == 'versand_' . $piKlarnaOrderNumber) {
                            $sql = "UPDATE s_order
                                    SET
                                        invoice_shipping = 0,
                                        invoice_shipping_net = 0,
                                        dispatchID = 0
                                    WHERE ordernumber = ?";
                            Shopware()->Db()->query($sql, array($piKlarnaOrderNumber));
                        }
                        $sql = "SELECT name FROM Pi_klarna_payment_order_detail WHERE ordernumber = ? AND bestell_nr= ?";
                        $piKlarnaArticlename = Shopware()->Db()->fetchOne($sql, array($piKlarnaOrderNumber, $piKlarnaArticleNr[$i]));
//                        $piKlarnaArticlename = str_replace("'", "\'", $piKlarnaArticlename);
			$piKlarnaArticlename = $piKlarnaArticlename;
                        $piKlarnaHistoryEvent = "<span class=\"red\">Artikel retourniert</span>";
                        $sql = "INSERT INTO Pi_klarna_payment_history
                                (
                                    ordernumber, event, name, bestellnr, anzahl
                                )
                                VALUES
                                (
                                    ?, ?, ?, ?, ?
                                )";
                        Shopware()->Db()->query($sql, array(
                            $piKlarnaOrderNumber,
                            $piKlarnaHistoryEvent,
                            $piKlarnaArticlename,
                            $piKlarnaArticleNr[$i],
                            $piKlarnaQuantity[$i] 
                        ));
                    }
                }
            }
        }
        piKlarnaCalculateNewAmount($piKlarnaOrderNumber);
        $sql = "SELECT invoice_amount FROM s_order WHERE ordernumber = ?";
        $piKlarnaOrderAmount = Shopware()->Db()->fetchOne($sql, array($piKlarnaOrderNumber));
        if ($piKlarnaOrderAmount == 0) {
            $piKlarnaCompleteReturnStatusId=piKlarnaGetCompleteReturnStatusId($piKlarnaOrderNumber);
            $sql = "UPDATE s_order SET status = ? WHERE ordernumber = ?";
            Shopware()->Db()->query($sql, array((int)$piKlarnaCompleteReturnStatusId, $piKlarnaOrderNumber));
            $sql = "INSERT INTO Pi_klarna_payment_history (ordernumber, event) VALUES (?, ?)";
            Shopware()->Db()->query($sql, array($piKlarnaOrderNumber, '<b class=\'red\'>Bestellung vollst&auml;ndig retourniert</b>'));
        }
        echo json_encode(array(
            "items" => $piKlarnaError,
            "articlesquantity" => $piKlarnaArticlesQuantity,
            "anzahlprorechnung" => $piKlarnaQuantityprorechnung,
            "rechnungsnummer" => $piKlarnaNewInvoiceNumber,
            "rechnungsnr" => $piKlarnaInvoiceNumber
        ));
    }
 /**
  * Sets status to accepted
  *
  */
 public function setPaymentFees()
 {
     $sql = "UPDATE s_order_details
             SET quantity = 0
             WHERE ordernumber = ?
             AND
             (
                 articleordernumber ='sw-payment-absolute'
                 OR articleordernumber='sw-payment'
             )";
     Shopware()->Db()->query($sql, array($this->ordernumber));
     piKlarnaCalculateNewAmount($this->ordernumber);
 }