This script is part of the SQL Scripts for Microsoft Dynamics GP where I will be posted the scripts I wrote against Microsoft Dynamics GP over the 19 years before I stopped working with Dynamics GP.
This script is the customer equivalent of the ,a href=https://www.azurecurve.co.uk/2021/07/validate-and-insert-update-vendor-emails-in-microsoft-dynamics-gp-from-a-text-file/’>vendor script I posted a while ago; it uses BULK INSERT
to upload a text file and updates the email addresses on the supplied customer and address combinations.
/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (http://www.azurecurve.co.uk)
This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int).
*/
/*
CREATE TEMP ERROR TABLE
*/
CREATE TABLE #Errors
(
Error VARCHAR(1000)
,ROW_ID INT IDENTITY
)
GO
/*
CREATE TEMP TABLE FOR DATA
*/
CREATE TABLE #CUSTOMER_IMPORT
(
CUSTNMBR VARCHAR(30)
,ADRSCODE VARCHAR(30)
,EmailToAddress VARCHAR(230)
,EmailCcAddress VARCHAR(230)
,EmailBccAddress VARCHAR(230)
)
GO
/*
BULK INSERT
*/
BULK INSERT
#CUSTOMER_IMPORT
FROM
'C:\Temp\Customer Address Emails.txt'
WITH
(FIELDTERMINATOR = '\t'
,ROWTERMINATOR = '\n'
,FIRSTROW = 2
)
GO
/*
VALIDATE DATA
*/
--validate parent item
INSERT INTO #Errors
(Error)
--VALUES
(
SELECT
'Customer Address does not exist: ' + CAST(['Import'].CUSTNMBR AS VARCHAR(100)) + ' / ' + CAST(['Import'].ADRSCODE AS VARCHAR(100))
FROM
#CUSTOMER_IMPORT AS ['Import']
LEFT JOIN
RM00101 AS ['RM Customer Address Master'] --RM Customer MSTR (RM00101)
ON
['RM Customer Address Master'].CUSTNMBR = ['Import'].CUSTNMBR
AND
['RM Customer Address Master'].ADRSCODE = ['Import'].ADRSCODE
WHERE
['RM Customer Address Master'].ADRSCODE IS NULL
AND
['Import'].EmailToAddress IS NOT NULL
)
GO
/*
INSERT/UPDATE EMAIL DATA IF NO ERRORS
*/
--insert emails
IF (SELECT COUNT(*) FROM #Errors) = 0
BEGIN
-- UPDATE if Email Details present
UPDATE
SY
SET
SY.EmailToAddress = SY_I.EmailToAddress
,SY.EmailCcAddress = ISNULL(SY_I.EmailCcAddress, '')
,SY.EmailBccAddress = ISNULL(SY_I.EmailBccAddress, '')
FROM
SY01200 SY --Internet Addresses (SY01200)
INNER JOIN
#CUSTOMER_IMPORT AS SY_I
ON
SY_I.CUSTNMBR = SY.Master_ID
AND
SY.Master_Type = 'CUS'
AND
SY.ADRSCODE = SY_I.ADRSCODE
WHERE
SY_I.EmailToAddress IS NOT NULL
-- Insert if no Email Details
INSERT INTO SY01200
(
Master_Type
,Master_ID
,ADRSCODE
,INETINFO
,EmailToAddress
,EmailCcAddress
,EmailBccAddress
)
(
SELECT
'CUS'
,CUSTNMBR
,ADRSCODE
,''
,EmailToAddress
,ISNULL(EmailCcAddress, '')
,ISNULL(EmailBccAddress, '')
FROM
#CUSTOMER_IMPORT AS SY_I
WHERE
SY_I.EmailToAddress IS NOT NULL
AND
(SELECT
COUNT(Master_ID)
FROM
SY01200
WHERE
Master_Type = 'CUS'
AND
Master_ID = SY_I.CUSTNMBR
AND
ADRSCODE = SY_I.ADRSCODE) = 0
)
END
GO
/*
OUTPUT ERRORS
*/
IF (SELECT COUNT(*) FROM #Errors) > 0
SELECT Error FROM #Errors ORDER BY ROW_ID
GO
/*
DROP TEMP TABLES
*/
DROP TABLE #CUSTOMER_IMPORT
GO
DROP TABLE #Errors
GO
Click to show/hide the SQL Scripts for Microsoft Dynamics GP Series Index
What should we write about next?
If there is a topic which fits the typical ones of this site, which you would like to see me write about, please use the form, below, to submit your idea.
Looking for support or consultancy with Microsoft Dynamics GP?
I no longer work with Microsoft Dynamics GP, but the last company I worked for was ISC Software in the UK; if you’re looking for support or consultancy services with Microsoft Dynamics GP you can contact them here.