1
|
-- 1. Cek di table PMDMAT0004 yang stockstatusnya 0004 dan ambil seluruh data yang dibutuhkan
|
2
|
DECLARE @MaterialID VARCHAR(50), @CompanyID INT, @Warehouse VARCHAR(50), @SORDID VARCHAR(50), @Qty FLOAT, @TotalValuation FLOAT;
|
3
|
DECLARE @ChangeDate VARCHAR(14) = FORMAT(GETDATE(), 'yyyyMMddHHmmss'); -- Format tanggal sekarang sesuai yang diminta
|
4
|
DECLARE @ChangeBy VARCHAR(50) = 'System Job Allocated';
|
5
|
|
6
|
DECLARE cursor_material CURSOR FOR
|
7
|
SELECT MaterialID, CompanyID, Warehouse, SORDID, Qty, TotalValuation
|
8
|
FROM PMDMAT0004
|
9
|
WHERE StockStatus = '0004';
|
10
|
|
11
|
-- Mulai looping untuk setiap material
|
12
|
OPEN cursor_material;
|
13
|
FETCH NEXT FROM cursor_material INTO @MaterialID, @CompanyID, @Warehouse, @SORDID, @Qty, @TotalValuation;
|
14
|
|
15
|
WHILE @@FETCH_STATUS = 0
|
16
|
BEGIN
|
17
|
-- 2. Cek di PTRSALESHEADER berdasarkan SORDID
|
18
|
DECLARE @DocStatus VARCHAR(10), @ProcessStatus VARCHAR(10);
|
19
|
|
20
|
SELECT @DocStatus = DocStatus, @ProcessStatus = ProcessStatus
|
21
|
FROM PTRSALESHEADER
|
22
|
WHERE DocNo = @SORDID and DocStatus = '7';
|
23
|
|
24
|
-- 3. Update DocStatus menjadi 9 dan ProcessStatus menjadi 'C' di PTRSALESHEADER
|
25
|
UPDATE PTRSALESHEADER
|
26
|
SET DocStatus = '9', ProcessStatus = 'C', ChangeBy = @ChangeBy, ChangeDate = @ChangeDate
|
27
|
WHERE DocNo = @SORDID and DocStatus = '7';
|
28
|
|
29
|
-- 4. Update QTY dan TotalValuation pada PMDMAT0004 dengan menambahkan jumlah QTY dan TotalValuation dari StockStatus 0004 ke StockStatus 0001
|
30
|
DECLARE @ExistingQty FLOAT, @ExistingTotalValuation FLOAT;
|
31
|
|
32
|
-- Ambil data yang ada di StockStatus 0001
|
33
|
SELECT @ExistingQty = Qty, @ExistingTotalValuation = TotalValuation
|
34
|
FROM PMDMAT0004
|
35
|
WHERE MaterialID = @MaterialID AND CompanyID = @CompanyID AND Warehouse = @Warehouse AND StockStatus = '0001';
|
36
|
|
37
|
-- Hitung QTY dan TotalValuation baru
|
38
|
SET @ExistingQty = ISNULL(@ExistingQty, 0) + @Qty;
|
39
|
SET @ExistingTotalValuation = ISNULL(@ExistingTotalValuation, 0) + @TotalValuation;
|
40
|
|
41
|
-- Update data dengan jumlah baru
|
42
|
UPDATE PMDMAT0004
|
43
|
SET Qty = @ExistingQty, TotalValuation = @ExistingTotalValuation, ChangeBy = @ChangeBy, ChangeDate = @ChangeDate
|
44
|
WHERE MaterialID = @MaterialID AND CompanyID = @CompanyID AND Warehouse = @Warehouse AND StockStatus = '0001';
|
45
|
|
46
|
-- 6. Hapus data dari PMDMAT0004 yang memiliki StockStatus 0004 setelah dipindahkan ke StockStatus 0001
|
47
|
DELETE FROM PMDMAT0004
|
48
|
WHERE MaterialID = @MaterialID AND CompanyID = @CompanyID AND Warehouse = @Warehouse AND StockStatus = '0004';
|
49
|
|
50
|
-- Lanjut ke data berikutnya
|
51
|
FETCH NEXT FROM cursor_material INTO @MaterialID, @CompanyID, @Warehouse, @SORDID, @Qty, @TotalValuation;
|
52
|
END
|
53
|
|
54
|
-- Tutup cursor setelah selesai
|
55
|
CLOSE cursor_material;
|
56
|
DEALLOCATE cursor_material;
|