[RESOLVIDO] romaneio com transferencia de depósitos

Discussão em 'EMS , HCM e Totvs 11' iniciado por ueluis, Novembro 23, 2015.

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

    ueluis Membro Participativo

    @bootstrapmaster,

    vou deixar aqui o exemplo de transferência de material direto pela
    API Geração de Movimentações do Estoque(v.001)
    cep/ceapi001k.r

    que utiliza os parametros da include: ceapi001k.i.

    fiz com base no exemplo que você disponibilizou + documentação.

    da utlima atualização desta API para TOTVS 12.1.6.

    Código:
    /* Rotina para Trasnferência de Depósitos
    
    Por: Ueliton luis
    Data: 20/04/2016
    
    */
    CURRENT-LANGUAGE=CURRENT-LANGUAGE.
    {utp/ut-glob.i}
    {Fontes\cdp\cd0666.i}
    {fontes\cep\ceapi001K.i}
    
    def var h-ceapi001k  as handle no-undo.
    DEF VAR vcod-prog-orig  AS CHAR NO-UNDO.
    DEF VAR vconta_contabil LIKE conta-contab.conta-contabil.
    DEF VAR vit-codigo  LIKE item.it-codigo.
    DEF VAR vcod-depos-orig LIKE saldo-estoq.cod-depos. 
    DEF VAR vcod-depos-dest LIKE saldo-estoq.cod-depos. 
    DEF VAR vcod-estabel  LIKE saldo-estoq.cod-estabel.
    DEF VAR vcod-localiz  LIKE saldo-estoq.cod-localiz.
    DEF VAR vlote  LIKE saldo-estoq.lote. 
    DEF VAR vdt-trans  LIKE movto-estoq.dt-trans.  
    DEF VAR vnro-docto  LIKE movto-estoq.nro-docto. 
    DEF VAR vserie-docto  LIKE movto-estoq.serie-docto.
    DEF VAR vquantidade  LIKE saldo-estoq.qtidade-atu.
    
      /*informações da Transferencia Saida /Entrada*/
      /****************************************************************************************************/ 
      assign
      vcod-prog-orig  = "SRN"
      vnro-docto  = "TF"
      vserie-docto  = "200"
      vit-codigo  = "MEUITEM"
      vcod-depos-orig  = "998"
      vcod-depos-dest  = "996"
      vcod-estabel  = "001"
      vcod-localiz  = " "
      vlote  = "INVENTARIO"
      vquantidade  = 2000.
      /****************************************************************************************************/
      
      /*Buscando a conta de transferência Vinculada no Parametro de estoque*/
      FOR FIRST param-estoq FIELDS(ct-tr-transf) NO-LOCK :
      vconta_contabil = param-estoq.ct-tr-transf.
      END.
    
      IF vconta_contabil = "" THEN
      MESSAGE "Conta Contábil Não Encontrada NO Parametro de Estoque" VIEW-AS ALERT-BOX ERROR TITLE "Conta Não Parametrizada".
      ELSE DO:
      find first item NO-LOCK where item.it-codigo = vit-codigo no-error.
      if not avail item THEN
      MESSAGE "Item Informado Não Encontrado." VIEW-AS ALERT-BOX ERROR TITLE "Transferencia".
      ELSE DO:
      
      find first saldo-estoq NO-LOCK where  saldo-estoq.cod-depos  = vcod-depos-orig
      and saldo-estoq.cod-estabel = vcod-estabel 
      and saldo-estoq.cod-localiz = vcod-localiz
      and saldo-estoq.lote  = vlote
      and saldo-estoq.it-codigo  = vit-codigo  
      no-error.
      if not avail saldo-estoq then
      MESSAGE "Origem da Transferencia Não Encontrada." VIEW-AS ALERT-BOX ERROR TITLE "Erro dados Origem".
      ELSE DO:
      /*verificando se existe saldo no item a ser transferido*/
      if saldo-estoq.qtidade-atu = 0 then
      MESSAGE "Origem Não Tem Saldo Para Movimento de Saida." VIEW-AS ALERT-BOX ERROR TITLE "Erro dados Origem".
      ELSE DO:
      create tt-movto.
      
      /***** Dados da Saída *****/
      assign tt-movto.cod-versao-integracao = 1
      tt-movto.cod-prog-orig  = vcod-prog-orig
      tt-movto.ct-codigo  = vconta_contabil
      tt-movto.serie-docto  = vserie-docto
      tt-movto.dt-trans  = vdt-trans
      tt-movto.nro-docto  = vnro-docto
      tt-movto.lote  = saldo-estoq.lote
      tt-movto.cod-depos  = saldo-estoq.cod-depos
      tt-movto.cod-estabel  = saldo-estoq.cod-estabel
      tt-movto.it-codigo  = saldo-estoq.it-codigo
      tt-movto.cod-refer  = saldo-estoq.cod-refer
      tt-movto.cod-localiz  = Saldo-estoq.cod-localiz
      tt-movto.quantidade  = vquantidade
      tt-movto.un  = item.un
      tt-movto.tipo-trans  = 2  /* 1 = Entrada, 2 = Saida */
      tt-movto.esp-docto  = {ininc/i03in218.i 6 'TRA'}
      tt-movto.usuario  = c-seg-usuario.
      
      create tt-movto.
      
      /***** Dados da Entrada *****/
      assign tt-movto.cod-versao-integracao = 1
      tt-movto.cod-prog-orig = vcod-prog-orig
      tt-movto.ct-codigo  = vconta_contabil
      tt-movto.serie-docto  = vserie-docto
      tt-movto.dt-trans  = vdt-trans
      tt-movto.nro-docto  = vnro-docto
      tt-movto.lote  = saldo-estoq.lote
      tt-movto.cod-depos  = vcod-depos-dest
      tt-movto.cod-estabel  = saldo-estoq.cod-estabel
      tt-movto.it-codigo  = saldo-estoq.it-codigo
      tt-movto.cod-refer  = saldo-estoq.cod-refer
      tt-movto.cod-localiz  = saldo-estoq.cod-localiz
      tt-movto.quantidade  = vquantidade
      tt-movto.un  = item.un
      tt-movto.tipo-trans  = 1  /* 1 = Entrada, 2 = Sa¡da */
      tt-movto.esp-docto  =  {ininc/i03in218.i 6 'TRA'}
      tt-movto.usuario  = c-seg-usuario.
    
      /*GERANDO UM LOG PARA CONFERÊNCIA*/
      /****************************************************************************************************/
      OUTPUT TO  c:\temp\tt-motvo.txt.
      for each tt-movto:
      EXPORT DELIMITER ";"
      tt-movto.cod-versao-in  tt-movto.cod-prog-orig
      tt-movto.sc-codigo  tt-movto.ct-codigo  
      tt-movto.serie-docto  tt-movto.dt-trans  
      tt-movto.nro-docto  tt-movto.lote  
      tt-movto.cod-depos  tt-movto.cod-estabel 
      tt-movto.it-codigo  tt-movto.cod-refer  
      tt-movto.cod-localiz  tt-movto.quantidade  
      tt-movto.un  tt-movto.tipo-trans  
      tt-movto.esp-docto  tt-movto.usuario .
      END.
      OUTPUT CLOSE.
      /****************************************************************************************************/
      run cep/ceapi001k.p persistent set h-ceapi001k.
      run pi-execute in h-ceapi001k (input-output table tt-movto,
      input-output table tt-erro,
      input yes). /* Deleta erros? */
      /*exibindo erros*/
      find first tt-erro no-lock no-error.
      if avail tt-erro then do:
      run cdp/cd0666.w (input table tt-erro).
      return 'ADM-ERROR':U.
      end.
      ELSE
      MESSAGE "Transferido Com Sucesso" VIEW-AS ALERT-BOX INFORMATION BUTTONS OK TITLE "Transferencia Pela API CEAPI001K".
    
      delete procedure h-ceapi001k.
      assign
      h-ceapi001k = ?.
      END.
      
      END.  
      END.
      END.
    
    
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Blz, deu tudo certo então ?
  3. ueluis

    ueluis Membro Participativo

    Tudo Certo!
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página