- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Funções AdvPL
- Contador automático por grupo de produto
Perguntas Contador automático por grupo de produto
- marcelo.silva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 94
- Obrigados Recebidos: 0
7 anos 9 meses atrás #31835
por marcelo.silva
Contador automático por grupo de produto foi criado por marcelo.silva
Bom dia,
Preciso criar codificação automática no cadastro de produtos considerando o grupo de produtos, Ex:
Seleciono o grupo 0001, se já existem 2 produtos cadastrados com esse grupo o campo B1_COD recebe 0001+000003, deve identificar o numero do ultimo produto incluído para um determinado grupo. Agradeço a ajuda.
Preciso criar codificação automática no cadastro de produtos considerando o grupo de produtos, Ex:
Seleciono o grupo 0001, se já existem 2 produtos cadastrados com esse grupo o campo B1_COD recebe 0001+000003, deve identificar o numero do ultimo produto incluído para um determinado grupo. Agradeço a ajuda.
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
7 anos 9 meses atrás #31869
por admin
Respondido por admin no tópico Contador automático por grupo de produto
Cria um gatilho no campo B1_GRUPO:
Segue uma Função, não testada ok;
#include "rwmake.ch"
User Function GCPROD()
Local cCodigo := ""
Local aArea := GetArea()
cQuery := " "
cQuery += " SELECT MAX(B1_COD) AS COD "
cQuery += " FROM "+RetSQLName("SB1")+" SB1 "
cQuery += " WHERE SB1.D_E_L_E_T_ = '' "
cQuery += " AND B1_FILIAL = '" + xFilial("SB1") + "'"
cQuery += " AND B1_GRUPO = '" + M->B1_GRUPO + "'"
cQuery := ChangeQuery(cQuery)
dbUseArea( .T.,"TOPCONN",TCGENQRY(,,cQuery),"TRB",.F.,.T.)
dbSelectArea("TRB")
dbGoTop()
If Empty(TRB->COD)
cCodigo := M->B1_GRUPO+"000001"
Else
cIncremen := Strzero(Val(SubStr(TRB->COD,6,6))+1,6)
cCodigo := M->B1_GRUPO + cIncremen
EndIf
dbCloseArea("TRB")
RestArea(aArea)
Return(cCodigo)
Segue uma Função, não testada ok;
#include "rwmake.ch"
User Function GCPROD()
Local cCodigo := ""
Local aArea := GetArea()
cQuery := " "
cQuery += " SELECT MAX(B1_COD) AS COD "
cQuery += " FROM "+RetSQLName("SB1")+" SB1 "
cQuery += " WHERE SB1.D_E_L_E_T_ = '' "
cQuery += " AND B1_FILIAL = '" + xFilial("SB1") + "'"
cQuery += " AND B1_GRUPO = '" + M->B1_GRUPO + "'"
cQuery := ChangeQuery(cQuery)
dbUseArea( .T.,"TOPCONN",TCGENQRY(,,cQuery),"TRB",.F.,.T.)
dbSelectArea("TRB")
dbGoTop()
If Empty(TRB->COD)
cCodigo := M->B1_GRUPO+"000001"
Else
cIncremen := Strzero(Val(SubStr(TRB->COD,6,6))+1,6)
cCodigo := M->B1_GRUPO + cIncremen
EndIf
dbCloseArea("TRB")
RestArea(aArea)
Return(cCodigo)
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Funções AdvPL
- Contador automático por grupo de produto
Tempo para a criação da página:0.072 segundos