Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डबल एंट्री अकाउंटिंग से रिपोर्ट

इस आशा में कि आप यही खोज रहे हैं, कि यह पर्याप्त होगा:

  • सिर्फ INSERT LedgerTransaction ... प्रत्येक वास्तविक दुनिया के लिए लेजर लेनदेन

यदि आप इससे अधिक की तलाश कर रहे हैं, तो इसका मतलब है कि आपको लेखांकन मूल बातें चाहिए, जिसका उत्तर यहां नहीं दिया जा सकता है। वेब पर उपलब्ध निःशुल्क ट्यूटोरियल देखें।

एसक्यूएल • देखें

मैंने TotalCredit . प्राप्त करने के लिए, लिंक किए गए प्रश्न से दृश्य को अपग्रेड किया है &TotalDebit कॉलम, पिछले महीने के पहले दिन से सभी लेन-देन के लिए।

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 • MonthEnd • AccountStatement डालें

नए महीने के पहले दिन, पिछले महीने, नए महीने की पहली तारीख को बंद करने का विचार है। हम उपरोक्त दृश्य का उपयोग करते हैं जो TotalCredit . प्राप्त करने के लिए है &TotalDebit पिछले महीने के पहले दिन से सभी लेन-देन के लिए कॉलम।

महीने के पहले दिन, मंथ एंड जॉब में यह सिर्फ एक टास्क है। यह सामान्य रूप से सभी Accounts . के लिए बैच कतार में चलाया जाएगा , उचित लेनदेन नियंत्रण सीमा के साथ (उदाहरण के लिए SET ROWCOUNT 500 ), आदि।

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"

LedgerStatement . को अपडेट करने के लिए भी ऐसा ही है ।

नहीं। जबकि GUI इंटरफ़ेस ऑनलाइन है, किसी भी उचित जटिलता के ऐप को बैक एंड सर्वर पर कार्य चलाने की आवश्यकता है। उदा. महीने के आखिर में; दैनिक बैकअप; लेनदेन लॉग रोल-अप; आदि। आम तौर पर ऐसा करने के लिए सर्वर पर एक सेट अप होता है, अन्यथा आपको एक लिखना होगा।

ऐसे कई कार्य होंगे जिनमें मंथ एंड शामिल है। यह उन कार्यों में से सिर्फ एक है। PHP में आप क्या कर सकते हैं इसकी एक सीमा है, और मैं PHP में ऐसा करने का सपना नहीं देखूंगा। तकनीकी और प्रतिरूपकता कारणों से, मैं उस कार्य के लिए कोड, और अन्य सभी महीने के अंत कार्यों को एक संग्रहित खरीद में रखूंगा Account_MonthEnd_btr

आप इसे एक बटन से नहीं कर सकते क्योंकि:

  • यह माह समाप्ति कार्य समाप्त होने तक GUI को लटकाएगा, जो कुछ मिनटों से अधिक हो सकता है (Accounts की संख्या पर निर्भर करता है) , LedgerAccounts , आदि)।

  • यह लेन-देन लॉग को उड़ा देगा (यदि Ledgers या Accounts बिल्कुल बड़ा है)। वह नियंत्रण भी पिछले छोर पर होना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL और MariaDB के कई कार्यों का उपयोग करना सीखें - भाग 2

  2. स्ट्रिंग्स के लिए वर्चर या टेक्स्ट डेटा प्रकार कुछ हज़ार वर्णों तक की लंबाई के होते हैं

  3. c++ का उपयोग करके mysql से कनेक्ट करें

  4. MySql प्रदर्शन को देखता है

  5. छवि PHP कैसे अपलोड करें और MySQL में पथ कैसे डालें?