Node-server for unitstock app
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

886 рядки
28 KiB

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