MailNF.apl 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. #include "PROTHEUS.CH"
  2. #include "RWMAKE.CH"
  3. #include "APWEBEX.CH"
  4. #include "TOPCONN.CH"
  5. #include "TBICONN.CH"
  6. #include "Fileio.ch"
  7. #DEFINE SMSDEBUG
  8. /*__________________________________________________________________________
  9. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  10. ¦¦+-----------------------------------------------------------------------+¦¦
  11. ¦¦¦Funçäo ¦ MailNF ¦ Autor ¦ Lucilene Mendes ¦ Data ¦09.12.17 ¦¦¦
  12. ¦¦+----------+------------------------------------------------------------¦¦¦
  13. ¦¦¦Descriçäo ¦ Envio da DANFE por e-mail ¦¦¦
  14. ¦¦+-----------------------------------------------------------------------+¦¦
  15. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  16. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  17. User Function MailNF()
  18. Local cHtml
  19. Local cFilePrint:= ''
  20. Local cDirDoc := ''
  21. Local cTipo := ''
  22. Local cArqXML := ''
  23. Local lEmail := .F.
  24. Web Extended Init cHtml Start U_inSite()
  25. lEmail:= !Empty(Alltrim(HttpPost->email))
  26. If lEmail .and. At("@",Alltrim(HttpPost->email)) <= 0
  27. cHtml:= 'E-mail invalido!'+CRLF
  28. Return cHtml
  29. Endif
  30. nRecF2 := Val(Iif(Type("HttpPost->DOC") == "U",HttpGet->DOC,HttpPost->DOC))
  31. cTipo :=Iif(Type("HttpPost->TIPO") == "U",Iif(Type("HttpGet->TIPO") == "U","A",HttpGet->TIPO),HttpPost->TIPO)
  32. If nRecF2 <= 0
  33. cHtml:= 'DANFE não disponível!'+CRLF
  34. Return cHtml
  35. Endif
  36. //Posiciona na NF
  37. dbSelectArea("SF2")
  38. SF2->(dbGoto(nRecF2))
  39. //Troca de filial
  40. u_PTChgFil(SF2->F2_FILIAL)
  41. dbSelectArea("SF2")
  42. SF2->(dbGoto(nRecF2))
  43. cDirDoc := '\anexosportal\danfe\'
  44. //Composicao do nome do arquivo: DANFE + nr nf + DATA EMISSAO
  45. cFilePrint := "DANFE_"+AllTrim(SF2->F2_DOC)+"_"+DTOS(SF2->F2_EMISSAO)
  46. If cTipo = '2'
  47. cArqXML:= cDirDoc+cFilePrint+".xml"
  48. u_zSpedXML(SF2->F2_DOC, SF2->F2_SERIE, cArqXML, .f.)
  49. Sleep( 4000 ) //aguarda 4 segundos para geração do arquivo pdf
  50. If !File(cArqXML)
  51. cHtml:= 'Falha ao gerar o XML!'+CRLF
  52. Return cHtml
  53. Else
  54. cHtml:= cFilePrint+'.xml'
  55. Endif
  56. Else
  57. //Geração da DANFE em PDF
  58. U_DANFEPDF(nRecF2,cDirDoc, cFilePrint)
  59. Sleep( 4000 ) //aguarda 4 segundos para geração do arquivo pdf
  60. If !File(cDirDoc+cFilePrint+'.pdf')
  61. cHtml:= 'Falha ao gerar a DANFE!'+CRLF
  62. Return cHtml
  63. Else
  64. cHtml:= cFilePrint+'.pdf'
  65. Endif
  66. Endif
  67. If lEmail
  68. If MailDanfe(cDirDoc+cFilePrint,HttpPost->email, SF2->F2_DOC, SF2->F2_SERIE)
  69. cHtml := 'E-mail enviado com sucesso.'+CRLF
  70. Else
  71. cHtml := 'Houve falha no envio do e-mail. Tente novamente.'+CRLF
  72. EndIf
  73. Else
  74. Endif
  75. Web Extended End
  76. Return (cHTML)
  77. Static Function MailDanfe(cAnexo,cMail,cDoc, cSerie)
  78. Local _cMsgem := ''
  79. Local _cStyle := ''
  80. Local _cDirWF := ""
  81. Local _lRet := .F.
  82. Private oProcAprov
  83. //Diretório onde está o arquivo HTML
  84. If Empty(_cDirWF)
  85. _cDirWf := '\WORKFLOW\'
  86. Endif
  87. If Right(_cDirWF,1) <> '\'
  88. _cDirWF += '\'
  89. Endif
  90. _cDirWF += 'PortalWF\'
  91. // Crio o objeto oProcAprov, que recebe a inicialização da classe TWFProcess.
  92. // Repare que o primeiro Parâmetro é o código do processo cadastrado no configurador
  93. oProcAprov := TWFProcess():New( 'ORCMAIL','FN' )
  94. //Informo o título do email.
  95. oProcAprov:cSubject := 'Envio de Danfe - NF '+cDoc+"/"+cSerie
  96. // Crio uma task. Um Processo pode ter várias Tasks(tarefas). Para cada Task
  97. // informo um nome para ela e o HTML envolvido. Repare que o path do HTML é sempre abaixo do RootPath do AP7.
  98. // aqui usarei uma task para cada PC enviada
  99. oProcAprov:NewTask('ORCMAIL', _cDirWF+'OrcMail.HTM' )
  100. oProcAprov:AttachFile(cAnexo+'.pdf')
  101. oProcAprov:AttachFile(cAnexo+'.xml')
  102. //Destinatário
  103. oProcAprov:cTo := cMail
  104. _cMsgem := 'Prezado Cliente,<br><br>Segue anexo DANFE referente a nota fiscal '+cDoc+' série '+cSerie+'.'+chr(10)+chr(13)
  105. oProcAprov:oHtml:ValByName('MSGEM',_cMsgem)
  106. oProcAprov:oHtml:ValByName('TITULO',"DANFE")
  107. _cStyle := ""
  108. // Endereço dos CSS e Imagens da Pagina
  109. oProcAprov:oHtml:ValByName('cCSS',_cStyle)
  110. // Envio do email
  111. oProcAprov:Start()
  112. oProcAprov:Finish()
  113. Return .T.
  114. /*__________________________________________________________________________
  115. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  116. ¦¦+-----------------------------------------------------------------------+¦¦
  117. ¦¦¦Funçäo ¦ ExecBat ¦ Autor ¦ Lucilene Mendes ¦ Data ¦09.12.17 ¦¦¦
  118. ¦¦+----------+------------------------------------------------------------¦¦¦
  119. ¦¦¦Descriçäo ¦ Executa bat para evitar erro em função de geração da danfe ¦¦¦
  120. ¦¦+-----------------------------------------------------------------------+¦¦
  121. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  122. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  123. User Function ExecBat()
  124. Local cCommand := ""
  125. Local cPath := ""
  126. Local lWait := .F.
  127. cCommand := "D\totvs\microsiga\Protheus12\ambientes\Teste\web\Portal SMS\danfe.bat"
  128. cPath := "D\totvs\microsiga\Protheus12\ambientes\Teste\web\Portal SMS\"
  129. WaitRunSrv( @cCommand , @lWait , @cPath )
  130. Return .T.