Example #1
0
 public function testEditingRecordIsLogged()
 {
     $this->_login();
     $this->request->setMethod('POST')->setPost(array('firstName' => 'Bryan', 'lastName' => 'Zarzuela', 'phoneNumber' => '7371131', 'mobileNumber' => '09178604736', 'deliveryAddress' => '462 C. Palanca St. Quiapo Manila', 'courier' => '2GO', 'releaseDate' => date('Y-m-d', strtotime('today +7 day')), 'officialReceiptNumber' => 123));
     $this->dispatch('/transactions/new');
     $this->assertController('transactions');
     $this->assertAction('new');
     $res = json_decode($this->getResponse()->getBody(), true);
     $this->assertTrue($res['success']);
     $this->assertEquals(1, $res['id']);
     $this->resetRequest()->resetResponse();
     $t = Model_Transaction::find(1);
     $this->request->setMethod('POST')->setPost(array('referenceNumber' => $t->referenceNumber, 'firstName' => 'Dyan', 'lastName' => 'Zarzuela', 'phoneNumber' => '7371131', 'mobileNumber' => '09178604736', 'deliveryAddress' => '462 C. Palanca St. Quiapo Manila', 'courier' => '2GO', 'releaseDate' => date('Y-m-d', strtotime('today +7 day')), 'officialReceiptNumber' => 123));
     $this->dispatch('/transactions/edit');
     $this->assertController('transactions');
     $this->assertAction('edit');
     $res = json_decode($this->getResponse()->getBody(), true);
     $this->assertTrue($res['success']);
     $t = Model_Transaction::find(1);
     $this->assertEquals('DYAN', $t->firstName);
     $this->assertEquals('ZARZUELA', $t->lastName);
     $this->assertEquals('7371131', $t->phoneNumber);
     $this->assertEquals('09178604736', $t->mobileNumber);
     $this->assertEquals('462 C. PALANCA ST. QUIAPO MANILA', $t->deliveryAddress);
     $this->assertEquals('2GO', $t->courier);
     $this->assertEquals(date('Y-m-d', strtotime('today +7 day')), $t->releaseDate);
     $this->assertEquals('foo', $t->acceptingUser);
     $this->assertEquals('123', $t->officialReceiptNumber);
     $this->assertEquals('foo', $t->logs[0]->username);
     $this->assertEquals('Created Transaction', $t->logs[0]->message);
     $this->assertEquals('foo', $t->logs[1]->username);
     $this->assertEquals('Edited:', substr($t->logs[1]->message, 0, 7));
 }
Example #2
0
 public function post_process()
 {
     list($params, $shipping) = $this->load_params();
     $PARAM_DEFAULTS = array('USER' => Config::get('paypal_user'), 'PWD' => Config::get('paypal_pass'), 'SIGNATURE' => Config::get('paypal_sig'), 'METHOD' => 'DoDirectPayment', 'VERSION' => '2.3', 'IPADDRESS' => $_SERVER['REMOTE_ADDR']);
     $params = array_merge($PARAM_DEFAULTS, $params);
     $query = array();
     foreach ($params as $key => $value) {
         $query[] = strtoupper($key) . '=' . urlencode($value);
     }
     $nvpstr = implode('&', $query);
     //setting the curl parameters.
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, Config::get('paypal_url'));
     curl_setopt($ch, CURLOPT_VERBOSE, true);
     // put this on for testing
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
     curl_setopt($ch, CURLOPT_CAINFO, APPPATH . 'cacert.pem');
     //TODO: not sure if i need this...
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POST, 1);
     //setting nvpstr as POST var
     curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpstr);
     //getting response from server
     $response = curl_exec($ch);
     curl_close($ch);
     //convert NVP response to an associative array
     $response = $this->deformat_nvp($response);
     //TODO: Check to see if the payment was successful, and create a Model_Transaction
     if ($response && ($response['ACK'] == 'SuccessWithWarning' || $response['ACK'] == 'Success')) {
         $response['success'] = '1';
         //transaction success
         $trans = Model_Transaction::factory();
         $trans->first = $params['FIRSTNAME'];
         $trans->last = $params['LASTNAME'];
         $trans->street = $shipping['ship_street'];
         $trans->city = $shipping['ship_city'];
         $trans->zip = $shipping['ship_zip'];
         $trans->state = $shipping['ship_state'];
         $trans->amount = $params['AMT'];
         $trans->order_sent = 0;
         $trans->save();
         if ($trans->id) {
             foreach ($this->releases as $rel_id => $quantity) {
                 DB::insert('releases_transactions', array('release_id', 'transaction_id', 'quantity'))->values(array($rel_id, $trans->id, $quantity))->execute();
             }
         }
     } else {
         if (isset($response['ACK']) && isset($response['L_ERRORCODE0'])) {
             return array('success' => '0', 'message' => $response['L_LONGMESSAGE0']);
         } else {
             return array('success' => '0', 'message' => 'Transaction failed.<br />Try again later.');
         }
     }
     return $response;
 }
