You are on page 1of 6

1, Nhập từ BTCom_chi_tiết

SELECT DISTINCT
DATE(od.NGAY_TAO_DON) AS NGAY_TAO_DON, -- created_on
od.MA_DON_HANG AS MA_PHIEU, -- code
od.SO_CHUNG_TU AS MA_CHUNG_TU_MUA_HANG_VNPOST, -- SoChungTu
od.MA_KHO_XUAT AS MA_KHO_XUAT,
kx.TEN_KHO_DIEM_BAN AS TEN_KHO_XUAT,
od.MA_KHO_NHAP AS MA_KHO_NHAP,
kn.TEN_BDH AS TEN_KHO_NHAP,
od.ID_KHO_TINH_NHAP AS ID_KHO_TINH_NHAP,
kn.TEN_BDT AS TEN_KHO_TINH_NHAP,
od.MA_TRANG_THAI AS MA_TRANG_THAI,
od.TEN_TRANG_THAI AS TRANG_THAI, -- status
od.MA_SAN_PHAM AS MA_HANG_HOA,
sp.TEN_SAN_PHAM AS TEN_HANG_HOA,
od.SO_LUONG_HANG_DG AS SO_KIEN_HANG, -- pkg_quantity
od.KICH_THUOC AS TRONG_LUONG,
dv.TEN_DON_VI AS DON_VI_TINH,
od.MA_LOAI_HANG AS MA_VU_VIEC, -- order_items.issue_type
od.DON_GIA AS DON_GIA,
(
CASE
WHEN od.SO_LUONG_CN IS NOT NULL THEN od.SO_LUONG_CN
ELSE od.SO_LUONG_HANG END
) AS SO_LUONG,
(
CASE
WHEN od.SO_LUONG_CN IS NOT NULL THEN od.SO_LUONG_CN
ELSE od.SO_LUONG_HANG END
)
* od.DON_GIA AS GIA_TRI,
DATE(od.TG_XAC_NHAN) AS THOI_GIAN_DUYET_DON_HANG, --
confirm_on
DATE(od.NGAY_GUI_DON) AS THOI_GIAN_XUAT_DON_HANG,--
issue_on
DATE(od.NGAY_NHAN_DON_HANG) AS THOI_GIAN_NHAN_HANG_THUC_TE,
-- received_on
(
CASE
WHEN od.MA_LOAI_HANG = 1 THEN 'Xuất theo đơn' ELSE
'Xuất chủ động'
END
) AS HINH_THUC
FROM
`xeca-bq-production-20102023.dwh.FCT_ORDER_DETAILS` AS od
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_SAN_PHAM` AS sp
ON sp.MA_SAN_PHAM = od.MA_SAN_PHAM
AND od.ETL_DATE BETWEEN sp.START_DATE AND sp.END_DATE
JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS kn
ON kn.ID_BDH_V3 = od.ID_KHO_NHAP
AND od.ETL_DATE BETWEEN kn.START_DATE AND kn.END_DATE
JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS kx
ON kx.ID_DB_V3 = od.ID_KHO_XUAT
AND od.ETL_DATE BETWEEN kx.START_DATE AND kx.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_DON_VI_DG` AS dv
ON sp.MA_DVC = dv.MA_DON_VI
-- AND od.ETL_DATE BETWEEN dv.START_DATE AND dv.END_DATE
WHERE
od.MA_LOAI_HANG = 1 -- AND ot.issue_type = 1
AND od.MA_LOAI_DON_HANG IN (1, 5, 6) -- o.note_type IN
(1,5,6)
AND od.CAP_KHO_NHAP = 2
AND od.CAP_KHO_XUAT = 0
AND od.SO_LUONG_HANG != 0 -- AND ot.quantity != 0
2, Xuất về BTCom

