Kamis, 13 Januari 2011

Studi Kasus Store Procedure + Autonumber


Studi kasus 1 :
Berikut pola penomoran  reset per tahun, setiap gudang punya nomor urut sendiri (Gudang G1 dan G2)

NomorPO
TGLPO
GUDANG
KODESUPPLIER
PO-2008-G1-00001
16/09/2008
G1
S-00001
PO-2008-G1-00002
16/09/2008
G1
S-00001
PO-2008-G2-00001
17/09/2008
G2
S-00002
PO-2008-G2-00002
17/10/2008
G2
S-00002
PO-2009-G1-00001
17/10/2009
G1
S-00002
PO-2009-G2-00001
17/10/2009
G2
S-00002


Studi kasus 2 :
Berikut pola penomoran  reset per Awalan Nama Barang, Untuk Awalan Barang A nomornya adalah A001 sd A999, Awalan Barang B adalah B001 sd/ B999, dst untuk awalan lainnya.

Nama Barang
Kode Barang
Stok
Meja Biro
M001
5
Meja Makan
M002
3
Kursi Tamu
K001
2
Kursi Goyang
K002
4
Karpet
K003
3
Mantel
M003
4
Bath Tube Toto 234
B001
2

 JAWABAN !!!

1.
Create PROCEDURE SP_TambahTBPOGudang
  @TglPO datetime, @Gudang varchar(10), @KodeSupplier varchar(50)
AS
BEGIN
DECLARE @NOAKHIR INT
DECLARE @NOBaru INT
DECLARE @NomorPO varchar(20)

--1.Cari Nomor Akhir
select @NoAkhir = convert(int, Max(right(NomorPO,5)))
from tbPOGudang
where substring(NomorPO,4,4) = convert(char(4), Datepart(yyyy, @TglPO)) AND
      substring(NomorPO,9,2) = @Gudang

--2.Cari Nomor Baru
if @NoAkhir is null
  Set @Nobaru=1
else
  Set @NoBaru = @NoAkhir + 1

Set @NomorPO = 'PO-' + convert(char(4), Datepart(yyyy, @TglPO )) + '-' + @Gudang + '-' +
RIGHT('00000'+Convert(varchar, @NoBaru), 5)
--3.Insert Data baru
Insert tbPOGudang (NomorPO, TglPO, Gudang, KodeSupplier) Values (@NomorPO, @TglPO, @Gudang, @KodeSupplier)
END

EXEC SP_TambahTBPOGudang '09/10/2009','G2','S-00001'
SELECT * FROM TbPOGudang

Delete from TbPOGudang

----

2. 
CREATE PROCEDURE SP_TambahBarang
  @NamaBarang varchar (50), @stok int
AS
BEGIN
DECLARE @NOAKHIR INT
DECLARE @NOBaru INT
DECLARE @KodeBarang varchar(10)

--1.Cari Nomor Akhir
select @NoAkhir = convert(int, Max(right(KodeBarang,3)))
from Barang
where left(Namabarang,1) = left(@NamaBarang,1)

--2.Cari Nomor Baru
if @NoAkhir is null
  Set @Nobaru=1
else
  Set @NoBaru = @NoAkhir + 1

Set @KodeBarang = Left(@Namabarang, 1) + RIGHT('000'+ Convert(varchar, @NoBaru), 3)
--3.Insert Data baru
Insert Barang (KodeBarang, NamaBarang, Stok) Values (@KodeBarang, @NamaBarang, @stok)
END

EXEC SP_TambahBarang 'Bath Tube BMW', 3
SELECT * FROM Barang

Delete from Barang

Tidak ada komentar:

Posting Komentar