DELIMITER //

CREATE OR REPLACE FUNCTION zen_bpm_define (
  p_FunctionTag VARCHAR(100),
  p_FunctionTag_org VARCHAR(100),
  p_pk VARCHAR(100),
  p_ip VARCHAR(100), -- ĳѥ~ǤJγ]ww]ȡAMariaDB ѼƤ䴩ܼƷw]
  p_db VARCHAR(100)
)
RETURNS LONGTEXT
LANGUAGE SQL
DETERMINISTIC
BEGIN
  DECLARE v_rets LONGTEXT;
  DECLARE v_crlf CHAR(1);
  DECLARE v_type CHAR(1);
  
  -- ]wŸ [cite: 3, 4]
  SET v_crlf = CHAR(10);
  
  -- P_O_ñ֥ view 
  IF INSTR(p_FunctionTag_org, '_') > 0 THEN 
    SET v_type = 'Y'; 
  ELSE 
    SET v_type = 'N'; 
  END IF;

  -- }lզX JSON r [cite: 5]
  SET v_rets = CONCAT(
    ' {', v_crlf,
    '  "type": "button-toolbar",', v_crlf,
    '  "buttons": [', v_crlf
  );

  -- ھ @type Mwse [cite: 5]
  IF v_type = 'N' THEN
    -- Wes [cite: 5, 6]
    SET v_rets = CONCAT(v_rets,
      '    {', v_crlf,
      '      "type": "button",', v_crlf,
      '      "label": "We",', v_crlf,
      '      "actionType": "ajax",', v_crlf,
      '      "confirmText": "TwnWeH",', v_crlf,
      '      "disabledOn": "${flow_status != ''N''}",', v_crlf,
      '      "api": {', v_crlf,
      '        "method": "post",', v_crlf,
      '        "url": "${ls:base_ip}/xapi/v3/${ls:base_db}/bpmm02_spread/1/",', v_crlf,
      '        "data": {', v_crlf,
      '          "para01": "', p_FunctionTag, '",', v_crlf,
      '          "para02": "${personid}",', v_crlf,
      '          "para03": "${', p_pk, '}"', v_crlf,
      '        },', v_crlf,
      '        "dataType": "form"', v_crlf,
      '      },', v_crlf,
      '      "level": "primary"', v_crlf,
      '    },', v_crlf
    );
  ELSE
    -- PNB^B@os (ñּҦ) [cite: 10, 15, 20]
    SET v_rets = CONCAT(v_rets,
      -- PN [cite: 11, 12]
      '    {', v_crlf,
      '      "type": "button", "label": "PN", "actionType": "dialog", "level": "success",', v_crlf,
      '      "disabledOn": "${ls:bpm_signable == 0}",', v_crlf,
      '      "dialog": { "title": "PN", "size": "lg", "body": { "type": "service", "schemaApi": {', v_crlf,
      '        "method": "post", "url": "${ls:base_ip}/xapi/v3/${ls:wizard_db}/zen_showsource/0/",', v_crlf,
      '        "data": { "para01": "bpmm11_i", "para02": "beta@${', p_pk, '}" }, "dataType": "form"', v_crlf,
      '      } } }', v_crlf,
      '    },', v_crlf,
      -- ^ [cite: 15, 16, 17]
      '    {', v_crlf,
      '      "type": "button", "label": "^", "actionType": "dialog", "level": "danger",', v_crlf,
      '      "disabledOn": "${ls:bpm_signable == 0}",', v_crlf,
      '      "dialog": { "title": "^", "size": "lg", "body": { "type": "service", "schemaApi": {', v_crlf,
      '        "method": "post", "url": "${ls:base_ip}/xapi/v3/${ls:wizard_db}/zen_showsource/0/",', v_crlf,
      '        "data": { "para01": "bpmm12_i", "para02": "beta@${', p_pk, '}" }, "dataType": "form"', v_crlf,
      '      } } }', v_crlf,
      '    },', v_crlf,
      -- @o [cite: 20, 21, 22]
      '    {', v_crlf,
      '      "type": "button", "label": "@o", "actionType": "dialog", "level": "dark",', v_crlf,
      '      "disabledOn": "${ls:bpm_cancelable > 0}",', v_crlf,
      '      "dialog": { "title": "@o", "size": "lg", "body": { "type": "service", "schemaApi": {', v_crlf,
      '        "method": "post", "url": "${ls:base_ip}/xapi/v3/${ls:wizard_db}/zen_showsource/0/",', v_crlf,
      '        "data": { "para01": "bpmm13_i", "para02": "beta@${', p_pk, '}" }, "dataType": "form"', v_crlf,
      '      } } }', v_crlf,
      '    },', v_crlf
    );
  END IF;

  -- ñ־{ [cite: 25, 26, 27]
  SET v_rets = CONCAT(v_rets,
    '    {', v_crlf,
    '      "type": "button", "label": "ñ־{", "actionType": "dialog", "level": "warning",', v_crlf,
    '      "dialog": { "title": "ñ־{", "size": "lg", "body": { "type": "service", "schemaApi": {', v_crlf,
    '        "method": "post", "url": "${ls:base_ip}/xapi/v3/${ls:wizard_db}/zen_showsource/0/",', v_crlf,
    '        "data": { "para01": "bpmq11", "para02": "beta@${', p_pk, '}", "_tag": "', p_FunctionTag, '" },', v_crlf,
    '        "dataType": "form", "requestAdaptor": "local_set_params(51, api.data._tag); return { ...api, data: { ...api.data }};"', v_crlf,
    '      } } }', v_crlf,
    '    },', v_crlf
  );

  -- ˵y{ñ֤H [cite: 30, 31, 32]
  SET v_rets = CONCAT(v_rets,
    '    {', v_crlf,
    '      "type": "button", "label": "˵y{ñ֤H", "actionType": "dialog", "level": "secondary",', v_crlf,
    '      "dialog": { "title": "˵y{ñ֤H", "size": "lg", "body": { "type": "service", "schemaApi": {', v_crlf,
    '        "method": "post", "url": "${ls:base_ip}/xapi/v3/${ls:wizard_db}/zen_showsource/0/",', v_crlf,
    '        "data": { "para01": "bpmq12", "para02": "beta@${', p_pk, '}", "_tag": "', p_FunctionTag, '" },', v_crlf,
    '        "dataType": "form", "requestAdaptor": "local_set_params(51, api.data._tag); return { ...api, data: { ...api.data }};"', v_crlf,
    '      } } }', v_crlf,
    '    }', v_crlf,
    '  ]', v_crlf,
    ' },', v_crlf,
    ' { "type": "divider" },', v_crlf
  );

  RETURN v_rets;
END //

DELIMITER ;