====== [UC1691] Confirmar Pagamento Cartão de Crédito ====== **Projeto: GSAN ** ===== Histórico de Revisões ===== ^ **Data** ^ **Autor** ^ **Descrição** ^ **Proposta** ^ | 22/09/2015 | Denys Tavares | Criação do artefato. | | | @lightgreen:02/10/2015 | Denys Tavares | Verificar existencia do aviso bancário para o arrecadador e data informada. | | \\ ===== Introdução ===== Este documento especifica os casos de uso e requisitos não-funcionais (RNFs) do projeto intitulado //GSAN - Sistema Integrado de Gestão de Serviços de Saneamento - 8.1.1.4RD//, referente à etapa de especificação do Projeto de Software (//Software Design//) do GSDP - Processo de Desenvolvimento da Fábrica de Software da Consenso. O objetivo do documento é fornecer aos desenvolvedores e Stakeholders as informações necessárias para o projeto e implementação, assim como para a realização dos testes e homologação da aplicação. \\ ===== Convenções, termos e abreviações utilizados nesse artefato ===== A correta interpretação deste documento exige o conhecimento de algumas convenções, termos específicos e abreviações, que são descritos a seguir: a) Stakeholders - termo usado em diversas áreas como administração e arquitetura de software referente às partes interessadas que devem estar de acordo com as práticas de governança corporativa executadas pela empresa. b) RNF (Requisitos Não Funcionais) - são os requisitos relacionados ao uso da aplicação em termos de desempenho, usabilidade, confiabilidade, segurança, disponibilidade, manutenibilidade e tecnologias envolvidas. Em geral, requisitos não-funcionais podem constituir restrições aos requisitos funcionais e não é preciso o cliente dizer sobre eles, pois eles são características mínimas de um software de qualidade, ficando a cargo do desenvolvedor optar por atender esses requisitos ou não. c) Logado - Usuário deve ter informado suas credenciais (login e senha) para entrar no sistema GSAN de forma que o mesmo possa identificá-lo. d) Radio Button - É um elemento de seleção de única escolha. De uma lista só é possível selecionar um item. \\ ===== Atores ===== A tabela abaixo descreve brevemente cada ator da aplicação. | Ator | Descrição | | Usuário da Divisão de Arrecadação (complexo [[casos_de_uso:atores|(1)]]). | Usuários com acesso ao módulo Arrecadação do GSAN.| \\ ===== Casos de Uso ===== Essa seção apresenta todos os requisitos funcionais da aplicação, especificados como casos de uso. ==== Diagrama de Caso de Uso ==== skinparam usecase { BackgroundColor<< Main >> YellowGreen } ([UC1691] Confirmar Pagamento \nCartão de Crédito) << Main >> ([UC1691] Confirmar Pagamento \nCartão de Crédito) -up- ([UC0107] Registrar Transação) Usuário - ([UC1691] Confirmar Pagamento \nCartão de Crédito) | **Prioridade:** |X| Essencial | | Importante | | Desejável | | **Ator(es):** | Usuário da Divisão de Arrecadação (complexo [[casos_de_uso:atores|(1)]]). |||||| \\ **Descrição:** Funcionalidade que permite gerar pagamentos recebidos através de cartão de crédito. \\ **Pré-condições:** O usuário deverá estar logado e deverá acessar a funcionalidade //GSAN> Arrecadacao> Pagamento> Confirmar Pagamento Cartão de Crédito//. \\ **Pós-condições:** Aviso Bancário e pagamentos incluídos na base de dados do GSAN. \\ **Complexidade:** Médio [[casos_de_uso:regraapuc|(1)]]. \\ **Casos de uso relacionados:** \\ ===== Fluxo Principal: ===== - O usuário seleciona a opção Confirmar pagamento de cartão de crédito. - Informa a **Data do Vencimento** no formato DD/MM/AAAA (**obrigatório**) **[FS0001 - Validar Data do Vencimento]** - Seleciona o Arrecadador (**obrigatório**): - O sistema apresenta uma lista dos clientes arrecadadores para cartão de crédito (CLIE_NMCLIENTE da tabela CLIENTE para CLIE_ID=CLIE_ID da tabela ARRECADADOR com ARRC_ID=ARRC_ID da tabela ARRECADADOR_CONTRATO com ARCT_ID=ARCT_ID da tabela ARRECADADOR_CONTRATO_TAR para ARFM_ID correspondente a CARTÃO DE CRÉDITO). - Informa o Valor do Crédito **(obrigatório);** - Caso o usuário tecle no botão **Selecionar**: - Verificar existencia do aviso bancário **[IT0001 – Verificar existência de aviso bancário]**: - **Caso** o aviso já exista: - exibe dados do aviso: - Data do lançamento (AVBC_DTLANCAMENTO); - Valor informado (AVBC_VLARRECADACAOINFORMADO); - Valor calculado (AVBC_VLARRECADACAOCALCULADO); - Quantidade de guias pagas **[IT0002 – Obter quantidade de guias pagas]**; - O sistema deverá exibir mensagem: //Já existe aviso bancário para este Arrecadador/Data// e volta para o passo 1 do fluxo principal. - **Caso contrário** o sistema exibe uma lista das guias de pagamento do cliente arrecadador **[IT0003 – Obter guias de pagamento pendentes]**, **[FS0002 - Verificar existência de guias de pagamento]** com os seguintes dados: - NSU (PACC_NNIDENTIFICADORTRANSACAO da tabela COBRANCA_PARCEL_PAGTO_CARTAO_CRED para PARC_ID = PARC_ID da tabela GUIA_PAGAMENTO); - Data Parcelamento no formato DD/MM/AAAA (PARC_TMPARCELAMENTO da tabela COBRANCA_PARCELAMENTO para PARC_ID = PARC_ID da tabela GUIA_PAGAMENTO); - Valor do Débito (GPAG_VLDEBITO); - O sistema exibe também: - O **percentual de tarifa** cobrado pelo cliente arrecadador (ACTF_PCTARIFA da tabela ARRECADADOR_CONTRATO_TAR),caso exista; - O **valor da tarifa** cobrado pelo serviço (percentual da tarifa sobre o valor total das guias),caso exista; - O **valor total das guias**; - e a **diferença (**valor de crédito informado - (valor total das guias - valor da tarifa)**)**, caso exista. - **Caso contrário**, retorna ao passo inicial. - **Caso** o usuário clique no botão **Inserir pagamentos**: - **Caso** o valor total das guias seja diferente do valor de crédito informado o sistema deverá exibir mensagem solicitando confirmação: //Valor total das guias é diferente do valor informado. Confirma Inclusão?// - **Caso contrário,** solicita apenas confirmação: //Confirma Inclusão?// - **Caso** o usuário confirme: - **[SB0001 - Incluir Aviso Bancário], FS0003 - Verificar sucesso da transação];** - **Caso** o valor da tarifa seja diferente de zero, **[SB0003 - Incluir Devolução], [FS0003 - Verificar sucesso da transação];** - Para cada guia de pagamento da lista o sistema inclui um pagamento correspondente.**[SB0002 - Incluir Pagamentos], [FS0003 - Verificar sucesso da transação].** - Registra a transação de confirmação de pagamento de cartão de crédito: \\ **<> [[postgres:geral:inclui:uc0107|[UC0107 – Registrar Transação]]]**. \\ ===== Subfluxos: ===== ==== [SB0001] - Incluir Aviso Bancário ==== - **Inclui** o aviso bancário na tabela AVISO_BANCARIO com os seguintes valores: | AVBC_ID | Id gerado pelo sistema | | AVBC_DTLANCAMENTO | Data de vencimento informada | | AVBC_NNSEQUENCIAL | 1 | | AVBC_DTPREVISTA | Data de vencimento informada | | AVBC_DTREALIZADA | Data de vencimento informada | | AVBC_VLREALIZADO | Valor do Crédito informado | | AVBC_VLARRECADACAOINFORMADO | Valor do Crédito informado | | AVBC_VLDEVOLUCAOINFORMADO | Zero | | AVBC_VLARRECADACAOCALCULADO | Valor total das guias | | AVBC_VLDEVOLUCAOCALCULADO | (valor total das guias) - (valor da tarifa) | | AVBC_VLCONTABILIZADO | Zero | | AVBC_AMREFERENCIAARRECADACAO | Maior ano/mês entre o ano/mês da data de lançamento (AVBC_DTLANCAMENTO) e o ano/mês da arrecadação (PARM_AMREFERENCIAARRECADACAO da tabela SISTEMA_PARAMETROS) | | AVBC_ICCREDITODEBITO | 1 | | AVBC_NNDOCUMENTO | Zero | | ARRC_ID | ARRC_ID do cliente arrecadador selecionado | | CTBC_ID | CTBC_IDDEPOSITOARRECADACAO DA TABELA ARRECADADOR_CONTRATO PARA O ARRECADADOR INFORMADO E CONVENIO INFORMADO | | ARMV_ID | Nulo | | AVBC _TMULTIMAALTERACAO | CURRENT TIMESTAMP | | ARFM_ID | ARFM_ID da tabela ARRECADACAO_FORMA para ARFM_ID correspondente a CARTÃO DE CRÉDITO. | \\ ==== [SB0002] - Incluir pagamentos ==== | PGMT_ID | Id do pagamento gerado pelo sistema. | | PGMT_AMREFERENCIAPAGAMENTO | Nulo. | | PGMT_AMREFERENCIAARRECADACAO | **Caso** o ano/mês da data do pagamento seja maior que a PARM_AMREFERENCIAARRECADACAO da tabela SISTEMA_PARAMETROS atribuir ano/mês da data do pagamento, **caso contrário** atribuir o PARM_AMREFERENCIAARRECADACAO. | | PGMT_VLPAGAMENTO | GPAG_VLDEBITO | | PGMT_DTPAGAMENTO | GPAG_DTVENCIMENTO | | PGST_IDATUAL | Nulo. | | PGST_IDANTERIOR | Nulo. | | DBTP_ID | DBTP_ID da guia de pagamento | | CNTA_ID | Nulo. | | GPAG_ID | GPAG_ID | | DBAC_ID | Nulo. | | LOCA_ID | LOCA_ID da guia de pagamento | | DOTP_ID | Valor correspondente a GUIA DE PAGAMENTO da tabela DOCUMENTO_TIPO. | | AVBC_ID | AVBC_ID do Aviso Bancário incluído | | IMOV_ID | Nulo. | | AMIT_ID | Nulo. | | ARFM_ID | ARFM_ID do Aviso Bancário incluído | | PGMT_TMULTIMAALTERACAO | CURRENT TIMESTAMP | | CLIE_ID | CLIE_ID do cliente arrecadador | | PGMT_VLEXCEDENTE | Nulo. | | PGMT_ICEXPURGADO | Nulo. | | FATU_ID | Nulo. | | CBDO_ID | Nulo. | | DOTP_IDAGREGADOR | Valor correspondente a GUIA DE PAGAMENTO da tabela DOCUMENTO_TIPO. | | PGMT_TMPROCESSAMENTO | CURRENT TIMESTAMP | | PACD_ID | Nulo. | | PGMT_IDANTERIOR | Nulo. | \\ ==== [SB0003] - Incluir Devolução ==== - Inclui a guia de devolução referente ao **valor da tarifa,** na tabela GUIA_DEVOLUCAO com os seguintes valores: | GDEV_ID | Id da Guia de Devolução gerado pelo sistema | | LOCA_ID | LOCA_ID da guia de pagamento | | IMOV_ID | Nulo. | | CLIE_ID | ID do Cliente Arrecadador | | GDEV_AMREFERENCIACONTABIL | PARM_AMREFERENCIAARRECADACAO da tabela SISTEMA_PARAMETROS | | GDEV_AMREFERENCIAGUIADEVOLUCAO | Nulo | | GDEV_DTEMISSAO | Data corrente | | GDEV_DTVALIDADE | Data corrente | | GDEV_VLDEVOLUCAO | Valor da tarifa | | RGAT_ID | Nulo | | ORSE_ID | Nulo | | LICT_ID | LICT_ID da tabela CREDITO_TIPO com CRTP_ID com o valor correspondente a descontos concedidos | | DCST_IDATUAL | DCST_ID da tabela DEBITO_CREDITO_SITUACAO com o valor correspondente a Normal. | | DCST_IDANTERIOR | Nulo. | | CRTI_ID | CRTI_ID com o valor correspondente a descontos concedidos na tabela CREDITO_TIPO. | | DOTP_ID | Com o valor correspondente a **devolução de valor** da tabela DOCUMENTO_TIPO. | | CNTA_ID | Nulo | | GPAG_ID | Nulo | | DBAC_ID | Nulo | | DBTP_ID | Id do tipo de débito da tabela DEBITO_TIPO com o valor correspondente a outros | | GDEV_TMULTIMAALTERACAO | Data e hora correntes. | | FUNC_IDANALISTA | Nulo | | FUNC_IDAUTORIZADOR | Nulo | | USUR_ID | Id do usuário da sessão | * 2. O sistema inclui na tabela DEVOLUCAO a devolução referente à guia de devolução gerada com os seguintes valores: | DEVL_ID | Id da devolução gerado pelo sistema. | | DEVL_AMREFERENCIADEVOLUCAO | Nulo | | DEVL_AMREFERENCIAARRECADACAO | **Caso** o ano/mês da data da devolução seja maior que a PARM_AMREFERENCIAARRECADACAO da tabela SISTEMA_PARAMETROS atribuir ano/mês da data da devolução, **caso contrário** atribuir o PARM_AMREFERENCIAARRECADACAO. | | DEVL_VLDEVOLUCAO | Valor da Tarifa | | DEVL_DTDEVOLUCAO | Data do Vencimento informada | | DVST_IDATUAL | Nulo | | DVST_IDANTERIOR | Nulo | | AVBC_ID | ID do Aviso Bancário gerado | | GDEV_ID | Id da Guia de Devolução gerada | | LOCA_ID | LOCA_ID da guia de pagamento | | IMOV_ID | Nulo | | CLIE_ID | ID do Cliente Arrecadador | | DBTP_ID | Id do tipo de débito da tabela DEBITO_TIPO com o valor correspondente a outros | | DEVL_TMULTIMAALTERACAO | Data e hora correntes | | CRAR_ID | Nulo | | CBDO_ID | Nulo | | DOTP_IDAGREGADOR | Nulo | | PGMT_TMPROCESSAMENTO | Data e hora correntes | \\ ===== Fluxo Secundário: ===== ==== [FS0001] - Validar data do vencimento ==== - **Caso** a data do vencimento esteja inválida, exibir a mensagem: //Data do Vencimento inválida// e retornar para o passo correspondente no fluxo principal. - **Caso** a data do vencimento seja posterior à data corrente, exibir mensagem: //Data do Vencimento posterior à data corrente <>// e retornar para o passo correspondente no fluxo principal. \\ ==== [FS0002] - Verificar existência de guia de pagamento ==== **Caso** não exista nenhuma guia de pagamento para o filtro informado, exibir a mensagem: //O arrecadador <> não possui nenhuma guia de pagamento pendente para o filtro informado//, e retornar para o passo correspondente no fluxo principal. \\ ==== [FS0003] - Verificar sucesso da transação ==== **Caso** o código de retorno da operação efetuada no banco de dados seja diferente de zero, exibir a mensagem conforme o código de retorno e encerrar o caso de uso. \\ ==== [FS0004] – Verificar existência de aviso bancário ==== Verificar se existe AVISO_BANCARIO com **ARRC_ID =** (ARRC_ID da tabela ARRECADADOR_CONTRATO com ARCT_ID=ARCT_ID da tabela ARRECADADOR_CONTRATO_TAR para ARFM_ID correspondente a CARTÃO DE CRÉDITO) e **AVBC_DTLANCAMENTO** = data do vencimento informada e **ARFM_ID** da tabela ARRECADACAO_FORMA para ARFM_ID correspondente a CARTÃO DE CRÉDITO). \\ ===== Informações técnicas adicionais ===== ==== [IT0001] – Verificar existência de aviso bancário ==== Verificar se existe AVISO_BANCARIO com **ARRC_ID =** (ARRC_ID da tabela ARRECADADOR_CONTRATO com ARCT_ID=ARCT_ID da tabela ARRECADADOR_CONTRATO_TAR para ARFM_ID correspondente a CARTÃO DE CRÉDITO) e **AVBC_DTLANCAMENTO** = data do vencimento informada e **ARFM_ID** da tabela ARRECADACAO_FORMA para ARFM_ID correspondente a CARTÃO DE CRÉDITO). \\ ==== [IT0002] – Obter quantidade de guias pagas ==== A partir da tabela GUIA_PAGAMENTO_GERAL, caso a guia esteja na tabela GUIA_PAGAMENTO ou GUIA_PAGAMENTO_HISTORICO, com CLIE_ID=CLIE_ID do cliente selecionado e DCST_IDATUAL com o valor correspondente a //normal// da tabela DEBITO_CREDITO_SITUACAO, GPAG_DTVENCIMENTO = data de vencimento informada, GPAG_ID = GPAG_ID da tabela COBRANCA.PAG_CARTAO_CRED_ITEM) e exista pagamento (Na tabela PAGAMENTO ou PGAMENTO_HISTORICO) \\ ==== [IT0003] – Obter guias de pagamento pendentes ==== A partir da tabela GUIA_PAGAMENTO com CLIE_ID=CLIE_ID do cliente selecionado e DCST_IDATUAL com o valor correspondente a normal da tabela DEBITO_CREDITO_SITUACAO e GPAG_DTVENCIMENTO = data de vencimento informada e GPAG_ID = GPAG_ID da tabela COBRANCA.PAG_CARTAO_CRED_ITEM) sem pagamento ( GPAG_ID não existA na tabela PAGAMENTO) \\ ===== Tabelas relacionadas ===== ARRECADACAO.ARRECADADOR \\ ARRECADACAO.ARRECADADOR_CONTRATO \\ ARRECADACAO.ARRECADADOR_CONTRATO_TAR \\ ARRECADACAO.AVISO_BANCARIO \\ ARRECADACAO.PAGAMENTO \\ ARRECADACAO.PAGAMENTO_HISTORICO \\ ARRECADACAO.DEVOLUCAO \\ ARRECADACAO.GUIA_DEVOLUCAO \\ FATURAMENTO.GUIA_PAGAMENTO\\ CADASTRO.CLIENTE\\ COBRANCA.PAG_CARTAO_CRED_ITEM\\ \\ ===== Referências ===== Nesta seção, são apresentadas as referências utilizadas para a elaboração deste documento. **[[=ajuda:arrecadacao:confirmar_pagamento_cartao_de_credito|Confirmar Pagamento Cartão de Crédito]]** ==== Termos Principais ==== **[[=ajuda:arrecadacao|Arrecadação]]** **[[postgres:arrecadacao|<