SELECT DISTINCT
DATE(od.NGAY_TAO_DON) AS NGAY_LAP, -- created_on
od.MA_DON_HANG AS MA_PHIEU, -- code
od.MA_KHO_XUAT AS MA_KHO_XUAT,
kx.TEN_BDH AS TEN_KHO_XUAT,
kx.ID_BDT_V3 AS ID_KHO_TINH_XUAT,
kx.TEN_BDT AS TEN_KHO_TINH_XUAT,
od.MA_KHO_NHAP AS MA_KHO_NHAP,
kn.TEN_KHO_DIEM_BAN AS TEN_KHO_NHAP,
od.TEN_TRANG_THAI AS TRANG_THAI, -- status
od.MA_SAN_PHAM AS MA_HANG_HOA,
sp.TEN_SAN_PHAM AS TEN_HANG_HOA,
od.SO_LUONG_HANG_DG AS SO_KIEN_HANG, -- pkg_quantity
od.KICH_THUOC AS TRONG_LUONG, -- box_weight
dv.TEN_DON_VI AS DON_VI_TINH,
od.TEN_LOAI_HANG AS MA_VU_VIEC, -- order_items.issue_type
od.DON_GIA AS DON_GIA,
(
CASE
WHEN od.SO_LUONG_CN IS NOT NULL THEN od.SO_LUONG_CN
ELSE od.SO_LUONG_HANG END
) AS SO_LUONG,
(
CASE
WHEN od.SO_LUONG_CN IS NOT NULL THEN od.SO_LUONG_CN
ELSE od.SO_LUONG_HANG END
)
* od.DON_GIA AS GIA_TRI_TIEN,
od.GHI_CHU_KH AS GHI_CHU
FROM
`xeca-bq-production-20102023.dwh.FCT_ORDER_DETAILS` AS od
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_SAN_PHAM` AS sp
ON sp.MA_SAN_PHAM = od.MA_SAN_PHAM
AND od.ETL_DATE BETWEEN sp.START_DATE AND sp.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS kn
ON kn.ID_DB_V3 = od.ID_KHO_NHAP
AND od.ETL_DATE BETWEEN kn.START_DATE AND kn.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS kx
ON kx.ID_BDH_V3 = od.ID_KHO_XUAT
AND od.ETL_DATE BETWEEN kx.START_DATE AND kx.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_DON_VI_DG` AS dv
ON dv.MA_DON_VI = sp.MA_DVC
AND od.ETL_DATE BETWEEN dv.START_DATE AND dv.END_DATE
WHERE
od.MA_LOAI_HANG = 1 -- AND ot.issue_type = 1
AND od.MA_LOAI_DON_HANG IN (5, 6) -- o.note_type IN (5,6)
AND od.CAP_KHO_NHAP = 0
AND od.CAP_KHO_XUAT = 2

3, Xuất bán

WITH
t1 AS -- Thông tin hóa đơn bán hàng 'VNPOST'
(
SELECT
id.MA_HOA_DON AS MA_HOA_DON,
DATE(id.NGAY_TAO) AS NGAY_TAO_DON, -- created_on
sp.MA_SAN_PHAM AS MA_HANG_HOA,
sp.TEN_SAN_PHAM AS TEN_HANG_HOA,
id.DON_GIA AS DON_GIA,
dv.TEN_DON_VI AS DON_VI_TINH,
id.ID_KHO_BAN AS ID_KHO_XUAT,
id.CAP_KHO AS CAP_KHO,
id.SO_LUONG AS SO_LUONG, -- quantity
id.SO_LUONG * id.DON_GIA AS DOANH_THU, -- Doanh thu = (Số
lượng thực tế * Đơn giá)
sp.START_DATE AS START_DATE_SP,
sp.END_DATE AS END_DATE_SP,
dv.START_DATE AS START_DATE_DV,
dv.END_DATE AS END_DATE_DV
FROM
`xeca-bq-production-20102023.dwh.FCT_INVOICE_DETAILS` AS id
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_SAN_PHAM` AS sp
ON
sp.MA_SAN_PHAM = id.MA_SAN_PHAM
AND sp.STATUS IS true
-- AND DATE(id.NGAY_TAO) BETWEEN sp.START_DATE AND
sp.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_DON_VI_DG` AS dv
ON
sp.MA_DVC = dv.MA_DON_VI
AND dv.STATUS IS true
-- AND DATE(id.NGAY_TAO) BETWEEN dv.START_DATE AND
dv.END_DATE
WHERE
id.TEN_KHACH_HANG LIKE 'VNPOST'
AND id.MA_TRANG_THAI = 12 -- { ID: 12 Text: 'Thành công' -
BH_THANH_CONG }
),

t2 AS
(
SELECT
t1.MA_HOA_DON,
t1.ID_KHO_XUAT,
k.TEN_BDH AS TEN_KHO_XUAT,
k.TEN_BDT AS TEN_KHO_XUAT_PARENT,
t1.NGAY_TAO_DON,
t1.MA_HANG_HOA,
t1.TEN_HANG_HOA,
t1.DON_VI_TINH,
t1.DON_GIA,
t1.SO_LUONG,
t1.DOANH_THU
FROM
t1
JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS k
ON
t1.ID_KHO_XUAT = k.ID_BDH_V3
AND k.STATUS IS true
-- AND t1.START_DATE_SP <= k.END_DATE
-- AND t1.END_DATE_SP >= k.START_DATE
-- AND t1.START_DATE_DV <= k.END_DATE
-- AND t1.END_DATE_DV >= k.START_DATE
WHERE
t1.CAP_KHO = 2

UNION ALL

SELECT
t1.MA_HOA_DON,
k.ID_BDH_V3 AS ID_KHO_XUAT,
k.TEN_BDH AS TEN_KHO_XUAT,
k.TEN_BDT AS TEN_KHO_XUAT_PARENT,
t1.NGAY_TAO_DON,
t1.MA_HANG_HOA,
t1.TEN_HANG_HOA,
t1.DON_VI_TINH,
t1.DON_GIA,
t1.SO_LUONG,
t1.DOANH_THU
FROM
t1
JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS k
ON
t1.ID_KHO_XUAT = k.ID_DB_V3
AND k.STATUS IS true
-- AND t1.START_DATE_SP <= k.END_DATE
-- AND t1.END_DATE_SP >= k.START_DATE
-- AND t1.START_DATE_DV <= k.END_DATE
-- AND t1.END_DATE_DV >= k.START_DATE
WHERE
t1.CAP_KHO = 4
),

