Advertisement
dchrissandy

Untitled

Oct 31st, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.59 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION r_report_daily_stock_mutation_with_amount(
  2. character varying,
  3. bigint,
  4. bigint,
  5. bigint,
  6. character varying,
  7. bigint,
  8. bigint,
  9. character varying,
  10. character varying,
  11. character varying)
  12. RETURNS SETOF refcursor AS
  13. $BODY$
  14. DECLARE
  15. pRefHeader REFCURSOR := 'refHeader';
  16. pRefDetail REFCURSOR := 'refDetail';
  17. pSessionId ALIAS FOR $1;
  18. pTenantId ALIAS FOR $2;
  19. pUserId ALIAS FOR $3;
  20. pRoleId ALIAS FOR $4;
  21. pDatetime ALIAS FOR $5;
  22. pOuId ALIAS FOR $6;
  23. pWarehouseId ALIAS FOR $7;
  24. pPeriodFrom ALIAS FOR $8;
  25. pPeriodTo ALIAS FOR $9;
  26. pShowAllProduct ALIAS FOR $10;
  27.  
  28. vEmptyId bigint;
  29. vOuCodeName character varying(100);
  30. vWarehouseCodeName character varying(100);
  31. vOnlyWithStockMovement character varying(50);
  32.  
  33. vNol bigint;
  34. vDocTypeReceiveGoods bigint;
  35. vDocTypeGoodsTransferIn bigint;
  36. vDocTypeDeliveryOrder bigint;
  37. vDocTypeDeliveryOrderReceipt bigint;
  38. vDocTypePointOfSales bigint;
  39. vDocTypePointOfSalesVoid bigint;
  40. vDocTypeClaimNote bigint;
  41. vDocTypeReturnNote bigint;
  42. vDocTypeGoodsTransferOut bigint;
  43. vDocTypeAdjusmentStockQty bigint;
  44. vDocTypeAdjusmentStockQtyAmount bigint;
  45. vDocTypeGoodsTransferInReceipt bigint;
  46.  
  47. vDocTypeSaldoAwal bigint;
  48.  
  49. vAdminLedgerCodeInvQty character varying(5);
  50. vStatusLedgerDone character varying(5);
  51. vLastYearMonthProcessed character varying(30);
  52. vLastYearMonthProcessedForNilaiSatuan character varying(30);
  53. vNextLastYearMonthProcessed character varying(30);
  54. vDateMinusOneDay character varying(30);
  55. vAdminLedgerCodeCost character varying(30);
  56.  
  57. vStartTrxDate character varying;
  58. vMaxDateYearMonthCogs character varying;
  59.  
  60.  
  61. BEGIN
  62.  
  63. vEmptyId := -99;
  64. vOuCodeName := 'ALL';
  65. vWarehouseCodeName := 'ALL';
  66. vOnlyWithStockMovement := 'ONLYWITHSTOCKMOVEMENT';
  67. vNol := 0;
  68.  
  69. vDocTypeReceiveGoods := 111;
  70. vDocTypeGoodsTransferIn := 535;
  71. vDocTypeDeliveryOrder := 311;
  72. vDocTypeDeliveryOrderReceipt := 526;
  73. vDocTypePointOfSales := 401;
  74. vDocTypePointOfSalesVoid := 405;
  75. vDocTypeClaimNote := 511;
  76. vDocTypeReturnNote := 502;
  77. vDocTypeGoodsTransferOut := 533;
  78. vDocTypeAdjusmentStockQty := 521;
  79. vDocTypeAdjusmentStockQtyAmount := 522;
  80. vDocTypeGoodsTransferInReceipt := 536;
  81.  
  82. vDocTypeSaldoAwal := -99;
  83.  
  84. vAdminLedgerCodeInvQty := 'INV';
  85. vAdminLedgerCodeCost := 'COST.FG';
  86. vStatusLedgerDone := '1';
  87. vLastYearMonthProcessed := '';
  88. vLastYearMonthProcessedForNilaiSatuan := '';
  89. vNextLastYearMonthProcessed := '';
  90. vDateMinusOneDay := '';
  91. vMaxDateYearMonthCogs := '';
  92.  
  93.  
  94. -- filter ou id
  95. IF(pOuId <> vEmptyId) THEN
  96. SELECT ou_code||' - '||ou_name INTO vOuCodeName
  97. FROM t_ou
  98. WHERE ou_id = pOuId;
  99. END IF;
  100.  
  101. -- filter warehouse id
  102. IF(pWarehouseId <> vEmptyId) THEN
  103. SELECT warehouse_code||' - '||warehouse_name INTO vWarehouseCodeName
  104. FROM m_warehouse
  105. WHERE warehouse_id = pWarehouseId;
  106. END IF;
  107.  
  108. SELECT MAX(date_year_month) FROM in_summary_monthly_cogs WHERE date_year_month <= LEFT(pPeriodTo,6) INTO vMaxDateYearMonthCogs;
  109.  
  110. SELECT f_get_value_system_config_by_param_code(pTenantId, 'start.trx.date') INTO vStartTrxDate;
  111.  
  112. -- get last year month processed
  113. SELECT COALESCE(MAX(date_year_month), '') INTO vLastYearMonthProcessed
  114. FROM m_admin_process_ledger A, m_ou_structure B
  115. WHERE A.tenant_id = pTenantId
  116. AND B.ou_id = pOuId
  117. AND B.ou_bu_id = A.ou_id
  118. AND A.ledger_code = vAdminLedgerCodeInvQty
  119. AND A.status_ledger = vStatusLedgerDone
  120. AND A.date_year_month < LEFT(pPeriodFrom,6);
  121.  
  122. SELECT COALESCE(MAX(date_year_month), '') INTO vLastYearMonthProcessedForNilaiSatuan
  123. FROM m_admin_process_ledger A, m_ou_structure B
  124. WHERE A.tenant_id = pTenantId
  125. AND B.ou_id = pOuId
  126. AND B.ou_bu_id = A.ou_id
  127. AND A.ledger_code = vAdminLedgerCodeCost
  128. AND A.status_ledger = vStatusLedgerDone
  129. AND A.date_year_month <= LEFT(pPeriodFrom,6);
  130.  
  131. IF (vLastYearMonthProcessed = '') THEN
  132. vNextLastYearMonthProcessed = vStartTrxDate;
  133. ELSE
  134. -- vLastYearMonthProcessed + 1 month
  135. SELECT TO_CHAR(CONCAT(vLastYearMonthProcessed,'01')::date + INTERVAL '1 month', 'YYYYMM') INTO vNextLastYearMonthProcessed;
  136. END IF;
  137.  
  138. raise notice '%',pPeriodFrom;
  139. raise notice '%',vLastYearMonthProcessed;
  140.  
  141. -- H-1 pPeriodFrom
  142. SELECT TO_CHAR(pPeriodFrom::date - INTERVAL '1 day', 'YYYYMMDD') INTO vDateMinusOneDay;
  143.  
  144.  
  145.  
  146. DELETE FROM tt_r_daily_stock_mutation WHERE session_id = pSessionId;
  147.  
  148.  
  149. -- insert saldo_awal into table temp tt_r_daily_stock_mutation from in_summary_monthly_qty
  150. INSERT INTO tt_r_daily_stock_mutation(
  151. session_id, product_id, product_code, product_name,
  152. brand, satuan, saldo_awal)
  153. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  154. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, COALESCE(SUM(A.qty), 0) AS saldo_awal
  155. FROM in_summary_monthly_qty A
  156. WHERE A.tenant_id = pTenantId
  157. AND A.warehouse_id = pWarehouseId
  158. AND A.date_year_month = vNextLastYearMonthProcessed
  159. AND A.doc_type_id = vDocTypeSaldoAwal
  160. GROUP BY A.product_id, A.base_uom_id;
  161.  
  162. -- insert saldo_awal into table temp tt_r_daily_stock_mutation from in_log_product_balance_stock
  163. INSERT INTO tt_r_daily_stock_mutation(
  164. session_id, product_id, product_code, product_name,
  165. brand, satuan, saldo_awal)
  166. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  167. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, COALESCE(SUM(A.qty), 0) AS saldo_awal
  168. FROM in_log_product_balance_stock A
  169. WHERE A.tenant_id = pTenantId
  170. AND A.warehouse_id = pWarehouseId
  171. AND SUBSTRING(A.doc_date, 1, 6) > vLastYearMonthProcessed
  172. AND A.doc_date <= vDateMinusOneDay
  173. GROUP BY A.product_id, A.base_uom_id;
  174.  
  175. --insert harga pokok penjualan
  176. INSERT INTO tt_r_daily_stock_mutation(
  177. session_id, product_id, product_code, product_name,
  178. brand, satuan, nilai_satuan)
  179. SELECT DISTINCT pSessionId, A.product_id, B.product_code, B.product_name,
  180. '' AS brand, f_get_uom_name(B.base_uom_id) AS satuan, COALESCE(A.avg_price, 0) AS nilai_satuan
  181. FROM in_summary_monthly_cogs A
  182. INNER JOIN m_product B ON A.product_id = B.product_id
  183. WHERE A.tenant_id = pTenantId
  184. AND A.date_year_month = vMaxDateYearMonthCogs;
  185.  
  186. -- insert qty_terima_barang supplier table tt_r_daily_stock_mutation
  187. INSERT INTO tt_r_daily_stock_mutation(
  188. session_id, product_id, product_code, product_name,
  189. brand, satuan, qty_terima_barang)
  190. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  191. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_terima_barang
  192. FROM in_log_product_balance_stock A
  193. WHERE A.tenant_id = pTenantId
  194. AND A.warehouse_id = pWarehouseId
  195. AND A.doc_type_id IN (vDocTypeReceiveGoods)
  196. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  197. GROUP BY A.product_id, A.base_uom_id;
  198.  
  199. -- insert qty_terima_barang antar gudang table tt_r_daily_stock_mutation
  200. INSERT INTO tt_r_daily_stock_mutation(
  201. session_id, product_id, product_code, product_name,
  202. brand, satuan, qty_terima_barang_antar_gudang)
  203. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  204. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_terima_barang_antar_gudang
  205. FROM in_log_product_balance_stock A
  206. WHERE A.tenant_id = pTenantId
  207. AND A.warehouse_id = pWarehouseId
  208. AND A.doc_type_id IN (vDocTypeGoodsTransferIn)
  209. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  210. GROUP BY A.product_id, A.base_uom_id;
  211.  
  212. -- insert qty_terima_barang antar gudang table tt_r_daily_stock_mutation
  213. INSERT INTO tt_r_daily_stock_mutation(
  214. session_id, product_id, product_code, product_name,
  215. brand, satuan, qty_terima_barang_antar_gudang)
  216. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  217. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_terima_barang_antar_gudang
  218. FROM in_log_product_balance_stock A
  219. WHERE A.tenant_id = pTenantId
  220. AND A.warehouse_id = pWarehouseId
  221. AND A.doc_type_id IN (vDocTypeGoodsTransferInReceipt)
  222. AND A.qty > 0
  223. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  224. GROUP BY A.product_id, A.base_uom_id;
  225.  
  226. -- insert qty_jual table tt_r_daily_stock_mutation
  227. INSERT INTO tt_r_daily_stock_mutation(
  228. session_id, product_id, product_code, product_name,
  229. brand, satuan, qty_jual)
  230. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  231. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_jual
  232. FROM in_log_product_balance_stock A
  233. WHERE A.tenant_id = pTenantId
  234. AND A.warehouse_id = pWarehouseId
  235. AND A.doc_type_id IN (vDocTypeDeliveryOrder, vDocTypeDeliveryOrderReceipt, vDocTypePointOfSales, vDocTypePointOfSalesVoid)
  236. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  237. GROUP BY A.product_id, A.base_uom_id;
  238.  
  239. -- insert qty_retur_beli table tt_r_daily_stock_mutation
  240. INSERT INTO tt_r_daily_stock_mutation(
  241. session_id, product_id, product_code, product_name,
  242. brand, satuan, qty_retur_beli)
  243. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  244. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_retur_beli
  245. FROM in_log_product_balance_stock A
  246. WHERE A.tenant_id = pTenantId
  247. AND A.warehouse_id = pWarehouseId
  248. AND A.doc_type_id = vDocTypeClaimNote
  249. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  250. GROUP BY A.product_id, A.base_uom_id;
  251.  
  252. -- insert qty_retur_jual table tt_r_daily_stock_mutation
  253. INSERT INTO tt_r_daily_stock_mutation(
  254. session_id, product_id, product_code, product_name,
  255. brand, satuan, qty_retur_jual)
  256. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  257. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_retur_jual
  258. FROM in_log_product_balance_stock A
  259. WHERE A.tenant_id = pTenantId
  260. AND A.warehouse_id = pWarehouseId
  261. AND A.doc_type_id = vDocTypeReturnNote
  262. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  263. GROUP BY A.product_id, A.base_uom_id;
  264.  
  265. -- insert qty_keluar_barang table tt_r_daily_stock_mutation
  266. INSERT INTO tt_r_daily_stock_mutation(
  267. session_id, product_id, product_code, product_name,
  268. brand, satuan, qty_keluar_barang)
  269. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  270. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_keluar_barang
  271. FROM in_log_product_balance_stock A
  272. WHERE A.tenant_id = pTenantId
  273. AND A.warehouse_id = pWarehouseId
  274. AND A.doc_type_id = vDocTypeGoodsTransferOut
  275. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  276. GROUP BY A.product_id, A.base_uom_id;
  277.  
  278. INSERT INTO tt_r_daily_stock_mutation(
  279. session_id, product_id, product_code, product_name,
  280. brand, satuan, qty_keluar_barang)
  281. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  282. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_keluar_barang
  283. FROM in_log_product_balance_stock A
  284. WHERE A.tenant_id = pTenantId
  285. AND A.warehouse_id = pWarehouseId
  286. AND A.doc_type_id = vDocTypeGoodsTransferInReceipt
  287. AND A.qty < 0
  288. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  289. GROUP BY A.product_id, A.base_uom_id;
  290.  
  291. -- insert qty_adj table tt_r_daily_stock_mutation
  292. INSERT INTO tt_r_daily_stock_mutation(
  293. session_id, product_id, product_code, product_name,
  294. brand, satuan, qty_adj)
  295. SELECT pSessionId, A.product_id, f_get_product_code(A.product_id) AS product_code, f_get_product_name(A.product_id) AS product_name,
  296. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan, SUM(A.qty) AS qty_adj
  297. FROM in_log_product_balance_stock A
  298. WHERE A.tenant_id = pTenantId
  299. AND A.warehouse_id = pWarehouseId
  300. AND A.doc_type_id IN (vDocTypeAdjusmentStockQty, vDocTypeAdjusmentStockQtyAmount)
  301. AND A.doc_date BETWEEN pPeriodFrom AND pPeriodTo
  302. GROUP BY A.product_id, A.base_uom_id;
  303.  
  304.  
  305. -- insert data yg belum ada di tt
  306. INSERT INTO tt_r_daily_stock_mutation(
  307. session_id, product_id, product_code, product_name,
  308. brand, satuan)
  309. SELECT pSessionId,A.product_id,A.product_code,A.product_name,
  310. '' AS brand, f_get_uom_name(A.base_uom_id) AS satuan
  311. FROM m_product A
  312. WHERE A.active='Y' AND tenant_id =10 AND NOT EXISTS(
  313. SELECT 1 from tt_r_daily_stock_mutation B WHERE B.product_id = A.product_id
  314. );
  315.  
  316. OPEN pRefHeader FOR
  317. SELECT CASE WHEN pOuId = vEmptyId THEN -99 ELSE pOuId END AS ou_id, vOuCodeName AS ou_code_name,
  318. CASE WHEN pWarehouseId = vEmptyId THEN -99 ELSE pWarehouseId END AS warehouse_id, vWarehouseCodeName AS warehouse_code_name,
  319. pDatetime AS datetime, f_get_username(pUserId) AS username, pPeriodFrom AS period_from, pPeriodTo AS period_to,
  320. CASE WHEN pShowAllProduct = vOnlyWithStockMovement THEN 'Only With Stock Movement' ELSE 'All' END AS showed_product;
  321. RETURN NEXT pRefHeader;
  322.  
  323.  
  324. IF(pShowAllProduct = vOnlyWithStockMovement) THEN
  325. OPEN pRefDetail FOR
  326. SELECT A.product_code, A.product_name,
  327. CONCAT(f_get_brand_code(B.brand_id), ' - ', f_get_brand_name(B.brand_id)) AS brand,
  328. A.satuan,
  329. SUM(ABS(A.saldo_awal)) AS saldo_awal,SUM(ABS(A.saldo_awal))*SUM(A.nilai_satuan) AS nilai_saldo_awal,
  330. SUM(ABS(A.qty_terima_barang)) AS qty_terima_barang_supplier, SUM(ABS(A.qty_terima_barang))*SUM(A.nilai_satuan) AS nilai_terima_barang_supplier,
  331. SUM(ABS(A.qty_terima_barang_antar_gudang)) AS qty_terima_barang_antar_gudang, SUM(ABS(A.qty_terima_barang_antar_gudang))*SUM(A.nilai_satuan) AS nilai_terima_barang_antar_gudang,
  332. SUM(ABS(A.qty_jual)) AS qty_jual, SUM(ABS(A.qty_jual))*SUM(A.nilai_satuan) AS nilai_jual,
  333. SUM(ABS(A.qty_retur_beli)) As qty_retur_beli, SUM(ABS(A.qty_retur_beli))*SUM(A.nilai_satuan) AS nilai_retur_beli,
  334. SUM(ABS(A.qty_retur_jual)) AS qty_retur_jual, SUM(ABS(A.qty_retur_jual))*SUM(A.nilai_satuan) AS nilai_retur_jual,
  335. SUM(ABS(A.qty_keluar_barang)) AS qty_keluar_barang, SUM(ABS(A.qty_keluar_barang))*SUM(A.nilai_satuan) AS nilai_keluar_barang,
  336. SUM(A.qty_adj) AS qty_adj, SUM(A.qty_adj)*SUM(A.nilai_satuan) AS nilai_adj,
  337. (SUM(A.saldo_awal) + SUM(A.qty_terima_barang) + SUM(A.qty_terima_barang_antar_gudang) + SUM(A.qty_jual) + SUM(A.qty_retur_beli) +
  338. SUM(A.qty_retur_jual) + SUM(A.qty_keluar_barang) + SUM(A.qty_adj)) AS saldo_akhir,
  339. SUM(A.nilai_satuan) AS nilai_satuan,
  340. SUM(A.nilai_satuan) * (SUM(A.saldo_awal) + SUM(A.qty_terima_barang) + SUM(A.qty_terima_barang_antar_gudang) + SUM(A.qty_jual) + SUM(A.qty_retur_beli) +
  341. SUM(A.qty_retur_jual) + SUM(A.qty_keluar_barang) + SUM(A.qty_adj)) AS nilai_akhir
  342. FROM tt_r_daily_stock_mutation A
  343. INNER JOIN m_product B ON A.product_id = B.product_id
  344. GROUP BY A.product_code, A.product_name, B.brand_id, A.satuan
  345. HAVING SUM(A.qty_terima_barang) != 0 OR SUM(A.qty_terima_barang_antar_gudang) != 0 OR SUM(A.qty_jual) != 0 OR SUM(A.qty_retur_beli) != 0
  346. OR SUM(A.qty_retur_jual) != 0 OR SUM(A.qty_keluar_barang) != 0 OR SUM(A.qty_adj) != 0
  347. ORDER BY A.product_name;
  348. RETURN NEXT pRefDetail;
  349. ELSE
  350. OPEN pRefDetail FOR
  351. SELECT A.product_code, A.product_name,
  352. CONCAT(f_get_brand_code(B.brand_id), ' - ', f_get_brand_name(B.brand_id)) AS brand,
  353. A.satuan,
  354. SUM(ABS(A.saldo_awal)) AS saldo_awal,SUM(ABS(A.saldo_awal))*SUM(A.nilai_satuan) AS nilai_saldo_awal,
  355. SUM(ABS(A.qty_terima_barang)) AS qty_terima_barang_supplier, SUM(ABS(A.qty_terima_barang))*SUM(A.nilai_satuan) AS nilai_terima_barang_supplier,
  356. SUM(ABS(A.qty_terima_barang_antar_gudang)) AS qty_terima_barang_antar_gudang, SUM(ABS(A.qty_terima_barang_antar_gudang))*SUM(A.nilai_satuan) AS nilai_terima_barang_antar_gudang,
  357. SUM(ABS(A.qty_jual)) AS qty_jual, SUM(ABS(A.qty_jual))*SUM(A.nilai_satuan) AS nilai_jual,
  358. SUM(ABS(A.qty_retur_beli)) As qty_retur_beli, SUM(ABS(A.qty_retur_beli))*SUM(A.nilai_satuan) AS nilai_retur_beli,
  359. SUM(ABS(A.qty_retur_jual)) AS qty_retur_jual, SUM(ABS(A.qty_retur_jual))*SUM(A.nilai_satuan) AS nilai_retur_jual,
  360. SUM(ABS(A.qty_keluar_barang)) AS qty_keluar_barang, SUM(ABS(A.qty_keluar_barang))*SUM(A.nilai_satuan) AS nilai_keluar_barang,
  361. SUM(A.qty_adj) AS qty_adj, SUM(A.qty_adj)*SUM(A.nilai_satuan) AS nilai_adj,
  362. (SUM(A.saldo_awal) + SUM(A.qty_terima_barang) + SUM(A.qty_terima_barang_antar_gudang) + SUM(A.qty_jual) + SUM(A.qty_retur_beli) +
  363. SUM(A.qty_retur_jual) + SUM(A.qty_keluar_barang) + SUM(A.qty_adj)) AS saldo_akhir,
  364. SUM(A.nilai_satuan) AS nilai_satuan,
  365. SUM(A.nilai_satuan) * (SUM(A.saldo_awal) + SUM(A.qty_terima_barang) + SUM(A.qty_terima_barang_antar_gudang) + SUM(A.qty_jual) + SUM(A.qty_retur_beli) +
  366. SUM(A.qty_retur_jual) + SUM(A.qty_keluar_barang) + SUM(A.qty_adj)) AS nilai_akhir
  367. FROM tt_r_daily_stock_mutation A
  368. INNER JOIN m_product B ON A.product_id = B.product_id
  369. GROUP BY A.product_code, A.product_name, B.brand_id, A.satuan
  370. ORDER BY A.product_name;
  371. RETURN NEXT pRefDetail;
  372. END IF;
  373.  
  374.  
  375. DELETE FROM tt_r_daily_stock_mutation WHERE session_id = pSessionId;
  376. END;
  377. $BODY$
  378. LANGUAGE plpgsql VOLATILE
  379. COST 100
  380. ROWS 1000;
  381. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement