diff --git a/webht/third_party/pay/models/Online_payment_account_model.php b/webht/third_party/pay/models/Online_payment_account_model.php index e9a06bc8..af998030 100644 --- a/webht/third_party/pay/models/Online_payment_account_model.php +++ b/webht/third_party/pay/models/Online_payment_account_model.php @@ -429,36 +429,67 @@ class Online_payment_account_model extends CI_Model { { $ret = array(); $send_flag = "send-to-finance"; - $paypal_sql = "SELECT 'paypal' as payment_type, - pn_sn note_sn,pn_txn_id transaction_id, - (select DEI_DepartmentName from OperatorInfo inner join DepartmentInfo on OPI_DEI_SN=DEI_SN - where OPI_SN=ISNULL(table_t.COLI_OPI_ID, isnull(table_b.COLI_OPI_ID,table_app.COLI_OPI_ID)) - ) as department, - case when ISNULL(table_t.COLI_GRI_SN,table_b.COLI_GRI_SN) is null - then isnull(table_app.COLI_GroupCode,table_app.COLI_ID) - else (select GRI_Name from GRoupInfo - where gri_sn=ISNULL(table_t.COLI_GRI_SN,table_b.COLI_GRI_SN) - ) end as gri_name, - pn.pn_payment_date payment_date, - pn.pn_mc_gross amount,pn_mc_currency currency, - isnull(table_t.GAI_SSJE,isnull(table_b.GAI_SSJE,table_app.GAI_SSJE)) amount_CNY, - pn_payer payer,pn_payer_email payer_email - from paypal_note pn - left join ( - select gai.GAI_SSJE,gai.GAI_AccreditNo ,coli.COLI_GRI_SN,coli.COLI_OPI_ID,coli.COLI_SN - from GroupAccountInfo gai inner join ConfirmLineInfo coli on coli.COLI_SN=gai.GAI_COLI_SN - ) as table_t on table_t.GAI_AccreditNo=pn.pn_txn_id - left join ( - select bgai.GAI_AccreditNo,bgai.GAI_SSJE ,bcoli.COLI_GRI_SN,bcoli.COLI_OPI_ID,bcoli.COLI_SN - from BIZ_GroupAccountInfo bgai inner join BIZ_ConfirmLineInfo bcoli on bcoli.COLI_SN=bgai.GAI_COLI_SN - ) as table_b on table_b.GAI_AccreditNo=pn.pn_txn_id - left join ( - select bgai.GAI_AccreditNo,bgai.GAI_SSJE,bgai.GAI_SQJE,bgai.GAI_SQJECurrency ,bcoli.COLI_GRI_SN,bcoli.COLI_OPI_ID,bcoli.COLI_SN ,bcoli.COLI_id ,bcoli.COLI_GroupCode - from BIZ_GroupAccountInfo bgai inner join BIZ_ConfirmLineInfo bcoli on bcoli.COLI_SN=bgai.GAI_COLI_SN - ) as table_app on table_app.COLI_ID=REPLACE ( pn_invoice , '_B' , '' ) - and pn.pn_mc_gross=table_app.GAI_SQJE and pn.pn_mc_currency=table_app.GAI_SQJECurrency - where pn_send='$send_flag' - order by department "; + $paypal_sql = "WITH pn + AS ( + SELECT pn_txn_id,pn_invoice,pn_mc_gross,pn_mc_currency,pn_payer_email,pn_payer,pn_payment_date,pn_datetime,pn_sn + ,ROW_NUMBER() OVER ( + PARTITION BY pn_txn_id ORDER BY pn_payer_email DESC + ) AS rn + FROM paypal_note p1 + WHERE p1.pn_send = '$send_flag' + ) + SELECT 'paypal' AS payment_type,pn_sn note_sn,pn_txn_id transaction_id + ,( + SELECT DEI_DepartmentName + FROM OperatorInfo + INNER JOIN DepartmentInfo ON OPI_DEI_SN = DEI_SN + WHERE OPI_SN = ISNULL(table_t.COLI_OPI_ID, table_b.COLI_OPI_ID) + ) AS department + ,CASE + WHEN ISNULL(table_t.COLI_GRI_SN, table_b.COLI_GRI_SN) IS NULL + THEN '' + ELSE ( + SELECT GRI_Name + FROM GRoupInfo + WHERE gri_sn = ISNULL(table_t.COLI_GRI_SN, table_b.COLI_GRI_SN) + ) + END AS gri_name + ,pn.pn_payment_date payment_date + ,pn.pn_mc_gross amount + ,pn_mc_currency currency + ,isnull(table_t.GAI_SSJE, table_b.GAI_SSJE) amount_CNY + ,pn_payer payer + ,pn_payer_email payer_email + FROM pn + LEFT JOIN ( + SELECT SUM( gai.GAI_SSJE) GAI_SSJE + ,gai.GAI_AccreditNo + ,coli.COLI_GRI_SN + ,coli.COLI_OPI_ID + ,coli.COLI_SN + FROM GroupAccountInfo gai + INNER JOIN ConfirmLineInfo coli ON coli.COLI_SN = gai.GAI_COLI_SN + GROUP BY gai.GAI_AccreditNo + ,coli.COLI_GRI_SN + ,coli.COLI_OPI_ID + ,coli.COLI_SN + ) AS table_t ON table_t.GAI_AccreditNo = pn.pn_txn_id + LEFT JOIN ( + SELECT bgai.GAI_AccreditNo + ,sum(bgai.GAI_SSJE) GAI_SSJE + ,bcoli.COLI_GRI_SN + ,bcoli.COLI_OPI_ID + ,bcoli.COLI_SN + FROM BIZ_GroupAccountInfo bgai + INNER JOIN BIZ_ConfirmLineInfo bcoli ON bcoli.COLI_SN = bgai.GAI_COLI_SN + GROUP BY bgai.GAI_AccreditNo + ,bcoli.COLI_GRI_SN + ,bcoli.COLI_OPI_ID + ,bcoli.COLI_SN + ) AS table_b ON table_b.GAI_AccreditNo = pn.pn_txn_id + WHERE pn.rn = 1 + ORDER BY department ASC + ,pn.payment_date DESC"; $ret = $paypal_list = $this->HT->query($paypal_sql)->result_array(); $ipaylinks_sql = "SELECT 'ipaylinks' as 'payment_type', IPL_sn note_sn,IPL_dealId transaction_id, (select DEI_DepartmentName from OperatorInfo inner join DepartmentInfo on OPI_DEI_SN=DEI_SN