Невозможно выполнить правое / левое соединение с двумя таблицами, и иметь обязательное значение для поля этой таблицы в одном и том же выборе.
Ваша проблема не в синтаксисе (+ или JOIN), а в выборе.
Вы пытаетесь получить внешнее соединение в WORK_ORDER и IBT_LINE, но вы говорите оракулу сделать полное соединение с этим предложением:
....
AND WORK_ORDER.WAREHOUSE_ID = 'MEX-04' И WORK_ORDER.STATUS = 'R'
Вы можете попробовать подвыбрать в своем ОТ,
....
FROM
CUSTOMER_ORDER, IBT, IBT_LINE,PART,
(SELECT SUBSTR(WORK_ORDER.USER_1, 0, INSTR(WORK_ORDER.USER_1, '-', +1, 3)-1) user_1_formatted
from WORK_ORDER
where WORK_ORDER.WAREHOUSE_ID ='MEX-04'
AND WORK_ORDER.STATUS ='R') sub_work_order
WHERE
CUSTOMER_ORDER.ID = REPLACE(IBT.ID,'X','C')
AND IBT.ID = IBT_LINE.IBT_ID
AND IBT_LINE.PART_ID=PART.ID
AND SUBSTR(IBT_LINE.USER_1, 0, INSTR(IBT_LINE.USER_1, '-', +1, 3)-1) = sub_work_order.user_1_formatted(+)
или вложенный выбор, а затем отфильтруйте результаты по своему желанию.
select *
from (select ... from
CUSTOMER_ORDER, IBT, IBT_LINE,PART, WORK_ORDER
WHERE
CUSTOMER_ORDER.ID = REPLACE(IBT.ID,'X','C')
AND IBT.ID = IBT_LINE.IBT_ID
AND IBT_LINE.PART_ID=PART.ID
AND SUBSTR(IBT_LINE.USER_1, 0, INSTR(IBT_LINE.USER_1, '-', +1, 3)-1) = SUBSTR(WORK_ORDER.USER_1, 0, INSTR(WORK_ORDER.USER_1, '-', +1, 3)-1) (+))
where (work_order is null or (WORK_ORDER.WAREHOUSE_ID ='MEX-04' AND WORK_ORDER.STATUS ='R'))