1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PD4000D - COPIA PEDIDO

Discussão em 'EMS , HCM e Totvs 11' iniciado por Marcos Frasson, Julho 28, 2021.

  1. Marcos Frasson

    Marcos Frasson Membro Participativo

    Olá Pessoal,

    Alguém sabe me informar qual API é usada no programa PD4000D para fazer cópia de Pedido de Vendas?

    Se alguém já precisou usar e puder informar e ou tiver algum exemplo de utilização, me ajudaria muito para uma necessidade que surgiu.

    Obrigado desde já!
  2. bootstrapmaster

    bootstrapmaster Membro Master

    Código:
    Logica do botão incluir do PD4000D:
    
        assign bt-inclui:sensitive  in frame {&frame-name} = no
               bt-altera:sensitive  in frame {&frame-name} = no
               bt-elimina:sensitive in frame {&frame-name} = yes.
    
        if  num-results("br-digita") > 0 then do:
            find last tt-ped-copia no-error.
            if  avail tt-ped-copia then
                reposition br-digita to rowid rowid(tt-ped-copia) no-error.
            br-digita:insert-row("after") in frame {&frame-name}.
        end.
        else do trans:
            create tt-ped-copia.
            open query br-digita for each tt-ped-copia.
            apply "entry" to tt-ped-copia.nome-abrev in browse br-digita.
        end.
        if not valid-handle(bo-ped-venda-sdf) or
                            bo-ped-venda-sdf:type <> "PROCEDURE":U or
                            bo-ped-venda-sdf:file-name <> "dibo/bodi159sdf.p" then
           run dibo/bodi159sdf.p persistent set bo-ped-venda-sdf.
    
        run setDefaultOrderNumber in bo-ped-venda-sdf ( output i-sequencia).
    
        if valid-handle(bo-ped-venda-sdf) then
          delete procedure bo-ped-venda-sdf.
    
    
    
    Logica do botão OK do PD4000D:
    
      run utp/ut-acomp.p persistent set h-acomp.
      {utp/ut-liter.i Copiando_Pedido *}
      run pi-inicializar in h-acomp ( Return-value ).
      {utp/ut-liter.i Criando_pedidos *}
      run pi-acompanhar in h-acomp (input  Return-value ).
    
      if not valid-handle(bo-ped-venda) or
         bo-ped-venda:type <> "PROCEDURE":U or
         bo-ped-venda:file-name <> "dibo/bodi159cpy.p" then
         run dibo/bodi159cpy.p persistent set bo-ped-venda.
    
      for each RowErrors:
          delete RowErrors.
      end.
    
      /* Necessario para que o pedido copiado fique com a mesma quantidade do pedido original */
      if i-qtde-item = 2 then do:
          find first ped-venda where rowid(ped-venda) = p-rw-ped-venda no-lock no-error.
          for each ped-item of ped-venda no-lock:
              find item-cli where
                   item-cli.it-codigo  = ped-item.it-codigo and
                   item-cli.nome-abrev = ped-item.nome-abrev no-lock no-error.
              if  avail item-cli then
                  for first tt-item-copia where tt-item-copia.it-codigo = item-cli.it-codigo:
                        assign tt-item-copia.qt-pedida = tt-item-copia.qt-pedida / (item-cli.fator-conversao / exp(10, item-cli.num-casa-dec)).
                  end.
          end.
      end.
    
      run inputRowParam       in bo-ped-venda(input table RowParam).
      run inputUserLogOrder   in bo-ped-venda(input p-c-usuario). /*usuario logado no pd4000*/
      run copyOrder in bo-ped-venda(input  p-rw-ped-venda,
                                    input  table tt-ped-copia,
                                    input  table tt-item-copia,
                                    input  i-situacao,
                                    input  i-natur-oper,
                                    input  l-exp-dt-entrega,
                                    output gr-ped-venda,
                                    output table RowErrors).
      delete procedure bo-ped-venda.
    
      if  can-find(first RowErrors
                   where RowErrors.ErrorType <> "INTERNAL":U) then do:
          {method/showmessage.i1}
          {method/showmessage.i2}
      end.
    
      if  not can-find(first RowErrors
                       where RowErrors.ErrorType <> "INTERNAL":U
                         and RowErrors.ErrorSubType = "Error":U) then do:
    
          for each tt-ped-copia:
              delete tt-ped-copia.
          end.
    
          assign l-copia-efetuada = yes.
          {&OPEN-QUERY-br-digita}
      end.
    
      run pi-finalizar in h-acomp.
    
      find first ped-venda where
           rowid(ped-venda) = p-rw-ped-venda no-lock no-error.
    
      IF gr-ped-venda = ? THEN DO:
         ASSIGN gr-ped-venda = p-rw-ped-venda.
      END.
    
  3. Marcos Frasson

    Marcos Frasson Membro Participativo

    Opa muito Obrigado..

    Você teria a definição da temp-table tt-ped-copia? Quando rodo o programa está dando erro anexo, para definição para tentar realizar um teste eu defini a temp-tablem assim DEFINE TEMP-TABLE tt-ped-copia LIKE mgmov.ped-venda.

    Arquivos Anexados:

  4. bootstrapmaster

    bootstrapmaster Membro Master

    bodi159cpy.i

    Código:
                        find first cst_ger_prod_ord where cst_ger_prod_ord.nr-ord-produ = ord-prod.nr-ord-produ no-lock no-error.
                        if avail cst_ger_prod_ord then do:
                            if cst_ger_prod_ord.diferenca <> 0 then do:
    
                            end.
                        end.
    
  5. bootstrapmaster

    bootstrapmaster Membro Master

    O CTRL-C / CTRL-V me traiu hehehehe
    Código:
    &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12
    &ANALYZE-RESUME
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS DBOTempTable
    /*--------------------------------------------------------------------------
        Library    : dbott.i
        Purpose    : Include que cont‚m defini‡Æo da temptable RowObject
    
        Parameters :
    
        Notes      :
      ------------------------------------------------------------------------*/
    /*          This .W file was created with the Progress UIB.               */
    /*------------------------------------------------------------------------*/
    
    /* ***************************  Definitions  **************************** */
    
    &GLOBAL-DEFINE ROW-NUM-DEFINED YES
    
    def temp-table tt-item-copia NO-UNDO
        field nr-sequencia like ped-item.nr-sequencia
        field it-codigo    like ped-item.it-codigo
        field desc-item    like item.desc-item
        field qt-pedida    like ped-item.qt-pedida
        field dt-entrega   like ped-item.dt-entrega
        field selecionado  as log init yes.
    
    def temp-table tt-ped-copia NO-UNDO
        field nome-abrev      like ped-venda.nome-abrev
        field nr-pedido       like ped-venda.nr-pedido
        field nr-pedcli       like ped-venda.nr-pedcli
        field dt-emissao      like ped-venda.dt-emissao
        field dt-entrega      like ped-venda.dt-entrega
        field nr-tab-finan    like ped-venda.nr-tab-finan
        field nr-ind-finan    like ped-venda.nr-ind-finan
        field cod-cond-pag    like ped-venda.cod-cond-pag
        field cod-entrega     like ped-venda.cod-entrega
        field nome-transp     like ped-venda.nome-transp
        field perc-desco1     like ped-venda.perc-desco1
        field esp-ped         like ped-venda.esp-ped
        field tp-preco        like ped-venda.tp-preco
        field vl-desconto     like ped-venda.vl-desconto
        field e-mail          like emitente.e-mail
        field ind-apr-cred    like emitente.ind-apr-cred
        field ind-cre-cli     like emitente.ind-cre-cli.
    
    def temp-table tt-cliente NO-UNDO
        field nome-abrev   like emitente.nome-abrev
        field cod-emitente like emitente.cod-emitente
        field nome-emit    like emitente.nome-emit
        field cod-gr-cli   like emitente.cod-gr-cli
        field cod-entrega  like emitente.cod-entrega
        field selecionado  as log format "X/ " init no
        index id-nome   is primary nome-abrev
        index id-gr-cli cod-gr-cli.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
    
    /* ********************  Preprocessor Definitions  ******************** */
    
    
    
    /* _UIB-PREPROCESSOR-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    /* *********************** Procedure Settings ************************ */
    
    &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
    /* Settings for THIS-PROCEDURE
       Type: DBOTempTable
       Allow:
       Frames: 0
       Add Fields to: Neither
       Other Settings: INCLUDE-ONLY
    */
    &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
    
    /* *************************  Create Window  ************************** */
    
    &ANALYZE-SUSPEND _CREATE-WINDOW
    /* DESIGN Window definition (used by the UIB)
      CREATE WINDOW DBOTempTable ASSIGN
             HEIGHT             = 2.01
             WIDTH              = 40.
    /* END WINDOW DEFINITION */
                                                                            */
    &ANALYZE-RESUME
    
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK DBOTempTable
    
    
    /* ***************************  Main Block  *************************** */
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    Marcos Frasson curtiu isso.
  6. Marcos Frasson

    Marcos Frasson Membro Participativo

    Tranquilo, está ajudando bastante.....

    Estou tendo erro de Natureza de Operação erro no print, na execução da tt-copia-pedido, eu estou passando o nome-abrev e nr-pedcli, e ocorre o erro.

    Esse parâmetro RowParam vc tem a definição dele? E também o precisa passar ali? Não sei se o erro que estou tendo pode ter relação de essa linha run inputRowParam in bo-ped-venda(input table RowParam) está comentada aqui.

    Agradeço pelo apoio.

    Arquivos Anexados:

Compartilhe esta Página