Liquidação de ordens de serviços

Bom dia pessoal,

Galera, estou com um problema a resolver que queria muito a opinião e algumas dicas de vcs.

Em um módulo financeiro, onde tenho contas a pagar e receber, os usuários as vezes lançam documentos chamados ordem de serviços que chamarei de OS.

Essas OS tem valores, descrição, e varios outros dados, porém, elas são vinculadas a uma única nota fiscal que chamarei de NF.

O que eu preciso é que ao lançar a NF, que geralmente chega após o término dos serviços, eu possa vincular cada OS a essa NF em questão e quando isso acontecer, o status das OS vinculadas, passarão a ser liquidados. Porém, eu preciso que de alguma maneira, os valores dessas OS não venham nos relatórios, porque senão, vai totalizar um valor duplicado com o valor da NF. Lembrando que o valor da soma das OS subtraído do valor da NF devem ser iguais a zero.

Bom, depois de explicada a lógica, quero saber também a sugestão de qual ou quais aplicações eu devo usar para fazer tal trabalho, de forma que fique simples e com mínimo de passos possível?

Obrigado pessoal.

Faça uma Consulta (Grid) com botão do tipo run.

No filtro crie um campo manualmente para informar o nro da NF.

No Botão Run OnRecord Some as OS para validar com o total da nota.

No OnFinish valide e se estiver ok, faça o update na OS do Status.

Mas antes dessa validação, eu preciso vincular as OS com a NF.

Ou seja, no final do serviço, a NF chega na empresa e será lançada no sistema.

Depois de lançar ou no momento do lançamento, eu preciso localizar as OS que serão vinculadas com a NF, pq até o momento, elas estão “soltas” dentro da tabela, aguardando a chegada da nota para serem vinculadas.

O Botão run é para isso, vai aparecer o checkbox em cada linha para selecionar.

Mas não entendi como eu vou indicar qual NF vai ser vinculada com as OS.

Vi que vc falou de filtro, mas se eu buscar no filtro a NF, as OS não aparecerão na consulta.

Pelo visto tem um pulo do gato ai, mas não consegui entender.

Você vai criar um campo manualmente no filtro e iniciar a app de consulta pelo filtro.
Vai usar esse campo para informar a Nota Fiscal.

Bom, então eu não to conhecendo alguma coisa no filtro.

Eu sei que se eu iniciar pelo filtro, chamando a NF, a consulta vai listar apenas aquela NF.

De onde virão os dados das OS para serem checados?

Desculpe se eu estiver falando besteira, mas essa é a forma que monto a rotina na minha cabeça.

1 - Abri a aplicação no filtro
2 - busco o numero da nota fiscal no campo criado manualmente.
3 - A aplicação me exibe um resultado referente a busca. ou seja, as OS não virão.

Outra pergunta. Esse campo criado na aplicação de filtro fica em sessão ou como uma global, onde eu consiga utilizar ele nos eventos?

as os, vc pode filtrar por data, por status, etc… menos as que já tem nf associada.
O campo criado no filtro manualmente para digitar o nro da nf, não é para filtro das OS e sim para ao clicar no botão run associar as OS a referida nota fiscal informada nesse campo. Não é isso que deseja fazer?

Sim, agora entendi melhor,

na verdade eu não sabia que os campos do filtro (criados manualmente) ficavam disponíveis para serem utilizados nos eventos das consultas.

Bom, agora vou trabalhar no desenvolvimento da aplicação e qualquer dúvida posto aqui.

Obrigado!

Melhor que criar uma app de controle só par a informar a nf, e coo campos criados manualmente no filtro não são usados no where da consulta principal, mas ficam disponíveis como {CampoManual}, acaba servido como um formulário também.

Verdade, eu não conhecia essa funcionalidade na aplicação de filtro.

Isso pode facilitar muita coisa, pq alem dessas ordens de serviços, vou utilizar essa funcionalidade para lançar vales-transporte, refeição, vale combustível e outros dados que são iguais para muitos funcionários.

Surgiu uma duvida quanto ao evento onFinish do botão run.

nessa situação que me encontro, tenho que validar, para saber se as OS que serão relacionadas, bate o seu valor com a NF em questão.

Para fazer essa validação, estou usando uma condicional

if(condição){ executa }else{ exibe mensagem de erro }

O problema é justamente como exibir essa mensagem?

Preciso de ter uma forma de exibir essa mensagem, pois o usuário precisa saber que não ocorreu e o porque não ocorreu.

ECHO “MENSAGEM DE ERRO”;

Infelizmente isso foge do padrão das mensagens de erro que sistema emite com sc_error_message();

Bom,

acabei de descobrir que o sc V6 trata o echo de maneira melhor e exibe mais “bonitinho” a mensagem e ainda coloca um botãozinho de “OK”

Infelizmente não dá para você sempre fazer tudo exatamente como deseja.

Se você já testou a sc_error_message no botão run e não funcionou e essa macro é exigida para apresentar a mensagem então a sugestão para usar o botão run que eu dei não lhe atende.

Na verdade a macro citada não tem escopo em consultas… por isso nem testei.

Mas como falei na mensagem anterior, o echo até que ficou bem.