Inclusão de campo data no SmartView - O valor da propriedade (C5_EMISSAO) não é uma data válida

Estou tentando incluir o campo C5_EMISSAO no fonte mas retorna o seguinte no smartView: O valor da propriedade (C5_EMISSAO) não é uma data válida.

nCount := 0
cQuery := " SELECT C6_NUM, C5_EMISSAO ,C6_CLI, C6_ITEM ,C6_PRODUTO, C6_QTDVEN, C6_PRCVEN, B1_DESC, C6_UM, C6_VALOR, A1_NOME, C5_VEND1, C6_PICMRET, A1_END, C6_LOJA, A1_INSCR, A1_MUN, " + CRLF
cQuery += " D2_BASEICM, D2_PICM, D2_VALICM, D2_BASEIPI, D2_IPI, D2_VALIPI, " + CRLF
cQuery += " D2_BASIMP6, D2_ALQIMP6, D2_VALIMP6, D2_BASIMP5, D2_ALQIMP5, D2_VALIMP5, C5_TRANSP, C5_TPFRETE " + CRLF
cQuery += " FROM SC6010 SC6 " + CRLF
cQuery += " INNER JOIN SB1010 SB1 ON C6_PRODUTO = B1_COD " + CRLF
cQuery += " INNER JOIN SA1010 SA1 ON C6_CLI = A1_COD AND C6_LOJA = A1_LOJA " + CRLF
cQuery += " INNER JOIN SC5010 SC5 ON C6_NUM = C5_NUM AND C6_CLI = C5_CLIENTE AND C6_LOJA = C5_LOJACLI " + CRLF
cQuery += " INNER JOIN SD2010 SD2 ON C6_CLI = D2_CLIENTE AND C6_LOJA = D2_LOJA AND C6_SERIE = D2_SERIE AND " + CRLF
cQuery += " C6_NUM = D2_PEDIDO AND C6_PRODUTO = D2_COD " + CRLF
cQuery += " WHERE C6_FILIAL = ‘010101’ " + CRLF
cQuery += " AND SC6.D_E_L_E_T_ = ’ ’ AND SC5.D_E_L_E_T_ = ’ ’ AND SB1.D_E_L_E_T_ = ’ ’ AND SA1.D_E_L_E_T_ = ’ ’ AND SD2.D_E_L_E_T_ = ’ ’ " + CRLF
lUseParams := .T.

//Os filtros serão setados na interface do novo TReports
if oFilter:hasFilter()
cQuery += " AND " + oFilter:getSQLExpression()
endif

jParams := oFilter:getParameters() //metodo para retorno do json dos parâmetros

if ValType(jParams[“01”]) <> “A” .and. ValType(jParams[“02”]) <> “A”
lUseParams := .F.
endif

if ValType(jParams[“03”]) <> “A” .and. ValType(jParams[“04”]) <> “A”
lUseParams := .F.
endif

if lUseParams .and. !empty(jParams[“01”][1]) .and. !empty(jParams[“02”][1])
cQuery += "AND C6_NUM BETWEEN " + Left( jParams[‘01’][1], 6 ) + " AND " + Left( jParams[‘02’][1], 6 )
endif

if lUseParams .and. !empty(jParams[“03”][1]) .and. !empty(jParams[“04”][1])
cQuery += " AND C5_EMISSAO BETWEEN " +ValToSql(DTOS(fwDateTimeToLocal(jParams[‘03’][1],0)[1])) + " AND " + ValToSql(DTOS(fwDateTimeToLocal(jParams[‘04’][1],0)[1]))
endif

1 curtida

Camarada verifica se passou o campo como data na estrutura do relatório.

AAdd(aFields, {"C5_EMISSAO", FWSX3Util():GetDescription('C5_EMISSAO'), 'date'   , "Emissão PV"      		, "C5_EMISSAO"}) 
self:aStruct := aFields

//O restante parece que está ok, segue meu exemplo.
if lUseParams .and. !empty(jParams["05"][1]) .and. !empty(jParams["06"][1])
	cQuery += " AND C5_EMISSAO BETWEEN " +ValToSql(DTOS(fwDateTimeToLocal(jParams['05'][1],0)[1])) + " AND " +  ValToSql(DTOS(fwDateTimeToLocal(jParams['06'][1],0)[1]))
endif
1 curtida

Bom dia Leandro, a estrutura estava assim:

self:aFields := {“C6_NUM”,“C5_EMISSAO”, “C6_CLI”, “C6_ITEM”, “C6_PRODUTO”, “C6_QTDVEN”, “B1_DESC”, “C6_UM”, “C6_PRCVEN”, “C6_VALOR”, “A1_NOME”, “C5_VEND1”, “C6_PICMRET”, “A1_END”, “C6_LOJA”, “A1_INSCR”, “A1_MUN”, “D2_BASEICM”, “D2_PICM”, “D2_VALICM”, “D2_BASEIPI”, “D2_IPI”, “D2_VALIPI”, “D2_BASIMP6”, “D2_ALQIMP6”, “D2_VALIMP6”, “D2_BASIMP5”, “D2_ALQIMP5”, “D2_VALIMP5”, “C5_TRANSP”, “C5_TPFRETE” }

self:aStruct := ::getStruct(self:aFields)

Inseri FWSX3Util():GetDescription(‘C5_EMISSAO’), ‘date’ no lugar de C5_EMISSAO mas continuou dando erro.

