Como podemos ajudar?

Bem vindo a nossa página de manuais. Utilize a caixa de pesquisa abaixo para procurar o conteúdo desejado.

Últimos artigos

Enviar e-mail com dados do pedido de venda (SQL)

A DWU fornece um template para uso dos clientes e parceiros. Este template, pode ser modificado de forma livre pelo desenvolvedor.


1. CRIAÇÃO DA PROCEDURE

Criação da PROCEDURE para geração dos dados (exemplo somente SQL):

CREATE PROCEDURE [dbo].[EnviaPedidoPorEmail]
 
	@list_of_cols_val_tab_del INT
AS

BEGIN
	DECLARE @NomeEmpresa VARCHAR(250) = (SELECT OADM.CompnyName FROM OADM)
	DECLARE @DocNum VARCHAR(250)
	DECLARE @Cliente VARCHAR(250)
	DECLARE @TelefoneX VARCHAR(250)
	DECLARE @EmailX VARCHAR(250)
	DECLARE @EnderecoEntrega VARCHAR(250)
	DECLARE @DetalhesEntrega VARCHAR(MAX)
	DECLARE @CEPX VARCHAR(250)
	DECLARE @BairroX VARCHAR(250)
	DECLARE @CidadeX VARCHAR(250)
	DECLARE @EstadoX VARCHAR(250)
	DECLARE @CNPJX VARCHAR(250)
	DECLARE @CPFX VARCHAR(250)
	DECLARE @IEX VARCHAR(250)
	DECLARE @FormaPagamento VARCHAR(250)
	DECLARE @Prazo VARCHAR(250)
	DECLARE @PesoBruto VARCHAR(250)
	DECLARE @PesoLiquido VARCHAR(250)
	DECLARE @CodProduto VARCHAR(250)
	DECLARE @NomeProduto VARCHAR(250)
	DECLARE @Quantidade VARCHAR(250)
	DECLARE @Preco VARCHAR(250)
	DECLARE @TotalProduto VARCHAR(250)
	DECLARE @DespesasAdicionais VARCHAR(250)
	DECLARE @TotalDocumento VARCHAR(250)
	DECLARE @Vendedor VARCHAR(250)
	DECLARE @VendedorId VARCHAR(250)
	DECLARE @Observacoes VARCHAR(250)
	DECLARE @CabecalhoHTML VARCHAR(MAX) = ''
	DECLARE @LinhasHTML VARCHAR(MAX) = ''
	DECLARE @HTML VARCHAR(MAX) = ''
	DECLARE @DestinatariosEmail VARCHAR(MAX)
	DECLARE @DestinatariosCopiaEmail VARCHAR(MAX)

	---------------------------------------------------------------------------------------------
	-- Dados do cabeçalho do documento
	---------------------------------------------------------------------------------------------
	SELECT
		@DocNum = T0.DocNum,
		@Cliente = T0.CardCode + ' - ' + ISNULL(T0.CardName,'') ,--'Cliente',
		@TelefoneX = ISNULL(T3.Phone2,'') + ' ' + ISNULL(T3.Phone1,'') ,--'Telefone',
		@EmailX = ISNULL(T3.E_Mail,'') ,--'Email',
		@EnderecoEntrega = ISNULL(T5.AddrTypeS,'') +' '+ ISNULL(T5.StreetS,'') +', '+ ISNULL(T5.StreetNoS,'') +' - '+ ISNULL(CAST(T5.BuildingS AS VARCHAR(250)),'') ,--'EnderecoEntrega',
		@DetalhesEntrega = CAST(ISNULL(T9.U_DWU_Obs,'') AS VARCHAR(MAX)),
		@CEPX = ISNULL(T5.ZipCodeS,'') ,--'CEP',
		@BairroX = ISNULL(T5.BlockS,'') ,--'Bairro',
		@CidadeX = ISNULL(T5.CityS,'') ,--'Cidade',
		@EstadoX = ISNULL(T5.StateS,'') ,--'Estado',
		@CNPJX = ISNULL(T4.TaxId0,'') ,--'CNPJ',
		@CPFX = ISNULL(T4.TaxId4,'') ,--'CPF',
		@IEX = ISNULL(T4.TaxId1,'') ,--'IE',
		@FormaPagamento = ISNULL(T6.Descript,'') ,--'FormaPagamento',
		@Prazo = ISNULL(T7.PymntGroup,'') ,--'Prazo',
		@PesoBruto = ISNULL(FORMAT(T5.GrsWeight,'N','pt-BR'),0),--'Peso Bruto',
		@PesoLiquido = ISNULL(FORMAT(T5.NetWeight,'N','pt-BR'),0),--'PesoLiquido',
		@TotalDocumento = REPLACE(FORMAT(T0.DocTotal,'C','pt-BR'), 'R$', '') ,--'TotalDocumento',
		@Vendedor = ISNULL(T2.SlpName,'') ,--'Vendedor',
		@VendedorId = T2.SlpCode ,--'VendedorId',
		@Observacoes = ISNULL(CAST(T0.Comments AS VARCHAR(250)),'') ,--'Observacoes',
		@DespesasAdicionais = REPLACE(FORMAT(ISNULL(SUM(T8.LineTotal),0),'C','pt-BR'), 'R$', '') --'DespesasAdicionais'
	FROM 
		ORDR T0
		LEFT JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
		LEFT JOIN OSLP T2 ON T2.SlpCode = T0.SlpCode
		LEFT JOIN OCRD T3 ON T3.CardCode = T0.CardCode
		LEFT JOIN CRD7 T4 ON T4.CardCode = T0.CardCode AND T4.Address = T0.ShipToCode AND T4.AddrType = 'S'
		LEFT JOIN RDR12 T5 ON T5.DocEntry = T0.DocEntry
		LEFT JOIN OPYM T6 ON T6.PayMethCod = T0.PeyMethod
		LEFT JOIN OCTG T7 ON T7.GroupNum = T0.GroupNum
		LEFT JOIN RDR3 T8 ON T8.DocEntry = T0.DocEntry
		LEFT JOIN CRD1 T9 ON T9.CardCode = T0.CardCode AND T9.Address = T0.ShipToCode
	WHERE T0.DocEntry = @list_of_cols_val_tab_del
	GROUP BY
		T0.DocNum,
		T0.CardCode + ' - ' + ISNULL(T0.CardName,''),
		ISNULL(T3.Phone2,'') + ' ' + ISNULL(T3.Phone1,''),
		ISNULL(T3.E_Mail,''),
		ISNULL(T5.AddrTypeS,'') +' '+ ISNULL(T5.StreetS,'') +', '+ ISNULL(T5.StreetNoS,'') +' - '+ ISNULL(CAST(T5.BuildingS AS VARCHAR(250)),''),
		CAST(ISNULL(T9.U_DWU_Obs,'') AS VARCHAR(MAX)),
		ISNULL(T5.ZipCodeS,''),
		ISNULL(T5.BlockS,''),
		ISNULL(T5.CityS,''),
		ISNULL(T5.StateS,''),
		ISNULL(T4.TaxId0,''),
		ISNULL(T4.TaxId4,''),
		ISNULL(T4.TaxId1,''),
		ISNULL(T6.Descript,''),
		ISNULL(T7.PymntGroup,''),
		ISNULL(FORMAT(T5.GrsWeight,'N','pt-BR'),0),
		ISNULL(FORMAT(T5.NetWeight,'N','pt-BR'),0),
		REPLACE(FORMAT(T0.DocTotal,'C','pt-BR'), 'R$', ''),
		ISNULL(T2.SlpName,''),
		T2.SlpCode,
		ISNULL(CAST(T0.Comments AS VARCHAR(250)),'')



	---------------------------------------------------------------------------------------------
	-- Definição de destinatários do e-mail (e-mail principal do PN, e-mails do vendedor e e-mail do gerente do vendedor)
	---------------------------------------------------------------------------------------------
	SET @DestinatariosEmail =
		(SELECT ISNULL(E_Mail,'') FROM OCRD WHERE CardCode = (SELECT CardCode FROM ORDR WHERE DocEntry = @list_of_cols_val_tab_del)) +';'+
		(SELECT ISNULL(E_Mail,'') FROM OUSR WHERE USERID = (SELECT userId FROM OHEM WHERE salesPrson = @VendedorId))
	SET @DestinatariosCopiaEmail = (SELECT ISNULL(E_Mail,'vazio') FROM OUSR WHERE USERID = (SELECT userId FROM OHEM WHERE EmpId = (SELECT manager FROM OHEM WHERE salesPrson = @VendedorId)))

	----------------------------------------------------------------------------------------------------------------------------------
	-- Caso email do cliente não esteja preenchido, definir e-mail da empresa
	----------------------------------------------------------------------------------------------------------------------------------
	IF @DestinatariosEmail IS NULL
	BEGIN
		SET @DestinatariosEmail = 'email@empresa.com.br'
	END
	----------------------------------------------------------------------------------------------------------------------------------
	---------------------------------------------------------------------------------------------
	-- Inicia HTML do e-mail com valores do cabeçalho
	---------------------------------------------------------------------------------------------
	SET @CabecalhoHTML = 
	'
			<table style="height: 186px;" border="5" width="892" rules="none" cellpadding="10">
			<tbody>
			<tr>
			<td style="width: 881.758px;">
			<table style="width: 880px;">
			<tbody>
			<tr>
			<td style="width: 244.91px;"><img src="http://www.dwu.com.br/wp-content/uploads/2020/07/DWU-logo-1.png" alt="" width="228" height="63" /></td>
			<td style="width: 30.0898px;">&nbsp;</td>
			<td style="width: 593px;">
			<h1 style="text-align: center;">'+@NomeEmpresa+'</h1>
			</td>
			</tr>
			</tbody>
			</table>
			<h2><br />
			&nbsp; O documento <span style="color: #808080;">'+@DocNum+'</span> foi gerado&nbsp;no valor total de <span style="color: #808080;">R$ '+@TotalDocumento+'</h2>
			<p>&nbsp;</p>
			<table style="width: 875px;" cellpadding="5">
			<tbody>
			<tr>
			<td style="width: 139px;"><strong>Cliente:&nbsp;</strong></td>
			<td style="width: 1501.13px;">'+@Cliente+'</td>
			<td style="width: 204.867px;"><strong>Telefone:&nbsp;</strong></td>
			<td style="width: 173px;">'+@TelefoneX+'</td>
			</tr>
			<tr>
			<td style="width: 139px;"><strong>Endere&ccedil;o:&nbsp;</strong></td>
			<td style="width: 1501.13px;">'+@EnderecoEntrega+'</td>
			<td style="width: 204.867px;"><strong>CEP:&nbsp;</strong></td>
			<td style="width: 173px;">'+@CEPX+'</td>
			</tr>
			<tr>
			<td style="width: 139px;"><strong>Cidade:&nbsp;</strong></td>
			<td style="width: 1501.13px;">'+@CidadeX+'</td>
			<td style="width: 204.867px;"><strong>UF:&nbsp;</strong></td>
			<td style="width: 173px;">'+@EstadoX+'</td>
			</tr>
			<tr>
			<td style="width: 139px;"><strong>CNPJ:&nbsp;</strong></td>
			<td style="width: 1501.13px;">'+@CNPJX+@CPFX+'</td>
			<td style="width: 204.867px;"><strong>IE:&nbsp;</strong></td>
			<td style="width: 173px;">'+@IEX+'</td>
			</tr>
			<tr>
			<td style="width: 139px;"><strong>Forma de pagamento:&nbsp;</strong></td>
			<td style="width: 1501.13px;"><strong>'+@FormaPagamento+'</strong></td>
			<td style="width: 204.867px;"><strong>Prazo:&nbsp;</strong></td>
			<td style="width: 173px;">'+@Prazo+'</td>
			</tr>
			<tr>
			<td style="width: 139px;"><strong>Peso Bruto:&nbsp;</strong></td>
			<td style="width: 1501.13px;">'+@PesoBruto+' KG</td>
			<td style="width: 204.867px;"><strong>Peso L&iacute;quido:&nbsp;</strong></td>
			<td style="width: 173px;">'+@PesoLiquido+' KG</td>
			</tr>
			</tbody>
			</table>
			<p>&nbsp;</p>
			<h2>&nbsp;Itens do documento:</h2>
			<table style="width: 875px;" border="1" rules="rows" cellpadding="5">
			<thead>
			<tr>
			<td style="width: 70px;"><strong>C&oacute;digo</strong></td>
			<td style="width: 342.832px;"><strong>Descri&ccedil;&atilde;o</strong></td>
			<td style="width: 64.168px; text-align: right;"><strong>Qtd</strong></td>
			<td style="width: 139px; text-align: right;"><strong>Pre&ccedil;o</strong></td>
			<td style="width: 220px; text-align: right;"><strong>Total</strong></td>
			</tr>
			</thead>
			<tbody>
	'

	---------------------------------------------------------------------------------------------
	-- Consulta linhas do documento
	---------------------------------------------------------------------------------------------
	--Declaração do cursor      
	DECLARE carrCursor CURSOR FOR
	SELECT
	--Campos que tu quer verificar 
		T1.ItemCode 'CodProduto',
		T1.Dscription 'NomeProduto',
		CAST(T1.Quantity AS INT) 'Quantidade',
		REPLACE(FORMAT(T1.PriceBefDi,'C','pt-BR'), 'R$', '') 'Preco',
		REPLACE(FORMAT(T1.LineTotal,'C','pt-BR'), 'R$', '') 'TotalProduto'
	FROM 
		ORDR T0
		INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
	WHERE T0.DocEntry = @list_of_cols_val_tab_del
	-- Abre cursos
	OPEN carrCursor
				 
	FETCH NEXT FROM carrCursor 
	INTO 
		@CodProduto,
		@NomeProduto,
		@Quantidade,
		@Preco,
		@TotalProduto

	WHILE (@@FETCH_STATUS=0)
		BEGIN
			----------------------------------------------------------------------------------------------------------------------------------
			-- Insere linhas da tabela do documento
			----------------------------------------------------------------------------------------------------------------------------------
			SET @LinhasHTML = @LinhasHTML + '<tr>'
			SET @LinhasHTML = @LinhasHTML + '<td style="width: 70px;">'+@CodProduto+'</td>'
			SET @LinhasHTML = @LinhasHTML + '<td style="width: 342.832px;">'+@NomeProduto+'</td>'
			SET @LinhasHTML = @LinhasHTML + '<td style="width: 64.168px; text-align: right;">'+@Quantidade+'</td>'
			SET @LinhasHTML = @LinhasHTML + '<td style="width: 139px; text-align: right;">R$ '+@Preco+'</td>'
			SET @LinhasHTML = @LinhasHTML + '<td style="width: 220px; text-align: right;">R$ '+@TotalProduto+'</td>'
			SET @LinhasHTML = @LinhasHTML + '</tr>'
			----------------------------------------------------------------------------------------------------------------------------------
			FETCH NEXT FROM carrCursor 
			INTO 
			@CodProduto,
			@NomeProduto,
			@Quantidade,
			@Preco,
			@TotalProduto
		END
			
		CLOSE carrCursor
		DEALLOCATE carrCursor

		SET @LinhasHTML = @LinhasHTML + 
		'	
			</tbody>
			</table>
			<table style="width: 875px;" cellpadding="5">
			<thead>
			<tr>
			<td style="width: 640.422px; text-align: right;"><strong>Despesas adicionais:</strong></td>
			<td style="width: 219.578px; text-align: right;">R$ '+@DespesasAdicionais+'</td>
			</tr>
			</thead>
			<tbody>
			<tr>
			<td style="width: 640.422px; text-align: right;"><strong>Total:</strong></td>
			<td style="width: 219.578px; text-align: right;"><strong>R$ '+@TotalDocumento+'</strong></td>
			</tr>
			</tbody>
			</table>
			<table style="width: 876px;" cellpadding="5">
			<thead>
			<tr>
			<td style="width: 124.902px;"><strong>Obs. de entrega:</strong></td>
			<td style="width: 736.098px;">'+@DetalhesEntrega+'</td>
			</tr>
			<tr>
			<td style="width: 124.902px;"><strong>Vendedor:</strong></td>
			<td style="width: 736.098px;">'+@Vendedor+'</td>
			</tr>
			<tr>
			<td style="width: 124.902px;"><strong>Data de envio:</strong></td>
			<td style="width: 736.098px;">'+(SELECT CONVERT(VARCHAR(10),GETDATE(),103))+' às '+ (SELECT LEFT(CAST(getdate() AS TIME),8)) +'</td>
			</tr>
			</thead>
			</table>
			<p>&nbsp;</p>
			<p><strong>Atenciosamente</strong></p>
			<p><strong>'+@NomeEmpresa+'</strong></p>
			<p>&nbsp;</p>
			<p>&nbsp;</p>
			<p><em>Enviado por&nbsp;</em></p>
			<p><a href="http://www.dwu.com.br"><strong><img src="http://www.dwu.com.br/wp-content/uploads/2020/06/Logo_CRMOne_Horizontal.png" alt="" width="165" height="35" /></strong></a></p>
			</td>
			</tr>
			</tbody>
			</table>			
		'

		SET @HTML = @CabecalhoHTML + @LinhasHTML

		
		----------------------------------------------------------------------------------------------------------------------------------
		-- Insere dados na tabela de envio de e-mail
		----------------------------------------------------------------------------------------------------------------------------------
		INSERT INTO [dbo].[@DWU_MAIL_SER]
			(
			 [Code]
			,[Name]
			,[U_ObjType]
			,[U_ObjEntry]
			,[U_Assunto]
			,[U_Destinatario]
			,[U_Copia]
			,[U_CopiaOculta]
			,[U_CaminhoAnexo]
			,[U_TextoHTML]
			,[U_AssinaturaHTML]
			,[U_Status]
			,[U_Obs1]
			,[U_Obs2]
			,[U_Obs3]
			,[U_DataProg]
			,[U_HoraProg])
		VALUES
			((select REPLACE(convert(varchar, getdate(), 23),'-','')+REPLACE(convert(varchar, getdate(), 14),':',''))
			,(select REPLACE(convert(varchar, getdate(), 23),'-','')+REPLACE(convert(varchar, getdate(), 14),':',''))
			,'17'
			,@list_of_cols_val_tab_del
			,'[CRM One] Olá! Seu documento número ' + CAST(@list_of_cols_val_tab_del AS VARCHAR(100)) + ' foi gerado e já está sendo processado.'
			,@DestinatariosEmail
			,@DestinatariosCopiaEmail
			,''
			,''
			,@HTML
			,''
			,'N'
			,''
			,''
			,''
			,''
			,''
			)

END

---------------------------------------------------------------------------------------------------------------------------







2. TRANSACTION

Após a criação da PROCEDURE acima, basta implementar a chamada dela na transaction notification do SAP Business One conforme abaixo:

----------------------------------------------------------------------------------------------------------------------------------
-- ENVIO DE EMAIL COM PEDIDO DE VENDA PARA CLIENTE, VENDEDOR E GERENTE
----------------------------------------------------------------------------------------------------------------------------------
IF (@object_type in ('17') and @transaction_type in ('A'))
BEGIN 
	EXEC EnviaPedidoPorEmail @list_of_cols_val_tab_del
END

3. RESULTADO FINAL

O resultado FINAL será um e-mail no seguinte formato:


IMPORTANTE

IMPORTANTE: Para uso no HANA, basta desenvolver no formato/sintaxe do HANA que funcionará da mesma maneira exemplificada acima.

Esse artigo foi útil?
5 out Of 5 Stars
5 Stars 100%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
Como podemos melhorar este artigo?
Precisa de ajuda?
Índice