MRC001 — Pedidos de Pneu (enriquecimento)
Menu: Recapadora > Movimentações > Pedidos de Pneu
Objetivo
A tela MRC001 cadastra e gerencia pedidos de coleta de pneu para recapagem, vinculando cliente, condição/forma de pagamento, tipo de pedido, vendedor(es) e borracheiro(s), e os itens (pneus) com medida, modelo, desenho, serviço e valores. Ao confirmar o pedido, o sistema verifica crédito/bloqueio do cliente, cota de vendedores, parcela mínima e gera o pedido bloqueado ou liberado para produção/faturamento. A partir do pedido também é possível gerar um orçamento (MRC031) e reabrir um pedido cancelado.
Fluxo principal
- Acessar Recapadora > Movimentações > Pedidos de Pneu e clicar em Incluir na tela de consulta. (MRC001 - Consulta) —
source/MRC001/UframeConsulta.pas:531-561 (TframeConsulta.actionIncluirExecute) - Informar Tipo de Pedido e, se aplicável, o Vendedor principal do cabeçalho. (MRC001 - Cabeçalho) —
source/MRC001/UdmMRC001.pas:639-682 (TdmMRC001.qryPedidoPneuIDVENDEDORValidate) - Incluir os itens (pneus): série, modelo, medida, desenho, serviço, valor, desconto, DOT e Nº fogo. (MRC001 - Grid de Itens) —
source/MRC001/UframeMRC001.pas:1505-1508 (TframeMRC001.ActionIncluirItensExecute) - Associar vendedor(es)/borracheiro(s) a cada item, com percentual/valor de comissão calculado automaticamente. (MRC001 - Grid de Vendedores/Borracheiros) —
source/MRC001/UdmMRC001.pas:1502-1597 (TdmMRC001.qryBorracheiroIDBORRACHEIROValidate) - Opcionalmente, gerar um Orçamento (botão Orçamento) a partir do pedido, que abre a tela MRC031. (MRC001 - Cabeçalho) —
source/MRC001/UframeMRC001.pas:2064-2183 (TframeMRC001.btnORCAMENTOClick) - Na consulta, é possível Alterar, Cancelar ou Reabrir um pedido existente. (MRC001 - Consulta) —
source/MRC001/UframeConsulta.pas:770-833 (TframeConsulta.actionCancelarExecute)
Campos obrigatórios
| Campo | Condição | Mensagem | Fonte |
|---|---|---|---|
| Cliente (Pessoa) | sempre, ao entrar no grid de itens | Informe a Pessoa! | source/MRC001/UframeMRC001.pas:1605-1612 (TframeMRC001.gridCadastroEnter) |
| Condição de Pagamento | sempre, ao entrar no grid de itens | Informe a Condição de Pagamento! | source/MRC001/UframeMRC001.pas:1614-1618 (TframeMRC001.gridCadastroEnter) |
| Forma de Pagamento | sempre, ao entrar no grid de itens | Informe a Forma de Pagamento! | source/MRC001/UframeMRC001.pas:1620-1624 (TframeMRC001.gridCadastroEnter) |
| Tipo de Pedido | sempre, ao entrar no grid de itens e ao confirmar | Informe o tipo do Pedido! | source/MRC001/UframeMRC001.pas:1626-1630 (TframeMRC001.gridCadastroEnter) |
| Nº do Bloco | quando PARAMRECAP.ST_PEDIDOBLOCO <> 'N' | Informe o Nº do Bloco! | source/MRC001/UframeMRC001.pas:1632-1636 (TframeMRC001.gridCadastroEnter) |
| Endereço do cliente | sempre, ao gravar o cabeçalho do pedido | O Endereço é Obrigatório do Cliente! | source/MRC001/UdmMRC001.pas:1084-1090 (TdmMRC001.qryPedidoPneuBeforePost) |
| Data de Entrega | ao confirmar o pedido; se vazia, sistema pergunta se pode assumir amanhã | É Obrigatório informar a data de entrega. Verifique! | source/MRC001/UframeMRC001.pas:268-281 (TframeMRC001.actionOKExecute) |
| Ao menos um item (pneu) | sempre, ao confirmar o pedido | O pedido deve conter pelo menos um item! | source/MRC001/UframeMRC001.pas:244-249 (TframeMRC001.actionOKExecute) |
| Nº Fogo do pneu | quando PESSOA.ST_OBRIGAFOGOCOLETA='S' para o cliente do pedido | O Nº Fogo deve ser Informado. Verifique! | source/MRC001/UdmMRC001.pas:1030-1035 (TdmMRC001.qryItemPedidoPneuBeforePost) |
| Ano do Pneu (DOT) | quando PARAMRECAP.STOBRIGAANOPNEU='S' | O Ano do Pneu(DOT) deve ser Informado! | source/MRC001/UdmMRC001.pas:1017-1027 (TdmMRC001.qryItemPedidoPneuBeforePost) |
| Vendedor Principal | quando PARAMRECAP.ST_VALIDAVENDPRINCIPAL='S' | Nenhum Vendedor está marcado como Principal. Verifique! | source/MRC001/UframeMRC001.pas:308-353 (TframeMRC001.actionOKExecute) |
| Data de Vencimento | quando a condição de pagamento é do tipo 'D' (data fixa) | É obrigatório informar a Data de Vencimento para a Condição de Pagamento | source/MRC001/UdmMRC001.pas:1093-1099 (TdmMRC001.qryPedidoPneuBeforePost) |
Mensagens: causa e ação
E-0033
Causa: O código de pessoa informado (cliente, vendedor, endereço etc.) não existe cadastrado na base.
Ação: Cadastrar a pessoa em TFA001 ou corrigir o código informado.
Fonte: source/MRC001/UdmMRC001.pas:264-271 (TdmMRC001.qryPedidoPneuIDPESSOAValidate)
O Cliente está com o SCPC Bloqueado! Verifique[TFA001]!
Causa: A pessoa selecionada como cliente tem o campo PESSOA.ST_SCPC marcado como bloqueado.
Ação: Analisar/atualizar o bloqueio SCPC do cliente em TFA001 antes de prosseguir com o pedido.
Fonte: source/MRC001/UdmMRC001.pas:292-296 (TdmMRC001.qryPedidoPneuIDPESSOAValidate)
O Cliente deve ter um Endereço Cadastrado![TFA001]
Causa: A pessoa não possui nenhum registro em ENDERECOPESSOA.
Ação: Cadastrar um endereço para o cliente em TFA001.
Fonte: source/MRC001/UdmMRC001.pas:290-299 (TdmMRC001.qryPedidoPneuIDPESSOAValidate)
O Pedido Será Bloqueado Motivo: %s
Causa: A procedure VERIFICA_CREDITO retornou um motivo de bloqueio para o cliente/condição de pagamento (ex.: limite de crédito, inadimplência).
Ação: É apenas um aviso nesse momento; ao salvar, o pedido ficará com status Bloqueado e precisa ser liberado em MRC005/MRC040.
Fonte: source/MRC001/UdmMRC001.pas:408-424 (TdmMRC001.qryPedidoPneuIDPESSOAValidate)
%s Para Desbloquear. [MRC005]
Causa: O pedido foi gravado com bloqueio (status B) e o tipo de bloqueio retornado por VERIFICA_BLOQUEIO não é do tipo 'Coleta' (C) ou o parâmetro ST_SEPARABLOQUEIOPED='N'.
Ação: Acessar a tela MRC005 para liberar o pedido bloqueado.
Fonte: source/MRC001/UframeMRC001.pas:780-790 (TframeMRC001.actionOKExecute)
%s Para Desbloquear. [MRC005] / [MRC040]
Causa: O pedido foi bloqueado e o parâmetro PARMFATUR.ST_SEPARABLOQUEIOPED está configurado como 'S', separando o fluxo de liberação em duas telas.
Ação: Liberar o pedido em MRC005 e/ou MRC040 conforme o motivo apresentado.
Fonte: source/MRC001/UframeMRC001.pas:788-793 (TframeMRC001.actionOKExecute)
Este pneu já possui uma ordem de produção e não pode ser excluído do pedido!
Causa: O item já foi movimentado para uma ordem de produção de recapagem (ORDEMPRODUCAORECAP).
Ação: Cancelar a ordem de produção correspondente (MRC003) antes de excluir o item do pedido.
Fonte: source/MRC001/UframeMRC001.pas:1515-1542 (TframeMRC001.ActionExcluirItensExecute)
Não é possivel excluir este Pneu pois o mesmo já possui nota de entrada de carcaça. Verifique!
Causa: O item de pedido já está vinculado a uma nota de entrada de carcaça (IDPEDIDOENT preenchido).
Ação: Não é possível excluir; caso necessário, estornar a nota de entrada da carcaça primeiro.
Fonte: source/MRC001/UframeMRC001.pas:1515-1521 (TframeMRC001.ActionExcluirItensExecute)
Não é possivel excluir item com Orçamento em aberto. Verifique! [MRC031]
Causa: O item está referenciado em um orçamento (ORCAMENTOPNEU) com status Aberto ou Aprovado.
Ação: Cancelar ou reprovar o orçamento em MRC031 antes de excluir o item do pedido.
Fonte: source/MRC001/UdmMRC001.pas:2712-2723 (TdmMRC001.qryItemPedidoPneuBeforeDelete)
Nenhum Vendedor está marcado como Principal. Verifique!
Causa: PARAMRECAP.ST_VALIDAVENDPRINCIPAL='S' e nenhum vendedor foi definido como principal (no cabeçalho, ou no grid de borracheiros para nenhum item).
Ação: Preencher o campo Vendedor do cabeçalho ou marcar um borracheiro com tipo de vendedor principal (TFA064) em pelo menos um item.
Fonte: source/MRC001/UframeMRC001.pas:308-353 (TframeMRC001.actionOKExecute)
O Nº Fogo deve ser Informado. Verifique!
Causa: O cliente do pedido tem PESSOA.ST_OBRIGAFOGOCOLETA='S' e o item foi gravado sem o número de fogo.
Ação: Preencher o Nº Fogo do pneu antes de gravar o item.
Fonte: source/MRC001/UdmMRC001.pas:1030-1035 (TdmMRC001.qryItemPedidoPneuBeforePost)
O Ano do Pneu (DOT) Deve ter 4 Dígitos!
Causa: O campo DOT foi preenchido com um número de caracteres diferente de 4 (formato semana+ano).
Ação: Informar o DOT com exatamente 4 dígitos, conforme gravado no pneu.
Fonte: source/MRC001/UdmMRC001.pas:2343-2347 (TdmMRC001.qryItemPedidoPneuNRDOTValidate)
O DOT do Pneu é Superior e 364 semanas. Verifique!
Causa: Regra específica para bandeira Michelin (PARAMRECAP.TPBANDEIRA='M'): a idade do pneu calculada a partir do DOT excede 364 semanas na data de emissão do pedido.
Ação: Conferir o DOT informado; pneus mais antigos que 364 semanas não podem ser aceitos para essa bandeira.
Fonte: source/MRC001/UdmMRC001.pas:2364-2379 (TdmMRC001.qryItemPedidoPneuNRDOTValidate)
Não é possivel informar um valor de comissão para um serviço com valor zero. Verifique!
Causa: O item de pedido tem valor líquido (VLUNITARIO - VLDESCONTO) igual ou menor que zero, mas foi informado um valor de comissão.
Ação: Zerar a comissão ou revisar o valor do serviço/desconto do item antes de informar comissão.
Fonte: source/MRC001/UdmMRC001.pas:2054-2072 (TdmMRC001.qryBorracheiroVL_COMISSAOValidate)
O pedido não pode mais ser alterado. Existem dados que foram movimentados em outras Telas.
Causa: O status do pedido (STPEDIDO) deixou de ser 'N' ou 'P' porque outra tela (ex.: ordem de produção, garantia) já movimentou o pedido.
Ação: Cancelar a tela com F12 e reabrir o pedido para carregar o status atualizado.
Fonte: source/MRC001/UframeMRC001.pas:283-296 (TframeMRC001.actionOKExecute)
O pedido (%s) possui uma Ordem de Produção válida e não pode ser cancelado!
Causa: Existe ao menos um item do pedido com ordem de produção de recapagem em status diferente de cancelada.
Ação: Cancelar a ordem de produção em MRC003 antes de cancelar o pedido.
Fonte: source/MRC001/UframeConsulta.pas:786-814 (TframeConsulta.actionCancelarExecute)
O pedido (%s) possui um Laudo com Financeiro válido e não pode ser cancelado. Verifique! [MRC004]
Causa: Existe laudo técnico de garantia com lançamento financeiro (CONTAS) não cancelado vinculado a um item do pedido.
Ação: Cancelar o lançamento financeiro do laudo em MRC004 antes de cancelar o pedido.
Fonte: source/MRC001/UframeConsulta.pas:791-816 (TframeConsulta.actionCancelarExecute)
Não há registro selecionado para alteração!
Causa: O usuário clicou em Alterar sem nenhum pedido selecionado na grade de consulta (ibQuery vazio).
Ação: Selecionar um pedido na lista de consulta antes de clicar em Alterar.
Fonte: source/MRC001/UframeConsulta.pas:564-630 (TframeConsulta.actionAlterarExecute)
A pesquisa não retornou dados!
Causa: O filtro aplicado na consulta de pedidos não encontrou nenhum registro.
Ação: Revisar os filtros (cliente, vendedor, datas, status) e pesquisar novamente.
Fonte: source/MRC001/UframeConsulta.pas:663-671 (TframeConsulta.actionConsultaExecute)
Regras de negócio
MRC001.R001(verregras/MRC001/MRC001.R001.md)MRC001.R002(verregras/MRC001/MRC001.R002.md)MRC001.R003(verregras/MRC001/MRC001.R003.md)MRC001.R004(verregras/MRC001/MRC001.R004.md)MRC001.R005(verregras/MRC001/MRC001.R005.md)MRC001.R006(verregras/MRC001/MRC001.R006.md)MRC001.R007(verregras/MRC001/MRC001.R007.md)MRC001.R008(verregras/MRC001/MRC001.R008.md)MRC001.R009(verregras/MRC001/MRC001.R009.md)MRC001.R010(verregras/MRC001/MRC001.R010.md)MRC001.R011(verregras/MRC001/MRC001.R011.md)MRC001.R012(verregras/MRC001/MRC001.R012.md)MRC001.R013(verregras/MRC001/MRC001.R013.md)MRC001.R014(verregras/MRC001/MRC001.R014.md)MRC001.R015(verregras/MRC001/MRC001.R015.md)MRC001.R016(verregras/MRC001/MRC001.R016.md)MRC001.R017(verregras/MRC001/MRC001.R017.md)MRC001.R018(verregras/MRC001/MRC001.R018.md)MRC001.R019(verregras/MRC001/MRC001.R019.md)MRC001.R020(verregras/MRC001/MRC001.R020.md)
Perguntas frequentes
P: Por que aparece a mensagem 'O Cliente está com o SCPC Bloqueado'?
R: Porque o cadastro do cliente (PESSOA.ST_SCPC) está marcado como bloqueado; é necessário regularizar em TFA001.
Fonte: source/MRC001/UdmMRC001.pas:292-296 (TdmMRC001.qryPedidoPneuIDPESSOAValidate)
P: Por que não consigo excluir um pneu do pedido?
R: O item pode já ter ordem de produção, nota de entrada de carcaça faturada, ou estar vinculado a um orçamento em aberto/aprovado; nesses casos a exclusão é bloqueada.
Fonte: source/MRC001/UframeMRC001.pas:1515-1542 (TframeMRC001.ActionExcluirItensExecute)
P: Por que o sistema exige um vendedor principal?
R: Porque o parâmetro PARAMRECAP.ST_VALIDAVENDPRINCIPAL está ligado ('S'); é preciso marcar um vendedor/borracheiro com tipo parametrizado como principal (TFA064).
Fonte: source/MRC001/UframeMRC001.pas:308-353 (TframeMRC001.actionOKExecute)
P: Por que não consigo alterar mais um pedido que já estava aberto?
R: Porque o status do pedido mudou (ex.: já entrou em produção) por movimentação em outra tela; é preciso cancelar (F12) e reabrir o pedido para atualizar as informações.
Fonte: source/MRC001/UframeMRC001.pas:283-296 (TframeMRC001.actionOKExecute)
P: Por que o pedido ficou com status Bloqueado (B) depois de salvar?
R: A procedure VERIFICA_BLOQUEIO identificou um motivo de bloqueio (crédito, liberação de coleta, etc.); o pedido precisa ser liberado nas telas MRC005 e/ou MRC040.
Fonte: source/MRC001/UframeMRC001.pas:756-793 (TframeMRC001.actionOKExecute)
P: Por que não consigo cancelar um pedido?
R: Existe ordem de produção válida ou laudo com lançamento financeiro válido vinculado ao pedido; é preciso cancelar essas movimentações antes (MRC003/MRC004).
Fonte: source/MRC001/UframeConsulta.pas:786-817 (TframeConsulta.actionCancelarExecute)
P: Por que apareceu 'não há Parâmetros de Tabela de Preço' para o serviço?
R: Não existe tabela de preço vinculada ao serviço/cliente (TFA006/MFA006); dependendo do parâmetro PARAMRECAP.STVALITEMTABPRECO, o sistema bloqueia ('S') ou apenas avisa e usa a tabela padrão ('A').
Fonte: source/MRC001/UdmMRC001.pas:839-870 (TdmMRC001.qryItemPedidoPneuIDSERVICOPNEUValidate)
P: Por que o DOT informado é rejeitado?
R: O DOT deve ter 4 dígitos, a semana não pode exceder 53 nem a semana atual do ano corrente; para bandeira Michelin, o pneu também não pode ter mais de 364 semanas de idade.
Fonte: source/MRC001/UdmMRC001.pas:2343-2380 (TdmMRC001.qryItemPedidoPneuNRDOTValidate)
P: Por que não consigo trocar o serviço de um pneu?
R: Se o novo serviço usa uma carcaça diferente da atual e o item já tem nota de entrada de carcaça faturada, a troca é bloqueada.
Fonte: source/MRC001/UdmMRC001.pas:770-795 (TdmMRC001.qryItemPedidoPneuIDSERVICOPNEUValidate)
P: Por que o valor de comissão não é aceito?
R: O percentual deve estar entre 0 e 100 e o valor de comissão não pode passar de 100% do valor líquido do serviço; serviços com valor líquido zero não aceitam comissão em valor.
Fonte: source/MRC001/UdmMRC001.pas:2023-2072 (TdmMRC001.qryBorracheiroPC_COMISSAOValidate)
P: Por que não consigo mudar o Tipo de Pedido?
R: Se algum item do pedido tem laudo técnico válido lançado, a troca de tipo de pedido fica bloqueada até que o laudo seja cancelado.
Fonte: source/MRC001/UdmMRC001.pas:1710-1724 (TdmMRC001.qryPedidoPneuIDTIPOPEDIDOValidate)
P: Por que a mensagem de valor de parcela abaixo do permitido aparece ao salvar?
R: O parâmetro PARMFATUR.VL_MINPARCELAPEDIDO define um valor mínimo de parcela; se o cálculo da parcela ficar abaixo desse valor, o pedido não pode ser gravado.
Fonte: source/MRC001/UframeMRC001.pas:621-643 (TframeMRC001.actionOKExecute)
Dúvidas em aberto (o código não responde)
- Onde e como é feita a verificação da licença 'erpProdVulcano' exigida para este módulo? — O briefing indica que a licença erpProdVulcano é exigida, mas essa validação não aparece nos arquivos .pas lidos do MRC001; provavelmente é feita em camada de carregamento de programa (sessao.carregarPrograma) fora do escopo lido.
- Quais campos exatamente ficam com Required=True dinamicamente pela rotina camposObrigatorios? — As rotinas BeforePost chamam 'camposObrigatorios(DataSet)' repetidamente, mas a implementação dessa função não está nos arquivos do módulo MRC001 lidos (deve estar em jDB.pas ou similar); não foi possível confirmar a lista completa de campos que ela torna obrigatórios.
- Qual o efeito exato do parâmetro PARAMRECAP.STOBRIGAANOPNEU e por que ele não está na lista oficial de parâmetros do módulo? — O código lê 'STOBRIGAANOPNEU' diretamente da tabela PARAMRECAP via SQL (UdmMRC001.pas:1017-1022), mas esse nome não consta na lista de parâmetros do briefing (que cita apenas os nomes com prefixo IDMARCAPADRAO, ST_*, etc.); pode ser um parâmetro legado ou não documentado.
- Como funciona exatamente a regra de rateio/duplicação de vendedores entre itens quando PARAMRECAP.ST_VENDEDORPEDIDOITEM='P'? — O código tem lógica condicional extensa (qryItemPedidoPneuAfterPost, actionOKExecute) sobre duplicar vendedores apenas no primeiro item ou em todos, com trechos comentados, sugerindo incerteza/histórico de mudanças; não foi possível confirmar o comportamento atual com certeza total sem testes.
- O DOT com 4 dígitos, mas anoDot entre 90 e 99 é aceito sem checar limite superior? — Em UdmMRC001.pas:2358, a condição só lança erro se anoDot < 90 E anoDot > ano atual (2 dígitos); não ficou claro se DOTs de pneus muito antigos (época anoDot >= 90, ex. anos 1990) recebem alguma outra validação de limite máximo além do formato.