alguém pode me ajudar como entender o TREE
DEFINE TREE ....
o que preciso:
tenho o cadastro de produto, e alguns produtos tem componentes que são acoplados neste produtos, então gostaria de criar um TREE mostrando o produto x mais seus componentes y e destes quais o cliente comprou, um exemplo
produto 30217685 possui os seguintes componentes 30179006, 303207848, 30173870 então quero mostrar o que o cliente tal comprou
estou varrendo a tabela de produto procurando pelo produto que tenha seus componentes, guardo em um vetor, depois procuro por cada componente, e depois procuro se tal cliente comprou.
a estrutura deveria ficar +- assim
+---30217685 TOALHEIRO PRISOL
|
+---30179006 TOALHA 20 MTS SIMPLES
| |---PEDIDO.: 4569 QUANTIDADE.: 20 FATURADO.: 18/09/2016
| |---PEDIDO.: 4865 QUANTIDADE.: 11 FATURADO.: 16/10/2016
+---303207848 - TOALHA 20 MTS DUPLA FACE
|---PEDIDO.: 2856 QUANTIDADE.: 8 FATURADO.: 05/06/2016
e por ai vai, só que não consigo montar esta estrutura, alguém tem ideia ou algum material para leitura, abaixo mostro como estava montando só que não da certo.
Código: Selecionar todos
COMODATO->( ORDERBY( "CODIGO" ) )
COMODATO->( ORDSCOPE( TOPSCOPE , CLIENTES->CODIGO ) )
COMODATO->( ORDSCOPE( BOTTOMSCOPE, CLIENTES->CODIGO ) )
COMODATO->( DBGOTOP() )
IF COMODATO->( KEYCOUNT() ) > 0
FRM_PEDIDOS.TREE_COMODATO.DeleteAllItems
* FRM_PEDIDOS.TREE_COMODATO.AddItem( "EQUIPAMENTOS EM COMODATO" , 0 )
DO WHILE !COMODATO->( EOF() )
IF EMPTY( COMODATO->DTFIM )
PRODUTOS->( ORDSETFOCUS( "CODIGO" ) )
PRODUTOS->( DBGOTOP() )
PRODUTOS->( DBSEEK( COMODATO->PRODUTO ) )
AADD( ITENS_COMO, { ;
COMODATO->PRODUTO ,;
SUBSTR( PRODUTOS->DESCRICAO,1,50 ) ,;
TRANSFORM( COMODATO->QUANTIDADE, "9999" ) ,;
DTOC( COMODATO->DTINICIO ) ,;
DTOC( COMODATO->DTFIM ) } )
ENDIF
COMODATO->( DBSKIP() )
ENDDO
SETPROPERTY( "FRM_PEDIDOS","FRCOMO","VISIBLE",.T. )
SETPROPERTY( "FRM_PEDIDOS","TREE_COMODATO","VISIBLE",.T. )
PRODUTOS->( ORDSETFOCUS( SvOrdPROD ) )
PRODUTOS->( DBGOTO( SvRecPROD ) )
FOR I = 1 TO LEN( ITENS_COMO )
AADD( SEQUE_COMO, { "NODE", ALLTRIM( ITENS_COMO[I,1] ) + "-" + ALLTRIM( ITENS_COMO[I,2] ) } )
PRODUTOS->( ORDSETFOCUS( "CODIGO" ) )
PRODUTOS->( DBGOTOP() )
PRODUTOS->( DBSEEK( ALLTRIM( ITENS_COMO[I,1] ) + SPACE( 20 - LEN( ALLTRIM( ITENS_COMO[I,1] ) ) ) ) )
REFE_ITEN := MONTAVETOR( PRODUTOS->NOTAS )
FOR X = 1 TO LEN( REFE_ITEN )
PRODUTOS->( ORDSETFOCUS( "CODIGO" ) )
PRODUTOS->( DBGOTOP() )
PRODUTOS->( DBSEEK( REFE_ITEN[X] + SPACE( 20-LEN( REFE_ITEN[X] ) ) ) )
AADD( SEQUE_COMO, { "NODE1", ALLTRIM( REFE_ITEN[X] ) + "-" + SUBSTR( PRODUTOS->DESCRICAO,1,40 ) } )
ESTOQUE->( ORDSETFOCUS( "CLIPRODUTO" ) )
ESTOQUE->( DBGOTOP() )
IF ESTOQUE->( DBSEEK( CLIENTES->CODIGO + REFE_ITEN[X] + SPACE( 20-LEN( REFE_ITEN[X] ) ) ) )
PRODUTOS->( DBGOTOP() )
PRODUTOS->( DBSEEK( ESTOQUE->PRODUTO ) )
DO WHILE !ESTOQUE->( EOF() ) .AND. ;
( CLIENTES->CODIGO + REFE_ITEN[X] + SPACE( 20-LEN( REFE_ITEN[X] ) ) ) = ;
( ESTOQUE->EMPRESA + ESTOQUE->PRODUTO)
IF DTOS( ESTOQUE->DATA ) >= DTOS( DATE()-90 )
OITEM := "PEDIDO.: " + ALLTRIM( ESTOQUE->PEDIDO ) + " - " +;
"PRODUTO.: " + ALLTRIM( ESTOQUE->PRODUTO ) + " - " +;
"DESCRIÇÃO.: " + SUBSTR( PRODUTOS->DESCRICAO,1,50 ) + " - " +;
"QTDE.: " + STRZERO( ESTOQUE->QUANTIDADE,5 ) + " - " +;
"DT COMPRA.: " + DTOC( ESTOQUE->D_FATURA )
AADD( SEQUE_COMO, { "TREE", OITEM } )
ENDIF
ESTOQUE->( DBSKIP() )
ENDDO
ENDIF
NEXT X
ESTOQUE->( OrdSetFocus( SvOrdESTO ) )
ESTOQUE->( ORDSCOPE( TOPSCOPE, NIL ) )
ESTOQUE->( ORDSCOPE( BOTTOMSCOPE, NIL ) )
ESTOQUE->( DBGOTO( SvRecESTO ) )
NEXT I
PRODUTOS->( ORDSETFOCUS( SvOrdPROD ) )
PRODUTOS->( DBGOTO( SvRecPROD ) )
ENDIF
BEGIN SEQUENCE
FOR X = 1 TO LEN( SEQUE_COMO )
DO EVENTS
IF SEQUE_COMO[X,1] == "NODE"
FRM_PEDIDOS.TREE_COMODATO.AddItem( SEQUE_COMO[X,2] , 0 )
* DEFINE NODE SEQUE_COMO[X,2] ID nItemID++
* END NODE
ELSEIF SEQUE_COMO[X,1] == "NODE1"
FRM_PEDIDOS.TREE_COMODATO.AddItem( SEQUE_COMO[X,2] , 1 )
ELSE
FRM_PEDIDOS.TREE_COMODATO.AddItem( SEQUE_COMO[X,2] , 2 )
* TREEITEM SEQUE_COMO[X,2] ID nItemID++
ENDIF
NEXT X
END SEQUENCE
