Advertisement
tercnem

f_generate_return_note

Jan 18th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION f_generate_return_note(bigint, bigint, character varying)
  2.   RETURNS VOID AS
  3. $BODY$
  4. DECLARE
  5.     pTenantId           ALIAS FOR $1;
  6.     pUserId             ALIAS FOR $2;
  7.     pDatetime           ALIAS FOR $3;
  8.    
  9.     vNullRefId          bigint := -99;
  10.     vFlgNo              character varying(1) :='N';
  11.     vFlgYes             character varying(1) :='Y';
  12.    
  13.     vFlgInProgress      character varying(1) :='I';
  14.    
  15.     vRnDocTypeId        bigint := 502;
  16.     vEmptyString        character varying :='';
  17.     vSpaceString        character varying :=' ';
  18.     vSoDocTypeId        bigint := 301;
  19.     vDoDocTypeId        bigint := 311;
  20.     vWarehouseId        bigint;
  21.     vStatusDraft            character varying(1) :='D';
  22.     vProductStatusReturn    character varying(1) :='RETURN';
  23.     vDraft                  character varying(10) :='DRAFT';
  24. BEGIN  
  25.    
  26.     SELECT warehouse_id INTO vWarehouseId
  27.     FROM m_warehouse
  28.     WHERE warehouse_code = '';
  29.    
  30.     --ambil informasi product nya
  31.     UPDATE tt_generate_return_note_return_purch_invoice Z
  32.     SET product_id = A.product_id,
  33.         product_balance_id = B.product_balance_id,
  34.         base_uom_id = A.base_uom_id
  35.     FROM m_product A
  36.     INNER JOIN in_product_balance B ON B.product_id = A.product_id AND
  37.                                        B.serial_number = vSpaceString AND
  38.                                        B.lot_number = vSpaceString
  39.     WHERE A.product_code = Z.product_code;
  40.    
  41.     --ambil informasi SO sampai Sales Invoice
  42.     UPDATE tt_generate_return_note_return_purch_invoice Z
  43.     SET so_id = A.ref_id,
  44.         si_partner_id = A.partner_id,
  45.         si_tax_no = B.tax_no,
  46.         si_ou_id = Z.ou_id,
  47.         do_id = D.do_id,
  48.         do_item_id = D.do_item_id,
  49.         curr_code = A.curr_code
  50.     FROM sl_invoice A
  51.     INNER JOIN sl_invoice_item C ON C.invoice_id = A.invoice_id
  52.     INNER JOIN sl_do_item D ON D.do_item_id = C.ref_item_id AND C.ref_doc_type_id =  vDoDocTypeId
  53.     LEFT JOIN sl_invoice_tax B ON A.invoice_id = B.invoice_id
  54.     WHERE A.doc_no = Z.sales_invoice_no AND
  55.           A.doc_date =Z.sales_invoice_date AND
  56.           C.product_id = Z.product_id;
  57.          
  58.     WITH return_note AS (
  59.         SELECT sales_invoice_no, nrb_no, NEXTVAL('in_inventory_seq') AS return_note_id
  60.         FROM tt_generate_return_note_return_purch_invoice
  61.         WHERE Z.flg_process_return_note = vFlgNo AND si_id = vNullRefId AND po_id = vNullRefId
  62.         GROUP BY sales_invoice_no, nrb_no;
  63.     )      
  64.     UPDATE tt_generate_return_note_return_purch_invoice Z
  65.     SET return_note_id = return_note_id,
  66.         flg_process_return_note = vFlgInProgress
  67.     FROM return_note A
  68.     WHERE A.sales_invoice_no = Z.sales_invoice_no AND
  69.           A.nrb_no = Z.nrb_no;
  70.          
  71.     UPDATE tt_generate_return_note_return_purch_invoice Z
  72.     SET return_note_item_id = NEXTVAL('in_inventory_item_seq')
  73.     WHERE flg_process_return_note = vFlgInProgress;
  74.    
  75.    
  76.     INSERT INTO in_inventory(
  77.             inventory_id, tenant_id, doc_type_id, doc_no, doc_date, ou_from_id,
  78.             ou_to_id, partner_id, ext_doc_no, ext_doc_date, ref_doc_type_id,
  79.             ref_id, remark, warehouse_from_id, warehouse_to_id, transfer_date,
  80.             receive_date, activity_gl_id, ou_rc_id, no_vehicle, flg_delivery,
  81.             delivery_code, status_doc, workflow_status, version, create_datetime,
  82.             create_user_id, update_datetime, update_user_id, segment_id,
  83.             group_product_id)
  84.     SELECT  return_note_id, pTenantId, vRnDocTypeId, nrb_no ||'.RN',doc_date, si_ou_id,
  85.             si_ou_id, si_partner_id, vEmptyString, vEmptyString, vSoDocTypeId,
  86.             so_id, 'GENERATE DARI SISTEM  '||draft_ref_no, vWarehouseId, vWarehouseId, doc_date,
  87.             doc_date, vStatusDraft, vDraft, 0, pDatetime,
  88.             pUserId, pDatetime, pUserId, pDatetime, vNullRefId,
  89.             vNullRefId
  90.     FROM tt_generate_return_note_return_purch_invoice
  91.     WHERE flg_process_return_note = vFlgInProgress
  92.     GROUP BY return_note_id, nrb_no, si_ou_id, si_partner_id, so_id, draft_ref_no, doc_date, doc_date;
  93.    
  94.     INSERT INTO in_inventory_item(
  95.             inventory_item_id, tenant_id, inventory_id, line_no, product_id,
  96.             product_balance_id, product_status, serial_number, product_expired_date,
  97.             product_year_made, lot_number, ref_doc_type_id, ref_id, ref_item_id,
  98.             curr_code, amount, base_uom_id, qty_request, qty_realization,
  99.             remark, version, create_datetime, create_user_id, update_datetime,
  100.             update_user_id)
  101.     SELECT  return_note_item_id, pTenantId, return_note_id, ROW_NUMBER() OVER(PARTITION BY return_note_id, ORDER BY product_id), product_id,
  102.             product_balance_id, vProductStatusGood, vSpaceString, vSpaceString,
  103.             vSpaceString, vSpaceString, vDoDocTypeId, do_id, do_item_id,
  104.             curr_code, 0, base_uom_id, qty_return, qty_return,
  105.             vEmptyString, 0, pDatetime, pUserId, pDatetime,
  106.             pUserId
  107.     FROM tt_generate_return_note_return_purch_invoice
  108.     WHERE flg_process_return_note = vFlgInProgress;
  109.    
  110.     INSERT INTO in_return_note_for_finance(
  111.             inventory_id, flg_for_finance, so_id, po_id, create_datetime,
  112.             create_user_id, update_datetime, update_user_id, version)
  113.     SELECT inventory_id, vFlgYes, so_id, po_id, pDatetime,
  114.             pUserId, pDatetime, pUserId, 0
  115.     FROM tt_generate_return_note_return_purch_invoice
  116.     WHERE flg_process_return_note = vFlgInProgress
  117.     GROUP BY inventory_id;
  118.  
  119.  
  120. END;
  121. $BODY$
  122.   LANGUAGE plpgsql VOLATILE
  123.   COST 100;
  124. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement