Árvore de páginas


Produto:

Microsiga Protheus®

Ocorrência:

Como incluir um registro no contrato de manutenção via execauto

Ambiente:

Microsiga Protheus - SIGATEC -  Gestão de Serviços

Solução:

Está solução é uma explicação de como é criado um registro via execauto no contrato de manutenção

Passo a passo:

Vamos criar um exemplo de execauto para a inclusão de um registro para a base de atendimento

Exemplo de Uso
#INCLUDE "TOTVS.CH"
#INCLUDE "TBICONN.CH"
  
User Function MyTeca200()
Local aCabec    := {}
Local aItens    := {}
Local aItem     := {}
Local cContrato := ""
Local lOk       := .T.
  
PRIVATE lMsErroAuto := .F.
  
ConOut(Repl("-",80))
ConOut(PadC("Teste de Inclusao de 2 chamado tecnico com 1 itens cada",80))

//Verificar a empresa e filial corretas para inicialização do ambiente para a inclusão
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "TEC" TABLES "SA1","SB1","SE4","AA3","AAH"
 
DbSelectArea("SA1")
SA1->(DbSetOrder(1))
If !SA1->(DbSeek(xFilial("SA1")+"00000501"))
    lOk := .F.
    ConOut("Cadastrar cliente: 00000501")
EndIf


AA3->(dbSetOrder(4))
If !AA3->(DbSeek(xFilial("AA3")+ Space( Len( AA3->AA3_CODFAB ) ) + Space( Len( AA3->AA3_LOJAFA ) ) + "AGRUPRH                       " + "JHJSHDJHKJHDKAHKJDS " )) //Verifique o tamanho do campo AA3_CODPRO e AA3_NUMSER
    lOk := .F.
    ConOut("Cadastrar base instalada: Produto : " + Padr( "AGRUPRH",LEN( AA3->AA3_CODPRO ) ) + " - Identificador :  " + Padr( "JHJSHDJHKJHDKAHKJDS",LEN( AA3->AA3_NUMSER ) )  )
EndIf
  
If !AA3->(DbSeek(xFilial("AA3")+ Space( Len( AA3->AA3_CODFAB ) ) + Space( Len( AA3->AA3_LOJAFA ) ) + "FLDPCA00                      " + "ID 20231124-11      " )) //Verifique o tamanho do campo AA3_CODPRO e AA3_NUMSER
    lOk := .F.
    ConOut("Cadastrar base instalada: Produto : " + Padr( "PA2",LEN( AA3->AA3_CODPRO ) ) + " - Identificador :  " + Padr( "002",LEN( AA3->AA3_NUMSER ) )  )
EndIf
  
SB1->(DbSetOrder(1))
If !SB1->(DbSeek(xFilial("SB1")+ "AGRUPRH                       " )) //VERIFICAR TAMANHO DO CAMPO B1_COD
    lOk := .F.
    ConOut("Cadastrar produto: " + Padr( "AGRUPRH        ",15 ) )
EndIf
  
If !SB1->(DbSeek(xFilial("SB1")+"FLDPCA00                      ")) //VERIFICAR TAMANHO DO CAMPO B1_COD
    lOk := .F.
    ConOut("Cadastrar produto: " + Padr( "FLDPCA00                      ",15 ) )
EndIf
  
SE4->(DbSetOrder(1))
If !SE4->(DbSeek(xFilial("SE4")+"001") )
    lOk := .F.
    ConOut("Cadastrar condicao de pagto : 001" )
EndIf
  
