#include "PROTHEUS.CH"
#include "RWMAKE.CH"
#include "APWEBEX.CH"
#include "TOPCONN.CH"
#include "TBICONN.CH"
#include "Fileio.ch"
#DEFINE SMSDEBUG
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ MailNF ¦ Autor ¦ Lucilene Mendes ¦ Data ¦09.12.17 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Envio da DANFE por e-mail ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function MailNF()
Local cHtml
Local cFilePrint:= ''
Local cDirDoc := ''
Local cTipo := ''
Local cArqXML := ''
Local lEmail := .F.
Web Extended Init cHtml Start U_inSite()
lEmail:= !Empty(Alltrim(HttpPost->email))
If lEmail .and. At("@",Alltrim(HttpPost->email)) <= 0
cHtml:= 'E-mail invalido!'+CRLF
Return cHtml
Endif
nRecF2 := Val(Iif(Type("HttpPost->DOC") == "U",HttpGet->DOC,HttpPost->DOC))
cTipo :=Iif(Type("HttpPost->TIPO") == "U",Iif(Type("HttpGet->TIPO") == "U","A",HttpGet->TIPO),HttpPost->TIPO)
If nRecF2 <= 0
cHtml:= 'DANFE não disponível!'+CRLF
Return cHtml
Endif
//Posiciona na NF
dbSelectArea("SF2")
SF2->(dbGoto(nRecF2))
//Troca de filial
u_PTChgFil(SF2->F2_FILIAL)
dbSelectArea("SF2")
SF2->(dbGoto(nRecF2))
cDirDoc := '\anexosportal\danfe\'
//Composicao do nome do arquivo: DANFE + nr nf + DATA EMISSAO
cFilePrint := "DANFE_"+AllTrim(SF2->F2_DOC)+"_"+DTOS(SF2->F2_EMISSAO)
If cTipo = '2'
cArqXML:= cDirDoc+cFilePrint+".xml"
u_zSpedXML(SF2->F2_DOC, SF2->F2_SERIE, cArqXML, .f.)
Sleep( 4000 ) //aguarda 4 segundos para geração do arquivo pdf
If !File(cArqXML)
cHtml:= 'Falha ao gerar o XML!'+CRLF
Return cHtml
Else
cHtml:= cFilePrint+'.xml'
Endif
Else
//Geração da DANFE em PDF
U_DANFEPDF(nRecF2,cDirDoc, cFilePrint)
Sleep( 4000 ) //aguarda 4 segundos para geração do arquivo pdf
If !File(cDirDoc+cFilePrint+'.pdf')
cHtml:= 'Falha ao gerar a DANFE!'+CRLF
Return cHtml
Else
cHtml:= cFilePrint+'.pdf'
Endif
Endif
If lEmail
If MailDanfe(cDirDoc+cFilePrint,HttpPost->email, SF2->F2_DOC, SF2->F2_SERIE)
cHtml := 'E-mail enviado com sucesso.'+CRLF
Else
cHtml := 'Houve falha no envio do e-mail. Tente novamente.'+CRLF
EndIf
Else
Endif
Web Extended End
Return (cHTML)
Static Function MailDanfe(cAnexo,cMail,cDoc, cSerie)
Local _cMsgem := ''
Local _cStyle := ''
Local _cDirWF := ""
Local _lRet := .F.
Private oProcAprov
//Diretório onde está o arquivo HTML
If Empty(_cDirWF)
_cDirWf := '\WORKFLOW\'
Endif
If Right(_cDirWF,1) <> '\'
_cDirWF += '\'
Endif
_cDirWF += 'PortalWF\'
// Crio o objeto oProcAprov, que recebe a inicialização da classe TWFProcess.
// Repare que o primeiro Parâmetro é o código do processo cadastrado no configurador
oProcAprov := TWFProcess():New( 'ORCMAIL','FN' )
//Informo o título do email.
oProcAprov:cSubject := 'Envio de Danfe - NF '+cDoc+"/"+cSerie
// Crio uma task. Um Processo pode ter várias Tasks(tarefas). Para cada Task
// informo um nome para ela e o HTML envolvido. Repare que o path do HTML é sempre abaixo do RootPath do AP7.
// aqui usarei uma task para cada PC enviada
oProcAprov:NewTask('ORCMAIL', _cDirWF+'OrcMail.HTM' )
oProcAprov:AttachFile(cAnexo+'.pdf')
oProcAprov:AttachFile(cAnexo+'.xml')
//Destinatário
oProcAprov:cTo := cMail
_cMsgem := 'Prezado Cliente,
Segue anexo DANFE referente a nota fiscal '+cDoc+' série '+cSerie+'.'+chr(10)+chr(13)
oProcAprov:oHtml:ValByName('MSGEM',_cMsgem)
oProcAprov:oHtml:ValByName('TITULO',"DANFE")
_cStyle := ""
// Endereço dos CSS e Imagens da Pagina
oProcAprov:oHtml:ValByName('cCSS',_cStyle)
// Envio do email
oProcAprov:Start()
oProcAprov:Finish()
Return .T.
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ ExecBat ¦ Autor ¦ Lucilene Mendes ¦ Data ¦09.12.17 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Executa bat para evitar erro em função de geração da danfe ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function ExecBat()
Local cCommand := ""
Local cPath := ""
Local lWait := .F.
cCommand := "D\totvs\microsiga\Protheus12\ambientes\Teste\web\Portal SMS\danfe.bat"
cPath := "D\totvs\microsiga\Protheus12\ambientes\Teste\web\Portal SMS\"
WaitRunSrv( @cCommand , @lWait , @cPath )
Return .T.