|
|
Mensagem do
AJJUNIOR
em 11/07/2018, 09:20 h
Local: PE Registro: 27/11/2017 Postagens: 14 |
Bom dia, estou com um problema em um ponto de entrada...
Preciso que ao criar um novo produto na SB1 automaticamente vá o produto para DA1... Estou usando o Ponto de Entrada MT010INC, porém estou com uma grande dificuldade para preencher o campo DA1_ITEM, pois trata-se de uma sequencial.
a função está assim:
USER FUNCTION MT010INC()
//////////////////////////////////////////////////////////////////////////
/// Inclusao automatica do SB5 - Andre Luis Almeida - 05/09/2006 ///
/////////////////////////////////////////////////////////////////////////
aAreaSB1 := SB1->(Getarea())
DbSelectArea("DA1")
RecLock("DA1",.t.)
Wcodseq()
DA1->DA1_FILIAL := xFilial("DA1")
DA1->DA1_CODPROD := SB1->B1_COD
DA1->DA1_CODTAB :=
if dbseek(xfilial("DA1")+cProd)
while !eof() .and. DA1->DA1_CODPRO == cProd
DA1->(dbskip())
end
endif
MsUnlock()
SB1->(RestArea(aAreaSB1))
////////////////////////////////////////////////////////////////////////////////////////////
Return .t. |
|
|
Mensagem do
JALBERTO
em 11/07/2018, 10:23 h
Local: RS Registro: 20/08/2009 Postagens: 167 |
Que confusa a tua necessidade :(
Tu está dizendo que tem o Produto no item da Tabela de Preço (DA1) mas não tem ele cadastrado na SB1 ?
O que tem a ver o Item da tabela de Preço ?
Jorge Alberto
|
|
|
Mensagem do
AJJUNIOR
em 11/07/2018, 14:00 h
Local: PE Registro: 27/11/2017 Postagens: 14 |
O que eu preciso é que quando cadastrar um item novo no cadastro de produto(SB1) automaticamente cadastre na tabela de preço(DA1). |
|
|
Mensagem do
JALBERTO
em 11/07/2018, 15:44 h
Local: RS Registro: 20/08/2009 Postagens: 167 |
Tu pode fazer o execauto para isso
cDescri := "Tabela de Preço padrão"
nItem := 1 // Realizar uma consulta na Tabela de Preço para identificar o maior item e usar a função Soma1() para que o sistema possa somar.
aAdd(aCabec,{"DA0_FILIAL" ,cFilAnt ,Nil})
aAdd(aCabec,{"DA0_DESCRI" ,cDescri ,Nil})
aAdd(aLinha,{"DA1_ITEM" ,StrZero(nItem,4) ,Nil})
aAdd(aLinha,{"DA1_CODPRO" ,SB1->B1_COD,Nil})
aAdd(aLinha,{"DA1_PRCVEN" ,nPreco ,Nil})
aAdd(aItens,aLinha)
aLinha := {}
MSExecAuto({|x,y,z| Omsa010(x,y,z)},aCabec,aItens,3)
Jorge Alberto
|
|
|
Mensagem do
AJJUNIOR
em 12/07/2018, 08:16 h
Local: PE Registro: 27/11/2017 Postagens: 14 |
Mas dessa forma ele pega o ultimo item cadastrado na SB1?
Exemplo:
Hoje meu tenho 3000 cadastrados na SB1 e desse numero apenas uns 500 está na tabela de preço...
O que preciso realmente é que quando houver alguma inclusão de produto na SB1 automaticamente esse produto cadastrado já vá para a tabela de preço mesmo com o preço zerado...
|
|
|
Mensagem do
JALBERTO
em 12/07/2018, 09:33 h
Local: RS Registro: 20/08/2009 Postagens: 167 |
O PE MT010INC é chamado no final da Inclusão de um novo produto, então sim o sistema estará posicionado no produto que está sendo incluído no momento.
Jorge Alberto
|
|
|
Mensagem do
GRAVATAL
em 12/07/2018, 10:44 h
Local: SP Registro: 14/02/2012 Postagens: 3 |
Cara tu pode usar o que o fonte que o brother citou ai em cima no ponto de entrada A010TOK, nele voce estara posicionado no produto que estara incluindo, dai fara a inclusão na DA1 via execauto nesse ponto de entrada. |
|
|
Mensagem do
JALBERTO
em 12/07/2018, 13:30 h
Local: RS Registro: 20/08/2009 Postagens: 167 |
ATENÇÃO: O PE A010TOK é chamado tanto na inclusão como na alteração para validar se está "tudo ok".
Se tu quiser saber se é inclusão ou alteração terá que usar as variáveis publicas INCLUI e ALTERA para saber o que está sendo feito.
Jorge Alberto |
|
|
Mensagem do
3FRAIM
em 12/07/2018, 13:34 h
Local: GO Registro: 05/01/2011 Postagens: 24 |
AJJUNIOR,
Da forma como o Jorge passou, todas as vezes que vc incluir um produto, será incluída uma nova tabela de preço para esse novo produto.
Eu penso que essa não seja a sua necessidade.
Para incluir o produto na tabela de preço ( que já está cadastrada ), vc precisa, primeiramente informar o código dessa tabela em algum lugar, ou em um campo customizado na SB1 ou abrindo uma tela para que o usuário informe o código ou até mesmo em um parâmetro (se existir somente uma tabela de preço).
Para identificar a próxima sequencia para incluir o item, execute uma consulta no banco antes de começar a incluir (RecLock). Deve ser feito antes porque não é aconselhado executar o dbskip() na mesma tabela que executou o reclock.
Outra coisa que vc precisa é do preço de venda.
Peso que também seja necessário verificar se aquele produto realmente é um produto para venda. Todos os produtos cadastrados podem ser vendidos? Não existem produtos somente para consumo? Pense nisso e crie uma regra ou por grupo ou por tipo...
Segue abaixo exemplo da consulta para identificar o ultimo item da tabela de preço que deseja incluir o produto.
BEGINSQL ALIAS "TMP1"
SELECT MAX(DA1_ITEM) ULTIMO
FROM %TABLE:DA1%
WHERE
DA1_FILIAL = %XFILIAL:DA1%
AND DA1_CODTAB = %EXP:cCodTab%
AND %NOTDEL%
ENDSQL
If TMP1->(!EOF())
cProximo := Soma1(TMP1->ULTIMO)
TMP1->(dbCloseArea())
Else
MsgAlert("Tabela de preço não encontrada!")
TMP1->(dbCloseArea())
return
EndIf
//********************************
// Depois é so executar o Reclock
//********************************
dbSelectArea("DA1")
RecLock("DA1",.t.)
DA1->DA1_FILIAL := xFilial("DA1")
DA1->DA1_ITEM := cProximo
DA1->DA1_CODPROD := SB1->B1_COD
DA1->DA1_CODTAB := cCodTab
DA1->DA1_PRCVEN := nPrcVenda
DA1->DA1_DATVIG := dDataBase
DA1->DA1_ATIVO := ‘1‘ // Sim
DA1->DA1_TPOPER := ‘4‘ // todas as operações
DA1->DA1_QTDLOT := 999999.99
DA1->DA1_INDLOT := STRZERO(999999, TamSx3("DA1_INDLOT")[1]-3 ) + ".99"
DA1->DA1_MOEDA := 1
MsUnLock()
Espero ter ajudado!
Efraim Barros |
|
|
Mensagem do
AJJUNIOR
em 12/07/2018, 14:40 h
Local: PE Registro: 27/11/2017 Postagens: 14 |
Efraim Barros, boa tarde, o que preciso é realmente isso que vc falou, porém estou compilando esse fonte e está dando um erro(em anexo).
Se puderes me dar uma força ou add no skype: ajjunior@quaimar.com |
|
|
Mensagem do
3FRAIM
em 12/07/2018, 16:18 h
Local: GO Registro: 05/01/2011 Postagens: 24 |
Ajjunior,
Eu não consegui te adicionar no skype.
Mas o erro está ocorrendo porque eu não fiz o fonte completo, porque não tenho todas as informações.
Eu coloquei várias questões na ultima mensagem que você vai precisar tratar no fonte.
Uma delas é com relação ao erro.
vc não preencheu o codigo da tabela de preco na variavel ccodtab.
Dá uma lida na mensagem anterior e faça os ajustes necessários.
|
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|