programa para implantar pedido de venda e suas bos

Discussão em 'EMS , HCM e Totvs 11' iniciado por Carlos Alberto Giusti, Fevereiro 9, 2023.

  1. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    Boa tarde.

    Alguém poderia me passar um exemplo de implantar pedido de venda utilizando as bos.

    Tenho dificuldade na utilização das bos.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Usar BO é um saco mesmo, mas eu sempre digo aqui, como as tabelas de pedidos de venda são o inicio do processo, ou seja, não depedente de outro processo pra elas nascerem e serem gerenciadas, vc pode criar direto nas tabelas, sem as BOs, só tomando cuidado com as regras de negocio é claro, as validações são necessárias, só ter o cuidado de não esquecer nenhuma tabela que dá tudo certo, pra isso que serve uma base teste, verificar se não esqueceu de nada sem prejudicar a base produção.
  3. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    fiz o programa usando as bos vendo como faz em outros programas. ele passa por toda parte mas não grava o pedido.
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Mostra pra gente o seu código
  5. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    montei o tt-ped-venda e o tt-ped-item. Você poderia me passar como implanto o pedido e os itens chamando as bos.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Exemplo:

    Código:
    {cdp\cdcfgmat.i}
    {cdp\cdapi300.i1}  /* Temp-Table de Erros   */
    {pdp\pdapi151.i}   /* Temp-Table Ped-Venda   */
    {pdp\pdapi151.i1}  /* Temp-Table Ped-Item    */
    {pdp\pdapi151.i2}  /* Temp-Table Ped-Repre   */
    {pdp\pdapi151.i3}  /* Temp-Table Ped-Ent     */
    {pdp\pdapi151.i4}  /* Temp-Table Cond-Ped    */
    {pdp\pdapi151.i5}  /* Temp-Table Ped-Antecip */
    {pdp\pdapi151.i6}  /* Temp-Table Pd-vendor   */
    {cdp\cdapi150.i3}  /* Temp-Table de Versão   */
    {cdp\cdapi150.i4}  /* Temp-Table de Erros    */
    
    //Aqui vc faz a carga das temp-tables
    
    //API que vai somente criar o pedido no PD4000, não vai completar o pedido
    RUN pdp\pdapi152.r (INPUT-OUTPUT TABLE tt-ped-venda,
                        INPUT-OUTPUT TABLE tt-ped-item,
                        INPUT-OUTPUT TABLE tt-ped-ent,
                        INPUT-OUTPUT TABLE tt-ped-repre,
                        INPUT-OUTPUT TABLE tt-con-pges,
                        INPUT-OUTPUT TABLE tt-ped-antecip,
                        INPUT-OUTPUT TABLE tt-versao-integr,
                        OUTPUT       TABLE tt-erros-geral,
                        INPUT        i-cod-maq-origem,
                        INPUT        i-num-processo,
                        INPUT        NO,
                        INPUT        TABLE tt-pd-vendor).
    
    FOR EACH tt-erros-geral NO-LOCK.
       CREATE TabErro.
       ASSIGN TabErro.identif-msg         = tt-erros-geral.identif-msg 
              TabErro.num-sequencia-erro  = tt-erros-geral.num-sequencia-erro
              TabErro.cod-erro            = tt-erros-geral.cod-erro   
              TabErro.des-erro            = tt-erros-geral.des-erro. 
    END.
    
    DEF VAR h-bodi149com AS HANDLE.
    RUN dibo\bodi159com.r PERSISTENT SET h-bodi149com.
    
    //Obs. 1: BO para Completar pedidos, precisa estar fora de uma TRANSACTIONS, use "MESSAGE TRANS VIEW-AS ALERT-BOX." para verificar se está dentro de uma transação se aparecer TRUE ou YES
    //Obs. 2: Eu não tenho certeza, mas a tt-ped-venda retorna com os campos nr-pedido, nr-pedcli e nome-abrev preenchidos após a API de criação, com eles tu faz um FIND pra pegar o ROWID do registro criado na ped-venda usado abaixo
    RUN CompleteOrder IN h-bodi149com (INPUT ROWID(ped-venda),
                                      OUTPUT TABLE RowErrors).
    
    FOR EACH RowErrors NO-LOCK.
       PUT UNFORMAT SKIP "Erros Encontrados ao Completar Pedido: "
                    SKIP "Num.: " STRING(ped-venda.nr-pedido)
                    SKIP "NumPedCli.: " STRING(ped-venda.nr-pedcli)
                    SKIP "Cliente.: " STRING(ped-venda.nome-abrev)
                    SKIP "---------------------------------------------------------"
                    SKIP "Seq.: " STRING(RowErrors.ErrorSequence)
                    SKIP "Num.: " STRING(RowErrors.ErrorNumber)
                    SKIP "Descrição: " STRING(RowErrors.ErrorDescription)
                    SKIP "Parametros.: " STRING(RowErrors.ErrorParameters)
                    SKIP "Tipo.: " STRING(RowErrors.ErrorType)
                    SKIP "SubTipo.: " STRING(RowErrors.ErrorSubType)
                    SKIP "Help.: " STRING(RowErrors.ErrorHelp)
                    SKIP "---------------------------------------------------------" SKIP(1).
    END.
    DELETE PROCEDURE h-bodi149com.
    
    
    Última edição: Fevereiro 10, 2023

Compartilhe esta Página