× Linguagem de Programação ADVPL

Perguntas INSERIR DADOS NA SC8

Mais
6 anos 9 meses atrás - 6 anos 9 meses atrás #32266 por manoelcarlosjunior
Help Guys !!! estou montando uma rotina para atualizar minhas cotações via um arquivo .CSV recebido dos meus fornecedores.

Preciso inserir dados na SC8 tentei via msexeauto, juro que estava funcionando kkkk mas, já estou a quatro dias tentando analisar o erro e nada. Perguntas.:

1 - Pensei em tentar inserir esses dados para atualizar a cotação via insert, tem algum exemplo ADVPL ? 2 - Se puderem dar uma olhada para identificar o erro o código esta abaixo. 3 - Lebrando que não da erro simplesmente não atualiza a cotação ja debuguei centenas de vezes e não identifiquei o erro e msexecauto é o do MATA150.

USER FUNCTION ImporSC8()

Local aLayout := {} Local aArquivo := {} Local nPosicao := 0 Local nColuna := 0 Local i,j := 0 Local nLog := 0 Local cLinha := "" Local cMenErro := ""

//Local cBuffer := "" //Local cFileOpen := "" Local cTitulo1 := "Selecione o arquivo" Local cExtens := "Arquivo CSV | *.csv" Local cFilial := "" Local cNCotacao := "" Local cLoja := "" Local cCadastro := " deu erro" Local cNItem := ""Local cCFornec := "" Local cPreco := ""Local nPreco := ""Local cQuant := "" Local cLoja := "" Local cCond := "" Local cContato := "" Local cFilialEnt:= "" Local cMoeda := "" Local cEmissao := "" Local cSeguro := "" Local cProposta := "" Local cProduto := "" Local aCabec:={} Local aItens:={}

Private wConteudo := Nil Private lMsHelpAuto := .T. // se .t. direciona as mensagens do help Private lMsErroauto := .F. // necessario a criacao

wtam_array := 20 // VEM CONFORME A ESTRUTURA DO ARQUIVO ENVIADO - wtam_array := 22

cFileOpen := cGetFile(cExtens,cTitulo1,,,.T.)

If !File(cFileOpen) MsgAlert("Arquivo texto: "+cFileOpen+" não localizado",cCadastro) Return Endif

FT_FUSE(cFileOpen) //ABRIR FT_FGOTOP() //PONTO NO TOPO ProcRegua(FT_FLASTREC()) //QTOS REGISTROS LER FT_FGoTop()

While !FT_FEOF() //FACA ENQUANTO NAO FOR FIM DE ARQUIVO IncProc()

// Capturar dados // cBuffer := FT_FREADLN() //LENDO LINHA

nColuna := 0 nPosicao := 1 cLinha := FT_FReadLn()

AAdd(aArquivo,Array(wtam_array)) WLOG := "" For i := 1 To Len(cLinha)

If SubStr(cLinha,i,1) == ";" .Or. Len(cLinha) == i nColuna++

IF NCOLUNA == wtam_array aArquivo[Len(aArquivo),nColuna] := SubStr(cLinha,nPosicao,i+1-nPosicao) else aArquivo[Len(aArquivo),nColuna] := SubStr(cLinha,nPosicao,i-nPosicao) ENDIF

nPosicao := i + 1 EndIf

Next i

IF NCOLUNA < WTAM_ARRAY NCOLUNA += 1 FOR I := NCOLUNA TO WTAM_ARRAY aArquivo[Len(aArquivo),nColuna] := SPACE(1) NEXT ENDIF

IF .NOT. EMPTY(WLOG) FWrite(nLog, WLOG + " - " + CLINHA + CHR(13) + CHR(10) ) WERRO := .T. ENDIF

FT_FSkip()

EndDo

