chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
151
CHART_OF_ACCOUNTS_MIGRATION_INSTRUCTIONS.md
Normal file
151
CHART_OF_ACCOUNTS_MIGRATION_INSTRUCTIONS.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# Chart of Accounts - Migration Instructions
|
||||
|
||||
## ✅ Files Created
|
||||
|
||||
1. **Migration Script**: `scripts/run-chart-of-accounts-migration.sh`
|
||||
2. **Initialization Script**: `scripts/initialize-chart-of-accounts.ts`
|
||||
3. **Prisma Model**: Already added to `prisma/schema.prisma`
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Option 1: Automated Script (Recommended)
|
||||
|
||||
```bash
|
||||
cd dbis_core
|
||||
|
||||
# Set DATABASE_URL or ensure .env file exists
|
||||
export DATABASE_URL="postgresql://dbis:password@192.168.11.100:5432/dbis_core"
|
||||
|
||||
# Run the automated script
|
||||
./scripts/run-chart-of-accounts-migration.sh
|
||||
```
|
||||
|
||||
### Option 2: Manual Steps
|
||||
|
||||
```bash
|
||||
cd dbis_core
|
||||
|
||||
# 1. Set DATABASE_URL
|
||||
export DATABASE_URL="postgresql://dbis:password@192.168.11.100:5432/dbis_core"
|
||||
|
||||
# 2. Generate Prisma client
|
||||
npx prisma generate
|
||||
|
||||
# 3. Create and apply migration
|
||||
npx prisma migrate dev --name add_chart_of_accounts
|
||||
|
||||
# 4. Initialize accounts
|
||||
ts-node scripts/initialize-chart-of-accounts.ts
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Prerequisites
|
||||
|
||||
1. **Database Connection**: Ensure `DATABASE_URL` is set or exists in `.env` file
|
||||
2. **Node.js**: Node.js and npm installed
|
||||
3. **Dependencies**: Run `npm install` if not already done
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Database Connection
|
||||
|
||||
### Local Development
|
||||
|
||||
Create a `.env` file in `dbis_core/`:
|
||||
|
||||
```env
|
||||
DATABASE_URL=postgresql://user:password@localhost:5432/dbis_core
|
||||
```
|
||||
|
||||
### Production (Proxmox)
|
||||
|
||||
Based on deployment docs, the database is at:
|
||||
- **Host**: 192.168.11.100
|
||||
- **Port**: 5432
|
||||
- **Database**: dbis_core
|
||||
- **User**: dbis
|
||||
- **Password**: (from deployment docs)
|
||||
|
||||
```env
|
||||
DATABASE_URL=postgresql://dbis:8cba649443f97436db43b34ab2c0e75b5cf15611bef9c099cee6fb22cc3d7771@192.168.11.100:5432/dbis_core
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Verification
|
||||
|
||||
After running the migration and initialization:
|
||||
|
||||
```bash
|
||||
# Check accounts via API (if API is running)
|
||||
curl http://localhost:3000/api/accounting/chart-of-accounts
|
||||
|
||||
# Or check directly in database
|
||||
psql $DATABASE_URL -c "SELECT COUNT(*) FROM chart_of_accounts;"
|
||||
psql $DATABASE_URL -c "SELECT account_code, account_name, category FROM chart_of_accounts WHERE level = 1;"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Error: DATABASE_URL not found
|
||||
- Create `.env` file with `DATABASE_URL`
|
||||
- Or export it: `export DATABASE_URL="..."`
|
||||
|
||||
### Error: Migration already exists
|
||||
- If migration was partially applied, you can:
|
||||
- Reset: `npx prisma migrate reset` (⚠️ deletes data)
|
||||
- Or mark as applied: `npx prisma migrate resolve --applied add_chart_of_accounts`
|
||||
|
||||
### Error: Prisma client not generated
|
||||
- Run: `npx prisma generate`
|
||||
|
||||
### Error: TypeScript compilation
|
||||
- Install ts-node: `npm install -g ts-node` or `npm install --save-dev ts-node`
|
||||
- Or build first: `npm run build`
|
||||
|
||||
---
|
||||
|
||||
## 📊 Expected Results
|
||||
|
||||
After successful initialization:
|
||||
|
||||
- ✅ **50+ accounts** created in `chart_of_accounts` table
|
||||
- ✅ **5 main categories**: Assets, Liabilities, Equity, Revenue, Expenses
|
||||
- ✅ **All accounts** have USGAAP and IFRS classifications
|
||||
- ✅ **Hierarchical structure** with parent-child relationships
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Re-initialization
|
||||
|
||||
If you need to re-initialize (e.g., after schema changes):
|
||||
|
||||
```bash
|
||||
# Option 1: Delete and re-create (⚠️ deletes existing accounts)
|
||||
psql $DATABASE_URL -c "TRUNCATE TABLE chart_of_accounts CASCADE;"
|
||||
ts-node scripts/initialize-chart-of-accounts.ts
|
||||
|
||||
# Option 2: Use upsert (safe, updates existing)
|
||||
# The initializeChartOfAccounts() function uses upsert, so it's safe to run multiple times
|
||||
ts-node scripts/initialize-chart-of-accounts.ts
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 Next Steps
|
||||
|
||||
After migration and initialization:
|
||||
|
||||
1. **Verify accounts**: Check that all accounts were created
|
||||
2. **Test API**: Ensure API endpoints work
|
||||
3. **Link to Ledger**: Update ledger service to use chart of accounts codes
|
||||
4. **Generate Reports**: Use chart of accounts for financial statements
|
||||
|
||||
---
|
||||
|
||||
**Status**: ✅ Ready to run migration and initialization!
|
||||
Reference in New Issue
Block a user