Example #3
0
 public function testTeleservImport()
 {
     $import = file_get_contents(dirname(__FILE__) . '/deliveryExport - 2010-03-16.dat');
     $output = Model_Transaction::teleservImport($import);
     $q = Doctrine_Query::create()->from('Model_Transaction t');
     $data = json_decode($import, true);
     $this->assertEquals(count($data), $q->count());
     $this->assertEquals(count($data), $output['total']);
     $this->assertEquals(count($data), $output['created']);
     $this->assertEquals(0, $output['updated']);
     $t = Model_Transaction::findByRef($data[0]['referenceNumber']);
     $this->assertEquals(strtoupper($data[0]['firstName']), $t->firstName);
 }
Example #4
0
 /**
  * Add transaction and return the new transaction id
  *
  * @param arr $data - array(
  *                        'accounting_date' => 'YYYY-MM-DD',                OPTIONAL
  *                        'transfer_date'   => 'YYYY-MM-DD',
  *                        'description'     => 'text',                      OPTIONAL
  *                        'journal_id'      => int or NULL                  OPTIONAL
  *                        'vat'             => amount of money, 0 or above  OPTIONAL
  *                        'sum'             => amount of money, above 0
  *                        'employee_id'     => int or NULL                  OPTIONAL
  *                    )
  * @return int
  **/
 private function add($data)
 {
     if (!isset($data['accounting_date'])) {
         $data['accounting_date'] = $data['transfer_date'];
     }
     if (!isset($data['description'])) {
         $data['description'] = '';
     }
     if (!isset($data['journal_id'])) {
         $data['journal_id'] = NULL;
     }
     if (!isset($data['vat'])) {
         $data['vat'] = 0;
     }
     if (!isset($data['employee_id'])) {
         $data['employee_id'] = NULL;
     }
     if (self::$prepared_insert == NULL) {
         self::$prepared_insert = $this->pdo->prepare('INSERT INTO transactions (accounting_date, transfer_date, description, journal_id, vat, sum, employee_id) VALUES(?,?,?,?,?,?,?)');
     }
     self::$prepared_insert->execute(array($data['accounting_date'], $data['transfer_date'], $data['description'], $data['journal_id'], $data['vat'], $data['sum'], $data['employee_id']));
     return $this->pdo->lastInsertId();
 }
 public function testdebitTransaction()
 {
     $currency = 'EUR';
     $invoiceModel = new \Model_Invoice();
     $invoiceModel->loadBean(new \RedBeanPHP\OODBBean());
     $invoiceModel->currency = $currency;
     $clientModdel = new \Model_Client();
     $clientModdel->loadBean(new \RedBeanPHP\OODBBean());
     $clientModdel->currency = $currency;
     $transactionModel = new \Model_Transaction();
     $transactionModel->loadBean(new \RedBeanPHP\OODBBean());
     $transactionModel->amount = 11;
     $clientBalanceModel = new \Model_ClientBalance();
     $clientBalanceModel->loadBean(new \RedBeanPHP\OODBBean());
     $dbMock = $this->getMockBuilder('\\Box_Database')->getMock();
     $dbMock->expects($this->atLeastOnce())->method('load')->will($this->onConsecutiveCalls($invoiceModel, $clientModdel));
     $dbMock->expects($this->atLeastOnce())->method('dispense')->will($this->returnValue($clientBalanceModel));
     $dbMock->expects($this->atLeastOnce())->method('store');
     $di = new \Box_Di();
     $di['db'] = $dbMock;
     $this->service->setDi($di);
     $this->service->debitTransaction($transactionModel);
 }
