Versão atual:

Novo código dicionário para o banco

Pessoal, boa tarde.

Estamos utilizando o codeanalisys para validar nossas customizações antes de atualizarmos nosso dicionário de dados para o banco e gostaria de uma ajuda de vocês para ajustar o código abaixo:

cArqTrab1 := CriaTrab(aCampos,.T.)
&& cIdxTrb1 := cArqTrab1

Use &cArqTrab1 NEW Exclusive Alias TRB1
Append from &MV_PAR01 SDF
nArq:=FCreate("SAT010.ERR",0)

Select TRB1

DbGoTop()

Sei que temos que utilizar o novo comando FWTemporaryTable mas não estou conseguindo, vocês poderiam me ajudar com o código acima?

Muito obrigado pela ajuda.

Adnam.

Vou adicionar o código completo:

#include "rwmake.ch"

User Function Sat010()

SetPrvt("AAC,LI,NOPCA,CLINHA1,CLINHA2,ACAMPOS")
SetPrvt("CARQTRAB1,CIDXTRB1,NARQ,ERRO,CNUM_ULTIMO_CLIENTE,")

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o    ³ SAT010   ³ Autor ³                       ³ Data ³          ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Importacao de Arquivo de Clientes                          ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso      ³ Generico                                                   ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Pergunte("SAT010",.T.)
If !File(MV_PAR01)
    Return()
Endif

cLinha1 := OemToAnsi("Este programa tem como objetivo Importar os Clientes para o Sistema.")
cLinha2 := OemToAnsi("Os Erros da importacao estarao no arquivo SAT010.ERR")

@ 5,0 TO 200,500 DIALOG oDlg TITLE "Importacao de Clientes"
@ 5,10 TO 60,240
@ 24, 40 SAY cLinha1  SIZE  180,10
@ 38, 40 SAY cLinha2  SIZE  150,10

@ 70,184 BMPBUTTON TYPE 1 ACTION C010PRO()
@ 70,213 BMPBUTTON TYPE 2 ACTION Close(oDlg)

ACTIVATE DIALOG oDlg CENTERED

Return()



/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o    ³C010PRO   ³Autor  ³                       ³ Data ³          ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Chamada do Programa                                        ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso      ³ Generico                                                   ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function C010PRO()

Processa( { |lEnd| P010PRO() } )

Close(oDlg)

Return(nil)



/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o    ³P010PRO   ³Autor  ³                       ³ Data ³          ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Processamento de Exportacao dos Dados                      ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso      ³ Generico                                                   ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function P010PRO()

aCampos := {}
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Montar arquivo De Clientes                                   ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
AADD(aCampos,{ "TIPO"       , "C",001,0 })
AADD(aCampos,{ "EMPRESA"    , "C",002,0 })
AADD(aCampos,{ "MNEMONICO"  , "C",015,0 })
AADD(aCampos,{ "NOME"       , "C",040,0 })
AADD(aCampos,{ "FANTASIA"   , "C",015,0 })
AADD(aCampos,{ "LIMITECRED" , "N",009,0 })
AADD(aCampos,{ "SITCRED"    , "C",001,0 })
AADD(aCampos,{ "TIPOCLI"    , "C",002,0 })
AADD(aCampos,{ "EMISSAO"    , "D",008,0 })
AADD(aCampos,{ "SDOANT"     , "N",014,0 })
AADD(aCampos,{ "SDOATU"     , "N",014,0 })
AADD(aCampos,{ "PRACAVENDA" , "C",003,0 })
AADD(aCampos,{ "SEQEND"     , "C",001,0 })
AADD(aCampos,{ "IDENT"      , "C",001,0 })
AADD(aCampos,{ "CGC"        , "C",014,0 })
AADD(aCampos,{ "RAZAOSOC"   , "C",040,0 })
AADD(aCampos,{ "ENDERECO"   , "C",060,0 })
AADD(aCampos,{ "COMPL"      , "C",010,0 })
AADD(aCampos,{ "BAIRRO"     , "C",030,0 })
AADD(aCampos,{ "CIDADE"     , "C",060,0 })
AADD(aCampos,{ "UF"         , "C",002,0 })
AADD(aCampos,{ "CEP"        , "C",008,0 })
AADD(aCampos,{ "IE"         , "C",016,0 })
AADD(aCampos,{ "IM"         , "C",016,0 })
AADD(aCampos,{ "CODPOR"     , "C",004,0 })
AADD(aCampos,{ "CODCLI"     , "C",007,0 })

cArqTrab1 := CriaTrab(aCampos,.T.)
&& cIdxTrb1  := cArqTrab1

Use &cArqTrab1 NEW Exclusive Alias TRB1
&& IndRegua("TRB1",cIdxTrb1,"NUMPEDCOMP",,,"Selecionando Registros...")
&& Set Index to &cIdxTrb1.
Append from &MV_PAR01 SDF
nArq:=FCreate("SAT010.ERR",0)
&& Set print to SAT010.ERR

Select TRB1
DbGoTop()

ProcRegua( Reccount() )

