/**
  * @expectedException Svea\ValidationException
  * @expectedExceptionMessage -missing value : rowNumber is required
  */
 public function test_add_single_orderRow_missing_rownumber()
 {
     $config = Svea\SveaConfig::getDefaultConfig();
     $request = WebPayAdmin::updateOrderRows($config)->setCountryCode('SE')->setOrderId('test')->updateOrderRow(WebPayItem::numberedOrderRow()->setAmountExVat(99.98999999999999)->setAmountIncVat(123.9876)->setQuantity(1))->updateInvoiceOrderRows()->prepareRequest();
     //      print_r($request);
 }
 public function test_add_single_orderRow_type_mismatch_created_inc_updated_ex()
 {
     $config = Svea\SveaConfig::getDefaultConfig();
     $orderResponse = WebPay::createOrder($config)->addOrderRow(WebPayItem::orderRow()->setAmountIncVat(123.9876)->setVatPercent(24)->setQuantity(1))->addCustomerDetails(TestUtil::createIndividualCustomer("SE"))->setCountryCode("SE")->setCurrency("SEK")->setOrderDate("2012-12-12")->useInvoicePayment()->doRequest();
     $this->assertEquals(1, $orderResponse->accepted);
     // query order and assert row totals
     $query = WebPayAdmin::queryOrder($config)->setOrderId($orderResponse->sveaOrderId)->setCountryCode('SE')->queryInvoiceOrder()->doRequest();
     $this->assertEquals(1, $query->accepted);
     $this->assertEquals("123.99", $query->numberedOrderRows[0]->amountIncVat);
     // sent 123.9876 inc => 123.99 queried
     $this->assertEquals("24", $query->numberedOrderRows[0]->vatPercent);
     $response = WebPayAdmin::updateOrderRows($config)->setCountryCode('SE')->setOrderId($orderResponse->sveaOrderId)->updateOrderRow(WebPayItem::numberedOrderRow()->setRowNumber(1)->setAmountExVat(99.98999999999999)->setVatPercent(24)->setQuantity(1))->updateInvoiceOrderRows()->doRequest();
     $this->assertEquals(1, $response->accepted);
     // query order and assert row totals
     $query2 = WebPayAdmin::queryOrder($config)->setOrderId($orderResponse->sveaOrderId)->setCountryCode('SE')->queryInvoiceOrder()->doRequest();
     $this->assertEquals(1, $query2->accepted);
     $this->assertEquals("123.99", $query2->numberedOrderRows[0]->amountIncVat);
     // sent 99.99 ex * 1.24 => sent 123.9876 inc => 123.99 queried
     $this->assertEquals("24", $query2->numberedOrderRows[0]->vatPercent);
     //print_r($orderResponse->sveaOrderId);
 }
 function _test_UpdateOrderRows_manually_created_paymentplan()
 {
     $country = "SE";
     //        // create order
     //        $order = TestUtil::createOrderWithoutOrderRows( TestUtil::createIndividualCustomer($country) );
     //        $order->addOrderRow( WebPayItem::orderRow()
     //            ->setArticleNumber("1")
     //            ->setQuantity( 1 )
     //            ->setAmountExVat( 1000.00 )
     //            ->setVatPercent(25)
     //            ->setDescription("A Specification")
     //            ->setName('A Name')
     //            ->setUnit("st")
     //            ->setDiscountPercent(0)
     //        );
     //        $order->addOrderRow( WebPayItem::orderRow()
     //            ->setArticleNumber("2")
     //            ->setQuantity( 1 )
     //            ->setAmountExVat( 2000.00 )
     //            ->setVatPercent(25)
     //            ->setDescription("B Specification")
     //            ->setName('B Name')
     //            ->setUnit("st")
     //            ->setDiscountPercent(0)
     //        );
     //        $order->addOrderRow( WebPayItem::orderRow()
     //            ->setArticleNumber("3")
     //            ->setQuantity( 1 )
     //            ->setAmountExVat( 3000.00 )
     //            ->setVatPercent(25)
     //            ->setDescription("C Specification")
     //            ->setName('C Name')
     //            ->setUnit("st")
     //            ->setDiscountPercent(0)
     //        );
     //        $orderResponse = $order->usePaymentPlanPayment( TestUtil::getGetPaymentPlanParamsForTesting() )->doRequest();
     //        $this->assertEquals(1, $orderResponse->accepted);
     // update all attributes for a numbered orderRow
     $updateOrderRowsResponse = WebPayAdmin::updateOrderRows(Svea\SveaConfig::getDefaultConfig())->setOrderId(364183)->setCountryCode($country)->updateOrderRow(WebPayItem::numberedOrderRow()->setArticleNumber("10")->setQuantity(1)->setAmountExVat(1000.0)->setVatPercent(25)->setDescription("K Specification")->setName('K Name')->setUnit("st")->setDiscountPercent(1)->setRowNumber(1)->setStatus(Svea\NumberedOrderRow::ORDERROWSTATUS_NOTDELIVERED))->updatePaymentPlanOrderRows()->doRequest();
     //print_r( $updateOrderRowsResponse );
     ////print_r("test_UpdateOrderRows_updateInvoiceOrderRows_single_row_success: "); //print_r( $orderResponse->sveaOrderId );
     $this->assertEquals(1, $updateOrderRowsResponse->accepted);
     // todo query result & check amounts, description automatically
 }
 public function test_updateOrderRows_updatePaymentPlanOrderRows_allows_orderRow_with_zero_amount()
 {
     $dummyorderid = 123456;
     $orderBuilder = WebPayAdmin::updateOrderRows(Svea\SveaConfig::getDefaultConfig())->setOrderId($dummyorderid)->setCountryCode("SE")->updateOrderRow(WebPayItem::numberedOrderRow()->setAmountExVat(0.0)->setVatPercent(0)->setQuantity(0)->setRowNumber(1));
     try {
         $request = $orderBuilder->updatePaymentPlanOrderRows()->prepareRequest();
     } catch (Exception $e) {
         // fail on validation error
         $this->fail("Unexpected validation exception: " . $e->getMessage());
     }
 }