1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Urgente Inclusão tag infAdProd

Discussão em 'EMS , HCM e Totvs 11' iniciado por Pedro Neto, Dezembro 26, 2022.

  1. Pedro Neto

    Pedro Neto Sem Pontuação

    Bom dia a todos!

    Estou tentando incluir na tag "infAdProd" do XML da nota fiscal o código do item de cada item que tiver naquela nota fiscal,porém não estou conseguindo, estou tentando usar o axsep017.p para fazer essa alteração, mas toda vez que ele inclui o código ele repete para todos os itens. Alguém sabe o que pode estar errado?


    IF SEARCH('upc/upc-axsep017-NFRef.p') <> ? OR
    SEARCH('upc/upc-axsep017-NFRef.r') <> ? THEN
    RUN upc/upc-axsep017-NFRef.p (INPUT p-ind-event,
    INPUT-OUTPUT TABLE tt-epc).
    FOR FIRST tt-epc NO-LOCK
    WHERE tt-epc.cod-event = "AtualizaDadosNFe":U
    AND tt-epc.cod-parameter = "ttDet":U :

    ASSIGN h-ttDet = WIDGET-HANDLE(tt-epc.val-parameter)
    hQueryBuffer = h-ttDet:DEFAULT-BUFFER-HANDLE.

    IF VALID-HANDLE(hQueryBuffer) THEN
    DO:
    CREATE QUERY h-query.
    h-query:SET-BUFFERS(hQueryBuffer).
    h-query:QUERY-PREPARE('FOR EACH ' + h-ttDet:NAME + ' NO-LOCK').
    h-query:QUERY-OPEN().

    REPEAT ON ERROR UNDO, LEAVE:
    h-query:GET-NEXT() NO-ERROR.
    IF h-query:QUERY-OFF-END THEN
    LEAVE.

    ASSIGN h-CodEstabelNF = hQueryBuffer:BUFFER-FIELD('CodEstabelNF') NO-ERROR.
    h-serieNF = hQueryBuffer:BUFFER-FIELD('SerieNF') NO-ERROR.
    h-NrNotaFisNF = hQueryBuffer:BUFFER-FIELD('NrNotaFisNF') NO-ERROR.
    h-xPed = hQueryBuffer:BUFFER-FIELD('xPed') NO-ERROR.
    h-infAdProd = hQueryBuffer:BUFFER-FIELD('infAdProd') NO-ERROR.

    FOR FIRST nota-fiscal NO-LOCK
    WHERE nota-fiscal.cod-estabel = h-CodEstabelNF:BUFFER-VALUE
    AND nota-fiscal.serie = h-serieNF:BUFFER-VALUE
    AND nota-fiscal.nr-nota-fis = h-NrNotaFisNF:BUFFER-VALUE:


    FIND first emitente NO-LOCK
    WHERE emitente.nome-abrev = nota-fiscal.nome-ab-cli NO-ERROR.
    /* Tratamento para o cliente Ferramentas Gerais */
    /************************************************/
    IF AVAIL emitente and
    /*
    (emitente.cgc BEGINS "92664028" OR
    emitente.cgc BEGINS "92.664.028") or
    */
    emitente.cod-emitente = 29135 THEN /* Jefferson -> para testes */
    DO:
    for each it-nota-fisc OF nota-fiscal NO-LOCK:
    MESSAGE it-nota-fisc.it-codigo VIEW-AS ALERT-BOX.
    FIND LAST itens-cli NO-LOCK
    WHERE (itens-cli = "92664028"
    OR itens-cli = "92.664.028"
    OR itens-cli = emitente.cod-emitente)
    AND itens-cli = it-nota-fisc.it-codigo
    AND itens-cli <= nota-fiscal.dt-emis-nota
    AND itens-cli >= nota-fiscal.dt-emis-nota NO-ERROR.
    IF AVAIL itens-cli THEN
    DO:
    ASSIGN h-infAdProd = hQueryBuffer:BUFFER-FIELD('infAdProd') NO-ERROR. // Grava no det a tag InfAdProd
    ASSIGN h-infAdProd:BUFFER-VALUE = itens-cli.it-cliente /* itens-cli-condor.it-cliente */.

    MESSAGE h-infAdProd SKIP
    hQueryBuffer:BUFFER-FIELD('infAdProd') SKIP
    h-infAdProd:BUFFER-VALUE SKIP
    it-nota-fisc.it-codigo SKIP
    itens-cli-condor.it-cliente SKIP VIEW-AS ALERT-BOX.
    END.
    END. /* for each it-nota-fisc */
    END. /* if avail emitente */
    end. /* if avail nota-fiscal */
    END. /* FOR FIRST nota-fiscal */
    END. /* REPEAT ON ERROR UNDO, LEAVE: */
    END. /* IF VALID-HANDLE(hQueryBuffer) */
    END. /* FOR FIRST tt-epc NO-LOCK */
  2. lcpaulino

    lcpaulino Membro Participativo

    Bom dia, nem li o código, mas atualmente o Datasul utiliza o axsep037.p para versão 4.0 do XML, o axsep017.p era para versão 2.0 do XML e o axsep027.p era para versão 3.0 do XML. Eu tentaria primeiro mudar a UPC para o programa axsep037.p
  3. hpfaff

    hpfaff Membro Participativo

    Pedro, faltou ponteirar o infAdProd com o item da nota fiscal.
    No meu, fiz dessa maneira:

    CREATE QUERY h-query.
    h-query:SET-BUFFERS(hQueryBuffer).
    h-query:QUERY-PREPARE('FOR EACH ' + h-ttDet:NAME + ' NO-LOCK').
    h-query:QUERY-OPEN().
    h-query:GET-FIRST() NO-ERROR.
    REPEAT ON ERROR UNDO, LEAVE:
    ASSIGN h-cod-estabel = hQueryBuffer:BUFFER-FIELD('CodEstabelNF') NO-ERROR.
    ASSIGN h-serie = hQueryBuffer:BUFFER-FIELD('SerieNF') NO-ERROR.
    ASSIGN h-nr-nota-fis = hQueryBuffer:BUFFER-FIELD('NrNotaFisNF') NO-ERROR.
    CASE tt-epc.cod-parameter:
    WHEN "ttDet" THEN DO:
    ASSIGN h-it-codigo = hQueryBuffer:BUFFER-FIELD('ItCodigoNF') NO-ERROR.
    ASSIGN h-nr-seq-fat = hQueryBuffer:BUFFER-FIELD('NrSeqFatNF') NO-ERROR.

    FIND FIRST it-nota-fisc
    WHERE it-nota-fisc.cod-estabel = h-cod-estabel:BUFFER-VALUE AND
    it-nota-fisc.serie = h-serie:BUFFER-VALUE AND
    it-nota-fisc.nr-nota-fis = h-nr-nota-fis:BUFFER-VALUE AND
    it-nota-fisc.nr-seq-fat = h-nr-seq-fat:BUFFER-VALUE AND
    it-nota-fisc.it-codigo = h-it-codigo:BUFFER-VALUE


    Veja que eu pego o buffer-field do ItCodigoNF e NrSeqFatNF.... tenta criar variável e troca o seu for each da it-nota-fisc colocando os novos campos.


    Espero ter ajudado.
  4. hpfaff

    hpfaff Membro Participativo

    Pedro, faltou ponteirar o infAdProd com o item da nota fiscal.
    No meu, fiz dessa maneira:

    CREATE QUERY h-query.
    h-query:SET-BUFFERS(hQueryBuffer).
    h-query:QUERY-PREPARE('FOR EACH ' + h-ttDet:NAME + ' NO-LOCK').
    h-query:QUERY-OPEN().
    h-query:GET-FIRST() NO-ERROR.
    REPEAT ON ERROR UNDO, LEAVE:
    ASSIGN h-cod-estabel = hQueryBuffer:BUFFER-FIELD('CodEstabelNF') NO-ERROR.
    ASSIGN h-serie = hQueryBuffer:BUFFER-FIELD('SerieNF') NO-ERROR.
    ASSIGN h-nr-nota-fis = hQueryBuffer:BUFFER-FIELD('NrNotaFisNF') NO-ERROR.
    CASE tt-epc.cod-parameter:
    WHEN "ttDet" THEN DO:
    ASSIGN h-it-codigo = hQueryBuffer:BUFFER-FIELD('ItCodigoNF') NO-ERROR.
    ASSIGN h-nr-seq-fat = hQueryBuffer:BUFFER-FIELD('NrSeqFatNF') NO-ERROR.

    FIND FIRST it-nota-fisc
    WHERE it-nota-fisc.cod-estabel = h-cod-estabel:BUFFER-VALUE AND
    it-nota-fisc.serie = h-serie:BUFFER-VALUE AND
    it-nota-fisc.nr-nota-fis = h-nr-nota-fis:BUFFER-VALUE AND
    it-nota-fisc.nr-seq-fat = h-nr-seq-fat:BUFFER-VALUE AND
    it-nota-fisc.it-codigo = h-it-codigo:BUFFER-VALUE


    Veja que eu pego o buffer-field do ItCodigoNF e NrSeqFatNF.... tenta criar variável e troca o seu for each da it-nota-fisc colocando os novos campos.


    Espero ter ajudado.
    Pedro Neto curtiu isso.

Compartilhe esta Página