152 lines
3.7 KiB
Markdown
152 lines
3.7 KiB
Markdown
|
|
# 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!
|