Árvore de páginas
Ir para o final dos metadados
Ir para o início dos metadados

Exemplo de rotina automática - TeleAtendimento

Exemplo de como criar e utilizar uma rotina automática para inclusão/alteração de chamados no TeleAtendimento.Neste exemplo, utilizaremos o Service Desk para criar um novo chamado.

#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o    |MyTmka503A³ Autor ³ Vendas Cliente        ³ Data ³18/12/07  ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Funcao de execucao por entrada automatica                  ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Retorno   ³ .T.                                                        ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso       ³ SSIM                                                       ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
User Function MyTmka503A()
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local nX     := 0
Local nY     := 0
Local lOk    := .T.
Local cCod     := ""
Local nCalls := 0      
Local codChama := ""
PRIVATE lMsErroAuto := .F.

ConOut(Repl("-",80))

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente                                         |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ConOut(Repl("-",80))

PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" MODULO "TMK" TABLES "ADE","ADF","SB1","SA1","SU5","SUH","SU9","SUQ","SU7","SU0"
                                 

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificacao do ambiente para teste                           |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(dbSeek(xFilial("SB1")+"001"))
    lOk := .F.
    ConOut("Cadastrar produto: 001")
EndIf
dbSelectArea("SA1")
dbSetOrder(1)
If !SA1->(dbSeek(xFilial("SA1")+"00000101"))
    lOk := .F.
    ConOut("Cadastrar cliente: 00000101")
EndIf
dbSelectArea("SU5")
dbSetOrder(1)
If !SU5->(dbSeek(xFilial("SU5")+"000001"))
    lOk := .F.
    ConOut("Cadastrar contato (SU5): 000001")
EndIf
dbSelectArea("SUH")
dbSetOrder(1)
If !SUH->(dbSeek(xFilial("SUH")+"000001"))
    lOk := .F.
    ConOut("Cadastrar midia (SUH): 000001")
EndIf
dbSelectArea("SU9")
dbSetOrder(2)
If !SU9->(dbSeek(xFilial("SU9")+"000001"))
    lOk := .F.
    ConOut("Cadastrar ocorrencia (SU9): 000001")
EndIf
dbSelectArea("SUQ")
dbSetOrder(1)
If !SUQ->(dbSeek(xFilial("SUQ")+"000002"))
    lOk := .F.
    ConOut("Cadastrar Acao p/ ocorr. (SUQ): 000002")
EndIf
dbSelectArea("SU7")
dbSetOrder(1)
If !SU7->(dbSeek(xFilial("SU7")+"000001"))
    lOk := .F.
    ConOut("Cadastrar operador (SU7): 000001")
EndIf
dbSelectArea("SU0")
dbSetOrder(1)
If !SU0->(dbSeek(xFilial("SU0")+"01"))
    lOk := .F.
    ConOut("Cadastrar grupo de atendimento (SU0): 01")
EndIf

