我有以下查询:
SELECT
CAST( COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) AS DATE) AS Date_Transacted
,CASE
WHEN COALESCE(min.DateBilled, pos.DateBilled, pos.DateRefunded) > '2014-06-20 04:55:40:010'
AND rp.PaymentMethodId in (4,5)
AND pos.CurrencyId = 2
AND rp.countryid = 2
THEN 'WorldPay'
WHEN pm.PaymentDescription IN ('Sofort', 'iDEAL')
THEN 'Direct Transfers'
WHEN pm.PaymentDescription NOT IN ('PayPal', 'American Express', 'Laser', 'Sofort', 'iDEAL', 'Klarna')
AND c2.CurrencyCode IN ('AUD')
THEN 'NAB'
WHEN pm.PaymentDescription NOT IN ('PayPal', 'American Express', 'Laser', 'Sofort', 'iDEAL', 'Klarna')
AND c2.CurrencyCode NOT IN('AUD')
THEN 'Barclays'
WHEN pm.PaymentDescription NOT IN ('PayPal', 'American Express', 'Laser', 'Sofort', 'iDEAL', 'Klarna')
AND c2.CurrencyCode NOT IN('AUD') AND cb.Reference IS NULL
THEN 'Voucher'
ELSE pm.PaymentDescription
END AS Cash_Acquirer
,c2.CurrencyCode
,cb.Reference AS OA_Cash_Book
------------------------------------------------------------------------------------------------
--------------------------------Cash In--------------------------------------------------------
,(
SUM(
CASE
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- New_Billed_Orders_Curr
+SUM(
CASE
WHEN (
(pos.VoidHeaderId IS NULL OR pos.VoidHeaderId = 0)
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection = 'I'
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
(pos.VoidHeaderId IS NULL OR pos.VoidHeaderId = 0)
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection = 'I'
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Purchased_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND pos.PriceIncTax < 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND pos.PriceIncTax < 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Redeemed_Curr
+SUM(
CASE
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('I','V')
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (8) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * pos.Quantity
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('I','V')
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (8) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Curr
+SUM(
CASE
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('I','V')
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (11) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * CT.TaxRate * pos.Quantity
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('I','V')
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (11) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * CT.TaxRate * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Vat_Curr
+SUM(
CASE
WHEN cfd.CashFeedTypeId = 17
AND pos.CashDirection IN ('I')
THEN (pos.PriceIncTax * (pos.Quantity*-1))*2
ELSE 0
END) --ALIST_Script_Correction1
+SUM(
CASE
WHEN cfd.CashFeedTypeId = 19
AND pos.CashDirection IN ('I','V')
THEN (pos.PriceIncTax * (pos.Quantity*-1))*2
ELSE 0
END) --ALIST_Script_Correction2
)AS Cash_In_Curr
------------------------------------------------------------------------------------------------
--------------------------------Cash Out--------------------------------------------------------
,(
SUM(
CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NULL
AND (CAST (pos.DateBilled AS DATE) = CAST (cfd.DateTransacted AS DATE) OR CAST (pos.DateRefunded AS DATE) = CAST (cfd.DateTransacted AS DATE) )
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NULL
AND (CAST (pos.DateBilled AS DATE) = CAST (cfd.DateTransacted AS DATE) OR CAST (pos.DateRefunded AS DATE) = CAST (cfd.DateTransacted AS DATE) )
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Basket_Refunded_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O','V')
--AND pos.DateCancelled IS NOT NULL
AND pos.DateCancelled >= '20160731'
AND pos.DateCancelled < '20160810'
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O','V')
--AND pos.DateCancelled IS NOT NULL
AND pos.DateCancelled >= '20160731'
AND pos.DateCancelled < '20160810'
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Basket_Cancelled_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NOT NULL AND pos.VoidHeaderId <> 0
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.PriceIncTax > 0
AND pos.CashDirection IN ('O')
AND pos.DateBilled IS NOT NULL
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL AND pos.VoidHeaderId <> 0
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.PriceIncTax > 0
AND pos.CashDirection IN ('O')
AND pos.DateBilled IS NOT NULL
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Reissued_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NOT NULL
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NOT NULL
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Cancelled_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('O','V')
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 9
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('O','V')
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 9
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Refund_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('O','V')
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 12
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * ct.TaxRate * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN ('O','V')
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 12
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * ct.TaxRate * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Refund_Vat_Curr
+SUM(
CASE
WHEN (
pos.VoidHeaderId IS NULL
AND pos.IsChequeRefund IN (0,1)
AND pos.DateRefunded IS NOT NULL
AND cb.CashBookReferenceId IS NULL
AND pos.CashDirection IN ('O')
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NULL
AND pos.IsChequeRefund IN (0,1)
AND pos.DateRefunded IS NOT NULL
AND cb.CashBookReferenceId IS NOT NULL
AND pos.CashDirection IN ('O')
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Goodwill_Curr
+SUM(
CASE
WHEN cfd.CashFeedTypeId = 17
AND pos.CashDirection IN ('Z') -- Ignore and set to 0
THEN (pos.PriceIncTax * (pos.Quantity*-1))*2
ELSE 0
END) --ALIST_Script_Correction1
+SUM(
CASE
WHEN cfd.CashFeedTypeId = 19
AND pos.CashDirection IN ('O','V')
THEN (pos.PriceIncTax * (pos.Quantity*-1))*2
ELSE 0
END) --ALIST_Script_Correction2
) AS Cash_Out_Curr
FROM
dbo.POSItem (NOLOCK) POS
LEFT OUTER JOIN dbo.ReceiptPayment (NOLOCK) RP ON rp.ReceiptPaymentId = pos.ReceiptPaymentId
LEFT OUTER JOIN dbo.CountryTax (NOLOCK) CT ON rp.CountryId = ct.CountryId AND COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) >= ct.DateFrom AND (COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) < ct.DateTo OR ct.DateTo IS NULL) --amended to combine Cash IN & Cash OUT
LEFT OUTER JOIN dbo.State (NOLOCK) S ON rp.CountryId = s.CountryId AND rp.County = s.Code
LEFT OUTER JOIN dbo.Country (NOLOCK) C1 ON rp.CountryId = c1.CountryId
LEFT OUTER JOIN dbo.Country (NOLOCK) C2 ON pos.CurrencyId = c2.CountryId
--LEFT OUTER JOIN dbo.OpenAccountsCurrency (NOLOCK) OACURR ON pos.CurrencyId = oacurr.CurrencyId --Not required for the query
LEFT OUTER JOIN dbo.CashFeedPOSItem (NOLOCK) CFP ON pos.POSItemId = cfp.POSItemId
LEFT OUTER JOIN dbo.CashFeedDetail (NOLOCK) CFD ON cfp.CashFeedDetailId = cfd.CashFeedDetailId
LEFT OUTER JOIN dbo.PaymentMethodAcquirer (NOLOCK) PMA ON rp.PaymentMethodId = pma.PaymentMethodId
LEFT OUTER JOIN dbo.CashBookReference (NOLOCK) CB ON pma.AcquirerId = cb.AcquirerId AND CB.BaseCountryId = POS.CurrencyId
LEFT OUTER JOIN dbo.Receipt (NOLOCK) R ON POS.receiptid = r.receiptid -- added in v3 for PaymentMethodAcquirer CASE clause
LEFT OUTER JOIN dbo.PaymentMethod (NOLOCK) PM ON pm.PaymentMethodId = rp.PaymentMethodId -- required for Payment Description
LEFT OUTER JOIN
(SELECT
pos2.BaseReceiptId
,MIN(pos2.DateBilled)AS DateBilled
FROM POSItem (NOLOCK) POS2
GROUP BY
pos2.BaseReceiptId
)MIN ON min.BaseReceiptId = pos.BaseReceiptId -- added to account for timing differences on refunds for WorldPay and VAT on Premier
WHERE
COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) >= '20160731' --COALESCE added to insure DateTransacted falls into the period
AND COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) < '20160810'
AND (
PMA.AcquirerId = CASE WHEN COALESCE(min.DateBilled, pos.DateBilled, pos.DateRefunded) > '2014-06-20 04:55:40:010'
THEN CASE when rp.PaymentMethodId in (4,5)
then CASE when pos.CurrencyId = 2
and rp.countryid = 2
then 8
else 1
END
else PMA.Acquirerid
END
ELSE CASE when rp.PaymentMethodId in (4,5)
then CASE when pos.CurrencyId = 2
and rp.countryid = 2
then 1
else 1
END
else PMA.Acquirerid
END
END
OR rp.PaymentMethodId = 11) -- to filter out duplication caused by WorldPay
GROUP BY
CAST( COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) AS DATE)
,CASE
WHEN COALESCE(min.DateBilled, pos.DateBilled, pos.DateRefunded) > '2014-06-20 04:55:40:010'
AND rp.PaymentMethodId in (4,5)
AND pos.CurrencyId = 2
AND rp.countryid = 2
THEN 'WorldPay'
WHEN pm.PaymentDescription IN ('Sofort', 'iDEAL')
THEN 'Direct Transfers'
WHEN pm.PaymentDescription NOT IN ('PayPal', 'American Express', 'Laser', 'Sofort', 'iDEAL', 'Klarna')
AND c2.CurrencyCode IN ('AUD')
THEN 'NAB'
WHEN pm.PaymentDescription NOT IN ('PayPal', 'American Express', 'Laser', 'Sofort', 'iDEAL', 'Klarna')
AND c2.CurrencyCode NOT IN('AUD')
THEN 'Barclays'
WHEN pm.PaymentDescription NOT IN ('PayPal', 'American Express', 'Laser', 'Sofort', 'iDEAL', 'Klarna')
AND c2.CurrencyCode NOT IN('AUD') AND cb.Reference IS NULL
THEN 'Voucher'
ELSE pm.PaymentDescription
END
,c2.CurrencyCode
,cb.Reference
我想做的是,在任何情况下OA现金簿都是空白的,它会将现金收购者改为&#39;凭证&#39;
有人可以建议最好的方法吗?
为冗长的代码道歉,但我认为最好将其全部包含在内。
所有现金账簿都是空白的,现金收购人将获得如下凭证:
答案 0 :(得分:0)
当返回字符串'Voucher'的部分时,你必须在Case中包含一个条件(OR cb.Reference ='')。试试这样,
SELECT CAST(COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) AS DATE) AS Date_Transacted
,CASE
WHEN COALESCE(min.DateBilled, pos.DateBilled, pos.DateRefunded) > '2014-06-20 04:55:40:010'
AND rp.PaymentMethodId IN (
4
,5
)
AND pos.CurrencyId = 2
AND rp.countryid = 2
THEN 'WorldPay'
WHEN pm.PaymentDescription IN (
'Sofort'
,'iDEAL'
)
THEN 'Direct Transfers'
WHEN pm.PaymentDescription NOT IN (
'PayPal'
,'American Express'
,'Laser'
,'Sofort'
,'iDEAL'
,'Klarna'
)
AND c2.CurrencyCode NOT IN ('AUD')
AND (
cb.Reference IS NULL
OR cb.Reference = ''
)
THEN 'Voucher'
WHEN pm.PaymentDescription NOT IN (
'PayPal'
,'American Express'
,'Laser'
,'Sofort'
,'iDEAL'
,'Klarna'
)
AND c2.CurrencyCode IN ('AUD')
THEN 'NAB'
WHEN pm.PaymentDescription NOT IN (
'PayPal'
,'American Express'
,'Laser'
,'Sofort'
,'iDEAL'
,'Klarna'
)
AND c2.CurrencyCode NOT IN ('AUD')
THEN 'Barclays'
ELSE pm.PaymentDescription
END AS Cash_Acquirer
,c2.CurrencyCode
,cb.Reference AS OA_Cash_Book
------------------------------------------------------------------------------------------------
--------------------------------Cash In--------------------------------------------------------
,(
SUM(CASE
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- New_Billed_Orders_Curr
+ SUM(CASE
WHEN (
(
pos.VoidHeaderId IS NULL
OR pos.VoidHeaderId = 0
)
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection = 'I'
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
(
pos.VoidHeaderId IS NULL
OR pos.VoidHeaderId = 0
)
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection = 'I'
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Purchased_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND pos.PriceIncTax < 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('I')
AND pos.PriceIncTax < 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Redeemed_Curr
+ SUM(CASE
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'I'
,'V'
)
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (8) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * pos.Quantity
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'I'
,'V'
)
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (8) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Curr
+ SUM(CASE
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'I'
,'V'
)
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (11) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * CT.TaxRate * pos.Quantity
WHEN (
pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'I'
,'V'
)
AND pos.PriceIncTax > 0
AND cb.CashBookReferenceId IS NOT NULL
AND pos.DateBilled IS NOT NULL -- added to combine Cash IN & Cash OUT
AND cfd.CashFeedTypeId IN (11) -- added to combine Cash IN & Cash OUT
)
THEN pos.PriceIncTax / (1 + CT.TaxRate) * CT.TaxRate * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Vat_Curr
+ SUM(CASE
WHEN cfd.CashFeedTypeId = 17
AND pos.CashDirection IN ('I')
THEN (pos.PriceIncTax * (pos.Quantity * - 1)) * 2
ELSE 0
END) --ALIST_Script_Correction1
+ SUM(CASE
WHEN cfd.CashFeedTypeId = 19
AND pos.CashDirection IN (
'I'
,'V'
)
THEN (pos.PriceIncTax * (pos.Quantity * - 1)) * 2
ELSE 0
END) --ALIST_Script_Correction2
) AS Cash_In_Curr
------------------------------------------------------------------------------------------------
--------------------------------Cash Out--------------------------------------------------------
,(
SUM(CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NULL
AND (
CAST(pos.DateBilled AS DATE) = CAST(cfd.DateTransacted AS DATE)
OR CAST(pos.DateRefunded AS DATE) = CAST(cfd.DateTransacted AS DATE)
)
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NULL
AND (
CAST(pos.DateBilled AS DATE) = CAST(cfd.DateTransacted AS DATE)
OR CAST(pos.DateRefunded AS DATE) = CAST(cfd.DateTransacted AS DATE)
)
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Basket_Refunded_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN (
'O'
,'V'
)
--AND pos.DateCancelled IS NOT NULL
AND pos.DateCancelled >= '20160731'
AND pos.DateCancelled < '20160810'
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN (
'O'
,'V'
)
--AND pos.DateCancelled IS NOT NULL
AND pos.DateCancelled >= '20160731'
AND pos.DateCancelled < '20160810'
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Basket_Cancelled_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.VoidHeaderId <> 0
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.PriceIncTax > 0
AND pos.CashDirection IN ('O')
AND pos.DateBilled IS NOT NULL
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.VoidHeaderId <> 0
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.PriceIncTax > 0
AND pos.CashDirection IN ('O')
AND pos.DateBilled IS NOT NULL
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Reissued_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NOT NULL
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptVoucherId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NULL
AND pos.CashDirection IN ('O')
AND pos.DateCancelled IS NOT NULL
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Voucher_Cancelled_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'O'
,'V'
)
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 9
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'O'
,'V'
)
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 9
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Refund_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'O'
,'V'
)
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 12
AND cb.CashBookReferenceId IS NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * ct.TaxRate * pos.Quantity
WHEN (
pos.VoidHeaderId IS NOT NULL
AND pos.ReceiptShippingSubscriptionId IS NOT NULL
AND pos.CashDirection IN (
'O'
,'V'
)
AND pos.DateRefunded IS NOT NULL
AND cfd.CashFeedTypeId = 12
AND cb.CashBookReferenceId IS NOT NULL
)
THEN pos.PriceIncTax / (1 + ct.TaxRate) * ct.TaxRate * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Premier_Subscription_Refund_Vat_Curr
+ SUM(CASE
WHEN (
pos.VoidHeaderId IS NULL
AND pos.IsChequeRefund IN (
0
,1
)
AND pos.DateRefunded IS NOT NULL
AND cb.CashBookReferenceId IS NULL
AND pos.CashDirection IN ('O')
)
THEN pos.PriceIncTax * pos.Quantity
WHEN (
pos.VoidHeaderId IS NULL
AND pos.IsChequeRefund IN (
0
,1
)
AND pos.DateRefunded IS NOT NULL
AND cb.CashBookReferenceId IS NOT NULL
AND pos.CashDirection IN ('O')
)
THEN pos.PriceIncTax * pos.Quantity * pos.ExchangeRate
ELSE 0
END) -- Goodwill_Curr
+ SUM(CASE
WHEN cfd.CashFeedTypeId = 17
AND pos.CashDirection IN ('Z') -- Ignore and set to 0
THEN (pos.PriceIncTax * (pos.Quantity * - 1)) * 2
ELSE 0
END) --ALIST_Script_Correction1
+ SUM(CASE
WHEN cfd.CashFeedTypeId = 19
AND pos.CashDirection IN (
'O'
,'V'
)
THEN (pos.PriceIncTax * (pos.Quantity * - 1)) * 2
ELSE 0
END) --ALIST_Script_Correction2
) AS Cash_Out_Curr
FROM dbo.POSItem(NOLOCK) POS
LEFT OUTER JOIN dbo.ReceiptPayment(NOLOCK) RP ON rp.ReceiptPaymentId = pos.ReceiptPaymentId
LEFT OUTER JOIN dbo.CountryTax(NOLOCK) CT ON rp.CountryId = ct.CountryId
AND COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) >= ct.DateFrom
AND (
COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) < ct.DateTo
OR ct.DateTo IS NULL
) --amended to combine Cash IN & Cash OUT
LEFT OUTER JOIN dbo.STATE (NOLOCK) S ON rp.CountryId = s.CountryId
AND rp.County = s.Code
LEFT OUTER JOIN dbo.Country(NOLOCK) C1 ON rp.CountryId = c1.CountryId
LEFT OUTER JOIN dbo.Country(NOLOCK) C2 ON pos.CurrencyId = c2.CountryId
--LEFT OUTER JOIN dbo.OpenAccountsCurrency (NOLOCK) OACURR ON pos.CurrencyId = oacurr.CurrencyId --Not required for the query
LEFT OUTER JOIN dbo.CashFeedPOSItem(NOLOCK) CFP ON pos.POSItemId = cfp.POSItemId
LEFT OUTER JOIN dbo.CashFeedDetail(NOLOCK) CFD ON cfp.CashFeedDetailId = cfd.CashFeedDetailId
LEFT OUTER JOIN dbo.PaymentMethodAcquirer(NOLOCK) PMA ON rp.PaymentMethodId = pma.PaymentMethodId
LEFT OUTER JOIN dbo.CashBookReference(NOLOCK) CB ON pma.AcquirerId = cb.AcquirerId
AND CB.BaseCountryId = POS.CurrencyId
LEFT OUTER JOIN dbo.Receipt(NOLOCK) R ON POS.receiptid = r.receiptid -- added in v3 for PaymentMethodAcquirer CASE clause
LEFT OUTER JOIN dbo.PaymentMethod(NOLOCK) PM ON pm.PaymentMethodId = rp.PaymentMethodId -- required for Payment Description
LEFT OUTER JOIN (
SELECT pos2.BaseReceiptId
,MIN(pos2.DateBilled) AS DateBilled
FROM POSItem(NOLOCK) POS2
GROUP BY pos2.BaseReceiptId
) MIN ON min.BaseReceiptId = pos.BaseReceiptId -- added to account for timing differences on refunds for WorldPay and VAT on Premier
WHERE COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) >= '20160731' --COALESCE added to insure DateTransacted falls into the period
AND COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) < '20160810'
AND (
PMA.AcquirerId = CASE
WHEN COALESCE(min.DateBilled, pos.DateBilled, pos.DateRefunded) > '2014-06-20 04:55:40:010'
THEN CASE
WHEN rp.PaymentMethodId IN (
4
,5
)
THEN CASE
WHEN pos.CurrencyId = 2
AND rp.countryid = 2
THEN 8
ELSE 1
END
ELSE PMA.Acquirerid
END
ELSE CASE
WHEN rp.PaymentMethodId IN (
4
,5
)
THEN CASE
WHEN pos.CurrencyId = 2
AND rp.countryid = 2
THEN 1
ELSE 1
END
ELSE PMA.Acquirerid
END
END
OR rp.PaymentMethodId = 11
) -- to filter out duplication caused by WorldPay
GROUP BY CAST(COALESCE(pos.DateBilled, pos.DateRefunded, pos.DateCancelled) AS DATE)
,CASE
WHEN COALESCE(min.DateBilled, pos.DateBilled, pos.DateRefunded) > '2014-06-20 04:55:40:010'
AND rp.PaymentMethodId IN (
4
,5
)
AND pos.CurrencyId = 2
AND rp.countryid = 2
THEN 'WorldPay'
WHEN pm.PaymentDescription IN (
'Sofort'
,'iDEAL'
)
THEN 'Direct Transfers'
WHEN pm.PaymentDescription NOT IN (
'PayPal'
,'American Express'
,'Laser'
,'Sofort'
,'iDEAL'
,'Klarna'
)
AND c2.CurrencyCode IN ('AUD')
THEN 'NAB'
WHEN pm.PaymentDescription NOT IN (
'PayPal'
,'American Express'
,'Laser'
,'Sofort'
,'iDEAL'
,'Klarna'
)
AND c2.CurrencyCode NOT IN ('AUD')
THEN 'Barclays'
WHEN pm.PaymentDescription NOT IN (
'PayPal'
,'American Express'
,'Laser'
,'Sofort'
,'iDEAL'
,'Klarna'
)
AND c2.CurrencyCode NOT IN ('AUD')
AND cb.Reference IS NULL
THEN 'Voucher'
ELSE pm.PaymentDescription
END
,c2.CurrencyCode
,cb.Reference