É um pouco perigosa, apesar de não fazer diferença pra quem já usa.
É pra simplificar o uso, uma conversão automática.
Converte numérico, data, e remove brancos de string.
Default numérico pra 2 dígitos, e com conversão.
FUNCTION XmlTag( cTag, xValue, nDecimals, lConvert )
LOCAL cXml
hb_Default( @nDecimals, 2 )
hb_Default( lConvert, .T. )
IF lConvert
IF ValType( xValue ) == "D"
xValue := DateXml( xValue )
ENDIF
IF ValType( xValue ) == "N"
xValue := NumberXml( xValue, nDecimals )
ENDIF
xValue := AllTrim( xValue )
DO WHILE Space(2) $ xValue
xValue := StrTran( xValue, Space(2), Space(1) )
ENDDO
ENDIF
IF Len( xValue ) == 0
cXml := [<]+ cTag + [/>]
ELSE
cXml := [<] + cTag + [>] + xValue + [</] + cTag + [>]
ENDIF
RETURN cXml
Qual a diferença no uso?
Aproveitando o que acabei de colocar em outro post....
Pode ser usada igual antes:
cXml += XmlTag( "qTrib", NumberXml( jpitped->ipQtde, 4 ) )
cXml += XmlTag( "vUnTrib", NumberXml( iif( lSomenteIcms, 0, jpitped->ipPreNot ), 5 ) )
IF jpitped->ipValFre != 0
cXml += XmlTag( "vFrete", NumberXml( jpitped->ipValFre, 2 ) )
ENDIF
IF jpitped->ipValSeg != 0
cXml += XmlTag( "vSeg", NumberXml( jpitped->ipValSeg, 2 ) )
ENDIF
IF jpitped->ipValDes != 0
cXml += XmlTag( "vDesc", NumberXml( jpitped->ipValDes, 2 ) )
ENDIF
IF jpitped->ipValOut != 0
IF jpitped->ipValOut != 0
cXml += XmlTag( "vOutro", NumberXml( jpitped->ipValOut, 2 ) )
ENDIF
ENDIF
cXml += XmlTag( "indTot", "1" ) // Indica se soma produto
Mas pode reduzir fonte aproveitando a conversão automática.
No caso de números, só precisei indicar quando NÃO SÃO 2 decimais.
cXml += XmlTag( "qTrib", jpitped->ipQtde, 4 )
cXml += XmlTag( "vUnTrib", iif( lSomenteIcms, 0, jpitped->ipPreNot, 5 ) )
IF jpitped->ipValFre != 0
cXml += XmlTag( "vFrete", jpitped->ipValFre )
ENDIF
IF jpitped->ipValSeg != 0
cXml += XmlTag( "vSeg", jpitped->ipValSeg )
ENDIF
IF jpitped->ipValDes != 0
cXml += XmlTag( "vDesc", jpitped->ipValDes )
ENDIF
IF jpitped->ipValOut != 0
cXml += XmlTag( "vOutro", jpitped->ipValOut )
ENDIF
cXml += XmlTag( "indTot", "1" ) // Indica se soma produto
Porque é perigosa?
Na prática não sei se poderia esconder algum erro do programador.
E para exceções... deixei a opção de não converter... não sei se pode acontecer alguma exceção, mas já deixei isso pronto.
Com certeza o fonte fica mais "limpo" do que era antes.
E como tem trocentos campos na geração de XML..... vai ser uma bela limpeza.