t3 AS
(
SELECT
t2.ID_KHO_XUAT,
t2.TEN_KHO_XUAT,
t2.TEN_KHO_XUAT_PARENT,
t2.NGAY_TAO_DON,
t2.MA_HANG_HOA,
t2.TEN_HANG_HOA,
t2.DON_VI_TINH,
t2.DON_GIA,
SUM(t2.SO_LUONG) AS SO_LUONG,
SUM(t2.DOANH_THU) AS DOANH_THU
FROM
t2
GROUP BY
t2.MA_HOA_DON,
t2.ID_KHO_XUAT,
t2.TEN_KHO_XUAT,
t2.TEN_KHO_XUAT_PARENT,
t2.NGAY_TAO_DON,
t2.MA_HANG_HOA,
t2.TEN_HANG_HOA,
t2.DON_GIA,
t2.DON_VI_TINH
)

SELECT
*
-- SUM(t3.SO_LUONG) AS SO_LUONG,
-- SUM(t3.DOANH_THU) AS DOANH_THU
FROM
t3

4, Điều chuyển BĐH

SELECT DISTINCT
DATE(od.NGAY_TAO_DON) AS NGAY_LAP,
od.MA_DON_HANG AS MA_PHIEU,
k1.ID_BDH_V3 AS ID_KHO_XUAT,
k1.TEN_BDH AS TEN_KHO_XUAT,
od.ID_KHO_TINH_XUAT AS ID_KHO_XUAT_PARENT,
k1.TEN_BDT AS TEN_KHO_BDT_XUAT,
k2.ID_BDH_V3 AS ID_KHO_NHAP,
k2.TEN_BDH AS TEN_KHO_NHAP,
od.ID_KHO_TINH_NHAP AS ID_KHO_NHAP_PARENT,
k2.TEN_BDT AS TEN_KHO_BDT_NHAP,
od.TEN_TRANG_THAI AS MA_VU_VIEC, -- STATUS_ID
od.MA_SAN_PHAM AS MA_HANG_HOA,
sp.TEN_SAN_PHAM AS TEN_HANG_HOA,
od.SO_LUONG_HANG_DG AS SO_KIEN_HANG, -- pkg_quantity
od.KICH_THUOC AS TRONG_LUONG, -- box_weight
dv.TEN_DON_VI AS DON_VI_TINH,
od.MA_LOAI_HANG, -- order_items_issue_type
(
CASE WHEN
od.SO_LUONG_CN IS NOT NULL THEN od.SO_LUONG_CN
ELSE od.SO_LUONG_HANG END
) AS SO_LUONG,
(
CASE WHEN
od.SO_LUONG_CN IS NOT NULL THEN od.SO_LUONG_CN
ELSE od.SO_LUONG_HANG END
)
* od.DON_GIA AS THANH_TIEN,
od.SO_CHUNG_TU AS SO_CHUNG_TU
FROM
`xeca-bq-production-20102023.dwh.FCT_ORDER_DETAILS` AS od
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS k1
ON
od.ID_KHO_XUAT = k1.ID_BDH_V3
AND
od.ETL_DATE BETWEEN k1.START_DATE AND k1.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_KHO_DIEM_BAN` AS k2
ON
od.ID_KHO_NHAP = k2.ID_BDH_V3
AND
od.ETL_DATE BETWEEN k2.START_DATE AND k2.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_SAN_PHAM` AS sp
ON
od.MA_SAN_PHAM = sp.MA_SAN_PHAM
AND
od.ETL_DATE BETWEEN sp.START_DATE AND sp.END_DATE
LEFT JOIN
`xeca-bq-production-20102023.dwh.D_DON_VI_DG` AS dv
ON
dv.MA_DON_VI = sp.MA_DVC
AND
od.ETL_DATE BETWEEN dv.START_DATE AND dv.END_DATE
WHERE
od.CAP_KHO_NHAP = 2
AND od.CAP_KHO_XUAT = 2
AND od.MA_LOAI_HANG = 1 -- order_items.issue_type = 1
AND od.MA_LOAI_DON_HANG IN (1, 5, 6) -- o.note_type IN (1,5, 6)

You might also like