× Linguagem de Programação ADVPL

Perguntas Customização Impressão DANFES

Mais
10 anos 4 meses atrás #23643 por henry.charriere
Pessoal, boa tarde!

Houve a necessidade aqui na empresa de imprimir notas(NFE) em uma sequencia diferente. Por exemplo, alguma coisa separada por virgula. 000001;000004;000009

E não na sequência 000001....000010.

Alguém ai já passou por isso?


Atc,
Henry

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23649 por inocenciojr
Respondido por inocenciojr no tópico Customização Impressão DANFES
Bom dia Henry,

Eu fiz pra um cliente, um filtro por de danfes por cliente.
Essas danfes são que serão impressas serão aleatórias?

Se for, crie um novo pergunte com o campo de notas maior e vá separando por (;) ou (,) jogando isso em um array usando o separador como delimitador de notas.
Depois faça um laço para ler o array e atribuir cada nota aos MV_PAR01 e MV_PAR02. Dai você pode chamar a rotina DanfeProc que já tem para fazer o resto

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23661 por henry.charriere
Inocencio, boa tarde!

Obrigado pela ajuda, será que vc pode me passar o fonte onde vc chama DANFEPROC?

Preciso ver como essa função é utilizada.

Atc,
Henry

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23663 por inocenciojr
Respondido por inocenciojr no tópico Customização Impressão DANFES
O que eu fiz foi trocar o começo da função de impressão da danfe por esta que eu fiz:
User Function DanfeEmail()

Local _cNumNF := ""
Local cAliasSF2  := "SF2"
Local lExistNfe := .F.
Local _aAreaSX1
Local ImpTermo
Local cCliente
Local nFlags := PD_ISTOTVSPRINTER+ PD_DISABLEORIENTATION + PD_DISABLEPAPERSIZE + PD_DISABLEMARGIN
Local cDir :=""
Local QUERY := nil
Local cData := DTOS(DATE())+SUBSTR(TIME(),1,2)+SUBSTR(TIME(),4,2)+SUBSTR(TIME(),7,2)

Private oDanfe := nil
Private oSetup := nil
Private nConsNeg := 0.4 // Constante para consertar o cálculo retornado pelo GetTextWidth para fontes em negrito.
Private nConsTex := 0.5 // Constante para consertar o cálculo retornado pelo GetTextWidth.

AJUSTASX1()

oSetup := FWPrintSetup():New(nFlags, OemToAnsi("Danfe"))
oSetup:SetProperty(1,2) //PD_DESTINATION
oSetup:SetProperty(2,6) //PD_PRINTTYPE
oSetup:SetProperty(3,1) //PD_ORIENTATION
oSetup:SetProperty(4,2) //PD_PAPERSIZE
oSetup:SetProperty(5,.T.) //PD_PREVIEW
//oSetup:SetProperty(6,"") //PD_VALUETYPE
oSetup:SetProperty(7,{60,60,60,60}) //PD_MARGIN
//PD_DESTINATION=1PD_PRINTTYPE=2PD_ORIENTATION=3PD_PAPERSIZE=4PD_PREVIEW=5PD_VALUETYPE=6PD_MARGIN=7
If oSetup:Activate() == PD_CANCEL
	Return
EndIf

If Pergunte("NFSPED",.T.)
	
	cCliente := MV_PAR07
	ImpTermo := MV_PAR08
	
	cQuery := " SELECT F2_DOC, F2_SERIE, F2_CLIENTE"
	cQuery += ", A1_NREDUZ"//, B5_DR_ONU"
	cQuery += " FROM "+RetSqlName("SF2")+" AS SF2"
	cQuery += " INNER JOIN "+RetSqlName("SA1")+" AS SA1"
	cQuery += " ON (F2_CLIENTE = A1_COD)"
	cQuery += " WHERE F2_DOC BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"' AND"
	If !Empty(cCliente)
		cQuery += " F2_CLIENTE = '"+cCliente+"' AND"
		cQuery += " F2_TIPO <> 'D' AND"
	EndIf
	cQuery += " F2_FILIAL = '"+xFilial("SF2")+"' AND"
	cQuery += " SF2.D_E_L_E_T_ <> '*'"
	cQuery += " ORDER BY F2_DOC"
	
	TCQUERY cQuery NEW ALIAS QUERY
	
	DbSelectArea("QUERY")
	DbGoTop()
	While Query->(!EoF())
		Iif (Empty(cCliente),cNome := "Danfe_"+QUERY->F2_DOC+"_"+cData,cNome:= "Danfe_"+Alltrim(QUERY->A1_NREDUZ)+"_"+cData)
		MV_PAR01 := QUERY->F2_DOC
		MV_PAR02 := QUERY->F2_DOC
		If oDanfe == Nil
			lPreview := .T.
			oDanfe	:= FWMSPrinter():New(cNome,6,.F.,,.T.,,)
			oDanfe:SetResolution(78) //Tamanho estipulado para a Danfe
			oDanfe:SetPortrait()
			oDanfe:SetPaperSize(DMPAPER_A4)
			oDanfe:SetMargin(60,60,60,60)
			//oDanfe:lServer := oSetup:GetProperty(PD_DESTINATION)==AMB_SERVER
			//oDanfe:cPathPDF := "C:\Danfe\"
			oDanfe:cPathPDF := oSetup:aOptions[PD_VALUETYPE]
			oDanfe:SetViewPDF(.T.)
			cDir := oSetup:aOptions[PD_VALUETYPE]
		EndIf
		
		Private PixelX := odanfe:nLogPixelX()
		Private PixelY := odanfe:nLogPixelY()
		
		RptStatus({|lEnd|DanfeProc(@oDanfe,@lEnd,"000002",,,@lExistNfe)},"Imprimindo Danfe...")
		
		If ImpTermo == 1
			U_FRTermo(2,@oDanfe)
		EndIf
		
		DbSelectArea("Query")
		DbSkip()
		
		If Empty(cCliente) .Or. EoF()
			If lExistNfe
				oDanfe:Preview()//Visualiza antes de imprimir
				//If MsgYesNo("Deseja enviar email?","Envia Danfe email")
				U_DELTAENVEMAIL(cDir,cNome,cCliente,cNumNota,cSerieNF)//,cTransp)
				//EndIf
			Else
				Aviso("DANFE","Nenhuma NF-e a ser impressa nos parametros utilizados.",{"OK"},3)
			EndIf
			
			FreeObj(oDanfe)
			oDanfe := Nil
		EndIf
	EndDo
Else
	Return
EndIf

DbSelectArea("Query")
DbCloseArea("Query")

Return(.T.)

O restante da danfe é tudo igual a padrão, com exceção de uma customização ou outra para o cliente.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23699 por henry.charriere
Brother, obrigado pela ajuda.

Estou tentando ajustar o código. Me diga uma coisa, essa parte está dando erro.

Local nFlags := PD_ISTOTVSPRINTER + PD_DISABLEORIENTATION + PD_DISABLEPAPERSIZE + PD_DISABLEMARGIN

Tem alguma coisa que devo fazer?


Atc,

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23710 por inocenciojr
Respondido por inocenciojr no tópico Customização Impressão DANFES
Bom dia Henry,

Se não me engano é esse include que trata disso:

#INCLUDE "FWPrintSetup.ch"


E esses são todos os includes que estou usando:

#INCLUDE "PROTHEUS.CH"
#INCLUDE "topconn.ch"
#INCLUDE "TBICONN.CH"
#INCLUDE "COLORS.CH"
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"

Veja se isso resolve.

Por favor Acessar ou Registrar para participar da conversa.

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