Example #1
0
 /**
  * Return complete basket data to view
  * Basket items / Shippingcosts / Amounts / Tax-Rates
  *
  * @return array
  */
 public function getBasket()
 {
     $shippingcosts = $this->getShippingCosts();
     $basket = $this->basket->sGetBasket();
     $basket['sCurrencyId'] = Shopware()->Shop()->getCurrency()->getId();
     $basket['sCurrencyName'] = Shopware()->Shop()->getCurrency()->getCurrency();
     $basket['sShippingcostsWithTax'] = $shippingcosts['brutto'];
     $basket['sShippingcostsNet'] = $shippingcosts['netto'];
     $basket['sShippingcostsTax'] = $shippingcosts['tax'];
     if (!empty($shippingcosts['brutto'])) {
         $basket['AmountNetNumeric'] += $shippingcosts['netto'];
         $basket['AmountNumeric'] += $shippingcosts['brutto'];
         $basket['sShippingcostsDifference'] = $shippingcosts['difference']['float'];
     }
     if (!empty($basket['AmountWithTaxNumeric'])) {
         $basket['AmountWithTaxNumeric'] += $shippingcosts['brutto'];
     }
     if (!Shopware()->System()->sUSERGROUPDATA['tax'] && Shopware()->System()->sUSERGROUPDATA['id']) {
         $basket['sTaxRates'] = $this->getTaxRates($basket);
         $basket['sShippingcosts'] = $shippingcosts['netto'];
         $basket['sAmount'] = round($basket['AmountNetNumeric'], 2);
         $basket['sAmountTax'] = round($basket['AmountWithTaxNumeric'] - $basket['AmountNetNumeric'], 2);
         $basket['sAmountWithTax'] = round($basket['AmountWithTaxNumeric'], 2);
     } else {
         $basket['sTaxRates'] = $this->getTaxRates($basket);
         $basket['sShippingcosts'] = $shippingcosts['brutto'];
         $basket['sAmount'] = $basket['AmountNumeric'];
         $basket['sAmountTax'] = round($basket['AmountNumeric'] - $basket['AmountNetNumeric'], 2);
     }
     return $basket;
 }
