[RESOLVIDO] Inserir número do Pedido Cliente na NF-e

Discussão em 'EMS , HCM e Totvs 11' iniciado por Obi-Wanso, Setembro 13, 2012.

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

    Obi-Wanso Sem Pontuação

    Olá,
    Boa tarde.

    Estou desenvolvendo uma UPC para inserir o número do Pedido Cliente no campo Informações Complementares da NF-e mas estou enfrentando um(s) problema(s).
    :p

    Ao tentar executar o programa ele me retorna a mensagem "Parameter buffer for b-wt-it-docto in <caminho>/<arquivo> not matched by caller. (3241)".

    Código:
    /* trigger para gravar número do pedido cliente na obs no arq temporario de item da nota */
    DEFINE BUFFER usuar_mestre FOR ems2mult.usuar_mestre.
    {utp/ut-glob.i}
    
    DEFINE PARAMETER BUFFER b-wt-it-docto FOR wt-it-docto.
    
    if b-wt-it-docto.nr-pedcli <> "" AND b-wt-it-docto.nr-sequencia = 10 then do:
    	find first wt-docto WHERE wt-docto.seq-wt-docto = b-wt-it-docto.seq-wt-docto no-lock no-error.
    	If avail wt-docto then do:
    		if substring(wt-docto.observ-nota,1,13) <> "Ped. Cliente:" then do:
    			assign wt-docto.observ-nota = "Ped. Cliente: " + STRING(b-wt-it-docto.nr-pedcli, "x(12)")+ " | " + wt-docto.observ-nota.
    		end.
    	end.
    end.
    
    Alguém tem ideia de como seria a melhor forma de contornar essa situação?

    Desde já agradeço.

    P.S.: Esse código é baseado no código do "jucelino" postado em 2010 => http://www.4each.com.br/viewtopic.php?f=52&t=1887#p6253
  2. tandujar

    tandujar Membro Participativo

    Retire esta include do programa e adicione esta variável global.

    def new global shared var v_cod_usuar_corren as CHARACTER format "x(12)" NO-UNDO.
  3. Obi-Wanso

    Obi-Wanso Sem Pontuação

    Primeiramente, muito obrigado pela sua resposta.

    Eu fiz essa inserção no código e comentei o include. Agora compilou, mas ao tentar executar o programa me dá a seguinte mensagem:
    :/
  4. Obi-Wanso

    Obi-Wanso Sem Pontuação

    Olá,
    Boa tarde.

    Finalmente consegui colocar o número do Pedido Cliente no campo informações complementares da NF-e e replicando com o XML conforme determina a Receita/SEFAZ/SEFA.

    Primeiro, como eu estava fazendo, através de UPC para a tabela write do banco wt-docto e, posteriormente para a tabela wt-it-docto não consegui.
    Então, como fiz. Criei uma UPC para o programa FT4001 (cadastrado através do programa men/men012aa.w) que ao ser acionado o botão de "Seleciona o embarque para cálculo" da tela FT4001 ele insere esta informação no campo "observ-nota" da tabela "wt-docto".
    Abaixo segue o código que pode ajudar outras pessoas. Ele está bem comentado então é de fácil entendimento (acredito eu hehehe)

    Código:
    /* 
      Arquivo           : ftp/upc-ftp4001.p
      Descrição         : Gravar numero do pedido cliente no campo informacoes 
    		 	 			: complementares da nfe
      Autor(s)          : Eric Andersen Bevervanso
      Data Criação      : 18:26 24/09/2012
      Notas             : 206.01.001
    -------------------------------------------------------------------------------------*/
    /* Parametros de entrada
    -------------------------------------------------------------------------------------*/
    DEFINE INPUT PARAM p-ind-event   AS CHARACTER     NO-UNDO. 
    DEFINE INPUT PARAM p-ind-object  AS CHARACTER     NO-UNDO.
    DEFINE INPUT PARAM p-wgh-object  AS HANDLE        NO-UNDO.
    DEFINE INPUT PARAM p-wgh-frame   AS WIDGET-HANDLE NO-UNDO.
    DEFINE INPUT PARAM p-cod-table   AS CHARACTER     NO-UNDO.
    DEFINE INPUT PARAM p-row-table   AS ROWID         NO-UNDO.
    /* buscamos quando habilita o embarque
    -------------------------------------------------------------------------------------*/        
    IF p-ind-event = "HabilitaCalculaEmbarque" AND p-ind-object = "CONTAINER" THEN DO:
        /* buffer para dados de embarque */
        DEFINE BUFFER bf-embarque FOR embarque.
        /* localiza o embarque */
        FIND FIRST bf-embarque 
            NO-LOCK WHERE ROWID( bf-embarque ) = p-row-table.
        /* encontramos */
        IF AVAILABLE (bf-embarque) THEN DO:
    		/* localiza o documento depois de habilitado o calculo */
            FIND FIRST wt-docto OF bf-embarque NO-ERROR.
            /* encontramos */
            IF AVAILABLE ( wt-docto ) THEN DO:
    			/* Gravar número do pedido cliente no campo de informações complementares */
    			/* Verifica se no campo de observacao jah nao esta gravado o pedido */
    			if ( substring(wt-docto.observ-nota,1,13) <> "Ped. Cliente:" ) then do:
    				/* não está. Então grava o valor do Pedido Cliente na observação */
    				assign wt-docto.observ-nota = "Ped. Cliente: " + STRING(wt-docto.nr-pedcli, "x(12)")+ " | " + wt-docto.observ-nota.
    			end.
    			/* Fim gravação número pedido cliente no campo informações complementares */
            END.
        END.
    END.
    /* finalizamos
    --------------------------------------------------------------------------------------------------*/
    
    :roll:

    Sintam-se livres para utilizá-lo e melhorá-lo caso queiram.

    Abraços.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página