Facebook
From Beige Parrot, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 135
  1. CREATE OR REPLACE FUNCTION xi_set_sales_invoice_delivered(bigint, character varying, character varying)
  2.   RETURNS SETOF refcursor AS
  3. $BODY$
  4.  
  5. DECLARE
  6.         pTenantId                       ALIAS FOR $1;
  7.         pSessionId                      ALIAS FOR $2;
  8.         pProcessNo                      ALIAS FOR $3;
  9.        
  10.         pRefPayloadData         REFCURSOR := 'refPayloadData';
  11.         vOuCode                         character varying;
  12.         vSoId                           bigint;
  13.         vParameterCode          character varying:='API.UPDATE.PI.NON.BE.URL';
  14.         vUrlApi                         character varying;
  15.         vParameterCodeApiKey            character varying:='API.KEY.FOR.API.KEMITRAAN';
  16.         vApiKey                         character varying;
  17.         vApiName                        character varying:='Update Pi Non BE';
  18.        
  19.         vProcessId                      bigint;
  20.         vPengirimanId           bigint;
  21.         vDoId                           bigint;
  22.         vUserId                         bigint;
  23.         vDatetime                       character varying(14);
  24.        
  25. BEGIN
  26.  
  27.         SELECT A.process_message_id INTO vProcessId
  28.         FROM t_process_message A
  29.         WHERE A.tenant_id = pTenantId AND
  30.                 A.process_name = 'xi_set_sales_invoice_delivered' AND
  31.                 A.process_no = pProcessNo;
  32.                
  33.         SELECT CAST(A.process_parameter_value AS bigint) INTO vPengirimanId
  34.         FROM t_process_parameter A
  35.         WHERE A.process_message_id = vProcessId AND
  36.                 A.process_parameter_key = 'pengirimanId';
  37.        
  38.         SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  39.         FROM t_process_parameter A
  40.         WHERE A.process_message_id = vProcessId AND
  41.                 A.process_parameter_key = 'userId';
  42.  
  43.         SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  44.         FROM t_process_parameter A
  45.         WHERE A.process_message_id = vProcessId AND
  46.                 A.process_parameter_key = 'datetime';  
  47.        
  48.         SELECT f_get_value_system_config_by_param_code(pTenantId, vParameterCode) INTO vUrlApi;
  49.         SELECT f_get_value_system_config_by_param_code(pTenantId, vParameterCodeApiKey) INTO vApiKey;
  50.        
  51.         Open pRefPayloadData FOR
  52.                 SELECT row_to_json(A)::character varying
  53.                 FROM(
  54.                         SELECT pSessionId AS session_uuid, vUrlApi AS url, vApiName AS api_name, vApiKey AS api_key, B.tenant_code AS tenant_code,
  55.                                         A.update_datetime AS datetime, f_get_username(A.update_user_id) AS username, vUserId AS user_id,
  56.                                         (
  57.                                                 SELECT array_to_json(array_agg(row_to_json(A)))
  58.                                                 FROM (
  59.                                                         SELECT f_get_ou_code(A.ou_id) AS ou_code,
  60.                                                                 A.doc_no AS doc_no, A.doc_date AS doc_date,
  61.                                                                 B.doc_no AS so_doc_no, B.doc_date AS so_doc_date, A.due_date AS due_date
  62.                                                         FROM sl_invoice_temp A
  63.                                                         JOIN sl_so B ON A.ref_id = B.so_id AND A.tenant_id = B.tenant_id AND B.ref_doc_type_id = 370
  64.                                                         JOIN sl_do C ON B.so_id = C.ref_id AND B.doc_type_id = C.ref_doc_type_id
  65.                                                         JOIN in_pengiriman_item D ON C.do_id = D.ref_id AND C.doc_type_id = D.ref_doc_type_id
  66.                                                         WHERE A.status_doc <> 'V'
  67.                                                         AND A.tenant_id = pTenantId
  68.                                                         AND D.pengiriman_id = vPengirimanId
  69.                                                 ) A
  70.                                         ) AS pi_list
  71.                         FROM in_pengiriman A
  72.                         JOIN t_tenant B ON A.tenant_id = B.tenant_id
  73.                         WHERE A.pengiriman_id = vPengirimanId
  74.                         AND A.tenant_id = pTenantId
  75.                 ) A;
  76.         RETURN NEXT pRefPayloadData;
  77.        
  78. END;
  79. $BODY$
  80.   LANGUAGE plpgsql VOLATILE
  81.   COST 100;
  82.   /