Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
(Obrigatório)
Informações Gerais
Especificação | |||
Produto | Datasul | Módulo | Compras |
Segmento Executor | Manufatura | ||
Projeto1 | MANMAT01 | IRM1 | MANMAT01-1140 |
Requisito1 | MANMAT01-1144 | Subtarefa1 | MANMAT01-1423 |
País | (X) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. | ||
Outros | <Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
(Obrigatório)
Objetivo
Desenvolver as telas para gerenciamento de ordens de compra do módulo de compras em HTML.
Requisitos:
- Listar ordens de compra;
- Definir comprador para ordem de compra;
- Manutenir ordem de compra;
- Gerenciar o Split de ordens de ordens de compra;
- Consultar ordens de compra;
- Transferir ordens de compra (HCOR);
- Validar de inclusão de OC somente para itens que o comprador possui permissão (HCOR);
- Identificar ordens de compra rejeitadas pelo MLA (TUDPUW);
- Visualizar follow-up na consulta de ordem de compra (TUGAKZ);
- Identificar ordens de compra recebidas parcial e total (TUOSSK);
- Sugerir narrativa da ordem de compra com a narrativa do item (TUVKPU);
Requisitos que não serão atendidos:
- Opções na listagem de ordens que dizem respeito a cotações, pacotes e pedidos não serão inseridas neste momento (somente serão colocadas em tela quando os respectivos requisitos forem desenvolvidos);
- Validação de inclusão de itens que não são de responsabilidade do comprador no progress;
- Sugestão de narrativa da ordem conforme narrativa do item no progress;
- Sugestão de requisitante conforme usuário logado no progress;
- Assim como no Flex que não há tratamento para integração com a Paradigma, no HTML também não será desenvolvida neste momento.
(Obrigatório)
Definição da Regra de Negócio
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
html.cc0301 | Criação | Compras --> Tarefas --> Manter Ordens de compra | Listagem/manutenção de ordens de compra |
html.cc0505a | Criação | Compras --> Consultas --> Consultar Ordens de compra | Consulta de ordens de compra |
CD1700 | Alteração | Cadastros Gerais --> Cadastros --> Manutenção Usuário Materiais | Inclusão de parâmetro para validar inclusão de item em OC |
html.cc0505 | Alteração | Compras --> Consultas --> Consultar Ordem de Compra | Inclusão de consulta de follow-up, informações de ordem recebida parcialmente/total e rejeitada pelo MLA |
CC0104 | Alteração | Compras --> Cadastros --> Manutenção Parâmentros Compras | Inclusão de parâmetro para sugerir narrativa da ordem conforme o item e sugestão de requisitante |
Exemplo de Aplicação:
- Alguns navegadores deixarão de suportar plug-ins em breve, como é o caso do Flash Player, utilizado para execução das interfaces Flex. Com isso existe a necessidade de migrar as interfaces para uma tecnologia compatível com os navegadores.
Detalhamento das regras de negócio
A solução proposta consiste em desenvolver as telas propostas com o novo Framework HTML da TOTVS, com as mesmas funcionalidades existentes no Flex atualmente, assim como incluir alguns pequenos itens de melhoria sugeridos por clientes e citados nos requisitos.
1) Listagem de ordens de compra:
- Consiste na conversão da tela existente em Flex, de listagem de ordens de compra para a tecnologia HTML, considerando todas as funcionalidades existentes;
- A tela de ordens de compra em Flex apresenta somente as ordens que o comprador precisa gerenciar no processo de compra, sem mostrar por exemplo, ordem recebidas ou eliminadas, a nova interface em HTML irá que prever a apresentação e filtros de ordens em qualquer situação;
- No flex também é possível visualizar apenas as ordens de compra referente ao comprador logado no sistema, no HTML haverá opções de filtro para que tenha acesso a ordens de outros compradores também;
- Deverá ser respeitada a segurança por estabelecimento para apresentação das ordens;
- Deverá ser desenvolvida a tela para definição de comprador;
- Deverão ser previstas buscas para facilitar encontrar as ordens por narrativa e por narrativa do item;
- A tela de listagem que terá todas as opções para manutenir as ordens de compra será utilizada também para realizar a consulta de ordens, ou seja, deverá funcionar com a listagem/consulta de requisições (html.cd1406), com duas chamadas distintas para menu;
- Na nova listagem será possível identificar ordens de compra rejeitadas pelo MLA (ou seja, cotação rejeitada) e também se a ordem está recebida parcialmente ou totalmente. Essas opções não existiam no Flex.
O protótipo da tela é apresentado na sequência:
Sobre as funcionalidades e informações disponíveis na tela:
- As ordens serão categorizadas na tela, conforme sua situação (sendo apresentadas com cores diferenciadas), teremos as seguintes situações:
- Sem Cotação: a ordem está com situação de "Não confirmada", ou seja, ainda não possui nenhuma cotação cadastrada;
- Em Cotação: a ordem está com situação de "Em cotação", ou seja, já possui cotações cadastradas, porém ainda não foi aprovada nenhuma;
- Cotada: a ordem está com a situação de "Cotada", ou seja, já possui uma cotação que foi aprovada;
- Com Pedido: a ordem está com situação de "Confirmada", ou seja, está vinculada a um pedido de compra;
- Recebida Parcial: a ordem está com situação de "Confirmada", ou seja, está vinculada a algum pedido de compra que já teve algum recebimento, porém ainda não está totalmente recebido;
- Recebida Total: a ordem está com situação de "Recebida", ou seja, a ordem de compra está totalmente recebida;
- Eliminada: a ordem está com situação de "Eliminada", ou seja, a ordem de compra estava vinculada a um pedido de compra que já estava impresso e a ordem foi eliminada do mesmo.
- Sobre as informações apresentadas na listagem, elas serão as seguintes, sendo que variam conforme a situação da ordem:
- Número da ordem: será a informação principal, que possui um link de detalhe para a tela já existente de consulta de ordem (html.cc0505);
- Item (código e descrição);
- Estabelecimento;
- Prioridade: apresentada a prioridade de aprovação da ordem;
- Quantidade;
- Data de entrega: Caso a ordem possua apenas uma entrega, apresenta a data de entrega em questão, caso contrário deve apresentar "Parcelada";
- UM;
- Requisitante;
- Comprador;
- Pacote;
- Cotar até: Caso já tenha sido solicitado cotação para a ordem, apresenta a data que foi informada como limite para os fornecedores responderem. Este campo somente deve ser apresentada para as situações "Sem Cotação" e "Em Cotação";
- Pendente Aprovador: Indica que existe cotação pendente de aprovação para esta ordem. Este campo somente deve ser apresentada para a situação "Em Cotação";
- Rejeitada: Indica que a cotação da ordem foi rejeitada no processo de aprovação. Este campo somente deve ser apresentada para a situação "Em Cotação";
- Pedido: Este campo somente deve ser apresentada para as situações "Com Pedido" , "Recebida Parcial", "Recebida Total" e "Eliminada";
- Fornecedor (código e nome abreviado): Este campo somente deve ser apresentada para as situações "Cotada", "Com Pedido" , "Recebida Parcial", "Recebida Total" e "Eliminada";
- Contrato: Este campo somente deve ser apresentada para as situações "Com Pedido" , "Recebida Parcial", "Recebida Total" e "Eliminada";
- Informações apresentadas no "Exibir detalhes":
- Descrição complementar;
- Narrativa do Item;
- Quantidade recebida: Apresenta a quantidade total da ordem que já foi recebida. Este campo somente deve ser apresentada para as situações "Recebida Parcial", "Recebida Total";
- Comprador original: Apresentar somente se houver um comprador original para a ordem.
- O filtro deverá fazer a busca por:
- Ordem (igualdade);
- Item (igualdade);
- Descrição do Item (inicia com);
- A ordenação poderá ser feita por:
- Ordem (padrão da maior para menor);
- Data de emissão;
- Data de entrega (quando houver mais de uma considerar a data de entrega da mais antiga);
- Estab;
- Situação;
- Prioridade;
- Sobre as ações disponíveis na tela:
- Para cada registro de ordem, serão disponibilizadas as seguintes opções:
- Detalhar (através do link do número da ordem);
- Editar (somente para ordens com situação Sem Cotação e Em Cotação);
- Excluir (somente para ordens com situação Sem Cotação e Em Cotação);
- Copiar;
- Definir Comprador (somente para ordens que estiverem sem um comprador informado);
- Transferir (somente para ordens que já tiverem um comprador definido e situação Sem Cotação, Em Cotação ou Cotada);
- Follow-up;
- Na parte superior da tela estarão disponíveis as seguintes ações:
- Adicionar;
- Transferir (considera os registros que estiverem selecionados que estejam como Sem Cotação, Em Cotação ou Cotada);
- Definir comprador (considera os registros que estiverem selecionados que não possuem comprador definido);
- Para cada registro de ordem, serão disponibilizadas as seguintes opções:
- A tela deverá prever o contador de ordens para os filtros utilizados, assim como paginação de 50 em 50 registros;
- O filtro avançado deverá prever as seguintes opções:
- Situação da ordem:
- Sem Cotação (por padrão marcado);
- Em Cotação (por padrão marcado);
- Cotada (por padrão marcado);
- Com Pedido;
- Recebida Parcial;
- Recebida Total;
- Eliminada;
- Prioridade de aprovação (por padrão todas marcadas):
- Baixa;
- Média;
- Alta;
- Muito Alta;
- Situação da ordem:
- Pendente de aprovação (por padrão marcado);
- Aprovada (por padrão marcado) - parâmetro aplicado somente para ordens em "Em cotação";
- Rejeitada (por padrão marcado) - parâmetro aplicado somente para ordens em "Em cotação";
- Expectativa (por padrão marcado) - parâmetro aplicado somente para ordens em "Em cotação";
- Faixa de número de ordem;
- Faixa de data de emissão (por padrão apresenta o período de um mês)
- Faixa de data de entrega (Se alguma parcela da ordem estiver na faixa deve apresentar a ordem);
- Faixa de estabelecimento;
- Faixa de requisitante;
- Faixa de pacote;
- Faixa de contrato;
- Faixa de pedido;
- Faixa de nome abreviado do fornecedor;
- Descrição complementar da ordem (conteúdo deve ser buscado como "contém";
- Faixa de código de item;
- Faixa de descrição de item;
- Faixa de código complementar do item;
- Faixa de informação complementar do item;
- Narrativa do item (conteúdo deve ser buscado como "contém";
- Faixa de comprador;
- Apenas grupos de compra do comprador (Somente deverá ser habilitado em tela caso o sistema esteja configurado para trabalhar por grupo de compra);
- Faixa de grupo de compra (Somente deverá ser habilitado em tela caso o parâmetro acima esteja como não);
- Faixa de comprador original;
Protótipo da pesquisa avançada:
Caso a ordem de compra esteja sem um comprador definido (no caso de sido gerada para um grupo de compra) é possível definir o comprador através dessa interface.
Como será possível gerar ordens de compra para um comprador alternativo durante o processo de geração de ordens, deverá existir uma rotina para transferência de ordens de compra. Neste caso o usuário procura as ordens de compra a serem transferidas, as seleciona e utiliza a rotina de transferência.
Ao confirmar a transferência, deverá ser verificado se o usuário selecionou alguma ordem de compra que esteja em uma situação diferente de "Sem Cotação", "Em cotação", e "Cotada", ou que tenha o comprador igual ao comprador selecionado para transferência. Se confirmada essa situação, emitir um aviso: "Ordens de compra que estejam em situação diferente de Sem Cotação, Em Cotação, Cotada e que sejam do comprador xxxxxxx foram desconsideradas".
A transferência mudará o comprador das ordens selecionadas (que estejam definidas conforme regra acima), para o comprador informado em tela.
Caso a ordem de compra "transferida" não tenha o campo de comprador original preenchido, o mesmo deverá ser atualizado com o comprador antes da transferência.
Informações técnicas sobre a listagem de ordens:
- Para carregar as informações de tela, deverá ser criada uma nova API ccp/ccapi360.p, a exemplo da ccp/ccapi354.p criada para o programa html.mcc.cd1406;
- Em todas as temp-tables que for possível, acrescentar o "epc-value" para seja possível customizar.
- A tabela base para leitura das informações é a ordem-compra, e tabela de entregas é prazo-compra. Para carregar os dados de tela montar uma query dinâmica com DataSet.
Para a segurança por estabelecimentos, deve definir no início do programa o seguinte:
&scoped-define TTONLY YES
{include/i-estab-security.i}Dessa forma a leitura deverá ser feita (sempre considerando a tabela de estabelecimentos como tabela pai):
FOR EACH {&ESTAB-SEC-TT} NO-LOCK:
FOR EACH ordem-compra WHERE ordem-compra.cod-estabel = {&ESTAB-SEC-TT-FIELD} <demais condições> NO-LOCK:
(...)
END.
END.- Sobre as situações da ordem:
- Sem Cotação: ordem-compra.situacao = 1
- Em Cotação: ordem-compra.situacao = 5
- Cotada: ordem-compra.situacao = 3
- Com Pedido: ordem-compra.situacao = 2 se ordem-compra.qt-acum-receb = 0
- Recebida Parcial: ordem-compra.situacao = 2 e ordem-compra.qt-acum-receb > 0
- Recebida Total: ordem-compra.situacao = 6
- Eliminada: ordem-compra.situacao = 4
- Sobre as informações apresentadas na listagem:
- Número da ordem: ordem-compra.numero-ordem
- Item (código e descrição): ordem-compra.it-codigo e item.desc-item
- Estabelecimento: ordem-compra.cod-estabel
- Prioridade: prioridade-aprov (mostrar descrição - Verificar como é feito na fch/fchmat/fchmataddpurchaserequisitions.p)
- Quantidade: ordem-compra.qt-solic
- Data de entrega: Caso a ordem possua apenas uma entrega prazo-compra.data-entrega, apresenta a data de entrega em questão, caso contrário deve apresentar "Parcelada";
- UM: prazo-compra.un (da primeira entrega)
- Requisitante: ordem-compra.requisitante
- Comprador: ordem-compra.cod-comprado
- Pacote: ordem-compra.nr-processo
- Cotar até: ordem-compra.dat-fim-leilao-rfq e ordem-compra.hra-fim-leilao-rfq
- Pendente Aprovador: regras abaixo
- Rejeitada: regras abaixo
Os dois campos "Pendente Aprovador" e "Rejeitada" somente devem ser apresentados caso seja utilizada aprovação para cotação, ou seja (param-compra.log-1 = yes e param-aprov.aprovac-cotac = yes).
Neste caso utilizar a lap/mlaapi015.p (procedure pi-retorna-pendencia) para verificar o status da pendência.
FIND FIRST cotacao-item WHERE cotacao-item.numero-ordem = ordem-compra.numero-ordem AND (cotacao-item.cot-aprovada OR cotacao-item.log-1) NO-LOCK NO-ERROR.
FIND estabelec WHERE estabelec.cod-estabel = ordem-compra.cod-estabel NO-LOCK NO-ERROR.
IF AVAIL estabelec THEN
run cdp/cd9970.p (input ROWID(estabelec), output i-empresa).
create tt-mla-chave.
assign tt-mla-chave.valor[1] = string(cotacao-item.numero-ordem)
tt-mla-chave.valor[2] = string(cotacao-item.cod-emitente)
tt-mla-chave.valor[3] = cotacao-item.it-codigo
tt-mla-chave.valor[4] = string(cotacao-item.seq-cotac).
RUN pi-retorna-pendencia IN h-handle(INPUT 5, INPUT i-empresa,INPUT ordem-compra.cod-estabel, INPUT TABLE tt-mla-chave, INPUT NO, INPUT NO, OUTPUT TABLE tt-pendencias).
FIND FIRST tt-pendencias WHERE tt-pendencias.ind-situacao = 3 NO-LOCK NO-ERROR.
IF AVAIL tt-pendencias THEN DO:
<não pendente, rejeitada>
END.
ELSE DO:
FIND FIRST tt-pendencias WHERE tt-pendencias.ind-situacao = 1 NO-LOCK NO-ERROR.
IF AVAIL tt-pendencias THEN DO:
<Pendente, Não rejeitada>
END.
ELSE DO:
<Não pendente, Não rejeitada>
END.
END.
- Pedido: ordem-compra.num-pedido
- Fornecedor (código e nome abreviado): ordem-compra.cod-emitente e emitente.nome-abrev
- Contrato: ordem-compra.nr-contrato
- Informações apresentadas no "Exibir detalhes":
- Descrição complementar: ordem-compra.narrativa
- Narrativa do Item: item.narrativa
- Quantidade recebida: ordem-compra.qt-acum-receb
- Comprador original: ordem-compra.char-1 (posição inicial 195, 12 posições)
- O filtro avançado deverá prever as seguintes opções:
- Aprovada (por padrão marcado) - parâmetro aplicado somente para ordens em "Em cotação";
- Rejeitada (por padrão marcado) - parâmetro aplicado somente para ordens em "Em cotação";
- Expectativa (por padrão marcado): ordem-compra.expectativa;
- Faixa de contrato;
- Faixa de pedido;
- Faixa de nome abreviado do fornecedor;
- Descrição complementar da ordem (conteúdo deve ser buscado como "contém";
- Faixa de código de item;
- Faixa de descrição de item;
- Faixa de código complementar do item;
- Informação complementar do item:
- Apenas grupos de compra do comprador:
- Sistema configurado para trabalhar por grupo de compra: param-compra.int-2 = 1
Verificar se o comprador pertence ao grupo de compra da ordem:
FIRST gr-cmp-comprad WHERE gr-cmp-comprad.cod-comprado = <comprador> AND gr-cmp-comprad.cod-grp-compra = ordem-compra.cod-grp-compra
- Grupo de compra (cod-grp-compra);
Comprador original: ordem-compra.char-1 (posição inicial 195, 12 posições)
Incluir pontos de epc progress para listagem conforme as informações da tabela abaixo. Para a parte HTML, incluir os pontos necessários que manipular o preenchimento de campos existentes e também novos (exemplos em: http://tdn.totvs.com.br/pages/viewpage.action?pageId=185738044).
Nome do Evento | Onde deve ser colocado | Parâmetro | Valor do Parâmetro |
---|---|---|---|
afterLoadList | Após o preenchimento da lista | Handle_tt<nome tt> | Handle da temp-table <nome tt> |
- Ações:
- Transferir ordens:
- Criar uma procedure para transferência das ordens na ccp/ccap360.p;
- A API deverá receber uma lista de ordens (ordem-compra.numero-ordem), o comprador para qual serão transferidas as ordens e deverá retornar uma temp-table de erros (RowErrors);
- Verificar se o comprador destino existe, se não existir criar um erro na RowErrors e finalizar a execução;
- Para cada ordem de compra:
- Verificar se a ordem existe, se não existir criar um erro na RowErrors e continuar o processo;
- Se a ordem estiver com situação (situacao) como sem cotação (1), em cotação (5) ou cotada (3) e com o comprador (cod-comprador) diferente do comprador destino, efetuar a transferência:
- Se o comprador origem não estiver informado ordem-compra.char-1 (posição inicial 195, 12 posições) = "", atualizar o campo com o comprador atual da ordem (cod-comprado);
- Na sequência, atualizar o comprador (cod-comprado) com o comprador destino;
- Se alguma das ordens não tiver em situação que possa ser transferida, retornar a mensagem: Ordens de compra que estejam em situação diferente de Sem Cotação, Em Cotação, Cotada e que sejam do comprador xxxxxxx foram desconsideradas
- Definir comprador:
- Criar uma procedure para definição do comprador na ccp/ccap360.p;
- A API deverá receber uma lista de ordens (ordem-compra.numero-ordem), o comprador a ser definido e deverá retornar uma temp-table de erros (RowErrors);
- Verificar se o comprador destino existe, se não existir criar um erro na RowErrors e finalizar a execução;
- Para cada ordem de compra:
- Verificar se a ordem existe, se não existir criar um erro na RowErrors e continuar o processo;
- Se a ordem estiver comprador (cod-comprador) como branco, efetuar a definição:
- Se o comprador origem não estiver informado ordem-compra.char-1 (posição inicial 195, 12 posições) = "" preencher;
- Na sequência, atualizar o comprador (cod-comprado) com o comprador;
- Se alguma das ordens não tiver em situação que possa ser definido o comprador, retornar a mensagem: Ordens de compra que tenham comprador foram desconsideradas.
- Follow-up:
- Para o follow-up utilizar a mesma tela que já é chamada na requisição (html.mcc.cd1406), atentar apenas para os parâmetros a serem passados (no caso de dúvidas,verificar as documentações dos parâmetros na boin638.p);
- Para o follow-up utilizar a mesma tela que já é chamada na requisição (html.mcc.cd1406), atentar apenas para os parâmetros a serem passados (no caso de dúvidas,verificar as documentações dos parâmetros na boin638.p);
- Transferir ordens:
Manutenir ordem de compra:
- Deverá ser prevista a interface de inclusão de ordem de compra, com as mesmas funcionalidades existentes no Flex, ou seja, inclusão, alteração, habilitar/desabilitar campos, validações, integrações com outros módulos, split de ordens, parâmetros para configuração de parcelas, etc;
- Deverá ser gravado o usuário que incluiu a ordem de compra para se ter um maior controle;
A tela de inclusão/alteração de ordem de compra, deverá ser desenvolvida conforme o protótipo apresentado na sequência, ela conterá alguns agrupadores de informações que virão fechados inicialmente. O usuário poderá abrir um a um, ou todos de uma única vez através da opção "Expandir todos".
Sobre os campos em tela:
- Ordem;
- Situação (não editável);
- Origem (não editável);
- Expectativa (não editável);
- Item (deverá utilizar o zoom já existente);
- Quantidade;
- Unidade de Medida (deverá utilizar o zoom já existente);
- Entrega Única (Se informado, será gerada uma entrega única para a ordem com essa data. Se forem informadas entregas, a informação deste campo é desconsiderada);
- Estabelecimento (deverá utilizar o zoom já existente que utiliza segurança por estabelecimento);
- Depósito (deverá utilizar o zoom já existente no módulo de estoque);
- Natureza;
- ICMS;
- Responsáveis:
- Requisitante (deverá utilizar o zoom já existente);
- Comprador (deverá utilizar o zoom construído no requisito anterior - Requisições);
- Complementos:
- Estabelecimento Gestor (utilizar o zoom já existente);
- Imprime ficha Cotação;
- Ordem emitida;
- Prioridade de aprovação;
- Entregas (deverá ser desenvolvido como um componente isolado para ser utilizado no pedido de compra futuramente):
- Sequência;
- Data entrega;
- Quantidade;
- Referência;
- Pedido;
- Ato Concessório;
- Quantidade Total: Indica a quantidade total das entregas inseridas;
- Ações (As entregas são editadas/inclusas somente em tela, e são efetivas juntamente com a ordem de compra):
- Adicionar: Abre a tela para inclusão de uma nova entrega (tela detalhada na sequência);
- Configurar Regras: Abre a tela para configurar as opções de inclusão de ordem (tela detalhada na sequência);
- Editar: Abre a tela para alteração da entrega;
- Excluir: Permite a exclusão da ordem, após apresentação de mensagem de exclusão.
- Integrações:
- Ordem de investimento (utilizar o zoom já existente);
- Empresa: Apresenta a empresa da ordem de investimento selecionada
- Ordem de serviço (utilizar o zoom já existente);
- Operação: Será necessário construir um zoom, com os mesmos campos e filtros existentes no flex (ele deve filtrar por ordem de serviço caso tenha sido informado).
- Conta contábil (utilizar o zoom já existente);
- Centro de Custo (utilizar o zoom já existente);
- Tipo de Despesa: Criar um zoom, apresentando os campos: Código, descrição e tipo. Filtros pelos três campos.
- Contrato de compra: Criar um zoom de item de contrato, apresentando os campos: Contrato, Fornecedor (código e nome abreviado), Sequência do Item, Item (código e descrição), Tipo controle contrato e Ativo. Filtros: Contrato, código do item e código fornecedor)
- Sequência do item: Deverá apresentar a sequência do item de contrato selecionado no zoom.
- Pacote de compra: Criar um zoom, apresentando os campos: número, descrição, comprador, data de início. Deve possuir filtro por todos os campos.
- Descrição complementar;
- Unidades de negócio (deverá funcionar da mesma forma que na tela html.mcc.cd1406):
- Unidade de negócio;
- Percentual
- Total: Apresenta o percentual total das unidades de negócio cadastradas inclusas
- Ações:
- Adicionar: Permite a inclusão de uma unidade de negócio
- Eliminar: Elimina uma unidade de negócio
Protótipo da tela de inclusão/alteração de entrega:
Sobre os campos:
- Ordem (campo não editável)
- Quantidade da Ordem (campo não editável)
- Quantidade
- Data Entrega;
- Referência (deverá utilizar o zoom já existente);
- Cliente (deverá utilizar o zoom já existente);
- Pedido (deverá utilizar o zoom já existente);
- Sequência (deverá ser criado um zoom com as mesmas opções e informações existentes no flex);
Protótipo da tela dos parâmetros para inclusão de entregas:
O padrão de data inicial é a data atual e a data final é o máximo possível. Para os campos lógicos o inicial é não.
Protótipo da tela de questionamento de divisão de entrega entre fornecedores:
Essa tela é apresentada, após salvar a ordem de compra, caso deva ser executado o split entre da ordem entre fornecedores.
Por padrão os dois campos devem vir como Sim. No caso de o usuário desejar visualizar o split, deverá ser apresentada a tela da sequência.
Protótipo da tela de apresentação da divisão das entregas entre fornecedores, lembrando que neste caso o campo de quantidade é editável:
Novas regras para inclusão de ordem compra:
- Sugestão de narrativa da ordem de compra com a narrativa do item:
- Deverá ser incluso um parâmetro nos programa de parâmetros de compras CC0104 para se possa sugerir a narrativa da ordem de compra conforme a narrativa do item;
- Esse parâmetro deverá ser tratado na tela de inclusão de ordens;
- Validação de inclusão de OC somente para itens que o comprador possui permissão:
- Deverá ser criado um parâmetro no programa de usuário de materiais para indicar se o usuário pode ou não incluir ordens de compra para itens dos quais não é comprador;
- Esse controle deverá ser feito na inclusão de ordem;
- A validação deverá funcionar da seguinte forma:
- Caso o sistema esteja configurado para trabalhar por comprador:
- Caso o item não pertença ao comprador da ordem de compra, bloquear a inclusão.
- Caso o sistema esteja configurado para trabalhar por grupo de compra:
- Caso o comprador da ordem não pertença ao grupo de compra do item, bloquear a inclusão.
- Caso o sistema esteja configurado para trabalhar por comprador:
- Para inclusão do novo parâmetro a tela terá que ser re-organizada, conforme abaixo:
Antes:
Depois:
Informações técnicas sobre manutenir ordem de compra:
- Sobre os campos em tela da ordem de compra (ordem-compra):
- Ordem (numero-ordem);
- Situação (situacao - Utilizar o descritivo para apresentação);
- Origem (origem - Utilizar o descritivo para apresentação);
- Expectativa (expectativa);
- Item (it-codigo - Utilizar o zoom item.js (módulo men));
- Quantidade (qt-solic);
- Unidade de Medida (Somente em tela - Será repassado internamente para todas as entregas prazo-compra.un - Utilizar o zoom tab-unidade.js (módulo mcc));
- Entrega Única (Somente em tela - Será repassado internamente para prazo-compra.data-entrega, no caso de entrega única);
- Estabelecimento (cod-estabel - Utilizar o zoom estabelec.js (módulo mpd));
- Depósito (dep-almoxar - Utilizar o zoom deposito.js (módulo mce));
- Natureza (natureza - mostrar as opções disponíveis para o campo);
- ICMS (codigo-icm - mostrar as opções disponíveis para o campo);
- Responsáveis:
- Requisitante (requisitante - Utilizar o zoom requisitante.js (módulo mcc));
- Comprador (cod-comprado - Utilizar o zoom comprador.js (módulo mcc));
- Complementos:
- Estabelecimento Gestor (cod-estab-gestor - Utilizar o zoom estabelec.js (módulo mpd));
- Imprime ficha Cotação (impr-ficha);
- Ordem emitida (ordem-emitida);
- Prioridade de aprovação (prioridade-aprov - Apresentar as opções);
- Entregas (tabele prazo-compra):
- Sequência (parcela);
- Data entrega (data-entrega);
- Quantidade (quantidade);
- Referência (cod-refer);
- Pedido (pedido-clien);
- Ato Concessório (substring(prazo-compra.char-2,11,30));
- Quantidade Total: Somatório do campo quantidade de todas as entregas;
- Integrações:
- Ordem de investimento (num-ord-inv - Utilizar o zoom sub-div-ordem.js (módulo mcc));
- Empresa (ep-codigo)
- Ordem de serviço (ordem-servic - Utilizar o zoom ord-prod.js (módulo mcp));
- Operação (op-codigo - Zoom tabela oper-ord - Filtro pelo campo nr-ord-produ = ordem-servic)
- Conta contábil (ct-codigo - Utilizar o zoom cta-ctbl-integr.js (módulo utb));
- Centro de Custo (sc-codigo - ccusto.js (módulo utb));
- Tipo de Despesa: Criar um zoom (tabela tipo-rec-desp, apresentando os campos: Código (tp-codigo), descrição (descricao) e tipo (tipo - apresentar a descrição). Filtros pelos três campos.
- Contrato de compra: Criar um zoom de item de contrato (item-contrat), apresentando os campos: Contrato (nr-contrato), Fornecedor (cod-emitente e emitente.nome-abrev), Sequência do Item (num-seq-item), Item (it-codigo e item.descricao), Tipo controle contrato (ind-sit-item - mostrar descrição) e Ativo (item-contrat.log-libera).
- Sequência do item: num-seq-item
- Pacote de compra: Criar um zoom (tabela proc-compra), apresentando os campos: número (nr-processo), descrição (descricao), comprador (cod-comprado), data de início (dt-inicio). Deve possuir filtro por todos os campos.
- Descrição complementar (narrativa);
- Unidades de negócio (utilizar o mesmo componente da tela html.mcc.cd1406).
- Sobre os campos em tela da entregas (prazo-compra):
- Ordem (prazo.compra.numero-ordem)
- Quantidade da Ordem (ordem-compra.qt-solic)
- Quantidade (quantidade);
- Data Entrega (data-entrega) ;
- Referência (cod-refer - referencia.js (módulo mcc));
- Cliente (nome-abrev - cliente.js (módulo mpd));
- Pedido (ped-venda.js (módulo mpd));
- Sequência (Campo nr-sequencia - Criar o zoom da tabela ped-item - Filtro pelo campo nr-pedcli = pedido-clien)
- Ações:
- Incluir ordem:
- Para sugestão dos dados iniciais para inclusão da ordem deverá ser criada uma nova procedure que englobe a execução/retornos das seguintes rotinas:
- Procedure setDefaultsPurchaseRequisition da fch/fchmat/fchmataddpurchaserequisitions.p para sugerir os dados iniciais para a tela.
- Passar "CREATE" para o parâmetro "pType", deixar em branco o valor para o parâmetro "pFieldName".
- Para a ttPurchaseRequisition e ttGenericBusinessUnitOriginal neste caso passar apenas objetos "novos" e "vazios" (com valores padrões).
- ttPurchaseRequisitionDefault conterá os campos a serem apresentados em tela referente a ordem de compra.
- A ttEnableFields conterá os campos que possuem alguma regra para habilitar ou desabilitar em tela. Utilizar essa informação para habilitar ou não ou campos. Obs.: Verificar como foi feito para inclusão de requisição.
- A ttGenericBusinessUnit conterá as unidades de negócio a serem apresentadas em tela.
- O parâmetro "pVisibleBusinessUnit" indica se a unidade de negócio deve ou não ficar habilitada em tela.
- Procedure, "getIntegrationAccountCostCenterFilter" da fch/fchmat/fchmatintegrationaccountcostcenter.p para obter os "filtros" para conta/centro de custo. Na temp-table de entrada preencher o campo "site" com ttPurchaseRequisitionDefault.cod-estabel e o campo "module" com "CEP". Providenciar o retorno até a interface do HTML, pois essa informações serão necessárias para chamar o zoom de conta e centro de custo posteriormente.
- Procedure "enableCostCenter" da fch/fchmat/fchmatintegrationaccountcostcenter.p, com o retorno dessa procedure será necessário criar um registro na ttEnableFields com as seguintes informações:
ttEnableFields.tabela = "ordem-compra"
ttEnableFields.campo = "sc-codigo"
ttEnableFields.habilitado = <retorno da procedure acima>. - Procedure "getCostCenter" da fch/fchmat/fchmatintegrationaccountcostcenter.p passando ttPurchaseRequisitionDefault.cod-estabel e ttPurchaseRequisitionDefault.ct-codigo, o retorno deve ser atualizado em ttPurchaseRequisitionDefault.sc-codigo.
- Procedure setDefaultsPurchaseRequisition da fch/fchmat/fchmataddpurchaserequisitions.p para sugerir os dados iniciais para a tela.
- Novas regras de inclusão:
- Sugere narrativa do item na ordem:
- Parâmetro novo: param-compra.char-2 (posição inicial 138, 1 posição) - Gravar como Y/N
- A sugestão deve ser feita no leave do campo de item, ou seja, boin274sdfx (procedure leaveItCodigo), criar uma nova procedure "setComment" para colocar a nova regra de sugestão;
- Se o parâmetro novo estiver marcado setar o campo ordem-compra.narrativa com item.narrativa;
- Inclusão de OC somente para itens do comprador:
- Parâmetro novo: usuar-mater.char-1 (posição inicial: 22, 1 posição) - Gravar como Y/N
- As novas validações devem ser inseridas na boin274fx.p (validateRecord - na parte de "create");
- Para saber como fazer as validações, verificar como exemplo na ccapi100.p
- Parâmetro novo: usuar-mater.char-1 (posição inicial: 22, 1 posição) - Gravar como Y/N
- Gravar usuário logado na criação da ordem:
- Na boin274fx.p (beforeCreateRecord) gravar o usuário logado no campo ordem-compra.char-1 (posição inicial: 207 e final 218)
- Sugere narrativa do item na ordem:
- Para sugestão dos dados iniciais para inclusão da ordem deverá ser criada uma nova procedure que englobe a execução/retornos das seguintes rotinas:
- Leave de campos:
- No leave dos campos definidos abaixo deve-se executar o método "setDefaultsPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando a ação (criação, alteração), o campo que sofreu o leave, e as temp-tables atualizadas com os valores de tela. O retorno deverá atualizar os dados das temp-tables em tela novamente e também executar a lógica para habilitar/desabilitar campos. Os Campos que devem executar o leave:
- Item;
- Estabelecimento;
- Depósito;
- Natureza;
- Ordem de Investimento;
- Ordem de produção;
- Conta;
- Contrato;
- Obs.: A chamada do método não deverá ser realizada diretamente, deverá ter uma procedure para fazer essa chamada, pois após a chamada do "setDefaultsPurchaseRequisition" deverá ser chamada também o "enableCostCenter" da fch/fchmat/fchmatintegrationaccountcostcenter.p, com o mesmo tratamento feito para a criação. Se for uma criação, ou leave do campo de conta, executar também o "getCostCenter" da mesma forma que na criação para sugestão dos dados.
- Atentar que no leave do campo de quantidade, deverá ser refeito ao cálculos para percentual de quantidade apresentado nas entregas;
- No leave dos campos definidos abaixo deve-se executar o método "setDefaultsPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando a ação (criação, alteração), o campo que sofreu o leave, e as temp-tables atualizadas com os valores de tela. O retorno deverá atualizar os dados das temp-tables em tela novamente e também executar a lógica para habilitar/desabilitar campos. Os Campos que devem executar o leave:
- Alterar ordem:
- Na alteração da ordem deverá ser criada uma procedure para englobar as seguintes rotinas:
- Procedure "getPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p;
- Procedure, "getIntegrationAccountCostCenterFilter" da fch/fchmat/fchmatintegrationaccountcostcenter.p para obter os "filtros" para conta/centro de custo. Na temp-table de entrada preencher o campo "site" com ttPurchaseRequisitionDefault.cod-estabel e o campo "module" com "CEP". Providenciar o retorno até a interface do HTML, pois essa informações serão necessárias para chamar o zoom de conta e centro de custo posteriormente.
- Procedure "enableCostCenter" da fch/fchmat/fchmatintegrationaccountcostcenter.p, com o retorno dessa procedure será necessário criar um registro na ttEnableFields com as seguintes informações:
- ttEnableFields.tabela = "ordem-compra"
ttEnableFields.campo = "sc-codigo"
ttEnableFields.habilitado = <retorno da procedure acima>.
- ttEnableFields.tabela = "ordem-compra"
- Na alteração da ordem deverá ser criada uma procedure para englobar as seguintes rotinas:
- Copiar ordem:
- Na cópia da ordem deverá ser criada uma procedure para englobar as seguintes rotinas:
- Procedure "copyRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p;
- Procedure, "getIntegrationAccountCostCenterFilter" da fch/fchmat/fchmatintegrationaccountcostcenter.p para obter os "filtros" para conta/centro de custo. Na temp-table de entrada preencher o campo "site" com ttPurchaseRequisitionDefault.cod-estabel e o campo "module" com "CEP". Providenciar o retorno até a interface do HTML, pois essa informações serão necessárias para chamar o zoom de conta e centro de custo posteriormente.
- Procedure "enableCostCenter" da fch/fchmat/fchmatintegrationaccountcostcenter.p, com o retorno dessa procedure será necessário criar um registro na ttEnableFields com as seguintes informações:
ttEnableFields.tabela = "ordem-compra"
ttEnableFields.campo = "sc-codigo"
ttEnableFields.habilitado = <retorno da procedure acima>. - Procedure "getCostCenter" da fch/fchmat/fchmatintegrationaccountcostcenter.p passando ttPurchaseRequisitionDefault.cod-estabel e ttPurchaseRequisitionDefault.ct-codigo, o retorno deve ser atualizado em ttPurchaseRequisitionDefault.sc-codigo.
- Na cópia da ordem deverá ser criada uma procedure para englobar as seguintes rotinas:
- Salvar ordem de compra:
- Para salvar a ordem de compra, suas entregas e unidades de negócio, deve ser cria uma procedure para englobar as seguintes rotinas:
- Procedure "addPurchReqAndChildren" da fch/fchmat/fchmataddpurchaserequisitions.p:
- Caso não tenha sido informada nenhuma parcela (enviar o pcMode como "Simple", para que seja criada a parcela);
- Se forem informadas parcelas, enviar pcMode como "Advanced";
- Na ttParamConfigRules deve ser enviados os parâmetros da tela de configurações da parcela;
- Procedure "canExecuteSplitPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, que irá retornar se deve ou não ser apresentada a tela de questionamento de split.
- Procedure "addPurchReqAndChildren" da fch/fchmat/fchmataddpurchaserequisitions.p:
- Para salvar a ordem de compra, suas entregas e unidades de negócio, deve ser cria uma procedure para englobar as seguintes rotinas:
- Tela de pergunta split:
- Se o usuário "Cancelar": executar a procedure "prepareExecuteSplitPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando o número da ordem e NO (para não executar o split);
- Se confirmar a divisão e visualização:
- Abrir a tela de visualização de split de ordens;
- Se confirmar a divisão, mas não desejar visualizar:
- Executar a procedure "prepareExecuteSplitPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando o número da ordem e YES (para executar o split);
- Visualização de Split de ordens:
- Ao abrir a tela executar a procedure "prepareExecuteSplitPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando o número da ordem e YES (para executar o split);
- Se o usuário "Cancelar": executar a procedure "prepareExecuteSplitPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando o número da ordem e NO (para não executar o split);
- Se o usuário confirmar: Executar a procedure "executeSplitPurchaseRequisition" da fch/fchmat/fchmataddpurchaserequisitions.p, passando o número da ordem e YES (para executar o split) e a listagem de informações da tela;
- Eliminar ordem: Confirmar a eliminação. Utilizar a procedure deleteRequisitions da fch/fchmat/fchmatdetailpurchaserequisitions.p
- Incluir entrega:
- Executar a procedure "setDefaultsDeliverySchedule" da fch/fchmat/fchmataddpurchaserequisitions.p, passando o pType = "CREATE", pFieldName = "". Os demais parâmetros funcionam da mesma forma que na inclusão de ordem.
- A efetivação ocorre juntamente com a ordem de compra.
- Alterar entrega: Somente altera o objeto de tela (Será efetivado junto com a ordem)
- Eliminar entrega: Somente elimina o objeto de tela (Será efetivado junto com a ordem)
- Incluir ordem:
Pesquisar ordens de compra:
A tela de pesquisa de ordens de compra no Flex é uma interface separada da listagem, porém no HTML deverá ser aproveitada a mesma interface para as duas funcionalidades, da mesma forma como foi feito nas requisições.
Neste caso não é apresentada nenhuma opção referente a manutenção de ordens de compra, somente consulta e follow-up.
No menu serão dois programas separados, para que seja possível colocar permissões diferenciadas por programa.
Visualizar follow-up, ordem recebida total/parcial e ordem rejeitada na consulta de ordem de compra:
Na tela de consulta individual de ordem já existente, serão realizadas algumas alterações para melhoria da mesma:
- Inclusão do botão para abertura da tela de follow-up;
- Ao apresentar a situação da ordem de compra, deverá ser prevista a situação de Recebida parcial e Recebida total;
- Apresentar o comprador original (caso exista);
- Caso a ordem esteja como rejeitada no processo de aprovação, apresentar também.
Opcional
Protótipo de Tela
Apresentados juntamente com as regras de negócio.
Opcional
Fluxo do Processo
<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>.
Opcional
Dicionário de Dados
Reserva de campos livres:
- Sugere narrativa do item na ordem: param-compra.char-2 (posição inicial 138, 1 posição)
- Compra somente itens pré-definidos: usuar-mater.char-1 (posição inicial 22, 1 posição)
(Opcional)
Estrutura de Menu
<Informações utilizadas na linha Datasul>.
Procedimentos
Procedimento | html.cc0301 |
Descrição | Ordens de Compra |
Módulo | mcc |
Programa base | html.cc0301 |
Nome Menu | Ordens de Compra |
Interface | WEB |
Registro padrão | Sim |
Visualiza Menu | Sim |
Release de Liberação | 12.1.14 |
Programas
Programa | html.cc0301 | html.cc0505a |
Descrição | Ordens de Compra | Consulta de Ordens de Compra |
Nome Externo | dts/mcc/purchaseorderline | dts/mcc/purchaseorderline/search |
Nome Menu/Programa | Ordens de Compra | Consulta Ordens de Compra |
Nome Verbalizado[1] | Manter Ordens de Compra | Consultar Ordens de Compra |
Procedimento | html.cc0301 | html.cc0505 |
Template | Programa HTML | Programa HTML |
Tipo[2] | Tarefas | Consulta |
Interface | WEB | WEB |
Executa via RPC | Não | Não |
Registro padrão | Sim | Sim |
Outro Produto | Não | Não |
Visualiza Menu | Sim | Sim |
Query on-line | Não | Não |
Log Exec. | Não | Não |
[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.
[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante
[3] Categorias são obrigatórias para os programas FLEX.
[4] Obrigatório quando o projeto for FLEX
[5] Obrigatório quando o projeto for FLEX
[6] Obrigatório quando o projeto for FLEX
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|