public function saveAction()
 {
     $data = new Varien_Object($this->getRequest()->getParam('payment', array()));
     $data->setCustomerId(Mage::helper('iugu')->getCustomerId());
     $data->setDescription(Mage::getModel('core/date')->timestamp(time()));
     $result = Mage::getSingleton('iugu/api')->savePaymentMethod($data);
     if ($result->getErrors()) {
         Mage::getSingleton('customer/session')->addError($this->__('An error occurred while saving the credit card.'));
     } else {
         Mage::getSingleton('customer/session')->addSuccess(Mage::helper('iugu')->__('Credit card has been saved.'));
     }
     $this->_redirect('*/*/');
 }
Example #2
0
 protected function _place($payment, $amount)
 {
     $order = $payment->getOrder();
     $payer = Mage::helper('iugu')->getPayerInfoFromOrder($payment->getOrder());
     $items = Mage::helper('iugu')->getItemsFromOrder($payment->getOrder());
     // Verify if needs add interest
     $interestRate = $this->getInterestRate($payment->getInstallments());
     $totalWithInterest = $this->calcTotalWithInterest($amount, $interestRate);
     if ($totalWithInterest - $amount > 0) {
         $item = new Varien_Object();
         $item->setDescription(Mage::helper('iugu')->__('Interest'));
         $item->setQuantity(1);
         $item->setPriceCents(Mage::helper('iugu')->formatAmount($totalWithInterest - $amount));
         $items[] = $item;
     }
     // Save Payment method
     if (!$payment->getIuguCustomerPaymentMethodId() && $payment->getIuguSave()) {
         $data = new Varien_Object();
         $data->setToken($payment->getIuguToken());
         $data->setCustomerId(Mage::helper('iugu')->getCustomerId());
         $data->setDescription(Mage::getModel('core/date')->timestamp(time()));
         $result = Mage::getSingleton('iugu/api')->savePaymentMethod($data);
         if ($result->getId()) {
             $payment->setIuguCustomerPaymentMethodId($result->getId());
         }
     }
     // Set Charge Data
     $data = new Varien_Object();
     if ($payment->getIuguCustomerPaymentMethodId()) {
         $data->setCustomerPaymentMethodId($payment->getIuguCustomerPaymentMethodId());
     } else {
         $data->setToken($payment->getIuguToken());
     }
     $data->setMonths($payment->getInstallments())->setEmail($order->getCustomerEmail())->setItems($items)->setPayer($payer);
     // Discount
     if ($order->getBaseDiscountAmount()) {
         $data->setDiscountCents(Mage::helper('iugu')->formatAmount(abs($order->getBaseDiscountAmount())));
     }
     // Tax
     if ($order->getBaseTaxAmount()) {
         $data->setTaxCents($this->formatAmount($order->getBaseTaxAmount()));
     }
     // Charge
     $result = Mage::getSingleton('iugu/api')->charge($data);
     if (!$result->getSuccess()) {
         Mage::throwException(Mage::helper('iugu')->__('Transaction failed, please try again or contact the card issuing bank.'));
     }
     // Set iugu info
     $payment->setIuguInvoiceId($result->getInvoiceId())->setIuguTotalWithInterest($totalWithInterest)->setIuguUrl($result->getUrl())->setIuguPdf($result->getPdf())->setTransactionId($result->getInvoiceId())->setIsTransactionClosed(0)->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('message' => $result->getMessage()));
     return $this;
 }
Example #3
0
 /**
 * @test
 * @loadFixture testGetProduct
 * @dataProvider provider__testOrderSaveAfter
 *
 *  1. OrderSaveAfter
 *  2.  Mage::getModel('collpur/deal')
  ->load($dealId)
  ->processOrderItem($item);
 *  3. AW_Collpur_Model_Dealpurchases->connectWithFreeCoupons
 *
 * This the most important functions that should be tested
 * 
 */
 public function testOrderSaveAfter($data)
 {
     $orderMock = $this->getModelMock('sales/order', array('getAllItems'));
     /* Prepare array of fake sales order items */
     $orderItems = array();
     for ($i = 0; $i < 3; $i++) {
         $salesOrderMock = $this->getModelMock('sales/order_item', array('getProductOptionByCode', 'getId'));
         $itemData = new Varien_Object();
         $itemData->setDealId($data['dealId']);
         /* Prepare fake order for orderItem */
         $orderItem = new Varien_Object();
         $orderItem->setId($data['dealId']);
         $orderItem->setCustomerName('Test order customer');
         $orderItem->setCustomerId($data['dealId']);
         /*             * ********************************* */
         $salesOrderMock->expects($this->any())->method('getProductOptionByCode')->will($this->returnValue($itemData));
         $salesOrderMock->expects($this->any())->method('getId')->will($this->returnValue($data['dealId']));
         $salesOrderMock->setOrder($orderItem);
         $salesOrderMock->setData('qty_invoiced', $data['qtyToAdd']);
         $salesOrderMock->setData('qty_refunded', 0);
         $orderItems[] = $salesOrderMock;
     }
     $orderMock->expects($this->any())->method('getAllItems')->will($this->returnValue($orderItems));
     $observer = new Varien_Object();
     $observer->setOrder($orderMock);
     Mage::app()->getRequest()->setControllerName('sales_order_invoice');
     $exception = false;
     if ($data['uid'] == '003' || $data['uid'] == '001' || $data['uid'] == '004') {
         $this->setExpectedException('Mage_Core_Exception');
         $exception = true;
     }
     Mage::getModel('collpur/observer')->orderSaveAfter($observer);
     /*
     * If there was no exceiption during call of
     * Mage::getModel('collpur/deal')
      ->load($dealId)
      ->processOrderItem($item);
     * proceed with test
     *
     */
     if (!$exception) {
         /* Check that number of purchases generated correct */
         $purchasesCount = Mage::getResourceModel('collpur/dealpurchases_collection')->count();
         $this->assertEquals($purchasesCount, $data['qtyToAdd'], 'Incorrect purchases collection count');
         /*  Check that correct number of coupons were generated */
         $couponsCount = Mage::getResourceModel('collpur/coupon_collection')->count();
         $this->assertEquals($couponsCount, $data['qtyToAdd'], 'Incorrect coupons collection count');
     }
 }