If lOk
    ConOut("Inicio inclusao : "+Time())
    cContrato := "000000000000007" //informa o numero do contrato, VERIFICAR A NUMERAÇÃO DO CAMPO AAH_CONTRT
  
    aCabec := {}
    aItens := {}
    aAdd(aCabec,{"AAH_CONTRT" ,cContrato    ,Nil})
    aAdd(aCabec,{"AAH_CODCLI" ,"000005"     ,Nil}) // O CODIGO DO CLIENTE DEVE SER O MESMO QUE ESTÁ NA BASE DE ATENDIMENTO
    aAdd(aCabec,{"AAH_LOJA"   ,"01"         ,Nil})
    aAdd(aCabec,{"AAH_TPCONT" ,"1"          ,Nil})
    aAdd(aCabec,{"AAH_CONPAG" ,"001"          ,Nil})
    aAdd(aCabec,{"AAH_INIVLD" ,dDataBase    ,Nil})
    aAdd(aCabec,{"AAH_CPAGPV" ,"001"          ,Nil})
    aAdd(aCabec,{"AAH_CODPRO" ,"AGRUPRH                       ",Nil}) //O Valor atribuido nessa linha deve ter o mesmo tamanho do campo AAH_CODPRO, VERIFIQUE SE ELE ESTÁ COM O MESMO TAMANHO DO CAMPO B1_COD
 
        //informa a base de atendimento para o contrato
        aItem := {}
        aAdd(aItem,{"AA3_CODFAB"  , "      " } )
        aAdd(aItem,{"AA3_LOJAFA"  , "  " } )
        aAdd(aItem,{"AA3_CODPRO"  , "AGRUPRH                       "} ) //O Valor atribuido nessa linha deve ter o mesmo tamanho do campo AAH_CODPRO, VERIFIQUE SE ELE ESTÁ COM O MESMO TAMANHO DO CAMPO B1_COD
        aAdd(aItem,{"AA3_NUMSER"  , "JHJSHDJHKJHDKAHKJDS " } ) // o valor atribuido deve ter o mesmo tamanho da linha AA3_NUMSER
        aAdd(aItem,{"M_A_R_K_"  , .T. } )
        aAdd(aItens,aItem)
     
        aItem := {}
        aAdd(aItem,{"AA3_CODFAB"  , "      " } )
        aAdd(aItem,{"AA3_LOJAFA"  , "  " } )
        aAdd(aItem,{"AA3_CODPRO"  , "FLDPCA00                      "} ) ////O Valor atribuido nessa linha deve ter o mesmo tamanho do campo AAH_CODPRO, VERIFIQUE SE ELE ESTÁ COM O MESMO TAMANHO DO CAMPO B1_COD
        aAdd(aItem,{"AA3_NUMSER"  , "ID 20231124-11      " } ) // o valor atribuido deve ter o mesmo tamanho da linha AA3_NUMSER
        aAdd(aItem,{"M_A_R_K_"  , .T. } )
        aAdd(aItens,aItem)
 
    //Teste de Inclusao
    TECA200(NIL,aCabec,aItens,3)
    If !lMsErroAuto
        ConOut("Incluido com sucesso! " + cContrato )
    Else
        ConOut("Erro na inclusao!")
    EndIf
    ConOut("Fim inclusao : "+Time())
     
 
    ConOut("Inicio alteração : "+Time())
    aCabec := {}
    aItens := {}
    aAdd(aCabec,{"AAH_CONTRT" ,cContrato    ,Nil})
    aAdd(aCabec,{"AAH_CODCLI" ,"000005"     ,Nil})
    aAdd(aCabec,{"AAH_LOJA"   ,"01"         ,Nil})
    aAdd(aCabec,{"AAH_TPCONT" ,"1"          ,Nil})
    aAdd(aCabec,{"AAH_CONPAG" ,"001"          ,Nil})
    aAdd(aCabec,{"AAH_INIVLD" ,dDataBase    ,Nil})
    aAdd(aCabec,{"AAH_CPAGPV" ,"001"          ,Nil})
    aAdd(aCabec,{"AAH_CODPRO" ,"AGRUPRH                       ",Nil}) //O Valor atribuido nessa linha deve ter o mesmo tamanho do campo AAH_CODPRO, VERIFIQUE SE ELE ESTÁ COM O MESMO TAMANHO DO CAMPO B1_COD
     
        aItem := {}
        aAdd(aItem,{"AA3_CODFAB"  , "      " } )
        aAdd(aItem,{"AA3_LOJAFA"  , "  " } )
       aAdd(aItem,{"AA3_CODPRO"  , "AGRUPRH                       "} ) //O Valor atribuido nessa linha deve ter o mesmo tamanho do campo AAH_CODPRO, VERIFIQUE SE ELE ESTÁ COM O MESMO TAMANHO DO CAMPO B1_COD
        aAdd(aItem,{"AA3_NUMSER"  , "JHJSHDJHKJHDKAHKJDS " } ) // o valor atribuido deve ter o mesmo tamanho da linha AA3_NUMSER
        aAdd(aItem,{"M_A_R_K_"  , .T. } )
        aAdd(aItens,aItem)
     
        aItem := {}
        aAdd(aItem,{"AA3_CODFAB"  , "      " } )
        aAdd(aItem,{"AA3_LOJAFA"  , "  " } )
        aAdd(aItem,{"AA3_CODPRO"  , "FLDPCA00                      "} ) ////O Valor atribuido nessa linha deve ter o mesmo tamanho do campo AAH_CODPRO, VERIFIQUE SE ELE ESTÁ COM O MESMO TAMANHO DO CAMPO B1_COD
        aAdd(aItem,{"AA3_NUMSER"  , "ID 20231124-11      " } ) // o valor atribuido deve ter o mesmo tamanho da linha AA3_NUMSER
        aAdd(aItem,{"M_A_R_K_"  , .T. } )
        aAdd(aItens,aItem)
  
    // Teste de Inclusao
    TECA200(NIL,aCabec,aItens,4)
    If !lMsErroAuto
        ConOut("Alterado com sucesso ! " + cContrato )
    Else
        ConOut("Erro na alteração !")
    EndIf
    ConOut("Fim alteração : "+Time())
     
EndIf
 
RESET ENVIRONMENT
 
Return(.T.)


Veja que o contrato 000000000000007 ainda não existe na base de dados.


Agora vamos criar o contrato utilizando o modelo disponibilizado.


Observações: