Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Informações Gerais
Especificação | |||
Produto |
Datasul | Módulo |
Gestão de Planos de Saúde |
Segmento Executor |
Saúde | ||
Projeto |
D_SAU_GPS_Roadmap20152016 | IRM |
DGPS01-1 |
Requisito |
Subtarefa |
País | (x) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. |
Objetivo
Criação de um novo perfil de usuário para permitir a alteração de propostas e beneficiários incluídos pelo mesmo usuário.
Definição da Regra de Negócio
1) Criar um novo perfil de usuário que,
quanto à inclusão:
possa incluir propostas, mas não possa enviá-las para aprovação;
possa incluir beneficiários, desde que sejam em propostas incluídas por ele mesmo, mas não possa enviá-los para aprovação;
quanto à alteração:
possa modificar propostas, desde que estas tenham sido incluídas por ele mesmo.
possa modificar beneficiários, desde que estes sejam de propostas incluídas por ele mesmo.
Para isso, alterar os programas:
No programa src/main/flex/com/datasul/ems/healthcare/global/enumeration/RoleEnumeration.as adicionar uma nova constante que represente o novo perfil:
Bloco de código | ||
---|---|---|
| ||
// Constante que representa o papel Auxiliar de Cadastro.
public static const REGISTER_AUXILIAR : String = "RAU"; |
No programa src/main/flex/com/datasul/ems/healthcare/hvp/HVPAccessibilityRoles.as também adicionar constantes para o novo perfil criado:
Bloco de código | ||
---|---|---|
| ||
public static const BENEFICIARY_ROLES:Array = [
{data:RoleEnumeration.FILE_AUDITOR},
{data:RoleEnumeration.CONTRACTING_PARTY},
{data:RoleEnumeration.CONTRACT_ANALYST},
{data:RoleEnumeration.SALES_ASSISTANT},
{data:RoleEnumeration.REGISTER_ASSISTANT},
{data:RoleEnumeration.REGISTER_AUXILIAR}];
public static const CONTRACTING_PARTY_ROLES:Array = [
{data:RoleEnumeration.SALES_ASSISTANT},
{data:RoleEnumeration.REGISTER_ASSISTANT},
{data:RoleEnumeration.REGISTER_AUXILIAR}]; |
Em todos os programas que utilizarem a constante SALES_ASSISTANT, será necessário incluir uma igual validação para a nova constante criada. Estes programas são:
src/main/flex/com/datasul/ems/healthcare/hvp/createcontract/ui/ContractFilter.mxml
src/main/flex/com/datasul/ems/healthcare/hvp/contract/controller/ContractFilterController.as
src/main/flex/com/datasul/ems/healthcare/hvp/createcontract/zoom/ProposalZoomFilter.mxml
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/maintenance/controller/BeneficiaryInformationsController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/maintenance/controller/BeneficiaryMaintenanceController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/maintenance/controller/RepassDestinyController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/model/BeneficiaryCRUDModel.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/model/BeneficiaryHeadFilterModel.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/model/BeneficiaryModel.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/model/BeneficiaryWizardModel.as
src/main/flex/com/datasul/ems/healthcare/hvp/person/company2/handler/HandleCheckModifyPermission.as
src/main/flex/com/datasul/ems/healthcare/hvp/person/demographic2/handler/HandleCheckModifyPermission.as
No programa src/main/flex/com/datasul/ems/healthcare/hvp/contract/controller/ContractCRUDController.as, no método chamado ao clicar no botão enviar para liberação (auditButtonHandler()), testar se o usuário pertence ao novo perfil e não permitir enviar para liberação:
Bloco de código | ||
---|---|---|
| ||
public function auditButtonHandler() : void {
var message:UIMessage;
if (!checkSelectedProposal()){
message = new UIMessage("Atenção!",
"Nenhuma proposta selecionada para enviar para a liberação.",
UIMessage.WARNING);
} else {
if (RoleHelper.gotRole(RoleEnumeration.REGISTER_AUXILIAR)) {
message = new UIMessage("Atenção",
"Usuário não possui permissão para enviar esta proposta para liberação",
UIMessage.INFO);
}
else message = new UIMessage("Enviar para liberação",
"Você deseja mesmo enviar as propostas selecionadas para liberação?",
UIMessage.CONFIRM, "", "", sendProposalToLiberation);
}
MessageUtil.showMessage(message);
}
|
No método chamado ao clicar no botão alterar (modifyButtonHandler()), testar se o usuário pertence ao novo perfil e não permitir realizar a alteração do contrato:
Bloco de código | ||
---|---|---|
| ||
if (RoleHelper.gotRole(RoleEnumeration.REGISTER_AUXILIAR) && (this._model.selectedProposal.userName != UserManager.getInstance().user.loginName)) {
MessageUtil.showMessage(new UIMessage("Atenção","Usuário não possui permissão para alterar esta proposta",UIMessage.INFO));
return;
} |
No programa src\main\flex\com\datasul\ems\healthcare\hvp\contract\controller\ContractWizardController.as, método responsável por setar os dados na tela de sumário da proposta criada (setupProposalCreatedSummary()), alterar para que o botão de enviar para auditoria fique visível apenas para usuários que não possuam o novo papel:
Bloco de código | ||
---|---|---|
| ||
private function setupProposalCreatedSummary() : void {
this._model.proposalCreatedSummary.model.proposal = this._model.proposalDTO;
if(this._model.proposalCreatedSummary.hasEventListener(FlexEvent.CREATION_COMPLETE)){
this._model.proposalCreatedSummary.addEventListener(FlexEvent.CREATION_COMPLETE,initializeProposalCreatedSummary);
}
} |
Desta forma, criar o método:
Bloco de código | ||
---|---|---|
| ||
public function initializeProposalCreatedSummary(event:FlexEvent=null) : void{
this._model.proposalCreatedSummary.chkSendToAuditory.selected = false;
this._model.proposalCreatedSummary.chkSendToAuditory.visible = RoleHelper.gotRole(RoleEnumeration.REGISTER_AUXILIAR);
this._model.proposalCreatedSummary.chkSendToAuditory.includeInLayout = RoleHelper.gotRole(RoleEnumeration.REGISTER_AUXILIAR);
} |
No programa src/main/flex/com/datasul/ems/healthcare/hvp/contract/controller/updatemenu/ContractUpdateMenuController.as, método responsável por verificar se o botão de liberação da proposta deve estar habilitado (verifyEnabledLiberateProposal()), testar se o usuário logado pertence ao novo perfil, adicionando o código:
Bloco de código | ||
---|---|---|
| ||
if (!RoleHelper.gotRole(RoleEnumeration.REGISTER_AUXILIAR)){
return false;
} |
No programa src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryController.as, no método responsável por verificar a permissão de acesso à modificação de um determinado beneficiário (verifyRolePermissionForUpdate(crud : BenefsCRUDDTO )), verificar se o usuário logado pertence ao novo perfil. Em caso afirmativo, não permitir a alteração de beneficiários cuja inclusão tenha sido realizada por um usuário diferente do logado:
Bloco de código | ||
---|---|---|
| ||
private function verifyRolePermissionForUpdate(crud : BenefsCRUDDTO ) : Boolean {
if (crud.isSimulationBeneficiary) {
return true;
}
if(this._model.isRegisterAuxiliar && (this._model.proposal.typingUser != UserManager.getInstance().user.loginName)) {
this.message = new UIMessage("Atenção", "Usuário não possui permissão " +
"para alterar beneficiários", UIMessage.INFO);
MessageUtil.showMessage(this.message);
return false;
} |
No programa src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryCRUDController.as, no método responsável pela liberação do beneficiário (releaseBeneficiaryFromPendingPortlet()), verificar se o usuário logado pertence ao novo perfil. Em caso afirmativo, não permitir a liberação de beneficiários cuja inclusão tenha sido realizada por um usuário diferente do logado:
Bloco de código | ||
---|---|---|
| ||
private function releaseBeneficiaryFromPendingPortlet() : void {
var message : UIMessage;
// Caso não exista algum beneficiário selecionado, exibe erro e aborta o processo.
var beneficiary:BenefsCRUDDTO = this._view.dg.selectedItem as BenefsCRUDDTO;
if (beneficiary == null) {
message = new UIMessage("Atenção", "Selecione ao menos um beneficiário para ser liberado", UIMessage.INFO);
MessageUtil.showMessage(message);
return;
}
if(this._model.isRegisterAuxiliar && (this._model.proposal.typingUser != UserManager.getInstance().user.loginName)) {
message = new UIMessage("Atenção", "Usuário não possui permissão " +
"para liberar beneficiários", UIMessage.INFO);
MessageUtil.showMessage(message);
return;
} |
Nos programas abaixo, adicionar as validações do novo perfil. Sempre que houver uma validação para o perfil de SalesAssistant(SAS) o mesmo deve ser feito para o novo perfil, como por exemplo:
Bloco de código | ||
---|---|---|
| ||
Alterar:
if(!this._model.isSalesAssistant && !this._model.isSalesAuxiliar && !this._model.isRegisterAssistant && !this._model.isContractingParty)
Para:
if(!this._model.isSalesAssistant && (!this._model.isSalesAuxiliar || !this._model.isRegisterAuxiliar) && !this._model.isRegisterAssistant && !this._model.isContractingParty) |
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryCRUDController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryHeaderFilterController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryWizardController.as
src/main/flex/com/datasul/ems/healthcare/hvp/newbeneficiary/controller/BeneficiaryCRUDController.as
src/main/flex/com/datasul/ems/healthcare/hvp/person/company2/handler/HandleCheckModifyPermission.as
src/main/flex/com/datasul/ems/healthcare/hvp/person/demographic2/handler/HandleCheckModifyPermission.as
2) Na tela da Auditoria de Contratos, incluir o filtro abaixo:
Somente contratos pendentes de aprovação: Ao selecionar este filtro serão exibidos os contratos que ainda não sofreram/iniciaram auditoria por algum auditor.
Somente meus contratos: Ao selecionar esta opção, serão exibidos apenas os contratos cujo auditor responsável seja o usuário logado.
Todos: Ao selecionar esta opção, serão exibidos todos os contratos, ou seja, sem filtro.
Alterar os programas:
No programa src/main/flex/com/datasul/ems/healthcare/hvp/auditcontract/ui/AuditContractView.mxml, adicionar a tela os novos filtros:
Bloco de código | ||
---|---|---|
| ||
<mx:ApplicationControlBar height="30" top="10" left="10" right="10">
<mx:Label text="Propostas Pendentes de Auditoria ({this.model.proposalsInAuditoryLenght})"
fontWeight="bold" fontSize="12"/>
<mx:HBox paddingLeft="40" width="100%" horizontalGap="20">
<mx:RadioButtonGroup id="radioGroupFilter" change="this.controller.onChangeRadioGroupFilter(event)"/>
<mx:RadioButton id="rbAll" value="1" label="Todos" groupName="radioGroupFilter" selected="true"/>
<mx:RadioButton id="rbPendingApproval" value="2" label="Somente contratos pendentes de aprovação" groupName="radioGroupFilter"/>
<mx:RadioButton id="rbMyContracts" value="3" label="Somente meus contratos" groupName="radioGroupFilter"/>
</mx:HBox>
<mx:Spacer width="100%"/>
<mx:LinkButton icon="@Embed('/assets/icons/hot/refresh_16_hot.png')"
click="this.controller.getProposalsPendingOfAuditory()"
toolTip="Recarregar listagem"/>
</mx:ApplicationControlBar> |
Com esta alteração é necessário adicionar ao programa src/main/flex/com/datasul/ems/healthcare/hvp/auditcontract/model/AuditContractModel.as a variável proposalsInAuditoryLenght:
Bloco de código | ||
---|---|---|
| ||
Bindable
public var proposalsInAuditoryLenght : String = "000"; |
E no programa src/main/flex/com/datasul/ems/healthcare/hvp/auditcontract/ui/AuditContractController.as adicionar as tratativas do filtro:
Bloco de código | ||
---|---|---|
| ||
Função auditContractResultHandler: private function auditContractResultHandler(event : AuditContractResultEvent) : void { if(event.type == AuditContractResultEvent.GET_PROPOSALS_PENDING_AUDITORY) { this._model.proposalsInAuditoryList = event.resultCollection; this._model.proposalsInAuditoryList.filterFunction = this.filterProposalsInAuditory; this._model.proposalsInAuditoryList.refresh(); this.formatProposalsInAuditoryList(); Adicionar as novas funções: private function formatProposalsInAuditoryList() : void { if(this._model.proposalsInAuditoryList.length < 10){ this._model.proposalsInAuditoryLenght = '00' + String(this._model.proposalsInAuditoryList.length); return; } if(this._model.proposalsInAuditoryList.length >= 10 && this._model.proposalsInAuditoryList.length < 100){ this._model.proposalsInAuditoryLenght = '0' + String(this._model.proposalsInAuditoryList.length); return; } this._model.proposalsInAuditoryLenght = String(this._model.proposalsInAuditoryList.length); } public function onChangeRadioGroupFilter(e:Event = null) : void { this._model.proposalsInAuditoryList.refresh(); this.formatProposalsInAuditoryList(); } private function filterProposalsInAuditory(item:Object) : Boolean { if(item == null) { return false; } var proposalDTO:ProposalDTO = item as ProposalDTO; var filterValue : int = this._view.radioGroupFilter.selectedValue as int; switch (filterValue) { case 1: //Todos return true; case 2: //Pendente de Aprovacao if(proposalDTO.situationCode == ProposalStatusEnumeration.PENDING_APPROVAL){ return true; } return false; case 3: //Somente meus contratos if(UserManager.getInstance().user.loginName == proposalDTO.approverName){ return true; } return false; } return false; } |
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
[ |
contractView - Manutenção Contratos] | [Alteração] | [ |
VP - Venda de Planos -> |
Cadastros] | - |
[ |
beneficiaryView - Manutenção Beneficiário] | [ |
Alteração] | [ |
-
[ACAA060 – Cadastro de Pedidos]
[Criação]
VP - Venda de Planos -> Cadastros] | - |
Protótipo de Tela
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|