[RESOLVIDO] Reporte producao customizado.

Discussão em 'EMS , HCM e Totvs 11' iniciado por reissobr, Fevereiro 15, 2017.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    então, só pra conhecimento, eu acabei sugerindo o no-wait pra vc mas não dei um exemplo pratico, vamos a ele, eu tenho uma tabela cst_orcamento_nfe_cte, o objetivo dessa tabela é verificar se foi gerado CTe para NFe antes do prazo de vida para transporte de uma NFe, no caso, a regra diz que é 48Hrs., nós temos um regime especial que nos permite 7Dias, ou seja, se for pra entregar uma mercadoria usando a nota fiscal, tem que estar dentro desse prazo ou entregar pra transportadora fazer um CTe dela, então, toda a venda que acontece que é o frete por nossa conta, gera esse registro, e toda vez que entra no programa de venda (frente de loja) verifica se as notas que estão nessa lista tem CTe, se não tiver e a data de emissão da nota estiver com mais de 6 dias, trava o programa de venda, ninguem vende até resolver o caso.
    Dai que surgiu o problema, bem naquele momento em que um vendedor tá fechando a venda e gerando esse registro, entra outro no programa de vendas e dá a mensagem de registro em uso por outro usuario nessa tabela, a solução foi no verificador .....
    Código:
                empty temp-table tt_orcamento_nfe_cte.
                repeat preselect each cst_orcamento_nfe_cte where cst_orcamento_nfe_cte.cod_Canal_venda = codCanalVenda:
                    find next cst_orcamento_nfe_cte no-error no-wait.
                    if not avail cst_orcamento_nfe_cte then leave.
                    if not locked cst_orcamento_nfe_cte then do:
                        create tt_orcamento_nfe_cte.
                        buffer-copy cst_orcamento_nfe_cte to tt_orcamento_nfe_cte
                            assign tt_orcamento_nfe_cte.recid_ = recid(cst_orcamento_nfe_cte).
                    end.
                end.
    
    Faz um preselect dos registros, no find verifica se o registro não esta em uso, joga pra temp-table somente os registros livres e faz a verificação, afinal, o registro que está sendo gerado no momento não interessa avaliar, esse tem 7 dias pra vencer, depois, na minha rotina eu brinco com a temp-table.

    A iéia que eu queria te dar era isso, antes de entrar nas APIs e tal para fazer os processos, fazer um find com no-wait, se o registro estiver livre, deixa rolar a rotina, caso contrario, vc dá um tratamento seu pra não aparecer a mensagem de registro em uso.
    reissobr curtiu isso.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    a totvs usa esse recurso na tabela ser-estab, pra que um programa gerando nota fique esperando até que o outro libere o registro, pra pegar proximo numero de nota.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página