Mudanças entre as edições de "Checklist Programação"
(Criou página com '==Checklist de Programação== Para manter um código padronizado e conciso,<br/> a Uniware preparou as tabelas a seguir, que <br/> auxiliam a garantir uma escrita comum entre ...') |
|||
(60 revisões intermediárias por 5 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | + | '''ATENÇÃO! ESTÁ PÁGINA FOI MIGRADA PARA A WIKI NOVA E NÃO VAI SER MAIS ATUALIZADA AQUI, PARA CONFERIR: http://wiki.uniware.net.br/pt-br/Desenvolvimento/checklist-programacao''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[Categoria:Desenvolvimento]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | === Tópico desatualizado === | ||
+ | === Transferido para o checklist da tarefa no Uniprojetos === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | | | + | |Tab order |
− | |- | + | |- |
− | | | + | |está salvando no banco o que é informado (inclusão e alteração)? |
− | |- | + | |- |
− | | | + | |Está funcionando inclusão/alteração/exclusão e consulta? |
− | |- | + | |- |
− | | | + | |maxlength correto para campos texto? |
− | |- | + | |- |
− | | | + | |Está obrigando o preenchimento dos campos corretos? |
− | |- | + | |- |
− | | | + | |O usuário tem direito de executar. (F5 e F6 de seeker e botões) |
− | |- | + | |- |
− | | | + | |campos novos estão na inclusão com cópia (se aplicável) |
− | |- | + | |- |
− | | | + | |código fonte está no padrão da empresa |
− | |- | + | |- |
− | | | + | |os campos e tabelas criados estão no padrão de nomenclatura da empresa |
+ | |- | ||
+ | |É necessário corrigir dados do cliente na atualização? | ||
+ | |- | ||
+ | |Incluir algum item no checklist para evitar o erro? | ||
+ | |- | ||
+ | |Fez JOIN? - Confere se todos os campos da PK compõe o join | ||
+ | |- | ||
+ | |Deixou de criar uma FK? - Tem que criar o índice, criou? | ||
+ | |- | ||
+ | |analisar o contexto onde ele está inserido e se outras partes do sistema podem estar com o mesmo bug. | ||
+ | |- | ||
+ | |Os forms que estão com Position=poDesktopCenter alterar para poMainFormCenter (se for tela cheia, poDesign) | ||
+ | |- | ||
+ | |Quando for gravar data/hora em um campo, avaliar se é o caso de usar Só data (date) só hora (time) ou data e hora (datetime) | ||
|} | |} | ||
− | + | ===Dependências/Impacto=== | |
− | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | | | + | |Group by||a coluna referenciada tem que constar como resultado da SQL. Senão o MySQL retorna resultados imprevisíveis. |
− | |- | + | |- |
− | | | + | |Quando usar uma das funções ao lado usar na ordem|| |
− | + | # - retistrastatus | |
− | + | # - StatusRPedido | |
− | + | # - MarcaPedidoParaEnvioINet | |
− | + | # - TransmissaoPedido ou AtualizaTransInfo | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | |Permitiu ao posto de coleta alterar campo da expr.||Na transmissão da expr do posto para a central tem que colocar um tratamento específico senão a informação não será transmitida. |
− | + | |- | |
− | + | |Novo campo na LBVPEDI || Criar o campo também na LBVPEDI_NAO_COLETADOS | |
− | |||
− | |||
− | |||
− | |||
− | |- | ||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|Criação de nova tabela || Verificar possíveis alterações em: | |Criação de nova tabela || Verificar possíveis alterações em: | ||
Linha 117: | Linha 63: | ||
*ufExcluaDadosFinanceiro | *ufExcluaDadosFinanceiro | ||
*ufPreparaMov | *ufPreparaMov | ||
− | *ufManutencao. | + | *ufManutencao.btRecalculaClick |
+ | *ufManutencao.btPrepBaseCopiadaClick | ||
*uTransmissao | *uTransmissao | ||
− | * | + | *UAuxGlobal(setTabelasComoTransmitidas - CTRANSTRAN) |
*uTraduzirExcecao | *uTraduzirExcecao | ||
*Dicionário de dados | *Dicionário de dados | ||
Linha 127: | Linha 74: | ||
CREATE TABLE LB_TESTE... | CREATE TABLE LB_TESTE... | ||
ALTER TABLE LB_TESTE | ALTER TABLE LB_TESTE | ||
− | ADD | + | ADD KEY FK_TESTE_CODI (CCODITESTE) |
ALTER TABLE LB_TESTE | ALTER TABLE LB_TESTE | ||
− | ADD CONSTRAINT FOREIGN KEY | + | ADD CONSTRAINT FK_TESTE_CODI FOREIGN KEY (CCODITESTE) |
− | + | REFERENCES LB_OUTRO (CCODIOUTRO) | |
+ | Caso a chave estrangeira for relacionada com a tabela de exames, verificar TFExamRename.Processar. | ||
|- | |- | ||
− | |Criar Campo na LB_EXAM ||*Na tabela ULIBMETA criar um registro com o nome e definição do campo. (TFExamRelHistAlter depende desta tabela pra funcionar) | + | |Criar Campo na LB_EXAM || Ao adicionar um novo campo na tabela: |
− | *Verificar se para amostra adicional é necessário copiar o valor do campo do pai para os | + | *Na tabela ULIBMETA criar um registro com o nome e definição do campo. (TFExamRelHistAlter depende desta tabela pra funcionar) |
− | filhos: CADAntesCommit e CCODIPAIEXAMValidar | + | *Verificar se para amostra adicional é necessário copiar o valor do campo do pai para os filhos: CADAntesCommit e CCODIPAIEXAMValidar |
*Ao Criar novos campos na LB_EXAM deve verificar as rotinas UFExamExporta e UFExamImporta para ver se o campo criado pode influenciar na rotina. | *Ao Criar novos campos na LB_EXAM deve verificar as rotinas UFExamExporta e UFExamImporta para ver se o campo criado pode influenciar na rotina. | ||
+ | *Verificar as rotinas de gravação do log de alteração do cadastro de exames (UFExamRelHistAlter) E seu respectivo relatório E se alteração implica na alteração da vigência do exame. | ||
+ | *verificar a necessidade de incluir o novo campo no relatório do manual de exames (UFExamRelListaPApoiado). | ||
+ | *Os campos devem ser replicados na função: VerificaAmostrasAdicionaisU2U. Esta função faz um insert no banco para incluir novas amostras adicionais, ou seja, insert na LB_EXAM. | ||
|- | |- | ||
|Criar campo no configurador na CFEX ||Incluir carga do conteúdo do campo nos relatórios de lista de exames - UFResuRelLista, UFResuRelListaPaci | |Criar campo no configurador na CFEX ||Incluir carga do conteúdo do campo nos relatórios de lista de exames - UFResuRelLista, UFResuRelListaPaci | ||
+ | |||
+ | Para qualquer novo campo do configurador, incluir UCfgTab.TTabTipo. E tratar erro na carga do conteúdo das variáveis. | ||
|- | |- | ||
|Alterar/Criar relatório de fatura || Refletir alterações na exportação da fatura p/ excel | |Alterar/Criar relatório de fatura || Refletir alterações na exportação da fatura p/ excel | ||
|- | |- | ||
|Criar nova Unit || Verificar se precisa incluir também nos projetos: Unilabw, Unilab_BETA, Unilaudos e unilabSRV | |Criar nova Unit || Verificar se precisa incluir também nos projetos: Unilabw, Unilab_BETA, Unilaudos e unilabSRV | ||
+ | |||
+ | Remover do delphi o autocreate que ele gera automaticamente para o form | ||
|- | |- | ||
|Incluir Campo no TISS || | |Incluir Campo no TISS || | ||
Linha 164: | Linha 119: | ||
*UFRecoleta | *UFRecoleta | ||
*UnilabExpr | *UnilabExpr | ||
+ | *UFTercLabCad | ||
|- | |- | ||
|Incluída tabela na transmissão || Constante: Versao_do_sistema_de_querypack - Incrementar quando tiver alteração nas funções queryPack e QueryUnPack | |Incluída tabela na transmissão || Constante: Versao_do_sistema_de_querypack - Incrementar quando tiver alteração nas funções queryPack e QueryUnPack | ||
− | |||
− | |||
Versão do executável: em Project > Options > Version Info: Incrementar em qualquer nova versão | Versão do executável: em Project > Options > Version Info: Incrementar em qualquer nova versão | ||
− | Versão do Unilab: A versão do Unilab | + | Versão do Unilab: A versão do Unilab do componente Sys da UFMain não é considerada pelo programa de transmissão. Mas a versão do executável é. Precisa recompilar o servidor de transmissão sempre que mudar a versão do Unilab. |
|- | |- | ||
|Update na expr ||Sempre que fizer um update na expr incrementar a ulibrela | |Update na expr ||Sempre que fizer um update na expr incrementar a ulibrela | ||
+ | |||
+ | |- | ||
+ | |Novo Interfaceamento com Apoio/Equipamento || | ||
+ | * Recalcula Numero de amostra ufManutencao | ||
+ | * cadastrar na tabela de recursos (UnilabWeb uw_recursos IDs 100 a 199). | ||
+ | * Na Unit UControleUniware.pas, deve ser adicionada na procedure PublicarInformaoes a linha correspondente ao novo laboratório (procurar por #TAG_LABO). | ||
+ | * Se a interface requer autorização implementar a geração da chave no ADM; na função Function InterfaceAutorizada() da Unit UFAutorizaInterface; | ||
+ | |||
+ | |- | ||
+ | |Campo chave tipo varchar||Sempre ativar a propriedade UsaTrim do TUEdit Quando puder informar o valor do campo na mão | ||
+ | |||
+ | |- | ||
+ | |Alertas || Sempre que fizer alguma modificação nos alertas dos exames: | ||
+ | *Eles podem ser informados no cadastro de exame e cadastro de tabela de preços (UFExamValo e UFTabeCad). | ||
+ | *Eles são exibidos no cadastro de pedidos e no orçamento. | ||
+ | |- | ||
+ | |Novo campo etiqueta|| | ||
+ | :Inclusão de campos no configurador de etiquetas: | ||
+ | *UFModEtiqCad (tela do novo configurador) - CarregaCampos: alterar constantes para listar campos disponíveis | ||
+ | *UAuxModEtiq - TranslateNomeCampo & TranslateExemplo - descrição do campo no configurador e exemplo no visual da etiqueta | ||
+ | *Para modelos etiq. carteirinha: | ||
+ | :*UFPaciEtiCart - PrintEtiquetas: Carrega os valores do banco ao imprimir a etiqueta | ||
+ | *Para demais modelos: | ||
+ | :*UEtiqPrint - EtiquetasLoad: Carrega os valores do banco ao imprimir a etiqueta | ||
+ | |||
+ | |- | ||
+ | |'''Atualização''' com interação do usuário|| | ||
+ | Quando for executar uma rotina na UFAtualiza que precisa de alguma informação de usuário, chamar o procedimento na função TFAtualiza.Atualiza: | ||
+ | assim a pergunta cai só no final da atualização. Assim agente pode 'deixar rodando' a atualização | ||
+ | |- | ||
+ | |Executar o '''UNILAB CONSULTA''' || | ||
+ | Project -> Options -> directories/Conditionals -> Conditionals: | ||
+ | incluir: xxxxxxxx " ;Ver_Print_Only " | ||
+ | |- | ||
+ | |Alterações na Estrutura do Banco de dados || Atualizar o dicionário de dados: D:\CVS\light\documentacao\Dicionário de Dados Unilab (v.2.0.2).mwb | ||
+ | |- | ||
+ | |Ao criar CPOSTOTRAN ou uma nova tabela com esse campo || Em UFPreparaMov tem uma função que marca esse campo com O, adicionar a tabela na lista também. | ||
+ | |- | ||
+ | |Criar serviço||Serviços deverão ter junto ao nome do serviço concatenado o nome da base gra service para ser instalado no datacenter teve que ser alterado de ultima hora pois ia ser instalado para o lida e ja estava para ourinhos | ||
+ | |- | ||
+ | |Incluir campo em tela Cad ou Sel|| No campo da query, atributo Título: | ||
+ | *Tela CAD: deve ter o mesmo label do campo | ||
+ | *Tela Sel: deve ter um descrição para o Filtra (se for um enumerado especificá-los, ex: Sexo do paciente [M]asculino, [F]eminino, [I]gnorado) | ||
+ | * Em tempo de execução se alterar a SQL não esquecer de setar o título também. | ||
+ | |- | ||
+ | |XML|| | ||
+ | * Não usar mais XMLParser, utilizar o comando obj := NewXML; | ||
+ | * Sempre utilizar CDATA nos nossos XMLS quando um campo pode receber um & ou < ou > | ||
+ | |- | ||
+ | |Criar recurso na biblioteca||As units usada ou criadas devem ser incluidas na biblioteca afim de evitar de a biblioteca não compilar e evitar de criar referências cíclicas entre pacotes. | ||
+ | |- | ||
+ | |Updates em mais do que uma tabela || Respeitar a mesma ordem das tabelas da transmissão. Afim de evitar Deadlock entre rotinas. | ||
+ | |- | ||
+ | |PosSeek||Toda vez q um procedimento usar DE.PosSeek, lembrar de PosSave/PosLoad (c/try) | ||
+ | |- | ||
+ | |TUnilabPedido|| Ao utilizar campos da classe TUnilabPedido, verificar no método TUnilabPedido.Carrega se o campo está sendo carregado (ImportaPedido Unilab x Unilab) | ||
+ | |- | ||
+ | |É versão de letra?||Fazer o merge para o trunk! | ||
+ | |- | ||
+ | |Revisão Final 1 - Hints e Warnings || Conferir os Hints e warnings gerados pelo Delphi e eliminá-los corrigindo os possíveis erros que eles podem estar indicando. | ||
+ | |- | ||
+ | |Revisão Final 2 - Teste de breakpoint || Olhar no diff e colocar um breakpoint em cada bloco alterado e rodar o programa debugando e conferindo o resultado da execução, se o programa fez o que era esperado. | ||
+ | |||
+ | Cada breakpoint que ele passar e fizer o que é esperado, tirar o breakpoint até que todos os breakpoints sejam removidos. | ||
+ | |||
+ | O objetivo é testar todas as possibilidades englobadas pela alteração. Caso a implementação seja grande demais tornando esta etapa do checklist muito demorada, vamos conversar com o Cláudio e decidir se queremos dedicar tanto tempo conferindo aquela alteração. | ||
+ | |||
+ | |- | ||
+ | |Compilar todos os projetos || Unilab_BETA, Unilabw, Unilaudos, UnilabSRV_BETA,UnilabSRV, Unilab Consulta. | ||
+ | |- | ||
+ | |Documentação do Ticket (UniSuite) || Não esquecer de colocar no Ticket a Analise, Notas de Teste e Notas da Versão (Copiar do Pivotal). | ||
+ | |- | ||
+ | |||
|} | |} |
Edição atual tal como às 09h30min de 17 de março de 2023
ATENÇÃO! ESTÁ PÁGINA FOI MIGRADA PARA A WIKI NOVA E NÃO VAI SER MAIS ATUALIZADA AQUI, PARA CONFERIR: http://wiki.uniware.net.br/pt-br/Desenvolvimento/checklist-programacao
Tópico desatualizado
Transferido para o checklist da tarefa no Uniprojetos
Tab order |
está salvando no banco o que é informado (inclusão e alteração)? |
Está funcionando inclusão/alteração/exclusão e consulta? |
maxlength correto para campos texto? |
Está obrigando o preenchimento dos campos corretos? |
O usuário tem direito de executar. (F5 e F6 de seeker e botões) |
campos novos estão na inclusão com cópia (se aplicável) |
código fonte está no padrão da empresa |
os campos e tabelas criados estão no padrão de nomenclatura da empresa |
É necessário corrigir dados do cliente na atualização? |
Incluir algum item no checklist para evitar o erro? |
Fez JOIN? - Confere se todos os campos da PK compõe o join |
Deixou de criar uma FK? - Tem que criar o índice, criou? |
analisar o contexto onde ele está inserido e se outras partes do sistema podem estar com o mesmo bug. |
Os forms que estão com Position=poDesktopCenter alterar para poMainFormCenter (se for tela cheia, poDesign) |
Quando for gravar data/hora em um campo, avaliar se é o caso de usar Só data (date) só hora (time) ou data e hora (datetime) |
Dependências/Impacto
Group by | a coluna referenciada tem que constar como resultado da SQL. Senão o MySQL retorna resultados imprevisíveis. |
Quando usar uma das funções ao lado usar na ordem |
|
Permitiu ao posto de coleta alterar campo da expr. | Na transmissão da expr do posto para a central tem que colocar um tratamento específico senão a informação não será transmitida. |
Novo campo na LBVPEDI | Criar o campo também na LBVPEDI_NAO_COLETADOS |
Criação de nova tabela | Verificar possíveis alterações em:
|
Criação de chave Estrangeira | Afim de evitar erros nos bancos MySQL hospedados em Linux, deve-se criar separadamente a tabela, a chave e a chave estrangeira. Exemplo:
CREATE TABLE LB_TESTE... ALTER TABLE LB_TESTE ADD KEY FK_TESTE_CODI (CCODITESTE) ALTER TABLE LB_TESTE ADD CONSTRAINT FK_TESTE_CODI FOREIGN KEY (CCODITESTE) REFERENCES LB_OUTRO (CCODIOUTRO) Caso a chave estrangeira for relacionada com a tabela de exames, verificar TFExamRename.Processar. |
Criar Campo na LB_EXAM | Ao adicionar um novo campo na tabela:
|
Criar campo no configurador na CFEX | Incluir carga do conteúdo do campo nos relatórios de lista de exames - UFResuRelLista, UFResuRelListaPaci
Para qualquer novo campo do configurador, incluir UCfgTab.TTabTipo. E tratar erro na carga do conteúdo das variáveis. |
Alterar/Criar relatório de fatura | Refletir alterações na exportação da fatura p/ excel |
Criar nova Unit | Verificar se precisa incluir também nos projetos: Unilabw, Unilab_BETA, Unilaudos e unilabSRV
Remover do delphi o autocreate que ele gera automaticamente para o form |
Incluir Campo no TISS |
|
Gravar datahora da coleta | Rotinas que gravam coleta:
|
Gravar datahora da triagem | Rotinas que gravam triagem:
|
Incluída tabela na transmissão | Constante: Versao_do_sistema_de_querypack - Incrementar quando tiver alteração nas funções queryPack e QueryUnPack
Versão do executável: em Project > Options > Version Info: Incrementar em qualquer nova versão Versão do Unilab: A versão do Unilab do componente Sys da UFMain não é considerada pelo programa de transmissão. Mas a versão do executável é. Precisa recompilar o servidor de transmissão sempre que mudar a versão do Unilab. |
Update na expr | Sempre que fizer um update na expr incrementar a ulibrela |
Novo Interfaceamento com Apoio/Equipamento |
|
Campo chave tipo varchar | Sempre ativar a propriedade UsaTrim do TUEdit Quando puder informar o valor do campo na mão |
Alertas | Sempre que fizer alguma modificação nos alertas dos exames:
|
Novo campo etiqueta |
|
Atualização com interação do usuário |
Quando for executar uma rotina na UFAtualiza que precisa de alguma informação de usuário, chamar o procedimento na função TFAtualiza.Atualiza: assim a pergunta cai só no final da atualização. Assim agente pode 'deixar rodando' a atualização |
Executar o UNILAB CONSULTA |
Project -> Options -> directories/Conditionals -> Conditionals: incluir: xxxxxxxx " ;Ver_Print_Only " |
Alterações na Estrutura do Banco de dados | Atualizar o dicionário de dados: D:\CVS\light\documentacao\Dicionário de Dados Unilab (v.2.0.2).mwb |
Ao criar CPOSTOTRAN ou uma nova tabela com esse campo | Em UFPreparaMov tem uma função que marca esse campo com O, adicionar a tabela na lista também. |
Criar serviço | Serviços deverão ter junto ao nome do serviço concatenado o nome da base gra service para ser instalado no datacenter teve que ser alterado de ultima hora pois ia ser instalado para o lida e ja estava para ourinhos |
Incluir campo em tela Cad ou Sel | No campo da query, atributo Título:
|
XML |
|
Criar recurso na biblioteca | As units usada ou criadas devem ser incluidas na biblioteca afim de evitar de a biblioteca não compilar e evitar de criar referências cíclicas entre pacotes. |
Updates em mais do que uma tabela | Respeitar a mesma ordem das tabelas da transmissão. Afim de evitar Deadlock entre rotinas. |
PosSeek | Toda vez q um procedimento usar DE.PosSeek, lembrar de PosSave/PosLoad (c/try) |
TUnilabPedido | Ao utilizar campos da classe TUnilabPedido, verificar no método TUnilabPedido.Carrega se o campo está sendo carregado (ImportaPedido Unilab x Unilab) |
É versão de letra? | Fazer o merge para o trunk! |
Revisão Final 1 - Hints e Warnings | Conferir os Hints e warnings gerados pelo Delphi e eliminá-los corrigindo os possíveis erros que eles podem estar indicando. |
Revisão Final 2 - Teste de breakpoint | Olhar no diff e colocar um breakpoint em cada bloco alterado e rodar o programa debugando e conferindo o resultado da execução, se o programa fez o que era esperado.
Cada breakpoint que ele passar e fizer o que é esperado, tirar o breakpoint até que todos os breakpoints sejam removidos. O objetivo é testar todas as possibilidades englobadas pela alteração. Caso a implementação seja grande demais tornando esta etapa do checklist muito demorada, vamos conversar com o Cláudio e decidir se queremos dedicar tanto tempo conferindo aquela alteração. |
Compilar todos os projetos | Unilab_BETA, Unilabw, Unilaudos, UnilabSRV_BETA,UnilabSRV, Unilab Consulta. |
Documentação do Ticket (UniSuite) | Não esquecer de colocar no Ticket a Analise, Notas de Teste e Notas da Versão (Copiar do Pivotal). |