0
AND INSTR(S1.PLINE_CODE, T.PLINE_CODE) > 0
AND S1.VALIDFLAG = '1'
AND S1.PROCESS_CODE = 'D') CRAFT_FILE_LV2_G,
(SELECT CD.CRAFT_PATH FROM CRAFT_ORD_DESIGN CD WHERE CD.ORD_LN_PK=T1.ORD_LN_PK AND CD.CRAFT_SEQ=T.CRAFT_SEQ) CRAFT_PATH,
T.CRAFT_SEQ,
T.CRAFT_FILE_NO,
T.CRAFT_FILE_MAN,
T1.PRODUCCODE,
T1.PRODUCNAME,
T1.STD_CODE,
T1.STD_NAME,
T1.STD_STYLE_DESC,
T1.SPEC_CODE,
T1.SPEC_NAME,
T1.MODEL_DESC,
DECODE(T.IF_LEN_CONTROL, '1', '是', '0', '/') IF_LEN_CONTROL,
DECODE(T.IF_MINUS_SIC_ROLL, '1', '是', '0', '/') IF_MINUS_SIC_ROLL,
T.TUBE_END_RATIO,
T.GPREQ_NUM,
T.GPREQ_WEIGHT,
T.VERIFY1,
T.VERIFY2,
T.VERIFY3,
NVL(T.WEIGTH_S_MIN, 0) WEIGTH_S_MIN,
(SELECT T9.BASENAME
FROM COM_BASE_INFO T9
WHERE T9.BASECODE = T.PRIORITY) PRIORITY,
T.PRIORITY_MEMO,
NVL(T.PLANS_NUM, 0) PLANS_NUM,
T.ORIGINAL_NUMBER,
T1.FINAL_USER_DESC,
T.PROD_STANDARD,
T.OUTPUT_STANDARD,
T.THICKNESS_WALL,
T.DECISION,
T.PROCESS_DESC_C,
T.APPLY_NO,
DECODE(T.APPLY_STATUS,
'00',
'作废',
'10',
'申请',
'20',
'审批通过',
'30',
'审批不通过') APPLY_STATUS,
T.ISSUED_MEMO,
DECODE(T.OUTS_BILLET_FL, '0', '自炼', '1', '外购') OUTS_BILLET_FL,
T1.OUTS_STL_PIPE_FL,
T1.LEN_NO,
T1.LENGTHDISC_N,
T1.LEN_NO_N,
T.PROGY_MEMO,
(SELECT P.GRADECODE_ALL
FROM PLN_SALEORD_PROC P
WHERE P.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND P.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID) GRADECODE_ALL,
T1.PRD_CLS,
T1.ORDERFROM,
T1.PRODUCE_SORT,
(SELECT SP.HR_CAPCTY
FROM SLM_BASE_MATERIAL_D_PL SP
WHERE SP.PLINE_CODE = T.PLINE_CODE
AND SP.IN_MATERIAL_NO = T.INWL_ID
AND SP.OUT_MATERIAL_NO = T.OUTWL_ID) HR_CAPCTY,
NVL((SELECT SUM(M.PREDICT_TON)
FROM MIL_PLAN M
WHERE M.PRO_PLAN_ID = T.PRO_PLAN_ID
AND M.GX_PLAN_NO = T.GX_PLAN_NO
AND SUBSTR(M.JUDGE_STOVE_NO, -2) = '01'),
0) EXPECT_WT,
NVL((SELECT SUM(M.PREDICT_PIECE)
FROM MIL_PLAN M
WHERE M.PRO_PLAN_ID = T.PRO_PLAN_ID
AND M.GX_PLAN_NO = T.GX_PLAN_NO
AND SUBSTR(M.JUDGE_STOVE_NO, -2) = '01'),
0) EXPECT_NUM,
DECODE(T.PASSIVE,'1','主动','0','被动') PASSIVE,
DECODE(B.CODE_JG_BL,'',B.CODE_DJ_BL,B.CODE_JG_BL) REQ_BL_ID,
T.GRADECODE_LK,T.GRADENAME_LK,T.CIC_GROUP_LK,
(SELECT GET_GP_MAT_NUM_ZL(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) FURNA_NUM,
(SELECT GET_GP_MAT_WT_ZL(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) FURNA_WEIGHT,
(SELECT GET_GP_PLNZGM_NUM(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) LJ_NUM,
(SELECT GET_GP_PLNZGM_WT(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) LJ_WEIGHT,
(SELECT GET_GP_MAT_NUM(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) PEND_NUM,
(SELECT GET_GP_MAT_WT(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) PEND_WEIGHT,
(SELECT GET_GP_WT_CK(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) CK_WEIGHT,
(SELECT GET_GP_NUM_CK(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) CK_NUM,
(SELECT GET_ZG_REDUCED_WT(T.PRO_PLAN_ID, T.GX_PLAN_NO) FROM DUAL) REDUCED_WT
FROM PLN_ORDER_ZG_S T,
(SELECT Q1.PRODUCCODE,
Q1.PRODUCNAME,
Q1.STD_CODE,
Q1.STD_NAME,
Q1.STD_STYLE_DESC,
Q1.SPEC_CODE,
Q1.SPEC_NAME,
Q1.ORD_LN_DLY_PK,
Q1.ORD_LN_PK,
Q1.STEELCODE,
Q1.STEELNAME,
Q1.DELVRY_RANGE_TPE,
Q1.DELVRY_RANGE_MAX,
Q1.DELVRY_RANGE_MIN,
Q1.DELVRY_QTY,
Q1.MODEL_DESC,
Q4.ABRVITION FINAL_USER_DESC,
Q1.LENGTHMAX,
Q1.LENGTHMIN,
Q1.OUTS_BILLET_FL,
Q1.OUTS_STL_PIPE_FL,
Q1.LENGTHDISC_N,
Q1.LEN_NO_N,
Q1.LEN_NO,
Q2.CRAFT_FILE_LV2_D,
(SELECT A.PRODUC_DESC
FROM COM_BASE_PRODUCT A
WHERE A.PRODUCCODE = Q1.PRODUCCODE
AND A.VALIDFLAG = '1') PRD_CLS,
(SELECT A.BASENAME
FROM COM_BASE_INFO A
WHERE A.BASECODE = Q1.ORDERFROM) ORDERFROM,
Q1.PRODUCE_SORT
FROM PLN_SALEORD Q1,
CRAFT_ORD_DESIGN Q2,
CRAFT_ORD_DESIGN_APPOINT Q3,
SLM_BASE_CUSTOMER Q4
WHERE Q1.ORD_LN_PK = Q3.ORD_LN_PK(+)
AND Q1.FINAL_USER = Q4.CUSTOMER_NO(+)
AND Q1.ORD_LN_PK = Q2.ORD_LN_PK(+)
AND Q2.VALIDFLAG(+) = '1') T1,
(SELECT MIN(S.NEXT_GX) NEXT_GX,
S.PRO_PLAN_ID,
MIN(S.PLAN_GROUP_ID) PLAN_GROUP_ID
FROM PLN_ORDER_ZG S
GROUP BY S.PRO_PLAN_ID) T2,
SLM_ORDER_LINE_DELIVERY D,PLN_PORDER_BL_REQ B
WHERE T.ORD_LN_DLY_PK = T1.ORD_LN_DLY_PK(+)
AND T.PRO_PLAN_ID = T2.PRO_PLAN_ID(+)
AND T.ORD_LN_DLY_PK = D.ORD_LN_DLY_PK(+)
AND T.ORD_LN_DLY_PK=B.REQ_BL_ID(+)
AND T.IS_PLAN_OK='1'
AND T.EXE_STATUS='0'
AND T.GPREQ_ID IS NULL
]]>
0
AND INSTR(LV.PLINE_CODE, T.PLINE_CODE) > 0
AND LV.VALIDFLAG = '1'
AND LV.PROCESS_CODE = 'E') CRAFT_FILE_LV2_G,
NVL(T.WEIGTH_S_MIN, 0) MIN_WGT,
(SELECT CD.CRAFT_PATH
FROM CRAFT_ORD_DESIGN CD
WHERE CD.ORD_LN_PK = T2.ORD_LN_PK
AND CD.CRAFT_SEQ = T.CRAFT_SEQ) CRAFT_PATH,
T.CRAFT_SEQ,
T.CRAFT_FILE_NO,
T.CRAFT_FILE_MAN,
(SELECT T9.BASENAME
FROM COM_BASE_INFO T9
WHERE T9.BASECODE = T.PRIORITY) PRIORITY,
T.PRIORITY_MEMO, T.DECISION,
(SELECT SUM(NVL(Z.PLANS_NUM, 0))
FROM PLN_ORDER_ZG_S Z
WHERE Z.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND Z.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID) OUTPUT_NUM,
(Select TO_CHAR(MIN(Z.PLAN_TIME_B),'YYYY-MM-DD HH24:MI:SS') from PLN_ORDER_ZG_S Z where Z.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK AND Z.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID) zg_Start_Time
FROM PLN_ORDER_DBK_S T,
(SELECT Q1.ORDER_SPEC_CODE,
Q1.ORDER_SPEC_DESC,
Q2.ORD_LN_DLY_PK,
Q2.ORD_LN_PK,
Q1.DELVRY_RANGE_TPE,
Q1.DELVRY_RANGE_MAX,
Q1.DELVRY_RANGE_MIN,
Q2.DELVRY_QTY,
Q4.CRAFT_NAME,
Q3.CRAFT_FILE_LV2_E
FROM SLM_ORDER_LINE Q1,
SLM_ORDER_LINE_DELIVERY Q2,
CRAFT_ORD_DESIGN Q3,
CRAFT_ORD_DESIGN_APPOINT Q4
WHERE Q1.ORD_LN_PK = Q2.ORD_LN_PK
AND Q1.ORD_LN_PK = Q4.ORD_LN_PK(+)
AND Q1.ORD_LN_PK = Q3.ORD_LN_PK(+)
AND Q3.VALIDFLAG(+) = '1') T2,
PLN_SALEORD S
WHERE T.ORD_LN_DLY_PK = T2.ORD_LN_DLY_PK(+)
AND T.ORD_LN_DLY_PK = S.ORD_LN_DLY_PK
AND (T.IS_REPAIR_PLN IS NULL OR T.IS_REPAIR_PLN = '0')
AND T.EXE_STATUS='0'
]]>
0
AND INSTR(LV.PLINE_CODE, T.PLINE_CODE) > 0
AND LV.VALIDFLAG = '1'
AND LV.PROCESS_CODE = 'G') CRAFT_FILE_LV2_G,
T3.ADD_ASK1,
T3.ADD_ASK2,
T3.ADD_ASK3,
T3.ADD_ASK4,
T3.ADD_ASK5,
T3.ADD_ASK6,
T3.ADD_ASK7,
T3.ADD_ASK8,
T3.ADD_ASK9,
T3.ADD_ASK10,
T3.ADD_ASK11,
T3.ADD_ASK12,
T3.ADD_ASK13,
(SELECT SUM(NVL(ZG.PLANS_NUM, 0))
FROM PLN_ORDER_ZG_S ZG
WHERE ZG.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND ZG.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID) OUTPUT_NUM,
(SELECT TO_CHAR(MIN(Z.PLAN_TIME_B), 'YYYY-MM-DD HH24:MI:SS')
FROM PLN_ORDER_ZG_S Z
WHERE Z.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND Z.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID) ZG_START_TIME,
NVL((SELECT SUM(M.PREDICT_TON)
FROM MIL_PLAN M, PLN_ORDER_ZG_S Z
WHERE M.PRO_PLAN_ID = Z.PRO_PLAN_ID
AND M.GX_PLAN_NO = Z.GX_PLAN_NO
AND Z.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND Z.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID
AND SUBSTR(M.JUDGE_STOVE_NO, -2) = '01'),
0) EXPECT_WT,
NVL((SELECT SUM(M.PREDICT_PIECE)
FROM MIL_PLAN M, PLN_ORDER_ZG_S Z
WHERE M.PRO_PLAN_ID = Z.PRO_PLAN_ID
AND M.GX_PLAN_NO = Z.GX_PLAN_NO
AND Z.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND Z.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID
AND SUBSTR(M.JUDGE_STOVE_NO, -2) = '01'),
0) EXPECT_NUM,
(SELECT Z1.GRADENAME
FROM (SELECT Z.GRADENAME, Z.ORD_LN_DLY_PK, Z.PLN_DIVIDE_ID
FROM PLN_ORDER_ZG_S Z
ORDER BY TO_NUMBER(Z.GX_PRO_SEQ)) Z1
WHERE ROWNUM = 1
AND Z1.ORD_LN_DLY_PK = T.ORD_LN_DLY_PK
AND Z1.PLN_DIVIDE_ID = T.PLN_DIVIDE_ID) GRADENAME,
decode(t.if_stove_issued, '1', '是', '/') if_stove_issued,
to_char(t.stove_issued_time, 'yyyy-mm-dd hh24:mi:ss') stove_issued_time,
t.stove_issued_man,
T.ISSUED_MAN,
TO_CHAR(T.ISSUED_TIME, 'YYYY-MM-DD HH24:MI:SS') ISSUED_TIME,
TO_CHAR(T.LAST_UNDOWN_TIME, 'YYYY-MM-DD HH24:MI:SS') LAST_UNDOWN_TIME,
T.LAST_UNDOWN_MAN, T.DECISION,
M1.BATCHED_WT,
M1.BATCHED_NUM,
M3.FINISHWEIGHT,
M3.FINISHNUM,
m2.Real_Batch_Wt,
m2.Real_Batch_Num,
m3.Real_Indouble_Wt,
m3.Real_Indouble_Num,
(SELECT SP.ORDER_NO||'/'||SP.ORDER_SEQ FROM PLN_PORDER_BL_REQ BL,PLN_SALEORD_PROC SP WHERE BL.REQ_BL_ID=T.ORD_LN_DLY_PK AND SP.ORD_LN_DLY_PK=BL.ORD_LN_DLY_PK) ORDER_SEQ_CP
FROM PLN_ORDER_JGX_S T,
PLN_GX_JGX_M T1,
(SELECT Q1.ORDER_SPEC_CODE,
Q1.ORDER_SPEC_DESC,
Q2.ORD_LN_DLY_PK,
Q2.ORD_LN_PK,
Q1.DELVRY_RANGE_TPE,
Q1.DELVRY_RANGE_MAX,
Q1.DELVRY_RANGE_MIN,
Q2.DELVRY_QTY,
Q4.CRAFT_NAME,
Q5.SALE_ORG_DESC,
Q1.FINAL_USER_DESC,
Q3.CRAFT_FILE_LV2_G
FROM SLM_ORDER_LINE Q1,
SLM_ORDER_LINE_DELIVERY Q2,
CRAFT_ORD_DESIGN Q3,
CRAFT_ORD_DESIGN_APPOINT Q4,
SLM_ORDER_HEAD Q5
WHERE Q1.ORD_LN_PK = Q2.ORD_LN_PK
AND Q1.ORD_LN_PK = Q4.ORD_LN_PK(+)
AND Q1.ORD_PK = Q5.ORD_PK
AND Q1.ORD_LN_PK = Q3.ORD_LN_PK(+)
AND Q3.VALIDFLAG(+) = '1') T2,
(SELECT *
FROM (SELECT Q.ASK_ITME_DESC,
Q.ASK_SUB_ITME_VAL_DESC,
Q.ORD_LN_DLY_PK
FROM (SELECT Q3.ASK_ITME_DESC,
Q1.ORD_LN_DLY_PK,
LISTAGG(Q3.ASK_SUB_ITME_VAL_DESC, ' ** ') WITHIN GROUP(ORDER BY Q3.ASK_ITME) ASK_SUB_ITME_VAL_DESC
FROM SLM_ORDER_LINE_DELIVERY Q1,
SLM_ORDER_LINE Q2,
SLM_ORDER_ADD_ASK Q3
WHERE Q1.ORD_LN_PK = Q2.ORD_LN_PK
AND Q2.ADD_ASK_NO = Q3.ADD_ASK_NO
AND Q1.VALIDFLAG = '1'
AND Q2.VALIDFLAG = '1'
AND Q2.CREATE_NAME IS NOT NULL
AND Q3.VALIDFLAG = '1'
GROUP BY Q3.ASK_ITME_DESC, Q1.ORD_LN_DLY_PK) Q)
PIVOT(MAX(ASK_SUB_ITME_VAL_DESC)
FOR ASK_ITME_DESC IN('喷标' AS ADD_ASK1,
'涂漆' AS ADD_ASK2,
'保护帽' AS ADD_ASK3,
'丝扣油' AS ADD_ASK4,
'计重方式' AS ADD_ASK5,
'打捆' AS ADD_ASK6,
'质量' AS ADD_ASK7,
'交货材料' AS ADD_ASK8,
'发货结算约定' AS ADD_ASK9,
'特殊通径' AS ADD_ASK10,
'特殊端部加工' AS ADD_ASK11,
'取样备注' AS ADD_ASK12,
'表面质量' AS ADD_ASK13))) T3,
PLN_SALEORD S,(SELECT SUM(NVL(M.PLN_INSINGLE_WT, 0)) BATCHED_WT,
SUM(NVL(M.PLN_INSINGLE_NUM, 0)) BATCHED_NUM,
SUM(NVL(M.PLN_OUTSINGLE_W, 0)) Expect_Wt_J,
SUM(NVL(M.PLN_OUTSINGLE_NUM, 0)) Expect_Num_J,
M.PRO_PLAN_ID,
M.GX_PLAN_NO
FROM PLN_ZY_JGX_M M,PLN_ORDER_JGX_S s
WHERE M.PRO_PLAN_ID = s.PRO_PLAN_ID
AND M.GX_PLAN_NO = s.GX_PLAN_NO
AND M.IF_FLAG='0'
group by M.PRO_PLAN_ID, M.GX_PLAN_NO) m1,
(SELECT SUM(NVL(C.PLAN_INDOUBLE_WT, 0))-SUM(NVL(C.REAL_INDOUBLE_WT, 0)) Real_Batch_Wt,
SUM(NVL(C.PLAN_INDOUBLE_NUM, 0))- SUM(NVL(C.REAL_INDOUBLE_NUM, 0)) Real_Batch_Num,
M.PRO_PLAN_ID,
M.GX_PLAN_NO
FROM PLN_ZY_JGX_C C, PLN_ZY_JGX_M M,PLN_ORDER_JGX_S s
WHERE C.HEAT_PLAN_NO = M.HEAT_PLAN_NO
AND C.PRO_PLAN_ID = s.PRO_PLAN_ID
AND C.GX_PLAN_NO = s.GX_PLAN_NO
AND M.IF_FLAG='0'
GROUP BY M.PRO_PLAN_ID, M.GX_PLAN_NO) M2,
(SELECT SUM(NVL(M.REAL_INDOUBLE_WT, 0)) Real_Indouble_Wt,
SUM(NVL(M.REAL_INDOUBLE_NUM, 0)) Real_Indouble_Num,
SUM(NVL(M.REAL_OUTDOUBLE_WT, 0)) FINISHWEIGHT,
SUM(NVL(M.REAL_OUTDOUBLE_NUM, 0)) FINISHNUM,
M.PRO_PLAN_ID,
M.GX_PLAN_NO
FROM PLN_ZY_JGX_C M,PLN_ORDER_JGX_S s
WHERE M.PRO_PLAN_ID = s.PRO_PLAN_ID
AND M.GX_PLAN_NO = s.GX_PLAN_NO
AND M.IF_FLAG='0'
GROUP BY M.PRO_PLAN_ID, M.GX_PLAN_NO) M3
WHERE T.PRO_PLAN_ID = T1.PRO_PLAN_ID(+)
AND T.ORD_LN_DLY_PK = T2.ORD_LN_DLY_PK(+)
AND T.ORD_LN_DLY_PK = T3.ORD_LN_DLY_PK(+)
AND T.ORD_LN_DLY_PK = S.ORD_LN_DLY_PK
and t.PRO_PLAN_ID = m1.PRO_PLAN_ID(+)
AND t.GX_PLAN_NO = m1.GX_PLAN_NO(+)
and t.PRO_PLAN_ID = m2.PRO_PLAN_ID(+)
AND t.GX_PLAN_NO = m2.GX_PLAN_NO(+)
and t.PRO_PLAN_ID = m3.PRO_PLAN_ID(+)
AND t.GX_PLAN_NO = m3.GX_PLAN_NO(+)
AND T.EXE_STATUS='0'
]]>
'50') >=
(SELECT COUNT(1)
FROM MAT_BC_M
WHERE HEAT_PLAN_NO_OLD = M.HEAT_PLAN_NO
AND QCM_STAUS = '00') +
(SELECT COUNT(1)
FROM MAT_BC_BACKUP
WHERE HEAT_PLAN_NO_OLD = M.HEAT_PLAN_NO
AND QCM_STAUS = '00')
AND HEAT_PLAN_NO = ?
]]>
'50') >=
(SELECT COUNT(1)
FROM MAT_BC_M
WHERE HEAT_PLAN_NO_OLD = M.HEAT_PLAN_NO
AND QCM_STAUS = '00') +
(SELECT COUNT(1)
FROM MAT_BC_BACKUP
WHERE HEAT_PLAN_NO_OLD = M.HEAT_PLAN_NO
AND QCM_STAUS = '00')
AND HEAT_PLAN_NO =?
]]>
'50') >=
(SELECT COUNT(1)
FROM MAT_BC_M
WHERE HEAT_PLAN_NO_OLD = M.HEAT_PLAN_NO
AND QCM_STAUS = '00') +
(SELECT COUNT(1)
FROM MAT_BC_BACKUP
WHERE HEAT_PLAN_NO_OLD = M.HEAT_PLAN_NO
AND QCM_STAUS = '00')
AND HEAT_PLAN_NO = ?
]]>
UPDATE PORT_MCH_BATCH_SAMPLE_RESULT T SET T.TR_FLAG = '1'WHERE T.HEAT_PLAN_NO = ? AND T.MAT_NO = ?
UPDATE PORT_MCH_BATCH_SAMPLE_RESULT T SET T.TR_FLAG = '0'WHERE T.HEAT_PLAN_NO = ? AND T.MAT_NO = ?
SELECT T.*
FROM MAT_BC_M T, YDM_BC_BUTTRESS S
WHERE T.MAT_NO = S.MAT_NO
AND T.JUDGE_STOVE_NO = '#JUDGE_STOVE_NO#'
AND T.BATCH_NO = '#BATCH_NO#'
AND T.BATCH_GROUD_NO = '#BATCH_GROUD_NO#'
AND T.QCM_STAUS = '00'
AND T.PLINE_CODE = '#PLINE_CODE#'
AND NVL(T.PRO_ORDER_NO,'/') = NVL('#PRO_ORDER_NO#','/')
AND NVL(T.STD_NAME,'/') = NVL('#STD_NAME#','/')
ORDER BY TO_NUMBER(T.MEASURING_SEQ) ASC
UPDATE PORT_MCH_BATCH_SAMPLE_RESULT T SET T.HEAT_PLAN_NO = ? WHERE T.HEAT_PLAN_NO = ? AND T.MAT_NO = ?
UPDATE PORT_HTT_BATCH_SAMPLE_RESULT T SET T.HEAT_PLAN_NO = ? WHERE T.HEAT_PLAN_NO = ? AND T.MAT_NO = ?
AND PROCESS_SEQ = ?