public function changePaymentMethod() { $idUser = Generic::mustCheck($_GET['id_user'], Keys::$ERR_NOT_FOUND_ID_USER); $idOrder = Generic::mustCheck($_GET['id_order'], Keys::$ERR_NOT_FOUND_ID_ORDER); $paymentMethod = Generic::mustCheck($_GET['payment_method'], Keys::$ERR_NOT_FOUND_PAYMENT_METHOD); if (!Util::isLeader($idOrder, $idUser)) { Generic::errorMsg(Keys::$ERR_CHANGE_PAYMENT_NOT_LEADER); } if (!in_array($paymentMethod, Helper::getPaymentTypes())) { Generic::errorMsg(Keys::$ERR_PAYMENT_TYPE_NOT_ALLOWED); } $order = new MasterOrderModel(); $order->getByID($idOrder); $order->payment_method = $paymentMethod; $invoice = new Invoice($idOrder, true); //update totalan di row order model $order->disc_resto = $invoice->valDiscRestaurant; $order->disc_bank = $invoice->valDiscBank; $order->disc_mr = $invoice->valDiscMR; $order->tax_pb1 = $invoice->valTaxCharge; $order->service_charge = $invoice->valServiceCharge; $order->other_charge = $invoice->valOtherCharge; $order->cc_fee = $invoice->valFeeBank; $order->mr_fee = $invoice->valFeeMR; $order->total_cost = $invoice->subTotal; $order->grand_total = $invoice->grandTotal; $order->save(); $results['invoice'] = $invoice->getInvoice(); Generic::finish($results); }
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 addOrderInPendingOrder() { //TODO Sama seperti add order kemarin, tapi quantity cuma bisa set 1 //TODO master apa bukan if (Efiwebsetting::getData('checkOAuth') == 'yes') { IMBAuth::checkOAuth(); } $id_user = isset($_GET['id_user']) ? addslashes($_GET['id_user']) : ""; if (!$id_user) { Generic::errorMsg("Please login!"); } $id_order = isset($_GET['id_order']) ? addslashes($_GET['id_order']) : ""; if (!$id_order) { Generic::errorMsg("ID Order not found!"); } $id_dish = isset($_GET['id_dish']) ? addslashes($_GET['id_dish']) : ""; if (!$id_dish) { Generic::errorMsg("ID Dish not found!"); } $arah = addslashes($_GET['arah']); //plus //minus //ambil order saya, kalau blom ada, dan action plus, maka bikin baru //ambil order saya kalau blom ada dan action minus dan saya master..boleh kurangi, else meldung tidak bisa mengurangi order yang bukan milik anda //kalau master ambil order semua $ada_default_order = 0; $myOrder = ""; $objOrderDetail = new OrderDetailModel(); $arrObj = $objOrderDetail->getWhere("id_user = '******' AND id_order = '{$id_order}' AND id_dish ='{$id_dish}' AND order_now!=1 LIMIT 0,1"); if (count($arrObj) > 0) { $ada_default_order = 1; $myOrder = $arrObj[0]; } $dish = new MasterDishModel(); $dish->getByID($id_dish); $isLeader = Util::isLeader($id_order, $id_user); if ($arah == "plus") { if (!$ada_default_order) { $price = $dish->price; //krn qty = 1 $objOrderDetail = new OrderDetailModel(); $objOrderDetail->id_user = $id_user; $objOrderDetail->id_order = $id_order; $objOrderDetail->id_dish = $id_dish; $objOrderDetail->quantity = 1; $objOrderDetail->price = $price; $objOrderDetail->datetime_order = $this->setCurrentDate(); $objOrderDetail->status = "1"; // $dishname = MasterDish::getDish($id_dish); // $objOrderDetail->quantity = 1; $id = $objOrderDetail->save(); } else { $price = $dish->price * ($myOrder->quantity + 1); $myOrder->quantity++; $myOrder->price = $price; $myOrder->datetime_order = $this->setCurrentDate(); $myOrder->status = "1"; $myOrder->load = 1; $myOrder->save(); $id = $myOrder->id_order_detail; } } if ($arah == "minus") { if ($ada_default_order) { //cek apa default ordernya masi plus if ($myOrder->quantity > 0) { //minus biasa $price = $dish->price * ($myOrder->quantity - 1); $myOrder->quantity--; $myOrder->price = $price; $myOrder->datetime_order = $this->setCurrentDate(); $myOrder->status = "1"; $myOrder->load = 1; $myOrder->save(); $id = $myOrder->id_order_detail; } else { if ($isLeader) { //minus dari anggota yang lain $objOrderDetail = new OrderDetailModel(); $arrObjLain = $objOrderDetail->getWhere("id_order = '{$id_order}' AND id_dish ='{$id_dish}'"); if (count($arrObjLain) > 0) { //bisa dikurangin dari yang lain..lihat qty nya juga $sum = 0; foreach ($arrObjLain as $od) { $sum += $od->quantity; } if ($sum > 0) { foreach ($arrObjLain as $od) { if ($od->quantity > 0) { //minus biasa $price = $dish->price * ($od->quantity - 1); $od->quantity--; $od->price = $price; $od->datetime_order = $this->setCurrentDate(); $od->status = "1"; $od->load = 1; $od->save(); $id = $od->id_order_detail; break; } } } else { //habis ga bisa dikurangi Generic::errorMsg("Not Enough Quantity"); } } else { Generic::errorMsg("Not Enough Quantity"); } } else { //Notify kl jumlah tidak cukup utk dikurangi //habis ga bisa dikurangi Generic::errorMsg("Not Enough Quantity"); } } } else { //minus dr anggota yang lain if ($isLeader) { //minus dari anggota yang lain $objOrderDetail = new OrderDetailModel(); $arrObjLain = $objOrderDetail->getWhere("id_order = '{$id_order}' AND id_dish ='{$id_dish}'"); if (count($arrObjLain) > 0) { //bisa dikurangin dari yang lain..lihat qty nya juga $sum = 0; foreach ($arrObjLain as $od) { $sum += $od->quantity; } if ($sum > 0) { foreach ($arrObjLain as $od) { if ($od->quantity > 0) { //minus biasa $price = $dish->price * ($od->quantity - 1); $od->quantity--; $od->price = $price; $od->datetime_order = $this->setCurrentDate(); $od->status = "1"; $od->load = 1; $od->save(); $id = $od->id_order_detail; break; } } } else { //habis ga bisa dikurangi Generic::errorMsg("Not Enough Quantity"); } } else { Generic::errorMsg("Not Enough Quantity"); } } else { //Notify kl jumlah tidak cukup utk dikurangi Generic::errorMsg("Not Enough Quantity"); } } } if ($arah == "") { Generic::errorMsg("Please insert arah"); } // getcurrent qty dr iddish // $currQuantity = OrderDetail::getQuantityUserByID_dish($id_dish, $id_order, $id_user); // $id = $this->addOrderDetails($id_order, $id_user, $id_dish, $currQuantity + 1); if (!$id) { Generic::errorMsg("Add order failed!"); } $objOrder = new MasterOrderModel(); $objOrder->getByID($id_order); $invoice = $this->calcRechnung($objOrder->id_restaurant, $id_order); $inv = new Invoice($id_order, true); $this->setInvoiceInOrder($objOrder, $invoice); $objOrder->datetime_order = $this->setCurrentDate(); // $objOrder->total_cost = $invoice['Total']; $objOrder->load = 1; $id_updateOrder = $objOrder->save(); if (!$id_updateOrder) { Generic::errorMsg("Update Order failed!"); } $json = array(); $json['status_code'] = 1; $json['results']['messages'] = "Success"; $orderDetails = Util::getAllOrderDetailsByIDOrder($id_order); $orderDetailByDishID = array(); // pr($orderDetails); $total = array(); foreach ($orderDetails as $det) { if ($det['status_progress'] != 9) { // echo "dis ID ".$det['id_dish']." | ".$total[$det['id_dish']]['quantity']." add ".$det['quantity']."<br>"; $total[$det['id_dish']]['quantity'] += $det['quantity']; } $string_name = rtrim(trim(preg_replace('/\\s\\s+/', ' ', $det['name']))); $dish = new MasterDishModel(); $dish->getByID($det['id_dish']); $total[$det['id_dish']]['id_dish'] = $det['id_dish']; $total[$det['id_dish']]['name'] = $string_name; $total[$det['id_dish']]['single_price'] = (double) $dish->price; $orderDetailByDishID[$det['id_dish']][] = $det; } $hasilnya = array(); $all_total = 0; foreach ($total as $key => $val) { $sem = array(); $val['price_subtotal'] = $val['quantity'] * $val['single_price']; $all_total += $val['price_subtotal']; $sem = $val; $sem["orders"] = array(); //kelompokan menurut status progess foreach ($orderDetailByDishID[$key] as $orderDetail) { $userInstance = Util::createUserInstance($orderDetail["id_user"], $orderDetail["note"], $orderDetail["id_order_detail"]); $orderDetail['user'] = $userInstance; if ($orderDetail['order_now'] == 0) { $sem['orders']['Pending'][] = $orderDetail; } else { $sem['orders'][Helper::getStatusProgress()[$orderDetail['status_progress']]][] = $orderDetail; } } $hasilnya[] = $sem; } $json['results']['hasil'] = $hasilnya; $json['results']['alltotal'] = $all_total; $json['results']['invoice'] = $inv->getInvoice(); $ids = $this->getUserIdByIDOrder($id_order, $id_user); // $json['results']['push'] = $this->notifyAddOrder($ids, $id_order); $json['results']['push'] = Util::pushNotifyAddOrder($id_order, $id_user, $id_dish); echo json_encode($json); // $json['APA'] = ""; // $json2 =$this->notifyAddOrder($ids, $id_order); // $json3 = array_merge($json, $json2); // echo json_encode($json3) ; die; }