Example #6
0
 public function action_account()
 {
     $this->template->title = 'RN | Account';
     $data['transactions'] = Model_Transaction::find('all');
     $this->template->content = View::forge('user/changepassword', $data);
 }
 public function testprocessTransaction_IpnDuplicate()
 {
     $adapterMock = $this->getMockBuilder('\\Payment_Adapter_Interkassa')->disableOriginalConstructor()->setMethods(array('isIpnValid', 'isIpnDuplicate'))->getMock();
     $adapterMock->expects($this->atLeastOnce())->method('isIpnValid')->willReturn(true);
     $adapterMock->expects($this->atLeastOnce())->method('isIpnDuplicate')->willReturn(true);
     $dbMock = $this->getMockBuilder('\\Box_Database')->getMock();
     $transactionModel = new \Model_Transaction();
     $transactionModel->loadBean(new \RedBeanPHP\OODBBean());
     $invoiceModel = new \Model_Invoice();
     $invoiceModel->loadBean(new \RedBeanPHP\OODBBean());
     $clientModel = new \Model_Client();
     $clientModel->loadBean(new \RedBeanPHP\OODBBean());
     $dbMock->expects($this->atLeastOnce())->method('load')->withConsecutive(array('Transaction'), array('Invoice'), array('Client'))->willReturnOnConsecutiveCalls($transactionModel, $invoiceModel, $clientModel);
     $dbMock->expects($this->atLeastOnce())->method('store')->with($transactionModel);
     $clientServiceMock = $this->getMockBuilder('\\Box\\Mod\\Client\\Service')->getMock();
     $clientServiceMock->expects($this->never())->method('addFunds');
     $invoiceServiceMock = $this->getMockBuilder('\\Box\\Mod\\Invoice\\Service')->getMock();
     $invoiceServiceMock->expects($this->never())->method('payInvoiceWithCredits')->with($invoiceModel);
     $invoiceServiceMock->expects($this->never())->method('doBatchPayWithCredits');
     $di = new \Box_Di();
     $di['mod_service'] = $di->protect(function ($serviceName) use($clientServiceMock, $invoiceServiceMock) {
         if ($serviceName == 'Client') {
             return $clientServiceMock;
         }
         if ($serviceName == 'Invoice') {
             return $invoiceServiceMock;
         }
     });
     $di['db'] = $dbMock;
     $adapterMock->setDi($di);
     $adminModel = new \Model_Admin();
     $api_admin = new \Api_Handler($adminModel);
     $transaction_id = 1;
     $invoice_id = 22;
     $data = array('post' => array('ik_x_iid' => $invoice_id, 'ik_trn_id' => 2, 'ik_inv_st' => 'success', 'ik_am' => 1.0, 'ik_cur' => 'USD'), 'get' => array('bb_invoice_id' => $invoice_id));
     $gateway_id = 1;
     $this->setExpectedException('Payment_Exception', 'IPN is duplicate');
     $adapterMock->processTransaction($api_admin, $transaction_id, $data, $gateway_id);
 }
 public function testprocessTransaction_invoiceIdIsNotSet()
 {
     $adapterMock = $this->getMockBuilder('Payment_Adapter_ClientBalance')->disableOriginalConstructor()->setMethods(array('isIpnValid'))->getMock();
     $adapterMock->expects($this->atLeastOnce())->method('isIpnValid')->willReturn(true);
     $di = new \Box_Di();
     $transactionModel = new \Model_Transaction();
     $transactionModel->loadBean(new \RedBeanPHP\OODBBean());
     $invoiceModel = new \Model_Invoice();
     $invoiceModel->loadBean(new \RedBeanPHP\OODBBean());
     $dbMock = $this->getMockBuilder('\\Box_Database')->getMock();
     $dbMock->expects($this->atLeastOnce())->method('load')->withConsecutive(array('Transaction'), array('Invoice'))->willReturnOnConsecutiveCalls($transactionModel, $invoiceModel);
     $dbMock->expects($this->atLeastOnce())->method('store')->with($transactionModel);
     $di['db'] = $dbMock;
     $invoiceServiceMock = $this->getMockBuilder('\\Box\\Mod\\Invoice\\Service')->getMock();
     $invoiceServiceMock->expects($this->atLeastOnce())->method('isInvoiceTypeDeposit')->with($invoiceModel)->willReturn(false);
     $invoiceServiceMock->expects($this->never())->method('payInvoiceWithCredits')->with($invoiceModel);
     $invoiceServiceMock->expects($this->once())->method('doBatchPayWithCredits');
     $di['mod_service'] = $di->protect(function ($serviceName) use($invoiceServiceMock) {
         if ('Invoice' == $serviceName) {
             return $invoiceServiceMock;
         }
     });
     $transactionId = 1;
     $data = array('get' => array());
     $gatewayId = 1;
     $adapterMock->setDi($di);
     $result = $adapterMock->processTransaction(null, $transactionId, $data, $gatewayId);
     $this->assertTrue($result);
 }
