public function edit(PaymentRequest $request)
 {
     $payment = $request->entity();
     $payment->payment_date = Utils::fromSqlDate($payment->payment_date);
     $data = array('client' => null, 'invoice' => null, 'invoices' => Invoice::scope()->where('is_recurring', '=', false)->where('is_quote', '=', false)->with('client', 'invoice_status')->orderBy('invoice_number')->get(), 'payment' => $payment, 'method' => 'PUT', 'url' => 'payments/' . $payment->public_id, 'title' => trans('texts.edit_payment'), 'paymentTypes' => Cache::get('paymentTypes'), 'clients' => Client::scope()->with('contacts')->orderBy('name')->get());
     return View::make('payments.edit', $data);
 }
 public function store(PaymentRequest $request)
 {
     Payment::create($request->all());
     /*$expense = Expense::latest()->first();
     		$project = Project::find($expense->project_id);	
     	
     		\Session::flash('flash_message', 'Expense for $' . $expense->amount_paid . ' was added for '  . $project->project_name . ' project.');
     		*/
     return redirect('expenses');
 }
 public function postPayment(PaymentRequest $request)
 {
     $insertPayment = Input::get();
     $payment = new paymentrecieved();
     $data = array();
     for ($i = 0; $i < count($insertPayment['recieved_amount']); $i++) {
         if ($insertPayment['adjustmentmode'][$i] == 'Option') {
             $adjust_mode = 'NONE';
         } else {
             $adjust_mode = $insertPayment['adjustmentmode'][$i];
         }
         $payment->invoice_id = $insertPayment['invoiceid'][$i];
         $payment->recieved_amount = $insertPayment['recieved_amount'][$i];
         $payment->refno = $insertPayment['ref_no'][$i];
         $payment->date = $insertPayment['date'][$i];
         $payment->adjust_amount = $insertPayment['adjustmentamount'][$i];
         $payment->adjust_mode = $adjust_mode;
         $payment->save();
     }
     // $result = paymentrecieved::create($data);
     $this->saveComment($insertPayment['comment'], $insertPayment['date1'], $insertPayment['invoiceid']);
     $request->session()->flash('alert-success', 'Payment Has Been inserted Successfully');
     return redirect('collection/payment/' . $insertPayment['invoiceid'] . '');
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(PaymentRequest $request, $id)
 {
     $payment = Payment::find($id);
     $payment->update($request->all());
     return redirect('payments');
 }
 /**
  * Purchase Paypal
  * @param PaymentRequest $request
  * @param $productId
  * @return $this|\Illuminate\Http\RedirectResponse
  */
 public function purchasePaypal(PaymentRequest $request, $productId)
 {
     $input = $request->all();
     list($product, $items, $total, $totalDollar) = $this->getPurchasedOptions($productId);
     if ($input['payment_method'] == 2) {
         $config = array('mode' => $this->modeApiPaypal, 'acct1.UserName' => $this->userApiPaypal, 'acct1.Password' => $this->passwordApiPaypal, 'acct1.Signature' => $this->signatureApiPaypal);
         // Create request details
         $setECReqDetails = new SetExpressCheckoutRequestDetailsType();
         // descripcion del item comprado
         $descriptionPayment = "";
         $total = 0;
         if ($product->option_id) {
             $option = Option::findOrFail($product->option_id);
             $descriptionPayment .= $option->name . ' ' . $option->price;
             $total += $option->price;
         }
         if ($product->tags->count()) {
             $descriptionPayment .= ' - Etiqueta: ' . $product->tags->first()->name . ' ' . $product->tags->first()->price;
             $total += $product->tags->first()->price;
         }
         $itemAmount = new BasicAmountType('USD', $totalDollar);
         $itemDetails = new PaymentDetailsItemType();
         $itemDetails->Name = $descriptionPayment;
         $itemDetails->Amount = $itemAmount;
         $itemDetails->Quantity = 1;
         $paymentDetails = new PaymentDetailsType();
         $paymentDetails->PaymentDetailsItem[0] = $itemDetails;
         $setECReqDetails->PaymentDetails[0] = $paymentDetails;
         $setECReqDetails->OrderTotal = $itemAmount;
         $setECReqDetails->OrderDescription = $descriptionPayment;
         //$setECReqDetails->PaymentAction = "Sale";
         //$setECReqDetails->cppheaderbackcolor = "#000000";
         $setECReqDetails->CancelURL = route('product_payment', $productId);
         $setECReqDetails->ReturnURL = route('paypal_receipt');
         $setECReqDetails->Custom = $productId;
         $setECReqType = new SetExpressCheckoutRequestType();
         $setECReqType->SetExpressCheckoutRequestDetails = $setECReqDetails;
         // Create request
         $setECReq = new SetExpressCheckoutReq();
         $setECReq->SetExpressCheckoutRequest = $setECReqType;
         // Perform request
         $paypalService = new PayPalAPIInterfaceServiceService($config);
         $setECResponse = $paypalService->SetExpressCheckout($setECReq);
         $tokenPaypal = $setECResponse->Token;
         // Check results
         if ($setECResponse->Ack == 'Success') {
         } else {
             flash('Respuesta Inválida');
             return redirect()->back();
         }
         Log::info('results of PAYPAL: ' . json_encode($setECResponse));
     }
     $paymentMethod = 2;
     return view('products.purchase')->with(compact('product', 'items', 'total', 'totalDollar', 'input', 'tokenPaypal', 'paymentMethod'));
 }