Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagejava
themeMidnight
firstline1
titlePCBROWSE
linenumberstrue
collapsetrue
#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
Bloco de código
languagecpp
themeMidnight
firstline1
titleFUNCTION QUERY
linenumberstrue
collapsetrue
#Include 'Protheus.ch'  

/*/{Protheus.doc} PCQRY01
	Query para listar oslos itensítems dodel PE PCBROWSE
	@type function
	@return character, query
/*/
User Function PCQRY01()
	Local aSA1   := Paramixb[1] // Array de clientes {{"D MG    ", "000002", "02"}, {"D RJ    ", "000002", "12"}}
	Local cLogin := Paramixb[2] // Login dodel portal 
	Local cQuery := ""
	Local cAlias := "SC5"
	Local nCli   := 1
	Local cOr    := ""

	cQuery := " SELECT #QueryFields#  "
	cQuery += " FROM " + RetSqlName(cAlias) + " SC5 "
	cQuery += " WHERE SC5.D_E_L_E_T_ = ' ' AND "
	cQuery += "("

	// lógica para filtro utilizando oslos código de clientes
	For nCli := 1 to len(aSA1)

		If (nCli > 1)
			cOr := " OR "
		EndIf

		cQuery +=  cOr + "(SC5.C5_CLIENTE = '" + aSA1[nCli][2] + "' AND SC5.C5_LOJACLI = '" + aSA1[nCli][3]+"')" 
	Next

	cQuery += ")"
	cQuery += " #QueryWhere# "

Return cQuery

/*/{Protheus.doc} PCITEM
	Query para listar oslos detalhesdetalles dodel itemítem dodel PE PCBROWSE
	@type function
	@return character, query
/*/
User Function PCITEM()
    Local aSA1    := Paramixb[1] // Clientes
    Local cUser   := Paramixb[2] // Login dodel portal
    Local jFilter := Paramixb[3] // LinhaLínea selecionadaseleccionada para oslos detalhesdetalles
    Local 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# "
Return cQuery