You are on page 1of 12

USE [DBSinter]

GO
/****** Object: StoredProcedure [dbo].[spGetRencanaHargaJual] Script Date:
05/10/2023 11:53:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spGetRencanaHargaJual]


--declare
@IDSupplier INT = 8459,
@IDKategori INT = 0,
@ID INT = 79,
@IDBeli INT = 1990,
@TglBeli DATE = '1900-01-01',
@Filter VARCHAR(250) = ''
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @TabelKategori AS TABLE


(ID VARCHAR(250) NULL,
NoID BIGINT NULL,
Nama VARCHAR(250) NULL,
Kategori VARCHAR(250) NULL
);
INSERT INTO @TabelKategori
SELECT ID,
NoID,
Nama,
Kategori
FROM dbo.vKategori (NOLOCK)
ORDER BY ID;

IF @IDBeli > 0
BEGIN
SELECT a.NoID AS IDBarang,
b.NoID AS IDBarangD,
b.IDSatuan,
d.Nama AS Kategori,
a.Kode,
b.Barcode,
a.Nama AS Barang,
ISNULL(b.Varian, '') AS Varian,
e.Kode AS Satuan,
b.Konversi,
CAST(0 AS BIT) AS [Manual],
ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.NoID <> @IDBeli
AND ISNULL(x.isVoid, 0) = 0
AND cast(x.Tanggal as date) <= cast(z.Tgl as DATE)
AND ISNULL(y.QtyPcs, 0) <> 0
AND ISNULL(x.IsPosted, 0) = 1
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0)) as HargaBeliPcs,
ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.NoID <> @IDBeli
AND ISNULL(x.isVoid, 0) = 0
AND ISNULL(x.IsPosted, 0) = 1
AND cast(x.Tanggal as date) <= cast(z.Tgl as DATE)
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0) ) as HBLama,

--ROUND(ISNULL(a.HargaBeliPcs, 0.00), 2) * 1 AS HargaBeli,


CASE WHEN ISNULL(bb.QtyPcs, 0) = 0 THEN
ISNULL(a.HargaBeliPcs, 0.00) ELSE (ISNULL(bb.DPP , 0) + ISNULL(bb.PPN, 0)) /
ISNULL(bb.QtyPcs, 0) END HargaBeli,
CASE WHEN ISNULL(bb.QtyPcs, 0) = 0 THEN
ISNULL(a.HargaBeliPcs, 0.00) ELSE (ISNULL(bb.DPP , 0) + ISNULL(bb.PPN, 0)) /
ISNULL(bb.QtyPcs, 0) END HBBaru,

ISNULL(b.ProvitMargin, 0.00) AS ProvitMargin,


ISNULL(b.ProvitMargin, 0.00) AS ProvitMarginA,
ISNULL(b.ProvitMarginB, 0.00) AS ProvitMarginB,
ISNULL(b.ProvitMarginC, 0.00) AS ProvitMarginC,
ISNULL(b.ProvitMarginD, 0.00) AS ProvitMarginD,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginE,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginF,
ISNULL(b.ProsenUp, 0.00) AS NewProsenUp,
ISNULL(b.HargaJual, 0.00) AS NewHargaJual,
ISNULL(b.ProsenUpA, 0.00) AS NewProsenUpA,
ISNULL(b.HargaJualA, 0.00) AS NewHargaJualA,
ISNULL(b.ProsenUpB, 0.00) AS NewProsenUpB,
ISNULL(b.HargaJualB, 0.00) AS NewHargaJualB,
ISNULL(b.ProsenUpC, 0.00) AS NewProsenUpC,
ISNULL(b.HargaJualC, 0.00) AS NewHargaJualC,
ISNULL(b.ProsenUpD, 0.00) AS NewProsenUpD,
ISNULL(b.HargaJualD, 0.00) AS NewHargaJualD,
ISNULL(b.ProsenUpE, 0.00) AS NewProsenUpE,
ISNULL(b.HargaJualE, 0.00) AS NewHargaJualE,
ISNULL(b.ProsenUpF, 0.00) AS NewProsenUpF,
ISNULL(b.HargaJualE, 0.00) AS NewHargaJualF,
ISNULL(b.ProsenUp, 0.00) AS OldProsenUp,
ISNULL(b.HargaJual, 0.00) AS OldHargaJual,
ISNULL(b.ProsenUpA, 0.00) AS OldProsenUpA,
ISNULL(b.HargaJualA, 0.00) AS OldHargaJualA,
ISNULL(b.ProsenUpB, 0.00) AS OldProsenUpB,
ISNULL(b.HargaJualB, 0.00) AS OldHargaJualB,
ISNULL(b.ProsenUpC, 0.00) AS OldProsenUpC,
ISNULL(b.HargaJualC, 0.00) AS OldHargaJualC,
ISNULL(b.ProsenUpD, 0.00) AS OldProsenUpD,
ISNULL(b.HargaJualD, 0.00) AS OldHargaJualD,
ISNULL(b.ProsenUpE, 0.00) AS OldProsenUpE,
ISNULL(b.HargaJualE, 0.00) AS OldHargaJualE,
ISNULL(b.ProsenUpF, 0.00) AS OldProsenUpF,
ISNULL(b.HargaJualE, 0.00) AS OldHargaJualF,
--c1.Kode + ' - ' + c1.Nama AS Supplier1,
--c2.Kode + ' - ' + c2.Nama AS Supplier2,
--c3.Kode + ' - ' + c3.Nama AS Supplier3,
--c4.Kode + ' - ' + c4.Nama AS Supplier4,
--c5.Kode + ' - ' + c5.Nama AS Supplier5,
CONVERT(MONEY, 0.0) AS HargaBeliDef,
'' KodeBeliDef,
1 AS QtyMin,
'' AS Catatan,
'' AS Keterangan,
CONVERT(MONEY, 0.0) - ROUND(ISNULL(a.HargaBeliPcs, 0.00) *
b.Konversi, 2) AS Selisih,
0 AS IDBeliD,

CONVERT(MONEY, 0.0) AS SaranJualByProvit,


CONVERT(MONEY, 0.0) AS SaranJualByProvitA,
CONVERT(MONEY, 0.0) AS SaranJualByProvitB,
CONVERT(MONEY, 0.0) AS SaranJualByProvitC,
CONVERT(MONEY, 0.0) AS SaranJualByProvitD,
CONVERT(MONEY, 0.0) AS SaranJualByProvitE,
CONVERT(MONEY, 0.0) AS SaranJualByProvitF
FROM MBarang(NOLOCK) a
INNER JOIN MBarangD(NOLOCK) b ON a.NoID = b.IDBarang
LEFT JOIN MBeliD (NOLOCK) bb ON a.NoID = bb.IDBarang
AND b.IDBarang = bb.IDBarang
AND b.NoID = bb.IDBarangD
AND bb.IDBeli = @IDBeli
--LEFT JOIN MAlamat(NOLOCK) c1 ON a.IDSupplier1 = c1.NoID
--LEFT JOIN MAlamat(NOLOCK) c2 ON a.IDSupplier2 = c2.NoID
--LEFT JOIN MAlamat(NOLOCK) c3 ON a.IDSupplier3 = c3.NoID
--LEFT JOIN MAlamat(NOLOCK) c4 ON a.IDSUpplier4 = c4.NoID
--LEFT JOIN MAlamat(NOLOCK) c5 ON a.IDSupplier5 = c5.NoID
LEFT JOIN @TabelKategori d ON a.IDKategori = d.NoID
INNER JOIN MSatuan(NOLOCK) e ON b.IDSatuan = e.NoID
LEFT JOIN (
SELECT
MAX(a.NoID) as NoIDH, MAX(b.NoID) as
NoIDD, MAX(a.Tanggal) as Tgl,
b.IDBarang, b.IDBarangD
FROM MBeli (NOLOCK) a
INNER JOIN MBeliD (NOLOCK) b ON a.NoID =
b.IDBarang
WHERE b.Qty <> 0
AND CAST(a.Tanggal as DATE) <= @TglBeli
AND ISNULL(a.IsVOID, 0) = 0
GROUP BY b.IDBarang, b.IDBarangD
)z ON a.NoID = z.IDBarang
AND b.IDBarang = z.IDBarang
AND b.NoID = z.NoIDD
WHERE 1 = 1
AND a.IsActive = 1
AND b.IsActive = 1
AND a.NoID IN
(
SELECT MBeliD.IDBarang
FROM MBeliD(NOLOCK)
WHERE MBeliD.IDBeli = @IDBeli
GROUP BY MBeliD.IDBarang
)

UNION ALL

SELECT a.NoID AS IDBarang,


b.NoID AS IDBarangD,
b.IDSatuan,
d.Nama AS Kategori,
a.Kode,
b.Barcode,
a.Nama AS Barang,
ISNULL(b.Varian, '') AS Varian,
e.Kode AS Satuan,
b.Konversi,
CAST(0 AS BIT) AS [Manual],
ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.NoID <> @IDBeli
AND ISNULL(x.IsVoid, 0) = 0
AND cast(x.Tanggal as date) <= cast(z.Tgl as DATE)
AND ISNULL(x.IsPosted, 0) = 1
AND ISNULL(y.QtyPcs, 0) <> 0
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0)) as HargaBeliPcs,

ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.NoID <> @IDBeli
AND ISNULL(x.IsVoid, 0) = 0
AND cast(x.Tanggal as date) <= cast(z.Tgl as DATE)
AND ISNULL(x.IsPosted, 0) = 1
AND ISNULL(y.QtyPcs, 0) <> 0
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0)) as HBLama,

--ROUND(ISNULL(a.HargaBeliPcs, 0.00), 2) * 1 AS HargaBeli,


CASE WHEN ISNULL(bb.QtyPcs, 0) = 0 THEN
ISNULL(a.HargaBeliPcs, 0.00) ELSE (ISNULL(bb.DPP , 0) + ISNULL(bb.PPN, 0)) /
ISNULL(bb.QtyPcs, 0) END HargaBeli,
CASE WHEN ISNULL(bb.QtyPcs, 0) = 0 THEN
ISNULL(a.HargaBeliPcs, 0.00) ELSE (ISNULL(bb.DPP , 0) + ISNULL(bb.PPN, 0)) /
ISNULL(bb.QtyPcs, 0) END HBBaru,
ISNULL(b.ProvitMargin, 0.00) AS ProvitMargin,
ISNULL(b.ProvitMargin, 0.00) AS ProvitMarginA,
ISNULL(b.ProvitMarginB, 0.00) AS ProvitMarginB,
ISNULL(b.ProvitMarginC, 0.00) AS ProvitMarginC,
ISNULL(b.ProvitMarginD, 0.00) AS ProvitMarginD,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginE,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginF,
ISNULL(aa.ProsenUp, 0.00) AS NewProsenUp,
ISNULL(aa.HargaJual, 0.00) AS NewHargaJual,
ISNULL(aa.ProsenUpA, 0.00) AS NewProsenUpA,
ISNULL(aa.HargaJualA, 0.00) AS NewHargaJualA,
ISNULL(aa.ProsenUpB, 0.00) AS NewProsenUpB,
ISNULL(aa.HargaJualB, 0.00) AS NewHargaJualB,
ISNULL(aa.ProsenUpC, 0.00) AS NewProsenUpC,
ISNULL(aa.HargaJualC, 0.00) AS NewHargaJualC,
ISNULL(aa.ProsenUpD, 0.00) AS NewProsenUpD,
ISNULL(aa.HargaJualD, 0.00) AS NewHargaJualD,
ISNULL(aa.ProsenUpE, 0.00) AS NewProsenUpE,
ISNULL(aa.HargaJualE, 0.00) AS NewHargaJualE,
ISNULL(aa.ProsenUpE, 0.00) AS NewProsenUpF,
ISNULL(aa.HargaJualE, 0.00) AS NewHargaJualF,
ISNULL(aa.ProsenUp, 0.00) AS OldProsenUp,
ISNULL(aa.HargaJual, 0.00) AS OldHargaJual,
ISNULL(aa.ProsenUpA, 0.00) AS OldProsenUpA,
ISNULL(aa.HargaJualA, 0.00) AS OldHargaJualA,
ISNULL(aa.ProsenUpB, 0.00) AS OldProsenUpB,
ISNULL(aa.HargaJualB, 0.00) AS OldHargaJualB,
ISNULL(aa.ProsenUpC, 0.00) AS OldProsenUpC,
ISNULL(aa.HargaJualC, 0.00) AS OldHargaJualC,
ISNULL(aa.ProsenUpD, 0.00) AS OldProsenUpD,
ISNULL(aa.HargaJualD, 0.00) AS OldHargaJualD,
ISNULL(aa.ProsenUpE, 0.00) AS OldProsenUpE,
ISNULL(aa.HargaJualE, 0.00) AS OldHargaJualE,
ISNULL(aa.ProsenUpE, 0.00) AS OldProsenUpF,
ISNULL(aa.HargaJualE, 0.00) AS OldHargaJualF,
--c1.Kode + ' - ' + c1.Nama AS Supplier1,
--c2.Kode + ' - ' + c2.Nama AS Supplier2,
--c3.Kode + ' - ' + c3.Nama AS Supplier3,
--c4.Kode + ' - ' + c4.Nama AS Supplier4,
--c5.Kode + ' - ' + c5.Nama AS Supplier5,
CONVERT(MONEY, 0.0) AS HargaBeliDef,
'' KodeBeliDef,
aa.Qty AS QtyMin,
'' AS Catatan,
'' AS Keterangan,
CONVERT(MONEY, 0.0) - ROUND(ISNULL(a.HargaBeliPcs, 0.00) *
b.Konversi, 2) AS Selisih,
0 AS IDBeliD,
CONVERT(MONEY, 0.0) AS SaranJualByProvit,
CONVERT(MONEY, 0.0) AS SaranJualByProvitA,
CONVERT(MONEY, 0.0) AS SaranJualByProvitB,
CONVERT(MONEY, 0.0) AS SaranJualByProvitC,
CONVERT(MONEY, 0.0) AS SaranJualByProvitD,
CONVERT(MONEY, 0.0) AS SaranJualByProvitE,
CONVERT(MONEY, 0.0) AS SaranJualByProvitF
FROM MBarangDDQty (NOLOCK) aa
INNER JOIN MBarang(NOLOCK) a ON aa.IDBarang = a.NoID
INNER JOIN MBarangD(NOLOCK) b ON a.NoID = b.IDBarang
AND aa.IDBarang = b.IDBarang
AND aa.IDBarangD = b.NoID
LEFT JOIN MBeliD (NOLOCK) bb ON a.NoID = bb.IDBarang
AND b.IDBarang = bb.IDBarang
AND b.NoID = bb.IDBarangD
AND bb.IDBeli = @IDBeli
--LEFT JOIN MAlamat(NOLOCK) c1 ON a.IDSupplier1 = c1.NoID
--LEFT JOIN MAlamat(NOLOCK) c2 ON a.IDSupplier2 = c2.NoID
--LEFT JOIN MAlamat(NOLOCK) c3 ON a.IDSupplier3 = c3.NoID
--LEFT JOIN MAlamat(NOLOCK) c4 ON a.IDSUpplier4 = c4.NoID
--LEFT JOIN MAlamat(NOLOCK) c5 ON a.IDSupplier5 = c5.NoID
LEFT JOIN @TabelKategori d ON a.IDKategori = d.NoID
INNER JOIN MSatuan(NOLOCK) e ON b.IDSatuan = e.NoID
LEFT JOIN (
SELECT
MAX(a.NoID) as NoIDH, MAX(b.NoID) as
NoIDD, MAX(a.Tanggal) as Tgl,
b.IDBarang, b.IDBarangD
FROM MBeli (NOLOCK) a
INNER JOIN MBeliD (NOLOCK) b ON a.NoID =
b.IDBarang
WHERE b.Qty <> 0
AND CAST(a.Tanggal as DATE) <= @TglBeli
AND ISNULL(a.IsVOID, 0) = 0
GROUP BY b.IDBarang, b.IDBarangD
)z ON a.NoID = z.IDBarang
AND b.IDBarang = z.IDBarang
AND b.NoID = z.NoIDD
WHERE 1 = 1
AND a.IsActive = 1
AND b.IsActive = 1
AND a.NoID IN
(
SELECT MBeliD.IDBarang
FROM MBeliD(NOLOCK)
WHERE MBeliD.IDBeli = @IDBeli
);
END ELSE
BEGIN
SELECT a.NoID AS IDBarang,
b.NoID AS IDBarangD,
b.IDSatuan,
d.Nama AS Kategori,
a.Kode,
b.Barcode,
a.Nama AS Barang,
ISNULL(b.Varian, '') AS Varian,
e.Kode AS Satuan,
b.Konversi,
CAST(0 AS BIT) AS [Manual],

ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.Tanggal < z.Tgl
AND x.NoID <> z.NoIDH
AND y.NoID <> z.NoIDD
AND ISNULL(x.isVoid, 0) = 0
AND ISNULL(x.IsPosted, 0) = 1
AND ISNULL(y.QtyPcs, 0) <> 0
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0.00) * 1) as HargaBeliPcs,
ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.Tanggal < z.Tgl
AND x.NoID <> z.NoIDH
AND y.NoID <> z.NoIDD
AND ISNULL(x.isVoid, 0) = 0
AND ISNULL(x.IsPosted, 0) = 1
AND ISNULL(y.QtyPcs, 0) <> 0
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0.00) * 1) as HBLama,

ROUND(ISNULL(a.HargaBeliPcs, 0.00), 2) * 1 AS HargaBeli,


ROUND(ISNULL(a.HargaBeliPcs, 0.00), 2) * 1 AS HBBaru,

ISNULL(b.ProvitMargin, 0.00) AS ProvitMargin,


ISNULL(b.ProvitMargin, 0.00) AS ProvitMarginA,
ISNULL(b.ProvitMarginB, 0.00) AS ProvitMarginB,
ISNULL(b.ProvitMarginC, 0.00) AS ProvitMarginC,
ISNULL(b.ProvitMarginD, 0.00) AS ProvitMarginD,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginE,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginF,
ISNULL(b.ProsenUp, 0.00) AS NewProsenUp,
ISNULL(b.HargaJual, 0.00) AS NewHargaJual,
ISNULL(b.ProsenUpA, 0.00) AS NewProsenUpA,
ISNULL(b.HargaJualA, 0.00) AS NewHargaJualA,
ISNULL(b.ProsenUpB, 0.00) AS NewProsenUpB,
ISNULL(b.HargaJualB, 0.00) AS NewHargaJualB,
ISNULL(b.ProsenUpC, 0.00) AS NewProsenUpC,
ISNULL(b.HargaJualC, 0.00) AS NewHargaJualC,
ISNULL(b.ProsenUpD, 0.00) AS NewProsenUpD,
ISNULL(b.HargaJualD, 0.00) AS NewHargaJualD,
ISNULL(b.ProsenUpE, 0.00) AS NewProsenUpE,
ISNULL(b.HargaJualE, 0.00) AS NewHargaJualE,
ISNULL(b.ProsenUpF, 0.00) AS NewProsenUpF,
ISNULL(b.HargaJualE, 0.00) AS NewHargaJualF,
ISNULL(b.ProsenUp, 0.00) AS OldProsenUp,
ISNULL(b.HargaJual, 0.00) AS OldHargaJual,
ISNULL(b.ProsenUpA, 0.00) AS OldProsenUpA,
ISNULL(b.HargaJualA, 0.00) AS OldHargaJualA,
ISNULL(b.ProsenUpB, 0.00) AS OldProsenUpB,
ISNULL(b.HargaJualB, 0.00) AS OldHargaJualB,
ISNULL(b.ProsenUpC, 0.00) AS OldProsenUpC,
ISNULL(b.HargaJualC, 0.00) AS OldHargaJualC,
ISNULL(b.ProsenUpD, 0.00) AS OldProsenUpD,
ISNULL(b.HargaJualD, 0.00) AS OldHargaJualD,
ISNULL(b.ProsenUpE, 0.00) AS OldProsenUpE,
ISNULL(b.HargaJualE, 0.00) AS OldHargaJualE,
ISNULL(b.ProsenUpF, 0.00) AS OldProsenUpF,
ISNULL(b.HargaJualE, 0.00) AS OldHargaJualF,
--c1.Kode + ' - ' + c1.Nama AS Supplier1,
--c2.Kode + ' - ' + c2.Nama AS Supplier2,
--c3.Kode + ' - ' + c3.Nama AS Supplier3,
--c4.Kode + ' - ' + c4.Nama AS Supplier4,
--c5.Kode + ' - ' + c5.Nama AS Supplier5,
CONVERT(MONEY, 0.0) AS HargaBeliDef,
'' KodeBeliDef,
1 AS QtyMin,
'' AS Catatan,
'' AS Keterangan,
CONVERT(MONEY, 0.0) - ROUND(ISNULL(a.HargaBeliPcs, 0.00) *
b.Konversi, 2) AS Selisih,
0 AS IDBeliD,

CONVERT(MONEY, 0.0) AS SaranJualByProvit,


CONVERT(MONEY, 0.0) AS SaranJualByProvitA,
CONVERT(MONEY, 0.0) AS SaranJualByProvitB,
CONVERT(MONEY, 0.0) AS SaranJualByProvitC,
CONVERT(MONEY, 0.0) AS SaranJualByProvitD,
CONVERT(MONEY, 0.0) AS SaranJualByProvitE,
CONVERT(MONEY, 0.0) AS SaranJualByProvitF
FROM MBarang(NOLOCK) a
INNER JOIN MBarangD(NOLOCK) b ON a.NoID = b.IDBarang
--LEFT JOIN MAlamat(NOLOCK) c1 ON a.IDSupplier1 = c1.NoID
--LEFT JOIN MAlamat(NOLOCK) c2 ON a.IDSupplier2 = c2.NoID
--LEFT JOIN MAlamat(NOLOCK) c3 ON a.IDSupplier3 = c3.NoID
--LEFT JOIN MAlamat(NOLOCK) c4 ON a.IDSUpplier4 = c4.NoID
--LEFT JOIN MAlamat(NOLOCK) c5 ON a.IDSupplier5 = c5.NoID
LEFT JOIN @TabelKategori d ON a.IDKategori = d.NoID
INNER JOIN MSatuan(NOLOCK) e ON b.IDSatuan = e.NoID
LEFT JOIN (
SELECT
MAX(a.NoID) as NoIDH, MAX(b.NoID) as
NoIDD, MAX(a.Tanggal) as Tgl,
b.IDBarang, b.IDBarangD
FROM MBeli (NOLOCK) a
INNER JOIN MBeliD (NOLOCK) b ON a.NoID =
b.IDBarang
WHERE b.Qty <> 0
AND CAST(a.Tanggal as DATE) <= @TglBeli
AND ISNULL(a.IsVOID, 0) = 0
GROUP BY b.IDBarang, b.IDBarangD
)z ON a.NoID = z.IDBarang
AND b.IDBarang = z.IDBarang
AND b.NoID = z.NoIDD
WHERE 1 = 1
AND (a.IDSupplier1 = @IDSupplier OR a.IDSupplier2 =
@IDSupplier OR a.IDSupplier3 = @IDSupplier OR a.IDSUpplier4 = @IDSupplier OR
a.IDSupplier5 = @IDSupplier OR ISNULL(@IDSupplier, 0) <= 0)
AND (UPPER(a.Nama) LIKE @Filter
OR UPPER(a.Kode) LIKE @Filter
OR UPPER(a.Barcode) LIKE @Filter
OR UPPER(b.Barcode) LIKE @Filter OR ISNULL(@Filter, '')
= '%%')
AND (d.ID LIKE '%' +
(
SELECT ID
FROM @TabelKategori z
WHERE z.NoID = @IDKategori
) + '%'
OR ISNULL(@IDKategori, 0) <= 0)
AND a.IsActive = 1
AND b.IsActive = 1

UNION ALL

SELECT a.NoID AS IDBarang,


b.NoID AS IDBarangD,
b.IDSatuan,
d.Nama AS Kategori,
a.Kode,
b.Barcode,
a.Nama AS Barang,
ISNULL(b.Varian, '') AS Varian,
e.Kode AS Satuan,
b.Konversi,
CAST(0 AS BIT) AS [Manual],
ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.Tanggal < z.Tgl
AND x.NoID <> z.NoIDH
AND y.NoID <> z.NoIDD
AND ISNULL(x.IsVoid, 0) = 0
AND ISNULL(x.IsPosted, 0) = 1
AND ISNULL(y.QtyPcs, 0) <> 0
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0.00) * 1) as HargaBeliPcs,
ISNULL((
SELECT
TOP 1 (ISNULL(y.DPP , 0) + ISNULL(y.PPN, 0)) / ISNULL(y.QtyPcs,
0)
FROM MBeli(nolock) x
INNER JOIN MBeliD(nolock) y ON x.NoID = y.IDBeli
WHERE y.IDBarang = b.IDBarang
AND y.IDBarangD = b.NoID
AND y.IDBarang = a.NoID
AND x.Tanggal < z.Tgl
AND x.NoID <> z.NoIDH
AND y.NoID <> z.NoIDD
AND ISNULL(x.IsVoid, 0) = 0
AND ISNULL(x.IsPosted, 0) = 1
AND ISNULL(y.QtyPcs, 0) <> 0
--AND ISNULL(x.IDCabang, 0) = ISNULL(a.IDCabang, 0)
ORDER BY CAST(x.Tanggal as DATE) Desc, x.Kode Desc),
ISNULL(a.HargaBeliPcs, 0.00) * 1) as HBLama,

ROUND(ISNULL(a.HargaBeliPcs, 0.00), 2) * 1 AS HargaBeli,


ROUND(ISNULL(a.HargaBeliPcs, 0.00), 2) * 1 AS HBBaru,
ISNULL(b.ProvitMargin, 0.00) AS ProvitMargin,
ISNULL(b.ProvitMargin, 0.00) AS ProvitMarginA,
ISNULL(b.ProvitMarginB, 0.00) AS ProvitMarginB,
ISNULL(b.ProvitMarginC, 0.00) AS ProvitMarginC,
ISNULL(b.ProvitMarginD, 0.00) AS ProvitMarginD,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginE,
ISNULL(b.ProvitMarginE, 0.00) AS ProvitMarginF,
ISNULL(aa.ProsenUp, 0.00) AS NewProsenUp,
ISNULL(aa.HargaJual, 0.00) AS NewHargaJual,
ISNULL(aa.ProsenUpA, 0.00) AS NewProsenUpA,
ISNULL(aa.HargaJualA, 0.00) AS NewHargaJualA,
ISNULL(aa.ProsenUpB, 0.00) AS NewProsenUpB,
ISNULL(aa.HargaJualB, 0.00) AS NewHargaJualB,
ISNULL(aa.ProsenUpC, 0.00) AS NewProsenUpC,
ISNULL(aa.HargaJualC, 0.00) AS NewHargaJualC,
ISNULL(aa.ProsenUpD, 0.00) AS NewProsenUpD,
ISNULL(aa.HargaJualD, 0.00) AS NewHargaJualD,
ISNULL(aa.ProsenUpE, 0.00) AS NewProsenUpE,
ISNULL(aa.HargaJualE, 0.00) AS NewHargaJualE,
ISNULL(aa.ProsenUpE, 0.00) AS NewProsenUpF,
ISNULL(aa.HargaJualE, 0.00) AS NewHargaJualF,
ISNULL(aa.ProsenUp, 0.00) AS OldProsenUp,
ISNULL(aa.HargaJual, 0.00) AS OldHargaJual,
ISNULL(aa.ProsenUpA, 0.00) AS OldProsenUpA,
ISNULL(aa.HargaJualA, 0.00) AS OldHargaJualA,
ISNULL(aa.ProsenUpB, 0.00) AS OldProsenUpB,
ISNULL(aa.HargaJualB, 0.00) AS OldHargaJualB,
ISNULL(aa.ProsenUpC, 0.00) AS OldProsenUpC,
ISNULL(aa.HargaJualC, 0.00) AS OldHargaJualC,
ISNULL(aa.ProsenUpD, 0.00) AS OldProsenUpD,
ISNULL(aa.HargaJualD, 0.00) AS OldHargaJualD,
ISNULL(aa.ProsenUpE, 0.00) AS OldProsenUpE,
ISNULL(aa.HargaJualE, 0.00) AS OldHargaJualE,
ISNULL(aa.ProsenUpE, 0.00) AS OldProsenUpF,
ISNULL(aa.HargaJualE, 0.00) AS OldHargaJualF,
--c1.Kode + ' - ' + c1.Nama AS Supplier1,
--c2.Kode + ' - ' + c2.Nama AS Supplier2,
--c3.Kode + ' - ' + c3.Nama AS Supplier3,
--c4.Kode + ' - ' + c4.Nama AS Supplier4,
--c5.Kode + ' - ' + c5.Nama AS Supplier5,
CONVERT(MONEY, 0.0) AS HargaBeliDef,
'' KodeBeliDef,
aa.Qty AS QtyMin,
'' AS Catatan,
'' AS Keterangan,
CONVERT(MONEY, 0.0) - ROUND(ISNULL(a.HargaBeliPcs, 0.00) *
b.Konversi, 2) AS Selisih,
0 AS IDBeliD,

CONVERT(MONEY, 0.0) AS SaranJualByProvit,


CONVERT(MONEY, 0.0) AS SaranJualByProvitA,
CONVERT(MONEY, 0.0) AS SaranJualByProvitB,
CONVERT(MONEY, 0.0) AS SaranJualByProvitC,
CONVERT(MONEY, 0.0) AS SaranJualByProvitD,
CONVERT(MONEY, 0.0) AS SaranJualByProvitE,
CONVERT(MONEY, 0.0) AS SaranJualByProvitF
FROM MBarangDDQty (NOLOCK) aa
INNER JOIN MBarang(NOLOCK) a ON aa.IDBarang = a.NoID
INNER JOIN MBarangD(NOLOCK) b ON a.NoID = b.IDBarang
AND aa.IDBarang = b.IDBarang
AND aa.IDBarangD = b.NoID
--LEFT JOIN MAlamat(NOLOCK) c1 ON a.IDSupplier1 = c1.NoID
--LEFT JOIN MAlamat(NOLOCK) c2 ON a.IDSupplier2 = c2.NoID
--LEFT JOIN MAlamat(NOLOCK) c3 ON a.IDSupplier3 = c3.NoID
--LEFT JOIN MAlamat(NOLOCK) c4 ON a.IDSUpplier4 = c4.NoID
--LEFT JOIN MAlamat(NOLOCK) c5 ON a.IDSupplier5 = c5.NoID
LEFT JOIN @TabelKategori d ON a.IDKategori = d.NoID
INNER JOIN MSatuan(NOLOCK) e ON b.IDSatuan = e.NoID
LEFT JOIN (
SELECT
MAX(a.NoID) as NoIDH, MAX(b.NoID) as
NoIDD, MAX(a.Tanggal) as Tgl,
b.IDBarang, b.IDBarangD
FROM MBeli (NOLOCK) a
INNER JOIN MBeliD (NOLOCK) b ON a.NoID =
b.IDBarang
WHERE b.Qty <> 0
AND CAST(a.Tanggal as DATE) <= @TglBeli
AND ISNULL(a.IsVOID, 0) = 0
GROUP BY b.IDBarang, b.IDBarangD
)z ON a.NoID = z.IDBarang
AND b.IDBarang = z.IDBarang
AND b.NoID = z.NoIDD
WHERE 1 = 1
AND (a.IDSupplier1 = @IDSupplier OR a.IDSupplier2 =
@IDSupplier OR a.IDSupplier3 = @IDSupplier OR a.IDSUpplier4 = @IDSupplier OR
a.IDSupplier5 = @IDSupplier OR ISNULL(@IDSupplier, 0) <= 0)
AND (UPPER(a.Nama) LIKE @Filter
OR UPPER(a.Kode) LIKE @Filter
OR UPPER(a.Barcode) LIKE @Filter
OR UPPER(b.Barcode) LIKE @Filter OR ISNULL(@Filter, '')
= '%%')
AND (d.ID LIKE '%' +
(
SELECT ID
FROM @TabelKategori z
WHERE z.NoID = @IDKategori
) + '%'
OR ISNULL(@IDKategori, 0) <= 0)
AND a.IsActive = 1
AND b.IsActive = 1;
END
END

You might also like