This is an old revision of the document!


Control SQL - Order Deposit Integrity Check

This SQL compares the deposits on orders found in the GL to the deposits found in the TransHeader databse.

None. This is a selection query and no data is modified in the running of it.

SELECT 
	(SELECT DivisionName 
		FROM Division 
		WHERE A.DivisionID = Division.ID) AS Division,
	(SELECT OrderNumber 
		FROM TransHeader 
		WHERE ID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS OrderNumber,
	GLCredit, 
	(SELECT PaymentTotal
		FROM TransHeader 
		WHERE ID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS PaymentTotal,
	COALESCE(GLCredit, 0) - COALESCE(B.PaymentTotal, 0) Difference, 
	(SELECT StatusText
		FROM TransHeader 
		WHERE ID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS StatusText,
	COALESCE(THTransHeaderID, GLTransHeaderID) AS TransHeaderID,
	(SELECT MAX(EntryDateTime) 
		FROM GL GL2 
		WHERE GL2.TransactionID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS LastGLEntryDate
FROM
(
	SELECT COALESCE(DivisionID, 10) AS DivisionID,
		TransactionID AS GLTransHeaderID, 
		-SUM(Amount) GLCredit
	FROM GL
	WHERE GLAccountID = 24 
	GROUP BY COALESCE(DivisionID, 10), TransactionID
	HAVING SUM(Amount)  0
) AS A
FULL JOIN
(
	SELECT 	ID AS THTransHeaderID, 
		OrderNumber, 
		PaymentTotal, 
		StatusText
	FROM TransHeader
	WHERE StatusID IN (1,2) AND (PaymentTotal  0)
) AS B ON A.GLTransHeaderID = B.THTransHeaderID
WHERE COALESCE(A.GLCredit, 0)  COALESCE(B.PaymentTotal, 0)
ORDER BY Division, OrderNumber

This version should work even for companies using progress billing - but check first.

SELECT 
	(SELECT DivisionName AS Division 
		FROM EmployeeGroup 
		WHERE A.DivisionID = EmployeeGroup.ID) AS Division,
	(SELECT OrderNumber 
		FROM TransHeader 
		WHERE ID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS OrderNumber,
	GLCredit, 
	(SELECT (PaymentTotal - (TotalPrice * PercentComplete/100)) 
		FROM TransHeader 
		WHERE ID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS DepositAmount,
	COALESCE(GLCredit, 0) - COALESCE(B.DepositAmount, 0) Difference, 
	(SELECT StatusText
		FROM TransHeader 
		WHERE ID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS StatusText,
	COALESCE(THTransHeaderID, GLTransHeaderID) AS TransHeaderID,
	PercentComplete,
	(SELECT MAX(EntryDateTime) 
		FROM GL GL2 
		WHERE GL2.TransactionID = COALESCE(THTransHeaderID, GLTransHeaderID)) AS LastGLEntryDate
FROM
(
	SELECT COALESCE(DivisionID, 10) AS DivisionID,
		TransactionID AS GLTransHeaderID, 
		-SUM(Amount) GLCredit
	FROM GL
	WHERE GLAccountID = 24 
	GROUP BY COALESCE(DivisionID, 10), TransactionID
	HAVING SUM(Amount)  0
) AS A
FULL JOIN
(
	SELECT 	ID AS THTransHeaderID, 
		OrderNumber, 
		(PaymentTotal- (TotalPrice * PercentComplete/100)) AS DepositAmount, 
		StatusText,
		PercentComplete
	FROM TransHeader
	WHERE StatusID IN (1,2) AND ((PaymentTotal- (TotalPrice * PercentComplete/100)) > 0)
) AS B ON A.GLTransHeaderID = B.THTransHeaderID
WHERE COALESCE(A.GLCredit, 0)  COALESCE(B.DepositAmount, 0)
ORDER BY Division, OrderNumber
  • Entered : 6/2/2015
  • Version : Control 4.3
You could leave a comment if you were logged in.