অধ্যায় ১৩.৪ — অনুমোদন ওয়ার্কফ্লো
১. উদ্দেশ্য
Maker-checker অনুমোদন প্যাটার্ন — travoBooks-এর সব internal control-এর foundation।
২. মূল নীতি
একই ব্যবহারকারী maker এবং checker হতে পারে না। ব্যতিক্রম নেই, threshold নির্বিশেষে।
৩. সাধারণ State Machine
৪. থ্রেশহোল্ড (default, BDT)
| অপারেশন | থ্রেশহোল্ড | অনুমোদনকারী |
|---|---|---|
| একক বুকিং | 200,000 | Supervisor |
| একক রিফান্ড | 100,000 | Supervisor |
| কাস্টমার ক্রেডিট লিমিট নতুন/বাড়ানো | 500,000 | Controller |
| সরবরাহকারী ব্যাঙ্ক বিবরণ পরিবর্তন | যেকোনো | Controller (এবং 30-min hold) |
| ম্যানুয়াল JE | 50,000 | Senior Accountant |
| Closed period reopen | যেকোনো | Controller |
| পেআউট (সরবরাহকারীকে) | 1,000,000 | Treasurer |
| পার্টনার সেটিং পরিবর্তন | যেকোনো | Partner Admin × 2 |
| Tax rule পরিবর্তন | যেকোনো | Controller |
থ্রেশহোল্ড পার্টনার-কনফিগারেবল।
৫. Approval Routing
৬. Special case: Vendor bank change
সর্বদা approval প্রয়োজন (threshold নয়):
এটি ভেন্ডর-ফ্রড ঠেকানোর crucial control।
৭. Approver রোল
প্রতিটি threshold-এর জন্য একটি required role: - Supervisor - Senior Accountant - Controller - Treasurer - Partner Admin
Role-এ একাধিক ব্যক্তি থাকতে পারে — যেকোনো একজন approve করতে পারেন।
৮. Escalation
ছয় ঘণ্টা PENDING — manager-কে escalation। যদি approver অনুপস্থিত (ছুটি, ইত্যাদি), delegate উপলব্ধ।
৯. Bulk approval
দৈনিক operational items (যেমন standard pricing change): - Bulk view: multiple items একসাথে - Per-item approval (consciousness) - Bulk reject possible
১০. Audit Trail
প্রতিটি approval: - Maker identity - Approver identity - Timestamp - Decision (approve/reject) - Reason (mandatory for reject) - Before/after diff (যদি applicable)
সব audit log-এ আছে; tamper-evident hash chain।
১১. সাধারণ ফাঁদ
- ⚠️ Maker = Checker — system catches, but org policy break
- ⚠️ Vendor bank change-এ threshold logic — সর্বদা approval
- ⚠️ Auto-approval rules যা control ভঙ্গ করে
- ⚠️ Approval ইতিহাস retention মিস