# ERPFlow Accounting Module — সহজ ভাষায় বিস্তারিত গাইড

Oct 11, 2026 · @Riajul Hasan

## ১. মোটামুটি পুরো ব্যাপারটা কী

ERPFlow-এর Accounting Module-এর প্রথম version-এ সবকিছু হবে হাতে হাতে। মানে একজন accountant নিজে journal লিখবে, কেউ সেটা approve করবে, তারপর post হবে। Post হওয়া data থেকেই Ledger আর সব report বানানো হবে। Sales, Payroll, Procurement বা Inventory থেকে কোনো হিসাব নিজে নিজে ঢুকবে না।

পুরো ব্যাপারটা এক নজরে:

1. প্রতিটা company-র নিজের account-এর তালিকা (Chart of Accounts) বানানো হবে।
2. শুরুর balance হাতে ঢোকানো হবে।
3. প্রতিটা লেনদেন (আয়, খরচ, টাকা দেওয়া-নেওয়া) একটা journal voucher হিসেবে লেখা হবে।
4. ঠিক করা rule অনুযায়ী কেউ সেটা approve করবে।
5. Post হলে সেটা General Ledger-এ চলে যাবে।
6. Trial Balance, লাভ-ক্ষতি (P&L), Balance Sheet আর Cash Flow সেই data থেকেই তৈরি হবে।

| বিষয় | প্রথম version-এ আছে | প্রথম version-এ নেই |
| --- | --- | --- |
| হিসাব ঢোকানো | হাতে journal, ভুল হলে reversal বা adjustment | Sales, Payroll, Inventory থেকে নিজে নিজে entry |
| Company | একাধিক company, প্রত্যেকের আলাদা account তালিকা | সব company মিলিয়ে group হিসাব |
| Approval | পুরোপুরি নিজের মতো সাজানো যায় | — |
| Report | Trial Balance, Ledger, Journal Register, P&L, Balance Sheet, Cash Flow | Group-এর একত্রিত report |
| Tax/VAT | Journal দিয়ে হাতে লেখা যাবে | VAT হিসাব, return, জমা দেওয়া |
| Currency | একটাই currency (এখনো ঠিক হয়নি কোনটা) | বিদেশি টাকায় লেনদেন |
| শুরুর balance | হাতে ঢোকাতে হবে | একসাথে import করা |

## ২. হিসাবের বেসিক কথাগুলো

পুরো system পাঁচ ধরনের account-এর ওপর দাঁড়িয়ে। কোন ধরনের account কোন report-এ যায়, এটা বুঝলেই বাকিটা সহজ।

| Account-এর ধরন | মানে কী | সাধারণত balance থাকে | কোন report-এ দেখা যায় |
| --- | --- | --- | --- |
| Asset | কোম্পানির যা আছে (হাতে নগদ, ব্যাংক, পাওনা টাকা) | Debit | Balance Sheet |
| Liability | কোম্পানির যা দেনা (দেনা, ঋণ) | Credit | Balance Sheet |
| Equity | মালিকের টাকা আর জমানো লাভ | Credit | Balance Sheet |
| Revenue | আয় | Credit | P&L |
| Expense | খরচ | Debit | P&L |

**Company।** প্রতিটা journal ঠিক একটা company-র হবে। একই group-এর company হলেও data আলাদা থাকবে।

**Chart of Accounts (CoA)।** প্রতিটা company-র নিজের account-এর তালিকা। প্রতিটা account-এর code, নাম, ধরন, কোনটার নিচে পড়ে (parent), আর চালু আছে কি না থাকে। একই company-তে code দুইবার হবে না, কিন্তু আলাদা company-তে একই code ব্যবহার করা যাবে।

**Journal বা Voucher।** একটা লেনদেনের লিখিত রেকর্ড। উপরে company, voucher নম্বর, তারিখ, বিবরণ আর কাগজপত্র থাকে। নিচে কমপক্ষে দুইটা line, প্রতিটায় একটা account আর Debit বা Credit-এর amount।

**Double-entry নিয়ম।** প্রতিটা journal-এ মোট Debit আর মোট Credit সমান হতে হবে। না মিললে system submit বা post কোনোটাই করতে দেবে না।

**General Ledger।** Post হয়ে যাওয়া line গুলো account ধরে ধরে সাজানো ইতিহাস। Draft বা approval-এর অপেক্ষায় থাকা journal এখানে আসে না।

**Fiscal year।** প্রতিটা company-র নিজের আর্থিক বছর ঠিক করা থাকবে। বছর শেষে হিসাব বন্ধ করার নিয়ম এখনো ঠিক হয়নি।

## ৩. আয় আর খরচ কোথা থেকে আসবে

