/**
  * Show the form for creating a new resource.
  *
  * @return Response
  */
 public function create()
 {
     $fecha = Carbon::today()->toDateString();
     $cuentas = Cuenta::whereIn('tipo', ['Ejecutora', 'Banco', 'BancoCargo'])->lists('cuenta', 'id')->all();
     $cuentas_bancarias = CuentaBancaria::all()->lists('cuenta_tipo_urg', 'id');
     $benefs = Benef::all()->sortBy('benef')->lists('benef', 'id');
     $cheque = \Consecutivo::nextCheque($cuentas_bancarias->keys()[0]);
     /**
      * @todo Filtrar proyecto en función de la cuenta bancaria
      */
     return view('egresos.formEgreso', compact('fecha', 'cuentas', 'cuentas_bancarias', 'benefs', 'cheque'));
 }
 /**
  * Genera egreso para pago total de una solicitud u orden de compra.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     if ($request->input('doc_type') == 'Solicitud') {
         $doc = Solicitud::findOrFail($request->input('doc_id'));
         $benef_id = $doc->benef_id;
         $concepto = $doc->concepto;
         $monto = $doc->monto;
         $ocultar_id = 'sol-' . $request->input('doc_id');
         $message = "Solicitud " . $request->input('doc_id') . " agregada";
     }
     if ($request->input('doc_type') == 'Oc') {
         $doc = Oc::findOrFail($request->input('doc_id'));
         $doc->load('articulos.rms');
         $benef_id = $doc->benef_id;
         $concepto = '';
         /**
          * @todo Determinar Monto de OC
          */
         $monto = 0;
         $ocultar_id = 'oc-' . $request->input('doc_id');
         $message = "Orden de Compra " . $doc->oc . " agregada";
     }
     $tipo_egreso = $request->input('tipo_egreso');
     if ($tipo_egreso == 'cheque') {
         $cheque = $request->input('cheque');
         if (empty($cheque)) {
             $cheque = \Consecutivo::nextCheque($request->input('cuenta_bancaria_id'));
         }
         $poliza = 0;
     } else {
         $poliza = \Consecutivo::nextPolizaEgreso($request->input('cuenta_bancaria_id'));
         $cheque = 0;
     }
     $egreso = new Egreso();
     $egreso->cuenta_bancaria_id = $request->input('cuenta_bancaria_id');
     $egreso->poliza = $poliza;
     $egreso->cheque = $cheque;
     $egreso->fecha = $request->input('fecha');
     $egreso->benef_id = $benef_id;
     $egreso->cuenta_id = 1;
     //Presupuesto
     $egreso->concepto = $concepto;
     $egreso->monto = $monto;
     $egreso->user_id = \Auth::user()->id;
     $egreso->save();
     if ($request->input('doc_type') == 'Solicitud') {
         $rms = $doc->rms;
         foreach ($rms as $rm) {
             $monto_rm = $rm->pivot->monto;
             $egreso->rms()->attach($rm->id, ['monto' => $monto_rm]);
         }
     } else {
         $sum_monto = 0;
         //Creación de Arreglo
         foreach ($doc->articulos as $articulo) {
             foreach ($articulo->rms as $rm) {
                 $arr_rms[$rm->id] = 0;
             }
         }
         //Suma por Rm
         foreach ($doc->articulos as $articulo) {
             foreach ($articulo->rms as $rm) {
                 $arr_rms[$rm->id] += round($rm->pivot->monto, 2);
             }
         }
         //Crea Registro
         foreach ($arr_rms as $rm_id => $monto_rm) {
             $sum_monto += $monto_rm;
             $egreso->rms()->attach($rm_id, ['monto' => $monto_rm]);
         }
         $egreso->monto = $sum_monto;
         $egreso->save();
     }
     $pago = new PagoDocumento($doc, $request->input('doc_type'));
     $pago->pagarDocumento($egreso, 'Total');
     //Inserta suma por proyecto en tabla egreso_proyecto
     $egreso_rms = $egreso->rms()->get();
     $egreso_rms = $egreso_rms->groupBy('proyecto_id');
     $egreso_rms->each(function ($item, $key) use($egreso) {
         $egreso->proyectos()->attach($key, ['monto' => $egreso->rms()->where('proyecto_id', '=', $key)->sum('egreso_rm.monto')]);
     });
     return redirect(action('GenerarEgresoController@index'))->with(['message' => 'Cheque ' . $cheque . ' Generado']);
     //        if($request->ajax()) {
     //            return response()->json([
     //                'message' => $message,
     //                'ocultar' => $ocultar_id
     //            ]);
     //        }
 }