package pwc.taxtech.atms.service;

import java.util.List;

import pwc.taxtech.atms.dpo.EnterpriseAccountSetOrgDto;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.epaccount.EnterpriseAccountSetDto;

public interface EnterpriseAccountSetService {

	/**
	 * 获取所有的账套
	 * @return List<EnterpriseAccountSetDto>
	 */
	List<EnterpriseAccountSetDto> getEnterpriseAccountSetList();
	
	/**
	 * Gets the enterprise account set detail, including organizations using this account set
	 * @param enterpriseAccountSetId - The identifier
	 * @return
	 */
	EnterpriseAccountSetDto getEnterpriseAccountSet(String enterpriseAccountSetId);
	
	/**
	 * Updates the enterprise account set.
	 * 
	 * @param enterpriseAccountSetDto
	 * @return OperationResultDto
	 */
	@SuppressWarnings("rawtypes")
	OperationResultDto updateEnterpriseAccountSet(EnterpriseAccountSetDto enterpriseAccountSetDto);
	
	/**
	 * Validate EnterpriseAccountSet name, check if it is duplicated
	 * @param enterpriseAccountSetDto
	 * @return OperationResultDto
	 */
	@SuppressWarnings("rawtypes")
	OperationResultDto enterpriseAccountSetNameValidate(EnterpriseAccountSetDto enterpriseAccountSetDto);
	
	/**
	 * Validate EnterpriseAccountSet code, check if it is duplicated
	 * @param enterpriseAccountSetDto
	 * @return OperationResultDto
	 */
	@SuppressWarnings("rawtypes")
	OperationResultDto enterpriseAccountSetCodeValidate(EnterpriseAccountSetDto enterpriseAccountSetDto);
	
	/**
	 * Enterprises the account set org validate.
	 * @param enterpriseAccountSetDto
	 * @return OperationResultDto
	 */
	@SuppressWarnings("rawtypes")
	OperationResultDto enterpriseAccountSetOrgValidate(EnterpriseAccountSetDto enterpriseAccountSetDto);
	
	/**
	 * 添加关联机构
	 * @param enterpriseAccountSetDto
	 * @return OperationResultDto
	 */
	@SuppressWarnings("rawtypes")
	OperationResultDto addEnterpriseAccountSetOrg(EnterpriseAccountSetDto enterpriseAccountSetDto);
	
	/**
	 * 更新关联机构
	 * @param enterpriseAccountSetOrgDto
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	OperationResultDto updateEnterpriseAccountSetOrg(EnterpriseAccountSetOrgDto enterpriseAccountSetOrgDto);
	
	/**
	 * Delete organiztion link with one enterpriseAccountSet
	 * @param enterpriseAccountSetDto
	 * @return OperationResultDto
	 */
	@SuppressWarnings("rawtypes")
    OperationResultDto deleteEnterpriseAccountSetOrg(EnterpriseAccountSetDto enterpriseAccountSetDto);
	
}