Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Laporan dari Double Entry Accounting

Dengan harapan bahwa inilah yang Anda cari, bahwa ini akan cukup:

  • hanya INSERT LedgerTransaction ... untuk setiap Transaksi Buku Besar dunia nyata

Jika Anda mencari lebih dari itu, berarti Anda membutuhkan dasar-dasar akuntansi, yang tidak dapat dijawab di sini. Periksa Tutorial gratis yang tersedia di web.

SQL • Lihat

Saya telah memutakhirkan Tampilan dari pertanyaan tertaut, untuk mendapatkan TotalCredit &TotalDebit kolom, untuk semua Transaksi sejak tanggal 1 bulan sebelumnya.

CREATE VIEW Account_Current_V 
AS
    SELECT 
        AccountNo,
        Date = DATEADD( DD, -1, GETDATE() ), -- show previous day
        ClosingBalance,
        TotalCredit = (
            -- TotalCredit_Subquery
            SELECT SUM( Amount )
                FROM AccountTransaction
                WHERE AccountNo = @AccountNo
                    AND XactTypeCode_Ext IN ( "AC", "Dp" )
                        -- this month
                    AND DateTime >= CONVERT( CHAR(6), GETDATE(), 2 ) + "01"
                ),
        TotalDebit = (
            -- TotalDebit_Subquery
            SELECT SUM( Amount )
                FROM AccountTransaction
                WHERE AccountNo = @AccountNo
                    AND XactTypeCode_Ext NOT IN ( "AC", "Dp" )
                    AND DateTime >= CONVERT( CHAR(6), GETDATE(), 2 ) + "01"
                ),
        CurrentBalance = ClosingBalance + 
            <TotalCredit_Subquery> - 
            <TotalDebit_Subquery>
        FROM AccountStatement                -- 1st day of this month
        WHERE Date = CONVERT( CHAR(6), GETDATE(), 2 ) + "01"

SQL • Akhir Bulan • Sisipkan Pernyataan Akun

Pada tanggal 1 bulan baru, idenya adalah untuk menutup bulan sebelumnya, tanggal 1 bulan baru. Kami menggunakan Tampilan di atas untuk mendapatkan TotalCredit &TotalDebit kolom untuk semua Transaksi sejak tanggal 1 bulan sebelumnya.

Ini hanya satu Tugas dalam pekerjaan Akhir Bulan, pada hari pertama setiap bulan. Biasanya akan dijalankan pada antrian batch, untuk semua Accounts , dengan batas kontrol transaksi yang tepat (mis. SET ROWCOUNT 500 ), dll.

INSERT AccountStatement 
    SELECT  AccountNo,
            -- Date: 1st day of this month
            CONVERT( CHAR(6), GETDATE(), 2 ) + "01",
            ACV.CurrentBalance,
            ACV.TotalCredit,
            ACV.TotalDebit
        FROM Account_Current_V    ACV
            JOIN AccountStatement ASS
                ON ACV.AccountNo = ASS.AccountNo
        -- AccountStatements that are not yet MonthEnd-ed
        -- get single row that is newest
        WHERE ASS.Date = (
            SELECT MAX( Date )
                FROM AccountStatement
                WHERE AccountNo = ASS.AccountNo
                )
                -- that is not 1st day of this month
            AND ASS.Date != CONVERT( CHAR(6), GETDATE(), 2 ) + "01"

Hal yang sama untuk memperbarui LedgerStatement .

Tidak. Meskipun antarmuka GUI sedang online, aplikasi dengan kompleksitas yang wajar perlu menjalankan tugas di server ujung belakang. Misalnya. Akhir bulan; Cadangan harian; Roll-up Log Transaksi; dll. Umumnya ada pengaturan di server untuk melakukan itu, jika tidak, Anda harus menulisnya.

Akan ada banyak Tugas yang terdiri dari Akhir Bulan. Ini hanyalah salah satu dari Tugas itu. Ada batasan untuk apa yang dapat Anda lakukan di PHP, dan saya tidak akan bermimpi melakukan ini di PHP. Untuk alasan teknis dan modularitas, saya akan menempatkan kode untuk Tugas itu, dan semua Tugas Akhir Bulan lainnya, dalam Account_MonthEnd_btr proc yang tersimpan .

Anda tidak dapat melakukannya dari tombol karena:

  • itu akan menutup GUI sampai Tugas Akhir Bulan selesai, yang mungkin lebih dari beberapa menit (tergantung pada jumlah Accounts , LedgerAccounts , dll).

  • itu akan meniup Log Transaksi (jika jumlah Ledgers atau Accounts sama sekali besar). Kontrol itu juga, harus ada di belakang.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO:Bagaimana cara menangani bindValue() dan kata kunci yang dicadangkan?

  2. Bagaimana saya bisa mengimpor file dump MySQL besar (14 GB) ke database MySQL baru?

  3. Django AWS RDS MySQL Error:(2026, 'Kesalahan koneksi SSL:error:00000001:lib(0):func(0):reason(1)')

  4. Bagaimana cara menyimpan bidang teks banyak bahasa di mysql dengan php?

  5. Impor dan masukkan file sql.gz ke database dengan dempul