|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Ponto de entrada MT103FIM |
|
Versão: |
. |
|
Plataforma: |
. |
Complemento: |
|
|
DB: |
. |
Complemento: |
|
|
|
|
|
Mensagem do
GUDEFENDI
em 10/01/2019, 07:40 h
Local: SP Registro: 10/07/2018 Postagens: 52 |
Bom dia,
Tenho o ponto de entrada abaixo (MT103FIM) que pega o lote do fornecedor e a data de fabricação que são inseridos na SD1 no momento da digitação do documento de entrada e os grava na SD7 em dois campos personalizados.
Só que se a nota que esta sendo digitada tiver mais de 1 item, ele grava todos os itens na SD7 com o lote e a data do ultimo item da nota digitada.
Alguém consegue me ajudar como corrigir isso?
-------------------------------------------------------------------------
#INCLUDE "RWMAKE.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
User Function MT103FIM()
Local nOpcao := PARAMIXB[1] // Opção Escolhida pelo usuario no aRotina
Local nConfirma := PARAMIXB[2] // Se o usuario confirmou a operação de gravação da NFECODIGO DE APLICAÇÃO DO USUARIO.....
Local cAliasTmp := GetNextAlias()
Local xnRecno := 0
//IF nOpcao = 3 .AND. nConfirma = 1
cCodEmp := FWCodEmp()
IF cCodEmp == "01"
cQuery := "SELECT * FROM "+RetSqlName("SD1")+" D1 "
cQuery += "WHERE D1.D_E_L_E_T_ = ‘ ‘ AND D1.D1_FILIAL = ‘"+XFILIAL("SD1")+"‘ "
cQuery += "AND D1.D1_DOC = ‘"+SF1->F1_DOC+"‘ AND D1.D1_SERIE = ‘"+SF1->F1_SERIE+"‘AND D1.D1_FORNECE = ‘"+SF1->F1_FORNECE+"‘ AND D1.D1_LOJA = ‘"+SF1->F1_LOJA+"‘ "
dbUseArea(.T., ‘TOPCONN‘, TCGenQry(,,cQuery),‘TSD1‘, .F., .T.)
cQuery := ChangeQuery(cQuery)
WHILE TSD1->(!EOF())
cQuery := "SELECT D7.R_E_C_N_O_ AS REC FROM "+RetSqlName("SD7")+" D7 "
cQuery += "WHERE D7.D_E_L_E_T_ = ‘ ‘ AND D7.D7_FILIAL = ‘"+XFILIAL("SD7")+"‘ "
cQuery += "AND D7.D7_DOC = ‘"+TSD1->D1_DOC+"‘ AND D7.D7_SERIE = ‘"+TSD1->D1_SERIE+"‘AND D7.D7_FORNECE = ‘"+TSD1->D1_FORNECE+"‘ AND D7.D7_LOJA = ‘"+TSD1->D1_LOJA+"‘ "
dbUseArea(.T., ‘TOPCONN‘, TCGenQry(,,cQuery),‘TSD7‘, .F., .T.)
cQuery := ChangeQuery(cQuery)
WHILE TSD7->(!EOF())
SD7->(DBCLOSEAREA())
SD7->(DBSETORDER(1))
SD7->(DBGOTO(TSD7->REC))
RECLOCK("SD7",.F.)
SD7->D7_ZLOTEFO := TSD1->D1_LOTEFOR
SD7->D7_ZDTFABR := STOD(TSD1->D1_DFABRIC)
MSUNLOCK()
TSD7->(DBSKIP())
ENDDO
TSD7->(DBCLOSEAREA())
TSD1->(DBSKIP())
TSD1->(DBCLOSEAREA())
ENDDO
TSD1->(DBCLOSEAREA())
//ENDIF
ENDIF
RETURN() |
|
|
Mensagem do
CRIS.POLLI
em 10/01/2019, 08:30 h
Local: SP Registro: 16/09/2005 Postagens: 56 |
Bom dia,
Sugiro você unir as duas querys caso a relação seja um para um, da uma olhada no campo D7_CHAVE, na minha base não achei o campo que se refere ao item D1_ITEM
Tem o campo D1_PRODUTO.
No select procure colocar somente os campos que serão utilizados, isto diminui o tamanho do retorno. |
|
|
Mensagem do
JUNIORPLAC
em 10/01/2019, 15:13 h
Local: BA Registro: 19/02/2015 Postagens: 32 |
Você é analista, consultor, trabalha com Protheus, Sistemas de informação? Se SIM! Se inscreva neste canal, conteúdo bom e de GRAÇAAAAAAAAAAAAA!
Canal Protheus e SQL - Conteúdo GRATUITO |
|
|
Mensagem do
JUNIORPLAC
em 10/01/2019, 15:13 h
Local: BA Registro: 19/02/2015 Postagens: 32 |
Você é analista, consultor, trabalha com Protheus, Sistemas de informação? Se SIM! Se inscreva neste canal, conteúdo bom e de GRAÇAAAAAAAAAAAAA!
Canal Protheus e SQL - Conteúdo GRATUITO |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|