Olá Pessoal, tenho dois campos em uma Grid , que ao retornar valores do BD os valores decimais ficam no formato errado. Esse retorno no BD é uma Desserialização onde depois faço um Set para o objeto.
Tentei usar o Transform na definição do meu objeto que apresenta na Grid. E também diretamente na função que apresenta os dados na Grid (LoadGrid).
Definição do Objeto:
Method getObjParsed() class NFLDataObjHistoryManagement
Local aXML := {} as Array
Local aArrayObjParsed := {} as Array
Local nAtual := 1 as Numeric
Local oDefineItemNF as Object
Local oObjParsed := ::oObjParsed
Local nValorUnit := 0 // TESTEs
Local nValorTotal := 0 // TESTEs
aXML := oObjParsed:_NFLNFEENTITY:_AITENSNF:_NFLNFEITEMENTITY
For nAtual := 1 To Len(aXML)
oDefineItemNF := NFLNFEItemEntity():New()//--> Chama método da Classe NFLNFEEntity
oDefineItemNF:setCHAVE(aXML[nAtual]:_CCHAVE:Text)
oDefineItemNF:setITEM(aXML[nAtual]:_NITEM:Text)
oDefineItemNF:setCODFOR(aXML[nAtual]:_CCODFOR:Text)
oDefineItemNF:setDescricao(aXML[nAtual]:_CDESCRI:Text)
oDefineItemNF:setProdProtheus(aXML[nAtual]:_CPRODUTO:Text)
oDefineItemNF:setDescProdProtheus(aXML[nAtual]:_CDESCPRODUTO:Text)
oDefineItemNF:setNCM(aXML[nAtual]:_CNCM:Text)
oDefineItemNF:setCFOP(aXML[nAtual]:_CCFOP:Text)
oDefineItemNF:setUnidMed(aXML[nAtual]:_CUNIDADE_MEDIDA:Text)
nValorUnit := aXML[nAtual]:_NVALOR_UNIDADE:Text
nValorTotal := aXML[nAtual]:_NVALOR_TOTAL:Text
Transform(nValorUnit, "@E 99,999,999,999.99")
Transform(nValorTotal,"@E 99,999,999,999.99")
oDefineItemNF:setValorUnid(nValorUnit)
oDefineItemNF:setValorTotal(nValorTotal)
//oDefineItemNF:setQuantItem(aXML[nAtual]:_NQUANT_ITENS:Text)
//oDefineItemNF:setValorUnid(aXML[nAtual]:_NVALOR_UNIDADE:Text)
//oDefineItemNF:setValorTotal(aXML[nAtual]:_NVALOR_TOTAL:Text)
oDefineItemNF:setCodFCI(aXML[nAtual]:_NCOD_FCI:Text)
oDefineItemNF:setPedido(aXML[nAtual]:_CPEDIDO:Text)
Aadd(aArrayObjParsed, oDefineItemNF)
Next nAtual
return(aArrayObjParsed)//::oObjParsed
Função responsável por apresentar na tela(LoadGrid)
Static Function loadGrid(oGridModel, lCopy)
Local nX := 1
Local aLoad := {}
Local cItem := ""
Local cCodFor := ""
Local cDescFor := ""
Local cUnidMed := ""
Local cQuantItem := ""
Local cValorUnid := ""
Local cValorTotal := ""
Local cProduto := ""
Local cDescProd := ""
//Local aItensNFL := oNfeEntity//:getItem() // Entidade NF-e, Retorna o Array dos ITENS
Local oItemNF := NFLNFEItemEntity():New() // Classe Item da Nota
For nX := 1 to len(aItensNFL)
oItemNF := aItensNFL[nX]
cItem := oItemNF:getITEM()
cCodFor := oItemNF:getCODFOR()
cDescFor := oItemNF:getDescricao()
cUnidMed := oItemNF:getUnidMed()
cQuantItem := oItemNF:getQuantItem()
cValorUnid := oItemNF:getValorUnid()
cValorTotal := oItemNF:getValorTotal()
cProduto := oItemNF:getProdProtheus()
cDescProd := oItemNF:getDescProdProtheus()
cPedido := oItemNF:getPedido()
// . Get dos itens da nota...
//Ord. Descrição
aAdd(aLoad, {; //Array com os dados, os dados devem seguir exatamente a mesma ordem da estrutura de dados
0 ,; //[n][1] ExpN: Id do registro (RecNo) -> Valor lógico indicando se é uma operação de cópia.
{"BR_VERDE" ,; //[00] Legenda
AllTrim(cItem) ,; //[01] Item NF
AllTrim(cCodFor)+" - "+AllTrim(cDescFor) ,;//[02] Código Produto Fornecedor
cProduto ,; //[03] Produto Protheus
cDescProd ,; //[04] Descrição
cQuantItem ,; //[05] Quantidade Item XML
cValorUnid ,; //[06] Valor Unitário
cValorTotal ,; //[07] Valor Total
cPedido ,; //[08] Pedido
"" ,; //[09] Item do Pedido
"" ,; //[10] Item do Pedido
"" }}) //[11] Item XML
Next nX
Return aLoad
queria saber se trato isso onde apresento os dados ou na definição do Objeto.
Inseri uma Imagem de como está os dados nos campos.