| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716 |
- CREATE OR REPLACE PACKAGE NIE03_SERVEAS IS
- -- Author : SUNJIAWANG
- -- Created : 2009-7-24 14:40:55
- -- Purpose : 指定充当
- PROCEDURE REP_MAIN
- (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,SIGN_STL IN VARCHAR := 'Y'
- ,SIGN_CHEN_FEN IN VARCHAR := 'Y'
- ,SING_CAIZHI IN VARCHAR := 'Y'
- ,SIGN_QIANGZHI IN VARCHAR := 'N'
- ,P_REG_ID IN VARCHAR := 'NO_USER'
- ,P_RTN_MSG OUT VARCHAR
- ) ;
- PROCEDURE SERVEABLE
- (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,SIGN_STL IN VARCHAR := 'Y'
- ,SIGN_CHEN_FEN IN VARCHAR := 'Y'
- ,SING_CAIZHI IN VARCHAR := 'Y'
- ,SIGN_QIANGZHI IN VARCHAR := 'N'
- -- ,P_RTN_MSG OUT VARCHAR
- );
- PROCEDURE CHK_IS_SYN;
- PROCEDURE INIT_MAT_TYPE (P_MAT_NO IN VARCHAR);
- PROCEDURE SERVE_HIS
- (
- P_MAT_TYPE IN VARCHAR
- ,P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,P_REG_ID IN VARCHAR
- );
- PROCEDURE SLAB_SERVE (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,P_REG_ID IN VARCHAR
- );
- PROCEDURE COIL_SERVE (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,P_REG_ID IN VARCHAR
- );
- PROCEDURE MAT_CHK( P_MAT1 VARCHAR
- ,P_MAT2 VARCHAR);
- PROCEDURE MAT_REP_EACH_OTHER( P_MAT1 VARCHAR
- ,P_MAT2 VARCHAR
- ,SIGN_STL IN VARCHAR := 'Y'
- ,SIGN_CHEN_FEN IN VARCHAR := 'Y'
- ,SING_CAIZHI IN VARCHAR := 'Y'
- ,SIGN_QIANGZHI IN VARCHAR := 'N'
- ,P_REG_ID IN VARCHAR := 'NO_USER'
- ,P_RTN_MSG OUT VARCHAR
- ) ;
- END NIE03_SERVEAS;
- /
- CREATE OR REPLACE PACKAGE BODY NIE03_SERVEAS IS
- GV_MAT_TYPE VARCHAR(2) := '';
- PROCEDURE REP_MAIN
- (
- P_MAT_NO IN VARCHAR --物料号
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE --订单号
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE --订单行
- ,SIGN_STL IN VARCHAR := 'Y' --是否同牌号
- ,SIGN_CHEN_FEN IN VARCHAR := 'Y' --是否同成分
- ,SING_CAIZHI IN VARCHAR := 'Y' --是否同材质
- ,SIGN_QIANGZHI IN VARCHAR := 'N' --是否强制充当
- ,P_REG_ID IN VARCHAR := 'NO_USER' --登陆Id
- ,P_RTN_MSG OUT VARCHAR --返回信息
- ) IS
- BEGIN
- COMM.INIT_RTN_MSG;
- CHK_IS_SYN;
- COMM.INIT_USER(P_REG_ID);
- INIT_MAT_TYPE(P_MAT_NO);
- SERVEABLE(P_MAT_NO,P_ORD_NO,P_ORD_SEQ,SIGN_STL,SIGN_CHEN_FEN,SING_CAIZHI,SIGN_QIANGZHI);
- SERVE_HIS(GV_MAT_TYPE,P_MAT_NO,P_ORD_NO,P_ORD_SEQ,P_REG_ID);
- IF GV_MAT_TYPE = 'TM' THEN
- SLAB_SERVE(P_MAT_NO,P_ORD_NO,P_ORD_SEQ,P_REG_ID);
- ELSIF GV_MAT_TYPE = 'AR' THEN
- COIL_SERVE(P_MAT_NO,P_ORD_NO,P_ORD_SEQ,P_REG_ID);
- END IF;
- EXCEPTION
- WHEN COMM.PE THEN
- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN OTHERS THEN
- COMM.CALL_OTHER_EXCEPTION_DO(P_RTN_MSG);
- END;
- PROCEDURE INIT_MAT_TYPE (P_MAT_NO IN VARCHAR) IS
- VE EXCEPTION;
- BEGIN
- IF SUBSTR(P_MAT_NO, 1, 1) = 'J' THEN
- GV_MAT_TYPE := 'TM';
- ELSIF SUBSTR(P_MAT_NO, 1, 1) = 'R' THEN
- GV_MAT_TYPE := 'AR' ;
- ELSE
- RAISE VE;
- END IF;
- EXCEPTION
- WHEN VE THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'P_MAT_NO' ;
- COMM.REC_ERR.P_ERR_MSG := P_MAT_NO || '该物料不存在,请核查';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- END;
- PROCEDURE SERVEABLE
- (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,SIGN_STL IN VARCHAR := 'Y'
- ,SIGN_CHEN_FEN IN VARCHAR := 'Y'
- ,SING_CAIZHI IN VARCHAR := 'Y'
- ,SIGN_QIANGZHI IN VARCHAR := 'N'
- -- ,P_RTN_MSG OUT VARCHAR
- ) IS
- VE EXCEPTION;
- VE_ORD_NO_NULL EXCEPTION;
- VE_ORD_SEQ_NULL EXCEPTION;
- VE_STAT EXCEPTION;
- VE_ORD_FL EXCEPTION;
- VE_STL EXCEPTION;
- VE_SIZE EXCEPTION;
- VE_WGT EXCEPTION;
- VE_CHEN_FEN EXCEPTION;
- VE_CAI_ZHI EXCEPTION;
- VE_PROG_CD EXCEPTION;
- VE_DLIV EXCEPTION;
- CURSOR CUR_MAT_SLAB IS
- SELECT A.SLAB_NO DSP_NO,
- A.SLAB_NO MAT_NO, -- 板坯号
- A.STL_GRD ORD_STL_GRD, -- 钢号
- B.STL_GRD COM_STL_GRD,
- A.SLAB_WTH MAT_WTH, -- 板坯宽度
- A.SLAB_WGT MAT_WGT, -- 板坯重量
- B.ORD_UNIT_WGT_MIN,
- B.ORD_UNIT_WGT_MAX,
- A.CUR_PROG_CD,
- (A.SLAB_WGT * C.PROC_RATE / 100) MAT_REP_WGT,
- CASE
- WHEN (A.SLAB_STAT = '2') THEN
- 'YY'
- ELSE
- 'XX'
- END SLAB_STAT_ABLE,
- CASE
- WHEN (A.ORD_FL = '2') THEN
- 'YY'
- ELSE
- 'XX'
- END ORD_FL_ABLE,
- CASE
- WHEN (A.CUR_PROG_CD IN ('RRC','RBA')) THEN
- 'YY'
- ELSE
- 'XX'
- END CUR_PROG_CD_ABLE,
- CASE
- WHEN ('Y' <> NVL(SIGN_STL, 'N') OR A.STL_GRD = B.STL_GRD) THEN
- 'YY'
- ELSE
- 'XX'
- END STL_ABLE,
- CASE
- WHEN (A.SLAB_WTH BETWEEN B.ORD_WTH AND B.ORD_WTH + 100) THEN
- 'YY'
- ELSE
- 'XX'
- END SIZE_ABLE,
- CASE
- WHEN (A.SLAB_WGT * C.PROC_RATE / 100) BETWEEN B.ORD_UNIT_WGT_MIN AND
- B.ORD_UNIT_WGT_MAX THEN
- 'YY'
- ELSE
- 'XX'
- END WGT_ABLE,
- CASE
- WHEN ('Y' <> NVL(SIGN_CHEN_FEN, 'N') OR
- GF_NIB028720(A.SLAB_NO, B.ORD_NO, B.ORD_SEQ) = 'YY') THEN
- 'YY'
- ELSE
- 'XX'
- END CHEN_FEN_ABLE
- FROM TBG02_SLAB_COMM A,
- TBE02_ORD_PRC B,
- (SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') C
- WHERE B.ORD_NO = P_ORD_NO -- 合同号
- AND B.ORD_SEQ = P_ORD_SEQ -- 订单号
- AND A.SLAB_NO = P_MAT_NO
- AND ROWNUM = 1;
- REC_MAT_SLAB CUR_MAT_SLAB%ROWTYPE;
- CURSOR CUR_MAT_COIL IS
- SELECT A.OLD_SAMPL_NO DSP_NO,
- A.COIL_NO MAT_NO, -- 钢卷号
- A.STL_GRD ORD_STL_GRD, -- 钢号
- A.CUR_PROG_CD,
- A.DLIV_DIRNO,
- B.STL_GRD COM_STL_GRD,
- A.COIL_THK MAT_THK, -- 钢卷厚度
- B.ORD_THK_MIN,
- B.ORD_THK_MAX,
- A.COIL_WTH MAT_WTH, -- 钢卷宽度
- B.ORD_WTH_MIN,
- B.ORD_WTH_MAX,
- B.ORD_UNIT_WGT_MIN,
- B.ORD_UNIT_WGT_MAX,
- A.ACT_WGT MAT_WGT, -- 钢卷重量
- A.ACT_WGT MAT_REP_WGT,
- CASE
- WHEN (A.COIL_STAT IN ('2','4')) THEN
- 'YY'
- ELSE
- 'XX'
- END COIL_STAT_ABLE,
- CASE
- WHEN ('Y' <> NVL(SIGN_STL, 'N') OR A.STL_GRD = B.STL_GRD) THEN
- 'YY'
- ELSE
- 'XX'
- END STL_ABLE,
- CASE
- WHEN (GF_NIB028780(A.COIL_NO, B.ORD_NO, B.ORD_SEQ) = 'YY') THEN
- 'YY'
- ELSE
- 'XX'
- END SIZE_ABLE,
- CASE
- WHEN (A.ACT_WGT BETWEEN B.ORD_UNIT_WGT_MIN AND B.ORD_UNIT_WGT_MAX) THEN
- 'YY'
- ELSE
- 'XX'
- END WGT_ABLE,
- CASE
- WHEN ('Y' <> NVL(SIGN_CHEN_FEN, 'N') OR
- GF_NIB028720(A.SLAB_NO, B.ORD_NO, B.ORD_SEQ) = 'YY') THEN
- 'YY'
- ELSE
- 'XX'
- END CHEN_FEN_ABLE,
- CASE
- WHEN ('Y' <> NVL(SING_CAIZHI, 'N') OR
- GF_NIB028750(A.COIL_NO, B.ORD_NO, B.ORD_SEQ) = 'YY') THEN
- 'YY'
- ELSE
- 'XX'
- END CAI_ZHI_ABLE,
- CASE
- WHEN (A.CUR_PROG_CD IN ('SRC','SFA')) THEN
- 'YY'
- ELSE
- 'XX'
- END PROG_CD_ABLE,
- CASE
- WHEN (A.DLIV_DIRNO IS NULL) THEN
- 'YY'
- ELSE
- 'XX'
- END DLIV_ABLE
- FROM TBH02_COIL_COMM A, TBE02_ORD_PRC B
- WHERE B.ORD_NO = P_ORD_NO -- 合同号
- AND B.ORD_SEQ = P_ORD_SEQ -- 订单号
- AND A.OLD_SAMPL_NO = P_MAT_NO
- AND ROWNUM = 1;
- REC_MAT_COIL CUR_MAT_COIL%ROWTYPE;
- BEGIN
- IF NVL(P_ORD_NO,' ') = ' ' THEN
- RAISE VE_ORD_NO_NULL;
- END IF;
- IF NVL(P_ORD_SEQ,' ') = ' ' THEN
- RAISE VE_ORD_SEQ_NULL;
- END IF;
- IF GV_MAT_TYPE = 'TM' THEN
- OPEN CUR_MAT_SLAB;
- LOOP
- FETCH CUR_MAT_SLAB
- INTO REC_MAT_SLAB;
- IF CUR_MAT_SLAB%ROWCOUNT = 0 THEN
- RAISE VE;
- END IF;
- EXIT WHEN CUR_MAT_SLAB %NOTFOUND;
- IF (REC_MAT_SLAB.SLAB_STAT_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'SLAB_STAT';
- COMM.REC_ERR.P_ERR_MSG := P_MAT_NO || '该物料不存在,请核查';
- RAISE VE_STAT;
- ELSIF (REC_MAT_SLAB.ORD_FL_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'ORD_FL';
- COMM.REC_ERR.P_ERR_MSG := P_MAT_NO || '该物料已为订单材';
- RAISE VE_ORD_FL;
- ELSIF (REC_MAT_SLAB.STL_ABLE <> 'YY' AND NVL(SIGN_QIANGZHI,'N') <> 'Y' ) THEN
- COMM.REC_ERR.P_ERR_MSG := '牌号不一致: ' || P_MAT_NO || '的牌号为 ' || REC_MAT_SLAB.COM_STL_GRD || ' ' ||
- P_ORD_NO || P_ORD_SEQ || '的牌号为 ' || REC_MAT_SLAB.ORD_STL_GRD;
- RAISE VE_STL;
- ELSIF (REC_MAT_SLAB.SIZE_ABLE <> 'YY' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- COMM.REC_ERR.P_ERR_MSG := '尺寸不在订单公差范围: ' || P_MAT_NO || '宽度 ' || REC_MAT_SLAB.MAT_WTH || ' ; ' ||
- P_ORD_NO || P_ORD_SEQ || '的宽度公差 ' || TO_NUMBER(REC_MAT_SLAB.MAT_WTH - 100) || '~' ||
- REC_MAT_SLAB.MAT_WTH;
- RAISE VE_SIZE;
- ELSIF (REC_MAT_SLAB.WGT_ABLE <> 'YY' AND NVL(SIGN_QIANGZHI,'N') <> 'Y' ) THEN
- COMM.REC_ERR.P_ERR_MSG := '单重不在订单公差范围: ' || P_MAT_NO || '重量 ' || REC_MAT_SLAB.MAT_WGT || ' ' ||
- P_ORD_NO || P_ORD_SEQ || '的单重公差 ' ||
- REC_MAT_SLAB.ORD_UNIT_WGT_MIN || '~' ||
- REC_MAT_SLAB.ORD_UNIT_WGT_MAX;
- RAISE VE_WGT;
- ELSIF (REC_MAT_SLAB.CHEN_FEN_ABLE <> 'YY' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- RAISE VE_CHEN_FEN;
- ELSIF (REC_MAT_SLAB.CUR_PROG_CD_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'CUR_PROG_CD';
- COMM.REC_ERR.P_ERR_MSG := '当前进程状态不符合!当前进程状态为: '||REC_MAT_SLAB.CUR_PROG_CD;
- RAISE VE_PROG_CD;
- END IF;
- END LOOP;
- CLOSE CUR_MAT_SLAB;
- ELSIF GV_MAT_TYPE = 'AR' THEN
- --GV_MAT_TYPE := 'AR';
- OPEN CUR_MAT_COIL;
- LOOP
- FETCH CUR_MAT_COIL
- INTO REC_MAT_COIL;
- IF CUR_MAT_COIL%ROWCOUNT = 0 THEN
- RAISE VE;
- END IF;
- EXIT WHEN CUR_MAT_COIL%NOTFOUND;
- IF (REC_MAT_COIL.COIL_STAT_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'COIL_STAT';
- COMM.REC_ERR.P_ERR_MSG := P_MAT_NO || '该物料不存在,请核查';
- RAISE VE_STAT;
- /* ELSIF (REC_MAT_COIL.ORD_FL_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'ORD_FL';
- COMM.REC_ERR.P_ERR_MSG := '该物料已为订单材';
- RAISE VE_ORD_FL;*/
- ELSIF (REC_MAT_COIL.STL_ABLE = 'XX' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- COMM.REC_ERR.P_ERR_MSG := '牌号不一致: ' || P_MAT_NO || '的牌号为 ' || REC_MAT_COIL.COM_STL_GRD || ' ' ||
- P_ORD_NO || P_ORD_SEQ || '的牌号为 ' || REC_MAT_COIL.ORD_STL_GRD;
- RAISE VE_STL;
- ELSIF (REC_MAT_COIL.SIZE_ABLE = 'XX' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- COMM.REC_ERR.P_ERR_MSG := '尺寸不在订单公差范围: ' || P_MAT_NO || '宽度 ' || REC_MAT_COIL.MAT_WTH || ' , 厚度: ' || REC_MAT_COIL.MAT_THK || '; '
- || P_ORD_NO || P_ORD_SEQ || '的宽度公差 ' || REC_MAT_COIL.ORD_WTH_MIN || '~' || REC_MAT_COIL.ORD_WTH_MAX ||
- '厚度公差 ' || REC_MAT_COIL.ORD_THK_MIN || '~' ||
- REC_MAT_COIL.ORD_THK_MAX;
- RAISE VE_SIZE;
- ELSIF (REC_MAT_COIL.WGT_ABLE = 'XX' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- COMM.REC_ERR.P_ERR_MSG := '单重不在订单公差范围: ' || P_MAT_NO || '重量 ' || REC_MAT_SLAB.MAT_WGT || ' ' ||
- P_ORD_NO || P_ORD_SEQ || '的单重公差 ' ||
- REC_MAT_COIL.ORD_UNIT_WGT_MIN || '~' ||
- REC_MAT_COIL.ORD_UNIT_WGT_MAX;
- RAISE VE_WGT;
- ELSIF (REC_MAT_COIL.CHEN_FEN_ABLE = 'XX' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- RAISE VE_CHEN_FEN;
- ELSIF (REC_MAT_COIL.CAI_ZHI_ABLE = 'XX' AND NVL(SIGN_QIANGZHI,'N') <> 'Y') THEN
- RAISE VE_CAI_ZHI;
- ELSIF (REC_MAT_COIL.PROG_CD_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'CUR_PROG_CD';
- COMM.REC_ERR.P_ERR_MSG := '当前进程状态不符合!当前进程状态为: '||REC_MAT_COIL.CUR_PROG_CD;
- RAISE VE_PROG_CD;
- ELSIF (REC_MAT_COIL.DLIV_ABLE <> 'YY') THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'DLIV_NO';
- COMM.REC_ERR.P_ERR_MSG := '该钢卷已发货,发货号为 '||REC_MAT_COIL.DLIV_DIRNO;
- RAISE VE_DLIV;
- END IF;
- END LOOP;
- CLOSE CUR_MAT_COIL;
- ELSE
- -- RAISE VE;
- NULL;
- END IF;
- COMM.REC_ERR.P_RTN_MSG:= '符合充当条件';
- EXCEPTION
- WHEN VE THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'P_MAT_NO';
- COMM.REC_ERR.P_ERR_MSG := P_MAT_NO || '该物料不存在,请核查';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- --COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- --P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_ORD_NO_NULL THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'P_ORD_NO';
- COMM.REC_ERR.P_ERR_MSG := '订单号为空';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- WHEN VE_ORD_SEQ_NULL THEN
- COMM.REC_ERR.P_ERR_PARAM1 := 'P_ORD_SEQ';
- COMM.REC_ERR.P_ERR_MSG := '订单号为空';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- --COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- --P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_STAT THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- -- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- -- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_ORD_FL THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- -- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- -- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_STL THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- -- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- -- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_SIZE THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- WHEN VE_WGT THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- --COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- -- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_CHEN_FEN THEN
- COMM.REC_ERR.P_ERR_MSG := '成分不合格';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- -- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- --P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN VE_CAI_ZHI THEN
- COMM.REC_ERR.P_ERR_MSG := '材质不合格';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- -- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE);
- -- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- /* WHEN COMM.PE THEN
- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN OTHERS THEN
- COMM.CALL_OTHER_EXCEPTION_DO(P_RTN_MSG);*/
- WHEN VE_PROG_CD THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- WHEN VE_DLIV THEN
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- END;
- PROCEDURE CHK_IS_SYN IS
- LV_PRC_STS VARCHAR(1) := 'C';
- VE_SYN EXCEPTION;
- BEGIN
- SELECT PRC_STS
- INTO LV_PRC_STS -- 进程状态
- FROM TBE05_JOB_DET
- WHERE PLT = 'R' -- 参数:工厂
- AND MAIN_PGMID = 'NIE031000' -- 参数:主程序 ID
- AND SEQ = 3;
- IF LV_PRC_STS <> 'C' THEN
- RAISE VE_SYN;
- END IF;
- EXCEPTION
- WHEN VE_SYN THEN
- -- COMM.REC_ERR.P_ERR_PARAM1 := 'LV_PRC_STS';
- COMM.REC_ERR.P_ERR_MSG := '手动充当进行中,如要更改为自动充当,请先关闭充当进程,这将会导致自动充当结果被放弃';
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- END;
- PROCEDURE SERVE_HIS
- (
- P_MAT_TYPE IN VARCHAR
- ,P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,P_REG_ID IN VARCHAR
- ) IS
- BEGIN
- COMM.INIT_USER(P_REG_ID);
- INSERT INTO TBE04_REP_HIS
- (REP_TYP,
- REP_KND,
- REG_ID,
- MOD_PGM_ID,
- REG_DTIME,
- UPD_AFT_ORD_NO,
- UPD_AFT_ORD_SEQ,
- UPD_AFT_CUST_CD,
- MAT_NO,
- MAT_TYPE,
- UPD_BEF_ORD_NO,
- UPD_BEF_ORD_SEQ,
- UPD_BEF_CUST_CD)
- -- (1) 充当代码, 充当方法, 录入者, 变更程序ID, 录入时间,
- -- (2) 变更前合同号, 变更前订单号, 变更前客户代码, 物料类型,
- -- (3) 物料号, 变更后合同号, 变更后订单号, 变更后客户代码
- SELECT 'A',
- 'M',
- P_REG_ID,
- 'UIE031045',
- TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
- ORD_NO,
- ORD_SEQ,
- CUST_CD,
- P_MAT_NO,
- P_MAT_TYPE,
- '',
- '',
- ''
- FROM TBE02_ORD_PRC
- WHERE ORD_NO = P_ORD_NO
- AND ORD_SEQ = P_ORD_SEQ;
- END;
- PROCEDURE SLAB_SERVE (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,P_REG_ID IN VARCHAR
- )IS
- BEGIN
- UPDATE TBG02_SLAB_COMM A SET
- BEF_PROG_CD = CUR_PROG_CD,
- BEF_PROG_CD_PGM = CUR_PROG_CD_PGM,
- BEF_PROG_CD_DTIME = CUR_PROG_CD_DTIME,
- CUR_PROG_CD = 'RBA',
- CUR_PROG_CD_PGM = 'NIE03_SERVEAS',
- CUR_PROG_CD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
- ORD_FL = '1',
- NONORD_CAUSE_CD = '',
- NONORD_OCR_DTIME = '',
- MOD_ID = P_REG_ID,
- MOD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
- ORG_ORD_NO = DECODE(ORD_FL,'1',ORD_NO,''),
- ORG_ORD_SEQ = DECODE(ORD_FL,'1',ORD_SEQ,''),
- (ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USE_CD, PRODNM_CD, SF_METHOD,
- SPEC_ABBSYM, DEVLMT_DTIME, INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_INDIA,
- INSTR_COIL_WGT, INSTR_COIL_LEN, INSTR_COIL_OUTDIA, SLAB_INGR_DEC_GRD) =
- (SELECT ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USEAGE_CD, PRODNM_CD, SCARPING_PROC_YN,
- SPEC_ABBSYM, DEL_TO_DATE, ORD_THK, ORD_WTH, ORD_INDIA,
- (A.SLAB_WGT * C.PROC_RATE / 100),
- (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_THK * B.ORD_WTH * 7.85) * 1000000,
- SQRT(4 * (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_WTH / 1000000 * 7.85 * 3.14 ) + (B.ORD_INDIA * B.ORD_INDIA)),
- DECODE(GF_NIB028720(A.SLAB_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2')
- FROM TBE02_ORD_PRC B, (
- SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') C
- WHERE ORD_NO = P_ORD_NO
- AND ORD_SEQ = P_ORD_SEQ)
- WHERE SLAB_NO = P_MAT_NO;
- DELETE TBG02_SLAB_COMM_D
- WHERE SLAB_NO = P_MAT_NO;
- INSERT INTO TBG02_SLAB_COMM_D
- ( SLAB_NO, SLAB_CUT_SEQ, SLAB_THK, SLAB_WTH, SLAB_LEN,
- ORD_THK, ORD_WTH, ORD_LEN, ORD_WGT, COIL_INDIA,
- COIL_OUTDIA, ORD_NO, ORD_SEQ, ORD_FL
- )
- SELECT SLAB_NO, '01', SLAB_THK, SLAB_WTH, SLAB_LEN,
- INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_LEN, INSTR_COIL_WGT, INSTR_COIL_INDIA,
- INSTR_COIL_OUTDIA, ORD_NO, ORD_SEQ, '1'
- FROM TBG02_SLAB_COMM
- WHERE SLAB_NO = P_MAT_NO;
- END;
- PROCEDURE COIL_SERVE (
- P_MAT_NO IN VARCHAR
- ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE
- ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE
- ,P_REG_ID IN VARCHAR
- )IS
- BEGIN
- UPDATE TBH02_COIL_COMM A SET
- BEF_PROG_CD = CUR_PROG_CD,
- BEF_PROG_CD_PGM = CUR_PROG_CD_PGM,
- BEF_PROG_CD_DTIME = CUR_PROG_CD_DTIME,
- CUR_PROG_CD = 'SFA',
- CUR_PROG_CD_PGM = 'NIE03_SERVEAS',
- CUR_PROG_CD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'),
- ORD_FL = '1',
- TOT_DEC_GRD = '1',
- NONORD_CAUSE_CD = '',
- NONORD_OCR_DTIME = '',
- ORG_ORD_NO = DECODE(ORD_FL,'1',ORD_NO,''),
- ORG_ORD_SEQ = DECODE(ORD_FL,'1',ORD_SEQ,''),
- (ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USE_CD, SPEC_ABBSYM, PRODNM_CD, SPM_YN,
- DEVLMT_DTIME, DEST_CD, INGR_DEC_GRD, MATLQLTY_DEC_GRD,INSTR_COIL_THK -- 订单厚度
- ,INSTR_COIL_WTH -- 订单宽度
- ,INSTR_COIL_LEN -- 订单长度
- ,INSTR_COIL_INDIA -- 订单内径
- ,INSTR_COIL_OUTDIA -- 订单外径
- ,INSTR_COIL_WGT -- 订单重量
- ) =
- (SELECT ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USEAGE_CD, SPEC_ABBSYM, PRODNM_CD, SPM_PROC_YN,
- DEL_TO_DATE, DEST_CD,
- DECODE(GF_NIB028720(A.SLAB_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2'),
- DECODE(GF_NIB028750(A.COIL_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2'),ORD_THK -- 订单厚度
- ,ORD_WTH -- 订单宽度
- ,ORD_LEN -- 订单长度
- ,ORD_INDIA -- 订单内径
- ,ORD_OUTDIA -- 订单外径
- ,ORD_WGT -- 订单重量
- FROM TBE02_ORD_PRC
- WHERE ORD_NO = P_ORD_NO
- AND ORD_SEQ = P_ORD_SEQ)
- WHERE OLD_SAMPL_NO = P_MAT_NO;
- DELETE TBH02_COIL_COMM_D
- WHERE COIL_NO = (SELECT COIL_NO FROM TBH02_COIL_COMM WHERE OLD_SAMPL_NO = P_MAT_NO);
- INSERT INTO TBH02_COIL_COMM_D
- ( COIL_NO, CUT_SEQ, ORD_THK, ORD_WTH, ORD_LEN,
- ORD_WGT, ORD_WGT_MIN, ORD_WGT_MAX, ORD_INDIA, ORD_OUTDIA,
- ORD_NO, ORD_SEQ, ORD_FL
- )
- SELECT A.COIL_NO, '01', A.COIL_THK, A.COIL_WTH, A.COIL_LEN,
- A.ACT_WGT, B.ORD_UNIT_WGT_MIN, B.ORD_UNIT_WGT_MAX, A.COIL_INDIA, A.COIL_OUTDIA,
- A.ORD_NO, A.ORD_SEQ, '1'
- FROM TBH02_COIL_COMM A, TBE02_ORD_PRC B
- WHERE A.ORD_NO = B.ORD_NO
- AND A.ORD_SEQ = B.ORD_SEQ
- AND A.OLD_SAMPL_NO = P_MAT_NO;
- NULL;
- END;
- PROCEDURE MAT_REP_EACH_OTHER( P_MAT1 VARCHAR --物料号1
- ,P_MAT2 VARCHAR --物料号2
- ,SIGN_STL IN VARCHAR := 'Y'
- ,SIGN_CHEN_FEN IN VARCHAR := 'Y'
- ,SING_CAIZHI IN VARCHAR := 'Y'
- ,SIGN_QIANGZHI IN VARCHAR := 'N'
- ,P_REG_ID IN VARCHAR := 'NO_USER'
- ,P_RTN_MSG OUT VARCHAR
- ) IS
- GV_ORD_NO1 TBE02_ORD_PRC.ORD_NO%TYPE :='' ;
- GV_ORD_SEQ1 TBE02_ORD_PRC.ORD_SEQ%TYPE :='';
- GV_ORD_NO2 TBE02_ORD_PRC.ORD_NO%TYPE :='';
- GV_ORD_SEQ2 TBE02_ORD_PRC.ORD_SEQ%TYPE :='';
- BEGIN
- MAT_CHK(P_MAT1,P_MAT2);
- INIT_MAT_TYPE(P_MAT1);
- IF(GV_MAT_TYPE = 'AR') THEN
- SELECT DECODE(ORD_FL,'1',A.ORD_NO,'XX'),DECODE(ORD_FL,'1',A.ORD_SEQ ,'XX')
- INTO GV_ORD_NO1,GV_ORD_SEQ1
- FROM TBH02_COIL_COMM A
- WHERE A.OLD_SAMPL_NO = P_MAT1
- AND A.COIL_STAT IN ('2','4')
- -- AND A.ORD_FL = '1'
- AND A.DLIV_DIRNO IS NULL
- AND ROWNUM = 1;
- SELECT DECODE(ORD_FL,'1',A.ORD_NO,'XX'),DECODE(ORD_FL,'1',A.ORD_SEQ ,'XX')
- INTO GV_ORD_NO2,GV_ORD_SEQ2
- FROM TBH02_COIL_COMM A
- WHERE A.OLD_SAMPL_NO = P_MAT2
- -- AND A.ORD_FL = '1'
- AND A.DLIV_DIRNO IS NULL
- AND A.COIL_STAT IN ('2','4')
- AND ROWNUM = 1;
- ELSIF(GV_MAT_TYPE = 'TM') THEN
- SELECT DECODE(ORD_FL,'1',A.ORD_NO,'XX'),DECODE(ORD_FL,'1',A.ORD_SEQ ,'XX')
- INTO GV_ORD_NO1,GV_ORD_SEQ1
- FROM TBG02_SLAB_COMM A
- WHERE A.SLAB_NO = P_MAT1
- -- AND A.ORD_FL = '1'
- AND A.SLAB_STAT = '2'
- AND ROWNUM = 1;
- SELECT DECODE(ORD_FL,'1',A.ORD_NO,'XX'),DECODE(ORD_FL,'1',A.ORD_SEQ ,'XX')
- INTO GV_ORD_NO2,GV_ORD_SEQ2
- FROM TBG02_SLAB_COMM A
- WHERE A.SLAB_NO = P_MAT2
- AND A.SLAB_STAT = '2'
- -- AND A.ORD_FL = '1'
- AND ROWNUM = 1;
- END IF;
- IF(GV_ORD_NO2 <> 'XX' AND GV_ORD_SEQ2 <> 'XX' ) THEN
- REP_MAIN(P_MAT1,GV_ORD_NO2,GV_ORD_SEQ2,SIGN_STL,SIGN_CHEN_FEN,SING_CAIZHI,SIGN_QIANGZHI,P_REG_ID,P_RTN_MSG);
- END IF;
- IF (GV_ORD_NO1 <> 'XX' OR GV_ORD_SEQ1 <> 'XX' ) THEN
- REP_MAIN(P_MAT2,GV_ORD_NO1,GV_ORD_SEQ1,SIGN_STL,SIGN_CHEN_FEN,SING_CAIZHI,SIGN_QIANGZHI,P_REG_ID,P_RTN_MSG);
- END IF;
- EXCEPTION
- WHEN COMM.PE THEN
- P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG;
- WHEN OTHERS THEN
- COMM.CALL_OTHER_EXCEPTION_DO(P_RTN_MSG);
- END;
- PROCEDURE MAT_CHK( P_MAT1 VARCHAR
- ,P_MAT2 VARCHAR) IS
- VE_LEN_MAT EXCEPTION;
- BEGIN
- IF(LENGTH(P_MAT1) <> LENGTH(P_MAT2) AND LENGTH(P_MAT1) <> 13) THEN
- RAISE VE_LEN_MAT;
- END IF;
- EXCEPTION
- WHEN VE_LEN_MAT THEN
- COMM.REC_ERR.P_ERR_MSG := '请检查物料';
- COMM.REC_ERR.P_ERR_PARAM1 := 'P_MAT1: ' || P_MAT1;
- COMM.REC_ERR.P_ERR_PARAM2 := 'P_MAT2: ' || P_MAT2;
- COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG);
- END;
- END NIE03_SERVEAS;
- /
|