Línea de producto: | Microsiga Protheus® |
Segmento: | Backoffice |
Módulo: | Financiero |
Idiomas: | Portugués |
Función: | Portal del cliente |
...
Aviso | ||
---|---|---|
| ||
El punto de entrada PCBROWSE está en etapa de desarrollo y muy pronto entrará en prueba con clientes piloto, por lo tanto, aún no está liberado en ningún release del Protheus.Se liberará por medio de un se liberó por medio del paquete de expedición acumulado continua del módulo financiero Financiero después del mes de Octubreoctubre. |
El punto de entrada PCBROWSE permite incluir opciones de menú para el listado de ítems personalizados en elPortal del cliente - SIGAFIN.
El punto de entrada debe devolver un array con el json de configuración de cada menú que desea agregar.
PARAMIXB | Tipo | Descripción |
1º Posición | Character | Usuario de login del Portal del cliente. |
...
Propiedad | Obligatoriedad | Descripción |
tituloMenu | Obligatorio | Título mostrado en el menú. |
iconeMenu | Opcional | Ícono para el menú. Lista de íconos PO UI que pueden utilizarse en esta propiedad. https://po-ui.io/guides/icons |
tituloPagina | Obligatorio | Titulo mostrado en la página. |
funcaoQuery | Obligatorio | Nombre de la user function que User Function que devolverá la query para buscar los datos. |
orderQuery | Opcional | Campo en el cual se basará el orden de la tabla. |
tabla | Obligatorio | Alias de la tabla utilizada para tratamiento interno. |
columnas | Es obligatorio si no se envían fields | Array de campos del browse, el sistema utilizará el título de la SX3. Si se informan fields, se ignorará esta propiedad. |
fields | Opcional | Array de json con los campos del browse. Cada campo debe tener las propiedades property, type y label (PoTableColumn):
|
leyeendas | Opcional | Configuración de las leyendas. Array de json con las propiedades value, color y label. (labels del PoTableColumnLabel) |
campoLegendas | Opcional | Campo utilizado para leyenda. |
tituloLegendas | Opcional | Título de la leyenda. |
detalles | Opcional | Json con las propiedades para que se muestre en la pantalla de detalles del registro. Consulte el ítem 03.02 Configuración de detalles. |
Es posible configurar la búsqueda simple y avanzada por medio de la configuración:
Propiedad | Obligatoriedad | Descripción |
campoBusca | Opcional | Campo para búsqueda rápida. |
camposBuscaAvancada | Opcional | Lista de campos para búsqueda avanzada, el sistema utilizará el título de la SX3. Si se informa fieldsBuscaAvancada , se ignorará esta propiedad. |
fieldsBuscaAvancada | Opcional | Array de json con los campos para utilizar en la búsqueda avanzada. Cada campo debe tener las propiedades property, type y label (PoDynamicFormField):
|
Si se configuran los detalles, se muestra en el ítem la opción "visualizar" para la exhibición de las informacionesy el listado de ítems.
...
Propiedad | Obligatoriedad | Descripción |
tituloPagina | Obligatorio | Título que se muestra en la página de detalles. |
tituloAbaPrincipal | Obligatorio | Título que se muestra en la solapa principal. |
camposDetalhes | Obligatorio | Lista de campos que se mostrarán, el sistema utilizará el título de la SX3. Si se informa fieldsDetalhes , se ignorará esta propiedad. |
fieldsDetalhes | Opcional | Array de json con los campos del browse. Cada campo debe tener las propiedades property, type y label (PoTableColumn):
|
orderQueryItens | Opcional | Campo en el cual se basará el orden de la tabla. |
tituloAbaItens | Opcional | Título que se muestra en la solapa Ítems. |
funcaoQueryItens | Es obligatorio si se informa tituloAbaItens | User funcion Funcion que devolverá la query de los ítems. |
tabelaItens | Es obligatorio si se informa tituloAbaItens | Alias dos itens. |
columnas | Es obligatorio si se informa tituloAbaItens | Lista de campos del browse, el sistema utilizará el título de la SX3. Si se informa fields , se ignorará esta propiedad. |
fields | Es obligatorio si se informa tituloAbaItens | Array de json con los campos del browse. Cada campo debe tener las propiedades property, type y label (PoTableColumn):
|
La función pasada en la propiedad 'funcaoQuery' y 'funcaoQueryItens' se llamará por el Portal del cliente para que devuelva la query personalizada que se utilizará en la búsqueda de los ítems.
PARAMIXB | Tipo | Descripción |
1º Posición | Array | Contiene un Array con las claves (SUCURSAL+CÓDIGO+TIENDA) de los clientes seleccionados en el portal. Cada posición del Array contiene un objeto Json con las propiedades: sucursal, código y tienda. |
2º Posición | Carácter | Usuario de login del Portal del cliente |
PARAMIXB | Tipo | Descripción |
1º Posición | Array | Contiene un Array con las claves (SUCURSAL, CÓDIGO, TIENDA) de los clientes seleccionados en el portal. Cada posición del Array contiene un objeto Json con las propiedades: sucursal, código y tienda. |
2º Posición | Carácter | Usuario de login del Portal del cliente |
2º Posición | Json | json Json de la línea seleccionada en el formato "{ Campo: Valor} " Ej.: "{E1_FILIAL: '01', E1_NUM: '000001'}" |
La función debe devolver la query personalizada:
...
Tipo | Obligatoriedad | Descripción |
Carácter | Obligatorio | Query personalizada para listado de los registros del menú personalizado. |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#Include 'Protheus.ch' /*/{Protheus.doc} PCBROWSE PuntoPonto de entrada para agregaradicionar opcionesopcoes de menúmenu enno el Portal deldo cliente @type function @return array, array de configuraciónconfiguracao /*/ userUser Function PCBROWSE() Local cUser := PARAMIXB[1] as Character // CódigoCodigo deldo usuario conectadologado alno portal. Local aMenu := {} as Array aAddAAdd(aMenu, MENU1()) // ejemploexemplo utilizando columnascolunas SX3 aAddAAdd(aMenu, MENU2()) // ejemploexemplo configurando fields Return aMenu /*/{Protheus.doc} MENU1 ConfiguraciónConfiguracao deldo menúmenu @type function @return json, configuraciónconfiguracao deldo browse /*/ Static Function MENU1() Local jMenu := JsonObject():new() as Json Local jDetalhes := JsonObject():new() as Json //títulotitulo presentadoapresentado enno el menúmenu jMenu['tituloMenu'] := 'Pedidos1' //icone para o menu, lista de icones https://po-ui.io/guides/icons jMenu['iconeMenu'] := 'po-icon po-icon-manufacture' //títulotitulo presentadoapresentado enna la páginapagina jMenu['tituloPagina'] := 'MisMeus pedidos1Pedidos1' //user funcion que vai devolveráretornar laa query de búsquedabusca jMenu['funcaoQuery'] := 'PCQRY01' //campo que vai seser ordenaráordenado jMenu['orderQuery'] := 'C5_EMISSAO DESC' //alias deda latabela tabla utilizada para tratamientostratamentos internos jMenu['tabela'] := 'SC5' //lista de campos deldo browse, elo sistema utilizarávai elutilizar títuloo detitulo lada SX3. SiSe seinformar informa fields seessa ignorarápropriedade estaé propiedadignorada jMenu['colunas'] := {'c5_filial', 'c5_condpag', 'c5_num', 'c5_vend1', 'c5_nota', 'c5_emissao'} //configuraciónconfiguracao de leyendaslegendas, array concom value, color ye label jMenu['legendas'] := {} aAddAAdd(jMenu['legendas'], prepareStatus("N", "color-01", "Normal")) aAddAAdd(jMenu['legendas'], prepareStatus("C", "color-02", "Compl.PrecIo/Cantidad")) aAddAAdd(jMenu['legendas'], prepareStatus("I", "color-03", "Compl.ICMS")) aAddAAdd(jMenu['legendas'], prepareStatus("P", "color-04", "Compl.IPI")) aAddAAdd(jMenu['legendas'], prepareStatus("D", "color-05", "Dev.Compras")) aAddAAdd(jMenu['legendas'], prepareStatus("B", "color-06", "Utiliza proveedor")) jMenu['campoLegendas'] := 'c5_tipo' jMenu['tituloLegendas'] := 'Tipo' //campo para búsqueabusca rápidarapida, SiSe seinformar informa fieldBusca, seessa ignorarápropriedade estaé propiedadignorada jMenu['campoBusca'] := 'c5_num' //lista de campos paraapra búsquedabusca avanzadaavancada, elo sistema utilizarávai elutilizar títuloo detitulo lada SX3. SiSe se informainformar fieldsBuscaAvancada, seessa ignorarápropriedade estaé propiedadignorada jMenu['camposBuscaAvancada'] := {'c5_filial', 'c5_vend1', 'c5_nota', 'c5_emissao', 'c5_transp'} //ejemploexemplo de configuraciónconfiguracao de detallesdetalhes //títulotitulo presentadoapresentado enna lapagina página de detallesdetalhes jDetalhes['tituloPagina'] := 'DetallesDetalhes deldo pedido' //títulotitulo presentadoapresentado enna laaba solapa principal jDetalhes['tituloAbaPrincipal'] := 'DatosDados generalesgerais' //lista de campos que seserao presentaránapresentados, elo sistema utilizarávai elutilizar títuloo detitulo lada SX3. SiSe se informainformar fieldsDetalhes, seessa ignorarápropriedade estaé propiedadignorada jDetalhes['camposDetalhes'] := {'c5_num','c5_tipo', 'c5_nota', 'c5_emissao', 'c5_vend1', 'c5_tabela', 'c5_cliente', 'c5_lojacli', 'c5_transp', 'c5_frete', 'c5_seguro',} //títulotitulo presentadoapresentado enna laaba solapa ítemsitens jDetalhes['tituloAbaItens'] := 'Produtos' //user funcion que devolverávai retornar laa query dedos los ítemsitens jDetalhes['funcaoQueryItens'] := 'PCITEM' //campo que serávai ser ordenado jDetalhes['orderQueryItens'] := 'c6_item desc' //alias dedos los ítemsitens jDetalhes['tabelaItens'] := 'SC6' //lista de campos deldo browse, elo sistema utilizarávai elutilizar títuloo detitulo lada SX3. SiSe seinformar informa fields, seessa ignorarápropriedade estaé propiedadignorada jDetalhes['colunas'] := {'c6_item', 'c6_produto', 'c6_descri', 'c6_qtdven', 'c6_prcven', 'c6_valor'} jMenu['detalhes'] := jDetalhes returnReturn jMenu /*/{Protheus.doc} MENU2 ConfiguraciónConfiguracao deldo menúmenu utilizando lasas propiedadespropriedades fields @type function @return json, configuraciónconfiguracao deldo browse /*/ Static Function MENU2() Local jMenu := JsonObject():new() as Json //Json concom lasas propiedadespropriedades esperadas. Local jDetalhes := JsonObject():new() as Json jMenu['tituloMenu'] := 'Pedidos2' jMenu['iconeMenu'] := 'po-icon po-icon-manufacture' jMenu['tituloPagina'] := 'Meus Pedidos2' jMenu['funcaoQuery'] := 'PCQRY01' jMenu['orderQuery'] := 'C5_DATA1 ASC' jMenu['tabela'] := 'SC5' //lista de campos deldo browse, utilizado cuandoquando nonao sequer quierepegar utilizardados datosda de la SX3. //debedeve ser unum array de json concom lasas propiedadespropriedades property, type ye label jMenu['fields'] := {} aAddAAdd(jMenu['fields'], prepareField("c5_filial" , "string", "SucursalFilial deldo pedido")) aAddAAdd(jMenu['fields'], prepareField("c5_num" , "string", "Pedido")) aAddAAdd(jMenu['fields'], prepareField("c5_vend1" , "string", "Vendedor")) aAddAAdd(jMenu['fields'], prepareField("c5_condpag", "string", "Forma de pagopagamento")) aAddAAdd(jMenu['fields'], prepareField("c5_nota" , "string", "FactNF")) //campo para búsquedabusca rápidarapida, utilizado cuandoquando nonao sequer quierepegar utilizar datos de ladados da SX3. //debedeve ser unum array de json concom lasas propiedadespropriedades property, type ye label jMenu['fieldBusca'] := prepareField("c5_num", "string", "BúsquedaPesquisa por pedido") //lista de campos paraapra búsquedabusca avanzadaavancada, elo sistema utilizarávai elutilizar títuloo detitulo lada SX3. SiSe seinformar informa fieldsBuscaAvancada, seessa ignorarápropriedade estaé propiedadignorada jMenu['fieldsBuscaAvancada'] := {} aAddAAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_emissao", "date" , "FechaData")) aAddAAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_filial" , "string", "SucursalFilial")) aAddAAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_nota" , "string", "FactNF")) aAddAAdd(jMenu['fieldsBuscaAvancada'], prepareField("c5_num" , "string", "Pedido")) //ejemploexemplo de configuraciónconfiguracao de detallesdetalhes //títulotitulo presentadoapresentado enna la páginapagina de detallesdetalhes jDetalhes['tituloPagina'] := 'DetallesDetalhes deldo pedido' //títulotitulo presentadoapresentado enna la solapaaba principal jDetalhes['tituloAbaPrincipal'] := 'DatosDados generalesgerais' //SeUtiliza utilizanas las propiedadespropriedades PoDynamicViewField do po-dynamic-view poui. https://po-ui.io/documentation/po-dynamic-view jDetalhes['fieldsDetalhes'] := {} aAdd AAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_num' , 'string', 'Pedido' , 'DatosDados' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_tipo' , 'string', 'Tipo dedo pedido' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_nota' , 'string', 'FacturaNota' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_emissao', 'date' , 'FechaData' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_vend1' , 'string', 'Vendedor' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_tabela' , 'string', 'ListaTabela de preciospreços' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_cliente', 'string', 'Código', 'Comprador' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_lojacli', 'string', 'TiendaLoja' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_transp' , 'string', 'Cód Emp de TransporteCódigo transportadora', 'Entrega')) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_frete' , 'string', 'Valor dedo fletefrete' )) aAddAAdd(jDetalhes['fieldsDetalhes'], prepareField('c5_seguro' , 'string', 'Valor dedo seguro' )) //títulotitulo presentadoapresentado enna laaba solapa ítemsitens jDetalhes['tituloAbaItens'] := 'ProductosProdutos' //user funcion que vai devolveráretornar laa query dedos los ítemsitens jDetalhes['funcaoQueryItens'] := 'PCITEM' //alias de losdos ítemsitens jDetalhes['tabelaItens'] := 'SC6' //lista de campos deldo browse, debedeve ser unum array de json concom lasas propiedadespropriedades property, type ye label jDetalhes['fields'] := {} aAddAAdd(jDetalhes['fields'], prepareField('c6_item' , 'string' , 'ÍtemItem')) aAddAAdd(jDetalhes['fields'], prepareField('c6_produto', 'string' , 'Código')) aAddAAdd(jDetalhes['fields'], prepareField('c6_qtdven' , 'string' , 'CantidadQuantidade')) aAddAAdd(jDetalhes['fields'], prepareField('c6_prcven' , 'currency', 'PrecioPreço')) aAddAAdd(jDetalhes['fields'], prepareField('c6_valor' , 'currency', 'Valor')) jMenu['detalhes'] := jDetalhes returnReturn jMenu /*/{Protheus.doc} prepareField funciónfuncao auxiliar para preparar lasas propiedadespropriedades deldo field @type function @param cCampo, character, campo @param cTipo, character, tipo (string, date, number) @param cTitulo, character, titulo @param cDivisor, character, titulo do divisor (utilizado ennos los detallesdetalhes) @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 ifIf !Empty(cDivisor) jField["divider"] := cDivisor endIfEndIf Return jField /*/{Protheus.doc} prepareStatus funciónfuncao auxiliar para preparar lasas propiedadespropriedades deda la leyendalegenda @type function @param cValor, character, valor @param cCor, character, cor @param cTitulo, character, label @return variant, rconfiguracao de legenda /*/ Static Function prepareStatus(cValor as Character, cCor as Character, cTitulo as Character) Local jStatus jStatus := JsonObject():new() as Json jStatus["value"] := cValor jStatus["color"] := cCor jStatus["label"] := cTitulo Return jStatus |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#Include 'Protheus.ch' /*/{Protheus.doc} PCQRY01 Query para listar losos ítemsitens deldo PE PCBROWSE @type function @return character, query /*/ User functionFunction PCQRY01() localLocal aSA1 := Paramixb[1] // Array de clientes {{"D MG ", "000002", "02"}, {"D RJ ", "000002", "12"}} localLocal cLogin := Paramixb[2] // Login deldo portal localLocal cQuery := "" localLocal cAlias := "SC5" localLocal nCli := 1 localLocal cOr := "" cQuery := " SELECT #QueryFields# " cQuery += " FROM " + RetSqlName(cAlias) + " SC5 " cQuery += " WHERE SC5.D_E_L_E_T_ = ' ' AND " cQuery += "(" // lógica para filtro utilizando losos código de clientes forFor nCli := 1 to len(aSA1) ifIf (nCli > 1) cOr := " OR " endIfEndIf cQuery += cOr + "(SC5.C5_CLIENTE = '" + aSA1[nCli][2] + "' AND SC5.C5_LOJACLI = '" + aSA1[nCli][3]+"')" nextNext cQuery += ")" cQuery += " #QueryWhere# " Return cQuery /*/{Protheus.doc} PCITEM Query para listar losos detalhes deldo ítemitem deldo PE PCBROWSE @type function @return character, query /*/ userUser functionFunction PCITEM() localLocal aSA1 := Paramixb[1] // Clientes localLocal cUser := Paramixb[2] // Login deldo portal localLocal jFilter := Paramixb[3] // LíneaLinha seleccionadaselecionada para losos detallesdetalhes localLocal cAlias := "SC6" cQuery := " SELECT #QueryFields# " cQuery += " FROM " + RetSqlName(cAlias) + " " + cAlias cQuery += " WHERE " + cAlias + ".D_E_L_E_T_ = ' ' AND " cQuery += " C6_FILIAL = '" + jFilter['C5_FILIAL'] + "' AND " cQuery += " C6_NUM = '" + jFilter['C5_NUM'] + "'" cQuery += " #QueryWhere# " returnReturn cQuery |