Ejemplo n.º 1
0
 public function getEjercicioRm($rm)
 {
     $ejercicio_rm = collect(['rm' => $rm->rm]);
     $ejercicio_rm->put('objetivo', $rm->objetivo->objetivo);
     $ejercicio_rm->put('cog', $rm->cog->cog);
     $ejercicio_rm->put('d_cog', $rm->cog->d_cog);
     $ejercicio_rm->put('presupuestado', $rm->monto);
     $compensado_origen = CompensaOrigen::where('rm_id', $rm->id)->sum('monto');
     $compensado_destino = CompensaDestino::where('rm_id', $rm->id)->sum('monto');
     $compensado = round($compensado_destino, 2) - round($compensado_origen, 2);
     $ejercicio_rm->put('compensado', $compensado);
     $rm_objeto = Rm::find($rm->id);
     $ejercido = $this->getMontoEjercido($rm_objeto);
     $ejercicio_rm->put('ejercido', $ejercido);
     $reintegros_df = $this->getMontoReintegrosDF($rm_objeto);
     $ejercicio_rm->put('reintegros_df', $reintegros_df);
     //-- Reservado --//
     $reqs_id = Req::where('proyecto_id', $rm->proyecto_id)->where('estatus', 'Autorizada')->lists('id')->all();
     $reservado_reqs = round($rm_objeto->articulos()->whereIn('req_id', $reqs_id)->sum('articulo_rm.monto'), 2);
     $solicitudes_id = Solicitud::where('proyecto_id', $rm->proyecto_id)->where('estatus', 'Autorizada')->lists('id')->all();
     $reservado_solicitudes = round($rm_objeto->solicitudes()->whereIn('solicitud_id', $solicitudes_id)->sum('rm_solicitud.monto'), 2);
     $reservado = $reservado_reqs + $reservado_solicitudes;
     $ejercicio_rm->put('reservado', $reservado);
     $saldo = $ejercicio_rm->get('presupuestado') + $ejercicio_rm->get('compensado') - $ejercicio_rm->get('ejercido') - $ejercicio_rm->get('reservado');
     $ejercicio_rm->put('saldo', round($saldo, 2));
     return $ejercicio_rm;
 }
 /**
  * Guarda una nueva compensación.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     $documento_afin = $request->input('documento_afin');
     if (empty($documento_afin)) {
         $documento_afin = 0;
     }
     $fecha = \Carbon\Carbon::now()->toDateString();
     $compensa_rm = CompensaRm::create(['documento_afin' => $documento_afin, 'fecha' => $fecha, 'tipo' => 'Interna']);
     $i = 0;
     foreach ($request->input('rm_origen') as $rm_origen) {
         $monto_origen = $request->input('monto_origen')[$i];
         if ($monto_origen > 0) {
             //Insertar en compsena_orgienes
             $compensa_origenes = CompensaOrigen::create(['compensa_rm_id' => $compensa_rm->id, 'rm_id' => $rm_origen, 'monto' => $monto_origen]);
         }
         $i++;
     }
     $j = 0;
     foreach ($request->input('rm_destino') as $rm_destino) {
         $monto_destino = $request->input('monto_destino')[$j];
         if ($monto_destino > 0) {
             //Insertar en compsena_destinos
             $compensa_destino = CompensaDestino::create(['compensa_rm_id' => $compensa_rm->id, 'rm_id' => $rm_destino, 'monto' => $monto_destino]);
         }
         $j++;
     }
     if ($request->input('monto_nuevo_rm')[0] > 0) {
         $rm_origen_id = $request->input('rm_origen')[0];
         $rmOrigen = Rm::find($rm_origen_id);
         $k = 0;
         foreach ($request->input('rm_nuevo') as $rm_nuevo) {
             $rm = new Rm();
             $rm->rm = $rm_nuevo;
             $rm->proyecto_id = $rmOrigen->proyecto_id;
             $rm->objetivo_id = $rmOrigen->objetivo_id;
             $rm->actividad_id = $rmOrigen->actividad_id;
             $rm->cog_id = $request->input('cog_nuevo')[$k];
             $rm->fondo_id = $rmOrigen->fondo_id;
             $rm->monto = 0;
             $rm->d_rm = 'Compensación #' . $compensa_rm->id;
             $rm->save();
             $monto_nuevo_rm = $request->input('monto_nuevo_rm')[$k];
             if ($monto_nuevo_rm > 0) {
                 //Insertar en compsena_destinos
                 $compensa_destino = CompensaDestino::create(['compensa_rm_id' => $compensa_rm->id, 'rm_id' => $rm->id, 'monto' => $monto_nuevo_rm]);
             }
             $k++;
         }
     }
     return redirect()->action('CompensaInternaController@index');
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     $urg_externa_id = $request->input('urg_externa_id');
     $concepto = $request->input('concepto');
     $tipo_compensa_externa = $request->input('tipo_compensa_externa');
     $proyecto_id = $request->input('proyecto_id');
     $proyecto = Proyecto::find($proyecto_id);
     $proyecto->load('fondos');
     $documento_afin = $request->input('documento_afin');
     if (empty($documento_afin)) {
         $documento_afin = 0;
     }
     $fecha = \Carbon\Carbon::now()->toDateString();
     $compensa_rm = CompensaRm::create(['documento_afin' => $documento_afin, 'fecha' => $fecha, 'tipo' => 'Externa']);
     $monto_total = 0;
     if ($request->input('rm_aplicacion') > 0) {
         $j = 0;
         foreach ($request->input('rm_aplicacion') as $rm_aplicacion) {
             $monto_aplicacion = $request->input('monto_aplicacion')[$j];
             if ($monto_aplicacion > 0) {
                 if ($tipo_compensa_externa == 'Abono') {
                     CompensaDestino::create(['compensa_rm_id' => $compensa_rm->id, 'rm_id' => $rm_aplicacion, 'monto' => $monto_aplicacion]);
                 }
                 if ($tipo_compensa_externa == 'Cargo') {
                     CompensaOrigen::create(['compensa_rm_id' => $compensa_rm->id, 'rm_id' => $rm_aplicacion, 'monto' => $monto_aplicacion]);
                 }
                 $monto_total += $monto_aplicacion;
             }
             $j++;
         }
     }
     if ($request->input('monto_nuevo_rm')[0] > 0) {
         $rm_origen_id = $request->input('rm_origen')[0];
         $rmOrigen = Rm::find($rm_origen_id);
         $k = 0;
         foreach ($request->input('rm_nuevo') as $rm_nuevo) {
             $rm = new Rm();
             $rm->rm = $rm_nuevo;
             $rm->proyecto_id = $proyecto_id;
             $rm->objetivo_id = 1;
             $rm->actividad_id = 1;
             $rm->cog_id = $request->input('cog_nuevo')[$k];
             $rm->fondo_id = $proyecto->fondos[0]->id;
             $rm->monto = 0;
             $rm->d_rm = 'Compensación #' . $compensa_rm->id;
             $rm->save();
             $monto_nuevo_rm = $request->input('monto_nuevo_rm')[$k];
             if ($monto_nuevo_rm > 0) {
                 //Insertar en compsena_destinos
                 CompensaDestino::create(['compensa_rm_id' => $compensa_rm->id, 'rm_id' => $rm->id, 'monto' => $monto_nuevo_rm]);
                 $monto_total += $monto_nuevo_rm;
             }
             $k++;
         }
     }
     $compensa_rm->compensaExternas()->create(['urg_externa_id' => $urg_externa_id, 'concepto' => $concepto, 'tipo' => $tipo_compensa_externa, 'monto' => $monto_total]);
     return redirect()->action('CompensaExternaController@index');
 }