/** * 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 // ]); // } }
/** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id, SolicitudFormRequest $request) { $solicitud = Solicitud::findOrFail($id); //Actualización de estatus $accion = $request->input('accion'); if (isset($accion)) { if ($accion == 'Enviar') { $estatus = 'Enviada'; } elseif ($accion == 'Recuperar') { $estatus = ''; } elseif ($accion == 'Autorizar') { $estatus = 'Autorizada'; if (count($solicitud->rms) == 0) { return redirect()->action('SolicitudController@show', array($solicitud->id))->with(['message' => 'No se puede autorizar una solicitud sin recursos materiales', 'alert-class' => 'alert-warning']); } } elseif ($accion == 'Desautorizar') { $estatus = 'Recibida'; } $solicitud->estatus = $estatus; $solicitud->save(); //Creación de registro $fecha_hora = Carbon::now(); $registro = new Registro(['user_id' => Auth::user()->id, 'estatus' => $estatus, 'fecha_hora' => $fecha_hora]); $solicitud->registros()->save($registro); } else { $solicitud->tipo_solicitud = $request->input('tipo_solicitud'); $solicitud->proyecto_id = $request->input('proyecto_id'); $solicitud->urg_id = $request->input('urg_id'); $solicitud->benef_id = $request->input('benef_id'); $solicitud->no_documento = $request->input('no_documento'); $solicitud->concepto = $request->input('concepto'); $solicitud->obs = $request->input('obs'); $solicitud->autoriza = FirmasSolRec::getUserAutoriza($request->input('proyecto_id')); $solicitud->viaticos = $request->input('viaticos'); $solicitud->vobo = $request->input('vobo'); $solicitud->save(); } return redirect()->action('SolicitudController@show', array($solicitud->id)); }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($solicitud_id, $recurso_id) { $solicitud = Solicitud::findOrFail($solicitud_id); if (count($solicitud->objetivos) > 0) { $solicitud->objetivos()->detach($recurso_id); } else { $solicitud->rms()->detach($recurso_id); } $solicitud->monto = $this->getMontoTotal($solicitud); $solicitud->save(); return redirect()->action('SolicitudController@show', array($solicitud->id)); }