Node-server for unitstock app
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

782 lines
24 KiB

  1. -----------------------------------------------------------------------------
  2. --
  3. -- Logical unit: StockTakingUnitDet
  4. --
  5. -- Purpose:
  6. --
  7. -- IFS/Design Template Version 2.2
  8. --
  9. -- Date Sign History
  10. -- ------ ---- -----------------------------------------------------------
  11. -----------------------------------------------------------------------------
  12. DEFINE MODULE = INCON
  13. DEFINE LU = StockTakingUnitDet
  14. DEFINE TABLE = STOCK_TAKING_UNIT_DET_TAB
  15. DEFINE VIEW = STOCK_TAKING_UNIT_DET
  16. DEFINE PKG = STOCK_TAKING_UNIT_DET_API
  17. DEFINE OBJID = rowid
  18. DEFINE OBJVERSION = "ltrim(lpad(to_char(rowversion,'YYYYMMDDHH24MISS'),2000))"
  19. -----------------------------------------------------------------------------
  20. -------------------- VIEWS FOR SELECTS --------------------------------------
  21. -----------------------------------------------------------------------------
  22. PROMPT Creating &VIEW view
  23. CREATE OR REPLACE VIEW &VIEW AS
  24. SELECT company company,
  25. stock_taking_unit_id stock_taking_unit_id,
  26. mesin mesin,
  27. flag_reject flag_reject,
  28. keterangan keterangan,
  29. &OBJID objid,
  30. &OBJVERSION objversion
  31. FROM stock_taking_unit_det_tab
  32. WITH read only;
  33. COMMENT ON TABLE &VIEW
  34. IS 'LU=&LU^PROMPT=Stock Taking Unit Det^MODULE=&MODULE^';
  35. COMMENT ON COLUMN &VIEW..company
  36. IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Company^';
  37. COMMENT ON COLUMN &VIEW..stock_taking_unit_id
  38. IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Stock Taking Unit Id^REF=StockTakingUnit(company)^';
  39. COMMENT ON COLUMN &VIEW..mesin
  40. IS 'FLAGS=KMI-L^DATATYPE=STRING(30)/UPPERCASE^PROMPT=Mesin^REF=StokFaktur(company)^';
  41. COMMENT ON COLUMN &VIEW..flag_reject
  42. IS 'FLAGS=AMIUL^DATATYPE=BOOLEAN^PROMPT=Flag Reject^';
  43. COMMENT ON COLUMN &VIEW..keterangan
  44. IS 'FLAGS=A-IUL^DATATYPE=STRING(200)^PROMPT=Keterangan^';
  45. -----------------------------------------------------------------------------
  46. -------------------- PACKAGES FOR METHODS -----------------------------------
  47. -----------------------------------------------------------------------------
  48. PROMPT Creating &PKG implementation
  49. CREATE OR REPLACE PACKAGE BODY &PKG IS
  50. -----------------------------------------------------------------------------
  51. -------------------- LU SPECIFIC IMPLEMENTATION METHOD DECLARATIONS ---------
  52. -----------------------------------------------------------------------------
  53. -----------------------------------------------------------------------------
  54. -------------------- IMPLEMENTATION BASE METHODS ----------------------------
  55. -----------------------------------------------------------------------------
  56. -- Lock_By_Id___
  57. -- Client-support to lock a specific instance of the logical unit.
  58. --
  59. -- Lock_By_Keys___
  60. -- Server support to lock a specific instance of the logical unit.
  61. --
  62. -- Get_Object_By_Id___
  63. -- Get LU-record from the database with a specified object identity.
  64. --
  65. -- Get_Object_By_Keys___
  66. -- Get LU-record from the database with specified key columns.
  67. --
  68. -- Check_Exist___
  69. -- Check if a specific LU-instance already exist in the database.
  70. --
  71. -- Get_Id_Version_By_Keys___
  72. -- Get the current OBJID and OBJVERSION for a specific LU-instance.
  73. -----------------------------------------------------------------------------
  74. FUNCTION Lock_By_Id___ (
  75. objid_ IN VARCHAR2,
  76. objversion_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  77. IS
  78. row_changed EXCEPTION;
  79. row_deleted EXCEPTION;
  80. row_locked EXCEPTION;
  81. PRAGMA exception_init(row_locked, -0054);
  82. rec_ &TABLE%ROWTYPE;
  83. dummy_ NUMBER;
  84. CURSOR lock_control IS
  85. SELECT *
  86. FROM &TABLE
  87. WHERE &OBJID = objid_
  88. AND &OBJVERSION = objversion_
  89. FOR UPDATE NOWAIT;
  90. CURSOR exist_control IS
  91. SELECT 1
  92. FROM &TABLE
  93. WHERE &OBJID = objid_;
  94. BEGIN
  95. OPEN lock_control;
  96. FETCH lock_control INTO rec_;
  97. IF (lock_control%FOUND) THEN
  98. CLOSE lock_control;
  99. RETURN rec_;
  100. END IF;
  101. CLOSE lock_control;
  102. OPEN exist_control;
  103. FETCH exist_control INTO dummy_;
  104. IF (exist_control%FOUND) THEN
  105. CLOSE exist_control;
  106. RAISE row_changed;
  107. ELSE
  108. CLOSE exist_control;
  109. RAISE row_deleted;
  110. END IF;
  111. EXCEPTION
  112. WHEN row_locked THEN
  113. Error_SYS.Record_Locked(lu_name_);
  114. WHEN row_changed THEN
  115. Error_SYS.Record_Modified(lu_name_);
  116. WHEN row_deleted THEN
  117. Error_SYS.Record_Removed(lu_name_);
  118. END Lock_By_Id___;
  119. FUNCTION Lock_By_Keys___ (
  120. company_ IN VARCHAR2,
  121. stock_taking_unit_id_ IN VARCHAR2,
  122. mesin_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  123. IS
  124. row_deleted EXCEPTION;
  125. rec_ &TABLE%ROWTYPE;
  126. CURSOR lock_control IS
  127. SELECT *
  128. FROM &TABLE
  129. WHERE company = company_
  130. AND stock_taking_unit_id = stock_taking_unit_id_
  131. AND mesin = mesin_
  132. FOR UPDATE;
  133. BEGIN
  134. OPEN lock_control;
  135. FETCH lock_control INTO rec_;
  136. IF (lock_control%FOUND) THEN
  137. CLOSE lock_control;
  138. RETURN rec_;
  139. ELSE
  140. CLOSE lock_control;
  141. RAISE row_deleted;
  142. END IF;
  143. EXCEPTION
  144. WHEN row_deleted THEN
  145. Error_SYS.Record_Removed(lu_name_);
  146. END Lock_By_Keys___;
  147. FUNCTION Get_Object_By_Id___ (
  148. objid_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  149. IS
  150. lu_rec_ &TABLE%ROWTYPE;
  151. CURSOR getrec IS
  152. SELECT *
  153. FROM &TABLE
  154. WHERE &OBJID = objid_;
  155. BEGIN
  156. OPEN getrec;
  157. FETCH getrec INTO lu_rec_;
  158. IF (getrec%NOTFOUND) THEN
  159. CLOSE getrec;
  160. Error_SYS.Record_Removed(lu_name_);
  161. END IF;
  162. CLOSE getrec;
  163. RETURN(lu_rec_);
  164. END Get_Object_By_Id___;
  165. FUNCTION Get_Object_By_Keys___ (
  166. company_ IN VARCHAR2,
  167. stock_taking_unit_id_ IN VARCHAR2,
  168. mesin_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  169. IS
  170. lu_rec_ &TABLE%ROWTYPE;
  171. CURSOR getrec IS
  172. SELECT *
  173. FROM &TABLE
  174. WHERE company = company_
  175. AND stock_taking_unit_id = stock_taking_unit_id_
  176. AND mesin = mesin_;
  177. BEGIN
  178. OPEN getrec;
  179. FETCH getrec INTO lu_rec_;
  180. CLOSE getrec;
  181. RETURN(lu_rec_);
  182. END Get_Object_By_Keys___;
  183. FUNCTION Check_Exist___ (
  184. company_ IN VARCHAR2,
  185. stock_taking_unit_id_ IN VARCHAR2,
  186. mesin_ IN VARCHAR2 ) RETURN BOOLEAN
  187. IS
  188. dummy_ NUMBER;
  189. CURSOR exist_control IS
  190. SELECT 1
  191. FROM &TABLE
  192. WHERE company = company_
  193. AND stock_taking_unit_id = stock_taking_unit_id_
  194. AND mesin = mesin_;
  195. BEGIN
  196. OPEN exist_control;
  197. FETCH exist_control INTO dummy_;
  198. IF (exist_control%FOUND) THEN
  199. CLOSE exist_control;
  200. RETURN(TRUE);
  201. END IF;
  202. CLOSE exist_control;
  203. RETURN(FALSE);
  204. END Check_Exist___;
  205. PROCEDURE Get_Id_Version_By_Keys___ (
  206. objid_ IN OUT VARCHAR2,
  207. objversion_ IN OUT VARCHAR2,
  208. company_ IN VARCHAR2,
  209. stock_taking_unit_id_ IN VARCHAR2,
  210. mesin_ IN VARCHAR2)
  211. IS
  212. CURSOR get_version IS
  213. SELECT &OBJID, &OBJVERSION
  214. FROM &TABLE
  215. WHERE company = company_
  216. AND stock_taking_unit_id = stock_taking_unit_id_
  217. AND mesin = mesin_;
  218. BEGIN
  219. OPEN get_version;
  220. FETCH get_version INTO objid_, objversion_;
  221. CLOSE get_version;
  222. END Get_Id_Version_By_Keys___;
  223. -----------------------------------------------------------------------------
  224. -------------------- IMPLEMENTATION BASE METHODS FOR INSERT -----------------
  225. -----------------------------------------------------------------------------
  226. -- Prepare_Insert___
  227. -- Set all default values for a new instance (ON-NEW-RECORD) of this
  228. -- logical unit by calling procedure Add_Attr.
  229. --
  230. -- Unpack_Check_Insert___
  231. -- Unpack the attribute list, check all attributes from the client
  232. -- and generate all default values before creation of the new object.
  233. --
  234. -- Insert___
  235. -- Insert a new LU-instance into the database and return the values
  236. -- for OBJID and OBJVERSION.
  237. -----------------------------------------------------------------------------
  238. PROCEDURE Prepare_Insert___ (
  239. attr_ IN OUT VARCHAR2 )
  240. IS
  241. BEGIN
  242. Client_SYS.Clear_Attr(attr_);
  243. END Prepare_Insert___;
  244. PROCEDURE Unpack_Check_Insert___ (
  245. attr_ IN OUT VARCHAR2,
  246. newrec_ IN OUT &TABLE%ROWTYPE )
  247. IS
  248. ptr_ NUMBER;
  249. name_ VARCHAR2(30);
  250. value_ VARCHAR2(2000);
  251. BEGIN
  252. ptr_ := NULL;
  253. WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP
  254. IF (name_ = 'COMPANY') THEN
  255. newrec_.company := value_;
  256. ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN
  257. newrec_.stock_taking_unit_id := value_;
  258. Stock_Taking_Unit_API.Exist(newrec_.company, newrec_.stock_taking_unit_id);
  259. ELSIF (name_ = 'MESIN') THEN
  260. newrec_.mesin := value_;
  261. Stok_Faktur_API.Exist(newrec_.company, newrec_.mesin);
  262. ELSIF (name_ = 'FLAG_REJECT') THEN
  263. newrec_.flag_reject := value_;
  264. ELSIF (name_ = 'KETERANGAN') THEN
  265. newrec_.keterangan := value_;
  266. ELSE
  267. Error_SYS.Item_Not_Exist(lu_name_, name_, value_);
  268. END IF;
  269. END LOOP;
  270. Client_SYS.Clear_Attr(attr_);
  271. Error_SYS.Check_Not_Null(lu_name_, 'COMPANY', newrec_.company);
  272. Error_SYS.Check_Not_Null(lu_name_, 'STOCK_TAKING_UNIT_ID', newrec_.stock_taking_unit_id);
  273. Error_SYS.Check_Not_Null(lu_name_, 'MESIN', newrec_.mesin);
  274. Error_SYS.Check_Not_Null(lu_name_, 'FLAG_REJECT', newrec_.flag_reject);
  275. EXCEPTION
  276. WHEN value_error THEN
  277. Error_SYS.Item_Format(lu_name_, name_, value_);
  278. END Unpack_Check_Insert___;
  279. PROCEDURE Insert___ (
  280. objid_ OUT VARCHAR2,
  281. objversion_ OUT VARCHAR2,
  282. newrec_ IN OUT &TABLE%ROWTYPE,
  283. attr_ IN OUT VARCHAR2 )
  284. IS
  285. BEGIN
  286. newrec_.rowversion := sysdate;
  287. objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS');
  288. INSERT
  289. INTO stock_taking_unit_det_tab (
  290. company,
  291. stock_taking_unit_id,
  292. mesin,
  293. flag_reject,
  294. keterangan,
  295. rowversion)
  296. VALUES (
  297. newrec_.company,
  298. newrec_.stock_taking_unit_id,
  299. newrec_.mesin,
  300. newrec_.flag_reject,
  301. newrec_.keterangan,
  302. newrec_.rowversion);
  303. objid_ := DBMS_sql.last_row_id;
  304. -- SELECT &OBJID
  305. -- INTO objid_
  306. -- FROM &TABLE
  307. -- WHERE company = newrec_.company
  308. -- AND stock_taking_unit_id = newrec_.stock_taking_unit_id
  309. -- AND mesin = newrec_.mesin;
  310. EXCEPTION
  311. WHEN dup_val_on_index THEN
  312. Error_SYS.Record_Exist(lu_name_);
  313. END Insert___;
  314. -----------------------------------------------------------------------------
  315. -------------------- IMPLEMENTATION BASE METHODS FOR UPDATE -----------------
  316. -----------------------------------------------------------------------------
  317. -- Unpack_Check_Update___
  318. -- Unpack the attribute list, check all attributes from the client
  319. -- and generate all default values before modifying the object.
  320. --
  321. -- Update___
  322. -- Update an existing LU-instance in the database and return the
  323. -- the new OBJVERSION.
  324. -----------------------------------------------------------------------------
  325. PROCEDURE Unpack_Check_Update___ (
  326. attr_ IN OUT VARCHAR2,
  327. newrec_ IN OUT &TABLE%ROWTYPE,
  328. objid_ IN VARCHAR2 )
  329. IS
  330. ptr_ NUMBER;
  331. name_ VARCHAR2(30);
  332. value_ VARCHAR2(2000);
  333. BEGIN
  334. ptr_ := NULL;
  335. WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP
  336. IF (name_ = 'COMPANY') THEN
  337. Error_SYS.Item_Update(lu_name_, 'COMPANY');
  338. ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN
  339. Error_SYS.Item_Update(lu_name_, 'STOCK_TAKING_UNIT_ID');
  340. ELSIF (name_ = 'MESIN') THEN
  341. Error_SYS.Item_Update(lu_name_, 'MESIN');
  342. ELSIF (name_ = 'FLAG_REJECT') THEN
  343. newrec_.flag_reject := value_;
  344. ELSIF (name_ = 'KETERANGAN') THEN
  345. newrec_.keterangan := value_;
  346. ELSE
  347. Error_SYS.Item_Not_Exist(lu_name_, name_, value_);
  348. END IF;
  349. END LOOP;
  350. Client_SYS.Clear_Attr(attr_);
  351. Error_SYS.Check_Not_Null(lu_name_, 'FLAG_REJECT', newrec_.flag_reject);
  352. EXCEPTION
  353. WHEN value_error THEN
  354. Error_SYS.Item_Format(lu_name_, name_, value_);
  355. END Unpack_Check_Update___;
  356. PROCEDURE Update___ (
  357. objid_ IN VARCHAR2,
  358. oldrec_ IN &TABLE%ROWTYPE,
  359. newrec_ IN OUT &TABLE%ROWTYPE,
  360. attr_ IN OUT VARCHAR2,
  361. objversion_ IN OUT VARCHAR2,
  362. by_keys_ IN BOOLEAN DEFAULT FALSE )
  363. IS
  364. BEGIN
  365. newrec_.rowversion := sysdate;
  366. objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS');
  367. IF by_keys_ THEN
  368. UPDATE stock_taking_unit_det_tab
  369. SET company = newrec_.company,
  370. stock_taking_unit_id = newrec_.stock_taking_unit_id,
  371. mesin = newrec_.mesin,
  372. flag_reject = newrec_.flag_reject,
  373. keterangan = newrec_.keterangan,
  374. rowversion = newrec_.rowversion
  375. WHERE company = newrec_.company
  376. AND stock_taking_unit_id = newrec_.stock_taking_unit_id
  377. AND mesin = newrec_.mesin;
  378. ELSE
  379. UPDATE stock_taking_unit_det_tab
  380. SET company = newrec_.company,
  381. stock_taking_unit_id = newrec_.stock_taking_unit_id,
  382. mesin = newrec_.mesin,
  383. flag_reject = newrec_.flag_reject,
  384. keterangan = newrec_.keterangan,
  385. rowversion = newrec_.rowversion
  386. WHERE &OBJID = objid_;
  387. END IF;
  388. EXCEPTION
  389. WHEN dup_val_on_index THEN
  390. Error_SYS.Record_Exist(lu_name_);
  391. END Update___;
  392. -----------------------------------------------------------------------------
  393. -------------------- IMPLEMENTATION BASE METHODS FOR DELETE -----------------
  394. -----------------------------------------------------------------------------
  395. -- Check_Delete___
  396. -- Checks whether a specific LU-record may be removed or not.
  397. -- The procedure should check business rules like attribute values
  398. -- as well as database constraints (defined or not).
  399. --
  400. -- Delete___
  401. -- Deletion of the specific LU-object from the database.
  402. -----------------------------------------------------------------------------
  403. PROCEDURE Check_Delete___ (
  404. remrec_ IN &TABLE%ROWTYPE )
  405. IS
  406. key_ VARCHAR2(2000);
  407. BEGIN
  408. key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^' || remrec_.mesin || '^';
  409. Reference_SYS.Check_Restricted_Delete(lu_name_, key_);
  410. END Check_Delete___;
  411. PROCEDURE Delete___ (
  412. objid_ IN VARCHAR2,
  413. remrec_ IN &TABLE%ROWTYPE )
  414. IS
  415. key_ VARCHAR2(2000);
  416. BEGIN
  417. key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^' || remrec_.mesin || '^';
  418. Reference_SYS.Do_Cascade_Delete(lu_name_, key_);
  419. DELETE
  420. FROM stock_taking_unit_det_tab
  421. WHERE &OBJID = objid_;
  422. END Delete___;
  423. -----------------------------------------------------------------------------
  424. -------------------- PRIVATE BASE METHODS -----------------------------------
  425. -----------------------------------------------------------------------------
  426. -- Lock__
  427. -- Client-support to lock a specific instance of the logical unit.
  428. --
  429. -- New__
  430. -- Client-support interface to create LU instances.
  431. -- action_ = 'PREPARE'
  432. -- Default values and handle of information to client.
  433. -- The default values are set in procedure Prepare_Insert___.
  434. -- action_ = 'CHECK'
  435. -- Check all attributes before creating new object and handle of
  436. -- information to client. The attribute list is unpacked, checked
  437. -- and prepared (defaults) in procedure Unpack_Check_Insert___.
  438. -- action_ = 'DO'
  439. -- Creation of new instances of the logical unit and handle of
  440. -- information to client. The attribute list is unpacked, checked
  441. -- and prepared (defaults) in procedure Unpack_Check_Insert___
  442. -- before calling procedure Insert___.
  443. --
  444. -- Modify__
  445. -- Client-support interface to modify attributes for LU instances.
  446. -- action_ = 'CHECK'
  447. -- Check all attributes before modifying an existing object and
  448. -- handle of information to client. The attribute list is unpacked,
  449. -- checked and prepared(defaults) in procedure Unpack_Check_Update___.
  450. -- action_ = 'DO'
  451. -- Modification of an existing instance of the logical unit. The
  452. -- procedure unpacks the attributes, checks all values before
  453. -- procedure Update___ is called.
  454. --
  455. -- Remove__
  456. -- Client-support interface to remove LU instances.
  457. -- action_ = 'CHECK'
  458. -- Check whether a specific LU-instance may be removed or not.
  459. -- The procedure fetches the complete record by calling procedure
  460. -- Get_Object_By_Id___. Then the check is made by calling procedure
  461. -- Check_Delete___.
  462. -- action_ = 'DO'
  463. -- Remove an existing instance of the logical unit. The procedure
  464. -- fetches the complete LU-record, checks for a delete and then
  465. -- deletes the record by calling procedure Delete___.
  466. -----------------------------------------------------------------------------
  467. PROCEDURE Lock__ (
  468. info_ OUT VARCHAR2,
  469. objid_ IN VARCHAR2,
  470. objversion_ IN VARCHAR2 )
  471. IS
  472. dummy_ &TABLE%ROWTYPE;
  473. BEGIN
  474. General_SYS.Init_Method(lu_name_, '&PKG', 'Lock__');
  475. dummy_ := Lock_By_Id___(objid_, objversion_);
  476. info_ := Client_SYS.Get_All_Info;
  477. END Lock__;
  478. PROCEDURE New__ (
  479. info_ OUT VARCHAR2,
  480. objid_ OUT VARCHAR2,
  481. objversion_ OUT VARCHAR2,
  482. attr_ IN OUT VARCHAR2,
  483. action_ IN VARCHAR2 )
  484. IS
  485. newrec_ &TABLE%ROWTYPE;
  486. BEGIN
  487. General_SYS.Init_Method(lu_name_, '&PKG', 'New__');
  488. IF (action_ = 'PREPARE') THEN
  489. Prepare_Insert___(attr_);
  490. ELSIF (action_ = 'CHECK') THEN
  491. Unpack_Check_Insert___(attr_, newrec_);
  492. ELSIF (action_ = 'DO') THEN
  493. Unpack_Check_Insert___(attr_, newrec_);
  494. Insert___(objid_, objversion_, newrec_, attr_);
  495. END IF;
  496. info_ := Client_SYS.Get_All_Info;
  497. END New__;
  498. PROCEDURE Modify__ (
  499. info_ OUT VARCHAR2,
  500. objid_ IN VARCHAR2,
  501. objversion_ IN OUT VARCHAR2,
  502. attr_ IN OUT VARCHAR2,
  503. action_ IN VARCHAR2 )
  504. IS
  505. oldrec_ &TABLE%ROWTYPE;
  506. newrec_ &TABLE%ROWTYPE;
  507. BEGIN
  508. General_SYS.Init_Method(lu_name_, '&PKG', 'Modify__');
  509. IF (action_ = 'CHECK') THEN
  510. newrec_ := Get_Object_By_Id___(objid_);
  511. Unpack_Check_Update___(attr_, newrec_, objid_);
  512. ELSIF (action_ = 'DO') THEN
  513. oldrec_ := Lock_By_Id___(objid_, objversion_);
  514. newrec_ := oldrec_;
  515. Unpack_Check_Update___(attr_, newrec_, objid_);
  516. Update___(objid_, oldrec_, newrec_, attr_, objversion_);
  517. END IF;
  518. info_ := Client_SYS.Get_All_Info;
  519. END Modify__;
  520. PROCEDURE Remove__ (
  521. info_ OUT VARCHAR2,
  522. objid_ IN VARCHAR2,
  523. objversion_ IN VARCHAR2,
  524. action_ IN VARCHAR2 )
  525. IS
  526. remrec_ &TABLE%ROWTYPE;
  527. BEGIN
  528. General_SYS.Init_Method(lu_name_, '&PKG', 'Remove__');
  529. IF (action_ = 'CHECK') THEN
  530. remrec_ := Get_Object_By_Id___(objid_);
  531. Check_Delete___(remrec_);
  532. ELSIF (action_ = 'DO') THEN
  533. remrec_ := Lock_By_Id___(objid_, objversion_);
  534. Check_Delete___(remrec_);
  535. Delete___(objid_, remrec_);
  536. END IF;
  537. info_ := Client_SYS.Get_All_Info;
  538. END Remove__;
  539. -----------------------------------------------------------------------------
  540. -------------------- PUBLIC BASE METHODS ------------------------------------
  541. -----------------------------------------------------------------------------
  542. -- Exist
  543. -- Checks if given pointer (e.g. primary key) to an instance of this
  544. -- logical unit exists. If not an exception will be raised.
  545. -----------------------------------------------------------------------------
  546. PROCEDURE Exist (
  547. company_ IN VARCHAR2,
  548. stock_taking_unit_id_ IN VARCHAR2,
  549. mesin_ IN VARCHAR2 )
  550. IS
  551. BEGIN
  552. General_SYS.Init_Method(lu_name_, '&PKG', 'Exist', TRUE);
  553. IF (NOT Check_Exist___(company_, stock_taking_unit_id_, mesin_)) THEN
  554. Error_SYS.Record_Not_Exist(lu_name_);
  555. END IF;
  556. END Exist;
  557. -----------------------------------------------------------------------------
  558. -------------------- LU SPECIFIC IMPLEMENTATION METHODS ---------------------
  559. -----------------------------------------------------------------------------
  560. -----------------------------------------------------------------------------
  561. -------------------- LU SPECIFIC PRIVATE METHODS ----------------------------
  562. -----------------------------------------------------------------------------
  563. -----------------------------------------------------------------------------
  564. -------------------- LU SPECIFIC PROTECTED METHODS --------------------------
  565. -----------------------------------------------------------------------------
  566. -----------------------------------------------------------------------------
  567. -------------------- LU SPECIFIC PUBLIC METHODS -----------------------------
  568. -----------------------------------------------------------------------------
  569. FUNCTION Get_Flag_Reject (
  570. company_ IN VARCHAR2,
  571. stock_taking_unit_id_ IN VARCHAR2,
  572. mesin_ IN VARCHAR2 ) RETURN VARCHAR2
  573. IS
  574. temp_ &TABLE..flag_reject%TYPE;
  575. CURSOR get_attr IS
  576. SELECT flag_reject
  577. FROM &TABLE
  578. WHERE company = company_
  579. AND stock_taking_unit_id = stock_taking_unit_id_
  580. AND mesin = mesin_;
  581. BEGIN
  582. OPEN get_attr;
  583. FETCH get_attr INTO temp_;
  584. CLOSE get_attr;
  585. RETURN temp_;
  586. END Get_Flag_Reject;
  587. FUNCTION Get_Keterangan (
  588. company_ IN VARCHAR2,
  589. stock_taking_unit_id_ IN VARCHAR2,
  590. mesin_ IN VARCHAR2 ) RETURN VARCHAR2
  591. IS
  592. temp_ &TABLE..keterangan%TYPE;
  593. CURSOR get_attr IS
  594. SELECT keterangan
  595. FROM &TABLE
  596. WHERE company = company_
  597. AND stock_taking_unit_id = stock_taking_unit_id_
  598. AND mesin = mesin_;
  599. BEGIN
  600. OPEN get_attr;
  601. FETCH get_attr INTO temp_;
  602. CLOSE get_attr;
  603. RETURN temp_;
  604. END Get_Keterangan;
  605. FUNCTION Get (
  606. company_ IN VARCHAR2,
  607. stock_taking_unit_id_ IN VARCHAR2,
  608. mesin_ IN VARCHAR2 ) RETURN Public_Rec
  609. IS
  610. temp_ Public_Rec;
  611. CURSOR get_attr IS
  612. SELECT flag_reject, keterangan
  613. FROM &TABLE
  614. WHERE company = company_
  615. AND stock_taking_unit_id = stock_taking_unit_id_
  616. AND mesin = mesin_;
  617. BEGIN
  618. OPEN get_attr;
  619. FETCH get_attr INTO temp_;
  620. CLOSE get_attr;
  621. RETURN temp_;
  622. END Get;
  623. PROCEDURE Create_Update_Record(
  624. company_ IN VARCHAR2,
  625. stock_taking_unit_id_ IN VARCHAR2,
  626. mesin_ IN VARCHAR2,
  627. flag_reject_ IN VARCHAR2,
  628. keterangan_ IN VARCHAR2)
  629. IS
  630. attr_ VARCHAR2(2000);
  631. objid_ VARCHAR2(200);
  632. objversion_ VARCHAR2(2000);
  633. info_ VARCHAR2(2000);
  634. BEGIN
  635. General_SYS.Init_Method(lu_name_, '&PKG', 'Create_Update_Record');
  636. Get_Id_Version_By_Keys___ (objid_, objversion_, company_,stock_taking_unit_id_,mesin_);
  637. IF objid_ IS NULL THEN
  638. Client_SYS.Add_To_Attr('COMPANY', company_, attr_);
  639. Client_SYS.Add_To_Attr('STOCK_TAKING_UNIT_ID', stock_taking_unit_id_, attr_);
  640. Client_SYS.Add_To_Attr('MESIN', mesin_, attr_);
  641. END IF;
  642. Client_SYS.Add_To_Attr('FLAG_REJECT', flag_reject_, attr_);
  643. Client_SYS.Add_To_Attr('KETERANGAN', keterangan_, attr_);
  644. IF objid_ IS NULL THEN
  645. New__(info_, objid_, objversion_, attr_, 'DO');
  646. ELSE
  647. Modify__(info_,objid_,objversion_,attr_,'DO');
  648. END IF;
  649. END Create_Update_Record;
  650. PROCEDURE Remove_Record(
  651. company_ IN VARCHAR2,
  652. stock_taking_unit_id_ IN VARCHAR2,
  653. mesin_ IN VARCHAR2)
  654. IS
  655. objid_ VARCHAR2(200);
  656. objversion_ VARCHAR2(2000);
  657. info_ VARCHAR2(2000);
  658. BEGIN
  659. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_,mesin_);
  660. Remove__(info_, objid_, objversion_, 'DO');
  661. END Remove_Record;
  662. PROCEDURE Update_Keterangan(
  663. company_ IN VARCHAR2,
  664. stock_taking_unit_id_ IN VARCHAR2,
  665. mesin_ IN VARCHAR2,
  666. keterangan_ IN VARCHAR2)
  667. IS
  668. attr_ VARCHAR2(2000);
  669. objid_ VARCHAR2(200);
  670. objversion_ VARCHAR2(2000);
  671. info_ VARCHAR2(2000);
  672. BEGIN
  673. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_,mesin_);
  674. Client_SYS.Add_To_Attr('KETERANGAN', keterangan_, attr_);
  675. Modify__(info_,objid_,objversion_,attr_,'DO');
  676. END Update_Keterangan;
  677. -----------------------------------------------------------------------------
  678. -------------------- FOUNDATION1 METHODS ------------------------------------
  679. -----------------------------------------------------------------------------
  680. -- Init
  681. -- Dummy procedure that can be called at database startup to ensure that
  682. -- this package is loaded into memory for performance reasons only.
  683. -----------------------------------------------------------------------------
  684. PROCEDURE Init
  685. IS
  686. BEGIN
  687. NULL;
  688. END Init;
  689. END &PKG;
  690. /
  691. SHOW ERROR
  692. -----------------------------------------------------------------------------