-- Author:
-- Create date: <12/02/2009>
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[SpPersedianDetail]
-- Add the parameters for the stored procedure here
(
@KODEBARANG NVARCHAR(10)
)
AS
DECLARE @ID INT, @KETERANGAN NVARCHAR(50)
DECLARE @TOTALHARGAAWAL MONEY, @TOTALHARGAMASUK MONEY, @TOTALHARGAAKHIR MONEY, @TOTALHARGATEMP MONEY
DECLARE @AKHIR INT, @HARGAAWAL MONEY, @MASUK INT, @HARGAHPP MONEY
DECLARE @KELUAR INT, @HARGAKELUAR MONEY, @TOTALHARGAKELUAR MONEY
DECLARE @SALDOAKHIR INT, @PERSEDIAAN MONEY
DECLARE @KODESEM NVARCHAR(10),@STOCKSEM INT, @HARGASEM MONEY, @TOTALSEM MONEY
BEGIN
SET NOCOUNT ON;
CREATE TABLE #TEMPAWAL
(
KODEBARANG NVARCHAR(10),
HPPTEMP MONEY,
SALDOTEMP INT,
PERSEDIAANTEMP MONEY
)ON [PRIMARY]
INSERT INTO #TEMPAWAL (KODEBARANG, HPPTEMP, SALDOTEMP,PERSEDIAANTEMP)
SELECT KODEBARANG , HARGA,STOCK, TOTALHARGAAWAL FROM MSTSALDOAWAL
--SELECT * FROM #TEMPAWAL
DECLARE OPENPART CURSOR FOR
SELECT ID,KODEBARANG , KETERANGAN FROM INVENTORY WHERE KODEBARANG=@KODEBARANG
ORDER BY ID
OPEN OPENPART
CREATE TABLE #TEMP
(
ID INT,
KODEBARANG NVARCHAR(10),
KETERANGAN NVARCHAR(50),
TOTALHARGAAWAL MONEY,
MASUK INT,
TOTALHARGAMASUK MONEY,
KELUAR INT,
HARGAKELUAR MONEY,
TOTALHARGAKELUAR MONEY,
AKHIR INT,
HARGAHPP MONEY,
TOTALHARGAAKHIR MONEY
) ON [PRIMARY]
FETCH NEXT FROM OPENPART INTO @ID,@KODEBARANG,@KETERANGAN
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @TOTALHARGAAWAL=TOTALHARGAAWAL,@AKHIR=AWAL FROM INVENTORY
WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN=@KETERANGAN
SELECT @TOTALHARGAMASUK=TOTALHARGAMASUK FROM INVENTORY
WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN=@KETERANGAN
SELECT @TOTALHARGAAKHIR=TOTALHARGAAWAL FROM INVENTORY
WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN=@KETERANGAN
SELECT @AKHIR=AWAL FROM INVENTORY
WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN=@KETERANGAN
SELECT @MASUK=MASUK FROM INVENTORY
WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN=@KETERANGAN
SELECT @KELUAR=KELUAR FROM INVENTORY
WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN=@KETERANGAN
INSERT INTO #TEMP VALUES (@ID,@KODEBARANG, @KETERANGAN, @TOTALHARGAAWAL,@MASUK, @TOTALHARGAMASUK,@KELUAR,0,0, @AKHIR ,0,@TOTALHARGAAKHIR)
IF EXISTS (SELECT HARGAAWAL FROM INVENTORY WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='SALDOAWAL'))
BEGIN
SET @HARGAAWAL = (SELECT HARGAAWAL FROM INVENTORY WHERE ID=@ID AND KODEBARANG=@KODEBARANG AND KETERANGAN='SALDOAWAL')
UPDATE #TEMP
SET HARGAHPP=@HARGAAWAL
WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='SALDOAWAL')
END
IF EXISTS (SELECT ID,KODEBARANG,KETERANGAN FROM #TEMP WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='LPB'))
BEGIN
--SET @AKHIR=(SELECT SALDOTEMP FROM MSTSALDOAWAL WHERE KODEBARANG=@KODEBARANG)
SET @AKHIR=(SELECT SALDOTEMP FROM #TEMPAWAL WHERE KODEBARANG=@KODEBARANG)
SET @MASUK =(SELECT MASUK FROM #TEMP WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='LPB'))
SET @AKHIR=@AKHIR+@MASUK
--SET @TOTALHARGAAKHIR=(SELECT PERSEDIAANTEMP FROM MSTSALDOAWAL WHERE (KODEBARANG=@KODEBARANG))
SET @TOTALHARGAAKHIR=(SELECT PERSEDIAANTEMP FROM #TEMPAWAL WHERE (KODEBARANG=@KODEBARANG))
SET @TOTALHARGAMASUK =(SELECT TOTALHARGAMASUK FROM #TEMP WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='LPB'))
SET @TOTALHARGAAKHIR=@TOTALHARGAAKHIR + @TOTALHARGAMASUK
SET @HARGAHPP=@TOTALHARGAAKHIR / @AKHIR
UPDATE #TEMP
SET AKHIR=@AKHIR,TOTALHARGAAKHIR=@TOTALHARGAAKHIR, HARGAHPP=@HARGAHPP
WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='LPB')
--UPDATE MSTSALDOAWAL --PAKAI TABEL TEMPERORY UNTUK MEMBACA STOCK YANG TERAKHIR
--SET SALDOTEMP=@AKHIR
--WHERE KODEBARANG=@KODEBARANG
UPDATE #TEMPAWAL --PAKAI TABEL TEMPERORY UNTUK MEMBACA STOCK YANG TERAKHIR
SET SALDOTEMP=@AKHIR
WHERE KODEBARANG=@KODEBARANG
--UPDATE MSTSALDOAWAL --PAKAI TABEL TEMPERORY
--SET PERSEDIAANTEMP=@TOTALHARGAAKHIR
--WHERE KODEBARANG=@KODEBARANG
UPDATE #TEMPAWAL --PAKAI TABEL TEMPERORY
SET PERSEDIAANTEMP=@TOTALHARGAAKHIR
WHERE KODEBARANG=@KODEBARANG
--UPDATE MSTSALDOAWAL --PAKAI TABEL TEMPERORY
--SET HPPTEMP=@HARGAHPP
--WHERE KODEBARANG=@KODEBARANG
UPDATE #TEMPAWAL --PAKAI TABEL TEMPERORY
SET HPPTEMP=@HARGAHPP
WHERE KODEBARANG=@KODEBARANG
END
IF EXISTS (SELECT ID,KODEBARANG,KETERANGAN FROM #TEMP WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='BPB'))
BEGIN
--SET @HARGAHPP=(SELECT HPPTEMP FROM MSTSALDOAWAL WHERE KODEBARANG=@KODEBARANG)
--SET @SALDOAKHIR=(SELECT SALDOTEMP FROM MSTSALDOAWAL WHERE KODEBARANG=@KODEBARANG)
--SET @PERSEDIAAN= (SELECT PERSEDIAANTEMP FROM MSTSALDOAWAL WHERE KODEBARANG=@KODEBARANG)
SET @HARGAHPP=(SELECT HPPTEMP FROM #TEMPAWAL WHERE KODEBARANG=@KODEBARANG)
SET @SALDOAKHIR=(SELECT SALDOTEMP FROM #TEMPAWAL WHERE KODEBARANG=@KODEBARANG)
SET @PERSEDIAAN= (SELECT PERSEDIAANTEMP FROM #TEMPAWAL WHERE KODEBARANG=@KODEBARANG)
UPDATE #TEMP
SET HARGAKELUAR=@HARGAHPP,HARGAHPP=@HARGAHPP
WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='BPB')
SET @KELUAR =(SELECT KELUAR FROM #TEMP WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='BPB'))
SET @HARGAKELUAR =(SELECT HARGAKELUAR FROM #TEMP WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='BPB'))
SET @TOTALHARGAKELUAR=@KELUAR * @HARGAKELUAR
SET @AKHIR=@SALDOAKHIR-@KELUAR
SET @PERSEDIAAN=@PERSEDIAAN-@TOTALHARGAKELUAR
UPDATE #TEMP
SET TOTALHARGAKELUAR=@TOTALHARGAKELUAR, AKHIR=@AKHIR, TOTALHARGAAKHIR=@PERSEDIAAN
WHERE (ID=@ID) AND (KODEBARANG=@KODEBARANG) AND (KETERANGAN='BPB')
--UPDATE MSTSALDOAWAL --PAKAI TABEL TEMPERORY UNTUK UPDATE STOCK TERAKHIR , BACA PERSEDIAAN YANG TERAKHIR
--SET SALDOTEMP=@AKHIR
--WHERE KODEBARANG=@KODEBARANG
UPDATE #TEMPAWAL --PAKAI TABEL TEMPERORY UNTUK UPDATE STOCK TERAKHIR , BACA PERSEDIAAN YANG TERAKHIR
SET SALDOTEMP=@AKHIR
WHERE KODEBARANG=@KODEBARANG
--UPDATE MSTSALDOAWAL --PAKAI TABEL TEMPERORY UNTUK UPDATE PERSEDIAANTEMP TERAKHIR , BACA PERSEDIAAN YANG TERAKHIR
--SET PERSEDIAANTEMP=@PERSEDIAAN
--WHERE KODEBARANG=@KODEBARANG
UPDATE #TEMPAWAL --PAKAI TABEL TEMPERORY UNTUK UPDATE PERSEDIAANTEMP TERAKHIR , BACA PERSEDIAAN YANG TERAKHIR
SET PERSEDIAANTEMP=@PERSEDIAAN
WHERE KODEBARANG=@KODEBARANG
END
FETCH NEXT FROM OPENPART INTO @ID,@KODEBARANG, @KETERANGAN
END
CLOSE OPENPART
DEALLOCATE OPENPART
SELECT * FROM #TEMP --WHERE KODEBARANG=@KODEBARANG
END
Tidak ada komentar:
Posting Komentar