public function getCashOutHistoryTransaction()
 {
     if (Efiwebsetting::getData('checkOAuth') == 'yes') {
         IMBAuth::checkOAuth();
     }
     $idResto = Generic::mustCheck($_GET['id_restaurant'], "No ID Restaurant Found");
     $rt = new MasterRestoTransactionModel();
     $arrTrans = $rt->getWhere("id_restaurant='{$idResto}' AND type_transaction='2' ORDER BY datetime_transaction DESC ");
     $result['transactions'] = array();
     foreach ($arrTrans as $trans) {
         unset($b);
         $b['id_transaction'] = $trans->id_transaction;
         $b['id_restaurant'] = $trans->id_restaurant;
         $b['gross_amount'] = (double) $trans->gross_amount;
         $b['net_amount'] = (double) $trans->net_amount;
         $b['type_transaction'] = $trans->type_transaction;
         $b['datetime_transaction'] = $trans->datetime_transaction;
         $b['approved'] = $trans->approved == "1";
         $result['transactions'][] = $b;
     }
     $json['status_code'] = 1;
     $json['results'] = $result;
     echo json_encode($json);
     die;
 }
 public function setCashOutPaid()
 {
     $idRequest = Generic::mustCheck($_GET['id_request'], "Required ID Request");
     $cashOutModel = new MasterCashOutRequestModel();
     $cashOutModel->getByID($idRequest);
     $restoTrans = new MasterRestoTransactionModel();
     $arrRestoTrans = $restoTrans->getWhere("type_transaction = '2' AND id_request = '{$idRequest}'");
     if (count($arrRestoTrans) <= 0) {
         Generic::errorMsg("Transaction not found");
     }
     if ($cashOutModel->status == "1") {
         Generic::errorMsg("This Request Already Paid");
     }
     $rt = new MasterRestoTransactionModel();
     $rt->getByID($arrRestoTrans[0]->id_transaction);
     $rt->approved = "1";
     $rt->save();
     $cashOutModel->status = "1";
     $cashOutModel->save();
     $json['status_code'] = 1;
     $json['status_message'] = "Request status set to Paid";
     echo json_encode($json);
     die;
 }
 public static function payViaCreditCard($idOrder, $idUser = "")
 {
     $restoInitiate = Generic::IsNullOrEmptyString($idUser);
     $userInitiate = !$restoInitiate;
     $order = new MasterOrderModel();
     $order->getByID($idOrder);
     //KALO USER INITIATE CEK APA DIA LEADER
     if ($userInitiate) {
         $user = new UserModel();
         $user->getByID($idUser);
         if (!Util::isLeader($idOrder, $idUser)) {
             Generic::errorMsg(Keys::$ERR_PAYMENT_NOT_LEADER);
         }
     } else {
         $idUser = $order->id_user;
         $user = new UserModel();
         $user->getByID($idUser);
     }
     //CEK APA PEMBAYARAN PAKE CREDIT CARD
     if ($order->payment_method != Keys::$PAYMENT_TYPE_CREDIT_CARD) {
         Generic::errorMsg("This Order Not Using Credit Card as Payment Method");
     }
     Doku_Initiate::$sharedKey = "iMdRs8Iz987Z";
     Doku_Initiate::$mallId = "3199";
     $invoice = new Invoice($idOrder, true);
     $params = array('amount' => Generic::dokuMoneyValue($invoice->grandTotal), 'invoice' => $idOrder, 'currency' => '360');
     $detailOrders = $invoice->orderDetails;
     $basket = array();
     foreach ($detailOrders as $detailOrder) {
         $b = array();
         $b['name'] = $detailOrder->name_dish;
         $b['amount'] = Generic::dokuMoneyValue($detailOrder->single_price);
         $b['quantity'] = $detailOrder->quantity;
         $b['subtotal'] = Generic::dokuMoneyValue($detailOrder->price);
         $basket[] = $b;
     }
     $words = Doku_Library::doCreateWords($params);
     $customer = array('name' => $user->full_name, 'data_phone' => $user->phone_no, 'data_email' => $user->email, 'data_address' => $user->district . ',' . $user->city);
     //        $basket[] = array(
     //            'name' => 'sayur',
     //            'amount' => '10000.00',
     //            'quantity' => '1',
     //            'subtotal' => '10000.00'
     //        );
     //        $basket[] = array(
     //            'name' => 'buah',
     //            'amount' => '10000.00',
     //            'quantity' => '1',
     //            'subtotal' => '10000.00'
     //        );
     $dataPayment = array('req_mall_id' => Doku_Initiate::$mallId, 'req_chain_merchant' => 'NA', 'req_amount' => $params['amount'], 'req_words' => $words, 'req_purchase_amount' => $params['amount'], 'req_trans_id_merchant' => $params['invoice'], 'req_request_date_time' => date('YmdHis'), 'req_currency' => '360', 'req_purchase_currency' => '360', 'req_session_id' => sha1(date('YmdHis')), 'req_name' => $customer['name'], 'req_payment_channel' => '15', 'req_email' => $customer['data_email'], 'req_basket' => $basket, 'req_address' => $customer['data_address'], 'req_token_payment' => $user->payment_token, 'req_customer_id' => $idUser);
     $response = Doku_Api::doDirectPayment($dataPayment);
     if ($response->res_response_code == '0000') {
         $status = "SUCCESS";
         $order->status_payment = Keys::$PAYMENT_STATUS_PAID;
         $order->isPaid = Keys::$YES;
         $order->load = 1;
         $order->save();
         //success
         $trans = new MasterRestoTransactionModel();
         $trans->id_restaurant = $order->id_restaurant;
         $trans->id_request = $order->id_order;
         $trans->gross_amount = $invoice->grandTotal;
         $trans->type_transaction = "1";
         $trans->datetime_transaction = leap_mysqldate();
         $trans->approved = "1";
         $trans->mr_fee = $invoice->valFeeMR;
         //doubleval($order->mr_fee);//((double)($arrOrder[0]->grand_total * $resto->mr_fee)) / 100;
         //TODO LATER CHANGE 3 (BANK FEE) INTO GLOBAL VAR
         $trans->other_fee = 0;
         //((double)($arrOrder[0]->grand_total * $resto->cc_fee)) / 100;
         $trans->bank_disc = $invoice->valDiscBank;
         //doubleval($order->disc_bank);//$objOrder->disc_bank;
         $valNetAmount = doubleval($trans->gross_amount - $trans->mr_fee - $trans->other_fee + $trans->bank_disc);
         $trans->net_amount = $valNetAmount;
         $trans->save();
         //reset user credit to 0
         $user = new UserModel();
         $user->getByID($idUser);
         $user->credit = 0;
         $user->save();
     } else {
         $status = "FAILED";
     }
     $results['status'] = $status;
     $results['res_token_id'] = $user->payment_token;
     $results['invoice_no'] = $idOrder;
     $results['id_user'] = $idUser;
     $results['res_response_code'] = $response->res_response_code;
     $results['doku_results'] = $response;
     //        $results['data_payment'] = $dataPayment;
     //        pr($results);
     if ($status == "SUCCESS") {
         return array("success" => 1, $results);
     } else {
         return array("success" => 0, $results);
     }
     //        Generic::finish($results);
 }
 public function payment()
 {
     if (Efiwebsetting::getData('checkOAuth') == 'yes') {
         IMBAuth::checkOAuth();
     }
     $json = array();
     $json['status_code'] = 1;
     $id_user = isset($_GET['id_user']) ? addslashes($_GET['id_user']) : "";
     if (!$id_user) {
         Generic::errorMsg("Please login!");
     }
     if (!User::checkUserID($id_user)) {
         Generic::errorMsg("ID User not found!");
     }
     $id_order = isset($_GET['id_order']) ? addslashes($_GET['id_order']) : "";
     if (!$id_order) {
         Generic::errorMsg("No id order found!");
     }
     $objOrder = new MasterOrderModel();
     $arrOrder = $objOrder->getWhere("id_order='{$id_order}' AND id_user='******' AND status_payment='0'");
     if (count($arrOrder) == 0) {
         $arrOrder = $objOrder->getWhere("id_order='{$id_order}' AND id_user='******' AND status_payment='1'");
         if (count($arrOrder) > 0) {
             Generic::errorMsg("The bill is paid!");
         }
     }
     Generic::checkCountWithMsg($arrOrder, "You are not authorized to pay the bill");
     $arrOrder[0]->status_payment = "1";
     $arrOrder[0]->load = 1;
     $id_update = $arrOrder[0]->save();
     if (!$id_update) {
         Generic::errorMsg("Update failed!");
     }
     ////////////////////PUNYA SENDY
     $resto = new MasterRestaurantModel();
     $resto->getByID($arrOrder[0]->id_restaurant);
     $trans = new MasterRestoTransactionModel();
     $trans->id_restaurant = $arrOrder[0]->id_restaurant;
     $trans->id_request = $arrOrder[0]->id_order;
     $trans->gross_amount = $arrOrder[0]->grand_total;
     $trans->type_transaction = "1";
     $trans->datetime_transaction = leap_mysqldate();
     $trans->approved = "1";
     $trans->mr_fee = (double) ($arrOrder[0]->grand_total * $resto->mr_fee) / 100;
     //TODO LATER CHANGE 3 (BANK FEE) INTO GLOBAL VAR
     $trans->other_fee = (double) ($arrOrder[0]->grand_total * $resto->cc_fee) / 100;
     $trans->bank_disc = $objOrder->disc_bank;
     $trans->net_amount = $trans->gross_amount - $trans->mr_fee - $trans->other_fee + $trans->bank_disc;
     $trans->save();
     $json['results']['messages'] = "Payment success";
     echo json_encode($json);
     die;
 }