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.
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.