Ejemplo n.º 1
0
 /**
  * Getting the payments
  *
  * @param unknown $sender
  * @param unknown $param
  */
 public function getPayments($sender, $param)
 {
     $result = $error = array();
     try {
         $pageNo = 1;
         $pageSize = $this->pageSize;
         if (isset($param->CallbackParameter->pagination)) {
             $pageNo = isset($param->CallbackParameter->pagination->pageNo) ? $param->CallbackParameter->pagination->pageNo : $pageNo;
             $pageSize = isset($param->CallbackParameter->pagination->pageSize) ? $param->CallbackParameter->pagination->pageSize : $pageSize;
         }
         if (!isset($param->CallbackParameter->entity) || !isset($param->CallbackParameter->entityId) || ($entityName = trim($param->CallbackParameter->entity)) === '' || !($entity = $entityName::get(trim($param->CallbackParameter->entityId))) instanceof $entityName) {
             throw new Exception('System Error: invalid Order or CreditNote provided. Can NOT get any payments at all.');
         }
         if ($entity instanceof Order) {
             $where = 'orderId = ?';
         } else {
             if ($entity instanceof CreditNote) {
                 $where = 'creditNoteId = ?';
             } else {
                 throw new Exception('System Error: you can ONLY get payments for a Order or a CreditNote');
             }
         }
         $stats = $items = array();
         foreach (Payment::getAllByCriteria($where, array($entity->getId()), true, $pageNo, $pageSize, array('id' => 'desc'), $stats) as $payment) {
             $items[] = $payment->getJson();
         }
         $result['pagination'] = $stats;
         $result['items'] = $items;
         if ($pageNo === 1) {
             $result['paymentMethods'] = array_map(create_function('$a', 'return $a->getJson();'), PaymentMethod::findAll());
         }
     } catch (Exception $ex) {
         $error[] = $ex->getMessage();
     }
     $param->ResponseData = StringUtilsAbstract::getJson($result, $error);
 }