[RESOLVIDO] Criação Ordem de Compra - CC0301

Discussão em 'EMS , HCM e Totvs 11' iniciado por noellen, Janeiro 28, 2014.

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

    noellen Equipe de Suporte Moderador Equipe de Suporte

    Olá, bom dia,

    por favor, estou precisando criar ordens de compras da mesma forma que o CC0301. Estou utilizando a ccapi0302 mas está apresentando erros de parâmetros mesmo passando exatamente conforme a documentação, tentei fazer como o CC0300 utilizando a boin274 se não me engano, mas tbm não está dando certo pq envolve a criação de pedido, e nesse caso NÃO pode haver criação de pedido, apenas da ordem, cotação e parcela.

    Aqui no fórum tem um exemplo de como fazer a criação da parcela (http://4each.com.br/threads/criar-novas-parcelas.2389/) será que a melhor forma para criar a ordem então seria dar create direto no banco e usar as bo's apenas para as parcelas?

    Se alguém tiver exemplo de uma forma melhor de fazer isso agradeço.

    Att.
  2. asartori

    asartori Membro Participativo

    Oiii, td bem?
    Passa seu email pra mim...
  3. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Noellen,

    Na sua rotina, vc fez a definicao das tabelas temporárias, vc colocou {cdp/cdcfgmat.i} no inicio da sua rotina, pois se define as tt através da include tem que esta o cdcfgmat para definir os preprocessor.

    Me mande por e-mail sua rotina com a definicao das tt e a chamada da bo e envie a tela do erro com o conteudo do botao AJUDA.

    Dou uma olhada e te respondo onde deve corrigir.
    noellen curtiu isso.
  4. noellen

    noellen Equipe de Suporte Moderador Equipe de Suporte

    @asartori , meu e-mail é noellen.samara@gmail.com , desde já obrigada ;)

    Eduardo, utilizando a ccapi302 defini as temp-tables no fonte exatamente conforme a documentação, não sabia que tinha que colocar esse {cdp/cdcfgmat.i} no início. Assim que chegar na empresa amanhã testo e coloco o código por aqui, muito obrigada pela dica :D
  5. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Noellen,

    Só um detalhe, vc está definindo as tt na mão ou usando a include {ccp\ccapi202.i}, o ideal é você definir sempre usando as includes, pois qualquer alteração no padrao nao te da problema.

    Por exemplo: Para usar a CCAPI302, no inicio da rotina defina as includes abaixo:

    /*definicao da temp-table tt-ordem-compra e tt-prazo-compra*/
    {cdp/cdcfgmat.i}
    {ccp/ccapi202.i}
    {ccp/ccapi207.i}
    {cdp/cdapi300.i1}

    Se você nao tiver estas includes, elas pode estar dentro do diretorio "fontes\ccp" do ems206, no arquivo cc0305.zip tem as includes do ccp.

    Veja por que devemos colocar os "cfg" (neste caso o cdcfgmat.i). Na include ccapi202 tem a seguinte sintaxe:

    &IF '{&bf_mat_versao_ems}' >= '2.04' &THEN

    DEF TEMP-TABLE tt-matriz-rat-med-aux NO-UNDO LIKE matriz-rat-med.
    DEF TEMP-TABLE tt-matriz-rat-med NO-UNDO LIKE matriz-rat-med
    FIELD cod-maq-origem AS INTEGER FORMAT "999" INITIAL 0
    FIELD num-processo AS INTEGER FORMAT ">>>>>>>>9" INITIAL 0
    FIELD num-sequencia AS INTEGER FORMAT ">>>>>9" INITIAL 0
    FIELD ind-tipo-movto AS INTEGER FORMAT "99" INITIAL 1
    INDEX ch-codigo IS PRIMARY cod-maq-origem
    num-processo
    num-sequencia.
    &ENDIF

    O "&bf_mat_versao_ems" está definido no cdcfgmat.i, portanto se voce nao colocar a include este preprocessor nao estara definido, sendo assim as tt que estao dentro dele nao serao compiladas no *.r.
  6. noellen

    noellen Equipe de Suporte Moderador Equipe de Suporte

    Obrigada pela ajuda Eduardo,

    foi problema com as includes mesmo, não sabia que estavam compactadas em fontes e aí o que o sistema reclamava de tt eu declarava no próprio programa.

    Minha amiga Adriana me passou um exemplo, e pegando todas as includes do padrão deu certo ;) Vlw mesmo!!!



    Segue abaixo o fonte para posteriores dúvidas, no meu caso não estou criando o pedido pq será feito posteriormente na rotina daqui da empresa.

    Código:
    /******************************************************************************
    ** Programa :
    ** Data    : 30/01/2014
    ** Autor    : Noellen Samara
    ** Objetivo : API para criacao de PEDIDO COMPRA/ORDEM/COTACAO/PRAZO
    *******************************************************************************/
    
    /* definicao de buffers */
    DEF BUFFER bf-emitente              FOR emitente.
    DEF BUFFER bf-transporte            FOR transporte.
    DEF BUFFER bf-pedido-compr          FOR pedido-compr.
    DEF BUFFER bf-ordem-compra          FOR ordem-compra.
    DEF BUFFER bf-item-fornec          FOR item-fornec.
    
    DEF VAR multiplicador  as decimal /* LIKE fator_conversao.fator */ NO-UNDO.
    DEF VAR preco          as decimal /* LIKE item_contrato.preco  */ NO-UNDO.
    DEF VAR transportadora as CHAR    /* LIKE transporte.nome-abrev */ NO-UNDO.
    
    DEF TEMP-TABLE RowErrors NO-UNDO
        FIELD ErrorSequence            AS INT
        FIELD ErrorNumber              AS INT
        FIELD ErrorDescription          AS CHAR FORMAT "x(100)"
        FIELD ErrorParameters          AS CHAR FORMAT "x(100)"
        FIELD ErrorType                AS CHAR FORMAT "x(100)"
        FIELD ErrorHelp                AS CHAR FORMAT "x(100)"
        FIELD ErrorSubType              AS CHAR FORMAT "x(100)".
    
    /* definicoes para pedido de compra */
    DEF VAR i-num-pedido                AS INT    NO-UNDO.
    DEF VAR i-num-ordem                AS INT    NO-UNDO.
    
    DEF NEW GLOBAL SHARED VAR c-seg-usuario AS CHAR NO-UNDO.
    
    
    /* DEF TEMP-TABLE tt-item-fornec NO-UNDO LIKE item-fornec                  */
    /*    FIELD cod-maq-origem            AS INT FORMAT "999"      INITIAL 0  */
    /*    FIELD num-processo              AS INT FORMAT ">>>>>>>>9" INITIAL 0  */
    /*    FIELD num-sequencia            AS INT FORMAT ">>>>>9"    INITIAL 0  */
    /*    FIELD ind-tipo-movto            AS INT FORMAT "99"        INITIAL 1  */
    /*    INDEX ch-codigo IS PRIMARY  cod-maq-origem                          */
    /*                                num-processo                            */
    /*                                num-sequencia.                          */
    /*                                                                          */
    /* DEF TEMP-TABLE tt-desp-item-fornec NO-UNDO LIKE desp-item-fornec        */
    /*    FIELD cod-maq-origem            AS INT FORMAT "999"      INITIAL 0  */
    /*    FIELD num-processo              AS INT FORMAT ">>>>>>>>9" INITIAL 0  */
    /*    FIELD num-sequencia            AS INT FORMAT ">>>>>9"    INITIAL 0  */
    /*    FIELD ind-tipo-movto            AS INT FORMAT "99"        INITIAL 1  */
    /*    INDEX ch-codigo IS PRIMARY  cod-maq-origem                          */
    /*                                num-processo                            */
    /*                                num-sequencia.                          */
    
    DEFINE TEMP-TABLE tt-erros-geral NO-UNDO
        FIELD identif-msg              AS CHAR  FORMAT 'x(60)'
        FIELD num-sequencia-erro        AS INT  FORMAT '999'
        FIELD cod-erro                  AS INT  FORMAT '99999'
        FIELD des-erro                  AS CHAR  FORMAT 'x(60)'
        FIELD cod-maq-origem            AS INT  FORMAT '999'
        FIELD num-processo              AS INT  FORMAT '999999999'.
    
    
    
    /* def temp-table tt-desp-cotacao-item no-undo like desp-cotacao-item
        field cod-maq-origem    as integer format "999"            initial 0
        field num-processo      as integer format ">>>>>>>>9" initial 0
        field num-sequencia      as integer format ">>>>>9"      initial 0
        field ind-tipo-movto      as integer format "99"                initial 1
        INDEX ch-codigo IS PRIMARY cod-maq-origem
                                  num-processo
                                  num-sequencia. */
    
    
    
    /*******************************************************************/
    
    /* Includes necessarias para rodar a API */
    {cdp/cdcfgmat.i}
    {ccp\ccapi202.i}
    {ccp\ccapi203.i}
    {ccp\ccapi205.i}
    {ccp\ccapi207.i}
    
    DEFINE TEMP-TABLE tt-versao-integr NO-UNDO
        FIELD cod-versao-integracao AS INTEGER FORMAT '999'
        FIELD ind-origem-msg        AS INTEGER FORMAT '99'.
    
    /* DEFINE TEMP-TABLE tt-pedido-compr-aux1 LIKE tt-pedido-compr.            */
    /* DEFINE TEMP-TABLE tt-ordem-compra-aux1 LIKE tt-ordem-compra.            */
    /* DEFINE TEMP-TABLE tt-prazo-compra-aux1 LIKE tt-prazo-compra.            */
    /* DEFINE TEMP-TABLE tt-cotacao-item-aux1 LIKE tt-cotacao-item.            */
    /* DEFINE TEMP-TABLE tt-desp-cotacao-item-aux1 LIKE tt-desp-cotacao-item.  */
    /*                                                                        */
    /* EMPTY TEMP-TABLE tt-pedido-compr.                                      */
    /* EMPTY TEMP-TABLE tt-ordem-compra.                                      */
    /* EMPTY TEMP-TABLE tt-prazo-compra.                                      */
    /* EMPTY TEMP-TABLE tt-cotacao-item.                                      */
    /* EMPTY TEMP-TABLE tt-desp-cotacao-item.                                  */
    
    DEFINE VARIABLE c-transacao-global AS CHARACTER INITIAL 'a'  NO-UNDO.
    
    FOR EACH tt-pedido-compr EXCLUSIVE-LOCK:
        DELETE tt-pedido-compr.
    END.
    
    FOR EACH tt-ordem-compra EXCLUSIVE-LOCK:
        DELETE tt-ordem-compra.
    END.
    
    FOR EACH tt-prazo-compra EXCLUSIVE-LOCK:
        DELETE tt-prazo-compra.
    END.
    
    FOR EACH tt-cotacao-item EXCLUSIVE-LOCK:
        DELETE tt-cotacao-item.
    END.
    
    DEF VAR ultima-ordem LIKE ordem-compra.numero-ordem.
    
    OUTPUT TO VALUE("v:\temp\Log-cria-ordem.txt").
    
    /******* GERA PEDIDO/ORDEM/COTACAO/PRAZO ********/
    RUN pi-gera-pedido-compra.
    /************************************************/
    
    /************ CHAMA API CRIAR PEDIDO ************/
    CREATE tt-versao-integr.
    ASSIGN tt-versao-integr.cod-versao-integracao = 001
          tt-versao-integr.ind-origem-msg        = 01.
    
    /* RUN ccp/ccapi303.p (INPUT TABLE tt-versao-integr,
                        OUTPUT TABLE tt-erros-geral,
                        /* INPUT TABLE tt-pedido-compr, */
                        INPUT TABLE tt-cond-especif,
                        INPUT TABLE tt-ordem-compra,
                        INPUT TABLE tt-prazo-compra,
                        INPUT TABLE tt-cotacao-item /* ,
                        INPUT TABLE tt-desp-cotacao-item */ ). */
    
    run ccp/ccapi302.p (input  table tt-versao-integr,
                                    output table tt-erros-geral,
                                    input  table tt-ordem-compra,
                                    input  table tt-prazo-compra,       
                                    input  table tt-cotacao-item,
                            &if defined(bf_mat_despesa_fase_II) &then
                                Input table tt-desp-cotacao-item,
                            &endif
                            &if '{&bf_mat_versao_ems}' >= '2.04' &then
                                Input table tt-matriz-rat-med,
                            &endif
                                    input  c-transacao-global).
    
    
    
    FIND FIRST tt-erros-geral NO-LOCK NO-ERROR.
    IF AVAIL tt-erros-geral THEN DO:
        RUN pi-log-erros.
    END.
    ELSE
        MESSAGE 'Pedido Gerado: ' i-num-pedido SKIP 'ordem: ' i-num-ordem
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    /* ELSE DO:                                                                                        */
    /*    MESSAGE 'cria pendencia' VIEW-AS ALERT-BOX INFO BUTTONS OK.                                */
    /*                                                                                                */
    /*    CREATE doc-pend-aprov.                                                                      */
    /*    ASSIGN doc-pend-aprov.ind-tip-doc  = 4                                                    */
    /*            doc-pend-aprov.cod-aprov    = c-seg-usuario                                        */
    /*            doc-pend-aprov.ind-situacao  = 1                                                    */
    /*            doc-pend-aprov.sequencia    = 10                                                    */
    /*            doc-pend-aprov.it-codigo    = tt-ordem-compra.it-codigo                            */
    /*            doc-pend-aprov.numero-ordem  = tt-ordem-compra.numero-ordem                          */
    /*            doc-pend-aprov.num-pedido    = tt-pedido-compr.num-pedido                            */
    /*            doc-pend-aprov.dt-aprova    = tt-ordem-compra.data-pedido                          */
    /*            doc-pend-aprov.dt-geracao    = TODAY                                                */
    /*            doc-pend-aprov.cod-usuario  = c-seg-usuario                                        */
    /*            doc-pend-aprov.cod-emitente  = tt-pedido-compr.cod-emitente                          */
    /*            doc-pend-aprov.ind-tip-aprov = 1                                                    */
    /*            doc-pend-aprov.sequencia    = 10                                                    */
    /*            doc-pend-aprov.aprov-total  = YES                                                  */
    /*            doc-pend-aprov.sit-aprov    = NO                                                    */
    /*            doc-pend-aprov.sc-codigo    = 'ADMINIST'                                            */
    /*            doc-pend-aprov.char-2        = c-seg-usuario + '    ' + tt-pedido-compr.cod-estabel. */
    /* END.                                                                                            */
    
    /************************************************************************************/
    
    Continua com as procedures abaixo :rolleyes:
    jeffyssantos curtiu isso.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página