- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- MATA103 - Dúvida no PE -> MT103VPC
×
Linguagem de Programação ADVPL
Perguntas MATA103 - Dúvida no PE -> MT103VPC
- Darkbeo
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 33
- Obrigados Recebidos: 0
10 anos 2 meses atrás - 10 anos 2 meses atrás #24977
por Darkbeo
MATA103 - Dúvida no PE -> MT103VPC foi criado por Darkbeo
Boa Tarde a todos!
Referente ao Post antigo, alguém teria alguma ideia de como fazer para exibir um único registro por fez na ordem do mais antigo para o mais novo?
Exemplo:
Produto: 09.5074
Pedido .... Data .... QTD
123456 .... 20140907 .... 21
456789 .... 20140908 .... 104
654321 .... 20140921 .... 164
987654 .... 20150101 .... 207
Preciso lançar um Documento de Entrada deste produto onde tenha 200 peças, seria necessário pegar 3 pedidos (21+104+75) para bater os 200, isso se eu pegar dos PC mais antigos para os mais novos. Então estou querendo fazer da seguinte forma, ao inserir um "Doc Entrada" pressiono F6 e ira exibir somente o registro 123456, ao pressionar novamente o F6 na linha debaixo será exibido somente o próximo registro [456789] e assim sucessivamente.
Segue o código atual que estou utilizando, porém ele só exibe o primeiro registro [123456] e quando a qtd é toda utilizada ele não exibe mais nenhum.
Agradeço pela atenção de todos, Obrigado.
Referente ao Post antigo, alguém teria alguma ideia de como fazer para exibir um único registro por fez na ordem do mais antigo para o mais novo?
Exemplo:
Produto: 09.5074
Pedido .... Data .... QTD
123456 .... 20140907 .... 21
456789 .... 20140908 .... 104
654321 .... 20140921 .... 164
987654 .... 20150101 .... 207
Preciso lançar um Documento de Entrada deste produto onde tenha 200 peças, seria necessário pegar 3 pedidos (21+104+75) para bater os 200, isso se eu pegar dos PC mais antigos para os mais novos. Então estou querendo fazer da seguinte forma, ao inserir um "Doc Entrada" pressiono F6 e ira exibir somente o registro 123456, ao pressionar novamente o F6 na linha debaixo será exibido somente o próximo registro [456789] e assim sucessivamente.
Segue o código atual que estou utilizando, porém ele só exibe o primeiro registro [123456] e quando a qtd é toda utilizada ele não exibe mais nenhum.
#include "rwmake.ch"
#include "topconn.ch"
#include "fileio.ch"
#IFNDEF CRLF
#DEFINE CRLF ( chr(13)+chr(10) )
#ENDIF
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³MT103VPC ºAutor ³Valdemir Jose º Data ³ 09/04/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Exibe ou não o Pedido de compra º±±
±±º ³ .T. = Exibe º±±
±±º ³ .F. = Não Exibe º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function MT103VPC() // U_MT103VPC()
Local lRet := .T.
Local aArea:= GetArea()
Local cQry := ""
Local cCod := ""
Local aCol1:= {}
Local aSQL1:= {}
Local nQtd := 0
If FunName() == "MATA103"
If Type ("M->D1_COD") == "C"
cCod := M->D1_COD
Else
cCod := aCols[n, GDFieldPos("D1_COD")]
EndIf
If SELECT("PEPC") > 0
dbSelectArea("PEPC")
dbCloseArea()
Endif
cQry := "SELECT TOP 1 C7.C7_PRODUTO, C7.C7_FORNECE, C7.C7_LOJA, " + chr(13)
cQry += " C7.C7_QUANT, C7.C7_QUJE, C7.C7_QTDACLA, " + chr(13)
cQry += " (C7.C7_QUANT - C7.C7_QUJE - C7.C7_QTDACLA) AS RESTO, " + chr(13)
cQry += " C7.C7_NUM, C7.C7_DATPRF AS DATA " + chr(13)
cQry += " FROM "+RetSQLname('SC7')+" C7 " + chr(13)
cQry += " WHERE C7.C7_FILIAL = '"+xFilial("SC7")+"' " + chr(13)
cQry += " AND C7.C7_FORNECE = '"+cA100FOR+"' " + chr(13)
cQry += " AND C7.C7_LOJA = '"+cLoja+"' " + chr(13)
cQry += " AND C7.C7_PRODUTO = '"+cCod+"' " + chr(13)
cQry += " AND (C7.C7_QUANT - C7.C7_QUJE - C7.C7_QTDACLA) > 0 " + chr(13)
cQry += " AND C7.C7_RESIDUO = ' ' " + chr(13)
cQry += " AND C7.C7_CONAPRO <> 'B' " + chr(13)
cQry += " AND C7_TPOP <> 'P' " + chr(13)
cQry += " AND C7.D_E_L_E_T_ = ' ' " + chr(13)
cQry += " ORDER BY C7.C7_DATPRF ASC "
TCQuery cQry NEW ALIAS PEPC
dbSelectArea("PEPC")
dbgotop()
If SC7->(C7_FORNECE+C7_LOJA+C7_PRODUTO) = cA100FOR+cLoja+cCod .And. SC7->C7_DATPRF = SToD(PEPC->DATA)
lRet := .T.
Else
lRet := .F.
EndIf
Else
lRet := .T.
EndIf
PEPC->( dbCloseArea() )
RestArea(aArea)
Return lRet
Agradeço pela atenção de todos, Obrigado.
Ultima edição: 10 anos 2 meses atrás por Darkbeo. Razão: Correções
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 216
- Obrigados Recebidos: 0
10 anos 2 meses atrás #24999
por admin
Respondido por admin no tópico MATA103 - Dúvida no PE -> MT103VPC
Cara eu entendi seu problema, mas o buraco é mais embaixo, precisaria de algum vetor para adicionar os pedidos que já foram selecionados e suas respectivas quantidades, até tenho uma idéia de como fazer isso, mas ia ser muito punk, precisaria criar um vetor antes de chamar a tela do documento de entrada e neste vetor acrescentar, o item, o codigo do produto, o pedido que já foi selecionado, e a quantidade do mesmo, e na sua query vc precisaria a cada passagem eliminar os pedidos que já foram selecionados para aquele determinado produto.
Precisaria encontrar um ponto de entrada na abertura da tela de documento de entrada e criar tipo assim:
aPedSel := {}
depois um ponto de entrada qdo a pessoa seleciona o pedido de compras,
AAdd(aPedSel,{cItem,cCod,cPedido,nQuant})
e na query sempre deixar de buscar estes pedidos selecionados:
C7_NUM NOT IN(" + cPedidos (essa variavel seria a montagem de todos os pedidos já selecionados
tipo "'002300','20030','220039')"
Olha até dá pra fazer mas é um puta trabalhão
bom espero ter dado uma luz ai
Precisaria encontrar um ponto de entrada na abertura da tela de documento de entrada e criar tipo assim:
aPedSel := {}
depois um ponto de entrada qdo a pessoa seleciona o pedido de compras,
AAdd(aPedSel,{cItem,cCod,cPedido,nQuant})
e na query sempre deixar de buscar estes pedidos selecionados:
C7_NUM NOT IN(" + cPedidos (essa variavel seria a montagem de todos os pedidos já selecionados
tipo "'002300','20030','220039')"
Olha até dá pra fazer mas é um puta trabalhão
bom espero ter dado uma luz ai
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- MATA103 - Dúvida no PE -> MT103VPC
Tempo para a criação da página:0.080 segundos