public function carrito() { $cntCarrito = Carrito::getItems(); $usuario = Auth::user()->id; $items = Carrito::where('idUsuario', $usuario)->get(); $ldvs = []; $ldv = DB::table('carritos')->join('linea_de_ventas', 'carritos.idLineaDeVenta', '=', 'linea_de_ventas.id')->join('granos', 'linea_de_ventas.IdGrano', '=', 'granos.id')->select('carritos.*', 'linea_de_ventas.cantidad', 'granos.tipo', 'granos.precioPorTonelada', 'linea_de_ventas.unidadDeMedida')->where('carritos.idUsuario', '=', $usuario)->get(); $subtotales = []; $total = 0; foreach ($ldv as $l) { $subtotales[$l->id] = $l->cantidad * $l->precioPorTonelada; if ($l->unidadDeMedida == 0) { $subtotales[$l->id] = $subtotales[$l->id] * 0.05; } $total = $total + $subtotales[$l->id]; $subtotales[$l->id] = Dinero::money_format($subtotales[$l->id]); $l->precioPorTonelada = Dinero::money_format($l->precioPorTonelada); if ($l->unidadDeMedida == 0) { $l->unidadDeMedida = 'Costal(es) 50 kg'; } else { $l->unidadDeMedida = 'Tonelada(s)'; } } $total = Dinero::money_format($total); return view('venta.carrito', compact('ldv', 'cntCarrito', 'subtotales', 'total')); }
public static function getItems() { $cantidad = 0; if (Auth::check()) { $usuario = Auth::user()->id; $cantidad = Carrito::where('idUsuario', $usuario)->count(); } return $cantidad; }
public function tieneItems() { $items = Carrito::where('idUsuario', $this->id)->count(); if ($items > 0) { return true; } else { return false; } }
/** * Show the form for creating a new resource. * * @return Response */ public function cotizador() { /** Primero: * Obtenemos los productos del carrito y se arma un array con todos los items **/ $productos = []; $prods = Carrito::where('cliente', '=', Auth::user()->email)->get(); // El id debe ser el primer elemento del array $primer = true; foreach ($prods as $producto) { if ($primer == true) { $primer = false; $productos = [['producto' => ['id' => $producto->ItemCode, 'cantidad' => $producto->cantidad]]]; } else { $productos[] = ['producto' => ['id' => $producto->ItemCode, 'cantidad' => $producto->cantidad]]; } } //return var_dump($productos); /** * Se arma un Xml con todos lo items por que los arrays entre C# y php son incompatibles */ $xml = new \SimpleXMLElement('<root/>'); // Leer datos del array e introducirlos al documento xml array_walk_recursive($productos, function ($value, $key) use($xml) { if ($key == 'id') { $Item = $xml->addChild('producto'); $Item->addChild($key, $value); } else { $xml->producto[count($xml) - 1]->addChild($key, $value); } }); $stringXML = $xml->asXML(); //return var_dump($stringXML); /** * Obtenemos el CardCode del usuario Lead y el ID de la session de SAP **/ $Cardcode = Auth::user()->sapResultado; $ID = Session::get('UserId'); $client = Session::get('Client'); //$ID = Sap::getId(); /*** Hacer la cotizacion * Ademas necesitamos un Client de SAP para enviar el mensaje y elaborar la cotizacion en SAP */ $stringTest = $client->call('getCotizacion', array('CardCode' => $Cardcode, 'SID' => $ID, 'Items' => $stringXML)); /** * Se obtiene la respuesta => codigo de la cotizacion */ $idReport = (string) $stringTest['getCotizacionResult']; /** * Se puede obtener la cotizacion y enviarla por email */ $email = $client->call('getDocCotz', array('idReport' => $idReport, 'user_email' => Auth::user()->email)); //echo ($email); /** * si la respuesta es igual a "enviado" entonces el email ha sido enviado desde C# */ if (strcmp((string) $email['getDocCotzResult'], "enviado") == 0) { Session::flash('mensaje', 'Hemos enviado la cotización a tu email'); } else { return back()->withErrors(array('msg' => 'Ha ocurrido un error al procesar su solicitud')); } return back(); }
public function getPaymentStatus() { //obtenemos el id de pago antes de limpiar la session $payment_id = Session::get('paypal_payment_id'); //limpiamos la session donde se encuentra el id de pago Session::forget('paypal_payment_id'); if (empty(Input::get('PayerID')) || empty(Input::get('token'))) { return Redirect::route('carrito.failed'); } $payment = Payment::get($payment_id, $this->_api_context); /** * el objeto Payment contiene información necesaria * para ejecutar el pago con la cuenta PayPal * el payer_id es agregado en los parametros del query * esto se usa cuando el usuario es redirigido al sitio desde paypal */ $execution = new PaymentExecution(); $execution->setPayerId(Input::get('PayerID')); /** * Ejecutamos el pago */ $result = $payment->execute($execution, $this->_api_context); /** * si es aprovado se realiza el pago/compra */ if ($result->getState() == 'approved') { $id = $result->getId(); $token = csrf_token(); $datos = Carrito::where('user_id', Auth::user()->id)->get(); $his = array('tipoPago' => 'PayPal', 'ConfirmacionPago' => $id, 'user_id' => Auth::user()->id); Historial::create($his); $gID = Historial::firstOrNew(['ConfirmacionPago' => $id]); foreach ($datos as $d) { $Detalle = array('ItemCode' => $d->ItemCode, 'ItemName' => $d->ItemName, 'cantidad' => $d->cantidad, 'precio' => $d->precio, 'id_historialCompra' => $gID->id); Compras::create($Detalle); } Carrito::where('user_id', Auth::user()->id)->delete(); Session::put('cant', 0); return Redirect::route('carrito.success', [$id, $token]); // } return Redirect::route('carrito.failed'); }