প্রথম version-এ আয় আর খরচের একমাত্র উৎস হলো **user-এর হাতে লেখা journal**। Sales, Invoice, Payment, Payroll বা Procurement থেকে কোনো amount নিজে নিজে আসবে না। লেনদেন হয়ে যাওয়ার পর accountant বা অনুমতি পাওয়া কেউ Revenue বা Expense account দিয়ে entry লিখবে।

### ৩.১ কীভাবে P&L-এ গিয়ে পৌঁছায়

1. User একটা journal বানায়, যার এক line-এ Revenue বা Expense account থাকে।
2. Journal approve হয়ে post হয়।
3. Post হওয়া line টা Ledger-এ ওই account-এর নিচে বসে।
4. P&L বেছে নেওয়া সময়ের সব Revenue account থেকে মোট আয় আর Expense account থেকে মোট খরচ বের করে।
5. লাভ বা ক্ষতি = মোট আয় − মোট খরচ।

কোনো account আয়ের না খরচের, সেটা ঠিক হয় তার ধরন (type) দেখে। তাই CoA বানানোর সময় type ঠিকমতো দেওয়াটাই সবচেয়ে জরুরি।

### ৩.২ উদাহরণ

**আয়: ক্লায়েন্টের কাছ থেকে ১,০০,০০০ টাকা নগদ পাওয়া গেল:**

| Account | ধরন | Debit (৳) | Credit (৳) |
| --- | --- | --- | --- |
| Cash / Bank | Asset | 1,00,000 |  |
| Service Revenue | Revenue |  | 1,00,000 |

**আয়: Invoice দেওয়া হয়েছে কিন্তু টাকা এখনো আসেনি (accrual হলে):**

| Account | ধরন | Debit (৳) | Credit (৳) |
| --- | --- | --- | --- |
| Accounts Receivable | Asset | 1,00,000 |  |
| Service Revenue | Revenue |  | 1,00,000 |

**খরচ: অফিস ভাড়া ২৫,০০০ টাকা ব্যাংক থেকে দেওয়া হলো:**

| Account | ধরন | Debit (৳) | Credit (৳) |
| --- | --- | --- | --- |
| Office Rent | Expense | 25,000 |  |
| Cash / Bank | Asset |  | 25,000 |

**খরচ: বেতন হিসাব হলো কিন্তু এখনো দেওয়া হয়নি:**

| Account | ধরন | Debit (৳) | Credit (৳) |
| --- | --- | --- | --- |
| Salary Expense | Expense | 3,00,000 |  |
| Salary Payable | Liability |  | 3,00,000 |

দ্বিতীয় আর চতুর্থ উদাহরণে টাকা নড়েনি, তবুও P&L-এ আয় আর খরচ দেখা যাবে। এটাকে বলে accrual basis। Cash basis হলে শুধু প্রথম আর তৃতীয় ধরনের entry P&L-এ আসত। কোনটা হবে সেটা accountant না বলা পর্যন্ত ঠিক হয়নি (১০ নম্বর section দেখুন)।

### ৩.৩ ERPFlow-এর কোন module-এর লেনদেন হাতে ঢোকাতে হবে

এখন অন্য module-এর data ledger-এ যায় না। ওই module-এ যা ঘটবে, accountant-কে সেটা journal বানিয়ে হাতে ঢোকাতে হবে। পরে auto posting এলে এই তালিকাটাই কাজে লাগবে।

| ERPFlow module | কী ধরনের লেনদেন | এখন কীভাবে | সম্ভাব্য journal (Debit / Credit) | পরে কী হতে পারে |
| --- | --- | --- | --- | --- |
| Sales / Project / Contract | আয় ধরা | হাতে journal | Receivable / Revenue | আয় আর পাওনার journal নিজে নিজে |
| Customer Invoice / Payment | টাকা পাওয়া | হাতে journal | Cash-Bank / Receivable | Cash/bank-এর সাথে যোগ |
| Procurement | Supplier-এর bill আর payment | হাতে journal | Expense বা Asset / Payable, তারপর Payable / Cash-Bank | Payable আর কেনাকাটার হিসাব |
| Payroll | বেতন | হাতে journal | Salary Expense / Salary Payable | Payroll journal নিজে নিজে |
| Inventory | Stock কেনা-বেচা | হাতে journal | Inventory / Payable, COGS / Inventory | Stock-এর দাম হিসাব |
| Fixed Assets | Asset কেনা, depreciation | হাতে journal | Asset / Cash, Depreciation Expense / Accumulated Depreciation | Depreciation-এর system |
| Commissioning | Commission | হাতে journal | Commission Expense / Commission Payable | Approved commission-এর entry |

### ৩.৪ হিসাব যে ঠিক আছে সেটা বোঝা যাবে কীভাবে

