Arsip: Buat sistem database biar ngak bisa dibajak orang
more 19 years ago
EkoIndri
kebanyakan aku masih banyak sekali melihat orang terutaman para programmer yang membuar SP sangat gamblang dan mudah dibajak oleh orang.
sebelumnya saya ingin mengatakan klo ini tujuannya untuk keamaan bukan untuk dipelajari oleh orang banyak, tp klo pengen bisa dipelajari oleh orang banyak sih..terserah temen2....
untuk itu biasakan buat SP digroup sehingga kita bisa cukup membaca keterangan dan maksud secara detail diobjectnya saja...
sebagai contoh lihat berikut ini:
[code:1:b9a56fb4a9]
CREATE PROCEDURE sp_Kasir;1
@NilaiBiayaAngkut money,
@NilaiBiayaLain money,
@NilaiDiskon money,
@NilaiYangHarusDiBayar money,
@NilaiPiutang money,
@IDTransaksi varchar(10),
@NamaRekPenjualan varchar(75),
@TanggalBayar datetime,
@Keterangan varchar(500),
@Tunggakan money
AS
DECLARE @NomorJurnalPenjualanTerakhir numeric,
@NOJurnalPenjualan varchar(10)
SELECT @NomorJurnalPenjualanTerakhir = MAX(DISTINCT CAST(RIGHT([ID Jurnal], 8) AS numeric))
FROM BukuBesarPenjualanKeuangan
IF @NomorJurnalPenjualanTerakhir IS NULL
BEGIN
SET @NomorJurnalPenjualanTerakhir = 1
END
ELSE
BEGIN
SET @NomorJurnalPenjualanTerakhir = @NomorJurnalPenjualanTerakhir + 1
END
DECLARE @KodePenjualan varchar(5)
SELECT @KodePenjualan = [Kode Jurnal Penjualan]
FROM indikator
IF @NomorJurnalPenjualanTerakhir < 10
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'0000000' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 100
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'000000' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 1000
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'00000' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 10000
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'0000' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 100000
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'000' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 1000000
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'00' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 10000000
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan+'0' +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
ELSE IF @NomorJurnalPenjualanTerakhir < 100000000
BEGIN
SET @NOJurnalPenjualan = @KodePenjualan +CAST( @NomorJurnalPenjualanTerakhir AS varchar )
END
UPDATE Inventory
SET Inventory.Jumlah = Inventory.Jumlah - Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.Jumlah
FROM Transaksi_Daftar_BarangYangBelumDibayar_Penjualan
WHERE Inventory.[ID Barang] = Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[ID Barang]
AND [ID Transaksi] = @IDTransaksi
UPDATE Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
SET [Biaya Angkut] = @NilaiBiayaAngkut,
[Biaya Lain] = @NilaiBiayaLain,
[Total Diskon] = @NilaiDiskon,
[Bayar DP] = @NilaiYangHarusDiBayar,
Piutang = @NilaiPiutang
WHERE [ID Transaksi] = @IDTransaksi
UPDATE Card
SET Card.Piutang = Card.Piutang + @NilaiPiutang
FROM Card
INNER JOIN Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
ON card.[id card] = Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Konsumen]
WHERE Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi] = @IDTransaksi
INSERT INTO BukuBesarCicilanPenjualanInventory
(
[Tanggal Ambil],
[ID Transaksi],
[ID Jurnal],
[Tanggal Nota],
[ID Barang],
Jumlah,
Harga,
Nama,
Total,
Angsuran,
[Besar Cicilan Per Barang],
[Sub Biaya Per Angsuran],
Cicilan,
Status,
Konsumen,
Sales,
DB,
[ID Konsumen],
[ID Sales],
[ID DB],
Keterangan
)
SELECT [Tanggal Bayar Cicilan],
[ID Transaksi],
@NOJurnalPenjualan,
[Tanggal Nota],
[ID Barang],
Jumlah,
Harga,
Nama,
Total-[Biaya Per Angsuran]Jumlah,
Angsuran,
[Biaya Per Angsuran],
[Sub Biaya Per Angsuran],
Cicilan,
case cicilan
when 1 then
'Terbayar'
else
'Belum Terbayar' end,
Konsumen,
Sales,
DB,
[ID Konsumen],
[ID Sales],
[ID DB],
'Angsuran ke - '+Cast(cicilan as varchar)
FROM Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar
WHERE [ID Transaksi] = @IDTransaksi
INSERT INTO BukuBesarPenjualanInventory
(
[ID Transaksi],
[Tanggal Nota],
[ID Barang],
Jumlah,
[Harga Lama],
Nama,
[Besar Cicilan Per Barang],
Terbayar,
Konsumen,
Sales,
DB,
[ID Konsumen],
[ID Sales],
[ID DB],
[ID Jurnal],
[Tanggal Ambil],
Cicilan,
Keterangan
)
SELECT [ID Transaksi],
[Tanggal Nota],
[ID Barang],
Jumlah,
Harga,
Nama,
[Biaya Per Angsuran],
Jumlah [Biaya Per Angsuran],
Konsumen,
Sales,
DB,
[ID Konsumen],
[ID Sales],
[ID DB],
@NOJurnalPenjualan ,
[Tanggal Bayar Cicilan],
Cicilan,
(
SELECT Keterangan
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
)
FROM Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar
WHERE Cicilan = 1 AND
[ID Transaksi] = @IDTransaksi
INSERT INTO BukuBesarPembantuPiutang
(
[ID Transaksi],
[ID Jurnal],
[Tanggal Nota],
[Tanggal Bayar Cicilan],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
Cicilan,
[Bayar Cicilan],
Keterangan,
Status,
Jumlah,
[Angsuran Terbayar],
[Angsuran Jumlah],
[Angsuran Sisa],
Tunggakan,
[Sisa Tunggakan]
)
SELECT [ID Transaksi],
@NOJurnalPenjualan,
[Tanggal Nota],
[Tanggal Bayar Cicilan],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
Cicilan,
[Bayar Per Angsuran],
Keterangan,
Status,
Jumlah,
1,
(SELECT COUNT(Status)
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
GROUP BY [ID Transaksi]
HAVING [ID Transaksi] = @IDTransaksi),
(SELECT COUNT(Status)
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
GROUP BY [ID Transaksi]
HAVING [ID Transaksi] = @IDTransaksi)-1,
CASE WHEN status = 'Terbayar' THEN @Tunggakan ELSE 0 END,
CASE WHEN status = 'Terbayar' THEN @Tunggakan ELSE 0 END
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
INSERT INTO BukuBesarPenjualanKeuangan
(
[ID Transaksi],
[Tanggal Nota],
Konsumen,
Sales,
DB,
[ID Jurnal],
[Tanggal Bayar Cicilan],
[Bayar Cicilan],
[ID Konsumen],
[ID Sales],
[ID DB],
[Biaya Angkut],
[Biaya Lain],
[Total Jual],
[Total Bayar],
[Total PPN],
[Total Diskon],
[Bayar DP],
Piutang,
Cicilan,
[Cicilan ke -],
[Keterangan 2],
Tunggakan,
[Sisa Tunggakan],
[Nilai Tunggakan Yang Akan Dibayar]
)
SELECT Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Tanggal Nota],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Konsumen,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Sales,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.DB,
@NOJurnalPenjualan,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Tanggal Bayar Cicilan],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Bayar Per Angsuran],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Konsumen],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Sales],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID DB],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Biaya Angkut],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Biaya Lain],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Jual],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Bayar],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total PPN],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Diskon],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Bayar DP],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.Piutang,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Cicilan,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Keterangan,
@Keterangan,
@Tunggakan,
@Tunggakan,
@Tunggakan
FROM Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar
INNER JOIN Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
ON Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi] = Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[ID Transaksi]
INNER JOIN Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
ON Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi] = Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi]
GROUP BY Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Tanggal Nota],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Konsumen,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Sales,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.DB,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Tanggal Bayar Cicilan],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Bayar Per Angsuran],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Konsumen],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Sales],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID DB],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Biaya Angkut],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Biaya Lain],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Jual],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Bayar],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total PPN],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Diskon],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Bayar DP],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.Piutang,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Cicilan,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Keterangan
HAVING Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status = 'Terbayar' AND
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi] = @IDTransaksi
IF NOT EXISTS (SELECT FROM sysobjects WHERE id = object_id(N'[Tabel_DetailJurnalPenjualan]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar Cicilan] AS [Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB
INTO Tabel_DetailJurnalPenjualan
FROM BukuBesarPenjualanKeuangan
WHERE [ID Transaksi] = @IDTransaksi
END
ELSE
BEGIN
TRUNCATE TABLE Tabel_DetailJurnalPenjualan
INSERT INTO Tabel_DetailJurnalPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar Cicilan] AS [Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB
FROM BukuBesarPenjualanKeuangan
WHERE [ID Transaksi] = @IDTransaksi
END
INSERT INTO BukuBesarCicilanPenjualanKeuangan
(
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[ID Transaksi],
[ID Jurnal],
[Tanggal Nota],
[Tanggal Bayar Cicilan],
Cicilan,
[Bayar Per Angsuran],
Keterangan,
Status,
Jumlah
)
SELECT Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Konsumen],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Sales],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID DB],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Konsumen,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Sales,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.DB,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi],
@NOJurnalPenjualan,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Tanggal Nota],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Tanggal Bayar Cicilan],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Cicilan,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Biaya Per Angsuran] Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.jumlah,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Keterangan,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Jumlah
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
INNER JOIN Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar
ON Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[ID Transaksi] = Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi]
AND Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Cicilan = Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Cicilan
GROUP BY Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Keterangan,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Jumlah,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Konsumen,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Sales,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.DB,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Cicilan,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Biaya Per Angsuran],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.Jumlah,
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Konsumen],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Sales],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID DB],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Tanggal Nota],
Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[Tanggal Bayar Cicilan]
HAVING Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar.[ID Transaksi] = @IDTransaksi
/ Menentukan No Rekening Pembayaran /
DECLARE @NoRekPenjualan numeric
SELECT @NoRekPenjualan = [No Rekening]
FROM RekeningAkuntansi
WHERE [Nama Rekening] = @NamaRekPenjualan
/ Pemasukan Rekening Kas ke Jurnal Transaksi Penjualan /
DECLARE @KeteranganJurnalPenjualan varchar(500)
SELECT @KeteranganJurnalPenjualan = Keterangan
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit,
Keterangan
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@NoRekPenjualan AS Rekening,
@NamaRekPenjualan AS [Nama Rekening],
@NilaiYangHarusDiBayar AS Debit,
0 AS Kredit,
@KeteranganJurnalPenjualan AS Keterangan
FROM Tabel_DetailJurnalPenjualan
/ /
/ /
/ Proses Update Rekening Kas /
/ /
/ /
WHILE @NoRekPenjualan <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiYangHarusDiBayar
WHERE [No Rekening] = @NoRekPenjualan
SELECT @NoRekPenjualan = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @NoRekPenjualan
END
/ /
/ /
/ Proses Update Rekening Persediaan /
/ /
/ /
IF NOT EXISTS (SELECT FROM sysobjects WHERE id = object_id(N'[Tabel_BesarDataNilaiPersediaanYangBerkurang]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
SELECT [Rek Persediaan],
SUM(BukuBesarPenjualanInventory.Jumlah [Harga Lama]) AS total
INTO Tabel_BesarDataNilaiPersediaanYangBerkurang
FROM BukuBesarPenjualanInventory
INNER JOIN Inventory ON BukuBesarPenjualanInventory.[ID Barang] = Inventory.[ID Barang]
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [Rek Persediaan]
END
ELSE
BEGIN
TRUNCATE TABLE Tabel_BesarDataNilaiPersediaanYangBerkurang
INSERT INTO Tabel_BesarDataNilaiPersediaanYangBerkurang
(
[Rek Persediaan],
Total,
Total2
)
SELECT [Rek Persediaan],
SUM(BukuBesarPenjualanInventory.Jumlah [Harga Beli]),
SUM(BukuBesarPenjualanInventory.Jumlah Harga)
FROM BukuBesarPenjualanInventory
INNER JOIN Inventory
ON Inventory.[ID Barang] = BukuBesarPenjualanInventory.[ID Barang]
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [Rek Persediaan]
END
/ /
/ /
/ Pemasukan Rekening Persediaan ke Jurnal Transaksi Penjualan /
/ /
/ /
INSERT INTO JurnalTransaksiPenjualan
(
Debit,
Rekening,
Kredit,
[ID Jurnal],
[Nama Rekening],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
Keterangan
)
SELECT
cast('0' as Int) AS Debit,
[Rek Persediaan],
total,
[ID Jurnal],
[Nama Rekening],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@KeteranganJurnalPenjualan AS Keterangan
FROM Tabel_BesarDataNilaiPersediaanYangBerkurang
INNER JOIN RekeningAkuntansi
ON [Rek Persediaan] = [No Rekening]
CROSS JOIN Tabel_DetailJurnalPenjualan
/ /
/ /
/ UPDATE REKENING HEADER PERSEDIAAN /
/ /
/ /
DECLARE @NoRekNilaiPersediaanTotal numeric,
@NilaiPersediaanTotal money
DECLARE Cursor_TransaksiPenjualan CURSOR
FOR SELECT [Rek Persediaan],
Total
FROM Tabel_BesarDataNilaiPersediaanYangBerkurang
OPEN Cursor_TransaksiPenjualan
FETCH NEXT FROM Cursor_TransaksiPenjualan
INTO @NoRekNilaiPersediaanTotal,
@NilaiPersediaanTotal
WHILE @@FETCH_Status = 0
BEGIN
WHILE @NoRekNilaiPersediaanTotal <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo - @NilaiPersediaanTotal
WHERE [No Rekening] = @NoRekNilaiPersediaanTotal
SELECT @NoRekNilaiPersediaanTotal = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @NoRekNilaiPersediaanTotal
END
FETCH NEXT FROM Cursor_TransaksiPenjualan
INTO @NoRekNilaiPersediaanTotal,
@NilaiPersediaanTotal
END
CLOSE Cursor_TransaksiPenjualan
DEALLOCATE Cursor_TransaksiPenjualan
/ /
/ /
/ Pemasukan Rekening Ikhtisar Rugi/Laba ke Jurnal Transaksi Penjualan /
/ /
/ /
INSERT INTO JurnalTransaksiPenjualan
(
Debit,
Rekening,
Kredit,
[ID Jurnal],
[Nama Rekening],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
Keterangan
)
SELECT
cast('0' as Int) AS Debit,
9100000,
SUM(total2-Total),
[ID Jurnal],
'-->> Ikhtisar Rugi/Laba',
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@KeteranganJurnalPenjualan AS Keterangan
FROM Tabel_BesarDataNilaiPersediaanYangBerkurang
INNER JOIN RekeningAkuntansi
ON [Rek Persediaan] = [No Rekening]
CROSS JOIN Tabel_DetailJurnalPenjualan
GROUP BY Tabel_DetailJurnalPenjualan.[ID Jurnal],
Tabel_DetailJurnalPenjualan.[ID Transaksi],
Tabel_DetailJurnalPenjualan.[Tanggal Nota],
Tabel_DetailJurnalPenjualan.[Tanggal Bayar],
Tabel_DetailJurnalPenjualan.[ID Konsumen],
Tabel_DetailJurnalPenjualan.[ID Sales],
Tabel_DetailJurnalPenjualan.[ID DB],
Tabel_DetailJurnalPenjualan.Konsumen,
Tabel_DetailJurnalPenjualan.Sales,
Tabel_DetailJurnalPenjualan.DB
UPDATE RekeningAkuntansi
SET Saldo = Saldo + (SELECT SUM(Total2 - Total)
FROM Tabel_BesarDataNilaiPersediaanYangBerkurang)
WHERE RekeningAkuntansi.[No Rekening] = 9100000
/ Update Nilai Laba/Rugi /
UPDATE RekeningAkuntansi
SET Saldo = (
SELECT Saldo
FROM RekeningAkuntansi
WHERE [No Rekening] = 9100000
)
WHERE [Nama Rekening] = 'Laba/Rugi'
/ Update Rekening Akuntansi karena timbul Laba/Rugi /
DECLARE @NoRekLabaRugi Numeric,
@NilaiLabaRugi money
SELECT @NoRekLabaRugi = Master
FROM RekeningAkuntansi
WHERE [Nama Rekening] = 'Laba/Rugi'
SELECT @NilaiLabaRugi = SUM(total2-Total)
FROM Tabel_BesarDataNilaiPersediaanYangBerkurang
WHILE @NoRekLabaRugi <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiLabaRugi
WHERE [No Rekening] = @NoRekLabaRugi
SELECT @NoRekLabaRugi = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @NoRekLabaRugi
END
/ Proses Update Rekening Harga Pokok Penjualan /
IF NOT EXISTS ( SELECT
FROM dbo.sysobjects
WHERE id = object_id(N'Tabel_BesarDataNilaiHargaPokokPenjualanYangBerkurang') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
SELECT [Rek HPP],
SUM(BukuBesarPenjualanInventory.Jumlah Harga) AS total
INTO Tabel_BesarDataNilaiHargaPokokPenjualanYangBerkurang
FROM BukuBesarPenjualanInventory
INNER JOIN Inventory
ON Inventory.[ID Barang] = BukuBesarPenjualanInventory.[ID Barang]
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [Rek HPP]
END
ELSE
BEGIN
TRUNCATE TABLE Tabel_BesarDataNilaiHargaPokokPenjualanYangBerkurang
INSERT INTO Tabel_BesarDataNilaiHargaPokokPenjualanYangBerkurang
(
[Rek HPP],
Total
)
SELECT [Rek HPP],
SUM(BukuBesarPenjualanInventory.Jumlah Harga) AS total
FROM BukuBesarPenjualanInventory
INNER JOIN Inventory
ON Inventory.[ID Barang] = BukuBesarPenjualanInventory.[ID Barang]
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [Rek HPP]
END
/ Proses pemasukan Harga Pokok Penjualan ke jurnal transaksi penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit,
Keterangan
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[No Rekening],
[Nama Rekening],
Total AS Debit,
0 AS Kredit,
@KeteranganJurnalPenjualan AS Keterangan
FROM Tabel_BesarDataNilaiHargaPokokPenjualanYangBerkurang
INNER JOIN RekeningAkuntansi
ON [Rek HPP] = [No Rekening]
CROSS JOIN Tabel_DetailJurnalPenjualan
DECLARE @NilaiHPPTotal money,
@NoRekNilaiHPPTotal numeric
DECLARE Cursor_NilaiHPP CURSOR
FOR SELECT [Rek HPP],
Total
FROM Tabel_BesarDataNilaiHargaPokokPenjualanYangBerkurang
OPEN Cursor_NilaiHPP
FETCH NEXT FROM Cursor_NilaiHPP
INTO @NoRekNilaiHPPTotal,
@NilaiHPPTotal
WHILE @@FETCH_STATUS = 0
BEGIN
WHILE @NoRekNilaiHPPTotal <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiHPPTotal
WHERE [No Rekening] = @NoRekNilaiHPPTotal
SELECT @NoRekNilaiHPPTotal = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @NoRekNilaiHPPTotal
END
FETCH NEXT FROM Cursor_NilaiHPP
INTO @NoRekNilaiHPPTotal,
@NilaiHPPTotal
END
CLOSE Cursor_NilaiHPP
DEALLOCATE Cursor_NilaiHPP
/ Proses Update Rekening Pendapatan /
IF NOT EXISTS ( SELECT
FROM sysobjects
WHERE id = object_id(N'[Tabel_BesarDataNilaiPendapatanYangBerkurang]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
SELECT [Rek Pendapatan],
SUM(BukuBesarPenjualanInventory.Jumlah [Harga Lama]) AS total
INTO Tabel_BesarDataNilaiPendapatanYangBerkurang
FROM BukuBesarPenjualanInventory
INNER JOIN Inventory
ON BukuBesarPenjualanInventory.[ID Barang] = Inventory.[ID Barang]
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [Rek Pendapatan]
END
ELSE
BEGIN
DELETE FROM Tabel_BesarDataNilaiPendapatanYangBerkurang
INSERT INTO Tabel_BesarDataNilaiPendapatanYangBerkurang
(
[Rek Pendapatan],
Total
)
SELECT [Rek Pendapatan],
SUM(BukuBesarPenjualanInventory.Jumlah [Harga Lama]) AS total
FROM BukuBesarPenjualanInventory
INNER JOIN Inventory
ON BukuBesarPenjualanInventory.[ID Barang] = Inventory.[ID Barang]
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [Rek Pendapatan]
END
/ Proses pemasukan pendapatan ke jurnal transaksi penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit,
Keterangan
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[No Rekening],
[Nama Rekening],
0 AS Debit,
total AS Kredit,
@KeteranganJurnalPenjualan AS Keterangan
FROM Tabel_BesarDataNilaiPendapatanYangBerkurang
INNER JOIN RekeningAkuntansi
ON [Rek Pendapatan] = [No Rekening]
CROSS JOIN Tabel_DetailJurnalPenjualan
DECLARE @NilaiPendapatanTotal money,
@NoRekNilaiPendapatanTotal numeric
DECLARE Cursor_NilaiPendapatan CURSOR
FOR SELECT [Rek Pendapatan],
Total
FROM Tabel_BesarDataNilaiPendapatanYangBerkurang
OPEN Cursor_NilaiPendapatan
FETCH NEXT FROM Cursor_NilaiPendapatan
INTO @NoRekNilaiPendapatanTotal,
@NilaiPendapatanTotal
WHILE @@FETCH_STATUS = 0
BEGIN
WHILE @NoRekNilaiPendapatanTotal <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiPendapatanTotal
WHERE [No Rekening] = @NoRekNilaiPendapatanTotal
SELECT @NoRekNilaiPendapatanTotal = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @NoRekNilaiPendapatanTotal
END
FETCH NEXT FROM Cursor_NilaiPendapatan
INTO @NoRekNilaiPendapatanTotal,
@NilaiPendapatanTotal
END
CLOSE Cursor_NilaiPendapatan
DEALLOCATE Cursor_NilaiPendapatan
/ Proses Menentukan nilai Piutang /
DECLARE @NamaRekPiutangPenjualan varchar(50),
@RekPiutang numeric
SELECT @RekPiutang = [Rek Piutang]
FROM RekeningTransaksiPenjualan
SELECT @NilaiPiutang = Piutang
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
SELECT @NamaRekPiutangPenjualan = [Nama Rekening]
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekPiutang
/ Pemasukan Rekening Piutang ke Jurnal Transaksi Penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit,
Keterangan
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@RekPiutang AS Rekening,
@NamaRekPiutangPenjualan AS [Nama Rekening],
@NilaiPiutang AS Debit,
0 AS Kredit,
@KeteranganJurnalPenjualan AS Keterangan
FROM Tabel_DetailJurnalPenjualan
/ Proses Update Rekening Piutang /
WHILE @RekPiutang <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiPiutang
WHERE [No Rekening] = @RekPiutang
SELECT @RekPiutang = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekPiutang
END
/ Menentukan Nama Rekening Pajak dan Nomor Rekeningnya /
DECLARE @NilaiPajak money,
@NamaRekPajak varchar(50),
@RekPajak numeric
SELECT @RekPajak = [Rek Pajak]
FROM RekeningTransaksiPenjualan
SELECT @NilaiPajak = [Total PPN]
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
SELECT @NamaRekPajak = [Nama Rekening]
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekPajak
/ Pemasukan Rekening Pajak ke Jurnal Transaksi Penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@RekPajak AS Rekening,
@NamaRekPajak AS [Nama Rekening],
0 AS Debit,
@NilaiPajak AS Kredit
FROM Tabel_DetailJurnalPenjualan
/ Proses Update Rekening Pajak /
WHILE @RekPajak <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiPajak
WHERE [No Rekening] = @RekPajak
SELECT @RekPajak = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekPajak
END
/ Proses menentukan nama rekening Biaya Angkut /
DECLARE @NamaRekBiayaAngkut varchar(50),
@RekBiayaAngkut numeric
SELECT @RekBiayaAngkut = [Rek Biaya Angkut]
FROM RekeningTransaksiPenjualan
SELECT @NamaRekBiayaAngkut = [Nama Rekening]
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekBiayaAngkut
/ Pemasukan Rekening Biaya Angkut ke Jurnal Transaksi Penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@RekBiayaAngkut AS Rekening,
@NamaRekBiayaAngkut AS [Nama Rekening],
0 AS Debit,
@NilaiBiayaAngkut AS Kredit
FROM Tabel_DetailJurnalPenjualan
/ Proses Update Pendapatan Biaya Angkut /
WHILE @RekBiayaAngkut <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiBiayaAngkut
WHERE [No Rekening] = @RekBiayaAngkut
SELECT @RekBiayaAngkut = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekBiayaAngkut
END
/ Proses menentukan nama rekening Biaya Lain /
DECLARE @NamaRekBiayaLain varchar(50),
@RekBiayaLain numeric
SELECT @RekBiayaLain = [Rek Biaya Lain]
FROM RekeningTransaksiPenjualan
SELECT @NamaRekBiayaLain = [Nama Rekening]
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekBiayaLain
/ Pemasukan Rekening Biaya Lain ke Jurnal Transaksi Penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@RekBiayaLain AS Rekening,
@NamaRekBiayaLain AS [Nama Rekening],
0 AS Debit,
@NilaiBiayaLain AS Kredit
FROM Tabel_DetailJurnalPenjualan
/ Proses Update Pendapatan Biaya Lain /
WHILE @RekBiayaLain <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiBiayaLain
WHERE [No Rekening] = @RekBiayaLain
SELECT @RekBiayaLain = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekBiayaLain
END
/ Proses menentukan nama rekening Diskon /
DECLARE @NamaRekDiskon varchar(50),
@RekDiskon numeric
SELECT @RekDiskon = [Rek Diskon]
FROM RekeningTransaksiPenjualan
SELECT @NamaRekDiskon = [Nama Rekening]
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekDiskon
/ Pemasukan Rekening Diskon ke Jurnal Transaksi Penjualan /
INSERT INTO JurnalTransaksiPenjualan
(
[ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
[Rekening],
[Nama Rekening],
Debit,
Kredit
)
SELECT [ID Jurnal],
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar],
[ID Konsumen],
[ID Sales],
[ID DB],
Konsumen,
Sales,
DB,
@RekDiskon AS Rekening,
@NamaRekDiskon AS [Nama Rekening],
@NilaiDiskon AS Debit,
0 AS Kredit
FROM Tabel_DetailJurnalPenjualan
/ Proses Update Biaya Diskon /
WHILE @RekDiskon <> 0
BEGIN
UPDATE RekeningAkuntansi
SET Saldo = Saldo + @NilaiDiskon
WHERE [No Rekening] = @RekDiskon
SELECT @RekDiskon = Master
FROM RekeningAkuntansi
WHERE [No Rekening] = @RekDiskon
END
INSERT INTO Transaksi_Daftar_NotaYangSudahDibayar_Penjualan
(
[ID Transaksi],
[Tanggal Nota],
[Tanggal Bayar Terakhir],
[ID Konsumen],
[ID Sales],
[ID DB],
[Biaya Angkut],
[Biaya Lain],
[Total Jual],
[Total Bayar],
[Total PPN],
[Total Diskon],
[Bayar DP],
Piutang,
Konsumen,
Sales,
DB
)
SELECT [ID Transaksi],
[Tanggal Nota],
@TanggalBayar,
[ID Konsumen],
[ID Sales],
[ID DB],
[Biaya Angkut],
[Biaya Lain],
[Total Jual],
[Total Bayar],
[Total PPN],
[Total Diskon],
[Bayar DP],
Piutang,
Konsumen,
Sales,
DB
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
DELETE FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
UPDATE Inventory
SET PO = PO - Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.Jumlah
FROM Transaksi_Daftar_BarangYangBelumDibayar_Penjualan
WHERE Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[ID Barang] = Inventory.[ID Barang] AND
[ID Transaksi] = @IDTransaksi
DELETE FROM Transaksi_Daftar_BarangYangBelumDibayar_Penjualan
WHERE [ID Transaksi] = @IDTransaksi
DELETE FROM Transaksi_DaftarRincianAngsuranGabunganBeberapaBarangPenjualanSebelumDibayar
WHERE [ID Transaksi] = @IDTransaksi
DELETE FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
GO
CREATE PROCEDURE sp_Kasir;2
AS
TRUNCATE TABLE KeteranganNoCicilanPiutang
GO
CREATE PROCEDURE sp_Kasir;3
@JenisTransaksi varchar(50),
@IDTransaksi varchar(10)
AS
IF @JenisTransaksi = 'Piutang'
BEGIN
SELECT [ID Transaksi],
[ID Konsumen] AS [ID Card],
[Tanggal Bayar Cicilan] AS [Tgl Bayar],
[Bayar Cicilan],
Keterangan,
Status,
Cicilan,
(
SELECT SUM([Bayar Cicilan])
FROM BukuBesarPembantuPiutang
WHERE Status = 'Belum Terbayar'
AND [Status 2] = 'Tidak Terpilih'
AND [ID Transaksi] = @IDTransaksi
) AS Total,
(
SELECT SUM([Bayar Cicilan])
FROM BukuBesarPembantuPiutang
WHERE [ID Transaksi] = @IDTransaksi
) AS [Total Pembayaran],
(
SELECT SUM([Bayar Cicilan])
FROM BukuBesarPembantuPiutang
WHERE Status = 'Belum Terbayar'
AND [ID Transaksi] = @IDTransaksi
) +
(
SELECT SUM([Sisa Tunggakan])
FROM BukuBesarPenjualanKeuangan
WHERE [ID Transaksi] = @IDTransaksi
) AS Sisa
FROM BukuBesarPembantuPiutang
WHERE Status = 'Belum Terbayar'
AND [Status 2] = 'Tidak Terpilih'
AND [ID Transaksi] = @IDTransaksi
END
ELSE IF @JenisTransaksi = 'Hutang'
BEGIN
SELECT [ID Transaksi],
[ID Supplier] AS [ID Card],
[Tanggal Bayar Cicilan] AS [Tgl Bayar],
[Bayar Cicilan],
Keterangan,
Status,
Cicilan,
(
SELECT SUM([Bayar Cicilan])
FROM BukuBesarPembantuHutang
WHERE Status = 'Belum Terbayar'
AND [Status 2] = 'Tidak Terpilih'
AND [ID Transaksi] = @IDTransaksi
) AS Total,
(
SELECT SUM([Bayar Cicilan])
FROM BukuBesarPembantuHutang
WHERE [ID Transaksi] = @IDTransaksi
) AS [Total Pembayaran],
(
SELECT SUM([Bayar Cicilan])
FROM BukuBesarPembantuHutang
WHERE Status = 'Belum Terbayar'
AND [ID Transaksi] = @IDTransaksi
) +
(
SELECT SUM(Tunggakan)
FROM BukuBesarPembelianKeuangan
WHERE [ID Transaksi] = @IDTransaksi
) AS Sisa
FROM BukuBesarPembantuHutang
WHERE Status = 'Belum Terbayar'
AND [Status 2] = 'Tidak Terpilih'
AND [ID Transaksi] = @IDTransaksi
END
GO
CREATE PROCEDURE sp_Kasir;4
@JenisTransaksi varchar(50)
AS
IF @JenisTransaksi = 'Penjualan'
BEGIN
SELECT [ID Konsumen] AS [ID Card],
Konsumen AS [Nama Card],
SUM([Total Bayar]) AS [Bayar Cicilan],
'Penjualan' AS Transaksi
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
GROUP BY [ID Konsumen],
Konsumen
ORDER BY Konsumen
END
ELSE IF @JenisTransaksi = 'Pembelian'
BEGIN
SELECT [ID Supplier] AS [ID Card],
Supplier AS [Nama Card],
SUM([Total Bayar]) AS [Bayar Cicilan],
'Pembelian' AS Transaksi
FROM Transaksi_Daftar_NotaYangBelumDibayar_Pembelian
GROUP BY [ID Supplier],
Supplier
ORDER BY Supplier
END
ELSE IF @JenisTransaksi = 'Piutang'
BEGIN
SELECT [ID Konsumen] AS [ID Card],
Konsumen AS [Nama Card],
SUM([Bayar Cicilan]) AS [Bayar Cicilan],
'Piutang' AS Transaksi
FROM BukuBesarPembantuPiutang
GROUP BY [ID Konsumen],
Konsumen,
Status
HAVING Status = 'Belum Terbayar'
END
ELSE IF @JenisTransaksi = 'Hutang'
BEGIN
SELECT [ID Supplier] AS [ID Card],
Supplier AS [Nama Card],
SUM([Bayar Cicilan]) AS [Bayar Cicilan],
'Hutang' AS Transaksi
FROM BukuBesarPembantuHutang
GROUP BY [ID Supplier],
Supplier,
Status
HAVING Status = 'Belum Terbayar'
END
GO
CREATE PROCEDURE sp_Kasir;5
@JenisTransaksi varchar(50),
@IDCard varchar(10),
@Status varchar(10)
AS
IF @JenisTransaksi = 'Penjualan'
BEGIN
IF @Status = 'Kredit'
BEGIN
SELECT Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Bayar] AS [Sub Total],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Tanggal Nota] AS [Tgl Nota],
Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[Total PPN] AS Pajak,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Bayar Per Angsuran] AS [Cicilan Pertama]
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
INNER JOIN Transaksi_Daftar_BarangYangBelumDibayar_Penjualan
ON Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi] = Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[ID Transaksi]
INNER JOIN Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
ON Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi] = Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[ID Transaksi]
GROUP BY Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Bayar],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Tanggal Nota],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Konsumen],
Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[Total PPN],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Bayar Per Angsuran],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status
HAVING Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Konsumen] = @IDCard
AND Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status = 'Terbayar'
ORDER BY Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi]
END
ELSE
BEGIN
SELECT Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Bayar] AS [Sub Total],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Tanggal Nota] AS [Tgl Nota],
Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[Total PPN] AS Pajak,
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Total Persediaan] AS [Cicilan Pertama]
FROM Transaksi_Daftar_NotaYangBelumDibayar_Penjualan
INNER JOIN Transaksi_Daftar_BarangYangBelumDibayar_Penjualan
ON Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi] = Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[ID Transaksi]
INNER JOIN Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
ON Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi] = Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[ID Transaksi]
GROUP BY Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Total Bayar],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[Tanggal Nota],
Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Konsumen],
Transaksi_Daftar_BarangYangBelumDibayar_Penjualan.[Total PPN],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.[Total Persediaan],
Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status
HAVING Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Konsumen] = @IDCard
AND Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar.Status = 'Terbayar'
ORDER BY Transaksi_Daftar_NotaYangBelumDibayar_Penjualan.[ID Transaksi]
END
END
ELSE IF @JenisTransaksi = 'Pembelian'
BEGIN
IF @Status = 'Kredit'
BEGIN
SELECT Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Total Bayar] AS [Sub Total],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Tanggal Nota] AS [Tgl Nota],
Transaksi_Daftar_BarangYangBelumDibayar_Pembelian.[Total PPN] AS Pajak,
Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.[Bayar Per Angsuran] AS [Cicilan Pertama]
FROM Transaksi_Daftar_NotaYangBelumDibayar_Pembelian
INNER JOIN Transaksi_Daftar_BarangYangBelumDibayar_Pembelian
ON Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi] = Transaksi_Daftar_BarangYangBelumDibayar_Pembelian.[ID Transaksi]
INNER JOIN Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar
ON Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi] = Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.[ID Transaksi]
GROUP BY Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Total Bayar],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Tanggal Nota],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Supplier],
Transaksi_Daftar_BarangYangBelumDibayar_Pembelian.[Total PPN],
Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.Status,
Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.[Bayar Per Angsuran]
HAVING Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Supplier] = @IDCard
AND Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.Status = 'Terbayar'
ORDER BY Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi]
END
ELSE
BEGIN
SELECT Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Total Bayar] AS [Sub Total],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Tanggal Nota] AS [Tgl Nota],
Transaksi_Daftar_BarangYangBelumDibayar_Pembelian.[Total PPN] AS Pajak,
Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.[Total Persediaan] AS [Cicilan Pertama]
FROM Transaksi_Daftar_NotaYangBelumDibayar_Pembelian
INNER JOIN Transaksi_Daftar_BarangYangBelumDibayar_Pembelian
ON Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi] = Transaksi_Daftar_BarangYangBelumDibayar_Pembelian.[ID Transaksi]
INNER JOIN Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar
ON Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi] = Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.[ID Transaksi]
GROUP BY Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Total Bayar],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[Tanggal Nota],
Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Supplier],
Transaksi_Daftar_BarangYangBelumDibayar_Pembelian.[Total PPN],
Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.Status,
Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.[Total Persediaan]
HAVING Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Supplier] = @IDCard
AND Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar.Status = 'Terbayar'
ORDER BY Transaksi_Daftar_NotaYangBelumDibayar_Pembelian.[ID Transaksi]
END
END
ELSE IF @JenisTransaksi = 'Piutang'
BEGIN
SELECT [ID Transaksi],
SUM([Bayar Cicilan]) AS [Sub Total],
[Tanggal Nota] AS [Tgl Nota],
Cast('0' AS Money) AS Pajak,
Cast('0' AS Money) AS [Cicilan Pertama]
FROM BukuBesarPembantuPiutang
WHERE Status = 'Belum Terbayar'
AND [ID Konsumen] = @IDCard
GROUP BY [ID Transaksi],
[ID Konsumen],
[Tanggal Nota]
ORDER BY [ID Transaksi]
END
ELSE IF @JenisTransaksi = 'Hutang'
BEGIN
SELECT [ID Transaksi],
SUM([Bayar Cicilan]) AS [Sub Total],
[Tanggal Nota] AS [Tgl Nota],
Cast('0' AS Money) AS Pajak,
Cast('0' AS Money) AS [Cicilan Pertama]
FROM BukuBesarPembantuHutang
WHERE Status = 'Belum Terbayar'
AND [ID Supplier] = @IDCard
GROUP BY [ID Transaksi],
[ID Supplier],
[Tanggal Nota]
ORDER BY [ID Transaksi]
END
GO
CREATE PROCEDURE sp_Kasir;6
@JenisTransaksi varchar(50),
@IDTransaksi varchar(10),
@Status varchar(10)
AS
IF @JenisTransaksi = 'Penjualan'
BEGIN
IF @Status = 'Kredit'
BEGIN
SELECT [ID Transaksi],
[Tanggal Bayar Cicilan],
Cicilan,
[Bayar Per Angsuran],
Keterangan,
Status,
Jumlah,
[Total Persediaan] AS Total
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
END
ELSE IF @Status = 'Cash'
BEGIN
SELECT [ID Transaksi],
(
SELECT [Tanggal Bayar Cicilan]
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
AND Cicilan = 1
) AS [Tanggal Bayar Cicilan],
Cast('1' AS Int) AS Cicilan,
[Total Persediaan] AS [Bayar Per Angsuran],
'Angsuran ke - 1' AS Keterangan,
'Lunas' AS Status,
(
SELECT Jumlah
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
AND Cicilan = 1
) AS Jumlah,
[Total Persediaan] AS Total
FROM Transaksi_DaftarRincianAngsuranNotaPenjualanYangAkanDibayar
GROUP BY [ID Transaksi],
[Total Persediaan]
HAVING [ID Transaksi] = @IDTransaksi
END
END
ELSE IF @JenisTransaksi = 'Pembelian'
BEGIN
IF @Status = 'Kredit'
BEGIN
SELECT [ID Transaksi],
[Tanggal Bayar Cicilan],
Cicilan,
[Bayar Per Angsuran],
Keterangan,
Status,
Jumlah,
[Total Persediaan] AS Total
FROM Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
END
ELSE
BEGIN
SELECT [ID Transaksi],
(
SELECT [Tanggal Bayar Cicilan]
FROM Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
AND Cicilan = 1
) AS [Tanggal Bayar Cicilan],
Cast('1' AS Int) AS Cicilan,
[Total Persediaan] AS [Bayar Per Angsuran],
'Angsuran ke - 1' AS Keterangan,
'Lunas' AS Status,
(
SELECT Jumlah
FROM Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar
WHERE [ID Transaksi] = @IDTransaksi
AND Cicilan = 1
) AS Jumlah,
[Total Persediaan] AS Total
FROM Transaksi_DaftarRincianAngsuranNotaPembelianYangAkanDibayar
GROUP BY [ID Transaksi],
[Total Persediaan]
HAVING [ID Transaksi] = @IDTransaksi
END
END
ELSE IF @JenisTransaksi = 'Piutang'
BEGIN
SELECT [ID Transaksi],
[Tanggal Bayar Cicilan],
Cicilan,
SUM([Bayar Per Angsuran]) AS [Bayar Per Angsuran],
Keterangan,
Status,
Jumlah,
(
SELECT SUM([Bayar Per Angsuran])
FROM BukuBesarCicilanPenjualanKeuangan
WHERE Status = 'Terbayar'
AND [ID Transaksi] = @IDTransaksi
) AS Total
FROM BukuBesarCicilanPenjualanKeuangan
WHERE Status = 'Terbayar'
AND [ID Transaksi] = @IDTransaksi
GROUP BY [Tanggal Bayar Cicilan], Keterangan, Status, Jumlah, Cicilan, [ID Transaksi]
END
ELSE IF @JenisTransaksi = 'Hutang'
BEGIN
SELECT [ID Transaksi],
[Tanggal Ambil] AS [Tanggal Bayar Cicilan],
Cicilan,
SUM([Besar Cicilan Per Barang] * Jumlah) AS [Bayar Per Angsuran],
'Angsuran ke -' + CAST(Cicilan AS varchar) AS Keterangan,
Status,
COUNT([ID Barang]) AS Jumlah,
(
SELECT SUM([Bayar Per Angsuran])
FROM BukuBesarCicilanPembelianKeuangan
WHERE Status = 'Terbayar'
AND [ID Transaksi] = @IDTransaksi
) AS Total
FROM BukuBesarCicilanPembelianInventory
WHERE [ID Transaksi] = @IDTransaksi
GROUP BY [ID Transaksi],
[Tanggal Ambil],
Cicilan,
'Angsuran ke -' + CAST(Cicilan AS varchar),
Status
HAVING Status = 'Terbayar'
ORDER BY Cicilan
END
GO
[/code:1:b9a56fb4a9]
more 19 years ago
LuriDarmawan
yang ini diriku tidak sepaham.
diriku lebih suka membuat aplikasi n-Tier
dengan general client-side
dengan server-point dan bisnis-rule yang bisa akses ke sembarang DB.
dengan kondisi demikian, aplikasi menjadi tidak terpaku ke salah satu database-server saja.
cara rekan EkoIndri hanya terpaku ke salah satu db-server.
soal bajak-membajak,
tetap dipersilahkan.
sebagai penyeimbang,
buatlah TOS, SLA, LA yang sesuai untuk setial aplikasi yang dibuat.
more 19 years ago
cyber_hecker
wah gue juga setuju banget ama bung luri. gue juga lebih suka membuat program yang bisa di akses di sembarang db tanpa harus merubah banyak koding ataupun query.
kalo ada yang mau mbajak, ya silakan juga - anggap aja lagi mberi dan menularkan ilmu pada orang lain. itung-itung amal dikit lah. kekekek :P. by the way TOS, SLA, LA itu apa seh ? hik.. hik.. :P
more 19 years ago
EkoIndri
@Luri
kita beda aliran..........
beda itu wajar...
yang penting aq tidak no profile
wakakaakakk
aku cuma kasih saran buat temen2..... bukan membunuh ni thread...
status : [mode advance ON] hati2..........
@cycber
terserah loe mau ngikut siapa......
klo sumbang2 menyumbang itu aq ada cara sendiri....
aq jadi orang juga ngak pelit...........
wakakakaak
tanya aja ma rekan2 loe yang ada disini...
gw pelit ngak.........
jika loe pada sombong dan merasa sok maka gw akan pelit ma loe pade
wakakakakakak
@temen2.........
silahkan anda sesuaikan dengan kebutuhan anda....
klo bisa cari karakter loe masing2 jangan asal ikut mengikut
wakaakakakk
more 19 years ago
LuriDarmawan
perbedaan membuat semakin warna-warninya dunia maya semakin cerah.
@cyber_hecker
TOS: Terms of Service
SLA: Service Legal Agrement
LA: License Agreement
AUP: Acceptable Use Policy
more 19 years ago
saysansay
perbedaan membuat semakin warna-warninya dunia maya semakin cerah.
@EKOIndri tul sekali mas.... buat warna-warniWalah Aku jadi ingat situs terkerenz yg penuh warnawarni www.onlymovies.com wakakakakakakaka
more 19 years ago
EkoIndri
@saysansay
btw, kamu dah coba SP dengan prinsip grouping lom ???
ini akan bagus lho.....buat keamanan database kamu
more ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Buat class di Delphi untuk sebagai manager
by hendra_sir84 in Hal umum tentang Pascal Indonesia more 17 years ago - access violation dalam deplhi
by vintara in Tip n Trik Pemrograman more 13 years ago - Butuh Info Delphi SW Developer Company di Inodnesia...
by bayiayam in OOT more 16 years ago - naruh program dipojok kanan bawah
by imunk in Tip n Trik Pemrograman more 19 years ago - midas.dll?
by novlog in Hal umum tentang Pascal Indonesia more 18 years ago - algoritma penjadwalan shift gimana ya...,trims
by wahyujoe in Tip n Trik Pemrograman more 18 years ago - Penggajian PNS
by novankyoshi in Tip n Trik Pemrograman more 12 years ago - Mengaktifkan enter pada pemrograman delphi
by em_bjr in Tip n Trik Pemrograman more 16 years ago - Menggunakan EventonExit !
by jajang in Tip n Trik Pemrograman more 16 years ago - Membuat Nomor Urut Di Quick Report
by isoke in Reporting more 16 years ago