public function cancelar($id, Request $request) { $motivo = $request->input('motivo'); if (empty($motivo)) { return redirect()->back()->with(['message' => 'Por favor especifique motivo de cancelación', 'alert-class' => 'alert-warning']); } $egreso = Egreso::findOrFail($id); if (empty($egreso->cheque)) { return redirect()->back()->with(['message' => 'Error: El egreso ' . $egreso->poliza . ' no es un cheque', 'alert-class' => 'alert-danger']); } /** * @todo Analizar caso cuando exista comprobación */ //Actualiza Estatus de Solicitud || Oc&Req => Autorizada $pago = new PagoDocumento(); $pago->cancelarPago($egreso); //Generar Póliza de Cancelación $poliza = Poliza::create(['fecha' => Carbon::today()->toDateString(), 'tipo' => 'Cancelación', 'concepto' => 'Cancelación Cheque ' . $egreso->cheque . ' ' . $motivo, 'user_id' => \Auth::user()->id]); $poliza_abono = $poliza->polizaAbonos()->create(['cuenta_id' => $egreso->cuenta_id, 'monto' => $egreso->monto, 'origen_id' => $egreso->id, 'origen_type' => 'Guia\\Models\\Egreso']); //Insertar RMs si existen en Egreso if (count($egreso->rms) > 0) { foreach ($egreso->rms as $rm) { $monto_rm = $rm->pivot->monto; $poliza_abono->rms()->attach($rm->id, ['monto' => $monto_rm]); } } $poliza->polizaCargos()->create(['cuenta_id' => 27, 'monto' => $egreso->monto, 'origen_id' => $egreso->id, 'origen_type' => 'Guia\\Models\\Egreso']); $cheque = $egreso->cheque; $egreso->estatus = 'Cancelado'; $egreso->fecha_cobro = Carbon::today()->toDateString(); $egreso->save(); $egreso->delete(); return redirect()->back()->with(['message' => 'Cheque ' . $cheque . ' cancelado con éxito']); }
/** * 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 // ]); // } }