- Journal-এ Reference নম্বর আর কাগজ (invoice, bill, bank slip) জুড়ে দেওয়া যাবে, তাই প্রতিটা amount কোথা থেকে এল সেটা খুঁজে পাওয়া যাবে।
- একই reference দুইবার entry হলে system ধরবে (duplicate check)।
- Approve না হলে কোনো amount P&L-এ আসবে না।
- Report থেকে Ledger, Ledger থেকে মূল journal পর্যন্ত click করে নামা যাবে।
- ERPFlow-এ এখন যেসব invoice বা payment data আছে সেগুলোকে পুরো ledger ধরে নেওয়া যাবে না। পরের ধাপে integration করার আগে আলাদা করে দেখতে হবে।

## ৪. কোন feature কীভাবে কাজ করবে

### ৪.১ Company Accounting Setup

**কাজ:** একটা company-কে accounting চালানোর জন্য তৈরি করা।

- Company বেছে নিয়ে তার আলাদা CoA বানানো হয়। প্রতিটা account-এর code, নাম, ধরন, parent আর চালু আছে কি না থাকে।
- Company-র আর্থিক বছর আর অন্য accounting setting ঠিক করা হয়।
- শুরুর balance হাতে ঢোকানো হয়। মোট Debit আর Credit না মিললে system সেটা চুপচাপ মেনে নেবে না।
- বন্ধ করে দেওয়া (inactive) account-এ নতুন entry করা যাবে না, কিন্তু আগের post হওয়া data যেমন ছিল তেমনই থাকবে।
- একজন user শুধু সেই company-র data দেখতে বা বদলাতে পারবে যেটার অনুমতি তার আছে।

### ৪.২ Journal আর Voucher

**কাজ:** সব লেনদেন ঢোকার একমাত্র রাস্তা।

- অনেক line-ওয়ালা journal লেখা যায়। উপরে company, voucher নম্বর, তারিখ, বিবরণ, reference নম্বর আর কাগজপত্র।
- প্রতিটা line-এ একটা account আর Debit বা Credit। Account অবশ্যই ওই company-র তালিকায় থাকতে হবে।
- অবস্থা: **Draft → Submitted → Approved → Posted**, অথবা **Rejected**।
- Draft থাকা পর্যন্ত বদলানো যায়। Submit করার সময় system দেখে নেয় balance মিলছে কি না আর account ঠিক আছে কি না।
- Post হয়ে গেলে আর বদলানো বা মোছা যায় না। ভুল হলে Reversal বা Adjustment দিয়ে ঠিক করতে হয় (পরের section-এ আছে)।
- একই entry দুইবার হচ্ছে কি না system দেখে, আর সবকিছুর ইতিহাস থাকে।

| অবস্থা | কে করে | এরপর কী হয় | Ledger-এ আসে? |
| --- | --- | --- | --- |
| Draft | যে বানিয়েছে | বদলানো, মোছা বা submit করা যায় | না |
| Submitted | যে বানিয়েছে (submit করার পর) | Approval-এর লাইনে যায় | না |
| Approved | Approver | Post হওয়ার অপেক্ষায় | না |
| Rejected | Approver | মন্তব্য সহ ফেরত যায়, ঠিক করে আবার পাঠাতে হয় | না |
| Posted | Post করার অনুমতি আছে এমন user | আর বদলানো যায় না | হ্যাঁ |

### ৪.৩ Approval Engine

**কাজ:** কে কী approve করবে সেটা code-এ আটকে না রেখে setting থেকে ঠিক করা।

- Rule বানানো যায় company আর লেনদেনের ধরন ধরে।
- প্রতিটা rule-এ এক বা একাধিক approval ধাপ থাকে।
- Amount-এর সীমা দেওয়া যায়। যেমন ৫০,০০০ টাকার নিচে একজন, তার ওপরে দুইজন।
- নির্দিষ্ট account বা বিভাগের জন্য নির্দিষ্ট approver ঠিক করা যায়।
- Pending, Approved আর Rejected আলাদা তালিকায় দেখা যায়।
- প্রতিটা সিদ্ধান্তের সাথে মন্তব্য, সময় আর কে করেছে সেটা থাকে।
- Submit, approve, post আর reverse করার জন্য আলাদা আলাদা অনুমতি।
- দরকার হলে এমন নিয়ম রাখা যায় যে যে journal বানিয়েছে সে নিজে approve বা post করতে পারবে না।

Journal submit করলে system দেখে ওই company আর লেনদেনের জন্য কোন rule খাটে, তারপর approver ঠিক করে। কোনো rule না মিললে কী হবে (নিজে নিজে approve, নাকি আটকে যাবে) সেটা Approval policy ঠিক হলে জানা যাবে (১০ নম্বর section)।

### ৪.৪ General Ledger

**কাজ:** একেকটা account-এ post হওয়া সব লেনদেনের পুরো ইতিহাস দেখানো।

- Account আর তারিখ দিয়ে ছেঁকে দেখা যায়।
- শুরুর balance, ওই সময়ের মোট Debit, মোট Credit আর শেষের balance দেখায়।
- যেকোনো লেনদেনে click করলে মূল journal খোলে।
- Ledger-এর মোট সবসময় post হওয়া journal-এর মোটের সাথে মিলতে হবে।

