MPD005 — Ordem de Serviço (enriquecimento)
Menu: Ordem de Serviço > Movimentações > Ordem de Serviço
Objetivo
A tela MPD005 (Ordem de Serviço) registra o atendimento de assistência técnica/oficina: dados do cliente e do equipamento atendido, os serviços prestados, os produtos/peças aplicados em cada serviço e as horas de mão de obra (ou km/horímetro) dos técnicos. A partir da Ordem de Serviço fechada, o usuário pode gerar automaticamente um Pedido de Venda e, a partir dele, uma Nota Fiscal de Saída (MNF002). A tela também controla o ciclo de vida da ordem (Aberta, Fechada, Gerado Pedido, Bloqueada, Cancelada), permitindo bloquear/liberar por regras de crédito e reabrir quando autorizado.
Fluxo principal
- Informar o cliente (F9 lista pessoas); o sistema busca automaticamente o endereço se houver só um cadastrado, ou pede para escolher se houver mais de um; valida se a pessoa está ativa e sem bloqueio financeiro. (Dados da Ordem de Serviço (cabeçalho)) —
source/MPD005/UdmMPD005.pas:665-761 (TdmMPD005.tabORDEMSERVICOCD_PESSOAValidate) - Preencher Data de Emissão, Previsão de Entrega, Ocorrência/Reclamação e, opcionalmente, Máquina/Equipamento, Condição e Forma de Pagamento. (Dados da Ordem de Serviço (cabeçalho)) —
source/MPD005/UdmMPD005.pas:901-938 (TdmMPD005.tabORDEMSERVICOBeforePost) - Para cada serviço, lançar as peças/produtos aplicados (item, quantidade/peso, valores); se o produto controla número de série, o sistema abre a tela de seleção de seriais. (Produtos do Serviço) —
source/MPD005/UdmMPD005.pas:584-661 (MostraSerial) - Lançar as horas do técnico no quadro de horas (ou km/horímetro conforme parâmetro da empresa) e o laudo técnico. (Laudo Técnico) —
source/MPD005/UdmMPD005.pas:1835-1890 (TdmMPD005.tabORDEMSERVHORABeforePost) - Clicar em Fechar para encerrar os serviços em aberto (confirma C-1702); a OS passa para status Fechada e habilita Gerar Pedido/Nota. (Finalizar Ordem de Serviço) —
source/MPD005/UMPD005.pas:1830-1917 (TfrmMPD005.btnFecharClick) - Clicar em Gerar Nota para gerar o pedido (se ainda não gerado) e abrir a tela de Emissão de Nota Fiscal (MNF002) vinculada a ele. (Finalizar Ordem de Serviço) —
source/MPD005/UMPD005.pas:1919-1952 (TfrmMPD005.btnGeraNotaClick)
Campos obrigatórios
| Campo | Condição | Mensagem | Fonte |
|---|---|---|---|
| CD_PESSOA (Cliente) | Sempre, ao salvar a Ordem de Serviço | W-2032 | source/MPD005/UdmMPD005.pas:905-909 (TdmMPD005.tabORDEMSERVICOBeforePost) |
| CD_ENDERECO (Endereço do cliente) | Sempre, ao salvar a Ordem de Serviço | W-2033 | source/MPD005/UdmMPD005.pas:910-914 (TdmMPD005.tabORDEMSERVICOBeforePost) |
| DT_EMISSAO (Data de emissão) | Sempre, ao salvar a Ordem de Serviço | W-2034 | source/MPD005/UdmMPD005.pas:915-919 (TdmMPD005.tabORDEMSERVICOBeforePost) |
| DT_ENTREGA (Previsão de entrega) | Sempre; além disso não pode ser anterior à Data de Emissão | W-2035 / W-2004 | source/MPD005/UdmMPD005.pas:920-924 (TdmMPD005.tabORDEMSERVICOBeforePost) |
| DS_OBSERVACAO (Ocorrência/Reclamação) | Sempre, ao salvar a Ordem de Serviço | W-2036 | source/MPD005/UdmMPD005.pas:925-929 (TdmMPD005.tabORDEMSERVICOBeforePost) |
| CD_SERVICO, CD_MOVIMENTACAO, QT_SERVICO, VL_UNITARIO, VL_TOTAL (linha da aba Serviços Prestados) | Ao gravar cada linha de serviço prestado | W-2037 / W-2038 / W-2039 / W-2040 / W-2041 | source/MPD005/UdmMPD005.pas:963-994 (TdmMPD005.tabORDEMSERVITEMBeforePost) |
| CD_ITEM, CD_MOVIMENTACAO, PS_SERVICOITEM ou QT_SERVICOITEM, VL_UNITARIO, VL_TOTAL (linha da aba Produtos do Serviço) | Ao gravar cada linha de produto aplicado a um serviço | W-2050 / W-2052 / W-2053 / W-2054 / W-2055 | source/MPD005/UdmMPD005.pas:1426-1468 (TdmMPD005.tabSERVICOITEMBeforePost) |
| CD_VENDEDOR (linha de Produto do Serviço) | Somente quando o parâmetro ST_BLOQUEIOVENDEDOR da empresa está ativo (S) | W-2051 | source/MPD005/UdmMPD005.pas:1437-1444 (TdmMPD005.tabSERVICOITEMBeforePost) |
| DT_INICIO (Quadro de Horas) | Sempre, ao gravar um lançamento de hora do técnico | W-2060 | source/MPD005/UdmMPD005.pas:1841-1845 (TdmMPD005.tabORDEMSERVHORABeforePost) |
| CD_PESSOA (Técnico) e QT_HORAS (Quadro de Horas) | Somente quando o parâmetro ST_OBRIGATECNICO da empresa está ativo (S) | W-2061 / W-2062 | source/MPD005/UdmMPD005.pas:1870-1885 (TdmMPD005.tabORDEMSERVHORABeforePost) |
Mensagens: causa e ação
C-0045
Causa: Usuário pediu para excluir um registro genérico (linha do quadro de horas ou de produto do serviço) fora dos casos com confirmação específica.
Ação: Confirmar apenas se realmente deseja remover a linha selecionada; não é possível desfazer depois de confirmado.
Fonte: source/MPD005/UMPD005.pas:1540-1544 (TfrmMPD005.btnExcluirClick)
C-1698
Causa: A Ordem de Serviço acabou de ser fechada com sucesso.
Ação: Responder Sim para imprimir a via da OS agora, ou Não para imprimir depois pelo botão Imprimir.
Fonte: source/MPD005/UMPD005.pas:1915-1916 (TfrmMPD005.btnFecharClick)
C-1702
Causa: Usuário clicou no botão Fechar da Ordem de Serviço.
Ação: Confirmar para encerrar todos os serviços em aberto e mudar o status da OS para Fechada; se algum serviço exigir técnico e não tiver, a operação é interrompida antes desta pergunta.
Fonte: source/MPD005/UMPD005.pas:1887-1913 (TfrmMPD005.btnFecharClick)
C-1703
Causa: Usuário clicou no botão Reabrir.
Ação: Confirmar para reabrir a OS; é necessário ser usuário Autorizador, e se já existir Nota Fiscal emitida a partir do pedido vinculado a reabertura será recusada.
Fonte: source/MPD005/UMPD005.pas:2001-2061 (TfrmMPD005.btnReabrirClick)
C-1706
Causa: Usuário clicou no botão Liberar.
Ação: Confirmar para desbloquear a OS (só funciona se ela estiver com status Bloqueada e o usuário for Autorizador).
Fonte: source/MPD005/UMPD005.pas:2066-2091 (TfrmMPD005.btnLiberarClick)
C-1773
Causa: Usuário clicou em Excluir com o cabeçalho da OS selecionado, o que na prática cancela a Ordem de Serviço.
Ação: Confirmar apenas se deseja realmente cancelar a OS (status vira Cancelada); requer usuário Autorizador.
Fonte: source/MPD005/UMPD005.pas:1467-1488 (TfrmMPD005.btnExcluirClick)
C-1775
Causa: Usuário clicou em Excluir com uma linha da aba Serviços Prestados selecionada.
Ação: Confirmar para remover o serviço; se o serviço tiver composição de peças cadastrada, o sistema perguntará também sobre remover os produtos vinculados (C-1776).
Fonte: source/MPD005/UMPD005.pas:1490-1537 (TfrmMPD005.btnExcluirClick)
C-1776
Causa: O serviço que está sendo excluído possui uma composição de peças cadastrada (tabela PRODUCAO) e existem produtos lançados na OS que fazem parte dessa composição.
Ação: Confirmar para excluir também os produtos do serviço que pertencem à composição; recusar mantém os produtos já lançados.
Fonte: source/MPD005/UMPD005.pas:1504-1535 (TfrmMPD005.btnExcluirClick)
E-0032
Causa: A pessoa selecionada como cliente está com ST_ATIVA='N' no cadastro.
Ação: Reativar a pessoa em TFA001 ou selecionar outro cliente ativo.
Fonte: source/MPD005/UdmMPD005.pas:687-688 (TdmMPD005.tabORDEMSERVICOCD_PESSOAValidate)
E-0259
Causa: O código informado como vendedor não corresponde a nenhum registro vinculado em VENDEDOR.
Ação: Cadastrar a pessoa como vendedor em TFA007 ou corrigir o código informado.
Fonte: source/MPD005/UdmMPD005.pas:2040-2047 (TdmMPD005.tabORDEMSERVICOCD_VENDEDORValidate)
E-0271
Causa: A condição de pagamento existe, mas está com ST_ATIVO='N'.
Ação: Reativar a condição de pagamento em TFC002 ou usar outra condição ativa.
Fonte: source/MPD005/UdmMPD005.pas:827-828 (TdmMPD005.tabORDEMSERVICOCD_CONDPAGTOValidate)
E-0272
Causa: O código de condição de pagamento informado não existe em CONDPAGTO.
Ação: Selecionar uma condição de pagamento válida em TFC002.
Fonte: source/MPD005/UdmMPD005.pas:823-826 (TdmMPD005.tabORDEMSERVICOCD_CONDPAGTOValidate)
E-0273
Causa: O código de forma de pagamento informado não existe em FORMAPAGTO.
Ação: Selecionar uma forma de pagamento válida em TFC001.
Fonte: source/MPD005/UdmMPD005.pas:804-809 (TdmMPD005.tabORDEMSERVICOCD_FORMAPAGTOValidate)
E-0276
Causa: A movimentação escolhida para o serviço/produto tem TP_OPERACAO='E' (entrada), incompatível com a Ordem de Serviço (que exige movimentação de saída).
Ação: Selecionar uma movimentação de saída cadastrada em MOVIMENTACAO.
Fonte: source/MPD005/UdmMPD005.pas:1763-1769 (TdmMPD005.tabORDEMSERVITEMCD_MOVIMENTACAOValidate)
E-0290
Causa: O código de movimentação informado não existe cadastrado em MOVIMENTACAO.
Ação: Selecionar uma movimentação válida através do F9/pesquisa.
Fonte: source/MPD005/UdmMPD005.pas:1763-1767 (TdmMPD005.tabORDEMSERVITEMCD_MOVIMENTACAOValidate)
E-1885
Causa: O código de pessoa informado como cliente não existe em PESSOA.
Ação: Cadastrar a pessoa em TFA001 ou corrigir o código informado.
Fonte: source/MPD005/UdmMPD005.pas:678-686 (TdmMPD005.tabORDEMSERVICOCD_PESSOAValidate)
E-1890
Causa: O campo Forma de Pagamento do cabeçalho está vazio no momento de gerar o Pedido de Venda.
Ação: Preencher a Forma de Pagamento no cabeçalho da OS antes de clicar em Gerar Pedido/Nota.
Fonte: source/MPD005/UMPD005.pas:1599-1600 (TfrmMPD005.btnPedidoClick)
I-1715
Causa: A Ordem de Serviço foi gravada (inclui o caso de cancelamento, que reaproveita esta mensagem).
Ação: Nenhuma ação necessária; apenas confirmação de que a operação foi concluída.
Fonte: source/MPD005/UMPD005.pas:1483-1486 (TfrmMPD005.btnExcluirClick)
I-1771
Causa: A Ordem de Serviço foi reaberta com sucesso.
Ação: Nenhuma ação necessária; a OS volta ao status Aberta para novas alterações.
Fonte: source/MPD005/UMPD005.pas:2054-2056 (TfrmMPD005.btnReabrirClick)
I-1778
Causa: A Ordem de Serviço foi liberada (desbloqueada) com sucesso.
Ação: Nenhuma ação necessária; a OS volta ao status Aberta.
Fonte: source/MPD005/UMPD005.pas:2085-2087 (TfrmMPD005.btnLiberarClick)
W-0092
Causa: A quantidade do produto informado na aba Produtos do Serviço é zero ou negativa.
Ação: Informar uma quantidade maior que zero.
Fonte: source/MPD005/UdmMPD005.pas:1611-1615 (TdmMPD005.tabSERVICOITEMQT_SERVICOITEMValidate)
W-0176
Causa: A placa informada no quadro de horas (km) não está cadastrada em VEICULO.
Ação: Cadastrar o veículo ou corrigir a placa informada.
Fonte: source/MPD005/UdmMPD005.pas:2172-2186 (TdmMPD005.tabORDEMSERVHORANR_PLACAValidate)
W-0182
Causa: O valor de desconto informado no serviço prestado (aba ORDEMSERVITEM) é negativo.
Ação: Informar um valor de desconto maior ou igual a zero.
Fonte: source/MPD005/UdmMPD005.pas:2342-2347 (TdmMPD005.tabORDEMSERVITEMVL_DESCONTOValidate)
W-0202
Causa: O usuário recusou a confirmação de gravar um item mesmo com o saldo de estoque ficando negativo (modo alerta).
Ação: Confirmar a operação se o estoque negativo for aceitável, ou reduzir a quantidade lançada / verificar o estoque do item.
Fonte: source/MPD005/UdmMPD005.pas:1538-1551 (TdmMPD005.ValidaEstoqueNegativo)
W-0457
Causa: O usuário não tem permissão de acesso à tela de Cadastro de Pessoas (TFA001) no menu.
Ação: Solicitar ao administrador a liberação de acesso ao módulo TFA001.
Fonte: source/MPD005/UMPD005.pas:2586-2588 (TfrmMPD005.btnCadastrarPessoaClick)
W-0780
Causa: O usuário não tem permissão de acesso à tela de Emissão de Nota Fiscal de Saída (MNF002).
Ação: Solicitar ao administrador a liberação de acesso ao módulo MNF002 antes de gerar a nota a partir da OS.
Fonte: source/MPD005/UMPD005.pas:1932-1934 (TfrmMPD005.btnGeraNotaClick)
W-0799
Causa: O usuário clicou em Excluir sem ter uma Ordem de Serviço carregada (campo Número da OS vazio).
Ação: Buscar/abrir uma Ordem de Serviço antes de tentar excluir/cancelar.
Fonte: source/MPD005/UMPD005.pas:1471-1472 (TfrmMPD005.btnExcluirClick)
W-1540
Causa: A quantidade de números de série marcados na tela de seleção é diferente da quantidade lançada no item do produto.
Ação: Marcar exatamente a mesma quantidade de seriais informada na quantidade/peso do item antes de confirmar.
Fonte: source/MPD005/UMPD005SERIAL.pas:121-123 (TfrmMPD005SERIAL.btnOKClick)
W-1608
Causa: O usuário não tem permissão de acesso à tela de Pedido de Venda (MPD002).
Ação: Solicitar ao administrador a liberação de acesso ao módulo MPD002 para usar o botão 'Pedido de Venda'.
Fonte: source/MPD005/UMPD005.pas:2565-2567 (TfrmMPD005.btnPedidoVendaClick)
W-1691
Causa: O usuário não tem permissão de acesso à tela de Cadastro de Máquinas/Equipamentos (TFA012).
Ação: Solicitar ao administrador a liberação de acesso ao módulo TFA012.
Fonte: source/MPD005/UMPD005.pas:2685-2687 (TfrmMPD005.btnCadastrarMaquinaClick)
W-1700
Causa: A Ordem de Serviço que está sendo aberta na tela já está com status Bloqueada.
Ação: É apenas um aviso informativo ao abrir; para editar, um Autorizador precisa Liberar a OS na aba Reabrir/Liberar.
Fonte: source/MPD005/UMPD005.pas:1132-1135 (TfrmMPD005.edtNR_ORDEMSERVICOExit)
W-1772
Causa: Nenhum número de série foi marcado na tela de seleção de seriais do produto.
Ação: Marcar ao menos um serial correspondente à quantidade do item, ou cancelar a seleção.
Fonte: source/MPD005/UMPD005SERIAL.pas:117-119 (TfrmMPD005SERIAL.btnOKClick)
W-1774
Causa: A Ordem de Serviço está com status Bloqueada e o usuário tentou salvar, excluir ou gerar pedido.
Ação: Solicitar a um Autorizador que libere a OS (botão Liberar) antes de continuar a edição.
Fonte: source/MPD005/UMPD005.pas:641-642 (TfrmMPD005.btnSalvarClick)
W-1777
Causa: O usuário que tentou cancelar a Ordem de Serviço não está cadastrado como Autorizador ativo.
Ação: Solicitar que um usuário Autorizador execute o cancelamento.
Fonte: source/MPD005/UMPD005.pas:1473-1474 (TfrmMPD005.btnExcluirClick)
W-1921
Causa: A pessoa selecionada como cliente está com ST_SCPC='S' (situação financeira/crédito bloqueada).
Ação: Regularizar a situação financeira do cliente ou verificar a pendência no cadastro de pessoa antes de atendê-lo.
Fonte: source/MPD005/UdmMPD005.pas:689-690 (TdmMPD005.tabORDEMSERVICOCD_PESSOAValidate)
W-1934
Causa: O código de produto/item informado não existe cadastrado em ITEM.
Ação: Cadastrar o item em TPO001 ou corrigir o código informado.
Fonte: source/MPD005/UdmMPD005.pas:1255-1260 (TdmMPD005.tabSERVICOITEMCD_ITEMValidate)
W-2003
Causa: O usuário tentou salvar alterações numa OS cujo status não é Aberta (por exemplo, Fechada, Gerado Pedido, Bloqueada ou Cancelada), fora do próprio fluxo de fechamento.
Ação: Reabrir a OS (se aplicável e autorizado) antes de tentar alterar, ou entender que ordens fechadas/bloqueadas/canceladas não podem mais ser editadas diretamente.
Fonte: source/MPD005/UMPD005.pas:637-639 (TfrmMPD005.btnSalvarClick)
W-2004
Causa: A Data de Entrega informada é anterior à Data de Emissão da OS.
Ação: Corrigir a Data de Entrega para uma data igual ou posterior à Data de Emissão.
Fonte: source/MPD005/UMPD005.pas:651-655 (TfrmMPD005.btnSalvarClick)
W-2005
Causa: O parâmetro de bloqueio de vendedor está ativo e algum produto do serviço foi salvo sem vendedor.
Ação: Preencher o vendedor em todas as linhas de produto do serviço antes de salvar.
Fonte: source/MPD005/UMPD005.pas:670-676 (TfrmMPD005.btnSalvarClick)
W-2006
Causa: O usuário tentou informar/pesquisar o Endereço antes de escolher a Pessoa (cliente).
Ação: Selecionar primeiro o cliente e só depois o endereço.
Fonte: source/MPD005/UMPD005.pas:1030-1035 (TfrmMPD005.edtCD_ENDERECOKeyDown)
W-2007
Causa: O número de Ordem de Serviço digitado não existe para a empresa logada.
Ação: Conferir o número digitado ou usar a pesquisa (F9) para localizar a OS correta.
Fonte: source/MPD005/UMPD005.pas:1112-1120 (TfrmMPD005.edtNR_ORDEMSERVICOExit)
W-2008
Causa: A Condição de Pagamento do cabeçalho está vazia no momento de Gerar Pedido.
Ação: Preencher a Condição de Pagamento antes de gerar o pedido/nota.
Fonte: source/MPD005/UMPD005.pas:1601-1602 (TfrmMPD005.btnPedidoClick)
W-2009
Causa: O Total da Ordem de Serviço está zerado (nenhum serviço/produto com valor lançado) no momento de gerar o pedido.
Ação: Lançar ao menos um serviço ou produto com valor antes de gerar o pedido/nota.
Fonte: source/MPD005/UMPD005.pas:1604-1605 (TfrmMPD005.btnPedidoClick)
W-2010
Causa: Ao salvar a OS, a procedure VERIFICA_BLOQUEIO detectou algum motivo de bloqueio comercial/financeiro para o cliente.
Ação: Ler o motivo informado na mensagem para entender a pendência (crédito, título vencido etc.); a OS é automaticamente marcada como Bloqueada.
Fonte: source/MPD005/UMPD005.pas:955-980 (TfrmMPD005.btnSalvarClick)
W-2011
Causa: Pretendida para avisar que a OS já está fechada/com pedido gerado ao clicar em Fechar novamente, mas devido a um erro de lógica (condição E em vez de OU) nunca é exibida na prática.
Ação: Não depender desta mensagem; verificar o status da OS na tela (campo Status) antes de tentar fechar novamente.
Fonte: source/MPD005/UMPD005.pas:1834-1836 (TfrmMPD005.btnFecharClick)
W-2012
Causa: O parâmetro que obriga técnico está ativo e existe ao menos um serviço da OS sem nenhum apontamento de hora com técnico preenchido.
Ação: Lançar o técnico responsável no quadro de horas de cada serviço antes de Fechar a OS.
Fonte: source/MPD005/UMPD005.pas:1857-1877 (TfrmMPD005.btnFecharClick)
W-2013
Causa: Ao gerar Pedido/Nota, o pedido criado ficou marcado como Bloqueado por regra de crédito (VERIFICA_BLOQUEIO).
Ação: Regularizar a pendência indicada e depois liberar o pedido bloqueado (fora desta tela) para poder emitir a nota.
Fonte: source/MPD005/UMPD005.pas:1930-1950 (TfrmMPD005.btnGeraNotaClick)
W-2014
Causa: O usuário tentou Reabrir uma Ordem de Serviço que está com status Bloqueada.
Ação: Primeiro Liberar a OS (desbloquear) e só depois usar Reabrir, se ainda for necessário.
Fonte: source/MPD005/UMPD005.pas:1998-1999 (TfrmMPD005.btnReabrirClick)
W-2015
Causa: O usuário que tentou Reabrir não está cadastrado como Autorizador ativo.
Ação: Solicitar que um Autorizador execute a reabertura.
Fonte: source/MPD005/UMPD005.pas:2003-2004 (TfrmMPD005.btnReabrirClick)
W-2016
Causa: O usuário que tentou Liberar não está cadastrado como Autorizador ativo.
Ação: Solicitar que um Autorizador execute a liberação.
Fonte: source/MPD005/UMPD005.pas:2068-2069 (TfrmMPD005.btnLiberarClick)
W-2017
Causa: O usuário clicou em Liberar numa OS que não está com status Bloqueada.
Ação: O botão Liberar só se aplica a ordens bloqueadas; nada a fazer se a OS já está aberta/fechada normalmente.
Fonte: source/MPD005/UMPD005.pas:2070-2071 (TfrmMPD005.btnLiberarClick)
W-2018
Causa: O percentual de desconto informado (no cabeçalho ou na linha de produto do serviço) é negativo.
Ação: Informar um percentual de desconto maior ou igual a zero.
Fonte: source/MPD005/UMPD005.pas:2097-2100 (TfrmMPD005.edtPC_DESCONTOExit)
W-2019
Causa: No quadro de horas, a Data/Hora Fim informada é igual ou anterior à Data/Hora Início.
Ação: Informar uma Hora Fim posterior à Hora Início do apontamento.
Fonte: source/MPD005/UMPD005.pas:2443-2449 (TfrmMPD005.gridORDEMSERVHORAExit)
W-2020
Causa: O usuário pressionou F11 (Observação) estando na aba Produtos do Serviço sem nenhum produto selecionado/lançado.
Ação: Selecionar um produto na grade antes de abrir a observação (F11).
Fonte: source/MPD005/UMPD005.pas:2494-2503 (Observacao_Produto)
W-2021
Causa: O usuário pressionou F11 (Observação) estando na aba Serviços Prestados sem nenhum serviço selecionado/lançado.
Ação: Selecionar um serviço na grade antes de abrir a observação (F11).
Fonte: source/MPD005/UMPD005.pas:2506-2515 (Observacao_Produto)
W-2023
Causa: Foi solicitada a lista de tabelas de preço (F9) sem que o código do produto/serviço estivesse preenchido.
Ação: Informar o código do produto/serviço antes de consultar as tabelas de preço.
Fonte: source/MPD005/UMPD005.pas:391-392 (PesquisaTabPreco)
W-2025
Causa: Não há layout de impressão de Ordem de Serviço cadastrado nos Parâmetros de Faturamento (PARMFATUR.CD_LAYORDSERV) da empresa.
Ação: Cadastrar o layout de impressão da Ordem de Serviço em MFA001.
Fonte: source/MPD005/UMPD005.pas:1442-1443 (TfrmMPD005.btnImprimirClick)
W-2026
Causa: Existe uma Nota Fiscal com status Válida/Baixada/Lançada emitida a partir do pedido gerado por esta OS.
Ação: A reabertura não pode prosseguir enquanto essa nota fiscal existir; verificar/cancelar a nota fiscal (fora desta tela) se realmente for necessário reabrir.
Fonte: source/MPD005/UMPD005.pas:2021-2034 (TfrmMPD005.btnReabrirClick)
W-2027
Causa: No modo Horímetro, o valor de Km/Hora Final informado é menor ou igual ao valor Inicial.
Ação: Informar um valor final maior que o inicial no controle de horímetro.
Fonte: source/MPD005/UdmMPD005.pas:285-290 (calcaulaHoraHorimetro)
W-2028
Causa: O usuário fechou a tela de seleção de seriais sem confirmar (clicou Cancelar ou fechou a janela).
Ação: Reabrir a seleção de seriais e confirmar a escolha para poder gravar o produto.
Fonte: source/MPD005/UdmMPD005.pas:651-657 (MostraSerial)
W-2030
Causa: O código de endereço informado não pertence à pessoa selecionada como cliente.
Ação: Selecionar um endereço válido para essa pessoa (via F9) ou cadastrar um novo endereço em TFA001.
Fonte: source/MPD005/UdmMPD005.pas:772-784 (TdmMPD005.tabORDEMSERVICOCD_ENDERECOValidate)
W-2031
Causa: O número de série da máquina/equipamento informado não está cadastrado em MAQUINA.
Ação: Cadastrar o equipamento em TFA012 ou corrigir o número de série informado.
Fonte: source/MPD005/UdmMPD005.pas:856-890 (TdmMPD005.tabORDEMSERVICONR_SERIEMAQUINAValidate)
W-2036
Causa: O campo de Ocorrência/Reclamação (DS_OBSERVACAO) do cabeçalho está vazio ao salvar.
Ação: Descrever a ocorrência/reclamação do cliente antes de salvar a OS.
Fonte: source/MPD005/UdmMPD005.pas:925-929 (TdmMPD005.tabORDEMSERVICOBeforePost)
W-2042
Causa: O código informado na aba Serviços Prestados não corresponde a nenhum item cadastrado.
Ação: Cadastrar o serviço em TPO001 ou corrigir o código informado.
Fonte: source/MPD005/UdmMPD005.pas:1107-1113 (TdmMPD005.tabORDEMSERVITEMCD_SERVICOValidate)
W-2043
Causa: O item informado na aba Serviços Prestados é do tipo Produto (TP_ITEM<>'S'), não Serviço.
Ação: Informar um código de item cadastrado como serviço em TPO001.
Fonte: source/MPD005/UdmMPD005.pas:1114-1115 (TdmMPD005.tabORDEMSERVITEMCD_SERVICOValidate)
W-2044
Causa: O serviço informado existe, mas está com ST_ATIVO='N'.
Ação: Reativar o serviço em TPO001 ou usar outro serviço ativo.
Fonte: source/MPD005/UdmMPD005.pas:1116-1117 (TdmMPD005.tabORDEMSERVITEMCD_SERVICOValidate)
W-2045
Causa: O parâmetro de validação de tabela de preço está ativo e não existe tabela de preço específica cadastrada para este cliente e este item.
Ação: Cadastrar a tabela de preço para o cliente (PARMTABPRECO) ou vincular o item à tabela padrão em TFA006.
Fonte: source/MPD005/UdmMPD005.pas:1187-1205 (TdmMPD005.tabORDEMSERVITEMCD_SERVICOValidate)
W-2046
Causa: O item não está vinculado a nenhuma tabela de preço, nem mesmo a tabela padrão da empresa.
Ação: Cadastrar o item na tabela de preço padrão da empresa em TFA006/MFA006.
Fonte: source/MPD005/UdmMPD005.pas:1209-1219 (TdmMPD005.tabORDEMSERVITEMCD_SERVICOValidate)
W-2047
Causa: O código informado na aba Produtos do Serviço corresponde a um item do tipo Serviço (TP_ITEM='S'), o que não é permitido nesta lista.
Ação: Informar um código de item do tipo produto/peça.
Fonte: source/MPD005/UdmMPD005.pas:1261-1262 (TdmMPD005.tabSERVICOITEMCD_ITEMValidate)
W-2048
Causa: O produto informado existe, mas está com ST_ATIVO='N'.
Ação: Reativar o produto em TPO001 ou usar outro produto ativo.
Fonte: source/MPD005/UdmMPD005.pas:1263-1264 (TdmMPD005.tabSERVICOITEMCD_ITEMValidate)
W-2049
Causa: O produto informado já foi lançado anteriormente na mesma Ordem de Serviço.
Ação: Editar a linha já existente do produto (alterando a quantidade) em vez de lançar uma nova linha.
Fonte: source/MPD005/UdmMPD005.pas:1273-1279 (TdmMPD005.tabSERVICOITEMCD_ITEMValidate)
W-2056
Causa: O peso informado para o produto do serviço é negativo.
Ação: Informar um peso maior ou igual a zero.
Fonte: source/MPD005/UdmMPD005.pas:1631-1635 (TdmMPD005.tabSERVICOITEMPS_SERVICOITEMValidate)
W-2059
Causa: A quantidade informada no serviço prestado (aba ORDEMSERVITEM) é negativa.
Ação: Informar uma quantidade maior ou igual a zero.
Fonte: source/MPD005/UdmMPD005.pas:1680-1683 (TdmMPD005.tabORDEMSERVITEMQT_SERVICOValidate)
W-2063
Causa: O parâmetro de OS é do modo Horas ('H') e existe ao menos um apontamento de hora do serviço sem Data/Hora Fim preenchida (em aberto) no momento de encerrar a data de fechamento do serviço.
Ação: Preencher a Hora Fim de todos os apontamentos do técnico para o serviço antes de fechá-lo.
Fonte: source/MPD005/UdmMPD005.pas:1987-2003 (TdmMPD005.tabORDEMSERVITEMDT_FECHAMENTOValidate)
W-2067
Causa: O usuário informado no lançamento do quadro de horas não corresponde a um usuário cadastrado em USUARIO.
Ação: Selecionar um usuário válido do sistema.
Fonte: source/MPD005/UdmMPD005.pas:2080-2086 (TdmMPD005.tabORDEMSERVHORACD_USUARIOValidate)
W-2068
Causa: O código de pessoa informado como técnico no quadro de horas não existe em PESSOA.
Ação: Cadastrar a pessoa em TFA001 ou corrigir o código informado.
Fonte: source/MPD005/UdmMPD005.pas:2095-2105 (TdmMPD005.tabORDEMSERVHORACD_PESSOAValidate)
W-2069
Causa: A pessoa informada como técnico está com ST_ATIVA='N'.
Ação: Reativar a pessoa em TFA001 ou selecionar outro técnico ativo.
Fonte: source/MPD005/UdmMPD005.pas:2106-2107 (TdmMPD005.tabORDEMSERVHORACD_PESSOAValidate)
W-2070
Causa: A pessoa informada como técnico não é do Tipo de Pessoa 'Funcionário/Técnico' (TP_TIPOPESSOA<>'N').
Ação: Selecionar uma pessoa cujo Tipo de Pessoa esteja configurado como Técnico/Funcionário em TFA001.
Fonte: source/MPD005/UdmMPD005.pas:2108-2109 (TdmMPD005.tabORDEMSERVHORACD_PESSOAValidate)
W-2071
Causa: A quantidade de horas informada no quadro de horas é negativa.
Ação: Informar uma quantidade de horas maior ou igual a zero.
Fonte: source/MPD005/UdmMPD005.pas:2121-2123 (TdmMPD005.tabORDEMSERVHORAQT_HORASValidate)
W-2072
Causa: A parte decimal da quantidade de horas informada (interpretada como minutos) é maior que 59.
Ação: Corrigir os minutos informados para um valor entre 00 e 59.
Fonte: source/MPD005/UdmMPD005.pas:2134-2140 (TdmMPD005.tabORDEMSERVHORAQT_HORASValidate)
W-2073
Causa: O percentual de comissão informado (no cabeçalho ou na linha de produto do serviço) é negativo.
Ação: Informar um percentual de comissão maior ou igual a zero.
Fonte: source/MPD005/UdmMPD005.pas:2349-2353 (TdmMPD005.tabSERVICOITEMPC_COMISSAOValidate)
Regras de negócio
MPD005.R001(verregras/MPD005/MPD005.R001.md)MPD005.R002(verregras/MPD005/MPD005.R002.md)MPD005.R003(verregras/MPD005/MPD005.R003.md)MPD005.R004(verregras/MPD005/MPD005.R004.md)MPD005.R005(verregras/MPD005/MPD005.R005.md)MPD005.R006(verregras/MPD005/MPD005.R006.md)MPD005.R007(verregras/MPD005/MPD005.R007.md)MPD005.R008(verregras/MPD005/MPD005.R008.md)MPD005.R009(verregras/MPD005/MPD005.R009.md)MPD005.R010(verregras/MPD005/MPD005.R010.md)MPD005.R011(verregras/MPD005/MPD005.R011.md)MPD005.R012(verregras/MPD005/MPD005.R012.md)MPD005.R013(verregras/MPD005/MPD005.R013.md)MPD005.R014(verregras/MPD005/MPD005.R014.md)MPD005.R015(verregras/MPD005/MPD005.R015.md)MPD005.R016(verregras/MPD005/MPD005.R016.md)MPD005.R017(verregras/MPD005/MPD005.R017.md)MPD005.R018(verregras/MPD005/MPD005.R018.md)MPD005.R019(verregras/MPD005/MPD005.R019.md)MPD005.R020(verregras/MPD005/MPD005.R020.md)MPD005.R021(verregras/MPD005/MPD005.R021.md)MPD005.R022(verregras/MPD005/MPD005.R022.md)
Perguntas frequentes
P: Por que não consigo alterar/salvar essa Ordem de Serviço?
R: Provavelmente a OS está com status Bloqueada (mensagem W-1774) — apenas um usuário Autorizador pode Liberá-la (aba 'Reabrir/Liberar Ordem Serviço') antes de qualquer alteração. Também pode ser que ela já não esteja mais Aberta (Fechada, Gerado Pedido ou Cancelada), o que impede edição direta (W-2003).
Fonte: source/MPD005/UMPD005.pas:637-642 (TfrmMPD005.btnSalvarClick)
P: Deu a mensagem 'A Ordem de Serviço está Bloqueada' quando abri; o que eu faço?
R: É apenas um aviso ao carregar a OS (W-1700); ela pode ser bloqueada por regra de crédito/negócio detectada ao salvar. Para editar, um usuário do tipo Autorizador precisa usar o botão Liberar.
Fonte: source/MPD005/UMPD005.pas:1132-1135 (TfrmMPD005.edtNR_ORDEMSERVICOExit)
P: Por que não consigo gerar o Pedido de Venda a partir da Ordem de Serviço?
R: É preciso que a OS esteja Fechada (o botão só habilita nesse status), tenha Forma e Condição de Pagamento preenchidas e o Total da Ordem seja maior que zero (mensagens E-1890/W-2008/W-2009).
Fonte: source/MPD005/UMPD005.pas:1597-1605 (TfrmMPD005.btnPedidoClick)
P: Gerei o pedido mas ele veio bloqueado, o que significa?
R: Ao criar o pedido, o sistema roda a mesma regra de crédito/bloqueio comercial da empresa (VERIFICA_BLOQUEIO); se detectar um motivo (limite de crédito, título vencido, etc.), o pedido é marcado como Bloqueado e o motivo aparece na mensagem (W-2010/W-2013). É necessário regularizar a pendência do cliente para liberar o pedido antes de emitir a nota.
Fonte: source/MPD005/UMPD005.pas:1775-1804 (TfrmMPD005.btnPedidoClick)
P: Não consigo Fechar a Ordem de Serviço, aparece 'É Obrigatório Informar ao Menos um Técnico'.
R: A empresa tem o parâmetro de faturamento que obriga técnico (ST_OBRIGATECNICO='S'); é preciso lançar pelo menos um apontamento de hora com técnico preenchido para cada serviço antes de conseguir fechar a OS.
Fonte: source/MPD005/UMPD005.pas:1838-1884 (TfrmMPD005.btnFecharClick)
P: Não consigo Reabrir a Ordem de Serviço mesmo sendo Autorizador.
R: Se a Ordem de Serviço tem um pedido vinculado que já gerou uma Nota Fiscal válida/lançada/baixada, a reabertura é recusada (W-2026). Também não é possível reabrir se a OS estiver com status Bloqueada — nesse caso é preciso Liberar antes (W-2014).
Fonte: source/MPD005/UMPD005.pas:1998-2034 (TfrmMPD005.btnReabrirClick)
P: O usuário disse que fechou a OS de novo e não recebeu nenhum aviso de 'já está fechada' — é normal?
R: Sim, é um bug conhecido: a checagem que deveria avisar isso usa uma condição logicamente impossível (status igual a 'F' E igual a 'P' ao mesmo tempo), então a mensagem W-2011 nunca aparece. Na prática o botão Fechar não deveria estar habilitado nesse cenário (ele é desabilitado quando a OS não está Aberta), então o impacto costuma ser baixo, mas vale reportar ao desenvolvimento.
Fonte: source/MPD005/UMPD005.pas:1834-1836 (TfrmMPD005.btnFecharClick)
P: Por que a tela pede para selecionar números de série de novo depois que eu já tinha escolhido?
R: Isso acontece quando a quantidade ou o peso do item de produto é alterado depois da seleção original dos seriais; o sistema detecta que a quantidade de seriais já vinculados não bate mais com a nova quantidade do item e reabre a tela de seleção automaticamente.
Fonte: source/MPD005/UdmMPD005.pas:1717-1738 (TdmMPD005.tabSERVICOITEMAfterPost)
P: Alterei o percentual de desconto geral e os descontos dos itens mudaram sozinhos, é esperado?
R: Sim: ao sair do campo de Percentual de Desconto Geral do cabeçalho, o sistema recalcula automaticamente o valor de desconto de todos os serviços e produtos aplicando o mesmo percentual sobre o valor total de cada linha, sobrescrevendo descontos que tivessem sido definidos manualmente item a item.
Fonte: source/MPD005/UMPD005.pas:2095-2126 (TfrmMPD005.edtPC_DESCONTOExit)
P: O usuário reclamou que não consegue lançar mais de 59 nos minutos do apontamento de hora, mas queria digitar '1 hora e meia'.
R: O campo de Quantidade de Horas usa a parte decimal para representar minutos (não fração de hora): para 1h30, o correto é digitar 1,30 (e não 1,50). Digitar minutos acima de 59 dispara a mensagem W-2072.
Fonte: source/MPD005/UdmMPD005.pas:2117-2146 (TdmMPD005.tabORDEMSERVHORAQT_HORASValidate)
P: É possível excluir um serviço já lançado na Ordem de Serviço?
R: Sim, selecionando a linha na aba 'Serviços Prestados' e clicando em Excluir (confirmação C-1775). Se o serviço tiver uma composição de peças cadastrada (ficha técnica em PRODUCAO), o sistema perguntará também se deseja excluir os produtos vinculados a essa composição (C-1776).
Fonte: source/MPD005/UMPD005.pas:1490-1537 (TfrmMPD005.btnExcluirClick)
P: Recebi a mensagem de estoque negativo mas mesmo assim consegui gravar o item — é esperado?
R: Não totalmente: existe um bug conhecido em que o modo de bloqueio forte de estoque negativo (quando o parâmetro pede para travar a gravação) apenas monta a mensagem mas não a lança de fato, então a gravação segue mesmo devendo travar. O modo de alerta (pedir confirmação antes de gravar) funciona normalmente.
Fonte: source/MPD005/UdmMPD005.pas:1527-1531 (TdmMPD005.ValidaEstoqueNegativo)
P: Para que serve o botão 'Pedido de Venda' dentro da Ordem de Serviço?
R: Ele abre a tela MPD002 (Pedido de Venda) já filtrada pela empresa, número da OS, cliente e endereço da Ordem de Serviço atual, permitindo consultar/gerenciar pedidos relacionados sem sair do contexto da OS. Requer que o usuário tenha acesso ao módulo MPD002 (senão W-1608).
Fonte: source/MPD005/UMPD005.pas:2558-2578 (TfrmMPD005.btnPedidoVendaClick)
Dúvidas em aberto (o código não responde)
- Qual a diferença de comportamento entre os modos de OS 'H' (horas), 'K' (km) e 'O' (horímetro) além de qual grupo de campos fica visível? — Busca_Parametros só troca a visibilidade dos grupos grpORDEMSERVHORA/grpORDEMSERVKM/grpCONTROLEHORIMETRO conforme PARMFATUR.ST_ORDEMSERVICO; não há no módulo lido nenhuma outra regra de negócio explicando o propósito de cada modo (source/MPD005/UdmMPD005.pas:429-452).
- O que representam os valores possíveis do campo TP_ORDEMSERVICO além do padrão 'I' atribuído na inclusão? — tabORDEMSERVICOAfterInsert grava TP_ORDEMSERVICO := 'I' sem exibir combo de opções nem validação de domínio no código lido (source/MPD005/UdmMPD005.pas:1807-1825); o campo aparece num combo (cmbTP_ORDEMSERVICO) no .dfm, mas o significado de negócio de cada opção não está no código analisado.
- Qual a diferença prática entre os valores 'P' e 'A' do parâmetro ST_CODIGOBARRA, já que ambos apenas habilitam o campo de código de barras? — Busca_Parametros converte tanto 'P' quanto 'A' para iST_CODIGOBARRA='S' sem diferenciação posterior no código lido (source/MPD005/UdmMPD005.pas:453-462).
- O status 'P' (Gerado Pedido) da Ordem de Serviço afeta algo além de travar os botões Fechar/Pedido/Nota e impedir novo salvamento (W-2003)? — Não foi encontrada, no módulo MPD005, nenhuma outra regra (ex.: reflexo em estoque/financeiro) associada especificamente ao status 'P'; o tratamento observado se limita ao AfterOpen (source/MPD005/UdmMPD005.pas:2010-2031) e à trava de edição (source/MPD005/UMPD005.pas:637-639).
- Por que a validação de estoque negativo no modo de bloqueio forte não lança a exceção (falta 'Raise')? É um bug real ou intencional (feature desativada de propósito)? — O código instancia JException.Create('W-0000', ...) sem o comando Raise no ramo O_ST_BLOQUEIA='S' de ValidaEstoqueNegativo (source/MPD005/UdmMPD005.pas:1527-1531); não há comentário explicando se isso foi proposital ou esquecido.