× Linguagem de Programação ADVPL

Perguntas CRLF

Mais
11 anos 4 meses atrás #15373 por Rstrozi
CRLF foi criado por Rstrozi
Boa tarde Pessoal,

Estou mexendo no ponto de entrada PE01NFESEFAZ para inclusão de uma mensagem do cálculo do ICMS ST nas informações adicionais e gostaria de deixá-la assim:

CALCULO DO ICMS ST:
_Produto: 1111111 Base ICMS ST: R$ 999,99 Aliq. ICMS ST: 99,99% Vlr ICMS ST: R$ 9,99
_Produto: 2222222 Base ICMS ST: R$ 999,99 Aliq. ICMS ST: 99,99% Vlr ICMS ST: R$ 9,99
_Produto: 3333333 Base ICMS ST: R$ 999,99 Aliq. ICMS ST: 99,99% Vlr ICMS ST: R$ 9,99

Para isto, utilizei o código abaixo:
If SF2->F2_ICMSRET > 0
		
			dbSelectArea("SD2")
		   	dbSetOrder(3)
	    	dbSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)
		
			cNWICMS	:= CHR(13)+CHR(10)+"CALCULO ICMS ST: "+CHR(13)+CHR(10)
	    	
	    	While !EOF() .and. SD2->D2_SERIE == SF2->F2_SERIE .and. SD2->D2_DOC == SF2->F2_DOC  		
	    		
	    		If SD2->D2_ICMSRET > 0
		    		cNWICMS	+= "_Produto: "+Alltrim(SD2->D2_COD)+;
		    		"  Base ICMS ST: R$"+AllTrim(Transform(SD2->D2_BRICMS, "@ze 9,999,999,999,999.99"))+;
		    		" Aliq. ICMS ST: "+AllTrim(Transform(SD2->D2_ALIQSOL, "@ze 9,999,999,999,999.99"))+;
		    		"% VLR ICMS ST: R$ "+AllTrim(Transform(SD2->D2_ICMSRET, "@ze 9,999,999,999,999.99"))+CHR(13)+CHR(10)
		    	EndIf
			
		    	SD2->(dbSkip())
	   	
	   		EndDo
	    
		   	SD2->(DbCloseArea())

	   	EndIf

Porém a mensagem não está ficando 'bonitinha' como deveria ser... No lugar do <ENTER> ( CHR(13)+CHR(10) ), está aparecendo '..', conforme abaixo

..CALCULO ICMS ST: .._Produto: 9999999 Base ICMS ST: R$18,30 Aliq. ICMS ST: 18,00% VLR ICMS ST: R$ 0,23 ..


Alguém já passou por isso?

Meu servidor é Linux (RedHat) e meu banco é IBM DB2.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #15400 por Rstrozi
Respondido por Rstrozi no tópico CRLF
Acho que descobri qual é o problema

Na função NoAcento no fonte NFESEFAZ, existe este trecho:
For nX:=1 To Len(cString)
	cChar:=SubStr(cString, nX, 1)
	If (Asc(cChar) < 32 .Or. Asc(cChar) > 123) .and. !cChar $ '|'
		cString:=StrTran(cString,cChar,".")
	Endif
Next nX

Pelo que entendi, ele pega o CHR(13)+CHR(10) (ambos < 32) e transforma cada um deles em '.', logo CHR(13)+CHR(10) = '..'

:cheer:

Acho que não vai rolar de deixar a mensagem 'bonitinha'...

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.113 segundos
Joomla templates by a4joomla