Asset আর Expense account-এর শেষের balance = শুরুর balance + Debit − Credit। Liability, Equity আর Revenue-এর বেলায় উল্টো।

### ৪.৫ Financial Reporting

- সব report শুধু post হওয়া data থেকে হয়।
- Company বেছে নিয়ে চালাতে হয়, তারিখ আর account দিয়ে ছেঁকে নেওয়া যায়।
- ঠিক হলে Excel বা PDF-এ নামানো যাবে।
- কোন report কী দেখায় তা ৯ নম্বর section-এ।

### ৪.৬ Audit আর নিয়ন্ত্রণ

- Post হওয়া লেনদেনের ইতিহাস কেউ বদলাতে পারবে না।
- তৈরি, submit, approve, reject, post, reverse, প্রতিটার সাথে কে আর কখন করেছে সেটা লেখা থাকে।
- Reversal সবসময় মূল journal-এর সাথে জোড়া থাকে।
- হিসাবের সময় বন্ধ করার নিয়ম ঠিক হলে তারপর সেটা যুক্ত হবে।

## ৫. কাজের ধাপগুলো উদাহরণ সহ

### Workflow A: হাতে লেখা journal থেকে ledger পর্যন্ত

1. **লেখা:** Company, তারিখ, account, Debit-Credit আর বিবরণ দিয়ে journal বানানো। Reference নম্বর আর কাগজ জুড়ে দেওয়া।
2. **যাচাই:** Account ওই company-র কি না, তারিখ ঠিক কি না, মোট Debit আর Credit মিলছে কি না system দেখে।
3. **Submit:** Rule অনুযায়ী system approver ঠিক করে।
4. **Approve বা Reject:** প্রতিটা ধাপে সিদ্ধান্ত আর মন্তব্য লেখা হয়। Reject হলে যে বানিয়েছে তার কাছে ফেরত যায়।
5. **Post:** Approve হওয়া journal ledger-এ বসে যায়। এখন থেকে আর বদলানো যাবে না।
6. **Report-এ দেখা:** Post হওয়া amount Trial Balance, Ledger, P&L আর Balance Sheet-এ দেখা যায়।

**উদাহরণ:** মার্চের অফিস ভাড়া ২৫,০০০ টাকা। Accountant Draft বানায় (Office Rent Debit ২৫,০০০, Bank Credit ২৫,০০০)। Submit করলে ৫০,০০০-এর নিচে বলে একজন approver লাগে। Finance manager approve করে, তারপর post হয়। P&L-এ মার্চের খরচ ২৫,০০০ বাড়ে আর Bank-এর balance ২৫,০০০ কমে।

### Workflow B: শুরুর balance বসানো

1. Company আর তার CoA ঠিক করা।
2. প্রতিটা account-এর শুরুর balance হাতে লেখা (Asset আর Expense Debit-এ, Liability, Equity আর Revenue Credit-এ)।
3. মোট Debit আর Credit মিলছে কি না দেখা। না মিললে system submit করতে দেবে না।
4. এই opening journal-ও সাধারণ approval-এর মধ্য দিয়ে যাবে।
5. Approve হলে post করা।
6. Opening Trial Balance আর Ledger মিলিয়ে দেখা।

আগের দিনের সব লেনদেন তুলে আনা এই version-এ নেই। শুধু শুরুর তারিখে যে balance ছিল সেটা ঢোকানো হবে।

### Workflow C: Cash Flow Statement

এটা ৬ নম্বর section-এ আলাদা করে বলা আছে।

### Workflow D: Post হয়ে যাওয়া ভুল ঠিক করা

1. যে journal ভুল সেটা খুঁজে বের করা।
2. অনুমতি আছে এমন user Reversal বা Adjustment শুরু করে।
3. Policy থাকলে approval-এ পাঠানো।
4. Approve হলে ঠিক করার journal post করা।
5. মূল journal আর ঠিক করার পুরো ইতিহাস থেকে যায়।

|  | Reversal | Adjustment |
| --- | --- | --- |
| কখন | পুরো entry-ই ভুল হলে | কিছুটা ভুল বা amount বদলাতে হলে |
| কী হয় | মূল journal-এর উল্টো Debit-Credit দিয়ে নতুন journal | নতুন journal দিয়ে পার্থক্যটুকু মেলানো |
| মূল journal | যেমন ছিল তেমনই, reversed চিহ্ন আর জোড়া লাগানো | যেমন ছিল তেমনই, adjusted হিসেবে জোড়া লাগানো |

