On the one hand, there is a very simple way to solve cust(+) = trans(+) (full outer join)
SELECT a,b,c,d,... FROM CUST C, TRANS T, ...
WHERE
C.IDa = T.IDa (+)
AND C.IDb = T.IDb (+)
...
UNION -- no UNION ALL
SELECT a,b,c,d,... FROM CUST C, TRANS T, ...
WHERE
C.IDa (+) = T.IDa
AND...