Controle Quantitativo - Quadro O controle de vagas por quadro foi reformulado. A partir de agora passam a existir dois esquemas distintos de controle de quadro: • esquema QUADRO/RESERVA/DISTRIBUIÇÃO • esquema QUADRO/COMPROMISSO/RESERVA A escolha entre estas duas formas de controle deve ser feita através da opção QUADRO RESERVA_QUADRO_ORIGEM na transação 'Opções' do Ergon. Se RESERVA_QUADRO_ORIGEM='QUADRO', o esquema usado é QUADRO / RESERVA / DISTRIBUIÇÃO. Se RESERVA_QUADRO_ORIGEM='COMPROMISSO', o esquema usado é QUADRO / COMPROMISSO / RESERVA. Como a funcionalidade do quadro é análoga entre cargo e função, a menos da referência, este documento se baseará nas transações voltadas para cargo. Especificação Funcional Esquema QUADRO/RESERVA/DISTRIBUIÇÃO Neste esquema, são utilizadas 4 transações para administrar as vagas do quadro para cargos, e outras 4 transações semelhantes para quadro de funções: - Manutenção de Vagas para Cargos - Reserva de Vagas de Quadro para Cargos - Distribuição de Vagas de Quadro para Cargo/Setor - Consulta de Vagas em Quadro para Cargos - Manutenção de Quadro para Funções - Reserva de Vagas de Quadro para Funções - Distribuição de Vagas de Quadro para Função/Setor - Consulta de Vagas em Quadro para Funções a) Transação 'Manutenção de Vagas para Cargo' Transação responsável pela criação e manutenção de quadros de vagas. Os quadros servem para controlar o número de vagas disponíveis para cada cargos. Só podem ser criados quadros de vagas para cargos cujo controle de vagas seja do tipo 'QUADRO'. Quando é criado um novo quadro de vagas, devem ser fornecidas as seguintes informações: - Código do cargo - Código da referência salarial - Descrição (nome) do quadro, deve ser único - Data de criação do quadro - Data de extinção do quadro - Quantidade de vagas do quadro - Observações As datas de criação e extinção definem o período em que as vagas estão disponíveis para serem distribuídas. Se o cargo do quadro for um cargo aglutinador, as vagas do quadro ficam disponíveis também para os cargos subordinados a ele, e não será permitida a criação de quadro de qualquer dos cargos aglutinados. A referência salarial só deve ser informada se a opção 'Exige referência' do cargo (na transação 'Cargos') tiver sido selecionada. Neste caso, poderão ser cadastrados quadros para todas as combinações cargo/referência. Se a opção 'Exige referência' não tiver sido selecionada, a referência salarial não poderá ser informada e só haverá um quadro de vagas por cargo. A transação apresenta um bloco chamado 'Manutenção', destinado para fazer alterações nos quadros. Depois que o quadro for criado, só será possível alterar a sua data de extinção e a quantidade de vagas. A operação de aumento de vagas do quadro é livre, porém a diminuição é limitada pelo número de vagas já distribuídas e/ou reservadas. b) Transação 'Distribuição de Cargos do Quadro' Transação responsável pela distribuição das vagas do quadro para uso dos funcionários. Até serem distribuídas, as vagas do quadro não estão disponíveis para serem ocupadas pelos funcionários. Quando é feita uma distribuição de vagas, devem ser fornecidas as seguintes informações: - Quadro (nome do quadro cujas vagas serão distribuídas) - Descrição da distribuição - Data de criação da distribuição - Data de extinção da distribuição - Setor - Setores subordinados (Sim/Não) - Observações As datas de criação e extinção definem o período em que as vagas distribuídas estão disponíveis para serem ocupadas por funcionários. Não é permitido cadastrar provimentos/designações/ingressos de funcionários que ocupem estas vagas e que estejam fora deste período. As vagas da distribuição só poderão ser ocupadas por funcionários alocados no mesmo setor da distribuição. A opção 'setores subordinados' indica se as vagas devem ficar disponíveis também para os setores subordinados ao setor escolhido. O sistema não permite a criação de distribuições com características iguais que possuam conflitos de abrangência na utilização. Por exemplo, não é possível criar uma distribuição para o cargo 110 no setor A, pai do setor B, válida para os setores subordinados de A e uma outra distribuição do mesmo quadro para o setor B. Neste caso há uma sobreposição de distribuições para um mesmo setor. A quantidade de vagas que podem ser distribuídas depende da quantidade de vagas do quadro. A soma das vagas distribuídas + vagas reservadas, em um determinado período, não pode ser superior ao total de vagas do quadro. A transação apresenta um bloco chamado 'Manutenção', destinado para fazer alterações nas distribuições. Depois que a distribuição for criada, só será possível alterar o setor (e subordinados), a data de extinção e a quantidade de vagas. A operação de aumento de vagas da distribuição é limitada pelo número de vagas disponíveis no quadro, e a diminuição é limitada pelo número de vagas já ocupadas por funcionários. O setor só pode ser alterado se não houver nenhum funcionário ocupando vaga da distribuição. c) Transação 'Reserva de Vagas de Quadro para Cargos' Esta transação permite reservar algumas vagas do quadro para posterior distribuição. Para cadastrar uma reserva de vagas, devem ser fornecidas as seguintes informações: - Quadro (nome do quadro cujas vagas serão reservadas) - Descrição da reserva - Data de criação da reserva - Data de extinção da reserva - Setor (opcional) - Setores subordinados (Sim/Não) - Quantidade de vagas reservadas - Observações As datas de criação e extinção definem o período em que as vagas ficarão reservadas. Após a data de extinção, as vagas voltam a ficar disponíveis no quadro para novas distribuições. Se o setor for informado, as vagas ficarão reservadas para este setor específico. A opção 'setores subordinados' indica se as vagas devem ficar reservadas também para os setores subordinados ao setor escolhido. A transação permite a criação de uma distribuição a partir de uma reserva, através do botão 'Distribuir Reserva'. Se o setor da reserva tiver sido informado, o setor da distribuição deverá ser o mesmo da reserva, ou um setor subordinado, dependendo da opção 'setores subordinados' da reserva. A quantidade de vagas distribuídas deve ser menor ou igual ao número de vagas da reserva. Se já houver uma distribuição para este mesmo setor, as vagas da reserva serão adicionadas ao total de vagas desta distribuição. Após a distribuição das vagas da reserva, o número de vagas distribuídas é descontado do total de vagas da reserva. A transação apresenta um bloco chamado 'Manutenção', destinado para fazer alterações nas reservas. Depois que a reserva for criada, só será possível alterar o setor (e subordinados), a data de extinção e a quantidade de vagas. A operação de aumento de vagas da reserva é limitada pelo número de vagas disponíveis no quadro. d) Transação 'Consulta de Vagas em Quadro para Cargos' Esta transação é serve para efetuar consultas sobre os quadros, distribuições e reservas de vagas. Ela é dividida em 3 blocos. O primeiro bloco da transação é aquele onde é informado o quadro a ser consultado e a data de referência da consulta. O segundo bloco apresenta as distribuições vinculadas àquele quadro, com o número de vagas ocupadas e disponíveis para cada distribuição. O terceiro bloco apresenta as reservas vinculadas ao quadro. Esta transação é utilizada exclusivamente para consultas. e) Transação 'Manutenção de Quadro para Funções' Esta transação é semelhante à transação ' Manutenção de Quadro para Cargos', sendo utilizada para a manutenção de quadros de funções ao invés de quadro de cargos/referências. f) Transação 'Distribuição de Vagas de Quadro para Função/Setor' Esta transação é semelhante à transação 'Distribuição de Vagas de Quadro para Cargos/Setor ', sendo utilizada para a manutenção de distribuições de vagas de funções ao invés de distribuições de vagas de cargos. g) Transação 'Reserva de Vagas de Quadro para Funções' Esta transação é semelhante à transação 'Reserva de Vagas de Quadro para Cargos', sendo utilizada para a manutenção de reservas de vagas de funções ao invés de reservas de vagas de cargos. h) Transação 'Consulta de Vagas em Quadro para Funções' Esta transação é semelhante à transação 'Consulta de Vagas em Quadro para Cargos', sendo utilizada para a consulta de quadros de funções ao invés de quadros de cargos. 2) Esquema QUADRO/COMPROMISSO/RESERVA Neste esquema, são utilizadas 4 transações para administrar as vagas do quadro para cargos, e outras 4 transações semelhantes para quadro de funções: - Manutenção de Quadro para Cargos - Compromisso de Vagas de Quadro para Cargos - Reserva de Vagas de Quadro para Cargos por Compromisso - Consulta de Vagas de Quadro para Cargos por Compromisso - Manutenção de Quadro para Funções - Compromisso de Vagas de Quadro para Funções - Reserva de Vagas de Quadro para Funções por Compromisso - Consulta de Vagas de Quadro para Funções por Compromisso a) Transação 'Manutenção de Quadro para Cargos' Transação responsável pela criação e manutenção de quadros de vagas. Os quadros servem para controlar o número de vagas disponíveis para cada cargos. Só podem ser criados quadros de vagas para cargos cujo controle de vagas seja do tipo 'QUADRO'. Quando é criado um novo quadro de vagas, devem ser fornecidas as seguintes informações: - Código do cargo - Código da referência salarial - Descrição (nome) do quadro - Data de criação do quadro - Data de extinção do quadro - Quantidade de vagas do quadro - Observações As datas de criação e extinção definem o período em que as vagas estão disponíveis para serem distribuídas. Se o cargo do quadro for um cargo aglutinador, as vagas do quadro ficam disponíveis também para os cargos subordinados a ele, e não será permitida a criação de quadro de qualquer dos cargos aglutinados. A referência salarial só deve ser informada se a opção 'Exige referência' do cargo (na transação 'Cargos') tiver sido selecionada. Neste caso, poderão ser cadastrados quadros para todas as combinações cargo/referência. Se a opção 'Exige referência' não tiver sido selecionada, a referência salarial não poderá ser informada e só haverá um quadro de vagas por cargo. A transação apresenta um bloco chamado 'Manutenção', destinado para fazer alterações nos quadros. Depois que o quadro for criado, só será possível alterar a sua data de extinção e a quantidade de vagas. A operação de aumento de vagas do quadro é livre, porém a diminuição é limitada pelo número de vagas já compromissadas e/ou reservadas. b) Transação 'Compromisso de Vagas de Quadro para Cargos' Compromissar vagas significa alocar vagas para uma futura utilização. Essas vagas não estarão disponíveis até que uma reserva seja feita, liberando a utilização das vagas compromissadas. Quando é feito um compromisso de vagas, devem ser fornecidas as seguintes informações: - Quadro (nome do quadro cujas vagas serão compromissadas) - Descrição do compromisso - Data de criação do compromisso - Data de extinção do compromisso - Setor - Setores subordinados (Sim/Não) - Observações As datas de criação e extinção definem o período em que as vagas compromissadas estão disponíveis para serem reservadas. Após a data de extinção, as vagas do compromisso que não tiverem sido reservadas voltam a ficar disponíveis no quadro para novos compromissos. A escolha do setor do compromisso pode ser opcional ou obrigatória, dependendo do valor da opção 'SETOR_COMPROMISSO' do Ergon (ver mais abaixo). Se for escolhido um setor para o compromisso, as reservas associadas a este compromisso deverão ser feitas para o mesmo setor (ou para setores subordinados a ele, de acordo com a opção 'Setores Subordinados'). Só é possível compromissar vagas de um quadro se ainda houver vagas disponíveis para uso aquele quadro. O número de vagas disponíveis é calculado usando como referência a maior data entre a data de hoje e a data de criação do compromisso, e segue a seguinte fórmula: (Vagas disponíveis no quadro) = (Total de vagas do quadro) - Soma(vagas dos compromissos não extintos) + Soma(vagas das reservas extintas e não utilizadas) Após a data de extinção de um compromisso, todas as vagas deste compromisso e das reservas ainda não utilizadas voltam para o quadro e as reservas ficam extintas com a mesma data de extinção do compromisso. A transação apresenta um bloco chamado 'Manutenção', destinado para fazer alterações nos compromissos. Depois que o compromisso for criado, só será possível alterar o setor (e subordinados), a data de extinção e a quantidade de vagas. A operação de aumento de vagas do compromisso é limitada pelo número de vagas disponíveis no quadro, e a diminuição é limitada pelo número de vagas já ocupadas por reservas. c) Transação 'Reserva de Vagas de Quadro para Cargos por Compromisso' Para que as vagas do quadro possam ser ocupadas pelos funcionários, elas devem ser antes reservadas para tal. As reservas de vagas são feitas a partir de compromissos de vagas. Para cadastrar uma reserva de vagas, devem ser fornecidas as seguintes informações: - Quadro (nome do quadro cujas vagas serão reservadas) - Compromisso (nome do compromisso cujas vagas serão reservadas) - Descrição da reserva - Data de criação da reserva - Data de extinção da reserva - Setor (opcional) - Setores subordinados (Sim/Não) - Quantidade de vagas reservadas O primeiro bloco da transação é aquele onde é informado o quadro onde será cadastrada a reserva, apresentando descrição do quadro (LOV) e código e descrição do cargo, referência e qtd disponível para compromisso. O segundo bloco apresenta os compromissos vinculados aquele quadro. As informações apresentadas são: descrição do compromisso, data de criação, setor, data de extinção, quantidade de vagas do compromisso e quantidade de vagas disponíveis para reserva. O terceiro bloco apresenta as reservas associadas ao compromisso selecionado, sendo este o bloco onde é feito o cadastramento das reservas. Cada reserva é identificada por um número, que é gerado automaticamente pelo sistema e não pode ser alterado. Quando forem cadastrados provimentos, designações ou ingressos de funcionários, este número será usado para identificar a reserva de vagas que os funcionários utilizarão. As datas de criação e extinção da reserva indicam o período durante o qual as vagas da reserva estarão disponíveis para serem ocupadas por funcionários. Após data de extinção da reserva, as vagas que não tiverem sido utilizadas voltam a ficar disponíveis no quadro. A escolha do setor da reserva pode ser opcional ou obrigatória, dependendo do valor da opção 'SETOR_RESERVA' do Ergon (ver mais abaixo). Se for escolhido um setor para a reserva, ele deve ser compatível com o setor do compromisso à qual ela pertence. A soma das vagas de todas as reservas de um compromisso é limitada pelo total de vagas do cmpromisso. A transação apresenta um bloco chamado 'Manutenção', destinado para fazer alterações nas reservas. Depois que a reserva for criada, só será possível alterar o setor (e subordinados), a data de extinção e a quantidade de vagas. A operação de aumento de vagas da reserva é limitada pelo número de vagas disponíveis no compromisso. A diminuição é limitada pelo número de vagas já utilizadas por funcionários. As alterações das datas de extinção após o cadastro pode gerar inconsistências. O sistema permite tais alterações desde que nenhum dos registro atrelados a esta reserva fique inválido, mas isto não garante a integridade de todos os registros de histórico. d) Transação ' Consulta de Vagas de Quadro para Cargos por Compromisso' Esta transação é serve para efetuar consultas sobre os quadros, compromissos e reservas de vagas. Ela é dividida em 3 blocos. O primeiro bloco da transação é aquele onde é informado o quadro a ser consultado e a data de referência da consulta. O segundo bloco apresenta os compromissos vinculados àquele quadro. O terceiro bloco apresenta as reservas associadas aos compromissos, o número de vagas ocupadas e o número de vagas disnponíveis para uso. Esta transação é utilizada exclusivamente para consultas. e) Transação 'Manutenção de Quadro para Funções' Esta transação é semelhante à transação ' Manutenção de Quadro para Cargos', sendo utilizada para a manutenção de quadros de funções ao invés de quadro de cargos/referências. f) Transação 'Compromisso de Vagas de Quadro para Funções' Esta transação é semelhante à transação ' Compromisso de Vagas de Quadro para Cargos', sendo utilizada para a manutenção de compromissos de quadros de funções ao invés de compromissos de quadros de cargos. g) Transação 'Reserva de Vagas de Quadro para Funções por Compromisso' Esta transação é semelhante à transação 'Reserva de Vagas de Quadro para Cargos por Compromisso', sendo utilizada para a manutenção de reservas de quadros de funções ao invés de reservas de quadros de cargos. h) Transação 'Consulta de Vagas de Quadro para Funções por Compromisso' Esta transação é semelhante à transação 'Consulta de Vagas de Quadro para Cargos por Compromisso ', sendo utilizada para a consulta de quadros de funções ao invés de quadros de cargos. Opções do Ergon associadas ao controle de vagas por quadro Grupo QUADRO, item RESERVA_QUADRO_ORIGEM Valores: "QUADRO" e "COMPROMISSO" Indica o esquema de controle de vagas do quadro. Grupo QUADRO, item QUADRO_CARGO Valores: "PROVIMENTO" e "PROVIMENTO/CONVOCACAO" Indica se as vagas do quadro são ocupadas por provimentos e convocações ou apenas provimentos Grupo QUADRO, item QUADRO_FUNCAO Valores: "DESIGNACAO" e "DESIGNAC/SUBSTIT AUSENCIA". Indica se as vagas do quadro são ocupadas por designações e substituições por ausência ou apenas designações. A substituição não ocupa vaga do quadro pois a vaga é ocupada pelo titular que está sendo temporariramente substituído. Grupo QUADRO, item SETOR_COMPROMISSO Valores: "SETOR OBRIGATÓRIO" e "SETOR OPCIONAL" Indica se o setor é obrigatório ou opcional no compromisso. Apenas utilizado quando a opção RESERVA_QUADRO_ORIGEM = 'COMPROMISSO'. Grupo QUADRO, item SETOR_RESERVA Valores: "SETOR OBRIGATÓRIO" e "SETOR OPCIONAL" Indica se o setor é obrigatório ou opcional na reserva. Tarefa de criação de controle de Quadro para Cargo/Função A tarefa consiste em criar, a partir do zero, este controle, ignorando as estruturas existentes. Devem ser removidas as estruturas anteriores para evitar a existência de lixo no banco e não deve ser feita nenhuma migração dos dados. Remover estruturas antigas As estruturas (tabelas) que devem ser removidas são: Tabelas QUADRO_CARGO QUADRO_CARGO_AUX ERG_QUADRO_CARGO ERG_QUADRO_CARGO_AUX ERG_RESQUADCARGO ERG_RESQUADCARGO_AUX ERG_RESQUADCARGOSET ERG_MOVQUADCARGO ERG_MOVQUADCARGO_AUX QUADRO_FUNCAO QUADRO_FUNCAO_AUX ERG_QUADRO_FUNCAO ERG_QUADRO_FUNCAO_AUX ERG_RESQUADFUNCAO ERG_RESQUADFUNCAO_AUX ERG_RESQUADFUNCAOSET ERG_MOVQUADFUNCAO ERG_MOVQUADFUNCAO_AUX Alterei os nomes no CASE para podermos criar as novas estruturas com os nomes adequados. As antigas estruturas (acima) foram prefixadas com um Z como primeira letra. Verificar quais stored procedures devem ser removidas. Novas estruturas Criação das tabelas: ERG_QUADRO ERG_QUADRO_AUX ERG_HIST_QC Ver o diagrama 210 CONTROLE QUADRO no CASE. Funcionamento do controle - especificação funcional Para simplificar a explicação do processo aqui descrito o termo "registro" é utilizado para descrever um provimento, designação ou substituição na ausência O funcionamento do controle de quadro é especificado através da opção RESERVA_QUADRO_ORIGEM, no grupo QUADRO da transação Opções do Ergon. Esta opção pode assumir dois valores: COMPROMISSO ou QUADRO e indica se a reserva é feita a partir de um quadro ou de um compromisso, determinando como o sistema se comporta. Se a origem da reserva é o quadro o sistema não permite a utilização de compromisso e o controle será feito sobre as vagas distribuídas. Neste caso, a distribuição poderá ser feita a partir do quadro ou de uma reserva (através do botão "Distribui Reserva"). Neste modelo não é necessário nenhuma indicação adicional no provimento para utilização do cargo e este continua distribuído após a utilização. Se a origem da reserva é o compromisso o sistema não permite utilizar distribuição, pois, neste caso, as vagas serão utilizadas diretamente a partir da reserva e será obrigatório especificar qual o número da reserva utilizada no provimento. Após o uso a vaga é liberada para o quadro onde poderá ser compromissada novamente. As opções criadas são: QUADRO_CARGO Valores: "PROVIMENTO" e "PROVIMENTO/CONVOCACAO" Indica se as vagas do quadro são ocupadas por provimentos e convocações ou apenas provimentos QUADRO_FUNCAO Valores: "DESIGNACAO" e "DESIGNAC/SUBSTIT AUSENCIA". Indica quais tabelas devem ser consideradas na ocupação das vagas do quadro A substituição não ocupa vaga do quadro pois a vaga é ocupada pelo titular que está sendo temporariramente substituído. SETOR_COMPROMISSO Valores: "SETOR OBRIGATÓRIO" e "SETOR OPCIONAL" Indica se o setor é obrigatório ou opcional no compromisso. Apenas utilizado quando a opção RESERVA_QUADRO_ORIGEM = 'COMPROMISSO'. SETOR_RESERVA Valores: "SETOR OBRIGATÓRIO" e "SETOR OPCIONAL" Indica se o setor é obrigatório ou opcional na reserva. Para fazer a consulta das opções usar sempre a função GET_ERG_OPCAO, criada para este fim. Observação: quando o cliente usar "evento" as opções QUADRO_CARGO e QUADRO_FUNCAO deixam de ser utilizadas pois o evento tem um indicador "Ocupa quadro" que determina se o tipo deve ser considerado para ocupação do quadro. Transações para manutenção do Quadro A manutenção do controle de quadro será feito através de 4 transações descritas a seguir. O enfoque dado na explicação é voltado para o controle de CARGO mas o controle de FUNCAO é análogo a menos da referência. A única diferença é que as consultas em um caso devem forçar CARGO IS NOT NULL ou FUNCAO IS NOT NULL. Características genéricas do mecanismo: · Data de expiração é o primeiro dia em que o compromisso/reserva deixa de ser válido · O cargo aglutinador não permite especificar referência no controle de quadro. · Funcionários aposentados ou falecidos não ocupam quadro · As formas de provimento contêm um indicador de ocupação de quadro: se este indicador não estiver selecionado os provimentos da respectiva forma não serão considerados na contagem de ocupação do quadro. Transação Manutenção de Quadro Cargo Transação responsável pela criação e manutenção de registros do tipo TIPO_CONTROLE='Q'. Quando um quadro é criado é necessário verificar se o controle daquele cargo (o cargo deve ter a especificação CONTROLE_VAGA = 'Q') exige referência (POR_REFER = 'S') e, caso afirmativo, obrigar que esta informação seja fornecida, considerando como data base a max( sysdate, data de criação do quadro). Caso contrário este campo deve permanecer nulo. Quando for validar o registro (fazer isto em trigger de banco) verificar a consistência de cargo/referência/data de criação. A transação apresenta um bloco destinado para fazer alterações. Este bloco deve apresentar um botão "Efetua alteração", um campo para especificar quantidade de vagas a ser aumentada/diminuída (operação indicada através de radio button) e uma data para extinguir o quadro, pois após a criação do registro não será possível alterar a quantidade do quadro e a data de extinção diretamente no registro de quadro. A operação de aumento de vagas do quadro é livre, porém para fazer uma diminuição será necessário verificar se não existirá inconsistência no banco, considerando SYSDATE para totalização das vagas em utilização (para as distribuições em que dtini <= SYSDATE <= DTFIM) . Para quadros de cargo aglutinador não será permitida a criação de quadro de qualquer dos cargos aglutinados. A data de criação do quadro deve ser igual ao início do primeiro registro que utiliza aquele quadro, mesmo que este seja apenas um registro de histórico. Transação Compromisso de Cargo Esta transação só deve ser executada se a opção RESERVA_QUADRO_ORIGEM = 'COMPROMISSO'. O código no menu deve verificar isto e desabilitar a transação conforme a opção. Transação responsável pela criação e manutenção de registros do tipo TIPO_CONTROLE='C'. Compromissar vagas significa alocar vagas para uma futura utilização. Essas vagas não estarão disponíveis até que uma reserva seja feita, liberando a utilização das vagas compromissadas. Para fazer um compromisso é necessário informar um quadro. Os campos que são obrigatórios são: SETOR, DESCRICAO, QTD e DT_CRIACAO. O valor de REFERENCIA é o mesmo especificado para o quadro, segundo a definição do controle do cargo (transação Cargos). Para saber se ainda é possível compromissar vagas de um quadro é preciso fazer uma verificação para aquele quadro. Esta verificação deve ser feita em max( SYSDATE, COMP.DT_CRIACAO) e consiste em: QUAD.QTD - å (COMP.QTD ñ ext) + å (RESE.QTD liberadas) ou seja, o total de vagas do quadro mais as vagas já utilizadas e compromissos/reservas extintas menos os compromissos ainda não utilizados. Esta validação não deve ficar no FORM para evitar tráfego desnecessário na rede e sim na package do banco. Quando um compromisso for extinto (DT_EXTINCAO NOT NULL) todas as vagas deste compromisso e das reservas ainda não utilizadas voltam para o quadro e as reservas ficam extintas com a mesma data de extinção do compromisso. Transação Reserva de Cargo Transação responsável pela criação e manutenção de registros do tipo TIPO_CONTROLE='R'. Esta transação é a mais complexa pois seu comportamento depende da opção RESERVA_QUADRO_ORIGEM. Por este motivo serão criadas transações diferentes e o menu consultará a opção selecionada e chamará a transação correta. As transações terão o seguinte comportamento: Modo COMPROMISSO Um bloco filtro deve solicitar a informação de qual quadro vai ser alterado, apresentando descrição do quadro (LOV) e displays do cargo, descrição do cargo, referência e qtd disponível para compromisso. O segundo bloco apresenta os compromissos vinculados aquele quadro. As informações apresentadas são: Descrição do compromisso, data de criação, setor, data de extinção, qtd do compromisso e qtd disponível. Para reservar vagas de um quadro a partir de um compromisso basta selecionar um compromisso com qtd disponível maior que zero. A seguir deve ser preenchida a DESCRICAO da reserva, o SETOR (se o compromisso especificar um setor este deve ser igual, caso contrário verificar a obrigatoriedade na opção SETOR_RESERVA) e QTD da reserva. Neste caso para se saber quantas vagas ainda estão disponíveis para aquele compromisso basta subtrair o total de QTD das reservas para aquele compromisso do QTD do compromisso. Observar que se uma reserva expirou as vagas dela voltam para o quadro e não para o compromisso. É interessante apresentar o número da reserva na tela pois este número será utilizado para indicar de qual reserva uma vaga está sendo utilizada. Ao se extinguir uma reserva o sistema verifica se não há nenhum registro que a utilize com início posterior a extinção. Se algum registro for encontrado o sistema alerta o usuário e impede a operação. A data de extinçào não pode ser anterior à data do cadastro da mesma. As alterações das datas de criação e extinção após o cadastro pode gerar inconsistências. O sistema permite tais alterações desde que nenhum dos registro atrelados a esta reserva fique inválido, mas isto não garante a integridade de todos os registros de histórico. Modo QUADRO Um bloco filtro deve solicitar a informação de qual quadro vai ser alterado, apresentando descrição do quadro (LOV) e displays do cargo, descrição do cargo, referência e qtd disponível para reserva. Como o quadro já está informado no bloco filtro basta preencher a DESCRICAO da reserva, o SETOR (se for obrigatório). data de criação da reserva e QTD da reserva. Neste caso para se saber quantas vagas podem ser reservadas basta subtrair do QTD do quadro a soma do total de QTD das reservas para aquele quadro e a QTD distribuído. O último bloco é destinado as alterações efetuadas sobre a reserva, permitindo alterar a quantidade reservada e a data de extinção da reserva. Outra facilidade é distribuir vagas a partir da reserva selecionada. Para esta opção deve ser clicado o botão "Distribui Reserva…". Uma nova janela será apresentada e o usuário deve preencher o setor para o qual será feita a distribuição (seguindo a hierarquia definida na reserva) e a quantidade de vagas. O sistema verificará se já há distribuição para o conjunto de parâmetros (CARGO, SETOR) e apresentará o nome da respectiva distribuição e a data de extinção. Caso não exista tal distribuição o usuário deverá preencher o nome da nova distribuição que será criada. Ao clicar no botão "Distribui" o sistema fará a distribuição automaticamente, reduzindo a QTD da reserva e incrementando a QTD da distribuição. Transação Distribuição de Cargos do Quadro Esta transação só deve ser executada se a opção RESERVA_QUADRO_ORIGEM = 'QUADRO'. O código no menu deve verificar isto e desabilitar a transação se for o caso. Transação responsável pela criação e manutenção de registros do tipo TIPO_CONTROLE='D'. O funcionamento é bastante simples pois para distribuir vagas de um quadro basta fazer a diferença entre o QTD do quadro e a soma dos QTD das reservas não expiradas na data max( SYSDATE, DIST.DT_CRIACAO). Um bloco filtro deve solicitar a informação de qual quadro vai ser alterado, apresentando descrição do quadro (LOV) e displays do cargo, descrição do cargo, referência e qtd disponível para distribuição. O usuário precisa preencher as informações DESCRICAO da distribuição, SETOR, DT_CRIACAO e QTD. O sistema não permite a criação de quadros com características iguais que possuam conflitos de abrangência na utilização. Por exemplo, não é possível criar um quadro para o cargo 110 no setor A, pai do setor B, válido para os setores subordinados de A e um outro quadro para o setor B. Neste caso há uma sobreposição de quadros para um mesmo setor. Histórico das alterações Todas as operações nas transações acima gerarão um registro de histórico. Os históricos devem indicar qual foi a operação realizada a partir de uma mensagem montada pela trigger. Os forms devem informar qual o usuário logado em uma variável de uma package e a trigger deve ler essa variável. Se esta for nula a operação deve ser cancelada. Utilização das vagas A função CHECA_QUADRO_VAGAS valida a utilização das vagas de um quadro. Esta função recebe como parâmetros NUMFUNC, NUMVINC, DTINI, TABELA, o número da reserva e o TIPO _EVENTO. Algumas validações iniciais devem ser feitas e são válidas independente da opção utilizada, como se o setor indicado pode usar a vaga; lembrar que embora a tela direcione o usuário para o uso correto a trigger deve validar completamente o registro. Como há dois métodos possíveis, a seguir define-se o algoritmo específico para os dois. Opção COMPROMISSO Este é muito simples pois o usuário é obrigado a informar o número da reserva. Para verificar se o uso é permitido basta saber quantas vagas já foram utilizadas para aquele cargo ou (cargo, referência) naquela reserva, em qualquer período de validade da reserva. Se este número for menor que a QTD da reserva ainda há vagas disponíveis naquela reserva e o uso é permitido. Porém e necessário verificar se a reserva não expirou até a data do uso . A data de início do registro tem que estar contida no período de validade da reserva (entre DT_CRIACAO e DT_EXTINCAO- um dia). Opção QUADRO Neste caso deve-se verificar quantas vagas estão sendo utilizadas na data do uso. Se este total for inferior ao QTD distribuído o uso é permitidoSe o término do registro for anterior a SYSDATE não validar contra o quadro. DTINI e DTFIM do regsitro devem estar compreendido entre DT_CRIACAO e DT_EXTINCAO menos um dia da distribuição. Transação Ingresso Esta transação é um pré cadastro pois no Ergon o funcionário só existe quando possui uma data de exercício. Porém, a utilização do quadro nesta transação funciona como se o funcionário já estivesse efetivado. Sendo assim, se por algum motivo o ingresso se torna sem efeito é preciso especificar se a vaga deve ou não voltar para o quadro. Como há duas opções de trabalho, detalha-se: Opção Compromisso: Neste caso é necessário informar o número da reserva que o funcionário vai utilizar. Quando houver data de sem efeito a vaga vai retornar para o quadro automaticamente e pode ser novamento compromissada. Opção Quadro: A vaga volta para a distribuição quando é liberada ou tornada sem efeito. Restrição: o mecanismo de ingresso foi criado para possibiltar o pré-cadastro de um funcionário, ou seja, antes da efetivação (exercício). Portanto, no Ingresso existe uma restrição para validação do quadro: o sistema não considera ocupada uma vaga de quadro se a data de exercício for igual a data de nomeação. Se isto ocorrer é recomendado registrar o vínculo e o provimento direto. Alterações na aparência do menu A escolha de um ou outro modo de operação implica no aparecimento/desaparecimento de transações do menu para adequar o menu ao modo de trabalho escolhido. O mecanismo implementado para o uso de eventos permite que o usuário opte entre dois modos de trabalho também. Esta opção é definida através do item EVENTOS, do grupo EVENTOS, e pode assumir dois valores : 'S' e 'N'. A escolha de um ou outro modo implica no aparecimento/desaparecimento de transações do menu para adequar o menu ao modo de trabalho escolhido.