package com.ejie.ab39a.service;

import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;
import java.util.List;

import com.ejie.ab39a.model.ElementosPe;
import com.ejie.ab39a.model.PlanesEstrategicos;

/**
 * PlanesEstrategicos.
 * 
 *  
 */

public interface PlanesEstrategicosService {

	/**
	 * Inserts a single row in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planesEstrategicos
	 * @return PlanesEstrategicos PlanesEstrategicos
	 */
	PlanesEstrategicos add(PlanesEstrategicos planesEstrategicos);

	/**
	 * Updates a single row in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planesEstrategicos
	 * @return PlanesEstrategicos PlanesEstrategicos
	 */
	PlanesEstrategicos update(PlanesEstrategicos planesEstrategicos);

	/**
	 * Updates a single row in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planes
	 * @param elementos
	 *            List<ElementosPe> elementos
	 * @return PlanesEstrategicos planes
	 */
	PlanesEstrategicos guardarPlanCompleto(PlanesEstrategicos planesEstrategicos, List<ElementosPe> elementos);

	/**
	 * Finds a single row in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planes
	 * @return PlanesEstrategicos planes
	 */
	PlanesEstrategicos find(PlanesEstrategicos planesEstrategicos);

	/**
	 * Deletes a single row in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            planes PlanesEstrategicos planes
	 */
	void remove(PlanesEstrategicos planesEstrategicos);

	/**
	 * Finds a list of rows in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planes
	 * @param jqGridRequestDto
	 *            JQGridRequestDto planes
	 * @return List<PlanesEstrategicos> planes
	 */
	List<PlanesEstrategicos> findAll(PlanesEstrategicos planesEstrategicos, JQGridRequestDto jqGridRequestDto);

	/**
	 * Finds rows in the PlanesEstrategicos table using like.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planes
	 * @param jqGridRequestDto
	 *            JQGridRequestDto jqGridRequestDto
	 * @param startsWith
	 *            Boolean startsWith
	 * @return List<PlanesEstrategicos> lista planes
	 */
	List<PlanesEstrategicos> findAllLike(PlanesEstrategicos planesEstrategicos, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith);

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Removes rows from the PlanesEstrategicos table.
	 *
	 * @param filterPlanesEstrategicos
	 *            PlanesEstrategicos filterPlanesEstrategicos
	 * @param jqGridRequestDto
	 *            JQGridRequestDto jqGridRequestDto
	 * @param startsWith
	 *            Boolean startsWith
	 */
	void removeMultiple(PlanesEstrategicos filterPlanesEstrategicos, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith);

	/**
	 * Filter method in the PlanesEstrategicos table.
	 *
	 * @param filterPlanesEstrategicos
	 *            PlanesEstrategicos filterPlanesEstrategicos
	 * @param jqGridRequestDto
	 *            JQGridRequestDto jqGridRequestDto
	 * @param startsWith
	 *            Boolean startsWith
	 * @return JQGridResponseDto<PlanesEstrategicos> PlanesEstrategicos
	 */
	JQGridResponseDto<PlanesEstrategicos> filter(PlanesEstrategicos filterPlanesEstrategicos,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith);

	/**
	 * Filter method in the PlanesEstrategicos table.
	 *
	 * @param filterPlanesEstrategicos
	 *            PlanesEstrategicos filterPlanesEstrategicos
	 * @param jqGridRequestDto
	 *            JQGridRequestDto jqGridRequestDto
	 * @param startsWith
	 *            Boolean startsWith
	 * @return JQGridResponseDto<PlanesEstrategicos> PlanesEstrategicos
	 */
	JQGridResponseDto<PlanesEstrategicos> filterCopiar(PlanesEstrategicos filterPlanesEstrategicos,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith);

	/**
	 * Filter method in the PlanesEstrategicos table.
	 *
	 * @param plane
	 *            Integer plane
	 * @param jqGridRequestDto
	 *            JQGridRequestDto jqGridRequestDto
	 * @param startsWith
	 *            Boolean startsWith
	 * @return JQGridResponseDto<PlanesEstrategicos> PlanesEstrategicos
	 */
	JQGridResponseDto<PlanesEstrategicos> getVersionesByPlanE(Integer plane, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith);

	/**
	 * Reorder the selection made in PlanesEstrategicos table.
	 *
	 * @param filterPlanesEstrategicos
	 *            PlanesEstrategicos filterPlanesEstrategicos
	 * @param jqGridRequestDto
	 *            JQGridRequestDto jqGridRequestDto
	 * @param startsWith
	 *            Boolean startsWith
	 * @return Object Object
	 */
	Object reorderSelection(PlanesEstrategicos filterPlanesEstrategicos, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith);

	/**
	 * Operacion CRUD Edit. Modificacion del bean indicado. Solicitar informe
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos Bean que contiene la informacion a
	 *            modificar.
	 * @return PlanesEstrategicos Bean resultante de la modificacion.
	 */
	PlanesEstrategicos editInforme(PlanesEstrategicos planesEstrategicos);

	/**
	 * Operacion CRUD Edit. Modificacion del bean indicado. Solicitar informe
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos Bean que contiene la informacion a
	 *            modificar.
	 */
	void darBajaplanE(PlanesEstrategicos planesEstrategicos);

	/**
	 * borra Plan Tiene Gestion
	 * 
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planesEstrategicos
	 * @return Integer Integer
	 */
	Long borraPlanTieneGestion(PlanesEstrategicos planesEstrategicos);

	/**
	 * Finds a list of rows in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planes
	 * @param jqGridRequestDto
	 *            JQGridRequestDto planes
	 * @return List<PlanesEstrategicos> planes
	 */
	List<PlanesEstrategicos> findAllCombo(PlanesEstrategicos planesEstrategicos, JQGridRequestDto jqGridRequestDto);

	/**
	 * Finds a single row in the PlanesEstrategicos table.
	 *
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planes
	 * @return PlanesEstrategicos planes
	 */
	PlanesEstrategicos findFechas(PlanesEstrategicos planesEstrategicos);

	/**
	 * crear copia plan
	 * 
	 * @param planesEstrategicos
	 *            PlanesEstrategicos planesEstrategicos
	 * @return PlanesEstrategicos plan
	 */
	PlanesEstrategicos crearCopiaPlanEstrategico(PlanesEstrategicos planesEstrategicos);

	/**
	 * buscar plan max
	 * 
	 * @param plan
	 *            PlanesEstrategicos plan
	 * @return PlanesEstrategicos plan
	 */
	PlanesEstrategicos findPlanMaxVersionByCodPlan(PlanesEstrategicos plan);

	/**
	 * solicitar informe no
	 * 
	 * @param plan
	 *            PlanesEstrategicos plan
	 */
	void solicitarInformeNo(PlanesEstrategicos plan);
}