Pular para o conteúdo principal

Recursividade Minha Linda! Estrutura Produtos Protheus SG1


Fato! Depois que você conhece recursividade em sua vida tudo fica mais leve (rss... ) a recursividade pode ser infinita (pode não ta!) se for infinita vai dar problema, não pode. Mas a recursividade nos ajuda a
deixar nosso sistema mais flexível e dinâmico para montar uma série de regras de negócio.

Hoje vou falar exatamente da SG1, tabela TOTVS Microsiga Protheus que é utilizada para montar a estrutura de um produto dentro PCP (Planejamento e Controle de Produção).


Isso séria algo que a recursividade iria ajudar. Na SG1 temos o campos G1_COD (Pai) e G1_COMP (Filho).

G1_COD->G1_COMP->G1_COD->G1_COMP->G1_COD->G1_COMP

Seria assim o fluxo da informação.

Sem mais delongas, abaixo vou deixar o script para MSSQL para apresentar esses dados. Inté!



WITH ESTRUT( CODIGO, COD_PAI, COD_COMP, QTD, PERDA, DT_INI, DT_FIM ,TRT ,RECNO, NIVEL ) AS
(
SELECT G1_COD PAI, G1_COD, G1_COMP, G1_QUANT, G1_PERDA, G1_INI, G1_FIM,G1_TRT,SG1.R_E_C_N_O_, 1 AS NIVEL
FROM SG1020 SG1 (NOLOCK)
WHERE SG1.D_E_L_E_T_ = ' '
AND G1_FILIAL = '01'
AND G1_COD = '350000226 '
UNION ALL

SELECT CODIGO, G1_COD, G1_COMP, QTD * G1_QUANT, G1_PERDA, G1_INI, G1_FIM,G1_TRT,SG1.R_E_C_N_O_, NIVEL + 1
FROM SG1020 SG1 (NOLOCK)
INNER JOIN ESTRUT EST
ON G1_COD = COD_COMP
WHERE SG1.D_E_L_E_T_ = ''

)
SELECT CODIGO , SB1_A.B1_DESC AS DESCRI, SB1_A.B1_TIPO AS TIPO , SB1_A.B1_GRUPO AS GRUPO,
COD_PAI , SB1_B.B1_DESC AS DESC_PAI , SB1_B.B1_TIPO AS TIPO_PAI , SB1_B.B1_GRUPO AS GRUPO_PAI,
COD_COMP, SB1_C.B1_DESC AS DESC_COMP, SB1_C.B1_TIPO AS TIPO_COMP, SB1_C.B1_GRUPO AS GRUPO_COMP,
QTD , PERDA, SB1_C.B1_UM AS UM_COMP, DT_INI, DT_FIM,TRT,RECNO,NIVEL
FROM ESTRUT
INNER JOIN SB1020 SB1_A (NOLOCK)
ON SB1_A.D_E_L_E_T_ = ''
AND SB1_A.B1_FILIAL = '01'
AND SB1_A.B1_COD = CODIGO
INNER JOIN SB1020 SB1_B (NOLOCK)
ON SB1_B.D_E_L_E_T_ = ''
AND SB1_B.B1_FILIAL = '01'
AND SB1_B.B1_COD = COD_PAI
INNER JOIN SB1020 SB1_C (NOLOCK)
ON SB1_C.D_E_L_E_T_ = ''
AND SB1_C.B1_FILIAL = '01'
AND SB1_C.B1_COD = COD_COMP
ORDER BY TRT



https://github.com/charlesreitz/shareadvpl

Postagens mais visitadas deste blog

REST Protheus Converter charset CP1252 para UTF8 com Header Accept UTF-8

O Protheus possui um tag que pode ser utilizada para conversão para UTF8 de forma transparente, basta enviar no header da requisição a TAG ACCEPT com charset=UTF-8, também pode-se adicionar o appllication/json. Accept : application/json; charset=UTF-8 ou Accept : charset=UTF-8 Isso ajuda pois não precisa mais utilizar as funções DecodeUTF8 e EncodeUT8 pois o próprio rest já vai fazer isso.

Appserver Protheus Rest - TLS 1.2

A partir da release 17.3.0.20 vai estar disponível no rest as tags: TLS1=3 que ativa o TLS 1.2 State=1 Bugs=1 O rest do Protheus somente funcionava até o TLS 1.0, ao qual muitos navegadores já estão descontinuando suporte. [HTTPREST] Port=56650 URIs=HTTPURI SECURITY=1 VERBOSE=0 SSL2=1 SSL3=1 TLS1=3 Bugs=1 State=1