Do While !EOF()

    IncProc()

    //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
    //³ Criando um registro no arquivo de Clientes SA1               ³
    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    If TIPO=="N"
        If Val(TRB1->CGC)==0
            ERRO:="NOME:" +Left(TRB1->NOME,25) + "/ CODIGO: " + TRB1->CODCLI + " - CGC ESTA VAZIO."
            ERRAR()
            DbSelectArea("TRB1")
            DbSkip()
            Loop
        Endif

        dbSelectArea("SX6")
        dbSetOrder(1)
        DbSeek(XFilial()+"MV_PROXCLI",.T.)
        cNum_Ultimo_Cliente:=SX6->X6_CONTEUDO


        dbSelectArea("SA1")
        dbSetOrder(1)
        DbGotop()
        DbSeek(XFilial()+StrZero(Val(cNum_Ultimo_Cliente),6))

        IF StrZero(Val(cNum_Ultimo_Cliente),6) <> SA1->A1_COD

            dbSelectArea("SA1")
            dbSetOrder(3)
            DbGotop()
            DbSeek(XFilial()+alltrim(TRB1->CGC))
            If Eof()
                RecLock("SA1",.T.)
                Replace A1_FILIAL      WITH XFilial()
                Replace A1_COD         WITH StrZero(Val(cNum_Ultimo_Cliente),6)
                Replace A1_LOJA        WITH "01"
                Replace A1_CGC         WITH TRB1->CGC
                Replace A1_CODCLI      WITH StrZero(Val(Alltrim(TRB1->CODCLI)),7) 
                Replace A1_RECISS       WITH "2"  // A1_RECISS E A1_INCISS inseridos para geração de ISS na emissão da NF
                Replace A1_INCISS       WITH "S" 
                Replace A1_TPASS        WITH "6" // CLASSE DE CONSUMO - CAT 79
                Replace A1_TPUTI        WITH "6" // TIPO DE LIGAÇÃO / UTILIZAÇÃO - CAT 79
                Replace A1_GRPTEN       WITH "00" // GRUPO DE TENSÃO  - CAT 79
                MsUnlock()

                //-----------------------------------------------------------------------------
                //Atualização do Parâmetro MV_PROXCLI - Ultimo Numero de Cliente.
                //-----------------------------------------------------------------------------
                dbSelectArea("SX6")
                aSalvAmb := GetArea()
                dbSetOrder(1)
                dbSeek(xFilial("SA1")+"MV_PROXCLI",.T.)
                RECLOCK("SX6")
                SX6->X6_CONTEUD        := StrZero(Val(cNum_Ultimo_Cliente)+1,6)
                SX6->X6_CONTENG      := StrZero(Val(cNum_Ultimo_Cliente)+1,6)
                SX6->X6_CONTSPA      := StrZero(Val(cNum_Ultimo_Cliente)+1,6)
                Msunlock()
                RestArea( aSalvAmb )

            Endif

            RecLock("SA1",.F.)
            Replace A1_NOME         WITH TRB1->RAZAOSOC
            Replace A1_NREDUZ       WITH TRB1->MNEMONICO
            Replace A1_LC           WITH TRB1->LIMITECRED/100
            Replace A1_TIPO         WITH "R"
            Replace A1_END          WITH Alltrim(TRB1->ENDERECO)+" "+Alltrim(TRB1->COMPL)
            Replace A1_BAIRRO       WITH TRB1->BAIRRO
            Replace A1_MUN          WITH TRB1->CIDADE
            Replace A1_EST          WITH TRB1->UF
            Replace A1_CEP          WITH TRB1->CEP
            Replace A1_INSCR        WITH TRB1->IE
            Replace A1_INSCRM       WITH TRB1->IM
            Replace A1_CODCLI       WITH StrZero(Val(Alltrim(TRB1->CODCLI)),7)
            Replace A1_RECISS       WITH "2"  // A1_RECISS E A1_INCISS inseridos para geração de ISS na emissão da NF
            Replace A1_INCISS       WITH "S" 
            Replace A1_TPASS        WITH "6" // CLASSE DE CONSUMO - CAT 79
            Replace A1_TPUTI        WITH "6" // TIPO DE LIGAÇÃO / UTILIZAÇÃO - CAT 79
            Replace A1_GRPTEN       WITH "00" // GRUPO DE TENSÃO  - CAT 79
            && TRB1->CODPOR
            MsUnlock()

        ELSE

            MsgInfo("Verificar Parametro MV_PROXCLI, deve ser o próximo código de cliente ","Mensagem")

        endif

    Endif
    Select TRB1
    dbSkip()
End

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Corrige Posicoes                                             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SA1")
dbSetOrder(1)
dbGoTop()
Do While !eof()
    If Len(Alltrim(A1_CODCLI))!=8
        Reclock("SA1",.F.)
        Replace A1_CODCLI WITH StrZero(Val(Alltrim(A1_CODCLI)),8)
        MsUnlock()
    Endif
    Dbskip()
Enddo

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Apaga Arquivos de trabalho                                   ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Fclose(nARQ)
dbSelectArea("TRB1")
dbCloseArea()

cArqTrab1 := cArqTrab1 + ".DBF"
&&cIdxTrb1  := cIdxTrb1 + OrdBagExt()
FErase( cArqTrab1 )
&&FErase( cIdxTrb1 )

dbSelectArea("SA1")
Set Filter To
dbSetOrder(1)

Return()



// Funcao para Gravar o Erro
Static Function ERRAR()

Msgalert(ERRO,"Atencao")

&& Set device to print
FWRITE(nARQ,ERRO+Chr(13))
&& Set device to screen

Return(.T.)

Versões (4):

Ver a versão formatada

Novo código dicionário para o banco

Comentário

new question