**উদাহরণ:** ভাড়া ২৫,০০০-এর জায়গায় ভুল করে ২৫,০০,০০০ post হয়ে গেছে। Reversal journal-এ Bank Debit ২৫,০০,০০০ আর Office Rent Credit ২৫,০০,০০০ বসে, ফলে ভুলের প্রভাব শূন্য হয়ে যায়। তারপর ঠিক amount দিয়ে নতুন journal করা হয়। মূল ভুল entry মুছে যায় না, ইতিহাসে থেকে যায়।

## ৬. Cash Flow Statement কীভাবে হবে

Cash Flow Statement প্রথম version-এ থাকছে, কিন্তু এর হিসাবের পদ্ধতি accountant ঠিক করে না দেওয়া পর্যন্ত চূড়ান্ত করা যাবে না। নিচে যেভাবে কাজ করার সম্ভাবনা সেটা বলা হলো, এটা এখনো পাকা সিদ্ধান্ত নয়।

### ৬.১ কীসের ওপর দাঁড়িয়ে থাকে

Cash Flow-এর জন্য আলাদা কোনো data লাগে না। একই post হওয়া journal থেকেই হয়। শুধু প্রতিটা account-কে একটা cash flow ভাগে ফেলে দিতে হয়।

1. **নগদ কোনগুলো ধরা হবে ঠিক করা।** হাতে নগদ আর ব্যাংকের account কোনগুলো নগদ বলে গণ্য হবে, সেটা setting-এ ঠিক হয়।
2. **Account ভাগ করা।** প্রতিটা account-কে Operating, Investing বা Financing-এর যেকোনো একটাতে ফেলা।
3. **সময়ের journal দেখা।** যে লেনদেন নগদ account ছুঁয়েছে, তার অন্য পাশের account দেখে বোঝা যায় সেটা কোন ভাগের।
4. **Statement বানানো।** তিন ভাগ মিলিয়ে মোট নগদ কতটা বাড়ল বা কমল।
5. **মিলিয়ে দেখা।** শুরুর নগদ + মোট পরিবর্তন = শেষের নগদ। এটা ledger-এর নগদ balance-এর সাথে মিলতে হবে।

### ৬.২ তিন ভাগের উদাহরণ

| ভাগ | কী ধরনের লেনদেন | উদাহরণ account |
| --- | --- | --- |
| Operating | রোজকার ব্যবসা, P&L-এর সাথে সম্পর্কিত | Service Revenue, Office Rent, Salary, Receivable, Payable |
| Investing | Asset কেনা-বেচা | Equipment, Fixed Asset |
| Financing | মালিকের টাকা আর ঋণ | Owner Capital, Bank Loan |

### ৬.৩ Direct আর Indirect পদ্ধতি

|  | Direct | Indirect |
| --- | --- | --- |
| শুরু | সরাসরি নগদ আয় আর নগদ খরচ দেখায় | লাভ বা ক্ষতির অঙ্ক থেকে শুরু |
| হিসাব | নগদ account-এর লেনদেন ভাগ অনুযায়ী যোগ | লাভের সাথে depreciation-এর মতো নগদহীন জিনিস আর পাওনা-দেনার পরিবর্তন মেলানো |
| কী লাগে | নগদ লেনদেনের ঠিকঠাক ভাগ করা | Receivable, Payable, Inventory-র পরিবর্তনের mapping |

কোনটা হবে আর কোন accounting standard মানা হবে, সেটা accountant ঠিক করবে। Accrual basis হলে Indirect পদ্ধতিতে বেশি mapping লাগে।

### ৬.৪ কেন এখন আটকে আছে

- Accrual না cash basis, সেটা এখনো ঠিক হয়নি।
- নগদের সমতুল্য (cash equivalent) কী কী ধরা হবে, ঠিক হয়নি।
- কোন পদ্ধতিতে দেখানো হবে, ঠিক হয়নি।

এগুলো একদম শুরুর Discovery ধাপে ঠিক করে নিতে হবে। না হলে Phase 3-এ Cash Flow-এর হিসাব দাঁড়াবে না।

## ৭. একাধিক company আর কে কী করতে পারবে

একই group-এর অনেক company থাকলেও প্রতিটার accounting data পুরোপুরি আলাদা। শুধু screen-এ filter করে লুকিয়ে রাখলে চলবে না, API-তেও জোর করে আটকাতে হবে।

### ৭.১ নিয়মগুলো

- প্রতিটা journal ঠিক একটা company-র।
- Journal-এর প্রতিটা line-এ এমন account থাকবে যা ওই company-র তালিকায় আছে।
- একই company-তে account code দুইবার হবে না, কিন্তু আলাদা company-তে একই code চলবে।
- Approval rule, post করার অনুমতি আর audit ইতিহাস, সবই company ধরে।
- Group-এর সব company দেখার অনুমতি আলাদা করে দিতে হবে।
- অন্য company-র data চাইলে API সরাসরি না করে দেবে, ফাঁকা result দেখিয়ে লুকাবে না।

### ৭.২ কে কী করতে পারবে (প্রস্তাব)