Example #9
0
 public function testtransaction_get()
 {
     $data = array('id' => 1);
     $transactionService = $this->getMockBuilder('\\Box\\Mod\\Invoice\\ServiceTransaction')->getMock();
     $transactionService->expects($this->atLeastOnce())->method('toApiArray')->will($this->returnValue(array()));
     $validatorMock = $this->getMockBuilder('\\Box_Validate')->getMock();
     $validatorMock->expects($this->atLeastOnce())->method('checkRequiredParamsForArray');
     $dbMock = $this->getMockBuilder('\\Box_Database')->getMock();
     $model = new \Model_Transaction();
     $model->loadBean(new \RedBeanPHP\OODBBean());
     $dbMock->expects($this->atLeastOnce())->method('getExistingModelById')->will($this->returnValue($model));
     $di = new \Box_Di();
     $di['validator'] = $validatorMock;
     $di['db'] = $dbMock;
     $di['mod_service'] = $di->protect(function () use($transactionService) {
         return $transactionService;
     });
     $this->api->setDi($di);
     $result = $this->api->transaction_get($data);
     $this->assertInternalType('array', $result);
 }
 public function transactiondisplayAction()
 {
     $Transaction = new Model_Transaction();
     $TransID = $this->_getParam('ID');
     $this->view->status_list = $Transaction->transactionStatus();
     if ($_POST) {
         $Transaction->updateStatus($_POST);
         $this->_redirect('/admin/transactiondisplay/ID/' . $_POST['TransactionID']);
     }
     $data = $Transaction->getTransaction($TransID);
     if (!$data) {
         $this->_redirect('/admin/transactionlist/');
     }
     $rawStates = $Transaction->getData("Shipping", "", "State asc");
     foreach ($rawStates as $row) {
         $states[$row['ID']] = $row['State'];
     }
     $this->view->states = $states;
     $this->view->payment_methods = $this->paymentMethods();
     $this->view->data = $data;
     $this->render('transactiondisplay');
 }
 public function trackingAction()
 {
     $this->_helper->layout()->setLayout('page');
     $Transaction = new Model_Transaction();
     $TransID = $this->_getParam('trackingID');
     $Email = $this->_getParam('esig1234');
     //honeypot
     $data = array();
     if ($TransID && $Email) {
         $data = $Transaction->getTransaction($TransID, $Email);
         $this->view->status_list = $Transaction->transactionStatus();
         $this->view->msg = '';
         if (empty($data)) {
             $this->view->msg = "Nothing found enter a valid email address and tracking id.";
         }
     }
     $this->view->data = $data;
 }