...
- Criar fonte exclusivo para a browser e demais botões da tela de importação da SIMPRO®, com o nome PLSSIMPRO.PRW.
- Utilizar neste fonte o conceito de herança do MVC, onde devemos herdar as características do fonte PLSBRASIN1 e realizar os devidos ajustes.
- Criar fonte exclusivo, com as funções de importação e gravação das tabelas da SIMPRO®, com o nome PLSSIMPROI.PRW.
- Pelo manual e layout, o sistema VideoFarma® permite que todos os itens – independente se é um medicamento ou material, sejam, exportados em arquivo único, permitindo sua diferenciação por uma classificação própria, no campo CD_MERC, onde:
- (20) Material Hospitalar
- (50) Medicamentos
- (70) Perfumaria
- (90) Reagentes
- (30) Saneantes
- Contudo, como necessitamos saber em qual TDE o item será importado - para quando houver codificação TUSS ou não – será necessário a configuração individual para cada item a ser importador. Ou seja, devemos ter um registro na B6G para cada tipo de material, medicamento, perfumaria, reagente ou saneante a ser importado.
- Deixar claro no Documento de Referência que não deve ser gerado arquivo único, mas um individual para cada item a ser importado. E se mesmo assim gerar um arquivo único, todos os itens serão importados para a tabela no qual ocorrer o match, sem diferenciar medicamento ou material pelo tipo de registro.
- Com relação os itens Perfumaria, Reagentes e Saneantes, esses itens deverão ser incluídos no combo do campo B6G_TIPPRO.
- O campo B6G_TIPARQ fica oculto na VIEW, ao visualizara tela de configuração. Assim:
- O campo agora deverá ficar visível na VIEW e no browse de configuração;
- Identificar de forma automática de qual menu foi a chamada, para colocar no campo B6G_TIPARQ o cadastro correspondente. Por exemplo, se a ação originou na tela da Brasíndice® (PLSBRASIN1), colocar no campo B6G_TIPARQ o valor 1=Brasíndice®. Se originou na SIMPRO® (PLSSIMPRO), colocar 2=SIMPRO®.
- Será necessário revisar o fonte de Configuração de Importação (PLSBRASIN2), pois temos regras específicas do Brasíndice®, que não consideram o campo B6G_TIPARQ para validar, como as funções AtuCmpVal (que deve considerar agora o campo B6G_TIPARQ para validar apenas Brasíndice®); a função ChkVlrDup (que possui query para evitar itens repetidos com o mesmo tipo de material e valor, onde deverá verificar o campo B6G_TIPARQ, não mais apenas 1=Brasíndice®).
- Validar na tela o que é pertinente a cada item:
- Se estou cadastrando um item Brasíndice®, não posso usar as opções Reagentes / Saneantes / Perfumaria (B6G_TIPPRO), bem como a opção Preço Usuário (B6G_TIPO);
- Se estou cadastrando SIMPRO®, não posso usar a opção Soluções.
- Demais regras que existem para a Brasíndice®, como para Soluções e Materiais usar apenas Preço de Fábrica devem ser mantidas para Brasíndice®.
- Solução: manipular o conteúdo do CBOX do campo B6G_TIPPRO, para exibir apenas as opções pertinentes para cada cadastro: Exemplo: cadastro no X3_CBOX as novas opções de Perfumaria / Saneantes / Reagentes, ficando 1=Materiais;2=Medicamentos;3=Soluções;4=Perfumaria;5=Saneantes;6=Reagentes;
- Na VIEW do PLSBRASIN2, manipular para exibir apenas as opções pertinentes para cada tipo de tabela, pelo atributo MVC_VIEW_COMBOBOX, onde podemos passar esse atributo, seguido de um array ou função. Nesse caso, passar uma função, que vai recuperar os valores do X3_CBOX do campo B6G_TIPPRO - GetSx3Cache("B6G_TIPPRO","X3_CBOX") e na função, tratar o retorno do campo de acordo com a tabela selecionada - SIMPRO® ou Brasíndice®.
- https://tdn.totvs.com/pages/releaseview.action?pageId=6815033 -> GetSx3Cache
- Com relação aos valores, a SIMPRO® permite exportar o Preço de Fábrica (PFB), o Preço Máximo ao Consumidor (PMC) e iremos incluir o Preço do Usuário (PUSU), no campo B6G_TIPO.
- O controle do campo deve ser efetuado igual ao do campo B6G_TIPPRO, para exibir de forma correta somente para a SIMPRO® a opção Preço do Usuário.
- Como na Brasíndice®, temos também a possibilidade de preço total ou fracionado, informado no campo B6G_TIPVAL. , que será idêntico na SIMPRO®. Na parte xxx, iremos detalhar melhor os itens do layout
- Demais regras e campos serão mantidos de forma igual.
- Ao acionar a opção de Configurar pela tela da Brasíndice® – PLSBRASIN1 – as configurações que deverão ser exibidas no Browse deverão ser apenas Brasíndice®. Se acionei a opção Configurar via tela SIMPRO® – PLSSIMPRO, no browse devem ser exibidos apenas os itens da SIMPRO®, usando o campo B6G_TIPARQ para este fim.
...
- O usuário pode deletar alguma importação realizada, bastando no browser do PLSSIMPRO posicionar no registro desejado e clicar no botão Excluir. Contudo, temos algumas regras a serem seguidas:
- Ao solicitar a exclusão do registro posicionado, devemos garantir se é o último importado, pela sequência do campo BD4_CHVIMP, que armazena o código da mensagem (atualização) da SIMPRO. Se tentar excluir qualquer um que não seja o último importado, o sistema deve proibir, de acordo com o tipo de produto e valor.
- Por exemplo, importei à atualização 3021 - Material - PFB e no outro mês, importei o 3121 - Material - PFB.
- Se tentar excluir o 3021 - Material - PFB, o sistema não deve deixar, pois existe atualização superior, que pode ter finalizado e criado novas BD4 com outros vigências. No nosso exemplo, só podemos excluir o 3121 - Material - PFB, pois é a última importação.
- Caso possa excluir, conforme regra acima, devemos:
- Deletar os registros BD4 relacionados a essa importação, pelo campo de relacionamento BD4_CHVIMP.
- Após deletar o BD4 relacionado, devemos reabrir a vigência do último BD4 disponível para o item, seguindo a cronologia do campo BD4_CHVIMP.
- Se existir registro BD4 anterior, o campo BD4_VIFGIM deve ser limpo, para ser utilizado no sistema;
- Se não existir nenhum BD4 anterior (imagine um item adicionado nessa versão excluída), a BA8 relacionada ao BD4 deve ser excluída, pois não pode existir um BA8 sem BD4;
- Se a BA8 foi excluída, devemos atualizar na BR8 - relacionada ao registro da BA8 - o campo BR8_BENUTL como Não, já que o item não existe mais na BA8.
- Ou seja, como visto acima, a exclusão deve ser em "cascata", obedecendo aos critérios definidos. Logo, se excluir uma BD4 e tiver outro registro BD4 para reabrir a vigência, apenas limpo a data final e o processo acabou por aí. Se não, tenho que deletar os demais envolvidos, que é a BA8 e BR8, para manter a consistência dos registros.
...
E) Detalhes Técnicos
...
- Utilizar MVC e herança, quando necessário;
- Utilizar para leitura de arquivos a classe FWFileReader();
- Utilizar para gravar arquivo de texto a classe FWFileWriter();
- Tratar as descrições e campos de textos, para evitar caracteres especiais e que possam atrapalhar a visualização no Portal ou arquivos de exportação (Monitoramento / PTUs / RPS e outros);
- Utilizar os índices disponíveis nas tabelas ou criar os necessários, para otimizar buscas e querys;
- Criar os fontes pensando nas automações necessárias, para evitar retrabalhos futuros;
- Como temos um layout de importação, pode-se criar um função, contendo o layout e posição dos campos, caso o desenvolvedor julgue necessário;
- Todas as ações de importação, arquivos e registros inválidos, devem ser registradas e exibidas no final do processamento, para conhecimento do usuário:
- Utilizar o FWDialogModal() com FwBrowse(), para exibir esses erros, ao invés de utilizar a função PLSCRIGEN.
- Verificar a possibilidade de realizar a gravação das tabelas usando classes MVC, levando em consideração o tempo de desenvolvimento vs ganho de performance obtido.
- Utilizar a importação da Brasíndice como modelo. Fontes PLSBRASIN1 / PLSBRASIN2 / PLSBRASINI.
- Documento de referência em Importação Brasíndice® - PLSBRASIN1.
- Padrão de arquivos para importação: TXT ou CSV. Os demais devem ser ignorados.
- Separador padrão dos arquivos CSV e TXT: ponto e vírgula (;). Nenhum outro deve ser aceito.
- Se basear em um dos itens, onde na primeira linha, podemos validar se o separador é ponto e vírgula e se não for, interromper a importação e partir para o próximo arquivo.
F) De/Para dos Layouts com o sistema
Expandir |
---|
title | Layout TXT - Clique para expandir |
---|
|
ARQUIVO NO FORMATO TXT | SEQ | Campo | Formato | Tamanho | Dec | Descrição | EQUIVALENTE IMPORTAÇÃO | 1 | - | Caractere | 15 | - | Código do Usuário | Não Aplicável | 2 | - | Caractere | 15 | - | Código de Fração | Não Aplicável | 3 | - | Caractere | 100 | - | Descrição do Produto | BA8_DESCRI / BR8_DESCRI / BTQ_DESTER / BTQ_DSCDET | 4 | - | Caractere | 08 | - | Data de Vigência (ddmmaaaa) | Não Aplicável | 5 | - | Caractere | 01 | - | Identificação: (F) Preço Fábrica (V) Preço Venda (L) Fora de Linha (A) Atualização Suspensa (D) Descontinuado | Não Aplicável | 6 | - | Numérico | 8 + 2 | - | Preço Fábrica Embalagem | Se PFB + Valor Total, utilizar esse campo - BD4_VALREF | 7 | - | Numérico | 8 + 2 | - | Preço Venda Embalagem | Se PMC + Valor Total, utilizar esse campo - BD4_VALREF | 8 | - | Numérico | 8 + 2 | - | Preço Usuário Embalagem | Se PUSU + Valor Total, utilizar esse campo - BD4_VALREF | 9 | - | Numérico | 8 + 3 | - | Preço Fábrica Fração | Se PFB + Valor Fracionado utilizar esse campo - BD4_VALREF | 10 | - | Numérico | 8 + 3 | - | Preço Venda Fração | Se PMC + Valor Fracionado utilizar esse campo - BD4_VALREF | 11 | - | Numérico | 8 + 3 | - | Preço Usuário Fração | Se PUSU + Valor Fracionado utilizar esse campo - BD4_VALREF | 12 | - | Caractere | 03 | - | Tipo de Embalagem | Nota 1 * | 13 | - | Caractere | 04 | - | Tipo de Fração | Nota 1 * | 14 | - | Numérico | 5 + 2 | - | Quantidade Embalagem | Nota 1 * | 15 | - | Numérico | 5 + 2 | - | Quantidade Fração Usuário | Não Aplicável | 16 | - | Numérico | 3 + 2 | - | % Lucratividade do Usuário | Não Aplicável | 17 | - | Caractere | 01 | - | Tipo de Alteração: (I)Inclusão (P)Preços (L)Fora de Linha (A)Alterações Gerais (S)Atualização Suspensa (D)Descontinuado | Aqui, serve para informar se o campo teve alguma alteração. Como vamos progredir com cada edição, talvez não seja necessário o uso desse campo - ANALISAR Podemos usar para indicar o fim de vigência (BD4_VIGFIM), quando o item estiver no status (D)Descontinuado ou (L)Fora de Linha, e usar o campo de Data Fim Vigência, do ParamBox de importação. | 18 | - | Caractere | 20 | - | Fabricante | BA8_NMFABR e: * Se arquivo Medicamento: BTQ_LABORA * Demais: BTQ_FABRIC | 19 | - | Caractere | 10 | - | Cód.SIMPRO/TISS | BA8_CODPRO / BD4_CODPRO / BR8_CODPSA / BTQ_CDTERM * Somente se não existir o código TUSS no registro | 20 | - | Caractere | 02 | - | Código do Mercado: (20)Material Hospitalar (50)Medicamentos (90)Reagentes (30)Saneantes | Não Aplicável | 21 |
| Numérico | 3 + 2 | - | % Percentual de Desconto | Não Aplicável | 22 | - | Numérico | 3 + 2 | - | % IPI do Produto | Não Aplicável | 23 | - | Caractere | 18 | - | Número do Registro ANVISA ou uma das seguintes informações: ISENTO NAO CONTROLADO NOTIFICACAO SI/NC | BA8_RGANVI | 24 | - | Caractere | 13 | - | Data de Validade do Registro ANVISA ou uma das seguintes informações: PENDENTE - SOB PROTOCOLO – EM BRANCO – VIGENTE | BD4_VIGFIM * Observar a ER, pois pode ser a data do arquivo (se data válida, não as informações escritas), se o checkbox estiver marcado ou a data informada no campo Data Fim Vigência no Parambox de Importação, quando o arquivo for (D)Descontinuado ou (L)Fora de Linha - Olhar a coluna SEQ, números 5 e 17. | 25 | - | Numérico | 13 | - | Número do Código de Barra | Não Aplicável | 26 | - | Caractere | 1 | - | Tipo de Lista ‘+’ – Positiva ‘-’ – Negativa ‘ ’ – Neutra ‘#’ – Não aplicável | Não Aplicável | 27 | - | Caractere | 1 | - | Indica se o medicamento é de uso exclusivamente hospitalar | Não Aplicável | 28 | - | Caractere | 1 | - | Indica se o produto é fracionado S – SIM N - NAO | Não Aplicável | 29 | - | Caractere | 8 |
| Código TUSS | BA8_CODPRO / BD4_CODPRO / BR8_CODPSA / BTQ_CDTERM | 30 | - | Caractere | 2 | - | Indica a classificação do produto ( )SEM CLASSIFICAÇÃO (BD) BEM DURAVEL (MC) MATERIAL DE CONSUMO (ME) MATERIAL ESPECIAL (OT) ORTESE (PT) PROTESE (ST) SINTESE ( IT ) INSTRUMENTAL | BA8_DSCLAS * Gravar no campo a descrição equivalente ao código, ou seja, se vazio - Sem Classificação; se PT - Prótese e etc | 31 | - | Caractere | 100 | - | Referência do Produto | BTQ_REFFAB | 32 | - | Caractere | 1 | - | Indica se o produto é genérico S – SIM N - NAO | Não Aplicável | 33 | - | Caractere | 1 | - | Indica se o medicamento ou material é classificado como Diversos S – SIM N - NAO | Não Aplicável |
| * NOTA 1 | *Nota 1 - Gravar nos campos BTQ_APRESE e BA8_DFORMA os valores apresentados na coluna SEQ, de 12 a 14, da seguinte forma: "Tipo Embalagem: " + SEQ 12 " - Unidade: " + SEQ 13 + " - Qtd. Embalagem: " + SEQ 14. Exemplo: 0000251307;0000251307;BOLSA COLO HARMONY DUO FECH.GRD./OPACA 13-50MM 2PCS;08122016;F;5310;000;000;0000;0000;0000;CX;UN;100;000;000;A;SANTE MEDICAL;0000251307;20;000;000;80475950003;VIGENTE;;#;N;N;78380030;MC;HDCL1350;N;N
Assim, pelo exemplo acima, devemos gravar nos campos BTQ_APRESE e BA8_DFORMA o texto: Tipo Embalagem: CX - Unidade: UN - Qtd. Embalagem: 1.00 |
|
Expandir |
---|
title | Layout CSV - Clique para expandir |
---|
|
| SEQ | Campo | Formato | Tamanho | Dec | Descrição | EQUIVALENTE IMPORTAÇÃO | 1 | - | Caractere | 15 | - | Código do Usuário | Não Aplicável | 2 | - | Caractere | 15 | - | Código de Fração | Não Aplicável | 3 | - | Caractere | 100 | - | Descrição do Produto | BA8_DESCRI / BR8_DESCRI / BTQ_DESTER / BTQ_DSCDET | 4 | - | Data | - | - | Data de Vigência(dd/mm/aaaa) | Não Aplicável | 5 | - | Caractere | 01 | - | Identificação: (F) Preço Fábrica (V)Preço Venda (L) Fora de Linha | (A) Atualização Suspensa (D) Descontinuado | Não Aplicável | 6 | - | Numérico | 11 | 2 | Preço Fábrica Embalagem | Se PFB + Valor Total, utilizar esse campo - BD4_VALREF | 7 | - | Numérico | 11 | 2 | Preço Venda Embalagem | Se PMC + Valor Total, utilizar esse campo - BD4_VALREF | 8 | - | Numérico | 11 | 2 | Preço Usuário Embalagem | Se PUSU + Valor Total, utilizar esse campo - BD4_VALREF | 9 | - | Numérico | 12 | 3 | Preço Fábrica Fração | Se PFB + Valor Fracionado utilizar esse campo - BD4_VALREF | 10 | - | Numérico | 12 | 3 | Preço Venda Fração | Se PMC + Valor Fracionado utilizar esse campo - BD4_VALREF | 11 | - | Numérico | 12 | 3 | Preço Usuário Fração | Se PUSU + Valor Fracionado utilizar esse campo - BD4_VALREF | 12 | - | Caractere | 03 | - | Tipo de Embalagem | Nota 1 * | 13 | - | Caractere | 04 | - | Tipo de Fração | Nota 1 * | 14 | - | Numérico | 08 | 2 | Quantidade Embalagem | Nota 1 * | 15 | - | Numérico | 08 | 2 | Quantidade Fração Usuário | Não Aplicável | 16 | - | Numérico | 06 | 2 | % Lucratividade do Usuário | Não Aplicável | 17 | - | Caractere | 01 | - | Tipo de Alteração: (I)Inclusão (P)Preços (L)Fora de Linha | (A)Alterações Gerais (S)Atualização Suspensa (D)Descontinuado | Aqui, serve para informar se o campo teve alguma alteração. Como vamos progredir com cada edição, talvez não seja necessário o uso desse campo - ANALISAR Podemos usar para indicar o fim de vigência (BD4_VIGFIM), quando o item estiver no status (D)Descontinuado ou (L)Fora de Linha, conforme ER e campo de Data Término do ParamBox de importação. | 18 | - | Caractere | 20 | - | Fabricante | BA8_NMFABR e: * Se arquivo Medicamento: BTQ_LABORA * Demais: BTQ_FABRIC | 19 | - | Caractere | 10 | - | Cód.SIMPRO/TISS | BA8_CODPRO / BD4_CODPRO / BR8_CODPSA / BTQ_CDTERM * Somente se não existir o código TUSS no registro | 20 | - | Caractere | 02 | - | Código do Mercado: (20)Material Hospitalar (50)Medicamentos (90)Reagentes (30)Saneantes | Não Aplicável | 21 | - | Numérico | 06 | 2 | % Percentual de Desconto | Não Aplicável | 22 | - | Numérico | 04 | 2 | % IPI do Produto | Não Aplicável | 23 | - | Caractere | 18 | - | Número do Registro Anvisa ou uma das seguintes informações: ISENTO NAO CONTROLADO NOTIFICACAO SI/NC | BA8_RGANVI | 24 | - | Caractere | 13 | - | Data de Validade do Registro Anvisa ou uma das seguintes informações: PENDENTE - SOB PROTOCOLO – EM BRANCO – VIGENTE | BD4_VIGFIM * Observar a ER, pois pode ser a data do arquivo (se data válida, não as informações escritas), se o checkbox estiver marcado ou a data informada no campo Data Fim Vigência no Parambox de Importação, quando o arquivo for (D)Descontinuado ou (L)Fora de Linha - Olhar a coluna SEQ, números 5 e 17. | 25 | - | Numérico | 13 | - | Número do Código de Barra | Não Aplicável | 26 | - | Caractere | 1 | - | Tipo de Lista ‘+’ – Positiva ‘-’ – Negativa ‘ ’ – Neutra ‘#’ – Não aplicável | Não Aplicável | 27 | - | Caractere | 1 | - | Indica se o medicamento é de uso exclusivamente hospitalar | Não Aplicável | 28 | - | Caractere | 1 | - | Indica se o produto é fracionado S – SIM N - NAO | Não Aplicável | 29 | - | Caractere | 8 |
| Código TUSS | BA8_CODPRO / BD4_CODPRO / BR8_CODPSA / BTQ_CDTERM | 30 | - | Caractere | 2 |
| Indica a classificação do produto ( )SEM CLASSIFICAÇÃO (BD) BEM DURAVEL (MC) MATERIAL DE CONSUMO (ME) MATERIAL ESPECIAL (OT) ORTESE (PT) PROTESE (ST) SINTESE (IT) INSTRUMENTAL | BA8_DSCLAS * Gravar no campo a descrição equivalente ao código, ou seja, se vazio - Sem Classificação; se PT - Prótese e etc | 31 | - | Caractere | 100 | - | Referência do Produto | BTQ_REFFAB | 32 | - | Caractere | 1 | - | Indica se o produto é genérico S – SIM N - NAO | Não Aplicável | 33 | - | Caractere | 1 | - | Indica se o medicamento ou material é classificado como Diversos S – SIM N - NAO | Não Aplicável |
| * NOTA 1 | *Nota 1 - Gravar nos campos BTQ_APRESE e BA8_DFORMA os valores apresentados na coluna SEQ, de 12 a 14, da seguinte forma: "Tipo Embalagem: " + SEQ 12 " - Unidade: " + SEQ 13 + " - Qtd. Embalagem: " + SEQ 14. Exemplo: 0000018483;0000018483;COMPRESSA GAZE NIDIA 11FIOS 7,5X7,5CM EST.ETO 5UNID.;08072015;F;270;000;000;0000;0000;0000;PCT;UN;500;000;000;A;CREMER;0000018483;20;000;000;80245210083;VIGENTE;7891800194651;#;N;N;78340454;MC;194.654;N;N
Assim, pelo exemplo acima, devemos gravar nos campos BTQ_APRESE e BA8_DFORMA o texto: Tipo Embalagem: PCT - Unidade: UN - Qtd. Embalagem: 5.00 |
|
03. Tela de Importação / Configuração SIMPRO® 03. Tela de Importação / Configuração SIMPRO®
Conforme indicado no item 2, tópico A, para a configuração da importação, vamos utilizar a tela existente - PLSBRASIN2 - com os devidos ajustes. No tocante a tela de browser das importações realizadas da SIMPRO®, bem como o botão Importar de demais funcionalidades, utilizar o conceito de herança da tela PLSBRASIN1, realizando os devidos ajustes para as necessidades aqui apontadas.
...
- Não será necessário criar nenhuma tabela nova, apenas modificar as existentes, para se adequar ao processo da SIMPRO®.
- As modificações necessárias já foram colocadas nos tópicos anteriores e podem surgir novas, de acordo com o andamento do desenvolvimento.
05. TABELAS UTILIZADAS
- BR8 - Tabela Padrão
- BA8 - Tabela Dinâmica de Eventos
- BD4 - Unidade de Saúde
- BTQ – Tabela de Terminologias
- B6F – Tabela de Histórico de Importações realizadas
- BF8 - Tabelas de Honorários
HTML |
---|
<!-- esconder o menu -->
<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
</style>
|