Em geral, a inserção e a exibição de dados de Acumulado no Ano (YTD) no formulário do Financial Consolidation and Close requer que dois membros Exibição sejam incluídos no design do formulário: YTD_Input e YTD. Essa exigência pode tornar o design do formulário complexo. O exemplo abaixo utiliza o script do Groovy para eliminar essa exigência e só inclui o membro Exibição de Dias do Acumulado do Ano no formulário. O script do Groovy gerencia os dados de entrada corretamente. A utilização desse método faz com que o design e a exibição do formulário sejam mais gerenciáveis.
Para criar regras do Groovy a fim de inserir dados diretamente no membro FCCS_YTD:
Adicione uma regra Sob Demanda no Calculation Manager denominada "PreFormLoad".
Altere o Tipo do Script da regra Sob Demanda para "Script do Groovy".
Adicione o código a seguir à regra "PreFormLoad":
operation.grid.dataCellIterator("FCCS_YTD").each { DataCell cell -> if (!cell.crossDimCell("FCCS_YTD_Input") && cell.isReadOnly())cell.forceEditable=true}
Salve e valide a regra "PreFormLoad".
Forneça valores do Prompt de Tempo de Execução para a regra "PreFormLoad", como é mostrado a seguir:
Consolidação: "Entity Input"
Moeda: "Entity Currency"
Entidade: "FCCS_Global Assumptions"
Período: "Jul"
Cenário: "Actual"
Anos "FY19"
Marque as opções Está Oculto e Usar como Valor de Substituição para todos os seis prompts de Tempo de Execução da regra "PreFormLoad".
Salve, valide e implante a regra "PreFormLoad".
Adicione uma regra Sob Demanda no Calculation Manager denominada "PreFormSave".
Altere o Tipo do Script da regra Sob Demanda para "Script do Groovy".
Adicione o código a seguir à regra "PreFormSave":
def app = operation.application Cube cube = operation.cube Member ytdInputMember = app.getDimension(DimensionType.VERSION).getMember("FCCS_YTD_Input") Collection<DataCell> pendingYtdCells = operation.grid.dataCellIterator("FCCS_YTD").findAll {DataCell ytd -> if (ytd.edited) { def ytdInput = ytd.crossDimCell(ytdInputMember.name) ytdInput?.formattedValue = ytd.formattedValue ytd.setEdited(false) return ytdInput == null } } if (pendingYtdCells) { DataGridBuilder builder = cube.dataGridBuilder("MM/DD/YYYY") Set<String> allDimNames = set(app.getDimensions(cube)*.name) List<String> rowDimNames = set((allDimNames - operation.grid.pov*.dimName) - [ytdInputMember.dimension.name]) as List builder.addPov(operation.grid.pov.findAll({it.dimName != ytdInputMember.dimension.name})*.uniqueMbrName as String[]) builder.addColumn(ytdInputMember.name) pendingYtdCells.each {DataCell cell -> builder.addRow(rowDimNames.collect {cell.getMemberName(it, MemberNameType.UNIQUE_NAME)}, [cell.formattedValue])} DataGridBuilder.Status status = new DataGridBuilder.Status() builder.build(status).withCloseable {grid -> cube.saveGrid(grid)} } Set<String> set(Collection<String> names) { Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER) set.addAll(names) return set }
Salve e valide a regra "PreFormSave".
Forneça valores do Prompt de Tempo de Execução para a regra "PreFormSave", como é mostrado a seguir:
Consolidação: "Entity Input"
Moeda: "Entity Currency"
Entidade: "FCCS_Global Assumptions"
Período: "Jul"
Cenário: "Actual"
Anos "FY19"
Marque as opções Está Oculto e Usar como Valor de Substituição para todos os seis prompts de Tempo de Execução da regra "PreFormSave".
Salve, valide e implante a regra "PreFormSave".
Adicione um formulário denominado "YTD_Test_1" com "FCCS_Periodic" e "FCCS_YTD" nas linhas, como é mostrado a seguir:
Exemplo de Formulário de Acumulado no Ano
Clique na guia Regras de Negócios e mova "Console – Regra – PreFormSave" e "Console – Regra – PreFormLoad" para o lado direito. Marque Executar Antes de Salvarpara a regra "Consol. – Regra – PreFormSave" e marque Executar Depois de Carregar para a regra "Consol. – Executar – PreFormLoad". Esta deverá ser a aparência da tela:
Exemplo de Regras de Negócios
Salve e clique em Concluir.
Observação: Estas etapas marcarão os dados de "Actual"/ "FY19" "Jul" "FCCS_Global Assumptions" como Alterados. Certifique-se de que a unidade de processo seja iniciada e esteja no estado Desbloqueado. Isso é aplicável somente para esse protótipo. A implementação real não terá essas restrições.
Abra "YTD_Test_1 form" e adicione valores a FCCS_YTD, como é mostrado a seguir:
Exemplo de Valores de Acumulado no Ano
Salve o formulário. FCCS_Periodic será preenchido com os valores Periódicos correspondentes, como é mostrado a seguir:
Exemplo de Formulário de Acumulado no Ano Preenchido