নিচের role গুলো শুধু উদাহরণ। আসল role আর অনুমতি ERPFlow-এ এখন যা আছে সেটা দেখে ঠিক হবে।

| কাজ | Accountant | Finance Manager | Auditor (শুধু দেখা) | Admin |
| --- | --- | --- | --- | --- |
| Journal বানানো ও submit | হ্যাঁ | হ্যাঁ | না | ঠিক করে দেওয়া যায় |
| Approve | না | হ্যাঁ | না | ঠিক করে দেওয়া যায় |
| Post | না | হ্যাঁ | না | ঠিক করে দেওয়া যায় |
| Reverse | না | হ্যাঁ | না | ঠিক করে দেওয়া যায় |
| Report দেখা | হ্যাঁ | হ্যাঁ | হ্যাঁ | হ্যাঁ |
| Approval rule বানানো | না | না | না | হ্যাঁ |
| CoA বদলানো | না | হ্যাঁ | না | হ্যাঁ |

অনুমতি company ধরে আলাদা আলাদা দেওয়া যাবে। যেমন কেউ Company A-তে Finance Manager হলেও Company B-তে কিছুই দেখতে পাবে না।

### ৭.৩ Currency

এটা এখনো ঠিক হয়নি: পুরো group-এ একই currency হবে, নাকি প্রতিটা company-র নিজের মূল currency থাকবে। যেটাই হোক, বিদেশি টাকায় লেনদেন আর exchange rate-এর হিসাব এই version-এ নেই।

## ৮. Developer-এর জন্য: data কীভাবে সাজানো হবে

এটা একটা প্রস্তাব। ERPFlow-এর এখনকার database আর কাঠামো দেখার পর চূড়ান্ত হবে।

### ৮.১ প্রধান table

| Table | দরকারি field | কাজ |
| --- | --- | --- |
| accounting\_company\_settings | company\_id, fiscal\_year\_start, base\_currency, period\_policy | Company ধরে accounting setting |
| accounts | id, company\_id, code, name, type, parent\_id, is\_active | প্রতিটা company-র CoA |
| journals | id, company\_id, voucher\_no, date, narration, reference\_no, status, created\_by, posted\_at, reverses\_journal\_id, source\_type, source\_id | Journal-এর উপরের অংশ |
| journal\_lines | id, journal\_id, account\_id, debit, credit, line\_narration | Journal-এর line |
| journal\_attachments | journal\_id, file | কাগজপত্র |
| approval\_rules | company\_id, transaction\_type, min\_amount, max\_amount, level, approver | নিজের মতো সাজানো rule |
| approval\_actions | journal\_id, level, actor, decision, comment, timestamp | প্রতিটা সিদ্ধান্ত |
| audit\_log | company\_id, entity, entity\_id, action, actor, timestamp, before, after | বদলানো যায় না এমন ইতিহাস |

`source_type` আর `source_id` এখন ফাঁকা থাকবে। পরে Sales বা Payroll থেকে নিজে নিজে entry এলে এই দুটো দিয়ে বোঝা যাবে entry কোথা থেকে এসেছে, আর একই জিনিস থেকে দুইবার entry হওয়াও আটকানো যাবে।

### ৮.২ কোন ধাপে কী যাচাই হবে

| ধাপ | কী দেখা হবে | ব্যর্থ হলে |
| --- | --- | --- |
| Save বা Submit | Journal-এ কমপক্ষে দুইটা line | আটকে যাবে |
| Submit | মোট Debit = মোট Credit | আটকে যাবে |
| Submit | প্রতিটা line-এর account ওই company-র আর চালু | আটকে যাবে |
| Submit | প্রতি line-এ Debit বা Credit, দুটো একসাথে নয়, ঋণাত্মক নয় | আটকে যাবে |
| Submit | Reference আগে ব্যবহার হয়েছে কি না | সতর্কতা বা আটকে যাবে (নীতি অনুযায়ী) |
| Post | অবস্থা Approved আর সব approval ধাপ শেষ | আটকে যাবে |
| Post | Post করার অনুমতি আছে আর নিজের journal নিজে post করছে না (policy থাকলে) | আটকে যাবে |
| Post | তারিখ খোলা সময়ের মধ্যে (closing নিয়ম ঠিক হলে) | আটকে যাবে |

### ৮.৩ হিসাব যাতে নষ্ট না হয়

- Post একটাই database transaction-এ হবে: header-এর অবস্থা আর সব line একসাথে সফল হবে, নইলে কিছুই হবে না।
- Post হওয়া journal আর তার line বদলানো বা মোছা database স্তরেই বন্ধ থাকবে, শুধু application-এ নয়।
- Reversal একটা নতুন journal, যার `reverses_journal_id` মূল journal-কে দেখায়।
- Audit log শুধু যোগ হবে, কেউ বদলাতে পারবে না।
- Voucher নম্বর company আর আর্থিক বছর ধরে পরপর আর অনন্য হবে।

