- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- TES inteligênte adicionar campo na validação
×
Linguagem de Programação ADVPL
Perguntas TES inteligênte adicionar campo na validação
- gustavo13
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 119
- Obrigados Recebidos: 0
11 anos 8 meses atrás #11956
por gustavo13
TES inteligênte adicionar campo na validação foi criado por gustavo13
Olá!
Quero adicionar uma validação personalizada na regra do TES inteligente, quero que ele considere apenas os 4 primeiros dígitos da NCM quando da mesma forma cadastrada no TES inteligente, por padrão ele não faz isto porque ele compara o campo NCM do TES inteligente com o do cadastro do produto que no caso estara diferente. Tentei da forma abaixo mas não estou entendendo este ponto de entrada, peguei ele no tdn, mas ele não preenche o campo TES do pedido de venda.
User Function MT089CD()
//As variaveis foram carregada com paramixb somente para verificar o condeudo original.
Local bCond:=PARAMIXB[1] //Condicao que avalia os campos do SFM
Local bSort:=PARAMIXB[2] //Forma de ordenacao do array onde o 1o elemento sera utilizado. Esse array inicialmente possui 9 posicoes
Local bIRWhile:=PARAMIXB[3] //Regra de selecao dos registros do SFM
Local bAddTes:=PARAMIXB[4] //Conteudo a ser acrescentado no array
Local cTabela:=PARAMIXB[5] //Tabela que esta sendo tratada
public _nPosProd
public _nPosIPI
public _cProduto
If cTabela == "SC6"
_nPosProd := aScan(aHeader, {|x| AllTrim(x[2])=="C6_PRODUTO"})
_nPosIPI := aScan(aHeader, {|x| AllTrim(x[2])=="C6_POSIPI"})
_cProduto := acols[n][_nPosProd]
bCond:={||(substr(acols[n][_nPosIPI],1,4) == (cAliasSFM)->FM_ININCM)} //Acrescenta compo novo a regra, esse campo devera ser acrescentdo no X2_UNICO do SFM.
bSort:={|x,y| x[11] > y[11]}//+x[2]+x[3]+x[4]+x[5]+x[6]+x[10]+x[7]+y[2]+y[3]+y[4]+y[5]+y[6]+y[10]+y[7]}//Altero a ordem do array, posicao 10, para considerar o campo especifico acrescentado na linha abaixo
bIRWhile:= {||.T.}
bAddTes := {||aAdd(aTes[Len(aTes)],(cAliasSFM)->FM_XTPCLI) }//Acrescento campo a ser considerado na TES Inteligente.
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Return({bCond,bSort,bIRWhile,bAddTes})
Agradeço desde já.
Quero adicionar uma validação personalizada na regra do TES inteligente, quero que ele considere apenas os 4 primeiros dígitos da NCM quando da mesma forma cadastrada no TES inteligente, por padrão ele não faz isto porque ele compara o campo NCM do TES inteligente com o do cadastro do produto que no caso estara diferente. Tentei da forma abaixo mas não estou entendendo este ponto de entrada, peguei ele no tdn, mas ele não preenche o campo TES do pedido de venda.
User Function MT089CD()
//As variaveis foram carregada com paramixb somente para verificar o condeudo original.
Local bCond:=PARAMIXB[1] //Condicao que avalia os campos do SFM
Local bSort:=PARAMIXB[2] //Forma de ordenacao do array onde o 1o elemento sera utilizado. Esse array inicialmente possui 9 posicoes
Local bIRWhile:=PARAMIXB[3] //Regra de selecao dos registros do SFM
Local bAddTes:=PARAMIXB[4] //Conteudo a ser acrescentado no array
Local cTabela:=PARAMIXB[5] //Tabela que esta sendo tratada
public _nPosProd
public _nPosIPI
public _cProduto
If cTabela == "SC6"
_nPosProd := aScan(aHeader, {|x| AllTrim(x[2])=="C6_PRODUTO"})
_nPosIPI := aScan(aHeader, {|x| AllTrim(x[2])=="C6_POSIPI"})
_cProduto := acols[n][_nPosProd]
bCond:={||(substr(acols[n][_nPosIPI],1,4) == (cAliasSFM)->FM_ININCM)} //Acrescenta compo novo a regra, esse campo devera ser acrescentdo no X2_UNICO do SFM.
bSort:={|x,y| x[11] > y[11]}//+x[2]+x[3]+x[4]+x[5]+x[6]+x[10]+x[7]+y[2]+y[3]+y[4]+y[5]+y[6]+y[10]+y[7]}//Altero a ordem do array, posicao 10, para considerar o campo especifico acrescentado na linha abaixo
bIRWhile:= {||.T.}
bAddTes := {||aAdd(aTes[Len(aTes)],(cAliasSFM)->FM_XTPCLI) }//Acrescento campo a ser considerado na TES Inteligente.
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Return({bCond,bSort,bIRWhile,bAddTes})
Agradeço desde já.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 8 meses atrás #11960
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico TES inteligênte adicionar campo na validação
Tenta assim :
User Function MT089CD()
//As variaveis foram carregada com paramixb somente para verificar o condeudo original.
Local bCond:=PARAMIXB[1] //Condicao que avalia os campos do SFM
Local bSort:=PARAMIXB[2] //Forma de ordenacao do array onde o 1o elemento sera utilizado. Esse array inicialmente possui 9 posicoes
Local bIRWhile:=PARAMIXB[3] //Regra de selecao dos registros do SFM
Local bAddTes:=PARAMIXB[4] //Conteudo a ser acrescentado no array
Local cTabela:=PARAMIXB[5] //Tabela que esta sendo tratada
public _nPosProd
public _nPosIPI
public _cProduto
If cTabela == "SC6"
_nPosProd := aScan(aHeader, {|x| AllTrim(x[2])=="C6_PRODUTO"})
_nPosIPI := aScan(aHeader, {|x| AllTrim(x[2])=="C6_POSIPI"})
_cProduto := acols[n][_nPosProd]
bCond:={||(substr(acols[n][_nPosIPI],1,4) == Left((cAliasSFM)->FM_ININCM,4))} //Acrescenta compo novo a regra, esse campo devera ser acrescentdo no X2_UNICO do SFM.
bSort:={|x,y| x[11] > y[11]}//+x[2]+x[3]+x[4]+x[5]+x[6]+x[10]+x[7]+y[2]+y[3]+y[4]+y[5]+y[6]+y[10]+y[7]}//Altero a ordem do array, posicao 10, para considerar o campo especifico acrescentado na linha abaixo
bIRWhile:= {||.T.}
bAddTes := {||aAdd(aTes[Len(aTes)],(cAliasSFM)->FM_XTPCLI) }//Acrescento campo a ser considerado na TES Inteligente.
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Return({bCond,bSort,bIRWhile,bAddTes})
User Function MT089CD()
//As variaveis foram carregada com paramixb somente para verificar o condeudo original.
Local bCond:=PARAMIXB[1] //Condicao que avalia os campos do SFM
Local bSort:=PARAMIXB[2] //Forma de ordenacao do array onde o 1o elemento sera utilizado. Esse array inicialmente possui 9 posicoes
Local bIRWhile:=PARAMIXB[3] //Regra de selecao dos registros do SFM
Local bAddTes:=PARAMIXB[4] //Conteudo a ser acrescentado no array
Local cTabela:=PARAMIXB[5] //Tabela que esta sendo tratada
public _nPosProd
public _nPosIPI
public _cProduto
If cTabela == "SC6"
_nPosProd := aScan(aHeader, {|x| AllTrim(x[2])=="C6_PRODUTO"})
_nPosIPI := aScan(aHeader, {|x| AllTrim(x[2])=="C6_POSIPI"})
_cProduto := acols[n][_nPosProd]
bCond:={||(substr(acols[n][_nPosIPI],1,4) == Left((cAliasSFM)->FM_ININCM,4))} //Acrescenta compo novo a regra, esse campo devera ser acrescentdo no X2_UNICO do SFM.
bSort:={|x,y| x[11] > y[11]}//+x[2]+x[3]+x[4]+x[5]+x[6]+x[10]+x[7]+y[2]+y[3]+y[4]+y[5]+y[6]+y[10]+y[7]}//Altero a ordem do array, posicao 10, para considerar o campo especifico acrescentado na linha abaixo
bIRWhile:= {||.T.}
bAddTes := {||aAdd(aTes[Len(aTes)],(cAliasSFM)->FM_XTPCLI) }//Acrescento campo a ser considerado na TES Inteligente.
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Return({bCond,bSort,bIRWhile,bAddTes})
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- gustavo13
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 119
- Obrigados Recebidos: 0
11 anos 8 meses atrás #11973
por gustavo13
Respondido por gustavo13 no tópico TES inteligênte adicionar campo na validação
Consegui, fiz mais alterações além desta. Fica o fonte pra quem quiser adicionar campos na validação.
#INCLUDE "rwmake.ch"
User Function MT089CD()
//As variaveis foram carregada com paramixb somente para verificar o condeudo original.
Local bCond:=PARAMIXB[1] //Condicao que avalia os campos do SFM
Local bSort:=PARAMIXB[2] //Forma de ordenacao do array onde o 1o elemento sera utilizado. Esse array inicialmente possui 9 posicoes
Local bIRWhile:=PARAMIXB[3] //Regra de selecao dos registros do SFM
Local bAddTes:=PARAMIXB[4] //Conteudo a ser acrescentado no array
Local cTabela:=PARAMIXB[5] //Tabela que esta sendo tratada
public _nPosProd
public _nPosIPI
public _cProduto
If cTabela == "SC6"
_nPosProd := aScan(aHeader, {|x| AllTrim(x[2])=="C6_PRODUTO"})
_nPosIPI := aScan(aHeader, {|x| AllTrim(x[2])=="C6_POSIPI"})
_cProduto := acols[n][_nPosProd]
If substr(acols[n][_nPosIPI],1,4) $ "8471"
bCond:={||(substr(acols[n][_nPosIPI],1,4) == Left((cAliasSFM)->FM_ININCM,4))} //Acrescenta compo novo a regra, esse campo devera ser acrescentdo no X2_UNICO do SFM.
bSort:={|x,y| x[10]<y[10]}//+x[2]+x[3]+x[4]+x[5]+x[6]+x[10]+x[7]+y[2]+y[3]+y[4]+y[5]+y[6]+y[10]+y[7]}//Altero a ordem do array, posicao 10, para considerar o campo especifico acrescentado na linha abaixo
bIRWhile:= {||((CALIASSFM)->(!EMPTY(FM_GRTRIB) .AND. !EMPTY(FM_GRPROD)) .AND. ALLTRIM(CGRUPO)+ALLTRIM(CGRUPROD)==(CALIASSFM)->(ALLTRIM(FM_GRTRIB)+ALLTRIM(FM_GRPROD))).OR.(CALIASSFM)->(EMPTY(FM_GRTRIB).OR.EMPTY(FM_GRPROD))}
bAddTes := {||aAdd(aTes[Len(aTes)],(cAliasSFM)->FM_ININCM) }//Acrescento campo a ser considerado na TES Inteligente.
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Return({bCond,bSort,bIRWhile,bAddTes})
#INCLUDE "rwmake.ch"
User Function MT089CD()
//As variaveis foram carregada com paramixb somente para verificar o condeudo original.
Local bCond:=PARAMIXB[1] //Condicao que avalia os campos do SFM
Local bSort:=PARAMIXB[2] //Forma de ordenacao do array onde o 1o elemento sera utilizado. Esse array inicialmente possui 9 posicoes
Local bIRWhile:=PARAMIXB[3] //Regra de selecao dos registros do SFM
Local bAddTes:=PARAMIXB[4] //Conteudo a ser acrescentado no array
Local cTabela:=PARAMIXB[5] //Tabela que esta sendo tratada
public _nPosProd
public _nPosIPI
public _cProduto
If cTabela == "SC6"
_nPosProd := aScan(aHeader, {|x| AllTrim(x[2])=="C6_PRODUTO"})
_nPosIPI := aScan(aHeader, {|x| AllTrim(x[2])=="C6_POSIPI"})
_cProduto := acols[n][_nPosProd]
If substr(acols[n][_nPosIPI],1,4) $ "8471"
bCond:={||(substr(acols[n][_nPosIPI],1,4) == Left((cAliasSFM)->FM_ININCM,4))} //Acrescenta compo novo a regra, esse campo devera ser acrescentdo no X2_UNICO do SFM.
bSort:={|x,y| x[10]<y[10]}//+x[2]+x[3]+x[4]+x[5]+x[6]+x[10]+x[7]+y[2]+y[3]+y[4]+y[5]+y[6]+y[10]+y[7]}//Altero a ordem do array, posicao 10, para considerar o campo especifico acrescentado na linha abaixo
bIRWhile:= {||((CALIASSFM)->(!EMPTY(FM_GRTRIB) .AND. !EMPTY(FM_GRPROD)) .AND. ALLTRIM(CGRUPO)+ALLTRIM(CGRUPROD)==(CALIASSFM)->(ALLTRIM(FM_GRTRIB)+ALLTRIM(FM_GRPROD))).OR.(CALIASSFM)->(EMPTY(FM_GRTRIB).OR.EMPTY(FM_GRPROD))}
bAddTes := {||aAdd(aTes[Len(aTes)],(cAliasSFM)->FM_ININCM) }//Acrescento campo a ser considerado na TES Inteligente.
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Else
bCond:= {||.T.}
bSort:= bSort
bIRWhile:= {||.T.}
bAddTes := {||.T.}
EndIf
Return({bCond,bSort,bIRWhile,bAddTes})
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 8 meses atrás #11978
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico TES inteligênte adicionar campo na validação
Valeu Gustavo, obrigado por compartilhar.
Depois coloca uma foto sua ai no perfil pra gente te conhecer melhor.
Abraços.
Depois coloca uma foto sua ai no perfil pra gente te conhecer melhor.
Abraços.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- gustavo13
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 119
- Obrigados Recebidos: 0
11 anos 8 meses atrás #12009
por gustavo13
Respondido por gustavo13 no tópico TES inteligênte adicionar campo na validação
Pensei que meu problema estava solucionado, o ponto de entrada esta funcionando mas quando fui cadastrar os registros do TES começou a dar erro de chave duplicada. Como adiciono o novo campo que criei como campo chave?
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 8 meses atrás - 11 anos 8 meses atrás #12010
por kanaamlrr
Respondido por kanaamlrr no tópico TES inteligênte adicionar campo na validação
coloca ele no seu SX2 no campo X2_CHAVE, depois disso faz backup da sua tabela, dropa ela e cria de novo, porém não é aconselhável fazer esse tipo de alteração pois os posicionamentos padrão do sistema não estão preparados para isso, e podem acabar posicionando na tes errada.
Ultima edição: 11 anos 8 meses atrás por kanaamlrr.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- TES inteligênte adicionar campo na validação
Tempo para a criação da página:0.113 segundos