/IF WERRO // TEM ERRO DE FILIAL - NAO PROSSEGUE A IMPORTACAO FClose(nLog) MsgAlert("Processamento interrompido. Verificar o arquivo log: " + CFILELOG ) RETURN() ENDIF/

/// PROCESSANDO O ARQUIVO PARA GRAVAR NA TABELA DO PROTHEUS (SC8)

ProcRegua(Len(aArquivo))

//INCLUINDO O •

aSort(aArquivo,,,{|aX,aY| ax[1] < aY[1]})

For i := 1 To Len(aArquivo)

cFilialEnt:= aArquivo[02] cNCotacao := aArquivo[03] cProposta := aArquivo[04] cNItem := aArquivo[05] cEmissao := aArquivo[06] cCFornec := aArquivo[08] cLoja := aArquivo[09] cCond := aArquivo[16] cContato := aArquivo[11] cProduto := aArquivo[12] cQuant := aArquivo[15] cMoeda := aArquivo[17] cSeguro := aArquivo[18] cPreco := aArquivo[19]

//Tratamento ExecAuto

cCFornec1 := cValtoChar(StrZero(VAL(cCFornec),6)) cLoja1 := cValtoChar(StrZero(VAL(cLoja),2)) cFilialEnt1:= cValtoChar(StrZero(VAL(cFilialEnt),2)) cProposta1 := cValtoChar(StrZero(VAL(cProposta),2)) cProduto1 := cValtoChar(StrZero(VAL(cProduto),15)) cNItem1 := cValtoChar(StrZero(VAL(cNItem),4)) cNCotacao1 := cValtoChar(StrZero(VAL(cNCotacao),6)) cEmissao1 := SUBSTR(cEmissao,7,4)+SUBSTR(cEmissao,4,2)+SUBSTR(cEmissao,1,2)

// ---- EXEMPLO ALTERACAO DE UMA COTACAO JA EXISTENTE ----dbSelectArea("SC8") dbSetOrder(8) dbSeek(xFilial("SC8")+cNCotacao1+cCFornec1+cLoja1+cProduto1+cNItem1 ) aadd(aCabec,{"C8_FORNECE" , cCFornec1}) aadd(aCabec,{"C8_LOJA" , cLoja1}) aadd(aCabec,{"C8_COND" ,cCond })aadd(aCabec,{"C8_CONTATO" ,cContato }) aadd(aCabec,{"C8_FILENT" ,cFilialEnt1}) aadd(aCabec,{"C8_MOEDA" ,VAL(cMoeda)}) //{"C8_MOEDA" ,VAL(cMoeda)}) aadd(aCabec,{"C8_EMISSAO" ,cEmissao1}) aadd(aCabec,{"C8_SEGURO" ,VAL(cSeguro) }) aadd(aItens,{{"C8_NUMPRO", cProposta1,Nil},; //1 {"C8_PRODUTO",cProduto1,Nil},; {"C8_ITEM" , cNItem1 ,Nil},; {"C8_QUANT",VAL(cQuant),Nil},; {"C8_PRECO",VAL(StrTran(cPreco,",",".")),Nil}}) //Endif MSExecAuto({|v,x,y| MATA150(v,x,y)},aCabec,aItens,3) // opção 3 alteração

If lMsErroAutomostraerro() EndIf

Next

MsgInfo("Processo finalizado com Sucesso !")

Return
Ultima edição: 6 anos 9 meses atrás por manoelcarlosjunior.

Por favor Acessar ou Registrar para participar da conversa.

Mais
6 anos 9 meses atrás #32269 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico INSERIR DADOS NA SC8
Essa questão foi encerrada galera, na verdade não havia "Problema", o MsExecauto do MATA150 ele só atualiza os itens da cotação que não foram atendidos. Eu fiz dois programas um para extrair a planilha e outro para importar o que extrai estava trazendo todos os outros itens inclusive os já atendidos pela cotação.

Att,

Manoel Carlos Júnior

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.086 segundos
Joomla templates by a4joomla