## ৯. কোন report কী দেখাবে আর data কোথা থেকে নেবে

সব report একটা company বেছে নিয়ে চলে আর শুধু **post হওয়া** line থেকে data নেয়। ঠিক হলে Excel বা PDF-এ নামানো যাবে।

| Report | কী দেখায় | Data কোথা থেকে | কী দিয়ে ছেঁকে দেখা যায় |
| --- | --- | --- | --- |
| Trial Balance | প্রতিটা account-এর শুরুর balance, Debit, Credit, শেষের balance। মোট Debit আর Credit সমান হতে হবে | Post হওয়া line, account ধরে যোগ | তারিখ, account |
| General Ledger | একটা account-এর লেনদেন, চলতি balance, journal-এ নামা | Post হওয়া line | Account, তারিখ |
| Journal Register | Voucher নম্বর, তারিখ, অবস্থা, company, account-এর তালিকা | Journal আর line | অবস্থা, তারিখ, account, voucher নম্বর |
| Profit & Loss | আয়, খরচ আর লাভ বা ক্ষতি | Revenue আর Expense account-এর post হওয়া line | সময়কাল |
| Balance Sheet | Asset, Liability, Equity | Asset, Liability, Equity account-এর শেষের balance আর চলতি সময়ের লাভ | একটা নির্দিষ্ট তারিখ |
| Cash Flow Statement | Operating, Investing, Financing-এ নগদের আসা-যাওয়া | নগদ account ছুঁয়েছে এমন post হওয়া journal আর ভাগ করার mapping | সময়কাল |
| Opening Balance Report | হাতে ঢোকানো আর post হওয়া শুরুর balance | Opening journal | Company |
| Account Summary | Account ধরে মোট আর শেষের balance | Post হওয়া line | Account group, তারিখ |
| Approval Register | Pending, Approved, Rejected, Posted-এর ইতিহাস | approval\_actions | অবস্থা, user, তারিখ |
| Audit Report | Reversal, adjustment, approval আর post-এর কাজ | audit\_log | User, কাজের ধরন, তারিখ |

### ৯.১ Report গুলো একে অপরের সাথে কীভাবে মেলে

- Trial Balance-এর Revenue আর Expense account যোগ করলে P&L-এর লাভ বা ক্ষতি আসে।
- Balance Sheet-এ Asset = Liability + Equity হতে হবে (Equity-তে চলতি লাভ ধরে)।
- Cash Flow-এর শেষের নগদ Balance Sheet-এর Cash আর Bank-এর যোগফলের সমান হতে হবে।
- Ledger-এর শেষের balance Trial Balance-এর ওই account-এর শেষের balance-এর সমান।

এই চারটা মিল দেখাই reconciliation test-এর ভিত্তি।

### ৯.২ P&L-এর নমুনা

| লাইন | কোন account থেকে | Amount (৳) |
| --- | --- | --- |
| Service Revenue | Revenue account | 1,00,000 |
| মোট আয় |  | 1,00,000 |
| Office Rent | Expense account | 25,000 |
| Salary Expense | Expense account | 3,00,000 |
| মোট খরচ |  | 3,25,000 |
| লাভ / (ক্ষতি) | আয় − খরচ | (2,25,000) |

এটা ৩ নম্বর section-এর উদাহরণ ধরে বানানো নমুনা, আসল data নয়।

## ১০. যা নেই, যা ঠিক হয়নি, আর কাজের ধাপ

### ১০.১ প্রথম version-এ যা নেই (আলাদা অনুমোদন ছাড়া হবে না)

- অন্য module থেকে নিজে নিজে entry।
- AR/AP আলাদা হিসাব, invoice বানানো, payment মেলানো, টাকা আদায় আর supplier-কে payment-এর কাজ।
- Tax হিসাব, VAT-এর কাজ, return আর সরকারি জমা। Journal দিয়ে হাতে লেখা যাবে।
- বিদেশি টাকায় লেনদেন, exchange rate-এর হিসাব, লাভ-ক্ষতি।
- Bank statement তোলা আর নিজে নিজে মেলানো।
- Fixed asset-এর তালিকা আর depreciation।
- Budget, পূর্বাভাস, উন্নত cost accounting।
- Group-এর সব company একত্র করা, company-র মধ্যকার লেনদেন বাদ দেওয়া।
- শুরুর balance একসাথে import করা।
- নিজে নিজে audit pack বা সরকারি জমার কাগজ বানানো।

### ১০.২ যা এখনো ঠিক হয়নি

এগুলো ঠিক না হওয়া পর্যন্ত requirement বলে ধরা যাবে না।