self:aFields := {“C6_NUM”,FWSX3Util():GetDescription(‘C5_EMISSAO’), ‘date’, … restante do código.

eu fiz um pouco diferente dos exemplos, não implementei essa static getStruct por que alguns nomes e descrições eu não usei do dicionário, segue meu exemplo completo

 /*/{Protheus.doc} new
(Método de instância da classe)
@author Leandro Lemos
@since 07/02/2025
@version P12
@param param_name, param_type, param_descr
@return return_var, return_type, return_description
    /*/
Method new() class PvComFatTReportsBusinessObject
	Local aAux 		:= {} as array
	Local aFields 	:= {} as array
	Local nX 			:= 0 as numeric
	_Super:new()
	self:appendArea("Faturamento")
	self:setDisplayName("Pedidos de Venda x Faturamento")
	self:setDescription("O relatório lista os pedidos de vendas com seus valores e faturamento quando houver")

AAdd(aFields, {"C6_NUM"    , FWSX3Util():GetDescription('C6_NUM')    , 'string' , "Número PV"       		, "C6_NUM"})
AAdd(aFields, {"C5_EMISSAO", FWSX3Util():GetDescription('C5_EMISSAO'), 'date'   , "Emissão PV"      		, "C5_EMISSAO"})
AAdd(aFields, {"C6_ITEM"   , FWSX3Util():GetDescription('C6_ITEM')   , 'string' , "Item PV"         		, "C6_ITEM"})
AAdd(aFields, {"C6_PRCVEN" , FWSX3Util():GetDescription('C6_PRCVEN') , 'number' , "Preço Venda PV"     	, "C6_PRCVEN"})
AAdd(aFields, {"C6_QTDVEN" , FWSX3Util():GetDescription('C6_QTDVEN') , 'number' , "Qtd. Vendida PV"    	, "C6_QTDVEN"})	
AaDD(aFields, {"C6_CLI"    , FWSX3Util():GetDescription('C6_CLI')    , 'string' , "Cliente"            	, "C6_CLI"})
AAdd(aFields, {"C6_LOJA"   , FWSX3Util():GetDescription('C6_LOJA')   , 'string' , "Loja"               	, "C6_LOJA"})
AaDD(aFields, {"C6_PRODUTO", FWSX3Util():GetDescription('C6_PRODUTO'), 'string' , "Produto"            	, "C6_PRODUTO"})
aAdd(aFields, {"C6_UM"     , FWSX3Util():GetDescription('C6_UM')     , 'string' , "UM PV"             	, "D2_UM"})
aAdd(aFields, {"C6_VALOR"  , FWSX3Util():GetDescription('C6_VALOR')  , 'number' , "Valor Bruto PV"      , "C6_VALOR"})
aAdd(aFields, {"A1_NOME"   , FWSX3Util():GetDescription('A1_NOME')   , 'string' , "Nome Cliente"        , "A1_NOME"})
aAdd(aFields, {"A1_NREDUZ" , FWSX3Util():GetDescription('A1_NREDUZ') , 'string' , "Nome Reduzido"       , "A1_NREDUZ"})
aAdd(aFields, {"A1_VEND"   , FWSX3Util():GetDescription('A1_VEND')   , 'string' , "Vendedor"            , "A1_VEND"})
aAdd(aFields, {"A3_NOME"   , FWSX3Util():GetDescription('A3_NOME')   , 'string' , "Nome Vendedor"       , "A3_NOME"})
aAdd(aFields, {"D2_DOC"    , FWSX3Util():GetDescription('D2_DOC')    , 'string' , "NF"           				, "D2_DOC"})
aAdd(aFields, {"D2_SERIE"  , FWSX3Util():GetDescription('D2_SERIE')  , 'string' , "Série"               , "D2_SERIE"})
aAdd(aFields, {"D2_EMISSAO", FWSX3Util():GetDescription('D2_EMISSAO'), 'date'   , "Emissão NF"          , "D2_EMISSAO"})
aAdd(aFields, {"D2_ITEM"   , FWSX3Util():GetDescription('D2_ITEM')   , 'string' , "Item NF"             , "D2_ITEM"})
aAdd(aFields, {"D2_UM"     , FWSX3Util():GetDescription('D2_UM')     , 'string' , "Um NF"             	, "D2_UM"})
aAdd(aFields, {"D2_QUANT"  , FWSX3Util():GetDescription('D2_QUANT')  , 'number' , "Qtd. Vendida NF"     , "D2_QUANT"})
aAdd(aFields, {"D2_PRCVEN" , FWSX3Util():GetDescription('D2_PRCVEN') , 'number' , "Preço Venda NF"      , "D2_PRCVEN"})
aAdd(aFields, {"D2_VALBRUT", FWSX3Util():GetDescription('D2_VALBRUT'), 'number' , "Valor Bruto NF"      , "D2_VALBRUT"})
aAdd(aFields, {"D2_LOCAL"  , FWSX3Util():GetDescription('D2_LOCAL')  , 'string' , "Local"               , "D2_LOCAL"})
aAdd(aFields, {"D2_TOTAL"  , FWSX3Util():GetDescription('D2_TOTAL')  , 'number' , "Total NF"            , "D2_TOTAL"})
aAdd(aFields, {"B1_DESC"   , FWSX3Util():GetDescription('B1_DESC')   , 'string' , "Descrição"           , "B1_DESC"})
aAdd(aFields, {"B1_GRUPO"  , FWSX3Util():GetDescription('B1_GRUPO')  , 'string' , "Grupo"               , "B1_GRUPO"})
aAdd(aFields, {"BM_DESC"   , FWSX3Util():GetDescription('BM_DESC')   , 'string' , "Descrição Grupo"     , "BM_DESC"})

for nX := 1 to len(aFields)
	aAdd(aAux,aFields[nX][1])
next

self:aFields := 	aAux

self:aStruct := aFields 

return self