#Include 'Protheus.ch'
/*/{Protheus.doc} PCBROWSE
PontoPunto de entrada para adicionarincluir opcoesopciones de menumenú en noel Portal dodel cliente
@type function
@return array, array de configuracaoconfiguración
/*/
User Function PCBROWSE()
Local cUser := PARAMIXB[1] as Character // Codigo dodel usuario logadoconectado noal portal.
Local aMenu := {} as Array
AAdd(aMenu, MENU1()) // exemploejemplo utilizando colunascolumnas SX3
AAdd(aMenu, MENU2()) // exemploejemplo configurando fields
Return aMenu
/*/{Protheus.doc} MENU1
ConfiguracaoConfiguración dodel menumenú
@type function
@return json, configuracaoconfiguración dodel browse
/*/
Static Function MENU1()
Local jMenu := JsonObject():new() as Json
Local jDetalhes := JsonObject():new() as Json
//titulotítulo presentado apresentadoen noel menumenú
jMenu['tituloMenu'] := 'Pedidos1'
//iconeícono para oel menumenú, lista de icones https://po-ui.io/guides/icons
jMenu['iconeMenu'] := 'po-icon po-icon-manufacture'
//titulotítulo presentado apresentadoen nala paginapágina
jMenu['tituloPagina'] := 'MeusMis Pedidos1'
//user funcion que vaidevolverá retornarla a query de buscabúsqueda
jMenu['funcaoQuery'] := 'PCQRY01'
//campo que vaise serordenará
ordenado
jMenu['orderQuery'] := 'C5_EMISSAO DESC'
//alias de dala tabelatabla utilizada para tratamentostratamientos internos
jMenu['tabela'] := 'SC5'
//lista de campos dodel browse, oel sistema vaiutilizará utilizarel otítulo titulode dala SX3. Si Sese informarinforman fields, essase propriedadeignorará éesta ignoradapropiedad
jMenu['colunas'] := {'c5_filial', 'c5_condpag', 'c5_num', 'c5_vend1', 'c5_nota', 'c5_emissao'}
//configuracaoconfiguración de legendasleyeendas, array comcon value, color ey label
jMenu['legendas'] := {}
AAdd(jMenu['legendas'], prepareStatus("N", "color-01", "Normal"))
AAdd(jMenu['legendas'], prepareStatus("C", "color-02", "Compl.PrecIo/Cantidad"))
AAdd(jMenu['legendas'], prepareStatus("I", "color-03", "Compl.ICMS"))
AAdd(jMenu['legendas'], prepareStatus("P", "color-04", "Compl.IPI"))
AAdd(jMenu['legendas'], prepareStatus("D", "color-05", "Dev.Compras"))
AAdd(jMenu['legendas'], prepareStatus("B", "color-06", "Utiliza proveedor"))
jMenu['campoLegendas'] := 'c5_tipo'
jMenu['tituloLegendas'] := 'Tipo'
//campo para buscabúsqueda rapidarápida, Sesi se informarinforma fieldBusca essase propriedadeignorará éesta ignoradapropiedad
jMenu['campoBusca'] := 'c5_num'
//lista de campos aprapara buscabúsqueda avancadaavanzada, oel sistema vaiutilizará utilizarel otítulo titulode dala SX3. Si Sese informarinforma fieldsBuscaAvancada essase propriedadeignorará éesta ignoradapropiedad
jMenu['camposBuscaAvancada'] := {'c5_filial', 'c5_vend1', 'c5_nota', 'c5_emissao', 'c5_transp'}
//exemploejemplo de configuracaoconfiguración de detalhesdetalles
//titulotítulo presentado apresentadoen nala paginapágina de detalhesdetalles
jDetalhes['tituloPagina'] := 'DetalhesDetalles dodel pedido'
//titulotítulo presentado apresentadoen nala abasolapa principal
jDetalhes['tituloAbaPrincipal'] := 'DadosDatos geraisgenerales'
//lista de campos que seraose apresentadospresentarán, oel sistema vaiutilizará utilizarel otítulo titulode dala SX3. SeSi se informarinforma fieldsDetalhes essase propriedadeignorará éesta ignoradapropiedad
jDetalhes['camposDetalhes'] := {'c5_num','c5_tipo', 'c5_nota', 'c5_emissao', 'c5_vend1', 'c5_tabela', 'c5_cliente', 'c5_lojacli', 'c5_transp', 'c5_frete', 'c5_seguro',}
//titulotítulo presentado apresentadoen nala abasolapa itensítem
jDetalhes['tituloAbaItens'] := 'ProdutosProductos'
//user funcion que vaidevolverá retornarla aquery queryde doslos itensítems
jDetalhes['funcaoQueryItens'] := 'PCITEM'
//campo que vaise ser ordenadoordenará
jDetalhes['orderQueryItens'] := 'c6_item desc'
//alias dosde los itensítems
jDetalhes['tabelaItens'] := 'SC6'
//lista de campos dodel browse, oel sistema vaiutilizará utilizarel otítulo titulode dala SX3. SeSi se informarinforma fields essase propriedadeignorará éesta ignoradapropiedad
jDetalhes['colunas'] := {'c6_item', 'c6_produto', 'c6_descri', 'c6_qtdven', 'c6_prcven', 'c6_valor'}
jMenu['detalhes'] := jDetalhes
Return jMenu
/*/{Protheus.doc} MENU2
ConfiguracaoConfiguración dodel menumenú utilizando aslas propriedadespropiedades fields
@type function
@return json, configuracao doconfiguración browse
/*/
Static Function MENU2()
Local jMenu := JsonObject():new() as Json //Json comcon aslas propriedadespropiedades esperadas.
Local jDetalhes := JsonObject():new() as Json
jMenu['tituloMenu'] := 'Pedidos2'
jMenu['iconeMenu'] := 'po-icon po-icon-manufacture'
jMenu['tituloPagina'] := 'MeusMis Pedidos2'
jMenu['funcaoQuery'] := 'PCQRY01'
jMenu['orderQuery'] := 'C5_DATA1 ASC'
jMenu['tabela'] := 'SC5'
//lista de campos dodel browse, utilizado cuando quandono se naoquiere querusar pegardatos dadosde dala SX3.
//devedebe ser umun array de json comcon aslas propriedadespropiedades property, type ey label
jMenu['fields'] := {}
AAdd(jMenu['fields'], prepareField("c5_filial" , "string", "FilialSucursal dodel pedido"))
AAdd(jMenu['fields'], prepareField("c5_num" , "string", "Pedido"))
AAdd(jMenu['fields'], prepareField("c5_vend1" , "string", "Vendedor"))
AAdd(jMenu['fields'], prepareField("c5_condpag", "string", "Forma de pagamentopago"))
AAdd(jMenu['fields'], prepareField("c5_nota" , "string", "NFFact"))
//campo para buscabúsqueda rapidarápida, utilizado quando nao quer pegar dados dacuando no se quiere usar datos de la SX3.
//devedebe ser umun array de json comcon aslas propriedadespropiedades property, type ey label
jMenu['fieldBusca'] := prepareField("c5_num", "string", "PesquisaBúsqueda por pedido")
//lista de campos aprapara buscabúsqueda avancadaavanzada, oel sistema vaiutilizará utilizarel otítulo titulode dala SX3. Si Sese informarinforma fieldsBuscaAvancada essase propriedadeignorará éesta ignoradapropiedad
jMenu['fieldsBuscaAvancada'] := {}
AAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_emissao", "date" , "DataFecha"))
AAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_filial" , "string", "FilialSucursal"))
AAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_nota" , "string", "NFFact"))
AAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_num" , "string", "Pedido"))
//exemploejemplo de configuracaoconfiguración de detalhesdetalles
//titulotítulo presentado apresentadoen nala paginapágina de detalhesdetalles
jDetalhes['tituloPagina'] := 'DetalhesDetalles dodel pedido'
//titulotítulo presentado apresentadoen nala abasolapa principal
jDetalhes['tituloAbaPrincipal'] := 'DadosDatos geraisgenerales'
//Utiliza aslas propriedadespropiedades PoDynamicViewField do po-dynamic-view poui. https://po-ui.io/documentation/po-dynamic-view
jDetalhes['fieldsDetalhes'] := {}
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_num' , 'string', 'Pedido' , 'DadosDatos' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_tipo' , 'string', 'Tipo dode pedido' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_nota' , 'string', 'NotaFactura' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_emissao', 'date' , 'DataFecha' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_vend1' , 'string', 'Vendedor' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_tabela' , 'string', 'TabelaLista de preçosprecios' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_cliente', 'string', 'Código', 'Comprador' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_lojacli', 'string', 'LojaTienda' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_transp' , 'string', 'CódigoCód Emp transportadoraTransportes', 'Entrega' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_frete' , 'string', 'Valor dode freteflete' ))
AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_seguro' , 'string', 'Valor dode seguro' ))
//titulotítulo presentado apresentadoen nala abasolapa itensítems
jDetalhes['tituloAbaItens'] := 'ProdutosProductos'
//user funcion que vaidevolverá retornarla aquery queryde doslos itensítems
jDetalhes['funcaoQueryItens'] := 'PCITEM'
//alias dosde los itensítems
jDetalhes['tabelaItens'] := 'SC6'
//lista de campos dodel browse, devedebe ser umun array de json comcon aslas propriedadespropiedades property, type ey label
jDetalhes['fields'] := {}
AAdd(jDetalhes['fields'], prepareField('c6_item' , 'string' , 'Item'))
AAdd(jDetalhes['fields'], prepareField('c6_produto', 'string' , 'Código'))
AAdd(jDetalhes['fields'], prepareField('c6_qtdven' , 'string' , 'QuantidadeCantidad'))
AAdd(jDetalhes['fields'], prepareField('c6_prcven' , 'currency', 'PreçoPrecio'))
AAdd(jDetalhes['fields'], prepareField('c6_valor' , 'currency', 'Valor'))
jMenu['detalhes'] := jDetalhes
Return jMenu
/*/{Protheus.doc} prepareField
funcaofunción auxiliar para preparar aslas propriedadespropiedades dodel field
@type function
@param cCampo, character, campo
@param cTipo, character, tipo (string, date, number)
@param cTitulo, character, titulotítulo
@param cDivisor, character, titulotítulo dodel divisor (utilizado en noslos detalhes)
@return json, json de field
/*/
Static Function prepareField(cCampo as Character, cTipo as Character, cTitulo as Character, cDivisor as Character)
Local jField := JsonObject():new() as Json
jField["property"] := cCampo
jField["type"] := cTipo
jField["label"] := cTitulo
If !Empty(cDivisor)
jField["divider"] := cDivisor
EndIf
Return jField
/*/{Protheus.doc} prepareStatus
funcaofunción auxiliar para preparar las aspropiedades propriedadesde dala legendaleyenda
@type function
@param cValor, character, valor
@param cCor, character, cor
@param cTitulo, character, label
@return variant, rconfiguracao de legendaleyenda
/*/
Static Function prepareStatus(cValor as Character, cCor as Character, cTitulo as Character)
Local jStatus := JsonObject():new() as Json
jStatus["value"] := cValor
jStatus["color"] := cCor
jStatus["label"] := cTitulo
Return jStatus |