Ponto de Entrada A010TOK Protheus é uma User Function criada para interagir com uma rotina padrão do ERP TOTVS Protheus. Dependendo do momento em que é acionado durante um processamento, ele pode:
- Aprimorar validações feitas pela aplicação;
- Executar ações que dependem das informações atuais do ambiente;
- Substituir um processamento padrão por uma regra específica do cliente.
Descrição: A010TOK – Validação para inclusão ou alteração do Produto.
Programa/Rotina Padrão: MATA010.PRX – Cadastro de Produto
Localizado em: Function A010TudoOK – Função de Validação para inclusão ou alteração do Produto.
Em que ponto: No início das validações após a confirmação da inclusão ou alteração, antes da gravação do Produto; deve ser utilizado para validações adicionais para a INCLUSÃO ou ALTERAÇÃO do Produto..
Sintaxe: A010TOK – Validação para inclusão ou alteração do Produto ( ) –> lExecuta
Referência TDN: https://tdn.totvs.com/pages/releaseview.action?pageId=235596878
Academia Protheus
Sua academia para uma carreira de Sucesso!
Treinamento que Recomendo 👇
Pensando no Mercado de Trabalho com Totvs Protheus, especialmente para ser um Consultor de Negócios e Implantações ? Aqui está o Treinamento que você precisa: https://go.hotmart.com/Q88839526S
Aproveite e inscreva-se em nosso canal do Youtube: https://bit.ly/36keSmP
Exemplo:
#include "totvs.ch" #include "topconn.ch" #include "tbiconn.ch" #DEFINE cEOF Chr(13)+Chr(10) /*-------------------------------------------------------------------------------------------* {Protheus.doc} User Function A010TOK() @type: User Function @author: Jose Moura @site: https://academiaprotheus.com.br @desc.: Ponto de entrada mata010 - (Cadastro de produto) Por boas práticas eu salvo o arquivo como: PE_A010TOK.prw (.tlpp) *-------------------------------------------------------------------------------------------*/ User Function A010TOK() Local _lRet := .T. Local aArea := GetArea() Local cCodPrd := M->B1_COD Local cDesPrd := M->B1_DESC Local cBloqn := M->B1_MSBLQL Local cUsuID := __cUserId Local cUsuari := cUserName Local cMailUsr := "" If .NOT. "SERVICO" $ M->B1_DESC If Empty(M->B1_POSIPI) FWAlertWarning("Produto : " + M->B1_COD + " - NÃO tem NCM cadastrado!!! Favor corrigir ...","Atenção!") _lRet := .F. Endif Endif If cEmpAnt <> "30" RestArea(aArea) Return(_lRet) Else If ! _lRet Return (_lRet) Else If Inclui lIncPrd := .T. If ! __cUserId $ "000001*000005" Replace SB1->B1_XUSUAA With "I"+__cUserId Else PswOrder(1) If PswSeek( Substr(M->B1_XUSUAA,2,6), .T. ) cMailUsr := PswRet(1)[1][14] EndIf Endif Else lIncPrd := .F. If ! __cUserId $ "000001*000005" Replace SB1->B1_XUSUAA With "A"+__cUserId Else PswOrder(1) If PswSeek( Substr(M->B1_XUSUAA,2,6), .T. ) cMailUsr := PswRet(1)[1][14] EndIf Endif Endif If cBloqn <> '1' .And. ! __cUserId $ "000001*000005" Return(.T.) Else ENVMAIL(lIncPrd,cUsuID,cUsuari,cCodPrd,cDesPrd,cBloqn,cMailUsr) Endif Endif Endif RestArea(aArea) Return (_lRet) /* ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±± ±±ºPrograma ³ENVMAIL ºAutor ³Jose Moura º Data ³ 07/06/2019 º±± ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±± ±±ºDesc. ³Ponto de entrada A010TOK -> rotina ENVMAIL ref. inclusao º±± ±±º ³ou alteracao no cadastro de produto º±± ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±± ±±ºUso ³Academia Protheus º±± ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±± ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß */ Static Function ENVMAIL(lIncPrd,cUsuID,cUsuari,cCodPrd,cDesPrd,cBloqn,cMailUsr) Local lResul := .T. Local lResulSend := .T. Local cError := "" Private cTitulo := "Cadastro de Produto - Workflow" Private cServer := GetMv("MV_RELSERV",,"") Private cEmail := GetMv("MV_RELACNT",,"") Private cPass := GetMv("MV_RELPSW",,"") Private lAuth := GetMv("MV_RELAUTH",,.T.) Private cMailAut := Left(cEMail, At("@", cEMail)-1) Private cDe := "[email protected]" //cEmail Private cPara := Trim(GetMV("MV_MAILCON"))// e-mail do contabil ([email protected]) Private cMailFis := Trim(GetMV("MV_MAILFIS"))// e-mail do Fiscal, responsavel por liberar (desbloquear) o produto Private cMailCC := Trim(GetMV("MV_MAILCCC"))// usuarios que incluem ou alteram (cadastro de produto) Private cBCC := "[email protected]" //copia oculta Private cAssunto := "O Produto : "+ cCodPrd +"-"+ Substr(cDesPrd,1,15) +"... - " + " foi " + Iif(lIncPrd,"Incluido","Alterado") Private cAnexo := Space(200) Private cMsg := "O Produto : "+ cCodPrd +"-"+ Substr(cDesPrd,1,15) +"... - " + " foi " + Iif(lIncPrd,"Incluido","Alterado") cHtml := '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' cHtml += '<html><head>' cHtml += ' <title>Workflow Academia Protheus</title>' cHtml += ' <meta content="text/html; charset=windows-1252" http-equiv="Content-Type">' cHtml += ' <style>' cHtml += 'BODY {' cHtml += ' FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;' cHtml += ' FONT-SIZE: 10pt;' cHtml += '}' cHtml += '}' cHtml += 'DIV {' cHtml += ' FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;' cHtml += ' FONT-SIZE: 10pt;' cHtml += '}' cHtml += 'TABLE {' cHtml += ' FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;' cHtml += ' FONT-SIZE: 10pt;' cHtml += '}' cHtml += 'TD {' cHtml += ' FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;' cHtml += ' FONT-SIZE: 10pt;' cHtml += '}' cHtml += 'FORM {' cHtml += ' MARGIN: 0px;' cHtml += '}' cHtml += 'A:link {' cHtml += ' COLOR: #2d2dcb;' cHtml += '}' cHtml += 'A:visited {' cHtml += ' COLOR: #2d2dcb;' cHtml += '}' cHtml += 'A:active {' cHtml += ' COLOR: #2d2dcb;' cHtml += '}' cHtml += 'A:hover {' cHtml += ' COLOR: #2d2dcb;' cHtml += '}' cHtml += 'INPUT {' cHtml += ' FONT-FAMILY: Courier;' cHtml += ' FONT-SIZE: 12px;' cHtml += '}' cHtml += '.TableRowSalmonFormMini {' cHtml += ' BACKGROUND-COLOR: #E4E4E4;' cHtml += ' COLOR: #000000;' cHtml += ' FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;' cHtml += ' FONT-SIZE: 10px;' cHtml += '}' cHtml += '.TableRowWhiteMini2 {' cHtml += ' COLOR: #000000;' cHtml += ' FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;' cHtml += ' FONT-SIZE: 10px;' cHtml += ' VERTICAL-ALIGN: top;' cHtml += '}' cHtml += '.auto-style27 {' cHtml += ' background-color: #626262;' cHtml += '}' cHtml += '.auto-style29 {' cHtml += ' text-align: center;' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += ' font-size: 16pt;' cHtml += ' color: #FFFFFF;' cHtml += '}' cHtml += '.auto-style31 {' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += ' font-size: xx-small;' cHtml += ' color: #FFFFFF;' cHtml += ' margin-top: 0;' cHtml += ' margin-bottom: 0;' cHtml += '}' cHtml += '.auto-style37 {' cHtml += ' text-align: left;' cHtml += '}' cHtml += '.auto-style49 {' cHtml += ' margin-top: 5px;' cHtml += ' margin-bottom: 5px;' cHtml += '}' cHtml += '.auto-style44 {' cHtml += ' color: #000080;' cHtml += '}' cHtml += '.auto-style45 {' cHtml += ' text-align: left;' cHtml += '}' cHtml += '.auto-style46 {' cHtml += ' font-size: small;' cHtml += '}' cHtml += '.auto-style41 {' cHtml += ' font-size: small;' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += '}' cHtml += '.auto-style48 {' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += ' font-size: small;' cHtml += ' background-color: #E5E5E1;' cHtml += ' text-align: left;' cHtml += '}' cHtml += '.auto-style47 {' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += ' font-size: small;' cHtml += ' background-color: #FFFFFF;' cHtml += ' text-align: left;' cHtml += '}' cHtml += '.auto-style50 {' cHtml += ' text-align: left;' cHtml += ' font-size: small;' cHtml += '}' cHtml += '.auto-style52 {' cHtml += ' font-size: medium;' cHtml += '}' cHtml += '.auto-style55 {' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += ' font-size: small;' cHtml += ' background-color: #E5E5E1;' cHtml += '}' cHtml += '.auto-style56 {' cHtml += ' font-family: Arial, Helvetica, sans-serif;' cHtml += ' font-size: medium;' cHtml += ' background-color: #FFFFFF;' cHtml += ' text-align: left;' cHtml += '}' cHtml += '.auto-style57 {' cHtml += ' color: #000080;' cHtml += ' font-size: medium;' cHtml += '}' cHtml += ' </style>' cHtml += ' <meta content="MSHTML 6.00.3790.4237" name="GENERATOR">' cHtml += '</head><body topmargin="8" leftmargin="8">' cHtml += '<div align="center">' cHtml += '<div align="center">' cHtml += '<table border="0" width="100%">' cHtml += ' <tbody>' cHtml += ' <tr>' cHtml += ' <td style="font-size: 8pt; width: 93px;"><img src="\\10.91.1.208\totvs12\Protheus_prd\protheus_data\system\lgrl60.bmp" height="49" width="97"></td>' cHtml += ' <td bgcolor="#626262" style="font-size: 6pt; color: rgb(214, 214, 214); " width="92%"><align="center"><font color="#ffffff" face="Arial" size="1">' cHtml += ' <align="center"><font color="#ffffff" face="Arial" size="1"> </font></align="center"></font></align="center">' cHtml += ' <font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"> </font></font></font>' cHtml += ' <p style="margin-top: 0pt; margin-bottom: 0pt;" align="right"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1">&amp;nbsp;</font></font></font></p>' cHtml += ' <font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"> </font></font></font>' cHtml += ' <div align="center"><font color="#ffffff" face="Arial" size="3"><font color="#ffffff" face="Arial" size="3"><font color="#ffffff" face="Arial" size="3"> &amp;nbsp;<strong>CADASTRO DE PRODUTO</strong></font></font></font></div>' cHtml += ' <align="center"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"> </font></font></font></font></align="center">' cHtml += ' <font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"> </font></font></font></font>' cHtml += ' <p align="right"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1">Academia Protheus - Workflow</font></font></font></font></p>' cHtml += ' <font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"><font color="#ffffff" face="Arial" size="1"> </font></font></font></font></td>' cHtml += ' </tr>' cHtml += ' </tbody>' cHtml += '</table>' cHtml += '<p style="margin-top: 0pt; margin-bottom: 0pt;" align="left">&amp;nbsp;</p>' cHtml += '<font size="4">' cHtml += '<table style="width: 100%;">' cHtml += ' <tbody>' cHtml += ' <tr>' cHtml += ' <td style="width: 380px; height: 23px;" class="auto-style52"> <font class="auto-style52" face="Arial" size="2">Produto: '+'<span class="auto-style44"> <strong>'+cCodPrd+"-"+cDesPrd+'</strong></span></font></td>' cHtml += ' <td class="auto-style45" style="height: 23px;"> <font size="4"> <font class="auto-style46" face="Arial" size="2">Data: <strong>'+ALLTRIM(DTOC(DATE()))+'</strong></font></font></td>' cHtml += ' </tr>' cHtml += ' </tbody>' cHtml += '</table>' cHtml += '<p class="auto-style49" style="height: 0px;">&amp;nbsp;</p>' cHtml += '<font size="2">' cHtml += '<table style="width: 100%;">' cHtml += ' <tbody>' cHtml += ' <tr>' cHtml += ' <td bgcolor="#E5E5E1" style="width: 202px;">Login:</td>' cHtml += ' <td class="auto-style41"><strong>'+cUsuID + "-" +cUsuari + '</strong></td>' cHtml += ' </tr>' cHtml += ' </tbody>' cHtml += '</table>' cHtml += '<table style="width: 100%;">' cHtml += ' <tbody>' cHtml += ' <tr>' cHtml += ' <td bgcolor="#E5E5E1" style="width: 202px;">Status:</td>' cHtml += ' <td class="auto-style41"><strong>' + Iif(lIncPrd,"Inclusão","Alteração")+'</strong></td>' cHtml += ' </tr>' cHtml += ' </tbody>' cHtml += '</table>' cHtml += '<p style="margin-top: 0pt; margin-bottom: 5px;" align="left">&amp;nbsp;</p>' cHtml += '</font> <font size="2">' cHtml += '</font> </font> <br>' cHtml += '<br>' cHtml += '<br>' cHtml += '<p>&amp;nbsp;</p>' cHtml += '</div>' cHtml += '</div>' cHtml += '<div align="center">' cHtml += '<table border="0" cellpadding="0" cellspacing="0" width="100%">' cHtml += ' <tbody>' If __cUserId $ '000186' cHtml += ' <tr>' cHtml += ' <td><font face="Arial" size="2">O Produto acima foi '+Iif(lIncPrd,"Incluido","Alterado")+' e requer sua validação e Liberação!</font></td>' cHtml += ' </tr>' Elseif __cUserId $ '000135*000168' cHtml += ' <tr>' cHtml += ' <td><font face="Arial" size="2">O Produto acima foi '+Iif(lIncPrd,"Incluido","Alterado")+', revisado e já está Liberado!</font></td>' cHtml += ' </tr>' Else If lIncPrd cHtml += ' <tr>' cHtml += ' <td><font face="Arial" size="2">O Produto acima foi '+Iif(lIncPrd,"Incluido","Alterado")+' e requer sua validação!</font></td>' cHtml += ' </tr>' Endif Endif cHtml += ' <tr>' cHtml += ' <td align="center" bgcolor="#e4e4e4"> <img src="pic_invis.gif" height="1" width="1"></td>' cHtml += ' </tr>' cHtml += ' </tbody>' cHtml += '</table>' cHtml += '</div>' cHtml += '<font size="4"><i><font face="Arial" size="1">E-mail automático enviado pelo processo de workflow, Favor não respondê-lo.</font></i></font>' cHtml += '</body></html>' If !Empty(cServer) .And. !Empty(cEmail) .And. !Empty(cPass) // Envia e-mail com os dados necessarios CONNECT SMTP SERVER cServer ACCOUNT cEmail PASSWORD cPass RESULT lResult // Autenticacao da conta de e-mail If lResult If lAuth lResult := MailAuth(cEMail,cPass) EndIf If !lResult lResult := MailAuth(cMailAut,cPass) EndIf If lResult If !__cUserId $ '000001*000005' SEND MAIL ; FROM cEMail ; TO Iif( lIncPrd, cPara, cMailFis ); BCC cBCC ; SUBJECT cAssunto; BODY cHtml ; RESULT lResult Else SEND MAIL ; FROM cEMail ; TO Iif( lIncPrd, cPara, cMailUsr ); BCC cBCC ; SUBJECT cAssunto; BODY cHtml ; RESULT lResult Endif // ATTACHMENT cPathRel+cArqRel ; If !lResult //Erro no Envio do E-Mail. GET MAIL ERROR cError ConOut(cError) EndIf Else //Erro na autenticacao da conta GET MAIL ERROR cError ConOut(cError) Endif Else //Erro na conexao com o SMTP Server GET MAIL ERROR cError ConOut(cError) Endif Endif DISCONNECT SMTP SERVER RETURN()
Analista de sistemas, programador com mais de 18 anos de experiência no sistema Totvs Protheus, administrador, suporte e customizações, idealizador da Academia Protheus, já ajudou centenas de pessoas a programar em AdvPL/Tlpp.
One thought on “Ponto de Entrada A010TOK Produtos Protheus”