Boa tarde.
Fiz vários teste e consegui fazer com que DBF, CDX, IDX, ficassem com LETO e as demais extensões fossem vista da forma antiga.
Bom por enquanto deixei assim para seguir em frente nos testes dos módulos.
para separar coloquei no sistema assim.
Agora me deparei em dois módulos que não localiza registros com o mesmo problema.
Em DBFCDX funciona perfeitamente e pega os registros corretos, já setado para LETO não acha um item.
Código: Selecionar todos
Static Procedure BalancoZ()
Local o_OK
OpenWindow(07,05,23,75,"..:: BALANÇO "+Right(DtoC(Date()),4)+" - ZERA estoque",,,,,,11,"OURO")
//ShowMessage(,,{"Este processo zera o estoque, portanto","deverá ser efetuado somente no dia de balanço."},0)
ShowWait(,,"Abrindo arquivos...")
NetUseFile("CEMP0000",{"CEMP0000","CEMP0001"},.T.,,,,,,,wD_Instal)
//NetUseFile("CDOC0050",{"CDOC0050"},.T.)
NetUseFile("CEST0100",{"CEST0100","CEST0101"},.T.,,,,,,,wD_Geral) //VELHO GRUPO
NetUseFile("CEST0150",{"CEST0150","CEST0151"},.T.,,,,,,,wD_Geral)
NetUseFile("CEST0200",{"CEST0200","CEST0201"},.T.,,,,,,,wD_Geral) //VELHO SUBGRUPO
NetUseFile("CEST0110",{"CEST0110","CEST0111","CEST0112"},.T.,,,,,,,wD_Geral) //GRUPO
NetUseFile("CEST0120",{"CEST0120","CEST0121","CEST0122"},.T.,,,,,,,wD_Geral) //SUBGRUPO
NetUseFile("CEST0210",{"CEST0210","CEST0211","CEST0212"},.T.,,,,,,,wD_Geral) //marcas
NetUseFile("CEST0220",{"CEST0220","CEST0221","CEST0222"},.T.,,,,,,,wD_Geral) //MODELOS
NetUseFile("CEST0230",{"CEST0230","CEST0231","CEST0232"},.T.,,,,,,,wD_Geral) //LINHA
NetUseFile("CEST0240",{"CEST0240","CEST0241","CEST0242"},.T.,,,,,,,wD_Geral) //CLASSE
NetUseFile("CEST0300",{"CEST0300","CEST0301","CEST0302","CEST0303","CEST0304"},.T.)
NetUseFile("CEST0700",{"CEST0700","CEST0701","CEST0702","CEST0703"},.T.) //MOVIMENTO ENTRADA CABEC
NetUseFile("CEST0800",{"CEST0800","CEST0801","CEST0802"},.T.) //MOVIMENTO ENTRADA ITENS
NetUseFile("CEST0750",{"CEST0750","CEST0751","CEST0752","CEST0753"},.T.) //MOVIMENTO SADIA CAB
NetUseFile("CEST0850",{"CEST0850","CEST0851","CEST0852"},.T.) //MOVIMENTO SAIDA ITENS
CloseWindow()
Do While .T. .And. wNetUse=.T.
NewDrawField(12,06,74,"Dados para o BALANÇO no dia "+DtoC(Date()),10,15)
NewDrawField(13,07,12,"Inicial",7)
NewDrawField(13,13,18,"Final",7)
NewDrawField(13,19,74,"",7)
NewDrawField(16,06,74,"Informações",10,20)
NewShowLabel(16,06," ",3,"VERMELHO",24,,19,74)
NewShowLabel(17,06," BALANÇO - Este processo ZERA o estoque, portanto","CENTRAL","VERMELHO",24,,17,74)
NewShowLabel(18,06," deverá ser efetuado somente no dia de BALANÇO.","CENTRAL","VERMELHO",24,,18,74)
o_Acao:=MyNewButton(22,5,{"&Geral","&Setor","&Marca","&Código","&Abandonar"},75,.T.,.T.,05)
If LastKey()=27 .Or. o_Acao=5
Exit
EndIf
aSetorI:=aSetorF:=Space(4)
wMarca :=Space(4)
wMerc :=Space(7)
o_Setor:=9
NewShowLabel(16,06," ",3,"VERMELHO",24,,19,74)
If o_Acao=2 //setor
NewShowLabel(16,06," Informe o setor desejado","CENTRAL","VERMELHO",24,,16,74)
NewShowLabel(17,06," 9-999 processa todos os setores","CENTRAL","VERMELHO",24,,17,74)
NewShowLabel(18,06," ?-001 a ?-999 processa o setor desejado","CENTRAL","VERMELHO",24,,18,74)
NewShowLabel(19,06," - a - processa somente os setores vazios","CENTRAL","VERMELHO",24,,19,74)
o_Setor:=MyNewButton(22,3,{"Setor &1","Setor &2","&Abandonar"},75,.T.,.T.,05)
If LastKey()#27.And.o_Setor<=2
@ 13,07 Get aSETORI Pict "@R !-999" Valid(ChkRuaCasa(@aSETORI)) //coloquei para todos
@ 13,13 Get aSETORF Pict "@R !-999" Valid(ChkRuaCasa(@aSETORF).And.Left(aSETORF,1)==Left(aSETORI,1)) //coloquei para todos
Keyin()
If LastKey()#27.And.(aSETORI=="9999".Or.aSETORF=="9999")
o_Acao:=0
ShowMessage(,,"SETORES - Não é válido todos os SETORES para isto use a opção GERAL",0)
EndIf
Else
o_Setor:=0
EndIf
ElseIf o_Acao=3 //marca
NewDrawField(13,19,74,"Marca ",7)
NewShowLabel(17,06," Informe a marca desejada para zerar estoque","CENTRAL","VERMELHO",24,,17,74)
NewShowLabel(18,06," Válido somente a MARCA, não é válido todas as marcas (9999)","CENTRAL","VERMELHO",24,,18,74)
@ 13,19 Get wMarca Pict "@R 9999" Valid(ChkClassesGerais("MARCAS" ,"CEST0210",@wMarca,"M",13,24,40))
Keyin()
ElseIf o_Acao=4 //código grupo e subgrupo
NewDrawField(13,19,74,"Produto",7)
NewShowLabel(17,06," Informe o código desejado para zerar estoque","CENTRAL","VERMELHO",24,,17,74)
NewShowLabel(18,06," Válido somente GRUPO e/ou SUBGRUPO, exemplo: 0101999 ou 0199999","CENTRAL","VERMELHO",24,,18,74)
@ 13,19 Get wMerc Pict "@R 9999999" Valid(ChecaMerc("S",13,27,40))
Keyin()
If LastKey()#27.And.!(Left(wMerc,4)#"9999".And.Right(wMerc,3)=="999")
o_Acao:=0
ShowMessage(,,{"PRODUTO - Opção válida é somente GRUPO e/ou SUBGRUPO","o produto deverá ser obrigatóriamente igual á 999.","Exemplo: 0101999 ou 0199999"},0)
EndIf
Else
NewShowLabel(17,06," Zera o estoque da tabela em geral","CENTRAL","VERMELHO",24,,17,74)
EndIf
o_Acao:=If(LastKey()=27.Or.o_Setor=0,0,o_Acao)
e_Ok:=0
o_Ok=.F.
o_EN:=0
If o_Acao > 0
ShowWait(,,"Selecionando produtos...")
Campos:={{"COD_MERC" ,"C",07,0},;
{"DESCRICAO","C",60,0},;
{"UNIDADE" ,"C",04,0},;
{"SETOR1" ,"C",04,0},;
{"SETOR2" ,"C",04,0},;
{"ESTOQUE" ,"N",18,3},;
{"TICADO" ,"C",01,0}}
File1Tmp:=HoraTmp()
OpenTmp(Campos,"DESCRICAO") //para pesquisar
NetRelFile("CEST0300","COD_MERC")
OrdemArq:=" -> ORDEM ALFABETICA"
////O ERRO COMEÇA DAQUI PRA BAIXO QUANDO VAI PESQUISAR
CEST0300->(DbGoTop())
If o_Acao=4
CEST0300->(DbSeek(If(SubStr(wMerc,3,2)=="99",Left(wMerc,2),Left(wMerc,4))),.T.)
EndIf
wSaida:=.F.
While CEST0300->(!Eof()).And.If(o_Acao=4,If(SubStr(wMerc,3,2)=="99",Left(CEST0300->CODIGO,2)==Left(wMerc,2),Left(CEST0300->CODIGO,4)==Left(wMerc,4)),.T.).And.wSaida=.F.
ShowWaitProc()
wSaida:=ExitSeek()
pSETOR:=If(o_Setor=1,"SETOR1","SETOR2")
o_Ok:=If(o_Acao=1,.T.,o_Ok)
o_Ok:=If(o_Acao=2,If(aSETORI=="9999" ,.F.,If(aSETORI==" ",Empty(CEST0300->&pSETOR.), Left(CEST0300->&pSETOR.,1) == Left(aSETORI,1).And.;
Val(Right(CEST0300->&pSETOR.,3)) >= Val(Right(aSETORI,3)).And.;
Val(Right(CEST0300->&pSETOR.,3)) <= Val(Right(aSETORF,3)))),o_Ok)
o_Ok:=If(o_Acao=3,If(wMarca =="9999" ,.F.,CEST0300->MARCA==wMarca),o_Ok)
o_Ok:=If(o_Acao=4,If(wMerc =="9999999",.F.,If(SubStr(wMerc,3,2)=="99",Left(CEST0300->CODIGO,2)==Left(wMerc,2),;
Left(CEST0300->CODIGO,4)==Left(wMerc,4))),o_Ok)
ShowMessage(,,Str(CEST0300->(Recno()))+" "+ Str(CEST0300->(LastRec())),0) //só pra mostrar no teste, tem mais de 8 mil registros
If o_Ok = .T. .And. CEST0300->ATUAL <> 0 //.Or. CEST0300->ATUAL<0// se passou nas condicoes acima e o estoque não é igual a zero
ShowMessage(,,"peguei 1",0) //só pra mostrar que entrou, pega o registro este e não grava nada abaixo
If CEST0300->ATUAL < 0 //SE NEGATIVO
o_EN++
EndIf
(File1Tmp)->(DbAppend())
(File1Tmp)->COD_MERC :=CEST0300->CODIGO
(File1Tmp)->DESCRICAO:=CEST0300->DESCRICAO
(File1Tmp)->UNIDADE :=CEST0300->UNIDADE
(File1Tmp)->ESTOQUE :=CEST0300->ATUAL
(File1Tmp)->SETOR1 :=CEST0300->SETOR1
(File1Tmp)->SETOR2 :=CEST0300->SETOR2
(File1Tmp)->TICADO :=If(o_Acao=1,">"," ")
EndIf
CEST0300->(DbSkip(1)) //vai para o proximo
ShowMessage(,,If(CEST0300->(Eof()),"Fim","nao"),0) //so pra mostra, aqui ele já foi de cara para o final do arquivo
End
If (File1Tmp)->(LastRec()>0).And.wSaida=.F.
ShowWait()
DbSelectArea(File1Tmp)
DbGoTop()
Titulo:="..:: Balanço (Selecione os itens desejados para processar ou todos)"
NomeCampos:={{"ticado","descricao","unidade","estoque","cod_merc","setor1","setor2"},;
{"!","@!","@!","@E 9999,999.999","@R 9999999","@R 9-999","@R 9-999"},;
{"T","Mercadoria","Unid","Estoque","Código","Setor1","Setor2"}}
o_MsgR:="( <F09 / TAB> Seleciona <F10> PROCESSA )"
NewDbBusca(2,0,,,Titulo,NomeCampos,"FuncBALANCO",o_MsgR,,,,,,.T.)
CloseWindow()
ElseIf wSaida=.F.
ShowMessage(,,"Não há produtos com estoque para BALANÇO.",0)
EndIf
CloseTmp()
CloseWindow()
EndIf
End
NewDbCloseAll()
wNetUse:=.T.
CloseWindow()
Return .T.
Se alguem conseguir achar aonde esta dando errado, fico muito grato.