If lOk
    For nCalls := 1 To 2//10
        Conout("Incluindo chamado = " + AllTrim(Str(nCalls)))
        ConOut("Inicio Inclusao: "+Time())
        For nY := 1 To 1
            cCod := GetSxeNum("ADE","ADE_CODIGO")
            RollBAckSx8()
            aCabec := {}
            aItens := {}
            //aAdd(aCabec,{"ADE_CODIGO" ,cCod                ,Nil})
            aAdd(aCabec,{"ADE_DATA"   ,dDataBase        ,Nil})
            aAdd(aCabec,{"ADE_HORA"   ,Time()            ,Nil})
            aAdd(aCabec,{"ADE_CODSB1" ,SB1->B1_COD        ,Nil})
            aAdd(aCabec,{"ADE_CODCON" ,SU5->U5_CODCONT    ,Nil})
            aAdd(aCabec,{"ADE_ASSUNT" ,"000006"            ,Nil})
            aAdd(aCabec,{"ADE_SEVCOD" ,"2"                ,Nil})
            aAdd(aCabec,{"ADE_ENTIDA" ,"SA1"            ,Nil})
            aAdd(aCabec,{"ADE_CHAVE"  ,SA1->A1_COD+SA1->A1_LOJA,Nil})   
            aAdd(aCabec,{"ADE_MIDIA"  ,SUH->UH_MIDIA    ,Nil})
            aAdd(aCabec,{"ADE_STATUS" ,'1'                ,Nil})
            aAdd(aCabec,{"ADE_OPERAC" ,'2'                ,Nil})       
            aAdd(aCabec,{"ADE_INCIDE" ,'Incluido automaticamente'                ,Nil})
       
            For nX := 1 To 2
                aLinha := {}
                aAdd(aLinha,{"ADF_ITEM"        ,StrZero(nX,3)        ,Nil})
                aAdd(aLinha,{"ADF_CODSU9"    ,SU9->U9_CODIGO        ,Nil})
                aAdd(aLinha,{"ADF_CODSUQ"    ,SUQ->UQ_SOLUCAO    ,Nil})
                aAdd(aLinha,{"ADF_CODSU7"    ,SU7->U7_COD        ,Nil})
                aAdd(aLinha,{"ADF_CODSU0"    ,SU0->U0_CODIGO        ,Nil})
                aAdd(aLinha,{"ADF_OBS"        ,'Incluido automaticamente'    ,Nil})
                aAdd(aCabec,{"ADF_DATA"       ,dDataBase        ,Nil})
                aAdd(aCabec,{"ADF_HORA"       ,Time()            ,Nil})           
                aAdd(aItens,aLinha)
            Next nX
            //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
            //| Teste de Inclusao                                            |
            //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
            TMKA503A(aCabec,aItens,3, @codChama)
            If !lMsErroAuto
                ConOut("Chamado incluido com sucesso! Codigo=" + codChama)   
            Else
                ConOut("Erro na inclusao do chamado!")
                Mostraerro()                   
            EndIf
        Next nY
        conout("Código original do Chamado: " + cCod)
        conout("Código gravado no Chamado   : " + ADE->ADE_CODIGO)
        conout("Código retornado do chamado : " + codChama)
        //cCod := ADE->ADE_CODIGO 
        cCod := codChama
        ConOut("Fim Inclusao: "+Time())
        ConOut(Repl("-",80))                

        //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
        //| Teste de alteracao                                           |
        //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
        aCabec := {}
        aItens := {}
        aAdd(aCabec,{"ADE_CODIGO" ,cCod                ,Nil})
        aAdd(aCabec,{"ADE_DATA"   ,dDataBase        ,Nil})
        aAdd(aCabec,{"ADE_HORA"   ,Time()            ,Nil})
        aAdd(aCabec,{"ADE_CODSB1" ,SB1->B1_COD        ,Nil})
        aAdd(aCabec,{"ADE_CODCON" ,SU5->U5_CODCONT    ,Nil})
        aAdd(aCabec,{"ADE_ASSUNT" ,"000006"            ,Nil})
        aAdd(aCabec,{"ADE_SEVCOD" ,"2"                ,Nil})
        aAdd(aCabec,{"ADE_ENTIDA" ,"SA1"            ,Nil})
        aAdd(aCabec,{"ADE_CHAVE"  ,SA1->A1_COD+SA1->A1_LOJA,Nil})   
        aAdd(aCabec,{"ADE_MIDIA"  ,SUH->UH_MIDIA    ,Nil})
        aAdd(aCabec,{"ADE_STATUS" ,'2'                ,Nil})
        aAdd(aCabec,{"ADE_INCIDE" ,'Incluido automaticamente'                ,Nil})   
        aAdd(aCabec,{"ADE_CODINC" ,""                ,Nil})   
   
           For nX := 1 To 3
            aLinha := {}              
            /*If nX <= 2                
                aAdd(aLinha,{"LINPOS","ADF_ITEM",StrZero(nX,3)})
            Else
                aAdd(aLinha,{"ADF_ITEM"        ,StrZero(nX,3)        ,Nil})       
            EndIf*/                                                        
            aAdd(aLinha,{"ADF_ITEM"        ,StrZero(nX,3)        ,Nil})               
            aAdd(aLinha,{"AUTDELETA","N",Nil})
            If nX==3
                aAdd(aLinha,{"ADF_CODSU9"    ,SU9->U9_CODIGO        ,Nil})
                aAdd(aLinha,{"ADF_CODSUQ"    ,SUQ->UQ_SOLUCAO    ,Nil})
                aAdd(aLinha,{"ADF_CODSU7"    ,SU7->U7_COD        ,Nil})
                aAdd(aLinha,{"ADF_CODSU0"    ,SU0->U0_CODIGO        ,Nil})
                aAdd(aLinha,{"ADF_OBS"        ,'Alterado automat.',Nil})
                aAdd(aLinha,{"ADF_DATA"       ,dDataBase        ,Nil})
                aAdd(aLinha,{"ADF_HORA"       ,Time()            ,Nil})     
                aAdd(aLinha,{"ADF_REC_WT"    ,0        ,Nil})       
            Else          
                aAdd(aLinha,{"LINPOS","ADF_ITEM",StrZero(nX,3)})                                     
                aAdd(aLinha,{"ADF_REC_WT"    ,nX        ,Nil})       
            EndIf
            aAdd(aLinha,{"ADF_OBS"        ,'Alterado automat.',Nil})
            /*If nX <= 2                
                aAdd(aLinha,{"ADF_REC_WT"    ,001        ,Nil})       
                aAdd(aLinha,{"ADF_ALIAS_WT"    ,"ADE"        ,Nil})       
            EndIF*/
           
            aAdd(aLinha,{"ADF_ALIAS_WT"    ,"ADF"        ,Nil})               
            aadd(aItens,aLinha)
        Next nX   
        ConOut(PadC("Exemplo de alteracao",80))
        ConOut("Inicio Alteracao: "+Time())
        //TMKA503A(aCabec,aItens,4) 
        codChama := ""
        //MSExecAuto({|x,y,z,f|TMKA503A(x,y,z,@f)},aCabec,aItens,4, @codChama)
        TMKA503A(aCabec,aItens,4, @codChama)
        If !lMsErroAuto
            ConOut("Chamado " +cCod+ " alterado com sucesso!")           
            conout("Código retornado do chamado : " + codChama)
        Else
            ConOut("Erro na alteracao do chamado!")          
            DisarmTransaction()
            Mostraerro()       
        EndIf
        ConOut("Fim Alteracao: "+Time())
        ConOut(Repl("-",80))

    Next
   
EndIf

RESET ENVIRONMENT

Return .T.