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.)
Obrigado Daniel Mendes, ajudou muito. Valeu.
— Adnam Rigueira Mota 02 de Jun de 2023