[mysql] Payworld

Viewer

copydownloadembedprintName: Payworld
  1. ---------------------------YBL ENGINE---------------------
  2.  
  3. MERGE INTO kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_ybl_engine_snapshot T
  4.   USING (
  5.     SELECT * from (
  6.       SELECT
  7.         transaction_date,
  8.         merchant,
  9.         channel,
  10.         merchant_user_id,
  11.         merchant_transaction_no,
  12.         engine_transaction_no,
  13.         aadhar_no,
  14.         customer_mobile_no,
  15.         provider,
  16.         mrp,
  17.         total_comm,
  18.         provider_comm,
  19.         rrn,
  20.         gst,
  21.         gst_value,
  22.         bank_name,
  23.         provider_rate_mode,
  24.         device_serno,
  25.         device_info,
  26.         response_code,
  27.         response_message,
  28.         client_ip,
  29.         settle_date,
  30.         status,
  31.         requery_settle_date,
  32.         row_number() over(partition by engine_transaction_no order by transaction_date desc) as rownum
  33.       FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_ybl_engine_snapshot)
  34.     WHERE rownum=1
  35.   ) AS S
  36.   ON T.engine_transaction_no = S.engine_transaction_no
  37.   WHEN NOT MATCHED THEN
  38.   INSERT (
  39.     transaction_date,
  40.     merchant,
  41.     channel,
  42.     merchant_user_id,
  43.     merchant_transaction_no,
  44.     engine_transaction_no,
  45.     aadhar_no,
  46.     customer_mobile_no,
  47.     provider,
  48.     mrp,
  49.     total_comm,
  50.     provider_comm,
  51.     rrn,
  52.     gst,
  53.     gst_value,
  54.     bank_name,
  55.     provider_rate_mode,
  56.     device_serno,
  57.     device_info,
  58.     response_code,
  59.     response_message,
  60.     client_ip,
  61.     settle_date,
  62.     status,
  63.     requery_settle_date
  64. ) VALUES (
  65.     transaction_date,
  66.     merchant,
  67.     channel,
  68.     merchant_user_id,
  69.     merchant_transaction_no,
  70.     engine_transaction_no,
  71.     aadhar_no,
  72.     customer_mobile_no,
  73.     provider,
  74.     mrp,
  75.     total_comm,
  76.     provider_comm,
  77.     rrn,
  78.     gst,
  79.     gst_value,
  80.     bank_name,
  81.     provider_rate_mode,
  82.     device_serno,
  83.     device_info,
  84.     response_code,
  85.     response_message,
  86.     client_ip,
  87.     settle_date,
  88.     status,
  89.     requery_settle_date
  90. )
  91. WHEN MATCHED THEN
  92.   UPDATE SET
  93.     T.transaction_date = S.transaction_date,
  94.     T.merchant = S.merchant,
  95.     T.channel = S.channel,
  96.     T.merchant_user_id = S.merchant_user_id,
  97.     T.merchant_transaction_no = S.merchant_transaction_no,
  98.     T.engine_transaction_no = S.engine_transaction_no,
  99.     T.aadhar_no = S.aadhar_no,
  100.     T.customer_mobile_no = S.customer_mobile_no,
  101.     T.provider = S.provider,
  102.     T.mrp = S.mrp,
  103.     T.total_comm = S.total_comm,
  104.     T.provider_comm = S.provider_comm,
  105.     T.rrn = S.rrn,
  106.     T.gst = S.gst,
  107.     T.gst_value = S.gst_value,
  108.     T.bank_name = S.bank_name,
  109.     T.provider_rate_mode = S.provider_rate_mode,
  110.     T.device_serno = S.device_serno,
  111.     T.device_info = S.device_info,
  112.     T.response_code = S.response_code,
  113.     T.response_message = S.response_message,
  114.     T.client_ip = S.client_ip,
  115.     T.settle_date = S.settle_date,
  116.     T.status = S.status,
  117.     T.requery_settle_date = S.requery_settle_date;
  118.  
  119.  
  120. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  121. USING  (
  122.   SELECT
  123.     merchant,
  124.     channel,
  125.     merchant_user_id,
  126.     merchant_transaction_no,
  127.     engine_transaction_no,
  128.     mrp,
  129.     rrn,
  130.     gst,
  131.     gst_value,
  132.     bank_name,
  133.     provider_rate_mode,
  134.     status,
  135.     requery_settle_date,
  136.     settle_date,
  137.     transaction_date,
  138.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_ybl_engine_snapshot
  139. ) AS S
  140. ON
  141. T.transaction_id = S.engine_transaction_no
  142. WHEN NOT MATCHED THEN
  143.   INSERT (
  144.     transaction_date,
  145.     transaction_id,
  146.     engine_transaction_no,
  147.     mrp,
  148.     rrn,
  149.     merchant,
  150.     channel,
  151.     merchant_user_id,
  152.     merchant_transaction_no,
  153.     gst,
  154.     gst_value,
  155.     bank_name,
  156.     provider_rate_mode,
  157.     settle_date,
  158.     requery_settle_date,
  159.     status,
  160.     source,
  161.     created_at
  162.   ) VALUES (
  163.     transaction_date,
  164.     engine_transaction_no,
  165.     engine_transaction_no,
  166.     mrp,
  167.     rrn,
  168.     merchant,
  169.     channel,
  170.     merchant_user_id,
  171.     merchant_transaction_no,
  172.     gst,
  173.     gst_value,
  174.     bank_name,
  175.     provider_rate_mode,
  176.     settle_date,
  177.     requery_settle_date,
  178.     status,
  179.     'ybl',
  180.     transaction_date
  181.   )
  182.   WHEN MATCHED THEN
  183.     UPDATE SET
  184.       T.transaction_date = S.transaction_date,
  185.       T.transaction_id = S.engine_transaction_no,
  186.       T.engine_transaction_no = S.engine_transaction_no,
  187.       T.mrp = S.mrp,
  188.       T.rrn = S.rrn,
  189.       T.merchant = S.merchant,
  190.       T.channel = S.channel,
  191.       T.merchant_user_id = S.merchant_user_id,
  192.       T.merchant_transaction_no = S.merchant_transaction_no,
  193.       T.gst = S.gst,
  194.       T.gst_value = S.gst_value,
  195.       T.bank_name = S.bank_name,
  196.       T.provider_rate_mode = S.provider_rate_mode,
  197.       T.settle_date = S.settle_date,
  198.       T.requery_settle_date = S.requery_settle_date,
  199.       T.status = S.status,
  200.       T.created_at = S.transaction_date;
  201.  
  202.  
  203. ----------------------------------YBL HO-----------------------------------
  204.  
  205.  
  206. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  207.   USING  (
  208.     SELECT
  209.       transaction_date,
  210.       engine_transaction_number,
  211.       sale_amount,
  212.       provider_status
  213.     FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_ybl_ho_snapshot
  214.   ) AS S
  215.   ON
  216.   T.transaction_id = S.engine_transaction_number
  217. WHEN NOT MATCHED THEN
  218.   INSERT (
  219.     transaction_date,
  220.     transaction_id,
  221.     ho_transaction_no,
  222.     ho_amt,
  223.     ho_provider_status,
  224.     source,
  225.     created_at)
  226.   VALUES (
  227.     transaction_date,
  228.     engine_transaction_number,
  229.     engine_transaction_number,
  230.     sale_amount,
  231.     provider_status,
  232.     'ybl',
  233.     transaction_date
  234.   )
  235. WHEN MATCHED THEN
  236.   UPDATE SET
  237.     T.transaction_date = S.transaction_date,
  238.     T.transaction_id = S.engine_transaction_number,
  239.     T.ho_transaction_no = S.engine_transaction_number,
  240.     T.ho_provider_status = S.provider_status,
  241.     T.ho_amt = S.sale_amount;
  242.  
  243. ------------------------------------YBL PROVIDER--------------------------------
  244.  
  245.  
  246. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  247. USING  (
  248.   SELECT
  249.     transdate,
  250.     retailertxnid,
  251.     transamount
  252. FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_ybl_provider_snapshot) AS S
  253. ON
  254.   T.transaction_id = S.retailertxnid
  255. WHEN NOT MATCHED THEN
  256.   INSERT
  257.   (
  258.     transaction_date,
  259.     transaction_id,
  260.     provider_transaction_no,
  261.     provider_amt,
  262.     source,
  263.     created_at
  264.   ) VALUES (
  265.     transdate,
  266.     retailertxnid,
  267.     retailertxnid,
  268.     transamount,
  269.     'ybl'
  270.     ,transdate
  271.   )
  272. WHEN MATCHED THEN
  273.   UPDATE SET
  274.     T.transaction_date   = S.transdate,
  275.     T.transaction_id = S.retailertxnid,
  276.     T.provider_transaction_no = S.retailertxnid,
  277.     T.provider_amt  = S.transamount;
  278.  
  279.  
  280. ----------------------------------------YBL BANK--------------------------------------
  281.  
  282.  
  283.  
  284. MERGE INTO kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_ybl_bank_statement_snapshot T
  285.   USING (
  286.     SELECT * from (
  287.       SELECT
  288.     txn_date
  289.     ,cod_acct_no
  290.     ,narration
  291.     ,value_date
  292.     ,cheque_no
  293.     ,dr_cr
  294.     ,amount
  295.     ,dat_post
  296.     ,running_balance
  297.     ,urn
  298.     ,bank_reference_no
  299.     ,tenant
  300.     ,sourceId
  301.     ,concat(running_balance,'-',bank_reference_no)  as bank_key
  302.     ,row_number() over(partition by concat(running_balance,'-',bank_reference_no) order by txn_date desc) as rownum
  303.       FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_ybl_bank_statement_snapshot)
  304.     WHERE rownum=1
  305.   ) AS S
  306.   ON T.bank_key = S.bank_key
  307.   WHEN NOT MATCHED THEN
  308.   INSERT (
  309. txn_date
  310. ,cod_acct_no
  311. ,narration
  312. ,value_date
  313. ,cheque_no
  314. ,dr_cr
  315. ,amount
  316. ,dat_post
  317. ,running_balance
  318. ,urn
  319. ,bank_reference_no
  320. ,tenant
  321. ,sourceId
  322. ,bank_key
  323. ) VALUES (
  324. txn_date
  325. ,cod_acct_no
  326. ,narration
  327. ,value_date
  328. ,cheque_no
  329. ,dr_cr
  330. ,amount
  331. ,dat_post
  332. ,running_balance
  333. ,urn
  334. ,bank_reference_no
  335. ,tenant
  336. ,sourceId
  337. ,bank_key
  338. )
  339. WHEN MATCHED THEN
  340.   UPDATE SET
  341. T.txn_date = S.txn_date
  342. ,T.cod_acct_no = S.cod_acct_no
  343. ,T.narration   = S.narration
  344. ,T.value_date = S.value_date
  345. ,T.cheque_no = S.cheque_no
  346. ,T.dr_cr   = S.dr_cr
  347. ,T.amount = S.amount
  348. ,T.dat_post = S.dat_post
  349. ,T.running_balance = S.running_balance
  350. ,T.urn = S.urn
  351. ,T.bank_reference_no = S.bank_reference_no
  352. ,T.tenant = S.tenant
  353. ,T.sourceId = S.sourceId
  354. ,T.bank_key = S.bank_key;
  355.  
  356.  
  357. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  358. USING  (
  359. SELECT
  360.   max(txn_date) as txn_date,
  361.   bank_reference_no,
  362.   SUM(amount) AS amt,
  363.   abs(SUM(CASE WHEN amt_sign = 'positive' THEN amount ELSE NULL END)) AS bank_refund_amt,
  364.   abs(SUM(CASE WHEN amt_sign = 'negative' THEN amount ELSE NULL END)) AS bank_charge_amt,
  365.   COUNT(CASE WHEN amt_sign = 'positive' THEN amount ELSE NULL END) AS bank_refund_cnt,
  366.   COUNT(CASE WHEN amt_sign = 'negative' THEN amount ELSE NULL END) AS bank_charge_cnt,
  367.   MAX(CASE WHEN amt_sign = 'positive' THEN txn_date ELSE NULL END) AS bank_refund_date,
  368.   MAX(CASE WHEN amt_sign = 'negative' THEN txn_date ELSE NULL END) AS bank_charge_date
  369. FROM (
  370.   SELECT
  371.     txn_date,
  372.     amount,
  373.     bank_reference_no,
  374.     CASE WHEN SIGN(amount) = -1 THEN 'negative' ELSE 'positive' END AS amt_sign
  375.   FROM `kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_ybl_bank_statement_snapshot`
  376. ) AS subquery
  377. GROUP BY bank_reference_no) AS S
  378. ON
  379. T.transaction_id = S.bank_reference_no
  380. WHEN NOT MATCHED THEN
  381.   INSERT (
  382.     transaction_date,
  383.     transaction_id,
  384.     bank_transaction_no,
  385.     bank_amt,
  386.     source,
  387.     created_at,
  388.     bank_refund_amt,
  389.     bank_charge_amt,
  390.     bank_refund_cnt,
  391.     bank_charge_cnt,
  392.     bank_refund_date,
  393.     bank_charge_date)
  394.   VALUES (
  395.     txn_date,
  396.     bank_reference_no,
  397.     bank_reference_no,
  398.     amt,
  399.     'ybl',
  400.     txn_date,
  401.     bank_refund_amt,
  402.     bank_charge_amt,
  403.     bank_refund_cnt,
  404.     bank_charge_cnt,
  405.     bank_refund_date,
  406.     bank_charge_date
  407.   )
  408. WHEN MATCHED THEN
  409.   UPDATE SET
  410.     T.transaction_date = S.txn_date,
  411.     T.bank_transaction_no = S.bank_reference_no,
  412.     T.bank_amt = S.amt,
  413.     T.created_at = S.txn_date,
  414.     T.bank_refund_amt = S.bank_refund_amt,
  415.     T.bank_charge_amt = S.bank_charge_amt,
  416.     T.bank_refund_cnt = S.bank_refund_cnt,
  417.     T.bank_charge_cnt = S.bank_charge_cnt,
  418.     T.bank_refund_date = S.bank_refund_date,
  419.     T.bank_charge_date = s.bank_charge_date;
  420.  
  421. -------------------------------UPDATE-------------------------------------
  422.  
  423. UPDATE kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon master_eng
  424. SET status_recon_flag = REPLACE(LTRIM(RTRIM(subquery2.recon_flag, '_'), '_'), '__', '_'),
  425. ho_amt_flag = subquery2.ho_amt_flag,
  426. provider_amt_flag = subquery2.provider_amt_flag,
  427. bank_amt_flag = subquery2.bank_amt_flag
  428. FROM (
  429. WITH eng AS (
  430.   SELECT engine_transaction_no AS eng_id, rrn, mrp, status, status_recon_flag
  431.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'ybl'
  432. ),
  433. ho AS (
  434.   SELECT ho_transaction_no AS ho_id, ho_amt as sale_amount
  435.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'ybl'
  436. ),
  437. pro AS (
  438.   SELECT provider_transaction_no AS pro_id, provider_amt as transamount
  439.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'ybl'
  440. ),
  441. bank AS (
  442.   SELECT bank_transaction_no AS bank_id, bank_amt as amount
  443.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'ybl'
  444. )
  445.   SELECT eng_id,
  446.     CASE
  447.       WHEN upper(status) = "SUCCESS" or upper(status) = "FAILED"
  448.       THEN 'Present_in_' || engine_status || '_' || ho_status || '_' || provider_status || '_' || bank_status
  449.     END AS recon_flag ,
  450.     ho_amt_flag,
  451.     provider_amt_flag,
  452.     bank_amt_flag
  453.   FROM (
  454.     SELECT eng_id, e.status,
  455.       CASE WHEN ho_id IS NOT NULL THEN 'HO' ELSE '' END AS ho_status,
  456.       CASE WHEN pro_id IS NOT NULL THEN 'Provider' ELSE '' END AS provider_status,
  457.       CASE WHEN bank_id IS NOT NULL THEN 'Bank' ELSE '' END AS bank_status,
  458.       CASE WHEN eng_id IS NOT NULL THEN 'Engine' ELSE '' END AS engine_status,
  459.       CASE WHEN e.mrp = h.sale_amount THEN 'Amount_Matching' ELSE 'Amount_Not_matching' END AS ho_amt_flag,
  460.       CASE WHEN e.mrp = cast(p.transamount as Float64) THEN 'Amount_Matching' ELSE 'Amount_Not_matching' END AS         provider_amt_flag,
  461.      CASE WHEN e.mrp = b.amount THEN 'Amount_Matching' ELSE 'Amount_Not_matching' END AS bank_amt_flag,
  462.  
  463.     FROM eng e
  464.     LEFT JOIN ho h ON e.eng_id = h.ho_id
  465.     LEFT JOIN pro p ON e.eng_id = p.pro_id
  466.     LEFT JOIN bank b ON e.rrn = b.bank_id
  467.   )
  468. ) subquery2
  469. WHERE master_eng.engine_transaction_no = subquery2.eng_id;
  470.  
  471.  
  472. -----------------------------------FINGPAY ENGINE----------------------------------
  473.  
  474. MERGE INTO kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_fingpay_engine_snapshot T
  475. USING (
  476.   SELECT * FROM (
  477.     SELECT
  478.     transaction_date,
  479.     merchant,
  480.     channel,
  481.     merchant_user_id,
  482.     merchant_trans_no,
  483.     engine_trans_no,
  484.     aadhar_no,
  485.     customer_mobile_no,
  486.     provider,
  487.     mrp,
  488.     total_comm,
  489.     provider_comm,
  490.     rrn,
  491.     gst,
  492.     gst_value,
  493.     bank_name,
  494.     provider_rate_mode,
  495.     device_serno,
  496.     device_info,
  497.     response_code,
  498.     response_message,
  499.     client_ip,
  500.     settle_date,
  501.     status,
  502.     requery_settle,
  503.     row_number() over(partition by engine_trans_no order by transaction_date desc) as rownum
  504.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_engine_snapshot)
  505.   WHERE rownum=1
  506. ) AS S
  507. ON T.engine_trans_no = S.engine_trans_no
  508. WHEN NOT MATCHED THEN
  509.   INSERT (
  510.     transaction_date,
  511.     merchant,
  512.     channel,
  513.     merchant_user_id,
  514.     merchant_trans_no,
  515.     engine_trans_no,
  516.     aadhar_no,
  517.     customer_mobile_no,
  518.     provider,
  519.     mrp,
  520.     total_comm,
  521.     provider_comm,
  522.     rrn,
  523.     gst,
  524.     gst_value,
  525.     bank_name,
  526.     provider_rate_mode,
  527.     device_serno,
  528.     device_info,
  529.     response_code,
  530.     response_message,
  531.     client_ip,
  532.     settle_date,
  533.     status,
  534.     requery_settle
  535.   ) VALUES (
  536.     transaction_date,
  537.     merchant,
  538.     channel,
  539.     merchant_user_id,
  540.     merchant_trans_no,
  541.     engine_trans_no,
  542.     aadhar_no,
  543.     customer_mobile_no,
  544.     provider,
  545.     mrp,
  546.     total_comm,
  547.     provider_comm,
  548.     rrn,
  549.     gst,
  550.     gst_value,
  551.     bank_name,
  552.     provider_rate_mode,
  553.     device_serno,
  554.     device_info,
  555.     response_code,
  556.     response_message,
  557.     client_ip,
  558.     settle_date,
  559.     status,
  560.     requery_settle
  561.   )
  562.   WHEN MATCHED THEN
  563.     UPDATE SET
  564.       T.transaction_date = S.transaction_date,
  565.       T.merchant = S.merchant,
  566.       T.channel = S.channel,
  567.       T.merchant_user_id = S.merchant_user_id,
  568.       T.merchant_trans_no = S.merchant_trans_no,
  569.       T.engine_trans_no = S.engine_trans_no,
  570.       T.aadhar_no = S.aadhar_no,
  571.       T.customer_mobile_no = S.customer_mobile_no,
  572.       T.provider = S.provider,
  573.       T.mrp = S.mrp,
  574.       T.total_comm = S.total_comm,
  575.       T.provider_comm = S.provider_comm,
  576.       T.rrn = S.rrn,
  577.       T.gst = S.gst,
  578.       T.gst_value = S.gst_value,
  579.       T.bank_name = S.bank_name,
  580.       T.provider_rate_mode = S.provider_rate_mode,
  581.       T.device_serno = S.device_serno,
  582.       T.device_info = S.device_info,
  583.       T.response_code = S.response_code,
  584.       T.response_message = S.response_message,
  585.       T.client_ip = S.client_ip,
  586.       T.settle_date = S.settle_date,
  587.       T.status = S.status,
  588.       T.requery_settle = S.requery_settle;
  589.  
  590. -----------------------------------FINGPAY API ENGINE----------------------------------
  591. MERGE INTO kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_fingpay_engine_snapshot T
  592. USING (
  593.   SELECT * FROM (
  594.     SELECT
  595.     transaction_date,
  596.     merchant,
  597.     channel,
  598.     merchant_user_id,
  599.     merchant_trans_no,
  600.     engine_trans_no,
  601.     aadhar_no,
  602.     customer_mobile_no,
  603.     provider,
  604.     mrp,
  605.     total_comm,
  606.     provider_comm,
  607.     rrn,
  608.     gst,
  609.     gst_value,
  610.     bank_name,
  611.     provider_rate_mode,
  612.     device_serno,
  613.     device_info,
  614.     response_code,
  615.     response_message,
  616.     client_ip,
  617.     settle_date,
  618.     status,
  619.     requery_settle,
  620.     row_number() over(partition by engine_trans_no order by transaction_date desc) as rownum
  621.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_api_engine_snapshot)
  622.   WHERE rownum=1) AS S
  623. ON T.engine_trans_no = S.engine_trans_no
  624. WHEN NOT MATCHED THEN
  625.   INSERT (
  626.     transaction_date,
  627.     merchant,
  628.     channel,
  629.     merchant_user_id,
  630.     merchant_trans_no,
  631.     engine_trans_no,
  632.     aadhar_no,
  633.     customer_mobile_no,
  634.     provider,
  635.     mrp,
  636.     total_comm,
  637.     provider_comm,
  638.     rrn,
  639.     gst,
  640.     gst_value,
  641.     bank_name,
  642.     provider_rate_mode,
  643.     device_serno,
  644.     device_info,
  645.     response_code,
  646.     response_message,
  647.     client_ip,
  648.     settle_date,
  649.     status,
  650.     requery_settle
  651.   ) VALUES (
  652.     transaction_date,
  653.     merchant,
  654.     channel,
  655.     merchant_user_id,
  656.     merchant_trans_no,
  657.     engine_trans_no,
  658.     aadhar_no,
  659.     customer_mobile_no,
  660.     provider,
  661.     mrp,
  662.     total_comm,
  663.     provider_comm,
  664.     rrn,
  665.     gst,
  666.     gst_value,
  667.     bank_name,
  668.     provider_rate_mode,
  669.     device_serno,
  670.     device_info,
  671.     response_code,
  672.     response_message,
  673.     client_ip,
  674.     settle_date,
  675.     status,
  676.     requery_settle
  677.   )
  678.   WHEN MATCHED THEN
  679.     UPDATE SET
  680.       T.transaction_date = S.transaction_date,
  681.       T.merchant = S.merchant,
  682.       T.channel = S.channel,
  683.       T.merchant_user_id = S.merchant_user_id,
  684.       T.merchant_trans_no = S.merchant_trans_no,
  685.       T.engine_trans_no = S.engine_trans_no,
  686.       T.aadhar_no = S.aadhar_no,
  687.       T.customer_mobile_no = S.customer_mobile_no,
  688.       T.provider = S.provider,
  689.       T.mrp = S.mrp,
  690.       T.total_comm = S.total_comm,
  691.       T.provider_comm = S.provider_comm,
  692.       T.rrn = S.rrn,
  693.       T.gst = S.gst,
  694.       T.gst_value = S.gst_value,
  695.       T.bank_name = S.bank_name,
  696.       T.provider_rate_mode = S.provider_rate_mode,
  697.       T.device_serno = S.device_serno,
  698.       T.device_info = S.device_info,
  699.       T.response_code = S.response_code,
  700.       T.response_message = S.response_message,
  701.       T.client_ip = S.client_ip,
  702.       T.settle_date = S.settle_date,
  703.       T.status = S.status,
  704.       T.requery_settle = S.requery_settle;
  705.  
  706.  
  707. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  708. USING  (
  709.   SELECT
  710.     merchant,
  711.     channel,
  712.     merchant_user_id,
  713.     merchant_trans_no,
  714.     engine_trans_no,
  715.     mrp,
  716.     rrn,
  717.     gst,
  718.     gst_value,
  719.     bank_name,
  720.     provider_rate_mode,
  721.     status,
  722.     requery_settle,
  723.     settle_date,
  724.     transaction_date
  725.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.interim_payworld_fingpay_engine_snapshot) AS S
  726. ON T.transaction_id = S.engine_trans_no
  727. WHEN NOT MATCHED THEN
  728.   INSERT (
  729.     transaction_date,
  730.     transaction_id,
  731.     engine_transaction_no,
  732.     mrp,
  733.     rrn,
  734.     merchant,
  735.     channel,
  736.     merchant_user_id,
  737.     merchant_transaction_no,
  738.     gst,
  739.     gst_value,
  740.     bank_name,
  741.     provider_rate_mode,
  742.     settle_date,
  743.     requery_settle_date,
  744.     status,
  745.     source,
  746.     created_at
  747.   ) VALUES (
  748.     transaction_date,
  749.     engine_trans_no,
  750.     engine_trans_no,
  751.     mrp,
  752.     rrn,
  753.     merchant,
  754.     channel,
  755.     merchant_user_id,
  756.     merchant_trans_no,
  757.     gst,
  758.     gst_value,
  759.     bank_name,
  760.     provider_rate_mode,
  761.     settle_date,
  762.     requery_settle,
  763.     status,
  764.     'fingpay',
  765.     transaction_date
  766.   )
  767.   WHEN MATCHED THEN
  768.     UPDATE SET
  769.       T.transaction_date = S.transaction_date,
  770.       T.transaction_id = S.engine_trans_no,
  771.       T.engine_transaction_no = S.engine_trans_no,
  772.       T.mrp = S.mrp,
  773.       T.rrn = S.rrn,
  774.       T.merchant = S.merchant,
  775.       T.channel = S.channel,
  776.       T.merchant_user_id = S.merchant_user_id,
  777.       T.merchant_transaction_no = S.merchant_trans_no,
  778.       T.gst = S.gst,
  779.       T.gst_value = S.gst_value,
  780.       T.bank_name = S.bank_name,
  781.       T.provider_rate_mode = S.provider_rate_mode,
  782.       T.settle_date = S.settle_date,
  783.       T.requery_settle_date = S.requery_settle,
  784.       T.status = S.status,
  785.       T.created_at = S.transaction_date;
  786.  
  787. ------------------------------FINGPAY HO--------------------------------------
  788. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  789. USING  (
  790.   SELECT
  791.     transaction_date,
  792.     engine_transaction_number,
  793.     sale_amount,
  794.     provider_status
  795.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_api_ho_snapshot) AS S
  796. ON T.transaction_id = S.engine_transaction_number
  797. WHEN NOT MATCHED THEN
  798.   INSERT (
  799.     transaction_date,
  800.     transaction_id,
  801.     ho_transaction_no,
  802.     ho_amt,
  803.     ho_provider_status,
  804.     source,
  805.     created_at
  806.   ) VALUES (
  807.     transaction_date,
  808.     engine_transaction_number,
  809.     engine_transaction_number,
  810.     sale_amount,
  811.     provider_status,
  812.     'fingpay',
  813.     transaction_date
  814.   )
  815.   WHEN MATCHED THEN
  816.     UPDATE SET
  817.       T.transaction_date = S.transaction_date,
  818.       T.transaction_id = S.engine_transaction_number,
  819.       T.ho_transaction_no = S.engine_transaction_number,
  820.       T.ho_amt = S.sale_amount,
  821.       T.ho_provider_status = S.provider_status,
  822.       T.created_at = S.transaction_date;
  823.  
  824.  
  825. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  826. USING  (
  827.   SELECT
  828.     transaction_date,
  829.     engine_transaction_number,
  830.     sale_amount,
  831.     provider_status
  832.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_ho_snapshot) AS S
  833. ON T.transaction_id = S.engine_transaction_number
  834. WHEN NOT MATCHED THEN
  835.   INSERT (
  836.     transaction_date,
  837.     transaction_id,
  838.     ho_transaction_no,
  839.     ho_amt,
  840.     ho_provider_status,
  841.     source,
  842.     created_at
  843.   ) VALUES (
  844.     transaction_date,
  845.     engine_transaction_number,
  846.     engine_transaction_number,
  847.     sale_amount,
  848.     provider_status,
  849.     'fingpay',
  850.     transaction_date
  851.   )
  852.   WHEN MATCHED THEN
  853.     UPDATE SET
  854.       T.transaction_date = S.transaction_date,
  855.       T.transaction_id = S.engine_transaction_number,
  856.       T.ho_transaction_no = S.engine_transaction_number,
  857.       T.ho_amt = S.sale_amount,
  858.       T.ho_provider_status = S.provider_status,
  859.       T.created_at = S.transaction_date;
  860.  
  861. --------------------------------------FINGPAY PROVIDER----------------------------------
  862.  
  863. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  864. USING  (
  865.   SELECT
  866.     transaction_amount,
  867.     merchant_transaction_id,
  868.     requested_timestamp
  869.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_provider_snapshot) AS S
  870. ON
  871. T.transaction_id = S.merchant_transaction_id
  872. WHEN NOT MATCHED THEN
  873.   INSERT
  874.   (
  875.     transaction_id,
  876.     provider_transaction_no,
  877.     provider_amt,
  878.     source,
  879.     created_at
  880.   ) VALUES (
  881.     merchant_transaction_id,
  882.     merchant_transaction_id,
  883.     transaction_amount,
  884.     'fingpay',
  885.     requested_timestamp
  886.   )
  887.   WHEN MATCHED THEN
  888.     UPDATE SET
  889.       T.transaction_id = S.merchant_transaction_id,
  890.       T.provider_transaction_no = S.merchant_transaction_id,
  891.       T.provider_amt = S.transaction_amount,
  892.       T.created_at = S.requested_timestamp;
  893.  
  894. --------------------------------FINGPAY BANK--------------------------------
  895.  
  896. MERGE into kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon T
  897. USING  (
  898.   SELECT
  899.     transaction_date,
  900.     transaction_particulars,
  901.     amount
  902.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_axis_bank_statement_snapshot) AS S
  903. ON
  904. T.transaction_id = S.transaction_particulars
  905. WHEN NOT MATCHED THEN
  906.   INSERT (
  907.     transaction_date,
  908.     transaction_id,
  909.     bank_transaction_no,
  910.     bank_amt,
  911.     source,
  912.     created_at
  913.   ) VALUES (
  914.     transaction_date,
  915.     transaction_particulars,
  916.     transaction_particulars,
  917.     amount,
  918.     'fingpay',
  919.     transaction_date
  920.   )
  921.   WHEN MATCHED THEN
  922.     UPDATE SET
  923.       T.transaction_date = S.transaction_date,
  924.       T.transaction_id = S.transaction_particulars,
  925.       T.bank_transaction_no = S.transaction_particulars,
  926.       T.bank_amt = S.amount,
  927.       T.created_at = S.transaction_date;
  928.  
  929.  
  930. ------------------------------------UPDATE--------------------------------------------
  931.  
  932. UPDATE kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon master_eng
  933. SET status_recon_flag = REPLACE(LTRIM(RTRIM(subquery2.recon_flag, '_'), '_'), '__', '_'),
  934. ho_amt_flag = subquery2.ho_amt_flag,
  935. provider_amt_flag = subquery2.provider_amt_flag,
  936. bank_amt_flag = subquery2.bank_amt_flag
  937. FROM (
  938. WITH eng AS (
  939.   SELECT engine_transaction_no AS eng_id, rrn, mrp, status, status_recon_flag
  940.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'fingpay'
  941. ),
  942. ho AS (
  943.   SELECT ho_transaction_no AS ho_id, ho_amt as sale_amount
  944.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'fingpay'
  945. ),
  946. pro AS (
  947.   SELECT provider_transaction_no AS pro_id, provider_amt as transaction_amount
  948.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'fingpay'
  949. ),
  950. bank AS (
  951.   SELECT bank_transaction_no AS bank_id, bank_amt as amount
  952.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.master_recon where source = 'fingpay'
  953. )
  954.   SELECT eng_id,
  955.     CASE
  956.       WHEN upper(status) in ("SUCCESS", "FAILED", "INITIATED")
  957.       THEN 'Present_in_' || engine_status || '_' || ho_status || '_' || provider_status || '_' || bank_status
  958.     END AS recon_flag ,
  959.     ho_amt_flag,
  960.     provider_amt_flag,
  961.     bank_amt_flag
  962.   FROM (
  963.     SELECT eng_id, e.status,
  964.       CASE WHEN ho_id IS NOT NULL THEN 'HO' ELSE '' END AS ho_status,
  965.       CASE WHEN pro_id IS NOT NULL THEN 'Provider' ELSE '' END AS provider_status,
  966.       CASE WHEN bank_id IS NOT NULL THEN 'Bank' ELSE '' END AS bank_status,
  967.       CASE WHEN eng_id IS NOT NULL THEN 'Engine' ELSE '' END AS engine_status,
  968.       CASE WHEN e.mrp = h.sale_amount THEN 'Amount_Matching' ELSE 'Amount_Not_matching' END AS ho_amt_flag,
  969.       CASE WHEN e.mrp = p.transaction_amount THEN 'Amount_Matching' ELSE 'Amount_Not_matching' END AS         provider_amt_flag,
  970.      CASE WHEN e.mrp = b.amount THEN 'Amount_Matching' ELSE 'Amount_Not_matching' END AS bank_amt_flag,
  971.  
  972.     FROM eng e
  973.     LEFT JOIN ho h ON e.eng_id = h.ho_id
  974.     LEFT JOIN pro p ON e.eng_id = p.pro_id
  975.     LEFT JOIN bank b ON e.rrn = b.bank_id
  976.   )
  977. ) subquery2
  978. WHERE master_eng.engine_transaction_no = subquery2.eng_id;
  979.  
  980. ------------------------------------------------------------------------------------------------------------------------------------------------------
  981.  
  982. MERGE into `kosh_dataset_payworldtestkrqrm.settlement_recon` T
  983. USING  (
  984.   SELECT
  985.     reference_number as transaction_id,
  986.     created_timestamp as transaction_date,
  987.     settlement_amount as settlement_amount,
  988.     transaction_amount as transaction_amount,
  989.     service_type as service_type,
  990.     created_timestamp as created_at
  991.   FROM kosh-ai.kosh_dataset_payworldtestkrqrm.payworld_fingpay_provider_settlement_snapshot where service_type='cash withdrawal') AS S
  992. ON
  993. T.transaction_id = S.transaction_id
  994. WHEN NOT MATCHED THEN
  995.   INSERT (
  996.     transaction_id,
  997.     settlement_amount,
  998.     transaction_amount,
  999.     service_type,
  1000.     source,
  1001.     created_at
  1002.   ) VALUES (
  1003.     transaction_id,
  1004.     settlement_amount,
  1005.     transaction_amount,
  1006.     service_type,
  1007.     'fingpay',
  1008.     transaction_date
  1009.   )
  1010.   WHEN MATCHED THEN
  1011.     UPDATE SET
  1012.       T.settlement_amount = S.settlement_amount,
  1013.       T.transaction_amount = S.transaction_amount,
  1014.       T.service_type = S.service_type,
  1015.       T.source = 'fingpay',
  1016.       T.created_at = S.transaction_date;
  1017.  

Editor

You can edit this paste and save as new:


File Description
  • Payworld
  • Paste Code
  • 09 Jun-2023
  • 27.02 Kb
You can Share it: