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'));
 }
Exemple #2
0
 public static function getItems()
 {
     $cantidad = 0;
     if (Auth::check()) {
         $usuario = Auth::user()->id;
         $cantidad = Carrito::where('idUsuario', $usuario)->count();
     }
     return $cantidad;
 }
Exemple #3
0
 public function tieneItems()
 {
     $items = Carrito::where('idUsuario', $this->id)->count();
     if ($items > 0) {
         return true;
     } else {
         return false;
     }
 }
Exemple #4
0
 /**
  * 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();
 }
Exemple #5
0
 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');
 }