Project

General

Profile

Feature #3458 » QueryJobTulisanAllocate.sql

M Azid Wahyudi, 03/04/2025 12:28 PM

 
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;
(1-1/2)