Advertisement
samuel025

Function Generate Jurnal DO Receipt

Jul 13th, 2021
1,163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  CREATE OR REPLACE FUNCTION f_generate_jurnal_do_receipt(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.     vActivityCOA            character varying(10);
  19.     vSystemCOA              character varying(10);
  20.     vTaxCOA                 character varying(10);
  21.     vEmptyValue             character varying(1);
  22.     vFlgNo                  character varying(1);
  23.     vEmptyString            character varying;
  24.     vStatusDraft            character varying(1);
  25.  
  26.     vDoReceiptDocTypeId     bigint;
  27.     vRoundingModeNonTax     character varying(5);
  28.     vDoDocTypeId            bigint;
  29.     vSoDocTypeId            bigint;
  30.     vSlsInvTempId           bigint;
  31.     vSlsInvTempDocTypeId    bigint;
  32.     vNo                     character varying(5);
  33.     vYes                    character varying(5);
  34.  
  35.  
  36.  
  37.     vDocTypeId              bigint;
  38.     vJournalTrxId           bigint;
  39.  
  40.     vDocJournal                 DOC_JOURNAL%ROWTYPE;
  41.     vOuStructure                OU_BU_STRUCTURE%ROWTYPE;
  42.     vOuStructureJournalItem     OU_BU_STRUCTURE%ROWTYPE;
  43.     result                      RECORD;
  44.  
  45. BEGIN
  46.  
  47.     vFlagInvoice := 'N';
  48.     vEmptyId := -99;
  49.     vStatusRelease := 'R';
  50.     vStatusVoid := 'V';
  51.     vStatusDraft := 'D';
  52.     vStatusFinal := 'F';
  53.     vEmptyValue := ' ';
  54.     vProductStatus := 'GOOD';
  55.     vSignDebit := 'D';
  56.     vSignCredit := 'C';
  57.     vTypeRate := 'COM';
  58.     vProductCOA := 'PRODUCT';
  59.     vSystemCOA := 'SYSTEM';
  60.     vUnfinishedItem := 0;
  61.     vNo := 'N';
  62.     vYes := 'Y';
  63.  
  64.     vDoReceiptDocTypeId = 525;
  65.     vDoDocTypeId := 311;
  66.     vSoDocTypeId := 301;
  67.     vSlsInvTempDocTypeId := 361;
  68. --
  69. --  SELECT A.ref_id, f_get_ou_bu_structure(A.ou_id) AS ou, f_get_document_journal(A.doc_type_id) as doc
  70. --  FROM in_do_receipt A
  71. --  WHERE A.do_receipt_id = vDoReceiptId INTO result;
  72. --
  73. --  vDocTypeId := result.doc_type_id;
  74. --  vOuStructure := result.ou;
  75. --  vDocJournal := result.doc;
  76. --
  77. --  SELECT A.ou_id, B.ou_id INTO vOuId, vOuWarehouseId
  78. --  FROM in_do_receipt A
  79. --  INNER JOIN m_warehouse_ou B ON A.warehouse_id = B.warehouse_id
  80. --  WHERE A.do_receipt_id = vDoReceiptId;
  81. --
  82. --  IF (vOuId <> vOuWarehouseId) THEN
  83. --      SELECT f_get_ou_bu_structure(vOuWarehouseId) as ou_structure INTO result;
  84. --      vOuStructureJournalItem := result.ou_structure;
  85. --  ELSE
  86. --      vOuStructureJournalItem := ROW(-99, -99, -99);
  87. --  END IF;
  88.  
  89.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  90.  
  91.     /*
  92.      * membuat data transaksi jurnal :
  93.      * 1. buat admin
  94.      * 2. buat temlate jurnal
  95. --   */
  96. --  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), 'DAILY', pDatetime, pUserId)
  97. --  FROM fi_invoice_ar A
  98. --  WHERE A.invoice_ar_id = pInvoiceArId;
  99.  
  100.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  101.  
  102.     INSERT INTO gl_journal_trx
  103.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  104.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,
  105.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  106.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  107.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.do_receipt_id, A.doc_no, A.doc_date,
  108.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, B.partner_ship_to_id, vEmptyId, A.warehouse_id, A.ext_doc_no, A.ext_doc_date,
  109.         A.ref_doc_type_id, A.ref_id, A.doc_date, C.curr_code, A.remark, vStatusDraft, 'DRAFT',
  110.         0, pDatetime, vUserId, pDatetime, vUserId
  111.     FROM in_do_receipt A, sl_do B, sl_so C
  112.     WHERE A.do_receipt_id = vDoReceiptId AND
  113.         A.ref_id = B.do_id AND
  114.         B.ref_id = C.so_id;
  115.  
  116.     INSERT INTO tt_journal_trx_item
  117.     (session_id, tenant_id, journal_trx_id, line_no,
  118.     ref_doc_type_id, ref_id,
  119.     partner_id, product_id, cashbank_id, ou_rc_id,
  120.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  121.     coa_id, curr_code, qty, uom_id,
  122.     amount, journal_date, type_rate,
  123.     numerator_rate, denominator_rate, journal_desc, remark)
  124.     SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  125.         A.doc_type_id, B.do_receipt_item_id,
  126.         C.partner_ship_to_id, B.product_id, vEmptyId, vEmptyId,
  127.         vEmptyId, vSignDebit, vProductCOA, vEmptyId,
  128.         f_get_product_coa_group_product(A.tenant_id, B.product_id), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), B.qty_return, B.uom_id,
  129.         0, A.doc_date, vTypeRate,
  130.         1, 1, 'PRODUCT_STOCK', B.remark
  131.     FROM in_do_receipt A, in_do_receipt_item B, sl_do C
  132.     WHERE A.do_receipt_id = vDoReceiptId AND
  133.         A.do_receipt_id = B.do_receipt_id AND
  134.         A.ref_id = C.do_id;
  135.  
  136.     INSERT INTO gl_journal_trx_item
  137.     (tenant_id, journal_trx_id, line_no,
  138.     ref_doc_type_id, ref_id,
  139.     partner_id, product_id, cashbank_id, ou_rc_id,
  140.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  141.     coa_id, curr_code, qty, uom_id,
  142.     amount, journal_date, type_rate,
  143.     numerator_rate, denominator_rate, journal_desc, remark,
  144.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  145.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  146.         A.ref_doc_type_id, A.ref_id,
  147.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  148.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  149.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  150.         A.amount, A.journal_date, A.type_rate,
  151.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  152.         0, pDatetime, pUserId, pDatetime, pUserId,
  153.         (vOuStructureJournalItem).ou_branch_id, (vOuStructureJournalItem).ou_sub_bu_id
  154.     FROM tt_journal_trx_item A
  155.     WHERE A.session_id = pSessionId;
  156.  
  157.     INSERT INTO gl_journal_trx_mapping
  158.     (tenant_id, journal_trx_id, line_no,
  159.     ref_doc_type_id, ref_id,
  160.     partner_id, product_id, cashbank_id, ou_rc_id,
  161.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  162.     coa_id, curr_code, qty, uom_id,
  163.     amount, journal_date, type_rate,
  164.     numerator_rate, denominator_rate, journal_desc, remark,
  165.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  166.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  167.         vEmptyId, vEmptyId,
  168.         vEmptyId, vEmptyId, vEmptyId, vEmptyId,
  169.         vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  170.         f_get_system_coa_by_group_coa(A.tenant_id, 'HargaPokokPenjualan'), f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku'), 0, vEmptyId,
  171.         0, A.journal_date, A.type_rate,
  172.         1, 1, 'COGS', vEmptyValue,
  173.         0, pDatetime, pUserId, pDatetime, pUserId
  174.     FROM tt_journal_trx_item A
  175.     WHERE A.session_id = pSessionId
  176.     GROUP BY A.tenant_id, A.journal_trx_id, A.journal_date, A.type_rate;
  177.  
  178.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  179.  
  180. END;
  181. $BODY$
  182.   LANGUAGE plpgsql VOLATILE
  183.   COST 100;
  184.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement