FUNCTION ENVIAR_EMAIL()
LOCAL cSubject, cNoteText, cMsgType, cConversationID, dDate, cTime, ;
lReceipt, lFromUser, aOrigin, aRecipients, aFiles, oMail, ;
EmailCliente, cChave, cXml, oDlgEmail, oFnt, oFont, oSaida2, ;
cAlias, oLbx, IDCor, oIco, TRAB, aGet := ARRAY(5)
LOCAL nKey := VK_RETURN, oEnviaSoUm, oEnviaTodos, nRecNo
LOCAL lContinua := .T., cValNf, oBtn1, ccxml, oEnviaDireto
LOCAL oBtnNewAnexo, oBtnExclAnexo, oList, cArq, cExt
LOCAL oHand, oAlterar, oGravar, oImprimir, oBrush, oEnviar, oDlgEnv
LOCAL nContaNFe, lLigaBtnVar := .F., cArq3, cPdfNFeUni
LOCAL cUser := SPACE(50), cRemt := SPACE(50), ;
cDest := SPACE(250), cTxt := SPACE(10), cAssunto := SPACE(100),;
cCC := SPACE(250), cCCO := SPACE(250)
LOCAL oGet[15], oSay[12], oBtn[2], nItem := 0, cArq2, cPdfCCeUni
LOCAL cDados, i, oAdd, oDel, cTitle, oSay1, oTahoma, rCampo
LOCAL cServPOP3, cServSMTP, nServPORT, cServSEGU
LOCAL oSayBanco, cPromptBanco, cDirPdf := [C:\NFEPDF ]
PRIVATE oCab, oGru, oCon, oCod, oMenu, lSair := .F., oM2, lCheck := .T.
PRIVATE DbServidor, cNomeUsuario
PRIVATE cPass := SPACE(15)
// Esta area, pegar do banco de dados
PRIVATE aServs // Servidores
PRIVATE aDomin := {}, nServ := 1 // Dominio e Servidores
PRIVATE oFont1
MEMVAR XNUMPEDIDO
PUBLIC wNomeEmpresa, lNovaDll, NewAnexo, lNewAnexoVemdaNFe
// Caso o usuario tecle <esc> quando estiver enviando automatico
lSaida := .T. //-> Permite sair sem problemas
XNUMPEDIDO := 0
nContaNFe := 1
cTitle := [Enviar Email ]
//-> Abre Notas Fiscais
SELECT CADNFE
IF CADPARAM->TPAMB = [1]
IF OrdCount() < 3
MsgStop( OemToAnsi( "Aten‡Æo Usu rio: " ) +CRLF+ ;
OemToAnsi( "Problemas nos INDICES 34 " ) +CRLF+ ;
OemToAnsi( "Saia do programa e " ) +CRLF+ ;
OemToAnsi( "Entre no PLENO e " ) +CRLF+ ;
OemToAnsi( "REINDEXAR TODOS OS BANCOS" ), ;
OemToAnsi( "Problemas com os Indices." ) )
RETURN ( .F. )
ELSE
SET ORDER TO 03
ENDIF
ELSE
SET ORDER TO 01
ENDIF
SEEK NFECOD2 //-> Numero da Nota Fiscal
IF FOUND()
SELECT CADFATPE
IF CADPARAM->TPAMB = [1]
IF OrdCount() < 5
MsgStop( OemToAnsi( "Aten‡Æo Usu rio: " ) +CRLF+ ;
OemToAnsi( "Problemas nos INDICES 35 " ) +CRLF+ ;
OemToAnsi( "Saia do programa e " ) +CRLF+ ;
OemToAnsi( "Entre no PLENO e " ) +CRLF+ ;
OemToAnsi( "REINDEXAR TODOS OS BANCOS" ), ;
OemToAnsi( "Problemas com os Indices." ) )
RETURN ( .F. )
ELSE
SET ORDER TO 05
ENDIF
SEEK CADNFE->NFECOD
ELSE
SET ORDER TO 01 //-> Por FATURCOD - Indice
SEEK CADNFE->FATURCOD
ENDIF
IF .NOT. FOUND()
IF lImprimeOutros // Enviar Email do Fat. Outros
SELECT CADFATUR
SET ORDER TO 01
SEEK CADNFE->FATURCOD
ENDIF
ENDIF
ELSE
MsgStop( OemToAnsi( "Aten‡Æo Usu rio: " ) +CRLF+ ;
OemToAnsi( "Nota Fiscal NÆo Localizada " ) +CRLF+ ;
OemToAnsi( "Para Gerar o Email do Cliente. " ), ;
OemToAnsi( "Impossivel Enviar o Email... " ) )
RETURN( .F. )
ENDIF
IF FOUND()
IF CADFATPE->TIPOENTGA = "ME"
PEDIDCOD2 := CADFATPE->PEDIDCOD
XNUMPEDIDO := PEDIDCOD2
lNaoAchouAprovada := .T.
IF lOutLook // Sera enviado pelo OutLook Express
lMultiEntrega := .F. // Para nao reindexar em SOMENTE UM EMAIL
ELSE // Sera enviado direto pelo programa
lMultiEntrega := .T. // Se for direto, tem que reindexar
ENDIF
TRAB := OemToAnsi( "<<< NFE's: RELAۂO DE EMAILS DO PEDIDO: " ;
+STR(PEDIDCOD2)+ ;
" - " + "MULTI ENTREGA: PARA ENVIAR >>>" )
LCHDIR( cDirPleno ) // ANTES NO ERA NECESSARIO...
SET DEFAULT TO
SELECT CADNFE
ERASE C:\PLENOTMP\INFETEMP.CDX
INDEX ON CADNFE->NFECOD TAG 07 TO C:\PLENOTMP\INFETEMP ;
WHILE CADNFE->PEDIDCOD == PEDIDCOD2 .AND. ;
CADNFE->TPFAT_OP == "P" .AND. ;
CADNFE->STATUS == "IMP" .OR. ;
CADNFE->STATUS == "CAN" .OR. ;
CADNFE->STATUS == "APR" .AND. ;
( .NOT. EOF() )
SET INDEX TO C:\PLENOTMP\INFETEMP, INFE
GO TOP
WHILE .NOT. EOF()
SYSREFRESH()
IF nContaNFe > 1
lLigaBtnVar := .T. // Botao de Varios Emails
ENDIF
SKIP
nContaNFe := nContaNFe + 1
ENDDO
GO TOP
IF VSIS = "01082"
cPromptBanco := OemToAnsi( " ATEN€ÇO USUµRIO "+ ;
"ANTES DE TENTAR ENVIAR EMAILS, " + ;
"FECHE O SUPERCASH SANTANDER OU " + ;
"COBRAN€A ITAé. PROIBIDO O USO DE " + ;
"PROGRAMAS DE BANCOS COM A NF-e. " )
ELSE
cPromptBanco := OemToAnsi( " ATEN€ÇO USUµRIO: " + ;
"ANTES DE TENTAR ENVIAR EMAILS, " + ;
"FECHE QUALQUER PROGRAMA DE BANCO. " + ;
"PROIBIDO O USO DE " + ;
"PROGRAMAS DE BANCOS COM A NF-e. " )
ENDIF
cAlias := ALIAS() //-> CADNFE.DBF
DEFINE BRUSH oBrush RESOURCE "LOGO2" //-> PEGA A BITMAP DO ARQUIVO.RES(LOGO.BMP)
DEFINE ICON oIco NAME "ICONE"
DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, 14 BOLD
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD
DEFINE DIALOG oDlgEmail RESOURCE "BROWSE_ENVIAR_EMAILS" ;
ICON oIco COLORS CLR_BLACK, CLR_WHITE TRANSPARENT
oDlgEmail:lHelpIcon := .F.
REDEFINE SAY ID 401 OF oDlgEMail ;
COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
REDEFINE SAY ID 402 OF oDlgEMail ;
COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
REDEFINE GROUP oGroup ID 501 OF oDlgEmail FONT oFnt TRANSPARENT
REDEFINE DYNAMIC SAY oSayBanco VAR cPromptBanco ID 801 OF oDlgEmail;
CENTERED HORIZONTAL SCROLL SPEED 50 WRAP ;
COLOR CLR_YELLOW, CLR_BLACK FONT oFont
IF lLigaBtnVar // Multi entrega, tem varios emails, aqui.
REDEFINE LISTBOX oLbx FIELDS ;
IIF( ( cAlias )->NFECOD != 0, ;
xPadl( Alltrim( Str( ( cAlias )->NFECOD, 6,0 ) ), 6 ), ;
xPadl( Alltrim( Str( ( cAlias )->FATURCOD, 6,0 ) ), 6 ) ) , ;
NUMERO_DO_PEDIDO() , ;
NOME_CLIENTE_VIEW() , ;
VERIFICA_STATUS_CLIENTE() ;
HEADERS OemToAnsi( "N. Fiscal " ) , ;
OemToAnsi( "Pedido N§ " ) , ;
OemToAnsi( "Nome do Cliente " ) , ;
OemToAnsi( "Status NF-e " ) ;
FIELDSIZES 090, 090, 425, 120 ;
COLOR CLR_BROWN, CLR_LGREEN FONT oFnt ID 101 OF oDlgEmail ;
ON DBLCLICK( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email(s). Espere! ", ;
{ || ENVIAR_SOMENTE_UM_EMAIL( cAlias, oLbx ) } ), ;
oLbx:Refresh(), oLbx:SetFocus() )
ELSE // e multi entrega, mas foi escolhido somente um email, aqui.
REDEFINE LISTBOX oLbx FIELDS ;
IIF( ( cAlias )->NFECOD != 0, ;
xPadl( Alltrim( Str( ( cAlias )->NFECOD, 6,0 ) ), 6 ), ;
xPadl( Alltrim( Str( ( cAlias )->FATURCOD, 6,0 ) ), 6 ) ) , ;
NUMERO_DO_PEDIDO() , ;
NOME_CLIENTE_VIEW() , ;
VERIFICA_STATUS_CLIENTE() ;
HEADERS OemToAnsi( "N. Fiscal " ) , ;
OemToAnsi( "Pedido N§ " ) , ;
OemToAnsi( "Nome do Cliente " ) , ;
OemToAnsi( "Status NF-e " ) ;
FIELDSIZES 090, 090, 425, 120 ;
COLOR CLR_BROWN, CLR_LGREEN FONT oFnt ID 101 OF oDlgEmail ;
ON DBLCLICK( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email(s). Espere! ", ;
{ || ENVIAR_SOMENTE_UM_EMAIL( cAlias, oLbx ) } ), ;
oLbx:Refresh(), oLbx:SetFocus(), oDlgEmail:End() )
ENDIF
IF lLigaBtnVar // Multi entrega, tem varios emails, aqui.
oLbx:bKeyDown := { | nKey | ;
IF ( nKey = VK_RETURN, ;
( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email(s). Espere! ", ;
{ || ENVIAR_SOMENTE_UM_EMAIL( cAlias, oLbx ) } ), ;
oLbx:Refresh(), oLbx:SetFocus() ), ;
IF ( nKey = VK_INSERT, ;
( "" ), ;
IF ( nKey = VK_DELETE, ;
( "" ), ) ) ) }
ELSE // e multi entrega, mas foi escolhido somente um email, aqui.
oLbx:bKeyDown := { | nKey | ;
IF ( nKey = VK_RETURN, ;
( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email(s). Espere! ", ;
{ || ENVIAR_SOMENTE_UM_EMAIL( cAlias, oLbx ) } ), ;
oLbx:Refresh(), oLbx:SetFocus(), oDlgEmail:End() ), ;
IF ( nKey = VK_INSERT, ;
( "" ), ;
IF ( nKey = VK_DELETE, ;
( "" ), ) ) ) }
ENDIF
oLbx:cToolTip := OemToAnsi( "<ENTER> Enviar Somente Uma Nota " +CRLF+ ;
"<INSERT> Desabilitado. " +CRLF+ ;
"<CLICK> Enviar Somente Uma Nota " +CRLF+ ;
"<DELETE> Desabilitado. " )
oLbx:lToolTipBallon := .T.
oLbx:nTooltipWidth := 200 // 100
oLbx:nTooltipTexColor := nRGB( 000, 000, 000 )
oLbx:nTooltipBKColor := nRGB( 250, 250, 250 )
oLbx:cTooltipTitle := OemToAnsi( "Enviar Emails das Notas Fiscais " )
oLbx:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oLbx:nSetDelayType := 2
oLbx:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
oLbx:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho
oLbx:nClrText := {|| nRGB( 165, 42, 42 ) }
oLbx:nClrBackFocus := CLR_HBLUE // Cor do Cursor Em Cima do Ötem
oLbx:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
oLbx:nClrForeHead := CLR_HRED // Cor nos Headers - Cabe‡alhos
oLbx:nClrPane := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) %2 == 0, ;
CLR_LGREEN, CLR_LGRAY ) }
oLbx:nColAct := 3 // Onde o Cursor Vai Iniciar qual coluna
oLbx:nLineStyle := 3 // Estilo das linhas nos dados da Browse
oLbx:lCellStyle := .T. // S¢ Pinta a celula que o cursor est
oLbx:aJustify := { .T., .T., .F., .F., .F., .F. }
oLbx:lMChange := .F. // Desabilita Mousemove
oLbx:Refresh() // Estabiliza o Browse/Listbox
oLbx:SetFocus() // Refocus on The Browse
REDEFINE GET aGet[1] VAR TRAB ID 20 PICTURE "@K" WHEN( .F. ) ;
OF oDlgEmail UPDATE FONT oFnt COLORS CLR_BLACK, CLR_WHITE
IF lLigaBtnVar // Multi entrega, tem varios emails, aqui.
REDEFINE BUTTONBMP oEnviaSoUm ID 301 OF oDlgEmail ;
ACTION( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email. Espere! ", ;
{ || ENVIAR_SOMENTE_UM_EMAIL( cAlias, oLbx ) } ), ;
oLbx:Refresh(), oLbx:SetFocus() )
ELSE // e multi entrega, mas foi escolhido somente um email, aqui.
REDEFINE BUTTONBMP oEnviaSoUm ID 301 OF oDlgEmail ;
ACTION( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email. Espere! ", ;
{ || ENVIAR_SOMENTE_UM_EMAIL( cAlias, oLbx ) } ), ;
oDlgEmail:End() )
ENDIF
oEnviaSoUm:cToolTip := OemToAnsi( "Enviar Somente Uma Nota Fiscal, Servidor de Email" )
REDEFINE BUTTONBMP oEnviaTodos ID 302 OF oDlgEmail ;
WHEN( lLigaBtnVar ) ;
ACTION( MsgRun( OemToAnsi( "Tentando Gerar o Email da NF-e Para Enviar. " ), ;
"Conectando ao Servidor de Email. Espere! ", ;
{ || ENVIAR_TODOS_OS_EMAILS( oLbx ) } ), oDlgEmail:End() )
oEnviaTodos:cToolTip := OemToAnsi( "Enviar Todos as Notas, Via Servidor de Email" )
REDEFINE BUTTONBMP oSaida2 ID 303 OF oDlgEmail ;
ACTION( lContinua := .F., oDlgEmail:End() ) CANCEL UPDATE
oSaida2:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )
SET FONT OF oEnviaSoUm TO oFnt
SET FONT OF oEnviaTodos TO oFnt
SET FONT OF oSaida2 TO oFont
ACTIVATE DIALOG oDlgEmail CENTERED
oBrush:End()
oFnt:End()
oFont:End()
lNaoAchouAprovada := .F.
lNaoAbreServ := .T.
lMultiEntrega := .F.
DO CASE
CASE NKEY == VK_ESCAPE .OR. GETKEYSTATE( VK_ESCAPE ) .OR. ;
.NOT. lContinua
// PEGO NOVAMENTE O DIRETORIO ONDE ESTA O PLENOCB.EXE 18/08/2013
LCHDIR( cDirPleno )
SET DEFAULT TO
CLOSE DATABASES // MUDEI EM 04/05/2010 - SILCO
//-> Reabro os bancos Para NÆo quebrar o Indice ao retornar p/Dialogo
ABRENFEDBFS() // Paulo 24/08/2009
SELECT CADNFE
lContinua := .T.
XFOCUS( oNota )
RETURN NIL
ENDCASE
// PEGO NOVAMENTE O DIRETORIO ONDE ESTA O PLENOCB.EXE 18/08/2013
LCHDIR( cDirPleno )
SET DEFAULT TO
CLOSE DATABASES
ABRENFEDBFS()
SELECT CADNFE
lContinua := .T.
XFOCUS( oNota )
RETURN NIL
ENDIF
ELSE
MsgStop( OemToAnsi( "Aten‡Æo Usu rio: " ) +CRLF+ ;
OemToAnsi( "Nota Fiscal NÆo Localizada " ) +CRLF+ ;
OemToAnsi( "Para Gerar o Email do Cliente. " ), ;
OemToAnsi( "Impossivel Enviar o Email... " ) )
RETURN( .F. )
ENDIF
IF FOUND()
cValNF := CADFATPE->TOTNF
SELECT CADCLIEN
SET ORDER TO 01
SEEK CADFATPE->CLIENCOD
IF .NOT. FOUND()
IF lImprimeOutros // Enviar Email do Fat. Outros
cValNF := CADFATUR->TOTNF
SELECT CADCLIEN
SET ORDER TO 01
SEEK CADFATUR->CLIENCOD
ENDIF
ENDIF
SELECT CADTRANS
SET ORDER TO 01
SEEK CADCLIEN->TRANSCOD
SELECT CADCLIEN
ELSE
MsgStop( OemToAnsi( "Aten‡Æo Usu rio: " ) +CRLF+ ;
OemToAnsi( "Nota Fiscal NÆo Localizada " ) +CRLF+ ;
OemToAnsi( "Para Gerar o Email do Cliente. " ), ;
OemToAnsi( "Impossivel Enviar o Email... " ) )
RETURN( .F. )
ENDIF
IF lImprimeOutros // Enviar Email do Fat. Outros
cValNF := CADFATUR->TOTNF
SELECT CADCLIEN
SET ORDER TO 01
SEEK CADFATUR->CLIENCOD
ENDIF
IF FOUND()
aEmpresa := CADCLIEN->CLIENTE
aTabela := LOWER( CADCLIEN->EMAILNFE ) //-> Email do Cliente
IF CADCLIEN->EMAILNFE = [ ] //-> se estiver vazio
ALTERAR_EMAIL_CLIENTE( DeOndeVem := "ENVIAR_EMAIL" )
RETURN( .F. )
ENDIF
ELSE
MsgStop( OemToAnsi( "Aten‡Æo Usu rio: " ) +CRLF+ ;
OemToAnsi( "Empresa NÆo Localizada em CADCLIEN.DBF" ) +CRLF+ ;
OemToAnsi( "Para Gerar o Email do Cliente/Empresa." ), ;
OemToAnsi( "Impossivel Enviar o Email... Erro! " ) )
RETURN( .F. )
ENDIF
cChave := ALLTRIM(CADNFE->CHAVEACES)
cSubject := "Nota Fiscal Eletrônica Nº.: " + STRZERO( NFECOD2 ) + ;
" - " + "Arquivo XML do Cliente"
cAssunto := ALLTRIM( cSubject ) // assunto do email direto
cTitle := cAssunto
cNoteText := "Prezado Cliente:" +CRLF+CRLF+;
ALLTRIM( CADCLIEN->CLIENTE ) +CRLF+CRLF+;
"Para suas devidas providencias, " + ;
"segue em anexo o arquivo digital, " + ;
"padrão XML, que deu origem " + ;
"a nossa Nota Fiscal Eletrônica com as " + ;
"seguintes características: " +CRLF+CRLF+;
"Número: "+STRZERO( NFECOD2 ) +CRLF+ ;
"Emissão: " + IIF( lImprimeOutros, ;
DTOC( CADFATUR->DTEMIS ), ;
DTOC( CADFATPE->DTEMIS ) )+CRLF+ ;
"Valor: " + ;
TRANSF(( cValNF ),"@E 999,999,999.99") +CRLF+CRLF+;
"O destinatário da NF-e, seja ele " + ;
"emissor ou não de NF-e, deve consultar a " +;
"validade do documento no portal da NF-e " +;
"na SEFAZ do seu Estado ou no " +;
"Portal Nacional " +;
"da NF-e, Utilizando a Chave de Acesso de Nº.: " ;
+CRLF+;
ALLTRIM( cChave ) +CRLF+CRLF+;
"Qualquer dúvida entre em contato Conosco."+CRLF+CRLF+;
"* Este e-mail foi enviado automaticamente " +;
"pelo Sistema de Notas Fiscais " +;
"Eletrônicas (NF-e), não sendo " +;
"necessário respondê-lo." +CRLF+CRLF+;
"Atenciosamente," +CRLF+CRLF+;
ALLTRIM(wNomeEmpresa) //-> Nome do Remetente/Enviador
cTxt := cNoteText //-> Corpo do Email
cMsgType := "C"
cConversationID := ""
dDate := DATE()
cTime := TIME()
lReceipt := .F.
lFromUser := .T.
aOrigin := {""} //-> Email de quem enviou, nao precisa informar
IF lOutLook // Sera enviado pelo OutLook Express
EmailCliente := LOWER(ALLTRIM( CADCLIEN->EMAILNFE ) )
ELSE
EmailCliente := LOWER(ALLTRIM( CADCLIEN->EMAILNFE )+SPACE(230) )
ENDIF
IF lOutLook // Sera enviado pelo OutLook Express
cCC := LOWER(ALLTRIM( CADTRANS->EMAIL ) )
ELSE // direto pelo programa
cCC := LOWER(ALLTRIM( CADTRANS->EMAIL )+SPACE(230) )
ENDIF
IF VSIS = "01082"
IF lOutLook // Sera enviado pelo OutLook Express
cCC := LOWER(ALLTRIM( CADCLIEN->EMAIL ) )
ELSE // direto pelo programa desde que esteja configurado
cCC := LOWER(ALLTRIM( CADCLIEN->EMAIL )+SPACE(230) )
ENDIF
ENDIF
IF .NOT. EMPTY( cCC ) // Com Copia no Email da Transportadora
aRecipients := { EmailCliente, cCC } //-> Email final para enviar
ELSE
aRecipients := { EmailCliente } //-> email final para enviar
ENDIF
cDest := ALLTRIM( EmailCliente ) //-> email final para enviar
VER_EMAIL_ERRADO( cDest ) //-> Verifica se o email esta errado: 03/08/2012
cChave := ALLTRIM(CADNFE->CHAVEACES)
IF lNovaDll .AND. CPROTOC = [S] //-> PROTOCOLO SIM OU NAO ?
// ISTO NAO FUNCIONA MAIS EM FWH13.05 - 15/07/2013
// cXml := cPathNFe := CURDRIVE() + ":\" + GETCURDIR() + ;
cXml := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + "nfe.xml"
IF .NOT. FILE( cXml )
MsgStop( OemToAnsi( "ARQUIVO.XML da Nota Fiscal Eletr“nica, " ) +;
OemToAnsi( "NÆo Foi Localizado no Diret¢rio: " )+CRLF+;
+CRLF+;
ALLTRIM( cPathNFe ) +CRLF+;
+CRLF+;
OemToAnsi( "Para Resolver o Problema, Volte Para a Tela " )+;
OemToAnsi( "da NF-e, e <Click> no BotÆo: <Manuten‡Æo> - " )+;
OemToAnsi( "<Manuten‡Æo das NFe's>, Execute a Rotina " ) +;
OemToAnsi( "Somente Para Esta NFE " ), ;
OemToAnsi( "ARQUIVO.XML NÆo Foi Localizado no Diret¢rio. ERRO! " ) )
RETURN NIL
ENDIF
ELSE
// ISTO NAO FUNCIONA MAIS EM FWH13.06 - 15/07/2013
// cXml := cPathNFe := CURDRIVE() + ":\" + GETCURDIR() + ;
cXml := cPathNFe := GETCURDIR() + ;
"\REMESSA\ENVIADAS\" + ALLTRIM( cChave ) + "nfe.xml"
IF .NOT. FILE( cXml )
MsgStop( OemToAnsi( "ARQUIVO.XML da Nota Fiscal Eletr“nica, " ) +;
OemToAnsi( "NÆo Foi Localizado no Diret¢rio: " )+CRLF+;
+CRLF+;
ALLTRIM( cPathNFe ) +CRLF+;
+CRLF+;
OemToAnsi( "Para Resolver o Problema, Volte Para a Tela " )+;
OemToAnsi( "da NF-e, e <Click> no BotÆo: <Manuten‡Æo> - " )+;
OemToAnsi( "<Manuten‡Æo das NFe's>, Execute a Rotina " ) +;
OemToAnsi( "Somente Para Esta NFE " ), ;
OemToAnsi( "ARQUIVO.XML NÆo Foi Localizado no Diret¢rio. ERRO! " ) )
RETURN NIL
ENDIF
ENDIF
IF FILE( "C:\NFEPDF\NFE" + ALLTRIM( STR(NFECOD2) + ".PDF" ) ) .OR. ;
FILE( "C:\NFEPDF\NFE" + cChave + ".PDF" ) .OR. ;
FILE( "C:\NFEPDF\CCE" + ALLTRIM( STR(NFECOD2) + ".PDF" ) )
cAnexos := "C:\NFEPDF\NFE" + ALLTRIM( STR(NFECOD2) + ".PDF" )
IF .NOT. FILE( cAnexos ) // .PDF GERADO PELA FLEXDOCS 06/05/2013
cAnexos := "C:\NFEPDF\NFE" + cChave + ".PDF"
// NAO TEM .PDF EM C:\NFEPDF GERADO PELA FLEX
IF .NOT. FILE( cAnexos )
cAnexos := ""
ENDIF
ENDIF
cAnexoNfeCAN := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + "-can.xml"
IF .NOT. FILE( cAnexoNfeCAN ) .OR. EMPTY( cAnexoNfeCAN )
cAnexoNfeCAN := ""
ENDIF
nNumCCe := 1
FOR i := 1 to 20 // para pegar sempre a ultima carta de correcao
cAnexoNfeCCe := cPathNFe := + GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
IF .NOT. EMPTY( cAnexoNfeCCe )
nNumCCe := nNumCCe + 1
cAnexoNfeCCe := cPathNFe := GETCURDIR()+ ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
IF FILE( cAnexoNfeCCe ) // SE EXISTIR NO DIR, CONTINUA
CONTINUE
ELSE
nNumCCe := nNumCCe - 1
cAnexoNfeCCe := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
IF .NOT. FILE( cAnexoNfeCCe )
cAnexoNfeCCe := "" // Nao tem nenhuma CCe
ENDIF
EXIT
ENDIF
ENDIF
NEXT
IF .NOT. EMPTY( cAnexoNfeCCe )
cPdfCCeUni := aFindFile( ALLTRIM( cCHAVE ) + "_" + ;
ALLTRIM( STRZERO( nNumCCe, 2 ) ) + "-cce.pdf", ;
cDirExe+"unidanfe\email\anexos" )
IF .NOT. EMPTY( cPdfCCeUni )
cArq2 := cPdfCCeUni[1]
cPdfCCeUni := ALLTRIM( cArq2 )
ELSE // nao achou o arquivo pelo UNIDANFE.EXE, pega gerado manualmente
cPdfCCeUni := "C:\NFEPDF\CCE" + ALLTRIM( STR(NFECOD2) + ".PDF" )
IF .NOT. FILE( cPdfCCeUni ) // NAO ACHOU O ARQUIVO, PARA NAO QUEBRAR
cPdfCCeUni := ""
ENDIF
ENDIF
ELSE
cPdfCCeUni := "" // Para nao quebrar o envio de email
ENDIF
cPdfNfeUni := aFindFile( ALLTRIM( cCHAVE ) + "-danfe.pdf", ;
cDirExe+"unidanfe\email\anexos" )
IF .NOT. EMPTY( cPdfNFeUni )
cArq3 := cPdfNFeUni[1]
cPdfNfeUni := ALLTRIM( cArq3 )
ELSE
cPdfNFeUni := "" // Para nao quebrar o envio de email
cArq := ""
cExt := ""
cPath := ""
cPath := cDirExe+"UNIDANFE\EMAIL\ANEXOS\"
cFile := ALLTRIM( cCHAVE ) + "-danfe.pdf"
aFile := DIRECTORYRECURSE( cPath + cFile )
If Len(aFile)==0
cPdfNFeUni := ""
Else
For nI := 1 to Len( aFile )
hb_FNameSplit( aFile[nI,1], @cPath, @cArq, @cExt )
Next
aFiles := ALLTRIM( cPath+cArq+cExt )
cPdfNFeUni := aFiles
EndIf
ENDIF
IF FILE( cAnexoNfeCAN ) .AND. FILE( cAnexoNfeCCe ) // Adiciona anexo(s) da CCe
IF .NOT. EMPTY( cPdfCCeUni )
NewAnexo := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE
NewAnexo := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSEIF FILE( cAnexoNfeCCe )
IF .NOT. EMPTY( cPdfCCeUni )
IF FILE( cPdfNFeUni )
NewAnexo := { cXml, cAnexos, cAnexoNfeCCe, cPdfCCeUni, cPdfNFeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexos, cAnexoNfeCCe, cPdfCCeUni, cPdfNFeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE // NAO TEM PDF DO UNIDANFE
IF FILE( cAnexos ) .OR. .NOT. EMPTY( cAnexos )
NewAnexo := { cXml, cAnexos, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexos, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE
NewAnexo := { cXml, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ENDIF
ELSE
NewAnexo := { cXml, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSEIF FILE( cAnexoNfeCAN ) // Nota Fiscal Cancelada
NewAnexo := { cXml, cAnexoNfeCAN, cAnexos } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexos } //-> Arquivo para anexar: Aqui e no OutLook
ELSE
NewAnexo := { cXml, cAnexos } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexos } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSE
cAnexoNfeCAN := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + "-can.xml"
IF .NOT. FILE( cAnexoNfeCAN ) .OR. EMPTY( cAnexoNfeCAN )
cAnexoNfeCAN := ""
ENDIF
nNumCCe := 1
FOR i := 1 to 20 // para pegar sempre a ultima carta de correcao
cAnexoNfeCCe := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
IF .NOT. EMPTY( cAnexoNfeCCe )
nNumCCe := nNumCCe + 1
cAnexoNfeCCe := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
IF FILE( cAnexoNfeCCe ) // SE EXISTIR NO DIR, CONTINUA
CONTINUE
ELSE
nNumCCe := nNumCCe - 1
cAnexoNfeCCe := cPathNFe := GETCURDIR() + ;
"\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
"-CCe"+ALLTRIM(STR(nNumCCe))+".xml"
IF .NOT. FILE( cAnexoNfeCCe )
cAnexoNfeCCe := "" // Nao tem nenhuma CCe
ENDIF
EXIT
ENDIF
ENDIF
NEXT
IF .NOT. EMPTY( cAnexoNfeCCe )
cPdfCCeUni := aFindFile( ALLTRIM( cCHAVE ) + "_" + ;
ALLTRIM( STRZERO( nNumCCe, 2 ) ) + "-cce.pdf", ;
cDirExe+"unidanfe\email\anexos" )
IF .NOT. EMPTY( cPdfCCeUni )
cArq2 := cPdfCCeUni[1]
cPdfCCeUni := ALLTRIM( cArq2 )
ELSE
cPdfCCeUni := ""
ENDIF
ELSE
cPdfCCeUni := ""
ENDIF
cPdfNfeUni := aFindFile( ALLTRIM( cCHAVE ) + "-danfe.pdf", ;
cDirExe+"unidanfe\email\anexos" )
IF .NOT. EMPTY( cPdfNFeUni )
cArq3 := cPdfNFeUni[1]
cPdfNfeUni := ALLTRIM( cArq3 )
ELSE
cArq := ""
cExt := ""
cPath := ""
cPath := cDirExe+"UNIDANFE\EMAIL\ANEXOS\"
cFile := ALLTRIM( cCHAVE ) + "-danfe.pdf"
aFile := DIRECTORYRECURSE( cPath + cFile )
If Len(aFile)==0
cPdfNFeUni := ""
Else
For nI := 1 to Len( aFile )
hb_FNameSplit( aFile[nI,1], @cPath, @cArq, @cExt )
Next
aFiles := ALLTRIM( cPath+cArq+cExt )
cPdfNFeUni := aFiles
EndIf
ENDIF
IF FILE( cAnexoNfeCAN ) .AND. FILE( cAnexoNfeCCe ) // Adiciona anexo(s) da CCe
IF .NOT. EMPTY( cPdfNFeUni )
IF .NOT. EMPTY( cPdfCCeUni )
NewAnexo := { cXml, cAnexoNfeCAN, cAnexoNfeCCe, cPdfCCeUni, cPdfNFeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexoNfeCCe, cPdfCCeUni, cPdfNFeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE
NewAnexo := { cXml, cAnexoNfeCAN, cAnexoNfeCCe, cPdfNFeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexoNfeCCe, cPdfNFeUni } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSEIF .NOT. EMPTY( cPdfCCeUni )
NewAnexo := { cXml, cAnexoNfeCAN, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE
NewAnexo := { cXml, cAnexoNfeCAN, cAnexoNfeCCe } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN, cAnexoNfeCCe } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSEIF FILE( cAnexoNfeCAN ) // Adiciona anexo(s) da cancelada - somente
NewAnexo := { cXml, cAnexoNfeCAN } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCAN } //-> Arquivo para anexar: Aqui e no OutLook
ELSEIF .NOT. EMPTY( cAnexoNfeCCe ) // Adiciona anexo(s) da CCe e .PDF
IF .NOT. EMPTY( cPdfNFeUni ) // .pdf gerado no UNIDANFE.EXE
IF .NOT. EMPTY( cPdfCCeUni ) // vai os 4 anexos
NewAnexo := { cXml, cAnexoNfeCCe, cPdfCCeUni, cPdfNFeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCCe, cPdfCCeUni, cPdfNFeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE // NAO TEM O .PDF GERADO NO UNIDANFE.EXE
NewAnexo := { cXml, cAnexoNfeCCe, cPdfNFeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCCe, cPdfNFeUni } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSEIF .NOT. EMPTY( cPdfCCeUni )
NewAnexo := { cXml, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCCe, cPdfCCeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE
NewAnexo := { cXml, cAnexoNfeCCe } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cAnexoNfeCCe } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ELSEIF FILE( cPdfNFeUni )
NewAnexo := { cXml, cPdfNFeUni } //-> Arquivo para anexar - Email direto
aFiles := { cXml, cPdfNFeUni } //-> Arquivo para anexar: Aqui e no OutLook
ELSE // Nao tem nota fiscal cancelada - nem PDF ainda
NewAnexo := { cXml } //-> Arquivo para anexar - Email direto
aFiles := { cXml } //-> Arquivo para anexar: Aqui e no OutLook
ENDIF
ENDIF
ccxml := ALLTRIM( cChave ) + "nfe.xml" // Mostra o anexo na tela
IF lOutLook
oMail:=TMail():New( cSubject , ;
cNoteText , ;
cMsgType , ;
cConversationID, ;
dDate , ;
cTime , ;
lReceipt , ;
lFromUser , ;
aOrigin , ;
aRecipients , ;
aFiles )
oMail:Activate()
IF oMail:nRetCode != 0
IF oMail:nRetCode=1
MsgAlert("Email Cancelado","Email")
ELSE
MsgAlert("A mensagem não foi enviada."+CRLF+CRLF+;
"Codigo do Erro: "+LTRIM(STR(oMail:nRetCode))+" : "+;
MAPI_ERROR(oMail:nRetCode), "Erro de Envio" )
ENDIF
ENDIF
oMail:End()
ELSE // EMAIL DIRETO PELO PROGRAMA
IF FILE( "dadosmail.dat" )
cDados := StrTran(MemoRead( "dadosmail.dat" ), "@hotmail.com", "")
cUser := Memoline( cDados, 250, 1)
cNomeUsuario := ALLTRIM( cUser ) // Nome do usuario para guardar
cRemt := Memoline( cDados, 250, 2)
IF MlCount( cDados, 250 ) >= 3
nServ := VAL(ALLTRIM(Memoline(cDados, 250, 3)))
ENDIF
IF MlCount( cDados, 250 ) >= 4
IF ALLTRIM(ALLTRIM(Memoline(cDados, 250, 4))) = "0"
lCheck := .F.
ELSE
lCheck := .T.
ENDIF
ENDIF
ENDIF
ArqsDBF() // Criacao e abertura dos DBFS
// Banco de dados dos Servidores de Email
SELECT( DbServidor:cAlias )
SET INDEX TO NOMEUSUA // Por nome do Usuario
SER := ALIAS() //-> ALIAS de: SERVIDOR.DBF
SELECT( SER )
DBGOTOP()
SEEK cUser
// Impedir que continue se nao tiver usuario cadastrado ainda
IF .NOT. FOUND()
CLOSE DATABASES
ABRENFEDBFS() // Paulo 24/08/2009
lNewAnexoVemdaNFe := .F.
SELECT CADNFE
RETURN( .F. )
ENDIF
rCampo := DECRYPT( ALLTRIM(( SER )->SENHACONTA ), "*+-." )
cPass := ALLTRIM( rCampo )
cServPOP3 := ALLTRIM( ( SER )->SEMAILPOP3 ) // Alfa
cServSMTP := ALLTRIM( ( SER )->SEMAILSMTP ) // Alfa
nServPORT := ( ( SER )->NPORTASERV ) // Numerico
cServSEGU := ( ( SER )->CONEXAOSEG ) // Https/SSL?
aServs := { { cServPop3, cServSMTP, nServPORT, cServSEGU } }
cNomeUsuario := ALLTRIM( LOWER( cRemt ) ) + ;
ALLTRIM( LOWER( cServPOP3 ) )
lNewAnexoVemdaNFe := .T.
// Pega o servidor
FOR i := 1 to LEN( aServs )
AADD( aDomin, aServs[i][1] )
NEXT
IF nServ = 0 .OR. nServ > LEN(aServs)
nServ := 1
ENDIF
DEFINE BRUSH oBrush RESOURCE "LOGO2"
DEFINE ICON oIco NAME "ICONE"
DEFINE FONT oFont1 NAME "Ms Sans Serif" SIZE 0, -12 BOLD
DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, 14 BOLD
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD
DEFINE DIALOG oDlgEnv RESOURCE "DLG_TIPO_OUTLOOK" TITLE ALLTRIM(cTitle);
ICON oIco COLORS CLR_BLACK, CLR_WHITE TRANSPARENT
oDlgEnv:lHelpIcon := .F.
For IDCor = 401 To 412 // Os ID's dos TEXTOS na DIALOG.
REDEFINE SAY ID IDCor OF oDlgEnv ;
COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFont1 TRANSPARENT
Next IDCor
For IDCor = 413 To 413 // Os ID's dos TEXTOS na DIALOG.
REDEFINE SAY ID IDCor OF oDlgEnv ;
COLORS CLR_VERMELHO, CLR_WHITE UPDATE FONT oFont1 TRANSPARENT
Next IDCor
REDEFINE GET aGet[1] VAR cNomeUsuario ID 20 OF oDlgEnv FONT oFont1 ;
UPDATE PICTURE "@" COLORS CLR_BLACK, CLR_WHITE WHEN( .F. )
REDEFINE GET oGet[4] VAR cDest ID 21 OF oDlgEnv MEMO ;
FONT oFont1 UPDATE COLORS CLR_BLACK, CLR_WHITE ;
VALID( CHECA_GET_Dest( ALLTRIM( cDest ) ) ) // ESTA EM RMAIL.PRG
oGet[4]:cToolTip := OemToAnsi( "Para: Contato(Email) " + ;
"Campo Obrigat¢rio " )
oGet[4]:bKeyDown:={|nKey|IF(nKey==VK_RETURN, VER_FOCO_GET4( oGet ),)}
REDEFINE BITMAP oIncEmail ID 120 RESOURCE "BUSCAR" OF oDlgEnv ADJUST ;
TRANSPARENT ;
ON CLICK( INCLUI( oGet[4], @cDest ), xFocus( oGet[4] ) )
oIncEmail:cToolTip := OemToAnsi( "Pegar o Contato(Email) Campo Obrigat¢rio ")
oIncEmail:lToolTipBallon := .T.
oIncEmail:nTooltipWidth := 100 // 100
oIncEmail:nTooltipTexColor := nRGB( 000, 000, 000 )
oIncEmail:nTooltipBKColor := nRGB( 250, 250, 250 )
oIncEmail:cTooltipTitle := OemToAnsi( "Pegar o Contato(Email) Campo Obrigat¢rio ")
oIncEmail:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oIncEmail:nSetDelayType := 2
oIncEmail:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
REDEFINE GET oGet[5] VAR cCC ID 22 OF oDlgEnv MEMO ;
FONT oFont1 UPDATE COLORS CLR_BLACK, CLR_WHITE
oGet[5]:cToolTip := OemToAnsi( "Contato(Email) " + ;
"Para Enviar com C¢pia " )
oGet[5]:bKeyDown:={|nKey|IF(nKey==VK_RETURN, VER_FOCO_GET5( oGet ), ;
IF(nKey==VK_UP, oGet[4]:SetFocus(), ) ) }
REDEFINE BITMAP oInccCC ID 121 RESOURCE "BUSCAR" OF oDlgEnv ADJUST ;
TRANSPARENT ;
ON CLICK( INCLUI( oGet[5], @cCC ), xFocus( oGet[5] ) )
oInccCC:cToolTip := OemToAnsi( "Pegar o Contato(Email) Para Enviar com C¢pia ")
oInccCC:lToolTipBallon := .T.
oInccCC:nTooltipWidth := 100 // 100
oInccCC:nTooltipTexColor := nRGB( 000, 000, 000 )
oInccCC:nTooltipBKColor := nRGB( 250, 250, 250 )
oInccCC:cTooltipTitle := OemToAnsi( "Pegar o Contato(Email) Para Enviar com C¢pia ")
oInccCC:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oInccCC:nSetDelayType := 2
oInccCC:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
REDEFINE GET oGet[6] VAR cCCO ID 23 OF oDlgEnv MEMO ;
FONT oFont1 UPDATE COLORS CLR_BLACK, CLR_WHITE
oGet[6]:cToolTip := OemToAnsi( "Contato(Email) " + ;
"Para Enviar com C¢pia Oculta " )
oGet[6]:bKeyDown := { |nKey| IF( nKey==VK_RETURN, ( xFocus( oGet[7] ) ), ;
IF( nKey==VK_UP, VER_FOCO_GET6( oGet ), ) ) }
REDEFINE BITMAP oInccCO ID 122 RESOURCE "BUSCAR" OF oDlgEnv ADJUST ;
TRANSPARENT ON CLICK( INCLUI( oGet[6], @cCCO ), xFocus( oGet[6] ) )
oInccCO:cToolTip := OemToAnsi( "Pegar o Contato(Email) Para Enviar com C¢pia Oculta" )
oInccCO:lToolTipBallon := .T.
oInccCO:nTooltipWidth := 100 // 100
oInccCO:nTooltipTexColor := nRGB( 000, 000, 000 )
oInccCO:nTooltipBKColor := nRGB( 250, 250, 250 )
oInccCO:cTooltipTitle := OemToAnsi( "Pegar o Contato(Email) Para Enviar com C¢pia Oculta")
oInccCO:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oInccCO:nSetDelayType := 2
oInccCO:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
REDEFINE GET oGet[7] VAR cAssunto ID 24 OF oDlgEnv MEMO ;
FONT oFont1 UPDATE COLORS CLR_BLACK, CLR_WHITE ;
VALID( CHECA_GET_cAssunto( ALLTRIM( cAssunto ) ) )
oGet[7]:cToolTip := OemToAnsi( "Assunto do Email Campo Obrigat¢rio " )
oGet[7]:bKeyDown:={|nKey|IF(nKey==VK_RETURN, ( xFocus( oEnviar ) ), ;
IF(nKey==VK_UP, oGet[6]:SetFocus(), ) ) }
REDEFINE GET oGet[8] VAR cTxt ID 25 OF oDlgEnv MEMO ;
FONT oFont1 UPDATE COLORS CLR_BLACK, CLR_WHITE ;
VALID .NOT. EMPTY( cTxt )
oGet[8]:cToolTip := OemToAnsi( "Mensagem do Email Para o Destinat rio " )
oGet[8]:bKeyDown:={|nKey|IF(nKey==VK_UP, oGet[7]:SetFocus(),)}
REDEFINE GET oGet[9] VAR ccxml ID 26 OF oDlgEnv ;
FONT oFont1 UPDATE PICTURE "@" COLOR CLR_BLACK, CLR_WHITE ;
VALID( .NOT. EMPTY( ccxml ) )
REDEFINE GET oGet[10] VAR cDirPdf ID 27 OF oDlgEnv FONT oFont1 UPDATE ;
PICTURE "@" COLOR CLR_BLACK, CLR_WHITE WHEN( .F. )
REDEFINE LISTBOX oList VAR nItem ITEMS NewAnexo ID 101 OF oDlgEnv ;
COLORS CLR_BLACK, CLR_WHITE
REDEFINE BITMAP oBmpEmail ID 125 RESOURCE "EMAIL" OF oDlgEnv ADJUST ;
TRANSPARENT
oBmpEmail:cToolTip := OemToAnsi( "Cadastre Seus Contatos "+CRLF+;
"no Quarto BotÆo: " +CRLF+;
"<Configurar/Enviar Email(s)>")
oBmpEmail:lToolTipBallon := .T.
oBmpEmail:nTooltipWidth := 100 // 100
oBmpEmail:nTooltipTexColor := nRGB( 000, 000, 000 )
oBmpEmail:nTooltipBKColor := nRGB( 250, 250, 250 )
oBmpEmail:cTooltipTitle := OemToAnsi( "Cadastre Seus Contatos ")
oBmpEmail:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oBmpEmail:nSetDelayType := 2
oBmpEmail:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
REDEFINE BUTTONBMP oEnviar ID 301 OF oDlgEnv ;
ACTION ( IF( lRet := CONFIG_MAIL(LOWER(ALLTRIM(cUser)),;
ALLTRIM(cPass), LOWER(ALLTRIM(cRemt)), ;
LOWER(ALLTRIM(cDest)), LOWER(ALLTRIM(cCC)), ;
LOWER(ALLTRIM(cCCO)), cTxt, cAssunto ), ;
MsgInfo( "Mensagem Enviada com Sucesso!", ;
"Atenção "),), oDlgEnv:End() ) CANCEL
oEnviar:cToolTip := OemToAnsi( "Enviar o Email ao Destinat rio " )
oEnviar:bWhen := { || .NOT. EMPTY( cUser ) }
REDEFINE BUTTONBMP oSaida2 ID 302 OF oDlgEnv ;
ACTION( oDlgEnv:End() ) CANCEL UPDATE
oSaida2:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" )
REDEFINE BUTTONBMP oEnviaDireto ID 303 OF oDlgEnv ;
WHEN( lEnviar_Varios_Emails ) ;
ACTION( ENVIA_EMAIL_AUTOMATICO( oEnviar ) ) CANCEL
oEnviaDireto:cToolTip := OemToAnsi( "Enviar Email da NF-e Para o Cliente. "+;
"Automaticamente, Sem Precisar " +;
"Clickar no BotÆo de Enviar. " +;
"Bom trabalho!" )
oEnviaDireto:lToolTipBallon := .T.
oEnviaDireto:nTooltipWidth := 180
oEnviaDireto:nTooltipTexColor := nRGB( 000, 000, 000 )
oEnviaDireto:nTooltipBKColor := nRGB( 250, 250, 250 )
oEnviaDireto:cTooltipTitle := OemToAnsi( "Enviar Email da NF-e Automaticamente" )
oEnviaDireto:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oEnviaDireto:nSetDelayType := 2
oEnviaDireto:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
REDEFINE BUTTONBMP oBtnNewAnexo ID 304 OF oDlgEnv ;
ACTION( ESCOLHER_TIPO_ANEXO( oList ) ) CANCEL
oBtnNewAnexo:cToolTip := OemToAnsi( "Enviar Anexo(s) do Email da " + ;
"NF-e Para o Cliente. " )
oBtnNewAnexo:lToolTipBallon := .T.
oBtnNewAnexo:nTooltipWidth := 180
oBtnNewAnexo:nTooltipTexColor := nRGB( 000, 000, 000 )
oBtnNewAnexo:nTooltipBKColor := nRGB( 250, 250, 250 )
oBtnNewAnexo:cTooltipTitle := OemToAnsi( "Enviar Anexo(s) do Email da NF-e " )
oBtnNewAnexo:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oBtnNewAnexo:nSetDelayType := 2
oBtnNewAnexo:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
REDEFINE BUTTONBMP oBtnExclAnexo ID 305 OF oDlgEnv ;
ACTION( IIF( LEN( NewAnexo ) >= 2, ( oList:Del( nItem ), ;
oList:Refresh() ), ;
MsgInfo( "Sem Anexo(s) Para Excluir ", ;
"Aviso: Cuidado!!! " ) ), TONE( 900, 2 ) )
oBtnExclAnexo:cToolTip := OemToAnsi( "ExclusÆo de Anexo(s), Tome Cuidado" )
oBtnExclAnexo:lToolTipBallon := .T.
oBtnExclAnexo:nTooltipWidth := 180
oBtnExclAnexo:nTooltipTexColor := nRGB( 000, 000, 000 )
oBtnExclAnexo:nTooltipBKColor := nRGB( 250, 250, 250 )
oBtnExclAnexo:cTooltipTitle := OemToAnsi( "ExclusÆo de Anexo(s), Tome Cuidado" )
oBtnExclAnexo:nTooltipIcon := 1 && 0=NONE / 1=TTI_INFO / 2=TTI_WARNING / 3=TTI_ERROR
//-> 0=TTDT_AUTOMATIC / 1=TTDT_RESHOW / 2=TTDT_AUTOPOP / 3=TTDT_INITIAL
oBtnExclAnexo:nSetDelayType := 2
oBtnExclAnexo:nSetDelayTime := 350000 //-> Velocidade do TOOLTIP-> +- 50 Secs
SET FONT OF oEnviar TO oFont
SET FONT OF oSaida2 TO oFont
SET FONT OF oEnviaDireto TO oFont1
SET FONT OF oBtnNewAnexo TO oFont1
SET FONT OF oBtnExclAnexo TO oFont1
SET FONT OF oList TO oFont1
ACTIVATE DIALOG oDlgEnv CENTERED ON INIT( XFOCUS( oGet[4] ) )
oBrush:End()
oFnt:End()
oFont:End()
oFont1:End()
CLOSE DATABASES
ABRENFEDBFS() // Paulo 24/08/2009
ENDIF
lNewAnexoVemdaNFe := .F.
SELECT CADNFE
XFOCUS( oNota )
RETURN( .T. )