生成账单,如果在当前账期有退货账单(负账单),则抵扣

SELECT
T.TIMESTR TIMESTR,
-- T.ORDER_TYPE ORDER_TYPE,
SUM( T.TAX_AMOUNT) TAX_AMOUNT,
SUM(T.NO_TAX_AMOUNT) NO_TAX_AMOUNT,
SUM(T.AMOUNT) AMOUNT,
T.CUSTOMER_CODE CUSTOMER_CODE,
T.CUSTOMER_NAME CUSTOMER_NAME
FROM (
SELECT
(CASE
WHEN SUBSTR(TO_CHAR(BAFD.FEE_TIME,'YYYYMMDD'),LENGTH(TO_CHAR(BAFD.FEE_TIME,'YYYYMMDD'))-1,LENGTH(TO_CHAR(BAFD.FEE_TIME,'YYYYMMDD'))) >= 25
THEN TO_CHAR(ADD_MONTHS(BAFD.FEE_TIME,1),'YYYY-MM')
ELSE TO_CHAR(BAFD.FEE_TIME,'YYYY-MM') END
) AS TIMESTR,
(CASE WHEN BEFOR.TIMESTR = (SELECT (CASE
WHEN SUBSTR(TO_CHAR(SYSDATE,'YYYYMMDD'),LENGTH(TO_CHAR(SYSDATE,'YYYYMMDD'))-1,LENGTH(TO_CHAR(SYSDATE,'YYYYMMDD'))) >= 25
THEN TO_CHAR(ADD_MONTHS(SYSDATE,1),'YYYY-MM')
ELSE TO_CHAR(SYSDATE,'YYYY-MM') END
) AS TIMESTR FROM DUAL) THEN 'NOR'
ELSE 'BRN' END

               ) AS ORDER_TYPE,
               BAFD.AMOUNT AMOUNT,
               BAFD.TAX_AMOUNT TAX_AMOUNT,
               BAFD.NO_TAX_AMOUNT NO_TAX_AMOUNT,      
               BAFD.CUSTOMER_CODE CUSTOMER_CODE,
               BAFD.CUSTOMER_NAME CUSTOMER_NAME
             FROM BM_AR_FEE_DETAIL BAFD   
             LEFT JOIN BM_CUSTOMER_BILL_DATE BCBD ON BCBD.CUSTOMER_CODE = BAFD.CUSTOMER_CODE AND BAFD.ORG_ID = BCBD.ORG_ID
             LEFT JOIN BM_BUSINESS_HEADER BBH ON BBH.BUSINESS_ID = BAFD.BUSINESS_ID AND BBH.SETTLEMENT_TYPE = 'MONTH'
             LEFT JOIN (SELECT (CASE /**  */
                               WHEN SUBSTR(TO_CHAR(BEFORTIME.BUSINESS_TIME,'YYYYMMDD'),LENGTH(TO_CHAR(BEFORTIME.BUSINESS_TIME,'YYYYMMDD'))-1,LENGTH(TO_CHAR(BEFORTIME.BUSINESS_TIME,'YYYYMMDD'))) >= 25
                               THEN TO_CHAR(ADD_MONTHS(BEFORTIME.BUSINESS_TIME,1),'YYYY-MM')   
                               ELSE TO_CHAR(BEFORTIME.BUSINESS_TIME,'YYYY-MM') END
                             ) TIMESTR,
                               BEFORTIME.SOURCE_ORDER_NO 
                        FROM (SELECT BUSINESS_TIME,SOURCE_ORDER_NO 
                                     FROM 
                                     BM_BUSINESS_HEADER 
                                     WHERE SOURCE_ORDER_NO IN (SELECT
                                              HD.BEFORE_SOURCE_ORDER_NO
                                              FROM BM_AR_FEE_DETAIL FEE
                                              LEFT JOIN BM_BUSINESS_HEADER  HD ON FEE.BUSINESS_ID = HD.BUSINESS_ID
                                              WHERE 
                                              1=1
                                              AND HD.BUSINESS_ORDER_TYPE = 'OR')) BEFORTIME) BEFOR ON BEFOR.SOURCE_ORDER_NO = BBH.SOURCE_ORDER_NO
             WHERE
             1=1
       )   T
                GROUP BY    T. TIMESTR,
                         --   T.ORDER_TYPE,
                            T.CUSTOMER_CODE ,  
                            T.CUSTOMER_NAME

猜你喜欢

转载自www.cnblogs.com/mundodance/p/10722343.html
今日推荐