Advertisement
tercnem

f_generate_return_purchase_invoice_by_nrb

Aug 18th, 2019
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.71 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION f_generate_return_purchase_invoice_by_nrb(character varying, bigint, bigint, character varying, character varying)
  2. RETURNS void AS
  3. $BODY$
  4. DECLARE
  5. pSessionId ALIAS FOR $1;
  6. pTenantId ALIAS FOR $2;
  7. pUserId ALIAS FOR $3;
  8. pDatetime ALIAS FOR $4;
  9. pRemark ALIAS FOR $5;
  10.  
  11. vFlagYes character varying:='Y';
  12. vFlagNo character varying:='N';
  13. vEmptyString character varying:='';
  14. vNullId bigint:=-99;
  15. vDocTypeIdRetur bigint:=502;
  16. vDocTypeIdDraftRetur bigint:=598;
  17. vDocTypeIdPo bigint:=101;
  18. vDocTypeIdRg bigint:=111;
  19. vDocTypeIdCn bigint:=511;
  20. vDocTypeIdRpi bigint:=141;
  21. vDocTypeIdPi bigint:=131;
  22. vDefaultOuId bigint:=10;
  23. vNotaReturPajakMasukan bigint:= 222;
  24.  
  25. vDefaultWarehouseId bigint;
  26. vYearMonth character varying;
  27. vStatusDocApproved character varying:='R';
  28. vStatusDocDraft character varying:='D';
  29. vWorkflowStatusApproved character varying:='APPROVED';
  30. vAutonumDatatypeRpi character varying:='return_purchase_invoice_by_nrb';
  31. vProductStatusReturn character varying:='RETURN';
  32. vProductStatusDraftRetur character varying:='DRAFTRETUR';
  33. vCurrCodeIdr character varying:='IDR';
  34. vZeroValue bigint:=0;
  35. vUomId bigint:=10;
  36.  
  37. vRoundingModeNonTax character varying(5);
  38.  
  39. vJournalType character varying;
  40. vLedgerCode character varying;
  41. vOuBuId bigint;
  42. vOuBranchId bigint;
  43. vOuSubBuId bigint;
  44. vTypeRate character varying(3):='COM';
  45.  
  46. vSignDebit character varying:='D';
  47. vSignCredit character varying:='C';
  48. vProductCOA character varying:='PRODUCT';
  49. vSystemCOA character varying:='SYSTEM';
  50. vTaxCOA character varying:='TAX';
  51.  
  52. BEGIN
  53.  
  54. SELECT LEFT(pDatetime,6) INTO vYearMonth;
  55. vDefaultWarehouseId := f_get_value_system_config_by_param_code(pTenantId, 'default.warehouse.for.retur')::bigint;
  56. SELECT journal_type, ledger_code INTO vJournalType, vLedgerCode FROM m_document_journal WHERE doc_type_id = vDocTypeIdPi;
  57. SELECT ou_bu_id, ou_branch_id, ou_sub_bu_id INTO vOuBuId, vOuBranchId, vOuSubBuId FROM m_ou_structure WHERE ou_id = vDefaultOuId;
  58. SELECT f_get_value_system_config_by_param_code(pTenantId, 'rounding.mode.non.tax') INTO vRoundingModeNonTax;
  59.  
  60. -- PROSES ADD RPI --
  61.  
  62. -- 1 CN = 1 RPI
  63. INSERT INTO m_nrb_generated_document(
  64. retur_header_id, retur_no, ref_doc_type_id, ref_id, journal_trx_id,
  65. create_datetime, create_user_id, update_datetime, update_user_id, version )
  66. SELECT A.retur_header_id, A.retur_no, vDocTypeIdRpi, B.rpi_id, B.journal_id,
  67. pDatetime, pUserId, pDatetime, pUserId, vZeroValue
  68. FROM m_nrb_generated_document A
  69. JOIN (
  70. -- JOIN DENGAN DIRI SENDIRI YANG SUDAH DI GROUP BY PER CN ID, KARENA n NRB (RETUR_HEADER_ID) BISA MEMILIKI SAMA CN ID
  71. SELECT ref_id, journal_trx_id, ref_doc_type_id, nextval('pu_invoice_seq') AS rpi_id, nextval('gl_journal_trx_seq') journal_id, create_datetime
  72. FROM m_nrb_generated_document
  73. WHERE ref_doc_type_id = vDocTypeIdCn
  74. AND create_datetime = pDatetime
  75. GROUP BY ref_id, ref_doc_type_id, journal_trx_id, create_datetime
  76. ) B ON B.ref_id = A.ref_id AND B.ref_doc_type_id = A.ref_doc_type_id AND B.journal_trx_id = A.journal_trx_id
  77. WHERE A.ref_doc_type_id = B.ref_doc_type_id
  78. AND A.create_datetime = B.create_datetime;
  79.  
  80. INSERT INTO pu_invoice(
  81. invoice_id, tenant_id, doc_type_id, doc_no, doc_date, ou_id,
  82. ext_doc_no, ext_doc_date, ref_doc_type_id, ref_id, remark, partner_id,
  83. ou_legal_id, due_date, purchaser_id, curr_code, gross_amount,
  84. advance_amount, tax_amount, add_amount, total_amount, status_doc,
  85. workflow_status, version, create_datetime, create_user_id, update_datetime,
  86. update_user_id)
  87. SELECT A.ref_id, pTenantId, A.ref_doc_type_id, f_gen_autonum('RPIG/'||vYearMonth||'/KPS/', vAutonumDatatypeRpi), C.doc_date, vDefaultOuId,
  88. D.doc_no, C.doc_date, D.doc_type_id, D.po_id, vEmptyString, D.partner_id,
  89. vDefaultOuId, C.doc_date, D.purchaser_id, D.curr_code, vZeroValue,
  90. vZeroValue, vZeroValue, vZeroValue, vZeroValue, vStatusDocApproved,
  91. vWorkflowStatusApproved, vZeroValue, pDatetime, pUserId, pDatetime, pUserId
  92. FROM m_nrb_generated_document A
  93. JOIN m_nrb_generated_document B ON A.retur_header_id = B.retur_header_id AND B.ref_doc_type_id = vDocTypeIdCn
  94. JOIN in_inventory C ON B.ref_id = C.inventory_id AND B.ref_doc_type_id = C.doc_type_id
  95. JOIN pu_po D ON C.ref_id = D.po_id AND C.ref_doc_type_id = D.doc_type_id
  96. WHERE A.ref_doc_type_id = vDocTypeIdRpi
  97. AND A.create_datetime = pDatetime
  98. GROUP BY A.ref_id, A.ref_doc_type_id, C.doc_date,
  99. D.doc_no, C.doc_date, D.doc_type_id, D.po_id, D.partner_id,
  100. C.doc_date, D.purchaser_id, D.curr_code;
  101.  
  102. INSERT INTO pu_invoice_item(
  103. tenant_id, invoice_id, line_no, ref_doc_type_id,
  104. ref_id, ref_item_id, ref_item_amount, remark, version, create_datetime,
  105. create_user_id, update_datetime, update_user_id, ref_price_po,
  106. original_ref_price_po, original_ref_item_amount)
  107. SELECT pTenantId, A.ref_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id), B.ref_doc_type_id,
  108. B.ref_id, C.ref_item_id, C.item_amount, vEmptyString ,vZeroValue, pDatetime,
  109. pUserId, pDatetime, pUserId, vZeroValue, vZeroValue, vZeroValue
  110. FROM m_nrb_generated_document A
  111. JOIN m_nrb_generated_document B ON A.retur_header_id = B.retur_header_id AND B.ref_doc_type_id = vDocTypeIdCn
  112. JOIN pu_po_balance_invoice C ON B.ref_id = C.ref_id AND B.ref_doc_type_id = C.ref_doc_type_id
  113. WHERE A.create_datetime = pDatetime
  114. AND A.ref_doc_type_id = vDocTypeIdRpi
  115. GROUP BY A.ref_id, B.ref_doc_type_id, B.ref_id, C.ref_item_id, C.item_amount, A.journal_trx_id;
  116.  
  117. INSERT INTO pu_invoice_tax(
  118. tenant_id, invoice_id, tax_id, flg_amount, tax_percentage,
  119. base_amount, tax_amount, tax_no, tax_date, tax_curr_code, gov_tax_amount,
  120. remark, version, create_datetime, create_user_id, update_datetime,
  121. update_user_id, advance_amount, original_base_amount, original_tax_amount)
  122. SELECT pTenantId, B.invoice_id, C.tax_id, C.flg_amount, C.tax_percentage,
  123. SUM(C.base_amount), SUM(C.tax_amount), E.tax_no, E.tax_date, E.tax_curr_code, SUM(C.tax_amount),
  124. E.remark, vZeroValue , pDatetime, pUserId, pDatetime, pUserId, vZeroValue, vZeroValue, vZeroValue
  125. FROM (
  126. SELECT A.ref_id AS invoice_id, B.ref_id AS cn_id, B.ref_doc_type_id, A.create_datetime
  127. FROM m_nrb_generated_document A
  128. JOIN m_nrb_generated_document B ON A.retur_header_id = B.retur_header_id AND B.ref_doc_type_id = vDocTypeIdCn
  129. WHERE A.ref_doc_type_id = vDocTypeIdRpi
  130. AND A.create_datetime = pDatetime
  131. GROUP BY A.ref_id, B.ref_id, B.ref_doc_type_id, A.create_datetime
  132. ORDER BY A.ref_id, B.ref_id, B.ref_doc_type_id
  133. ) B
  134. JOIN pu_po_balance_invoice_tax C ON B.cn_id = C.ref_id AND B.ref_doc_type_id = C.ref_doc_type_id
  135. JOIN pu_invoice D ON D.doc_type_id = vDocTypeIdRpi AND C.po_id = D.ref_id AND D.ref_doc_type_id = vDocTypeIdPo AND D.create_datetime = B.create_datetime
  136. JOIN pu_invoice_tax E ON D.invoice_id = E.invoice_id
  137. GROUP BY B.invoice_id, C.tax_id, C.flg_amount, C.tax_percentage, E.tax_no, E.tax_date,E.tax_curr_code, E.remark;
  138.  
  139. UPDATE pu_invoice C
  140. SET gross_amount = A.ref_item_amount + COALESCE(B.tax_amount,0),
  141. tax_amount = COALESCE(B.tax_amount,0),
  142. total_amount = A.ref_item_amount
  143. FROM (
  144. SELECT A.invoice_id, SUM(B.ref_item_amount) AS ref_item_amount
  145. FROM pu_invoice A
  146. JOIN pu_invoice_item B ON A.invoice_id = B.invoice_id
  147. WHERE EXISTS (
  148. SELECT C.ref_id
  149. FROM m_nrb_generated_document C
  150. WHERE A.invoice_id = C.ref_id
  151. AND C.ref_doc_type_id = vDocTypeIdRpi
  152. AND C.create_datetime = pDatetime
  153. GROUP BY C.ref_id
  154. )
  155. GROUP BY A.invoice_id
  156. ) A
  157. LEFT JOIN pu_invoice_tax B ON A.invoice_id = B.invoice_id
  158. WHERE A.invoice_id = C.invoice_id;
  159.  
  160. UPDATE pu_po_balance_invoice_ext_invoice_doc_type D
  161. SET invoice_id = A.ref_id,
  162. invoice_doc_type_id = A.ref_doc_type_id,
  163. version = D.version+1
  164. FROM m_nrb_generated_document A
  165. JOIN m_nrb_generated_document B ON A.retur_header_id = B.retur_header_id AND B.ref_doc_type_id = vDocTypeIdCn
  166. JOIN pu_invoice C ON A.ref_id = C.invoice_id AND A.ref_doc_type_id = C.doc_type_id
  167. WHERE A.create_datetime = pDatetime
  168. AND A.ref_doc_type_id = vDocTypeIdRpi
  169. AND C.ref_id = D.po_id
  170. AND B.ref_doc_type_id = D.ref_doc_type_id
  171. AND B.ref_id = D.ref_id;
  172.  
  173. UPDATE pu_po_balance_invoice_tax_ext D
  174. SET invoice_id = A.ref_id,
  175. invoice_doc_type_id = vDocTypeIdPi,
  176. version = D.version+1
  177. FROM m_nrb_generated_document A
  178. JOIN m_nrb_generated_document B ON A.retur_header_id = B.retur_header_id AND B.ref_doc_type_id = vDocTypeIdCn
  179. JOIN pu_invoice C ON A.ref_id = C.invoice_id AND A.ref_doc_type_id = C.doc_type_id
  180. WHERE A.create_datetime = pDatetime
  181. AND A.ref_doc_type_id = vDocTypeIdRpi
  182. AND C.ref_id = D.po_id
  183. AND B.ref_doc_type_id = D.ref_doc_type_id
  184. AND B.ref_id = D.ref_id;
  185.  
  186. WITH rpi AS (
  187. SELECT ref_doc_type_id, ref_id
  188. FROM m_nrb_generated_document
  189. WHERE ref_doc_type_id = vDocTypeIdRpi
  190. AND create_datetime = pDatetime
  191. GROUP BY ref_doc_type_id, ref_id
  192. ), item_rpi AS (
  193. SELECT A.invoice_id, A.ref_id, A.ref_doc_type_id, A.ref_item_id
  194. FROM pu_invoice_item A
  195. JOIN rpi B ON A.invoice_id = B.ref_id
  196. )
  197. UPDATE pu_po_balance_invoice A
  198. SET flg_invoice = vFlagYes,
  199. invoice_id = B.invoice_id
  200. FROM item_rpi B
  201. WHERE A.ref_id = B.ref_id
  202. AND A.ref_doc_type_id = B.ref_doc_type_id
  203. AND A.ref_item_id = B.ref_item_id;
  204.  
  205. -- PROSES SUBMIT RPI--
  206. INSERT INTO fi_invoice_ap_balance
  207. ( tenant_id, ou_id, doc_type_id, invoice_ap_id,
  208. doc_no, doc_date, ext_doc_no, ext_doc_date,
  209. ref_doc_type_id, ref_id, partner_id, due_date,
  210. curr_code, amount, remark, payment_amount, flg_payment,
  211. "version", create_datetime, create_user_id, update_datetime, update_user_id)
  212. SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.invoice_id,
  213. A.doc_no, A.doc_date, A.ext_doc_no, A.ext_doc_date,
  214. A.ref_doc_type_id, A.ref_id, A.partner_id, A.due_date,
  215. A.curr_code, A.total_amount * -1, A.remark, 0, vFlagNo,
  216. 0, pDatetime, pUserId, pDatetime, pUserId
  217. FROM pu_invoice A
  218. JOIN m_nrb_generated_document B ON A.invoice_id = B.ref_id AND A.doc_type_id = B.ref_doc_type_id
  219. WHERE B.create_datetime = pDatetime
  220. AND B.ref_doc_type_id = vDocTypeIdRpi
  221. GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.invoice_id,
  222. A.doc_no, A.doc_date, A.ext_doc_no, A.ext_doc_date,
  223. A.ref_doc_type_id, A.ref_id, A.partner_id, A.due_date,
  224. A.curr_code, A.total_amount, A.remark;
  225.  
  226. INSERT INTO fi_invoice_tax_ap_balance
  227. (tenant_id, ou_id, doc_type_id, invoice_ap_balance_id,
  228. partner_id, tax_id, tax_no, tax_date,
  229. curr_code, tax_amount, tax_curr_code, gov_tax_amount,
  230. due_date, remark, payment_amount, flg_payment,
  231. "version", create_datetime, create_user_id, update_datetime, update_user_id,
  232. gov_base_amount)
  233. SELECT A.tenant_id, A.ou_id, vNotaReturPajakMasukan, C.invoice_ap_balance_id,
  234. A.partner_id, B.tax_id, B.tax_no, B.tax_date,
  235. A.curr_code, B.tax_amount * -1, B.tax_curr_code, B.gov_tax_amount * -1,
  236. A.due_date, B.remark, 0, vFlagNo,
  237. 0, pDatetime, pUserId, pDatetime, pUserId,
  238. f_get_amount_in_gov_tax_rate(A.tenant_id, B.base_amount - B.advance_amount, B.tax_date, A.curr_code) * -1
  239. FROM pu_invoice A, pu_invoice_tax B, fi_invoice_ap_balance C, m_nrb_generated_document D
  240. WHERE A.invoice_id = D.ref_id
  241. AND D.create_datetime = pDatetime
  242. AND D.ref_doc_type_id = vDocTypeIdRpi
  243. AND A.invoice_id = B.invoice_id
  244. AND A.tenant_id = C.tenant_id
  245. AND A.ou_id = C.ou_id
  246. AND A.partner_id = C.partner_id
  247. AND A.doc_type_id = C.doc_type_id
  248. AND A.invoice_id = C.invoice_ap_id
  249. GROUP BY A.tenant_id, A.ou_id, C.invoice_ap_balance_id, A.partner_id, B.tax_id, B.tax_no, B.tax_date,
  250. A.curr_code, B.tax_amount, B.tax_curr_code, B.gov_tax_amount,
  251. A.due_date, B.remark, B.base_amount, B.advance_amount;
  252.  
  253.  
  254. PERFORM fi_insert_vat_in_for_reporting(pTenantId, pSessionId, A.invoice_ap_balance_id, pUserId, pDatetime)
  255. FROM fi_invoice_ap_balance A
  256. JOIN m_nrb_generated_document B ON A.invoice_ap_id = B.ref_id AND A.doc_type_id = B.ref_doc_type_id
  257. WHERE B.create_datetime = pDatetime
  258. AND B.ref_doc_type_id = vDocTypeIdRpi
  259. GROUP BY A.invoice_ap_balance_id;
  260.  
  261. PERFORM fi_insert_return_vat_in_for_efaktur(pTenantId, pSessionId, A.invoice_ap_balance_id, pUserId, pDatetime)
  262. FROM fi_invoice_ap_balance A
  263. JOIN m_nrb_generated_document B ON A.invoice_ap_id = B.ref_id AND A.doc_type_id = B.ref_doc_type_id
  264. WHERE B.create_datetime = pDatetime
  265. AND B.ref_doc_type_id = vDocTypeIdRpi
  266. GROUP BY A.invoice_ap_balance_id;
  267.  
  268. PERFORM gl_manage_admin_journal_trx(A.tenant_id, vOuBuId, A.ou_id, vJournalType, vLedgerCode, f_get_year_month_date(A.doc_date), 'DAILY', pDatetime, pUserId)
  269. FROM pu_invoice A
  270. WHERE A.invoice_id IN (
  271. SELECT B.ref_id
  272. FROM m_nrb_generated_document B
  273. WHERE B.ref_doc_type_id = vDocTypeIdRpi
  274. AND B.create_datetime = pDatetime
  275. GROUP BY B.ref_id
  276. );
  277.  
  278. INSERT INTO gl_journal_trx
  279. (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  280. ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,
  281. ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  282. "version", create_datetime, create_user_id, update_datetime, update_user_id)
  283. SELECT B.journal_trx_id, A.tenant_id, vJournalType, A.doc_type_id, A.invoice_id, A.doc_no, A.doc_date,
  284. vOuBuId, vOuBranchId, vOuSubBuId, A.partner_id, vNullId, vNullId, A.ext_doc_no, A.ext_doc_date,
  285. A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark, vStatusDocDraft, 'DRAFT',
  286. vZeroValue, pDatetime, pUserId, pDatetime, pUserId
  287. FROM pu_invoice A
  288. JOIN m_nrb_generated_document B ON A.invoice_id = B.ref_id AND A.doc_type_id = B.ref_doc_type_id
  289. WHERE B.create_datetime = pDatetime
  290. AND B.ref_doc_type_id = vDocTypeIdRpi
  291. GROUP BY B.journal_trx_id, A.tenant_id, A.doc_type_id, A.invoice_id, A.doc_no, A.doc_date,
  292. A.partner_id, A.ext_doc_no, A.ext_doc_date, A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark;
  293.  
  294. INSERT INTO tt_journal_trx_item
  295. (session_id, tenant_id, journal_trx_id, line_no,
  296. ref_doc_type_id, ref_id,
  297. partner_id, product_id, cashbank_id, ou_rc_id,
  298. segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  299. coa_id, curr_code, qty, uom_id,
  300. amount, journal_date, type_rate,
  301. numerator_rate, denominator_rate, journal_desc, remark)
  302. SELECT pSessionId, A.tenant_id, D.journal_trx_id, 1,
  303. B.ref_doc_type_id, B.ref_item_id,
  304. A.partner_id, vNullId, vNullId, vNullId,
  305. vNullId, vSignCredit, vSystemCOA, vNullId,
  306. f_get_system_coa_by_group_coa(A.tenant_id, 'HutangHarusDibayar'), A.curr_code, 0, vNullId,
  307. B.ref_item_amount, C.doc_date, vTypeRate,
  308. 1, 1, 'ACCR_AP', B.remark
  309. FROM pu_invoice A, pu_invoice_item B, in_inventory C, m_nrb_generated_document D
  310. WHERE A.invoice_id = D.ref_id
  311. AND D.create_datetime = pDatetime
  312. AND D.ref_doc_type_id = vDocTypeIdRpi
  313. AND A.invoice_id = B.invoice_id
  314. AND B.ref_id = C.inventory_id
  315. GROUP BY A.tenant_id, D.journal_trx_id,
  316. B.ref_doc_type_id, B.ref_item_id,
  317. A.partner_id, A.curr_code,
  318. B.ref_item_amount, C.doc_date, B.remark;
  319.  
  320. INSERT INTO tt_journal_trx_item
  321. (session_id, tenant_id, journal_trx_id, line_no,
  322. ref_doc_type_id, ref_id,
  323. partner_id, product_id, cashbank_id, ou_rc_id,
  324. segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  325. coa_id, curr_code, qty, uom_id,
  326. amount, journal_date, type_rate,
  327. numerator_rate, denominator_rate, journal_desc, remark)
  328. SELECT pSessionId, A.tenant_id, D.journal_trx_id, 1,
  329. A.doc_type_id, B.invoice_tax_id,
  330. A.partner_id, vNullId, vNullId, vNullId,
  331. vNullId, vSignCredit, vTaxCOA, vNullId,
  332. C.receive_coa_id, C.tax_curr_code, 0, vNullId,
  333. B.gov_tax_amount, A.doc_date, vTypeRate,
  334. 1, 1, 'VAT_IN', B.remark
  335. FROM pu_invoice A, pu_invoice_tax B, m_tax C, m_nrb_generated_document D
  336. WHERE A.invoice_id = D.ref_id
  337. AND D.create_datetime = pDatetime
  338. AND D.ref_doc_type_id = vDocTypeIdRpi
  339. AND A.invoice_id = B.invoice_id
  340. AND B.tax_id = C.tax_id
  341. GROUP BY A.tenant_id, D.journal_trx_id,A.doc_type_id, B.invoice_tax_id,
  342. A.partner_id, C.receive_coa_id, C.tax_curr_code,
  343. B.gov_tax_amount, A.doc_date, B.remark;
  344.  
  345. /*
  346. * buat juournal offside untuk yg credit ap
  347. * dengan grouping data journal yang lain melakukan debit account lain
  348. */
  349. INSERT INTO tt_journal_trx_item
  350. (session_id, tenant_id, journal_trx_id, line_no,
  351. ref_doc_type_id, ref_id,
  352. partner_id, product_id, cashbank_id, ou_rc_id,
  353. segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  354. coa_id, curr_code, qty, uom_id,
  355. amount, journal_date, type_rate,
  356. numerator_rate, denominator_rate, journal_desc, remark)
  357. SELECT A.session_id, B.tenant_id, B.journal_trx_id, 1,
  358. B.doc_type_id, B.doc_id,
  359. B.partner_id, vNullId, vNullId, vNullId,
  360. vNullId, vSignCredit, vSystemCOA, vNullId,
  361. f_get_ap_coa_partner(B.tenant_id, B.partner_id), A.curr_code, 0, vNullId,
  362. SUM(A.amount), B.doc_date, vTypeRate,
  363. 1, 1, 'AP', B.remark
  364. FROM tt_journal_trx_item A, gl_journal_trx B
  365. WHERE A.session_id = pSessionId AND
  366. A.journal_trx_id = B.journal_trx_id AND
  367. A.sign_journal = vSignDebit AND
  368. journal_desc IN ('PURCH_COST')
  369. GROUP BY A.session_id, B.tenant_id, B.journal_trx_id, B.doc_type_id, B.doc_id,
  370. B.partner_id, A.curr_code, B.remark;
  371.  
  372. /*
  373. * buat juournal offside untuk yg debit ap
  374. * dengan grouping data journal yang lain melakukan credit account lain
  375. */
  376. INSERT INTO tt_journal_trx_item
  377. (session_id, tenant_id, journal_trx_id, line_no,
  378. ref_doc_type_id, ref_id,
  379. partner_id, product_id, cashbank_id, ou_rc_id,
  380. segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  381. coa_id, curr_code, qty, uom_id,
  382. amount, journal_date, type_rate,
  383. numerator_rate, denominator_rate, journal_desc, remark)
  384. SELECT A.session_id, B.tenant_id, B.journal_trx_id, 1,
  385. B.doc_type_id, B.doc_id,
  386. B.partner_id, vNullId, vNullId, vNullId,
  387. vNullId, vSignDebit, vSystemCOA, vNullId,
  388. f_get_ap_coa_partner(B.tenant_id, B.partner_id), A.curr_code, 0, vNullId,
  389. SUM(A.amount), B.doc_date, vTypeRate,
  390. 1, 1, 'AP', B.remark
  391. FROM tt_journal_trx_item A, gl_journal_trx B
  392. WHERE A.session_id = pSessionId AND
  393. A.journal_trx_id = B.journal_trx_id AND
  394. A.sign_journal = vSignCredit AND
  395. journal_desc IN ('PURCH_COST','ACCR_AP','VAT_IN')
  396. GROUP BY A.session_id, B.tenant_id, B.journal_trx_id, B.doc_type_id, B.doc_id,
  397. B.partner_id, A.curr_code, B.remark;
  398.  
  399. --INSERT INTO gl_journal_trx_item
  400. --INSERT INTO gl_journal_trx_mapping
  401. --DELETE FROM tt_journal_trx_item
  402.  
  403. INSERT INTO gl_journal_trx_item
  404. (tenant_id, journal_trx_id, line_no,
  405. ref_doc_type_id, ref_id,
  406. partner_id, product_id, cashbank_id, ou_rc_id,
  407. segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  408. coa_id, curr_code, qty, uom_id,
  409. amount, journal_date, type_rate,
  410. numerator_rate, denominator_rate, journal_desc, remark,
  411. "version", create_datetime, create_user_id, update_datetime, update_user_id)
  412. SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  413. A.ref_doc_type_id, A.ref_id,
  414. A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  415. A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  416. A.coa_id, A.curr_code, A.qty, A.uom_id,
  417. A.amount, A.journal_date, A.type_rate,
  418. A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  419. 0, pDatetime, pUserId, pDatetime, pUserId
  420. FROM tt_journal_trx_item A
  421. WHERE A.session_id = pSessionId AND
  422. journal_desc IN ('PURCH_COST','ACCR_AP','VAT_IN');
  423.  
  424. INSERT INTO gl_journal_trx_mapping
  425. (tenant_id, journal_trx_id, line_no,
  426. ref_doc_type_id, ref_id,
  427. partner_id, product_id, cashbank_id, ou_rc_id,
  428. segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  429. coa_id, curr_code, qty, uom_id,
  430. amount, journal_date, type_rate,
  431. numerator_rate, denominator_rate, journal_desc, remark,
  432. "version", create_datetime, create_user_id, update_datetime, update_user_id)
  433. SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  434. A.ref_doc_type_id, A.ref_id,
  435. A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  436. A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  437. A.coa_id, A.curr_code, A.qty, A.uom_id,
  438. A.amount, A.journal_date, A.type_rate,
  439. A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  440. 0, pDatetime, pUserId, pDatetime, pUserId
  441. FROM tt_journal_trx_item A
  442. WHERE A.session_id = pSessionId AND
  443. journal_desc IN ('AP');
  444.  
  445. DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  446.  
  447. END;
  448. $BODY$
  449. LANGUAGE plpgsql VOLATILE
  450. COST 100;
  451. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement