samuel025

Function Generate Jurnal DO

Jul 13th, 2021
994
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  CREATE OR REPLACE FUNCTION f_generate_jurnal_delivery_order(character varying,bigint,character varying,character varying,
  2.     bigint,character varying)
  3.   RETURNS void AS
  4. $BODY$
  5. DECLARE
  6.     pSessionId          ALIAS FOR $1;
  7.     pTenantId           ALIAS FOR $2;
  8.     pDateForm           ALIAS FOR $3;
  9.     pDateTo             ALIAS FOR $4;
  10.     pUserId             ALIAS FOR $5;
  11.     pDatetime           ALIAS FOR $6;
  12.  
  13.     -- For Journal
  14.     vEmptyId                bigint;
  15.     vSignDebt               character varying(1);
  16.     vSignCredit             character varying(1);
  17.     vTypeRate               character varying(5);
  18.     vStatusDraft            character varying(1);
  19.  
  20.  
  21.     vCreditNoteDoc          bigint;
  22.     vDebtNoteDoc            bigint;
  23.     vDownPaymentDoc         bigint;
  24.     vFakturPajakKeluaran    bigint;
  25.     vNotaReturPajakKeluaran bigint;
  26.     vAdvanceInvArDoc        bigint;
  27.     vCoaIdGIT               bigint;
  28.     vOuWarehouseId          bigint;
  29.     vDocTypeId              bigint;
  30.     vJournalTrxId           bigint;
  31.  
  32.     vDocJournal             DOC_JOURNAL%ROWTYPE;
  33.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  34.     vOuStructureJournalItem     OU_BU_STRUCTURE%ROWTYPE;
  35.     result                  RECORD;
  36.  
  37. BEGIN
  38.  
  39.     vProductCOA := 'PRODUCT';
  40.     vTypeRate := 'COM';
  41.     vEmptyId := -99;
  42.     vCoaIdGIT:=f_get_system_coa_by_group_coa(pTenantId, 'PersediaanInTransit');
  43.     vStatusDraft := 'D';
  44.     vSignDebt := 'D';
  45.     vSignCredit := 'C';
  46.  
  47. --
  48. --
  49. --  SELECT A.ref_id, f_get_ou_bu_structure(A.ou_id) AS ou, f_get_document_journal(A.doc_type_id) as doc
  50. --  FROM sl_do A
  51. --  WHERE A.do_id = vDoId INTO result;
  52. --
  53. --  vDocTypeId := result.doc_type_id;
  54. --  vOuStructure := result.ou;
  55. --  vDocJournal := result.doc;
  56. --
  57. --  SELECT A.ou_id, B.ou_id INTO vOuId, vOuWarehouseId
  58. --  FROM sl_do A
  59. --  INNER JOIN m_warehouse_ou B ON A.warehouse_id = B.warehouse_id
  60. --  WHERE A.do_id = vDoId;
  61. --
  62. --  IF (vOuId <> vOuWarehouseId) THEN
  63. --      SELECT f_get_ou_bu_structure(vOuWarehouseId) as ou_structure INTO result;
  64. --      vOuStructureJournalItem := result.ou_structure;
  65. --  ELSE
  66. --      vOuStructureJournalItem := ROW(-99, -99, -99);
  67. --  END IF;
  68. --
  69. --  DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  70.  
  71.     /*
  72.      * membuat data transaksi jurnal :
  73.      * 1. buat admin
  74.      * 2. buat temlate jurnal
  75.      */
  76. --  PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_id, (vDocJournal).journal_type, (vDocJournal).ledger_code, f_get_year_month_date(A.doc_date), 'MONTHLY', pDatetime, pUserId)
  77. --  FROM sl_do A
  78. --  WHERE A.do_id = vDoId;
  79.  
  80.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  81.  
  82.     INSERT INTO gl_journal_trx
  83.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  84.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,
  85.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  86.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  87.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.invoice_ar_id, A.doc_no, A.doc_date,
  88.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, A.partner_id, vEmptyId, vEmptyId, A.ext_doc_no, A.ext_doc_date,
  89.         A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark, vStatusDraft, 'DRAFT',
  90.         0, pDatetime, pUserId, pDatetime, pUserId
  91.     FROM sl_do A, sl_so B
  92.     WHERE A.do_id = vDoId AND
  93.         A.ref_doc_type_id = B.doc_type_id AND
  94.         A.ref_id = B.so_id;
  95.  
  96.  
  97.     INSERT INTO tt_journal_trx_item
  98.     (session_id, tenant_id, journal_trx_id, line_no,
  99.     ref_doc_type_id, ref_id,
  100.     partner_id, product_id, cashbank_id, ou_rc_id,
  101.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  102.     coa_id, curr_code, qty, uom_id,
  103.     amount, journal_date, type_rate,
  104.     numerator_rate, denominator_rate, journal_desc, remark)
  105.     SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  106.         A.doc_type_id, B.do_item_id,
  107.         A.partner_ship_to_id, B.product_id, vEmptyId, vEmptyId,
  108.         vEmptyId, vSignCredit, vProductCOA, vEmptyId,
  109.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), B.qty_dlv_int, B.base_uom_id,
  110.         0, A.doc_date, vTypeRate,
  111.         1, 1, 'PRODUCT_STOCK', B.remark
  112.     FROM sl_do A, sl_do_item B, sl_so_item C
  113.     WHERE A.do_id = vDoId AND
  114.         A.do_id = B.do_id AND
  115.         B.ref_id = C.so_item_id;
  116.  
  117.  
  118.     INSERT INTO gl_journal_trx_item
  119.     (tenant_id, journal_trx_id, line_no,
  120.     ref_doc_type_id, ref_id,
  121.     partner_id, product_id, cashbank_id, ou_rc_id,
  122.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  123.     coa_id, curr_code, qty, uom_id,
  124.     amount, journal_date, type_rate,
  125.     numerator_rate, denominator_rate, journal_desc, remark,
  126.     "version", create_datetime, create_user_id, update_datetime, update_user_id,
  127.     ou_branch_id, ou_sub_bu_id)
  128.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  129.         A.ref_doc_type_id, A.ref_id,
  130.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  131.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  132.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  133.         A.amount, A.journal_date, A.type_rate,
  134.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  135.         0, pDatetime, pUserId, pDatetime, pUserId,
  136.         (vOuStructureJournalItem).ou_branch_id, (vOuStructureJournalItem).ou_sub_bu_id
  137.     FROM tt_journal_trx_item A
  138.     WHERE A.session_id = pSessionId;
  139.  
  140.     INSERT INTO gl_journal_trx_mapping
  141.     (tenant_id, journal_trx_id, line_no,
  142.     ref_doc_type_id, ref_id,
  143.     partner_id, product_id, cashbank_id, ou_rc_id,
  144.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  145.     coa_id, curr_code, qty, uom_id,
  146.     amount, journal_date, type_rate,
  147.     numerator_rate, denominator_rate, journal_desc, remark,
  148.     "version", create_datetime, create_user_id, update_datetime, update_user_id,
  149.     ou_branch_id, ou_sub_bu_id)
  150.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  151.         A.ref_doc_type_id, A.ref_id,
  152.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  153.         A.segmen_id, vSignDebit, A.flg_source_coa, A.activity_gl_id,
  154.         vCoaIdGIT,A.curr_code , A.qty, A.uom_id,
  155.         A.amount, A.journal_date, A.type_rate,
  156.         A.numerator_rate, A.denominator_rate, 'PRODUCT_STOCK_IN_TRANSIT', A.remark,
  157.         0, pDatetime, pUserId, pDatetime, pUserId,
  158.         (vOuStructureJournalItem).ou_branch_id, (vOuStructureJournalItem).ou_sub_bu_id
  159.     FROM tt_journal_trx_item A
  160.     WHERE A.session_id = pSessionId;
  161.  
  162.     INSERT INTO gl_journal_trx_mapping
  163.     (tenant_id, journal_trx_id, line_no,
  164.     ref_doc_type_id, ref_id,
  165.     partner_id, product_id, cashbank_id, ou_rc_id,
  166.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  167.     coa_id, curr_code, qty, uom_id,
  168.     amount, journal_date, type_rate,
  169.     numerator_rate, denominator_rate, journal_desc, remark,
  170.     "version", create_datetime, create_user_id, update_datetime, update_user_id,
  171.     ou_branch_id, ou_sub_bu_id)
  172.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  173.         A.ref_doc_type_id, A.ref_id,
  174.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  175.         A.segmen_id, vSignDebt, A.flg_source_coa, A.activity_gl_id,
  176.         vCoaIdGIT,A.curr_code , A.qty, A.uom_id,
  177.         A.amount, A.journal_date, A.type_rate,
  178.         A.numerator_rate, A.denominator_rate, 'PRODUCT_STOCK_IN_TRANSIT', A.remark,
  179.         0, pDatetime, pUserId, pDatetime, pUserId,
  180.         (vOuStructureJournalItem).ou_branch_id, (vOuStructureJournalItem).ou_sub_bu_id
  181.     FROM tt_journal_trx_item A
  182.     WHERE A.session_id = pSessionId;
  183.  
  184.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  185.  
  186. END;
  187. $BODY$
  188.   LANGUAGE plpgsql VOLATILE
  189.   COST 100;
  190.   /
Advertisement
Add Comment
Please, Sign In to add comment