- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Customização Impressão DANFES
×
Linguagem de Programação ADVPL
Perguntas Customização Impressão DANFES
- henry.charriere
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 492
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23643
por henry.charriere
Customização Impressão DANFES foi criado 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
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.
- inocenciojr
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 1
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
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.
- henry.charriere
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 492
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23661
por henry.charriere
Respondido por henry.charriere no tópico Customização Impressão DANFES
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
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.
- inocenciojr
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 1
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:
O restante da danfe é tudo igual a padrão, com exceção de uma customização ou outra para o cliente.
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.
- henry.charriere
- Autor do Tópico
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 492
- Obrigados Recebidos: 0
10 anos 4 meses atrás #23699
por henry.charriere
Respondido por henry.charriere no tópico Customização Impressão DANFES
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,
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.
- inocenciojr
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 1
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.
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Customização Impressão DANFES
Tempo para a criação da página:0.121 segundos