| # | বিষয় | কী ঠিক করতে হবে | কে ঠিক করবে | কী আটকে আছে |
| --- | --- | --- | --- | --- |
| A | Accounting basis | Accrual না cash, কোন standard | Client-এর accountant | P&L, Balance Sheet আর Cash Flow-এর হিসাব |
| B | Group report | Company-র আলাদা সারাংশ না পুরোপুরি একত্র করা | প্রথম version-এর পরে | Group-এর report |
| C | হিসাব বন্ধ করা | আনুষ্ঠানিকভাবে বন্ধ করা, post আটকানো, আবার খোলা, শেষে মেলানো | কাজের ধারা দেখার পর | সময় নিয়ন্ত্রণ, post-এর যাচাই |
| D | Currency | সব company-তে একই না আলাদা মূল currency | Client | Company setup, report-এর রূপ |
| E | Cash Flow-এর পদ্ধতি | Direct না indirect, নগদের সমতুল্য কী কী | Accountant | Cash Flow Statement |
| F | Approval policy | কে approver, amount-এর সীমা, একে একে না একসাথে approve, reject করার পর আবার পাঠানো, কাজ অন্যকে দেওয়া, নিজের journal নিজে approve, জরুরি অবস্থায় এড়িয়ে যাওয়া | Client-এর দায়িত্বশীলরা | Approval engine-এর setting |

### ১০.৩ কাজ কোন ধাপে হবে

| ধাপ | কী পাওয়া যাবে | পরের ধাপে যাওয়ার শর্ত |
| --- | --- | --- |
| 0. Discovery | ERPFlow-এর কাঠামো দেখা, সই করা সিদ্ধান্ত | Scope অনুমোদন |
| 1. Foundation | Company setup, আলাদা CoA, শুরুর balance | Data আর অনুমতির test পাস |
| 2. Journal engine | Journal, approval, post, reversal | হিসাবের সততার test পাস |
| 3. Ledger আর report | Ledger, Trial Balance, P&L, Balance Sheet, Cash Flow | Accountant নমুনা result দেখে ঠিক বলেছে |
| 4. নিয়ন্ত্রণ আর pilot | Audit ইতিহাস, access যাচাই, মেলানো, pilot | Client মেনে নিয়েছে |

সময় আর কত কাজ লাগবে তা Discovery শেষ হওয়ার পর ঠিক হবে। এখন কোনো তারিখের কথা দেওয়া নেই।

### ১০.৪ শুরুতে development team-কে যা দেখে নিতে হবে

1. এখনকার company আর group-এর কাঠামো, data আলাদা রাখা, এক company থেকে অন্যটায় অনুমতি।
2. এখনকার role আর approval system আবার কাজে লাগানো যায় কি না।
3. Company-র accounting setting কোথায় থাকবে।
4. Journal-এর কাঠামো, একসাথে সফল বা ব্যর্থ হওয়া, একই জিনিস দুইবার না হওয়া, audit-এর জায়গা।
5. Report-এর mapping, Cash Flow-এর ভাগ, মেলানোর test-এর উপায়।
6. শুরুর balance ঢোকানোর screen, যাচাই আর post-এর আচরণ।
7. Accountant যে নিয়ম মেনে নেবে: আর্থিক সময়, report-এর হিসাব, ভুল ঠিক করা আর হিসাব বন্ধ করা।
8. Company আলাদা থাকার test, অনুমতির test, হিসাব মেলানোর test আর ধাপে ধাপে production-এ ছাড়া।

### ১০.৫ কী প্রমাণ হলে কাজ মেনে নেওয়া হবে

| বিষয় | কী প্রমাণ হতে হবে |
| --- | --- |
| Company আলাদা থাকা | অনুমতির বাইরের company-র data কেউ দেখতে বা বদলাতে পারে না |
| আলাদা CoA | প্রতিটা company-র নিজের CoA আর account-এর যাচাই |
| Double-entry | Debit-Credit না মিললে submit বা post হয় না |
| Approval | ঠিক করা rule মানা হয়, অনুমতি ছাড়া কেউ এড়াতে পারে না |
| Post-এর সততা | শুধু approve হওয়া journal post হয়, post হওয়া entry চুপচাপ বদলানো বা মোছা যায় না |
| Reversal-এর হদিস | মূল journal থাকে আর reversal তার সাথে জোড়া |
| Ledger মেলানো | Trial Balance আর Ledger post হওয়া data-র সাথে মেলে |
| Financial statement | P&L, Balance Sheet, Cash Flow ঠিক করা mapping আর নিয়ম অনুযায়ী |
| শুরুর balance | Post-এর আগে যাচাই হয়ে মিলে যায় |
| ইতিহাস | প্রতিটা কাজে কে আর কখন করেছে লেখা থাকে |
| Scope মানা | Sales, Procurement, Payroll, Inventory থেকে নিজে নিজে entry হয় না |
| Group-এর সীমা | Company-র report চলে, group-এর একত্রিত report ধরে নেওয়া হয় না |