Example #2
0
 /**
  * @covers sAdmin::sManageRisks
  * @covers sAdmin::sRiskORDERVALUELESS
  * @covers sAdmin::sRiskORDERVALUEMORE
  * @covers sAdmin::sRiskCUSTOMERGROUPIS
  * @covers sAdmin::sRiskCUSTOMERGROUPISNOT
  * @covers sAdmin::sRiskZIPCODE
  * @covers sAdmin::sRiskZONEIS
  * @covers sAdmin::sRiskZONEISNOT
  * @covers sAdmin::sRiskLANDIS
  * @covers sAdmin::sRiskLANDISNOT
  * @covers sAdmin::sRiskNEWCUSTOMER
  * @covers sAdmin::sRiskORDERPOSITIONSMORE
  * @covers sAdmin::sRiskATTRIS
  * @covers sAdmin::sRiskATTRISNOT
  * @covers sAdmin::sRiskINKASSO
  * @covers sAdmin::sRiskLASTORDERLESS
  * @covers sAdmin::sRiskARTICLESFROM
  * @covers sAdmin::sRiskLASTORDERSLESS
  * @covers sAdmin::sRiskPREGSTREET
  * @covers sAdmin::sRiskDIFFER
  * @covers sAdmin::sRiskCUSTOMERNR
  * @covers sAdmin::sRiskLASTNAME
  * @covers sAdmin::sRiskSUBSHOP
  * @covers sAdmin::sRiskSUBSHOPNOT
  * @covers sAdmin::sRiskCURRENCIESISOIS
  * @covers sAdmin::sRiskCURRENCIESISOISNOT
  */
 public function testsManageRisks()
 {
     $customer = $this->createDummyCustomer();
     $this->session->offsetSet('sUserId', $customer->getId());
     $basket = array('content' => 1, 'AmountNumeric' => 10);
     $user = $this->module->sGetUserData();
     // Inject demo data
     $orderData = array('ordernumber' => uniqid(), 'userID' => $customer->getId(), 'invoice_amount' => '37.99', 'invoice_amount_net' => '31.92', 'invoice_shipping' => '0', 'invoice_shipping_net' => '0', 'ordertime' => new DateTime(), 'status' => '0', 'cleared' => '17', 'paymentID' => '4', 'transactionID' => '', 'comment' => '', 'customercomment' => '', 'internalcomment' => '', 'net' => '0', 'taxfree' => '0', 'partnerID' => '', 'temporaryID' => '', 'referer' => '', 'cleareddate' => NULL, 'cleared' => 16, 'trackingcode' => '', 'language' => '2', 'dispatchID' => '9', 'currency' => 'EUR', 'currencyFactor' => '1', 'subshopID' => '1', 'remote_addr' => '127.0.0.1');
     Shopware()->Db()->insert('s_order', $orderData);
     $orderId = Shopware()->Db()->lastInsertId();
     // No rules, returns false
     $this->assertFalse($this->module->sManageRisks(2, $basket, $user));
     // Test all rules
     // sRiskORDERVALUELESS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ORDERVALUELESS', 'value1' => 20));
     $firstTestRuleId = Shopware()->Db()->lastInsertId();
     $this->assertTrue($this->module->sManageRisks(2, $basket, $user));
     // sRiskORDERVALUEMORE
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ORDERVALUEMORE', 'value1' => 20));
     // Test 'OR' logic between different rules (only one needs to be true)
     $this->assertTrue($this->module->sManageRisks(2, $basket, $user));
     // Deleting the first rule, only a false one is left
     Shopware()->Db()->delete('s_core_rulesets', 'id = ' . $firstTestRuleId);
     $this->assertFalse($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCUSTOMERGROUPIS
     // sRiskCUSTOMERGROUPISNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CUSTOMERGROUPIS', 'value1' => 'EK', 'rule2' => 'CUSTOMERGROUPISNOT', 'value2' => 'EK'));
     // Test 'AND' logic between the two parts of the same rule (both need to be true)
     $this->assertFalse($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskZIPCODE
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ZIPCODE', 'value1' => '12345'));
     $this->assertTrue($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskZONEIS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ZONEIS', 'value1' => '12345'));
     $this->assertFalse($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskZONEISNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ZONEISNOT', 'value1' => '12345'));
     $this->assertTrue($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskLANDIS
     // sRiskLANDISNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'LANDIS', 'value1' => 'DE', 'rule2' => 'LANDISNOT', 'value2' => 'UK'));
     $this->assertTrue($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskNEWCUSTOMER
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'NEWCUSTOMER'));
     $this->assertTrue($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskORDERPOSITIONSMORE
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ORDERPOSITIONSMORE', 'value1' => '2'));
     $this->assertFalse($this->module->sManageRisks(2, $basket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     $this->module->sSYSTEM->sSESSION_ID = uniqid();
     $this->session->offsetSet('sessionId', $this->module->sSYSTEM->sSESSION_ID);
     $this->basketModule->sAddArticle('SW10118.8');
     // sRiskATTRIS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ATTRIS', 'value1' => '1|0'));
     $fullBasket = $this->basketModule->sGetBasket();
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     $this->basketModule->sAddArticle('SW10118.8');
     // sRiskATTRISNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ATTRISNOT', 'value1' => '17|null'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskINKASSO
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'INKASSO'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskLASTORDERLESS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'LASTORDERLESS', 'value1' => '1'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskARTICLESFROM
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ARTICLESFROM', 'value1' => '1'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskARTICLESFROM
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'ARTICLESFROM', 'value1' => '9'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskLASTORDERSLESS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'LASTORDERSLESS', 'value1' => '9'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskLASTORDERSLESS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'LASTORDERSLESS', 'value1' => '0'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskPREGSTREET
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'PREGSTREET', 'value1' => 'Merkel'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskPREGSTREET
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'PREGSTREET', 'value1' => 'Google'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskDIFFER
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'DIFFER'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCUSTOMERNR
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CUSTOMERNR', 'value1' => $customer->getBilling()->getNumber()));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCUSTOMERNR
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CUSTOMERNR', 'value1' => 'ThisIsNeverGoingToBeACustomerNumber'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskLASTNAME
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'LASTNAME', 'value1' => 'Mustermann'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskLASTNAME
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'LASTNAME', 'value1' => 'NotMustermann'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskSUBSHOP
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'SUBSHOP', 'value1' => '1'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskSUBSHOP
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'SUBSHOP', 'value1' => '2'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskSUBSHOPNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'SUBSHOPNOT', 'value1' => '2'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskSUBSHOPNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'SUBSHOPNOT', 'value1' => '1'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCURRENCIESISOIS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CURRENCIESISOIS', 'value1' => 'eur'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCURRENCIESISOIS
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CURRENCIESISOIS', 'value1' => 'yen'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCURRENCIESISOISNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CURRENCIESISOISNOT', 'value1' => 'eur'));
     $this->assertFalse($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     // sRiskCURRENCIESISOISNOT
     Shopware()->Db()->insert('s_core_rulesets', array('paymentID' => 2, 'rule1' => 'CURRENCIESISOISNOT', 'value1' => 'yen'));
     $this->assertTrue($this->module->sManageRisks(2, $fullBasket, $user));
     Shopware()->Db()->delete('s_core_rulesets', 'id >= ' . $firstTestRuleId);
     Shopware()->Db()->delete('s_order', 'id = ' . $orderId);
     $this->deleteDummyCustomer($customer);
 }
Example #3
0
 /**
  * @covers sBasket::sAddArticle
  */
 public function testsAddArticle()
 {
     // No id, expect false
     $this->assertFalse($this->module->sAddArticle(null));
     $this->module->sSYSTEM->sSESSION_ID = uniqid();
     $this->session->offsetSet('sessionId', $this->module->sSYSTEM->sSESSION_ID);
     // Get random article with stock controll and add it to the basket
     $randomArticleOne = $this->db->fetchRow('SELECT detail.* FROM s_articles_details detail
         INNER JOIN s_articles article
           ON article.id = detail.articleID
         LEFT JOIN s_articles_avoid_customergroups avoid
           ON avoid.articleID = article.id
         WHERE detail.active = 1
         AND laststock = 1
         AND instock > 3
         AND avoid.articleID IS NULL
         AND article.id NOT IN (
           SELECT articleID
           FROM s_articles_avoid_customergroups
           WHERE customergroupID = 1
         )
         ORDER BY RAND() LIMIT 1');
     // Adding article without quantity adds one
     $this->module->sAddArticle($randomArticleOne['ordernumber']);
     $basket = $this->module->sGetBasket();
     $this->assertEquals(1, $basket['Quantity']);
     $this->assertEquals(1, $basket['content'][0]['quantity']);
     // Adding article with quantity adds correctly, finds stacks
     $this->module->sAddArticle($randomArticleOne['ordernumber'], 2);
     $basket = $this->module->sGetBasket();
     $this->assertEquals(1, $basket['Quantity']);
     $this->assertEquals(3, $basket['content'][0]['quantity']);
     // Start over
     $this->module->sDeleteBasket();
     // Adding article with quantity over stock, check that we have the available stock
     $this->module->sAddArticle($randomArticleOne['ordernumber'], $randomArticleOne['instock'] + 200);
     $basket = $this->module->sGetBasket();
     $this->assertEquals(1, $basket['Quantity']);
     $this->assertEquals(min($randomArticleOne['instock'], 100), $basket['content'][0]['quantity']);
     // Start over
     $this->module->sDeleteBasket();
     // Get random article and add it to the basket
     $randomArticleTwo = $this->db->fetchRow('SELECT detail.* FROM s_articles_details detail
         INNER JOIN s_articles article
           ON article.id = detail.articleID
         WHERE detail.active = 1
         AND laststock = 0
         AND instock > 20
         AND instock < 70
         AND article.id NOT IN (
           SELECT articleID
           FROM s_articles_avoid_customergroups
           WHERE customergroupID = 1
         )
         ORDER BY RAND() LIMIT 1');
     // Adding article with quantity over stock, check that we have the desired quantity
     $this->module->sAddArticle($randomArticleTwo['ordernumber'], $randomArticleTwo['instock'] + 20);
     $basket = $this->module->sGetBasket();
     $this->assertEquals(1, $basket['Quantity']);
     $this->assertEquals(min($randomArticleTwo['instock'] + 20, 100), $basket['content'][0]['quantity']);
     // Housekeeping
     $this->db->delete('s_order_basket', array('sessionID = ?' => $this->session->get('sessionId')));
 }