Node-server for unitstock app
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

1516 rindas
47 KiB

  1. -----------------------------------------------------------------------------
  2. --
  3. -- Logical unit: StockTakingUnit
  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 = StockTakingUnit
  14. DEFINE TABLE = STOCK_TAKING_UNIT_TAB
  15. DEFINE VIEW = STOCK_TAKING_UNIT
  16. DEFINE PKG = STOCK_TAKING_UNIT_API
  17. DEFINE OBJID = rowid
  18. DEFINE OBJVERSION = "ltrim(lpad(to_char(rowversion,'YYYYMMDDHH24MISS'),2000))"
  19. DEFINE OBJSTATE = rowstate
  20. DEFINE OBJEVENTS = substrb(&PKG..Finite_State_Events__(&OBJSTATE),1,253)
  21. DEFINE STATE = substrb(&PKG..Finite_State_Decode__(&OBJSTATE),1,253)
  22. -----------------------------------------------------------------------------
  23. -------------------- VIEWS FOR SELECTS --------------------------------------
  24. -----------------------------------------------------------------------------
  25. PROMPT Creating &VIEW view
  26. CREATE OR REPLACE VIEW &VIEW AS
  27. SELECT company company,
  28. stock_taking_unit_id stock_taking_unit_id,
  29. tgl_stock_taking tgl_stock_taking,
  30. tgl_start tgl_start,
  31. tgl_selesai tgl_selesai,
  32. created_by created_by,
  33. created_date created_date,
  34. submit_by submit_by,
  35. submit_date submit_date,
  36. approved_by approved_by,
  37. approved_date approved_date,
  38. rejected_by rejected_by,
  39. rejected_date rejected_date,
  40. cabang_id cabang_id,
  41. &OBJID objid,
  42. &OBJVERSION objversion,
  43. &OBJSTATE objstate,
  44. &OBJEVENTS objevents,
  45. &STATE state
  46. FROM stock_taking_unit_tab
  47. WITH read only;
  48. COMMENT ON TABLE &VIEW
  49. IS 'LU=&LU^PROMPT=Stock Taking Unit^MODULE=&MODULE^';
  50. COMMENT ON COLUMN &VIEW..company
  51. IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Company^REF=Perusahaan^';
  52. COMMENT ON COLUMN &VIEW..stock_taking_unit_id
  53. IS 'FLAGS=KMI-L^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Stock Taking Unit Id^';
  54. COMMENT ON COLUMN &VIEW..tgl_stock_taking
  55. IS 'FLAGS=AMIUL^DATATYPE=DATE^PROMPT=Tgl Stock Taking^';
  56. COMMENT ON COLUMN &VIEW..tgl_start
  57. IS 'FLAGS=A-IUL^DATATYPE=DATE^PROMPT=Tgl Start^';
  58. COMMENT ON COLUMN &VIEW..tgl_selesai
  59. IS 'FLAGS=A-IUL^DATATYPE=DATE^PROMPT=Tgl Selesai^';
  60. COMMENT ON COLUMN &VIEW..created_by
  61. IS 'FLAGS=A-IUL^DATATYPE=STRING(50)^PROMPT=Created By^';
  62. COMMENT ON COLUMN &VIEW..created_date
  63. IS 'FLAGS=A-IUL^DATATYPE=DATE^PROMPT=Created Date^';
  64. COMMENT ON COLUMN &VIEW..submit_by
  65. IS 'FLAGS=A-IUL^DATATYPE=STRING(50)^PROMPT=Submit By^';
  66. COMMENT ON COLUMN &VIEW..submit_date
  67. IS 'FLAGS=A-IUL^DATATYPE=DATE^PROMPT=Submit Date^';
  68. COMMENT ON COLUMN &VIEW..approved_by
  69. IS 'FLAGS=A-IUL^DATATYPE=STRING(50)^PROMPT=Approved By^';
  70. COMMENT ON COLUMN &VIEW..approved_date
  71. IS 'FLAGS=A-IUL^DATATYPE=DATE^PROMPT=Approved Date^';
  72. COMMENT ON COLUMN &VIEW..rejected_by
  73. IS 'FLAGS=A-IUL^DATATYPE=STRING(50)^PROMPT=Rejected By^';
  74. COMMENT ON COLUMN &VIEW..rejected_date
  75. IS 'FLAGS=A-IUL^DATATYPE=DATE^PROMPT=Rejected Date^';
  76. COMMENT ON COLUMN &VIEW..cabang_id
  77. IS 'FLAGS=A-IU-^DATATYPE=STRING(30)/UPPERCASE^PROMPT=Cabang Id^REF=Cabang(company)^';
  78. -----------------------------------------------------------------------------
  79. -------------------- PACKAGES FOR METHODS -----------------------------------
  80. -----------------------------------------------------------------------------
  81. PROMPT Creating &PKG implementation
  82. CREATE OR REPLACE PACKAGE BODY &PKG IS
  83. -----------------------------------------------------------------------------
  84. -------------------- FINITE STATE DECLARATIONS ------------------------------
  85. -----------------------------------------------------------------------------
  86. db_state_list_ CONSTANT VARCHAR2(33) := 'Open^Submitted^Approved^Rejected^';
  87. client_state_list_ CONSTANT VARCHAR2(33) := 'Open^Submitted^Approved^Rejected^';
  88. active_state_list_ VARCHAR2(132) := Language_SYS.Translate_State_(lu_name_, client_state_list_);
  89. state_separator_ CONSTANT VARCHAR2(1) := Client_SYS.field_separator_;
  90. -----------------------------------------------------------------------------
  91. -------------------- LU SPECIFIC IMPLEMENTATION METHOD DECLARATIONS ---------
  92. -----------------------------------------------------------------------------
  93. -----------------------------------------------------------------------------
  94. -------------------- IMPLEMENTATION BASE METHODS ----------------------------
  95. -----------------------------------------------------------------------------
  96. -- Lock_By_Id___
  97. -- Client-support to lock a specific instance of the logical unit.
  98. --
  99. -- Lock_By_Keys___
  100. -- Server support to lock a specific instance of the logical unit.
  101. --
  102. -- Get_Object_By_Id___
  103. -- Get LU-record from the database with a specified object identity.
  104. --
  105. -- Get_Object_By_Keys___
  106. -- Get LU-record from the database with specified key columns.
  107. --
  108. -- Check_Exist___
  109. -- Check if a specific LU-instance already exist in the database.
  110. --
  111. -- Get_Id_Version_By_Keys___
  112. -- Get the current OBJID and OBJVERSION for a specific LU-instance.
  113. -----------------------------------------------------------------------------
  114. FUNCTION Lock_By_Id___ (
  115. objid_ IN VARCHAR2,
  116. objversion_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  117. IS
  118. row_changed EXCEPTION;
  119. row_deleted EXCEPTION;
  120. row_locked EXCEPTION;
  121. PRAGMA exception_init(row_locked, -0054);
  122. rec_ &TABLE%ROWTYPE;
  123. dummy_ NUMBER;
  124. CURSOR lock_control IS
  125. SELECT *
  126. FROM &TABLE
  127. WHERE &OBJID = objid_
  128. AND &OBJVERSION = objversion_
  129. FOR UPDATE NOWAIT;
  130. CURSOR exist_control IS
  131. SELECT 1
  132. FROM &TABLE
  133. WHERE &OBJID = objid_;
  134. BEGIN
  135. OPEN lock_control;
  136. FETCH lock_control INTO rec_;
  137. IF (lock_control%FOUND) THEN
  138. CLOSE lock_control;
  139. RETURN rec_;
  140. END IF;
  141. CLOSE lock_control;
  142. OPEN exist_control;
  143. FETCH exist_control INTO dummy_;
  144. IF (exist_control%FOUND) THEN
  145. CLOSE exist_control;
  146. RAISE row_changed;
  147. ELSE
  148. CLOSE exist_control;
  149. RAISE row_deleted;
  150. END IF;
  151. EXCEPTION
  152. WHEN row_locked THEN
  153. Error_SYS.Record_Locked(lu_name_);
  154. WHEN row_changed THEN
  155. Error_SYS.Record_Modified(lu_name_);
  156. WHEN row_deleted THEN
  157. Error_SYS.Record_Removed(lu_name_);
  158. END Lock_By_Id___;
  159. FUNCTION Lock_By_Keys___ (
  160. company_ IN VARCHAR2,
  161. stock_taking_unit_id_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  162. IS
  163. row_deleted EXCEPTION;
  164. rec_ &TABLE%ROWTYPE;
  165. CURSOR lock_control IS
  166. SELECT *
  167. FROM &TABLE
  168. WHERE company = company_
  169. AND stock_taking_unit_id = stock_taking_unit_id_
  170. FOR UPDATE;
  171. BEGIN
  172. OPEN lock_control;
  173. FETCH lock_control INTO rec_;
  174. IF (lock_control%FOUND) THEN
  175. CLOSE lock_control;
  176. RETURN rec_;
  177. ELSE
  178. CLOSE lock_control;
  179. RAISE row_deleted;
  180. END IF;
  181. EXCEPTION
  182. WHEN row_deleted THEN
  183. Error_SYS.Record_Removed(lu_name_);
  184. END Lock_By_Keys___;
  185. FUNCTION Get_Object_By_Id___ (
  186. objid_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  187. IS
  188. lu_rec_ &TABLE%ROWTYPE;
  189. CURSOR getrec IS
  190. SELECT *
  191. FROM &TABLE
  192. WHERE &OBJID = objid_;
  193. BEGIN
  194. OPEN getrec;
  195. FETCH getrec INTO lu_rec_;
  196. IF (getrec%NOTFOUND) THEN
  197. CLOSE getrec;
  198. Error_SYS.Record_Removed(lu_name_);
  199. END IF;
  200. CLOSE getrec;
  201. RETURN(lu_rec_);
  202. END Get_Object_By_Id___;
  203. FUNCTION Get_Object_By_Keys___ (
  204. company_ IN VARCHAR2,
  205. stock_taking_unit_id_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE
  206. IS
  207. lu_rec_ &TABLE%ROWTYPE;
  208. CURSOR getrec IS
  209. SELECT *
  210. FROM &TABLE
  211. WHERE company = company_
  212. AND stock_taking_unit_id = stock_taking_unit_id_;
  213. BEGIN
  214. OPEN getrec;
  215. FETCH getrec INTO lu_rec_;
  216. CLOSE getrec;
  217. RETURN(lu_rec_);
  218. END Get_Object_By_Keys___;
  219. FUNCTION Check_Exist___ (
  220. company_ IN VARCHAR2,
  221. stock_taking_unit_id_ IN VARCHAR2 ) RETURN BOOLEAN
  222. IS
  223. dummy_ NUMBER;
  224. CURSOR exist_control IS
  225. SELECT 1
  226. FROM &TABLE
  227. WHERE company = company_
  228. AND stock_taking_unit_id = stock_taking_unit_id_;
  229. BEGIN
  230. OPEN exist_control;
  231. FETCH exist_control INTO dummy_;
  232. IF (exist_control%FOUND) THEN
  233. CLOSE exist_control;
  234. RETURN(TRUE);
  235. END IF;
  236. CLOSE exist_control;
  237. RETURN(FALSE);
  238. END Check_Exist___;
  239. PROCEDURE Get_Id_Version_By_Keys___ (
  240. objid_ IN OUT VARCHAR2,
  241. objversion_ IN OUT VARCHAR2,
  242. company_ IN VARCHAR2,
  243. stock_taking_unit_id_ IN VARCHAR2)
  244. IS
  245. CURSOR get_version IS
  246. SELECT &OBJID, &OBJVERSION
  247. FROM &TABLE
  248. WHERE company = company_
  249. AND stock_taking_unit_id = stock_taking_unit_id_;
  250. BEGIN
  251. OPEN get_version;
  252. FETCH get_version INTO objid_, objversion_;
  253. CLOSE get_version;
  254. END Get_Id_Version_By_Keys___;
  255. -----------------------------------------------------------------------------
  256. -------------------- IMPLEMENTATION FINITE STATE MACHINE --------------------
  257. -----------------------------------------------------------------------------
  258. -- Finite_State_Set___
  259. -- Updates the finite state indicator for an existing LU-instance.
  260. --
  261. -- Finite_State_Machine___
  262. -- Processes an event by:
  263. -- 1. Fetching the current state
  264. -- 2. Evaluating any conditions for given event at current state
  265. -- 3. executing any exit code for the old state
  266. -- 4. Performing any action associated with given event
  267. -- 5. update the database to the new state
  268. -- 6. execute any entry code for the new state
  269. -- 7. Executing a state change to the new state
  270. --
  271. -- Finite_State_Add_To_Attr___
  272. -- Adds the current state and allowed events to the attribute string.
  273. --
  274. -- Finite_State_Init___
  275. -- Sets the initial finite state indicator for an existing LU-instance
  276. -- and processes any automatic events.
  277. -----------------------------------------------------------------------------
  278. PROCEDURE Finite_State_Set___ (
  279. rec_ IN OUT &TABLE%ROWTYPE,
  280. state_ IN VARCHAR2 )
  281. IS
  282. BEGIN
  283. rec_.rowversion := sysdate;
  284. UPDATE stock_taking_unit_tab
  285. SET &OBJSTATE = state_,
  286. rowversion = rec_.rowversion
  287. WHERE company = rec_.company
  288. AND stock_taking_unit_id = rec_.stock_taking_unit_id;
  289. rec_.rowstate := state_;
  290. END Finite_State_Set___;
  291. PROCEDURE Finite_State_Machine___ (
  292. rec_ IN OUT &TABLE%ROWTYPE,
  293. event_ IN VARCHAR2,
  294. attr_ IN OUT VARCHAR2 )
  295. IS
  296. state_ VARCHAR2(30);
  297. BEGIN
  298. state_ := rec_.rowstate;
  299. IF (state_ IS NULL) THEN
  300. IF (event_ IS NULL) THEN
  301. rec_.rowstate := 'Open';
  302. ELSE
  303. Error_SYS.State_Event_Not_Handled(lu_name_, event_, Finite_State_Decode__(state_));
  304. END IF;
  305. ELSIF (state_ = 'Approved') THEN
  306. IF (event_ = 'CancelApprove') THEN
  307. Finite_State_Set___(rec_, 'Submitted');
  308. ELSE
  309. Error_SYS.State_Event_Not_Handled(lu_name_, event_, Finite_State_Decode__(state_));
  310. END IF;
  311. ELSIF (state_ = 'Open') THEN
  312. IF (event_ = 'Submit') THEN
  313. Finite_State_Set___(rec_, 'Submitted');
  314. ELSE
  315. Error_SYS.State_Event_Not_Handled(lu_name_, event_, Finite_State_Decode__(state_));
  316. END IF;
  317. ELSIF (state_ = 'Rejected') THEN
  318. IF (event_ = 'ReSubmit') THEN
  319. Finite_State_Set___(rec_, 'Submitted');
  320. ELSE
  321. Error_SYS.State_Event_Not_Handled(lu_name_, event_, Finite_State_Decode__(state_));
  322. END IF;
  323. ELSIF (state_ = 'Submitted') THEN
  324. IF (event_ = 'Approve') THEN
  325. Finite_State_Set___(rec_, 'Approved');
  326. ELSIF (event_ = 'CancelSubmit') THEN
  327. Finite_State_Set___(rec_, 'Open');
  328. ELSIF (event_ = 'Reject') THEN
  329. Finite_State_Set___(rec_, 'Rejected');
  330. ELSE
  331. Error_SYS.State_Event_Not_Handled(lu_name_, event_, Finite_State_Decode__(state_));
  332. END IF;
  333. ELSE
  334. Error_SYS.State_Not_Exist(lu_name_, Finite_State_Decode__(state_));
  335. END IF;
  336. END Finite_State_Machine___;
  337. PROCEDURE Finite_State_Add_To_Attr___ (
  338. rec_ IN &TABLE%ROWTYPE,
  339. attr_ IN OUT VARCHAR2 )
  340. IS
  341. state_ VARCHAR2(30);
  342. BEGIN
  343. state_ := rec_.rowstate;
  344. Client_SYS.Add_To_Attr('__OBJSTATE', state_, attr_);
  345. Client_SYS.Add_To_Attr('__OBJEVENTS', Finite_State_Events__(state_), attr_);
  346. Client_SYS.Add_To_Attr('STATE', Finite_State_Decode__(state_), attr_);
  347. END Finite_State_Add_To_Attr___;
  348. PROCEDURE Finite_State_Init___ (
  349. rec_ IN OUT &TABLE%ROWTYPE,
  350. attr_ IN OUT VARCHAR2 )
  351. IS
  352. state_ VARCHAR2(30);
  353. BEGIN
  354. Finite_State_Machine___(rec_, NULL, attr_);
  355. Finite_State_Add_To_Attr___(rec_, attr_);
  356. END Finite_State_Init___;
  357. -----------------------------------------------------------------------------
  358. -------------------- PRIVATE FINITE STATE MACHINE ---------------------------
  359. -----------------------------------------------------------------------------
  360. -- Finite_State_Decode__
  361. -- Returns the client equivalent for any database representation of
  362. -- a state name = objstate.
  363. --
  364. -- Enumerate_States__
  365. -- Returns a list of all possible finite states in client terminology.
  366. --
  367. -- Finite_State_Events__
  368. -- Returns a list of allowed events for a given state
  369. -- NOTE! Regardless of conditions if not otherwize encoded
  370. --
  371. -- Enumerate_Events__
  372. -- Returns a list of all possible events.
  373. -----------------------------------------------------------------------------
  374. FUNCTION Finite_State_Decode__ (
  375. db_state_ IN VARCHAR2 ) RETURN VARCHAR2
  376. IS
  377. BEGIN
  378. RETURN(Domain_SYS.Decode_(active_state_list_, db_state_list_, db_state_));
  379. END Finite_State_Decode__;
  380. PROCEDURE Enumerate_States__ (
  381. client_values_ OUT VARCHAR2)
  382. IS
  383. BEGIN
  384. client_values_ := Domain_SYS.Enumerate_(active_state_list_);
  385. END Enumerate_States__;
  386. FUNCTION Finite_State_Events__ (
  387. db_state_ IN VARCHAR2 ) RETURN VARCHAR2
  388. IS
  389. BEGIN
  390. IF (db_state_ IS NULL) THEN
  391. RETURN NULL;
  392. ELSIF (db_state_ = 'Approved') THEN
  393. RETURN 'CancelApprove^';
  394. ELSIF (db_state_ = 'Open') THEN
  395. RETURN 'Submit^';
  396. ELSIF (db_state_ = 'Rejected') THEN
  397. RETURN 'ReSubmit^';
  398. ELSIF (db_state_ = 'Submitted') THEN
  399. RETURN 'CancelSubmit^Approve^Reject^';
  400. ELSE
  401. RETURN NULL;
  402. END IF;
  403. END Finite_State_Events__;
  404. PROCEDURE Enumerate_Events__ (
  405. db_events_ OUT VARCHAR2 )
  406. IS
  407. BEGIN
  408. db_events_ := 'Submit^CancelSubmit^Approve^Reject^CancelApprove^ReSubmit^';
  409. END Enumerate_Events__;
  410. -----------------------------------------------------------------------------
  411. -------------------- IMPLEMENTATION BASE METHODS FOR INSERT -----------------
  412. -----------------------------------------------------------------------------
  413. -- Prepare_Insert___
  414. -- Set all default values for a new instance (ON-NEW-RECORD) of this
  415. -- logical unit by calling procedure Add_Attr.
  416. --
  417. -- Unpack_Check_Insert___
  418. -- Unpack the attribute list, check all attributes from the client
  419. -- and generate all default values before creation of the new object.
  420. --
  421. -- Insert___
  422. -- Insert a new LU-instance into the database and return the values
  423. -- for OBJID and OBJVERSION.
  424. -----------------------------------------------------------------------------
  425. PROCEDURE Prepare_Insert___ (
  426. attr_ IN OUT VARCHAR2 )
  427. IS
  428. BEGIN
  429. Client_SYS.Clear_Attr(attr_);
  430. END Prepare_Insert___;
  431. PROCEDURE Unpack_Check_Insert___ (
  432. attr_ IN OUT VARCHAR2,
  433. newrec_ IN OUT &TABLE%ROWTYPE )
  434. IS
  435. ptr_ NUMBER;
  436. name_ VARCHAR2(30);
  437. value_ VARCHAR2(2000);
  438. BEGIN
  439. ptr_ := NULL;
  440. WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP
  441. IF (name_ = 'COMPANY') THEN
  442. newrec_.company := value_;
  443. Perusahaan_API.Exist(newrec_.company);
  444. ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN
  445. newrec_.stock_taking_unit_id := value_;
  446. ELSIF (name_ = 'TGL_STOCK_TAKING') THEN
  447. newrec_.tgl_stock_taking := Client_SYS.Attr_Value_To_Date(value_);
  448. ELSIF (name_ = 'TGL_START') THEN
  449. newrec_.tgl_start := Client_SYS.Attr_Value_To_Date(value_);
  450. ELSIF (name_ = 'TGL_SELESAI') THEN
  451. newrec_.tgl_selesai := Client_SYS.Attr_Value_To_Date(value_);
  452. ELSIF (name_ = 'CREATED_BY') THEN
  453. newrec_.created_by := value_;
  454. ELSIF (name_ = 'CREATED_DATE') THEN
  455. newrec_.created_date := Client_SYS.Attr_Value_To_Date(value_);
  456. ELSIF (name_ = 'SUBMIT_BY') THEN
  457. newrec_.submit_by := value_;
  458. ELSIF (name_ = 'SUBMIT_DATE') THEN
  459. newrec_.submit_date := Client_SYS.Attr_Value_To_Date(value_);
  460. ELSIF (name_ = 'APPROVED_BY') THEN
  461. newrec_.approved_by := value_;
  462. ELSIF (name_ = 'APPROVED_DATE') THEN
  463. newrec_.approved_date := Client_SYS.Attr_Value_To_Date(value_);
  464. ELSIF (name_ = 'REJECTED_BY') THEN
  465. newrec_.rejected_by := value_;
  466. ELSIF (name_ = 'REJECTED_DATE') THEN
  467. newrec_.rejected_date := Client_SYS.Attr_Value_To_Date(value_);
  468. ELSIF (name_ = 'CABANG_ID') THEN
  469. newrec_.cabang_id := value_;
  470. IF (value_ IS NOT NULL) THEN
  471. Cabang_API.Exist(newrec_.company, newrec_.cabang_id);
  472. END IF;
  473. ELSE
  474. Error_SYS.Item_Not_Exist(lu_name_, name_, value_);
  475. END IF;
  476. END LOOP;
  477. Client_SYS.Clear_Attr(attr_);
  478. Error_SYS.Check_Not_Null(lu_name_, 'COMPANY', newrec_.company);
  479. Error_SYS.Check_Not_Null(lu_name_, 'STOCK_TAKING_UNIT_ID', newrec_.stock_taking_unit_id);
  480. Error_SYS.Check_Not_Null(lu_name_, 'TGL_STOCK_TAKING', newrec_.tgl_stock_taking);
  481. EXCEPTION
  482. WHEN value_error THEN
  483. Error_SYS.Item_Format(lu_name_, name_, value_);
  484. END Unpack_Check_Insert___;
  485. PROCEDURE Insert___ (
  486. objid_ OUT VARCHAR2,
  487. objversion_ OUT VARCHAR2,
  488. newrec_ IN OUT &TABLE%ROWTYPE,
  489. attr_ IN OUT VARCHAR2 )
  490. IS
  491. BEGIN
  492. newrec_.rowversion := sysdate;
  493. objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS');
  494. INSERT
  495. INTO stock_taking_unit_tab (
  496. company,
  497. stock_taking_unit_id,
  498. tgl_stock_taking,
  499. tgl_start,
  500. tgl_selesai,
  501. created_by,
  502. created_date,
  503. submit_by,
  504. submit_date,
  505. approved_by,
  506. approved_date,
  507. rejected_by,
  508. rejected_date,
  509. cabang_id,
  510. rowversion,
  511. rowstate)
  512. VALUES (
  513. newrec_.company,
  514. newrec_.stock_taking_unit_id,
  515. newrec_.tgl_stock_taking,
  516. newrec_.tgl_start,
  517. newrec_.tgl_selesai,
  518. newrec_.created_by,
  519. newrec_.created_date,
  520. newrec_.submit_by,
  521. newrec_.submit_date,
  522. newrec_.approved_by,
  523. newrec_.approved_date,
  524. newrec_.rejected_by,
  525. newrec_.rejected_date,
  526. newrec_.cabang_id,
  527. newrec_.rowversion,
  528. 'Open');
  529. Finite_State_Init___(newrec_, attr_);
  530. objid_ := DBMS_sql.last_row_id;
  531. -- SELECT &OBJID
  532. -- INTO objid_
  533. -- FROM &TABLE
  534. -- WHERE company = newrec_.company
  535. -- AND stock_taking_unit_id = newrec_.stock_taking_unit_id;
  536. EXCEPTION
  537. WHEN dup_val_on_index THEN
  538. Error_SYS.Record_Exist(lu_name_);
  539. END Insert___;
  540. -----------------------------------------------------------------------------
  541. -------------------- IMPLEMENTATION BASE METHODS FOR UPDATE -----------------
  542. -----------------------------------------------------------------------------
  543. -- Unpack_Check_Update___
  544. -- Unpack the attribute list, check all attributes from the client
  545. -- and generate all default values before modifying the object.
  546. --
  547. -- Update___
  548. -- Update an existing LU-instance in the database and return the
  549. -- the new OBJVERSION.
  550. -----------------------------------------------------------------------------
  551. PROCEDURE Unpack_Check_Update___ (
  552. attr_ IN OUT VARCHAR2,
  553. newrec_ IN OUT &TABLE%ROWTYPE,
  554. objid_ IN VARCHAR2 )
  555. IS
  556. ptr_ NUMBER;
  557. name_ VARCHAR2(30);
  558. value_ VARCHAR2(2000);
  559. BEGIN
  560. ptr_ := NULL;
  561. WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP
  562. IF (name_ = 'COMPANY') THEN
  563. Error_SYS.Item_Update(lu_name_, 'COMPANY');
  564. ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN
  565. Error_SYS.Item_Update(lu_name_, 'STOCK_TAKING_UNIT_ID');
  566. ELSIF (name_ = 'TGL_STOCK_TAKING') THEN
  567. newrec_.tgl_stock_taking := Client_SYS.Attr_Value_To_Date(value_);
  568. ELSIF (name_ = 'TGL_START') THEN
  569. newrec_.tgl_start := Client_SYS.Attr_Value_To_Date(value_);
  570. ELSIF (name_ = 'TGL_SELESAI') THEN
  571. newrec_.tgl_selesai := Client_SYS.Attr_Value_To_Date(value_);
  572. ELSIF (name_ = 'CREATED_BY') THEN
  573. newrec_.created_by := value_;
  574. ELSIF (name_ = 'CREATED_DATE') THEN
  575. newrec_.created_date := Client_SYS.Attr_Value_To_Date(value_);
  576. ELSIF (name_ = 'SUBMIT_BY') THEN
  577. newrec_.submit_by := value_;
  578. ELSIF (name_ = 'SUBMIT_DATE') THEN
  579. newrec_.submit_date := Client_SYS.Attr_Value_To_Date(value_);
  580. ELSIF (name_ = 'APPROVED_BY') THEN
  581. newrec_.approved_by := value_;
  582. ELSIF (name_ = 'APPROVED_DATE') THEN
  583. newrec_.approved_date := Client_SYS.Attr_Value_To_Date(value_);
  584. ELSIF (name_ = 'REJECTED_BY') THEN
  585. newrec_.rejected_by := value_;
  586. ELSIF (name_ = 'REJECTED_DATE') THEN
  587. newrec_.rejected_date := Client_SYS.Attr_Value_To_Date(value_);
  588. ELSIF (name_ = 'CABANG_ID') THEN
  589. newrec_.cabang_id := value_;
  590. IF (value_ IS NOT NULL) THEN
  591. Cabang_API.Exist(newrec_.company, newrec_.cabang_id);
  592. END IF;
  593. ELSE
  594. Error_SYS.Item_Not_Exist(lu_name_, name_, value_);
  595. END IF;
  596. END LOOP;
  597. Client_SYS.Clear_Attr(attr_);
  598. Error_SYS.Check_Not_Null(lu_name_, 'TGL_STOCK_TAKING', newrec_.tgl_stock_taking);
  599. EXCEPTION
  600. WHEN value_error THEN
  601. Error_SYS.Item_Format(lu_name_, name_, value_);
  602. END Unpack_Check_Update___;
  603. PROCEDURE Update___ (
  604. objid_ IN VARCHAR2,
  605. oldrec_ IN &TABLE%ROWTYPE,
  606. newrec_ IN OUT &TABLE%ROWTYPE,
  607. attr_ IN OUT VARCHAR2,
  608. objversion_ IN OUT VARCHAR2,
  609. by_keys_ IN BOOLEAN DEFAULT FALSE )
  610. IS
  611. BEGIN
  612. newrec_.rowversion := sysdate;
  613. objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS');
  614. IF by_keys_ THEN
  615. UPDATE stock_taking_unit_tab
  616. SET company = newrec_.company,
  617. stock_taking_unit_id = newrec_.stock_taking_unit_id,
  618. tgl_stock_taking = newrec_.tgl_stock_taking,
  619. tgl_start = newrec_.tgl_start,
  620. tgl_selesai = newrec_.tgl_selesai,
  621. created_by = newrec_.created_by,
  622. created_date = newrec_.created_date,
  623. submit_by = newrec_.submit_by,
  624. submit_date = newrec_.submit_date,
  625. approved_by = newrec_.approved_by,
  626. approved_date = newrec_.approved_date,
  627. rejected_by = newrec_.rejected_by,
  628. rejected_date = newrec_.rejected_date,
  629. cabang_id = newrec_.cabang_id,
  630. rowversion = newrec_.rowversion
  631. WHERE company = newrec_.company
  632. AND stock_taking_unit_id = newrec_.stock_taking_unit_id;
  633. ELSE
  634. UPDATE stock_taking_unit_tab
  635. SET company = newrec_.company,
  636. stock_taking_unit_id = newrec_.stock_taking_unit_id,
  637. tgl_stock_taking = newrec_.tgl_stock_taking,
  638. tgl_start = newrec_.tgl_start,
  639. tgl_selesai = newrec_.tgl_selesai,
  640. created_by = newrec_.created_by,
  641. created_date = newrec_.created_date,
  642. submit_by = newrec_.submit_by,
  643. submit_date = newrec_.submit_date,
  644. approved_by = newrec_.approved_by,
  645. approved_date = newrec_.approved_date,
  646. rejected_by = newrec_.rejected_by,
  647. rejected_date = newrec_.rejected_date,
  648. cabang_id = newrec_.cabang_id,
  649. rowversion = newrec_.rowversion
  650. WHERE &OBJID = objid_;
  651. END IF;
  652. EXCEPTION
  653. WHEN dup_val_on_index THEN
  654. Error_SYS.Record_Exist(lu_name_);
  655. END Update___;
  656. -----------------------------------------------------------------------------
  657. -------------------- IMPLEMENTATION BASE METHODS FOR DELETE -----------------
  658. -----------------------------------------------------------------------------
  659. -- Check_Delete___
  660. -- Checks whether a specific LU-record may be removed or not.
  661. -- The procedure should check business rules like attribute values
  662. -- as well as database constraints (defined or not).
  663. --
  664. -- Delete___
  665. -- Deletion of the specific LU-object from the database.
  666. -----------------------------------------------------------------------------
  667. PROCEDURE Check_Delete___ (
  668. remrec_ IN &TABLE%ROWTYPE )
  669. IS
  670. key_ VARCHAR2(2000);
  671. BEGIN
  672. key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^';
  673. Reference_SYS.Check_Restricted_Delete(lu_name_, key_);
  674. END Check_Delete___;
  675. PROCEDURE Delete___ (
  676. objid_ IN VARCHAR2,
  677. remrec_ IN &TABLE%ROWTYPE )
  678. IS
  679. key_ VARCHAR2(2000);
  680. BEGIN
  681. key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^';
  682. Reference_SYS.Do_Cascade_Delete(lu_name_, key_);
  683. DELETE
  684. FROM stock_taking_unit_tab
  685. WHERE &OBJID = objid_;
  686. END Delete___;
  687. -----------------------------------------------------------------------------
  688. -------------------- PRIVATE BASE METHODS -----------------------------------
  689. -----------------------------------------------------------------------------
  690. -- Lock__
  691. -- Client-support to lock a specific instance of the logical unit.
  692. --
  693. -- New__
  694. -- Client-support interface to create LU instances.
  695. -- action_ = 'PREPARE'
  696. -- Default values and handle of information to client.
  697. -- The default values are set in procedure Prepare_Insert___.
  698. -- action_ = 'CHECK'
  699. -- Check all attributes before creating new object and handle of
  700. -- information to client. The attribute list is unpacked, checked
  701. -- and prepared (defaults) in procedure Unpack_Check_Insert___.
  702. -- action_ = 'DO'
  703. -- Creation of new instances of the logical unit and handle of
  704. -- information to client. The attribute list is unpacked, checked
  705. -- and prepared (defaults) in procedure Unpack_Check_Insert___
  706. -- before calling procedure Insert___.
  707. --
  708. -- Modify__
  709. -- Client-support interface to modify attributes for LU instances.
  710. -- action_ = 'CHECK'
  711. -- Check all attributes before modifying an existing object and
  712. -- handle of information to client. The attribute list is unpacked,
  713. -- checked and prepared(defaults) in procedure Unpack_Check_Update___.
  714. -- action_ = 'DO'
  715. -- Modification of an existing instance of the logical unit. The
  716. -- procedure unpacks the attributes, checks all values before
  717. -- procedure Update___ is called.
  718. --
  719. -- Remove__
  720. -- Client-support interface to remove LU instances.
  721. -- action_ = 'CHECK'
  722. -- Check whether a specific LU-instance may be removed or not.
  723. -- The procedure fetches the complete record by calling procedure
  724. -- Get_Object_By_Id___. Then the check is made by calling procedure
  725. -- Check_Delete___.
  726. -- action_ = 'DO'
  727. -- Remove an existing instance of the logical unit. The procedure
  728. -- fetches the complete LU-record, checks for a delete and then
  729. -- deletes the record by calling procedure Delete___.
  730. -----------------------------------------------------------------------------
  731. PROCEDURE Lock__ (
  732. info_ OUT VARCHAR2,
  733. objid_ IN VARCHAR2,
  734. objversion_ IN VARCHAR2 )
  735. IS
  736. dummy_ &TABLE%ROWTYPE;
  737. BEGIN
  738. General_SYS.Init_Method(lu_name_, '&PKG', 'Lock__');
  739. dummy_ := Lock_By_Id___(objid_, objversion_);
  740. info_ := Client_SYS.Get_All_Info;
  741. END Lock__;
  742. PROCEDURE New__ (
  743. info_ OUT VARCHAR2,
  744. objid_ OUT VARCHAR2,
  745. objversion_ OUT VARCHAR2,
  746. attr_ IN OUT VARCHAR2,
  747. action_ IN VARCHAR2 )
  748. IS
  749. newrec_ &TABLE%ROWTYPE;
  750. BEGIN
  751. General_SYS.Init_Method(lu_name_, '&PKG', 'New__');
  752. IF (action_ = 'PREPARE') THEN
  753. Prepare_Insert___(attr_);
  754. ELSIF (action_ = 'CHECK') THEN
  755. Unpack_Check_Insert___(attr_, newrec_);
  756. ELSIF (action_ = 'DO') THEN
  757. Unpack_Check_Insert___(attr_, newrec_);
  758. Insert___(objid_, objversion_, newrec_, attr_);
  759. END IF;
  760. info_ := Client_SYS.Get_All_Info;
  761. END New__;
  762. PROCEDURE Modify__ (
  763. info_ OUT VARCHAR2,
  764. objid_ IN VARCHAR2,
  765. objversion_ IN OUT VARCHAR2,
  766. attr_ IN OUT VARCHAR2,
  767. action_ IN VARCHAR2 )
  768. IS
  769. oldrec_ &TABLE%ROWTYPE;
  770. newrec_ &TABLE%ROWTYPE;
  771. BEGIN
  772. General_SYS.Init_Method(lu_name_, '&PKG', 'Modify__');
  773. IF (action_ = 'CHECK') THEN
  774. newrec_ := Get_Object_By_Id___(objid_);
  775. Unpack_Check_Update___(attr_, newrec_, objid_);
  776. ELSIF (action_ = 'DO') THEN
  777. oldrec_ := Lock_By_Id___(objid_, objversion_);
  778. newrec_ := oldrec_;
  779. Unpack_Check_Update___(attr_, newrec_, objid_);
  780. Update___(objid_, oldrec_, newrec_, attr_, objversion_);
  781. END IF;
  782. info_ := Client_SYS.Get_All_Info;
  783. END Modify__;
  784. PROCEDURE Remove__ (
  785. info_ OUT VARCHAR2,
  786. objid_ IN VARCHAR2,
  787. objversion_ IN VARCHAR2,
  788. action_ IN VARCHAR2 )
  789. IS
  790. remrec_ &TABLE%ROWTYPE;
  791. BEGIN
  792. General_SYS.Init_Method(lu_name_, '&PKG', 'Remove__');
  793. IF (action_ = 'CHECK') THEN
  794. remrec_ := Get_Object_By_Id___(objid_);
  795. Check_Delete___(remrec_);
  796. ELSIF (action_ = 'DO') THEN
  797. remrec_ := Lock_By_Id___(objid_, objversion_);
  798. Check_Delete___(remrec_);
  799. Delete___(objid_, remrec_);
  800. END IF;
  801. info_ := Client_SYS.Get_All_Info;
  802. END Remove__;
  803. -----------------------------------------------------------------------------
  804. -------------------- PUBLIC BASE METHODS ------------------------------------
  805. -----------------------------------------------------------------------------
  806. -- Exist
  807. -- Checks if given pointer (e.g. primary key) to an instance of this
  808. -- logical unit exists. If not an exception will be raised.
  809. -----------------------------------------------------------------------------
  810. PROCEDURE Exist (
  811. company_ IN VARCHAR2,
  812. stock_taking_unit_id_ IN VARCHAR2 )
  813. IS
  814. BEGIN
  815. General_SYS.Init_Method(lu_name_, '&PKG', 'Exist', TRUE);
  816. IF (NOT Check_Exist___(company_, stock_taking_unit_id_)) THEN
  817. Error_SYS.Record_Not_Exist(lu_name_);
  818. END IF;
  819. END Exist;
  820. -----------------------------------------------------------------------------
  821. -------------------- PUBLIC TRANSLATION METHODS -----------------------------
  822. -----------------------------------------------------------------------------
  823. PROCEDURE Language_Refreshed
  824. IS
  825. BEGIN
  826. active_state_list_ := Language_SYS.Translate_State_(lu_name_, client_state_list_);
  827. END Language_Refreshed;
  828. -----------------------------------------------------------------------------
  829. -------------------- LU SPECIFIC IMPLEMENTATION METHODS ---------------------
  830. -----------------------------------------------------------------------------
  831. -----------------------------------------------------------------------------
  832. -------------------- LU SPECIFIC PRIVATE METHODS ----------------------------
  833. -----------------------------------------------------------------------------
  834. PROCEDURE Submit__ (
  835. info_ OUT VARCHAR2,
  836. objid_ IN VARCHAR2,
  837. objversion_ IN OUT VARCHAR2,
  838. attr_ IN OUT VARCHAR2,
  839. action_ IN VARCHAR2 )
  840. IS
  841. rec_ &TABLE%ROWTYPE;
  842. BEGIN
  843. General_SYS.Init_Method(lu_name_, '&PKG', 'Submit__');
  844. IF (action_ = 'CHECK') THEN
  845. NULL;
  846. ELSIF (action_ = 'DO') THEN
  847. rec_ := Lock_By_Id___(objid_, objversion_);
  848. Finite_State_Machine___(rec_, 'Submit', attr_);
  849. objversion_ := to_char(rec_.rowversion,'YYYYMMDDHH24MISS');
  850. Finite_State_Add_To_Attr___(rec_, attr_);
  851. END IF;
  852. info_ := Client_SYS.Get_All_Info;
  853. END Submit__;
  854. PROCEDURE Cancel_Submit__ (
  855. info_ OUT VARCHAR2,
  856. objid_ IN VARCHAR2,
  857. objversion_ IN OUT VARCHAR2,
  858. attr_ IN OUT VARCHAR2,
  859. action_ IN VARCHAR2 )
  860. IS
  861. rec_ &TABLE%ROWTYPE;
  862. BEGIN
  863. General_SYS.Init_Method(lu_name_, '&PKG', 'Cancel_Submit__');
  864. IF (action_ = 'CHECK') THEN
  865. NULL;
  866. ELSIF (action_ = 'DO') THEN
  867. rec_ := Lock_By_Id___(objid_, objversion_);
  868. Finite_State_Machine___(rec_, 'CancelSubmit', attr_);
  869. objversion_ := to_char(rec_.rowversion,'YYYYMMDDHH24MISS');
  870. Finite_State_Add_To_Attr___(rec_, attr_);
  871. END IF;
  872. info_ := Client_SYS.Get_All_Info;
  873. END Cancel_Submit__;
  874. PROCEDURE Approve__ (
  875. info_ OUT VARCHAR2,
  876. objid_ IN VARCHAR2,
  877. objversion_ IN OUT VARCHAR2,
  878. attr_ IN OUT VARCHAR2,
  879. action_ IN VARCHAR2 )
  880. IS
  881. rec_ &TABLE%ROWTYPE;
  882. BEGIN
  883. General_SYS.Init_Method(lu_name_, '&PKG', 'Approve__');
  884. IF (action_ = 'CHECK') THEN
  885. NULL;
  886. ELSIF (action_ = 'DO') THEN
  887. rec_ := Lock_By_Id___(objid_, objversion_);
  888. Finite_State_Machine___(rec_, 'Approve', attr_);
  889. objversion_ := to_char(rec_.rowversion,'YYYYMMDDHH24MISS');
  890. Finite_State_Add_To_Attr___(rec_, attr_);
  891. END IF;
  892. info_ := Client_SYS.Get_All_Info;
  893. END Approve__;
  894. PROCEDURE Reject__ (
  895. info_ OUT VARCHAR2,
  896. objid_ IN VARCHAR2,
  897. objversion_ IN OUT VARCHAR2,
  898. attr_ IN OUT VARCHAR2,
  899. action_ IN VARCHAR2 )
  900. IS
  901. rec_ &TABLE%ROWTYPE;
  902. BEGIN
  903. General_SYS.Init_Method(lu_name_, '&PKG', 'Reject__');
  904. IF (action_ = 'CHECK') THEN
  905. NULL;
  906. ELSIF (action_ = 'DO') THEN
  907. rec_ := Lock_By_Id___(objid_, objversion_);
  908. Finite_State_Machine___(rec_, 'Reject', attr_);
  909. objversion_ := to_char(rec_.rowversion,'YYYYMMDDHH24MISS');
  910. Finite_State_Add_To_Attr___(rec_, attr_);
  911. END IF;
  912. info_ := Client_SYS.Get_All_Info;
  913. END Reject__;
  914. PROCEDURE Cancel_Approve__ (
  915. info_ OUT VARCHAR2,
  916. objid_ IN VARCHAR2,
  917. objversion_ IN OUT VARCHAR2,
  918. attr_ IN OUT VARCHAR2,
  919. action_ IN VARCHAR2 )
  920. IS
  921. rec_ &TABLE%ROWTYPE;
  922. BEGIN
  923. General_SYS.Init_Method(lu_name_, '&PKG', 'Cancel_Approve__');
  924. IF (action_ = 'CHECK') THEN
  925. NULL;
  926. ELSIF (action_ = 'DO') THEN
  927. rec_ := Lock_By_Id___(objid_, objversion_);
  928. Finite_State_Machine___(rec_, 'CancelApprove', attr_);
  929. objversion_ := to_char(rec_.rowversion,'YYYYMMDDHH24MISS');
  930. Finite_State_Add_To_Attr___(rec_, attr_);
  931. END IF;
  932. info_ := Client_SYS.Get_All_Info;
  933. END Cancel_Approve__;
  934. PROCEDURE Re_Submit__ (
  935. info_ OUT VARCHAR2,
  936. objid_ IN VARCHAR2,
  937. objversion_ IN OUT VARCHAR2,
  938. attr_ IN OUT VARCHAR2,
  939. action_ IN VARCHAR2 )
  940. IS
  941. rec_ &TABLE%ROWTYPE;
  942. BEGIN
  943. General_SYS.Init_Method(lu_name_, '&PKG', 'Re_Submit__');
  944. IF (action_ = 'CHECK') THEN
  945. NULL;
  946. ELSIF (action_ = 'DO') THEN
  947. rec_ := Lock_By_Id___(objid_, objversion_);
  948. Finite_State_Machine___(rec_, 'ReSubmit', attr_);
  949. objversion_ := to_char(rec_.rowversion,'YYYYMMDDHH24MISS');
  950. Finite_State_Add_To_Attr___(rec_, attr_);
  951. END IF;
  952. info_ := Client_SYS.Get_All_Info;
  953. END Re_Submit__;
  954. -----------------------------------------------------------------------------
  955. -------------------- LU SPECIFIC PROTECTED METHODS --------------------------
  956. -----------------------------------------------------------------------------
  957. -----------------------------------------------------------------------------
  958. -------------------- LU SPECIFIC PUBLIC METHODS -----------------------------
  959. -----------------------------------------------------------------------------
  960. FUNCTION Get_Tgl_Stock_Taking (
  961. company_ IN VARCHAR2,
  962. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  963. IS
  964. temp_ &TABLE..tgl_stock_taking%TYPE;
  965. CURSOR get_attr IS
  966. SELECT tgl_stock_taking
  967. FROM &TABLE
  968. WHERE company = company_
  969. AND stock_taking_unit_id = stock_taking_unit_id_;
  970. BEGIN
  971. OPEN get_attr;
  972. FETCH get_attr INTO temp_;
  973. CLOSE get_attr;
  974. RETURN temp_;
  975. END Get_Tgl_Stock_Taking;
  976. FUNCTION Get_Tgl_Start (
  977. company_ IN VARCHAR2,
  978. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  979. IS
  980. temp_ &TABLE..tgl_start%TYPE;
  981. CURSOR get_attr IS
  982. SELECT tgl_start
  983. FROM &TABLE
  984. WHERE company = company_
  985. AND stock_taking_unit_id = stock_taking_unit_id_;
  986. BEGIN
  987. OPEN get_attr;
  988. FETCH get_attr INTO temp_;
  989. CLOSE get_attr;
  990. RETURN temp_;
  991. END Get_Tgl_Start;
  992. FUNCTION Get_Tgl_Selesai (
  993. company_ IN VARCHAR2,
  994. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  995. IS
  996. temp_ &TABLE..tgl_selesai%TYPE;
  997. CURSOR get_attr IS
  998. SELECT tgl_selesai
  999. FROM &TABLE
  1000. WHERE company = company_
  1001. AND stock_taking_unit_id = stock_taking_unit_id_;
  1002. BEGIN
  1003. OPEN get_attr;
  1004. FETCH get_attr INTO temp_;
  1005. CLOSE get_attr;
  1006. RETURN temp_;
  1007. END Get_Tgl_Selesai;
  1008. FUNCTION Get_Created_By (
  1009. company_ IN VARCHAR2,
  1010. stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2
  1011. IS
  1012. temp_ &TABLE..created_by%TYPE;
  1013. CURSOR get_attr IS
  1014. SELECT created_by
  1015. FROM &TABLE
  1016. WHERE company = company_
  1017. AND stock_taking_unit_id = stock_taking_unit_id_;
  1018. BEGIN
  1019. OPEN get_attr;
  1020. FETCH get_attr INTO temp_;
  1021. CLOSE get_attr;
  1022. RETURN temp_;
  1023. END Get_Created_By;
  1024. FUNCTION Get_Created_Date (
  1025. company_ IN VARCHAR2,
  1026. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  1027. IS
  1028. temp_ &TABLE..created_date%TYPE;
  1029. CURSOR get_attr IS
  1030. SELECT created_date
  1031. FROM &TABLE
  1032. WHERE company = company_
  1033. AND stock_taking_unit_id = stock_taking_unit_id_;
  1034. BEGIN
  1035. OPEN get_attr;
  1036. FETCH get_attr INTO temp_;
  1037. CLOSE get_attr;
  1038. RETURN temp_;
  1039. END Get_Created_Date;
  1040. FUNCTION Get_Submit_By (
  1041. company_ IN VARCHAR2,
  1042. stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2
  1043. IS
  1044. temp_ &TABLE..submit_by%TYPE;
  1045. CURSOR get_attr IS
  1046. SELECT submit_by
  1047. FROM &TABLE
  1048. WHERE company = company_
  1049. AND stock_taking_unit_id = stock_taking_unit_id_;
  1050. BEGIN
  1051. OPEN get_attr;
  1052. FETCH get_attr INTO temp_;
  1053. CLOSE get_attr;
  1054. RETURN temp_;
  1055. END Get_Submit_By;
  1056. FUNCTION Get_Submit_Date (
  1057. company_ IN VARCHAR2,
  1058. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  1059. IS
  1060. temp_ &TABLE..submit_date%TYPE;
  1061. CURSOR get_attr IS
  1062. SELECT submit_date
  1063. FROM &TABLE
  1064. WHERE company = company_
  1065. AND stock_taking_unit_id = stock_taking_unit_id_;
  1066. BEGIN
  1067. OPEN get_attr;
  1068. FETCH get_attr INTO temp_;
  1069. CLOSE get_attr;
  1070. RETURN temp_;
  1071. END Get_Submit_Date;
  1072. FUNCTION Get_Approved_By (
  1073. company_ IN VARCHAR2,
  1074. stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2
  1075. IS
  1076. temp_ &TABLE..approved_by%TYPE;
  1077. CURSOR get_attr IS
  1078. SELECT approved_by
  1079. FROM &TABLE
  1080. WHERE company = company_
  1081. AND stock_taking_unit_id = stock_taking_unit_id_;
  1082. BEGIN
  1083. OPEN get_attr;
  1084. FETCH get_attr INTO temp_;
  1085. CLOSE get_attr;
  1086. RETURN temp_;
  1087. END Get_Approved_By;
  1088. FUNCTION Get_Approved_Date (
  1089. company_ IN VARCHAR2,
  1090. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  1091. IS
  1092. temp_ &TABLE..approved_date%TYPE;
  1093. CURSOR get_attr IS
  1094. SELECT approved_date
  1095. FROM &TABLE
  1096. WHERE company = company_
  1097. AND stock_taking_unit_id = stock_taking_unit_id_;
  1098. BEGIN
  1099. OPEN get_attr;
  1100. FETCH get_attr INTO temp_;
  1101. CLOSE get_attr;
  1102. RETURN temp_;
  1103. END Get_Approved_Date;
  1104. FUNCTION Get_Rejected_By (
  1105. company_ IN VARCHAR2,
  1106. stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2
  1107. IS
  1108. temp_ &TABLE..rejected_by%TYPE;
  1109. CURSOR get_attr IS
  1110. SELECT rejected_by
  1111. FROM &TABLE
  1112. WHERE company = company_
  1113. AND stock_taking_unit_id = stock_taking_unit_id_;
  1114. BEGIN
  1115. OPEN get_attr;
  1116. FETCH get_attr INTO temp_;
  1117. CLOSE get_attr;
  1118. RETURN temp_;
  1119. END Get_Rejected_By;
  1120. FUNCTION Get_Rejected_Date (
  1121. company_ IN VARCHAR2,
  1122. stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE
  1123. IS
  1124. temp_ &TABLE..rejected_date%TYPE;
  1125. CURSOR get_attr IS
  1126. SELECT rejected_date
  1127. FROM &TABLE
  1128. WHERE company = company_
  1129. AND stock_taking_unit_id = stock_taking_unit_id_;
  1130. BEGIN
  1131. OPEN get_attr;
  1132. FETCH get_attr INTO temp_;
  1133. CLOSE get_attr;
  1134. RETURN temp_;
  1135. END Get_Rejected_Date;
  1136. FUNCTION Get_Cabang_Id (
  1137. company_ IN VARCHAR2,
  1138. stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2
  1139. IS
  1140. temp_ &TABLE..cabang_id%TYPE;
  1141. CURSOR get_attr IS
  1142. SELECT cabang_id
  1143. FROM &TABLE
  1144. WHERE company = company_
  1145. AND stock_taking_unit_id = stock_taking_unit_id_;
  1146. BEGIN
  1147. OPEN get_attr;
  1148. FETCH get_attr INTO temp_;
  1149. CLOSE get_attr;
  1150. RETURN temp_;
  1151. END Get_Cabang_Id;
  1152. FUNCTION Get (
  1153. company_ IN VARCHAR2,
  1154. stock_taking_unit_id_ IN VARCHAR2 ) RETURN Public_Rec
  1155. IS
  1156. temp_ Public_Rec;
  1157. CURSOR get_attr IS
  1158. SELECT tgl_stock_taking, tgl_start, tgl_selesai, created_by, created_date, submit_by, submit_date, approved_by, approved_date, rejected_by, rejected_date, cabang_id
  1159. FROM &TABLE
  1160. WHERE company = company_
  1161. AND stock_taking_unit_id = stock_taking_unit_id_;
  1162. BEGIN
  1163. OPEN get_attr;
  1164. FETCH get_attr INTO temp_;
  1165. CLOSE get_attr;
  1166. RETURN temp_;
  1167. END Get;
  1168. PROCEDURE Create_Update_Record(
  1169. company_ IN VARCHAR2,
  1170. stock_taking_unit_id_ IN OUT VARCHAR2,
  1171. tgl_stock_taking_ IN DATE,
  1172. tgl_start_ IN DATE,
  1173. tgl_selesai_ IN DATE,
  1174. cabang_id_ IN VARCHAR2)
  1175. IS
  1176. attr_ VARCHAR2(2000);
  1177. objid_ VARCHAR2(200);
  1178. objversion_ VARCHAR2(2000);
  1179. info_ VARCHAR2(2000);
  1180. CURSOR get_id IS
  1181. select NVL(max(TO_NUMBER(stock_taking_unit_id)),0) + 1
  1182. from &VIEW.
  1183. where company = company_;
  1184. temp_ NUMBER;
  1185. BEGIN
  1186. General_SYS.Init_Method(lu_name_, '&PKG', 'Create_Update_Record');
  1187. Get_Id_Version_By_Keys___ (objid_, objversion_, company_,stock_taking_unit_id_);
  1188. IF objid_ IS NULL THEN
  1189. OPEN get_id;
  1190. FETCH get_id into temp_;
  1191. CLOSE get_id;
  1192. stock_taking_unit_id_ := temp_;
  1193. Client_SYS.Add_To_Attr('COMPANY', company_, attr_);
  1194. Client_SYS.Add_To_Attr('STOCK_TAKING_UNIT_ID', stock_taking_unit_id_, attr_);
  1195. END IF;
  1196. Client_SYS.Add_To_Attr('TGL_STOCK_TAKING', tgl_stock_taking_, attr_);
  1197. Client_SYS.Add_To_Attr('TGL_START', tgl_start_, attr_);
  1198. Client_SYS.Add_To_Attr('TGL_SELESAI', tgl_selesai_, attr_);
  1199. Client_SYS.Add_To_Attr('CABANG_ID', cabang_id_, attr_);
  1200. IF objid_ IS NULL THEN
  1201. Client_SYS.Add_To_Attr('CREATED_DATE', sysdate, attr_);
  1202. Client_SYS.Add_To_Attr('CREATED_BY', Utils_API.Get_Fnd_User, attr_);
  1203. New__(info_, objid_, objversion_, attr_, 'DO');
  1204. ELSE
  1205. Modify__(info_,objid_,objversion_,attr_,'DO');
  1206. END IF;
  1207. END Create_Update_Record;
  1208. PROCEDURE Remove_Record(
  1209. company_ IN VARCHAR2,
  1210. stock_taking_unit_id_ IN VARCHAR2)
  1211. IS
  1212. objid_ VARCHAR2(200);
  1213. objversion_ VARCHAR2(2000);
  1214. info_ VARCHAR2(2000);
  1215. BEGIN
  1216. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1217. Remove__(info_, objid_, objversion_, 'DO');
  1218. END Remove_Record;
  1219. PROCEDURE Call_Submit(
  1220. company_ IN VARCHAR2,
  1221. stock_taking_unit_id_ IN VARCHAR2)
  1222. IS
  1223. objid_ VARCHAR2(200);
  1224. objversion_ VARCHAR2(2000);
  1225. info_ VARCHAR2(2000);
  1226. attr_ VARCHAR2(2000);
  1227. state_ VARCHAR2(100) := Stock_Taking_Unit_API.Get_Status_Stock_Taking(company_,stock_taking_unit_id_);
  1228. BEGIN
  1229. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1230. IF(state_ = 'Submitted') THEN
  1231. Error_SYS.Record_General(lu_name_,'This data already submitted');
  1232. ELSE
  1233. Submit__(info_, objid_, objversion_,attr_, 'DO');
  1234. END IF;
  1235. END Call_Submit;
  1236. PROCEDURE Call_Re_Submit(
  1237. company_ IN VARCHAR2,
  1238. stock_taking_unit_id_ IN VARCHAR2)
  1239. IS
  1240. objid_ VARCHAR2(200);
  1241. objversion_ VARCHAR2(2000);
  1242. info_ VARCHAR2(2000);
  1243. attr_ VARCHAR2(2000);
  1244. BEGIN
  1245. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1246. Re_Submit__(info_, objid_, objversion_,attr_, 'DO');
  1247. END Call_Re_Submit;
  1248. PROCEDURE Call_Cancel_Submit(
  1249. company_ IN VARCHAR2,
  1250. stock_taking_unit_id_ IN VARCHAR2)
  1251. IS
  1252. objid_ VARCHAR2(200);
  1253. objversion_ VARCHAR2(2000);
  1254. info_ VARCHAR2(2000);
  1255. attr_ VARCHAR2(2000);
  1256. BEGIN
  1257. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1258. Cancel_Submit__(info_, objid_, objversion_,attr_, 'DO');
  1259. END Call_Cancel_Submit;
  1260. PROCEDURE Call_Approve(
  1261. company_ IN VARCHAR2,
  1262. stock_taking_unit_id_ IN VARCHAR2)
  1263. IS
  1264. objid_ VARCHAR2(200);
  1265. objversion_ VARCHAR2(2000);
  1266. info_ VARCHAR2(2000);
  1267. attr_ VARCHAR2(2000);
  1268. BEGIN
  1269. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1270. Approve__(info_, objid_, objversion_,attr_, 'DO');
  1271. END Call_Approve;
  1272. PROCEDURE Call_Cancel_Approve(
  1273. company_ IN VARCHAR2,
  1274. stock_taking_unit_id_ IN VARCHAR2)
  1275. IS
  1276. objid_ VARCHAR2(200);
  1277. objversion_ VARCHAR2(2000);
  1278. info_ VARCHAR2(2000);
  1279. attr_ VARCHAR2(2000);
  1280. BEGIN
  1281. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1282. Cancel_Approve__(info_, objid_, objversion_,attr_, 'DO');
  1283. END Call_Cancel_Approve;
  1284. PROCEDURE Call_Reject(
  1285. company_ IN VARCHAR2,
  1286. stock_taking_unit_id_ IN VARCHAR2)
  1287. IS
  1288. objid_ VARCHAR2(200);
  1289. objversion_ VARCHAR2(2000);
  1290. info_ VARCHAR2(2000);
  1291. attr_ VARCHAR2(2000);
  1292. BEGIN
  1293. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1294. Approve__(info_, objid_, objversion_,attr_, 'DO');
  1295. END Call_Reject;
  1296. PROCEDURE Update_Tgl_Selesai(
  1297. company_ IN VARCHAR2,
  1298. stock_taking_unit_id_ IN VARCHAR2,
  1299. tgl_selesai_ IN DATE)
  1300. IS
  1301. objid_ VARCHAR2(200);
  1302. objversion_ VARCHAR2(2000);
  1303. info_ VARCHAR2(2000);
  1304. attr_ VARCHAR2(2000);
  1305. BEGIN
  1306. Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_);
  1307. Client_SYS.Add_To_Attr('TGL_SELESAI', tgl_selesai_, attr_);
  1308. Modify__(info_,objid_,objversion_,attr_,'DO');
  1309. END Update_Tgl_Selesai;
  1310. FUNCTION Get_Status_Stock_Taking(
  1311. company_ IN VARCHAR2,
  1312. stock_taking_unit_id_ IN VARCHAR2) RETURN VARCHAR2
  1313. IS
  1314. CURSOR get_state IS
  1315. select state from &VIEW.
  1316. WHERE company = company_
  1317. AND stock_taking_unit_id = stock_taking_unit_id_;
  1318. temp_ VARCHAR2(100);
  1319. BEGIN
  1320. OPEN get_state;
  1321. FETCH get_state INTO temp_;
  1322. CLOSE get_state;
  1323. RETURN temp_;
  1324. END Get_Status_Stock_Taking;
  1325. -----------------------------------------------------------------------------
  1326. -------------------- FOUNDATION1 METHODS ------------------------------------
  1327. -----------------------------------------------------------------------------
  1328. -- Init
  1329. -- Dummy procedure that can be called at database startup to ensure that
  1330. -- this package is loaded into memory for performance reasons only.
  1331. -----------------------------------------------------------------------------
  1332. PROCEDURE Init
  1333. IS
  1334. BEGIN
  1335. NULL;
  1336. END Init;
  1337. END &PKG;
  1338. /
  1339. SHOW ERROR
  1340. -----------------------------------------------------------------------------