|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
msexecauto de mata240 ou mata241. |
|
Versão: |
|
|
Plataforma: |
|
Complemento: |
|
|
DB: |
|
Complemento: |
|
|
|
|
|
Mensagem do
@BETO
em 15/02/2007, 17:59 h
Local: MG Registro: 26/01/2006 Postagens: 534 |
Estou tentando fazer o msexecauto com uma das duas, mas as duas da pau...
Arotina mata240 gera um arquivo de erro, falando que o produto não foi localizado, o a outra mata241 gera error.log infornando isso.
variable is not array on MSARRAYXDB(MATXFUNB.PRX) 23/03/2006 line : 4075
[build:7.00.060906P]
[environment: teste]
[thread 3964]
Called from MATA241(MATA241.PRX) 18/01/2006 line : 106
Called from {|X,Y,Z| MATA241(X,Y,Z)}(BAIXAVENDA.PRW) line : 221
Called from line : 3751
Called from MSEXECAUTO(MATXFUNB.PRX) 23/03/2006 line : 3751
Called from BAIXA(BAIXAVENDA.PRW) 15/02/2007 line : 221
Called from {||BAIXA()}(BAIXAVENDA.PRW) line : 144
Called from line : 43
Called from { || EVAL( BACTION, @LEND ),LEND := .T. , ODLG:END() }(MSPROCES.PRW) line : 43
Called from line : 0
Called from PROCESSA(MSPROCES.PRW) 28/07/2004 line : 45
Called from IMPORTAR(BAIXAVENDA.PRW) 15/02/2007 line : 144
olha o fonte ai....
#include "rwmake.ch"
#include "protheus.ch"
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ImpLista ³ Autor ³ Roberto Zaniboni ³ Data ³12/02/2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Locacao ³ Fabr.Tradicional ³Contato ³ robertoz@microsiga.com.br ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descricao ³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Retorno ³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Aplicacao ³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Analista Resp.³ Data ³ Bops ³ Manutencao Efetuada ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ ³ / / ³ ³ ³±±
±±³ ³ / / ³ ³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
User Function BaixaVenda()
// Variaveis Locais da Funcao
Local cEdit1 := Space(250)
// Variaveis Private da Funcao
Private _oDlg // Dialog Principal
private cTabTmp := "TMP"
private aCampos := {}
private _cNomeArq := ""
private cIndexName := ""
private dDtEmissao := Date()
DEFINE MSDIALOG _oDlg TITLE "Leitura de Arquivo de logs de vendas" FROM 178,181 TO 388,596 PIXEL
// Cria as Groups do Sistema
@ 011,008 TO 080,197 LABEL "" PIXEL OF _oDlg
// Cria Componentes Padroes do Sistema
@ 022,022 Say " Este programa ira ler o conteudo de um arquivo texto, conforme" Size 153,008 COLOR CLR_BLACK PIXEL OF _oDlg
@ 032,022 Say " os parametros definidos pelo usuario, com os registros do arquivo" Size 156,008 COLOR CLR_BLACK PIXEL OF _oDlg
@ 042,022 Say " de baixa de estoque venda de produtos. " Size 066,008 COLOR CLR_BLACK PIXEL OF _oDlg
@ 062,023 MsGet cEdit1 Size 160,009 COLOR CLR_BLACK PIXEL OF _oDlg
@ 090,115 Button "Importar" Size 037,012 PIXEL OF _oDlg Action(Importar(cEdit1))
@ 090,162 Button "Sair" Size 037,012 PIXEL OF _oDlg Action(_oDlg:end())
ACTIVATE MSDIALOG _oDlg CENTERED
Return(.T.)
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFun+"o ³ Importar º Autor ³ AP6 IDE º Data ³ 29/11/06 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescri+"o ³ Funcao chamada pelo botao OK na tela inicial de processamenº±±
±±º ³ to. Executa a leitura do arquivo texto. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Programa principal º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function Importar(cNomeArq)
local nBarra := 0
local cArrayNome := ""
local nContador := 1
local cData := ""
Private cArqTxt := ""
Private nHdl
Private cEOL := "CHR(13)+CHR(10)"
private _aDir := {}
aDIR(alltrim(cNomeArq)+"\*.*",_aDir)
_oDlg:End()
If Empty(cEOL)
cEOL := CHR(13)+CHR(10)
Else
cEOL := Trim(cEOL)
cEOL := &cEOL
Endif
aadd(aCampos,{"CODIGO" ,"C",15,0})
aadd(aCampos,{"QUANT" ,"N",10,0})
aadd(aCampos,{"TIPO" ,"C",02,0})
aadd(aCampos,{"UM" ,"C",02,0})
aadd(aCampos,{"GRUPO" ,"C",03,0})
aadd(aCampos,{"FILIAL" ,"C",02,0})
_cNomeArq := criatrab(aCampos ,.T.) // criando tabela
cIndexName := criatrab(nil ,.F.) // criando indice
// cria a referencia para o alias
USE &_cNomeArq ALIAS &cTabTmp NEW
// fecha a area de trabalho
dbCloseArea()
// referecia a area de trabalho ao alias e abre o alias novo.
dbUseArea(.T.,,_cNomeArq,cTabTmp,.T.,.F.)
// criando indice de procura
IndRegua(cTabTmp, cIndexName, "CODIGO", , "", "Gerando Arquivo ...")
//
for nContador := 1 to len(_aDir)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Abertura do arquivo texto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cArrayNome := ""
cArrayNome := alltrim(cNomeArq)+"\"+alltrim(_aDir[nContador])
if len(cArrayNome) > 7
nHdl := fOpen(cArrayNome,68)
//
for t:= 1 to len(alltrim(cArrayNome))
if Substr(alltrim(cArrayNome),t,1) == "\"
nBarra := t+1
endif
next
// arquivo
cArqTxt := upper(Substr(alltrim(cArrayNome),nBarra,len(alltrim(cArrayNome))))
// data de emissao
cData := substr(alltrim(cNomeArq),len(alltrim(cNomeArq))-5,6)
dDtEmissao := ctod(substr(cData,1,2)+"/"+substr(cData,3,2)+"/"+substr(cData,5,2))
//
If nHdl == -1
MsgAlert("O arquivo de nome "+cArrayNome+" nao pode ser aberto! Verifique os parametros.","Atencao!")
Return
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Inicializa a regua de processamento ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Processa({|| RunCont(cArqTxt) },"Processando...")
//
else
alert("Arquivo de importação invalido ou armazem não selecionado !!!")
endif
next
processa({||Baixa()})
Return
static function Baixa()
local cNumseq, cNumDoc, cNomArqErro, cNomNovArq
local aCM := {}
local lMsErroAuto := .F.
local nContErro := 0
local aCab := {}
cNumDoc := NextNumero("SD3",2,"D3_DOC",.T.)//BUSCA NUMERACAO DO SD3
//
dbselectarea("TMP")
procregua(TMP->(LASTREC()))
FOR T:= 1 TO TMP->(LASTREC())
//incproc("Executando Baixa de venda...")
incproc()
cNumseq := ProxNum()
aCM := PegaCMAtu(TMP->CODIGO,"A1") //PEGA O CUSTO MEDIO
//VERIFICA SE O CUSTO VIRA COM VALOR ZERO
/*
If aCM[1] == 0
nCusto := Posicione("SB1",1,xFilial("SB1") + TMP->CODIGO,"B1_UPRC")
nCusto := IIf(nCusto == 0,1,nCusto)
Else
nCusto := aCM[1]
EndIf
aReg := { {"D3_COD" ,TMP->CODIGO ,Nil},;
{"D3_FILIAL" ,TMP->FILIAL ,nil},;
{"D3_LOCAL" ,"A1" ,Nil},;
{"D3_NUMSEQ" ,cNumSeq ,Nil},;
{"D3_DOC" ,cNumDoc ,Nil},;
{"D3_QUANT" ,TMP->QUANT ,Nil},;
{"D3_TM" ,"501" ,Nil},;
{"D3_CF" ,"RE0" ,NIL},;
{"D3_EMISSAO" ,dDTEMISSAO ,NIL},;
{"D3_GRUPO" ,TMP->GRUPO ,NIL},;
{"DE_UM" ,TMP->UM ,NIL},;
{"D3_TIPO" ,TMP->TIPO ,NIL},;
{"D3_USUARIO" ,ALLTRIM(SUBSTR(cUSUARIO,7,15)),NIL},;
{"D3_CUSTO1" ,Round(aCM[1],2) ,Nil},;
{"D3_CUSTO2" ,Round(aCM[2],2) ,Nil},;
{"D3_CUSTO3" ,Round(aCM[3],2) ,Nil},;
{"D3_CUSTO4" ,Round(aCM[4],2) ,Nil},;
{"D3_CUSTO5" ,Round(aCM[5],2) ,Nil},;
{"D3_ESTCIS" ,"S" ,Nil}}
*/
aReg := { {"D3_COD" ,TMP->CODIGO ,Nil},;
{"D3_FILIAL" ,TMP->FILIAL ,nil},;
{"D3_LOCAL" ,"A1" ,Nil},;
{"D3_NUMSEQ" ,cNumSeq ,Nil},;
{"D3_QUANT" ,TMP->QUANT ,Nil},;
{"D3_CF" ,"RE0" ,NIL},;
{"D3_GRUPO" ,TMP->GRUPO ,NIL},;
{"DE_UM" ,TMP->UM ,NIL},;
{"D3_TIPO" ,TMP->TIPO ,NIL},;
{"D3_USUARIO" ,ALLTRIM(SUBSTR(cUSUARIO,7,15)),NIL},;
{"D3_CUSTO1" ,Round(aCM[1],2) ,Nil},;
{"D3_CUSTO2" ,Round(aCM[2],2) ,Nil},;
{"D3_CUSTO3" ,Round(aCM[3],2) ,Nil},;
{"D3_CUSTO4" ,Round(aCM[4],2) ,Nil},;
{"D3_CUSTO5" ,Round(aCM[5],2) ,Nil},;
{"D3_ESTCIS" ,"S" ,Nil}}
aCab := { {"D3_DOC" ,cNumDoc ,Nil},;
{"D3_TM" ,"501" ,Nil},;
{"D3_EMISSAO" ,dDTEMISSAO ,NIL},;
{"D3_CC" ,"" ,nil}}
//{"D3_CUSTO1" ,Round(nCusto,2) ,Nil},;
lMsErroAuto := .F.
//GERA O TITULO NO SD3
//MSExecAuto({|x,y,z| MATA240(x,y,z)},aReg,,3)
MSExecAuto({|x,y,z| MATA241(x,y,z)},aCab,aReg,3)
//
If lMsErroAuto
nContErro ++
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Se gerou novo arquivo de erro, apaga o anterior e gera novo ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If nContErro > 0
cNomArqErro := NomeAutoLog()
cNomNovArq := __RELDIR+"TITULOG.##R"
If MsErase(cNomNovArq)
__CopyFile(cNomArqErro,cNomNovArq)
EndIf
MsErase(cNomArqErro)
If MsgYesNo(OemToAnsi("Ocorreram problemas com" + " ( " + Ltrim(Str(nContErro,5)) + " ) " + "registros durante o processo de Inclusão. Deseja visualiza-los agora?"), OemToAnsi("Atenção"))
fVerLog()
EndIf
EndIf
// tabela temporaria
dbselectarea("TMP")
dbskip()
NEXT
MsErase(_cNomeArq + ".dbf")
MsErase(_cNomeArq + ".idx")
return
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFun+"o ³ RUNCONT º Autor ³ AP5 IDE º Data ³ 29/11/06 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescri+"o ³ Funcao auxiliar chamada pela PROCESSA. A funcao PROCESSA º±±
±±º ³ monta a janela com a regua de processamento. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ Programa principal º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function RunCont(cArqTxt)
Local nTamFile, nTamLin, cBuffer, nBtLidos
local lAchou := .F.
local cCodigo := ""
local lLinha1 := .T.
local lCond := .T.
nTamFile := fSeek(nHdl,0,2)
fSeek(nHdl,0,0)
ProcRegua(nTamFile) // Numero de registros a processar
while lCond
IncProc("Processando arquivo " + cArqTxt)
lAchou := .F.
cCodigo := ""
// verifica se não e a primeir alinha
if lLinha1
nTamLin := 52+Len(cEOL)
cBuffer := Space(nTamLin) // Variavel para criacao da linha do registro para leitura
lLinha1 := .F.
else
nTamLin := 82+Len(cEOL)
cBuffer := Space(nTamLin) // Variavel para criacao da linha do registro para leitura
endif
// le a linha do arquivo
nBtLidos := fRead(nHdl,@cBuffer,nTamLin) // Leitura da primeira linha do arquivo texto
// valida a linha para saber se não esta na ultima linha
if nBtLidos < nTamLin
lCond := .F.
endif
// valida somente as linha de produtos
if nBtLidos > 82
dbSelectArea("SB1")
//filial+cod. barra
dbsetorder(5)
dbseek(xfilial() + substr(cBuffer,1,13))
// caso não localizou o codigo de barra na tabela SB1
if !found()
dbselectarea("SLK")
//filial+cod. barra
dbsetorder(1)
if dbseek(xfilial() + substr(cBuffer,1,13))
cCodigo := slk->lk_codigo
lAchou := .T.
endif
else
cCodigo := sb1->b1_cod
lAchou := .T.
endif
//
if lAchou
dbselectarea(cTabTmp)
if dbseek(cCodigo)
reclock(cTabTmp, .F.)
replace QUANT WITH QUANT + VAL(substr(cBuffer,47,5) + "." + substr(cBuffer,51,3))
msunlock()
else
reclock(cTabTmp, .T.)
REPLACE CODIGO WITH cCodigo
replace QUANT WITH VAL(substr(cBuffer,47,5) + "." + substr(cBuffer,52,3))
REPLACE GRUPO WITH SB1->B1_GRUPO
REPLACE TIPO WITH SB1->B1_TIPO
REPLACE FILIAL WITH SB1->B1_FILIAL
REPLACE UM WITH SB1->B1_UM
//replace ARQUIVO with cArqTxt
//replace CAIXA with substr(cArqTxt,10,3)
msunlock()
endif
endif
endif
EndDo
fClose(nHdl)
Return .T. |
|
|
Mensagem do
@BETO
em 16/02/2007, 14:17 h
Local: MG Registro: 26/01/2006 Postagens: 534 |
Na boa... já resolvi... o problema.... orelhada minha..
|
|
|
Mensagem do
@BETO
em 16/02/2007, 14:17 h
Local: MG Registro: 26/01/2006 Postagens: 534 |
Na boa... já resolvi... o problema.... orelhada minha..
|
|
|
Mensagem do
@BETO
em 16/02/2007, 14:17 h
Local: MG Registro: 26/01/2006 Postagens: 534 |
Na boa... já resolvi... o problema.... orelhada minha..
|
|
|
Mensagem do
TCOL
em 14/10/2008, 08:41 h
Local: RS Registro: 01/02/2008 Postagens: 22 |
Beto, qual era seu erro? Estou com o mesmo problema, e não consegui resolver ainda, já fiz diversas coisas, mas nada ajudou.
Se puderes, aguardo sua ajuda. Obrigado! |
|
|
Mensagem do
TCOL
em 16/10/2008, 17:36 h
Local: RS Registro: 01/02/2008 Postagens: 22 |
Consegui achar o erro! Era um campo date, que eu estava enviando como por exemplo: 20081015, e na verdade, teria que enviar, como envio no remote que seria: 15/10/08, dae usei a fonção ctod() e ficou show.
Resumindo, ficou assim:
{"D3_EMISSAO" ,ctod("15/10/08") ,Nil}
E antes tava(que é o formato que fica armazenado no banco):
{"D3_EMISSAO" ,"20081015" ,Nil} |
|
|
Mensagem do
TCOL
em 17/10/2008, 10:03 h
Local: RS Registro: 01/02/2008 Postagens: 22 |
Desculpe pessoal, me confundi, este problema que o Beto está tendo, não tem nada a ver com esta solução que comentei, isto que postei é para resolver um outro problema de TypeMismatch que estava ocorrendo em outro MsExecAuto.
O problema que o Beto comentou, ainda está ocorrendo para mim no ExecAuto, da MATA241.
Caso alguém tenha alguma dica, agradeço. |
|
|
Mensagem do
ROBERTKOCH
em 21/10/2008, 16:35 h
Local: RS Registro: 14/02/2008 Postagens: 138 |
Boa tarde,
Tenho um "simplesinho" rodando aqui. Segue abaixo...
Robert
// ------------------------------------
User Function RPCMat04 (_sIncExc, _aItens, _sNF, _sSerie, _sCliente, _sLoja)
local _aAutoSD3 := {}
private lMsHelpAuto := .F.
private lMsErroAuto := .F.
for _nItem = 1 to len (_aItens)
// Monta campos para rotina automatica
_aAutoSD3 = {}
aadd (_aAutoSD3, {"D3_TM", "701", NIL})
aadd (_aAutoSD3, {"D3_COD", _aItens [_nItem, 1], NIL})
aadd (_aAutoSD3, {"D3_VADOC02", _sNF, NIL})
aadd (_aAutoSD3, {"D3_QUANT", _aItens [_nItem, 2], NIL})
aadd (_aAutoSD3, {"D3_EMISSAO", _aItens [_nItem, 3], NIL})
lMSErroAuto = .F.
MsExecAuto({|x,y,z|MATA240(x,y,z)}, _aAutoSD3, 3)
If lMsErroAuto
mostraerro()
endif
next
|
|
|
Mensagem do
MARIALOURD
em 10/03/2023, 11:12 h
Local: GO Registro: 07/05/2021 Postagens: 13 |
Beto estou com o mesmo problema, gostaria de saber qual foi a solução encontrada. |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|