179 lines
4.7 KiB
Markdown
179 lines
4.7 KiB
Markdown
|
|
# Chart of Accounts - Current Status
|
||
|
|
|
||
|
|
**Date**: 2025-01-22
|
||
|
|
**Status**: ⏳ **Ready for Migration - Permissions Required**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Completed
|
||
|
|
|
||
|
|
1. **Chart of Accounts Service** - Implemented (`src/core/accounting/chart-of-accounts.service.ts`)
|
||
|
|
- 50+ standard accounts defined
|
||
|
|
- USGAAP and IFRS classifications
|
||
|
|
- Hierarchical account structure
|
||
|
|
- CRUD operations
|
||
|
|
|
||
|
|
2. **API Routes** - Created (`src/core/accounting/chart-of-accounts.routes.ts`)
|
||
|
|
- 9 RESTful endpoints
|
||
|
|
|
||
|
|
3. **Database Schema** - Added to Prisma
|
||
|
|
- `ChartOfAccount` model defined
|
||
|
|
- Migration script ready
|
||
|
|
|
||
|
|
4. **Initialization Script** - Created (`scripts/initialize-chart-of-accounts.ts`)
|
||
|
|
|
||
|
|
5. **Migration Script** - Created (`scripts/run-chart-of-accounts-migration.sh`)
|
||
|
|
- Handles Prisma client generation
|
||
|
|
- Creates and applies migration
|
||
|
|
- Initializes accounts
|
||
|
|
|
||
|
|
6. **Database Connection** - Fixed
|
||
|
|
- ✅ IP address corrected: `192.168.11.105:5432`
|
||
|
|
- ✅ Connection string format validated
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ⏳ Pending
|
||
|
|
|
||
|
|
### Database Permissions
|
||
|
|
|
||
|
|
The `dbis` user needs permissions on the `dbis_core` database.
|
||
|
|
|
||
|
|
**Error**: `P1010: User 'dbis' was denied access on the database 'dbis_core.public'`
|
||
|
|
|
||
|
|
**Solution**: Grant permissions using one of these methods:
|
||
|
|
|
||
|
|
#### Option 1: Automated Script (From Proxmox Host)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# On Proxmox host (192.168.11.10)
|
||
|
|
cd /root/proxmox/dbis_core
|
||
|
|
./scripts/grant-database-permissions.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Option 2: Manual Commands (From Proxmox Host)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# SSH to Proxmox host
|
||
|
|
ssh root@192.168.11.10
|
||
|
|
|
||
|
|
# Execute in database container
|
||
|
|
pct exec 10100 -- bash -c "su - postgres -c \"psql -d dbis_core << 'EOF'
|
||
|
|
GRANT CONNECT ON DATABASE dbis_core TO dbis;
|
||
|
|
GRANT ALL PRIVILEGES ON DATABASE dbis_core TO dbis;
|
||
|
|
ALTER USER dbis CREATEDB;
|
||
|
|
\c dbis_core
|
||
|
|
GRANT ALL ON SCHEMA public TO dbis;
|
||
|
|
GRANT CREATE ON SCHEMA public TO dbis;
|
||
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO dbis;
|
||
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO dbis;
|
||
|
|
EOF\""
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Option 3: Interactive (Inside Container)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# SSH to Proxmox host
|
||
|
|
ssh root@192.168.11.10
|
||
|
|
|
||
|
|
# Enter database container
|
||
|
|
pct exec 10100 -- bash
|
||
|
|
|
||
|
|
# Switch to postgres user
|
||
|
|
su - postgres
|
||
|
|
|
||
|
|
# Connect to database
|
||
|
|
psql -d dbis_core
|
||
|
|
|
||
|
|
# Then run SQL commands:
|
||
|
|
GRANT CONNECT ON DATABASE dbis_core TO dbis;
|
||
|
|
GRANT ALL PRIVILEGES ON DATABASE dbis_core TO dbis;
|
||
|
|
ALTER USER dbis CREATEDB;
|
||
|
|
\c dbis_core
|
||
|
|
GRANT ALL ON SCHEMA public TO dbis;
|
||
|
|
GRANT CREATE ON SCHEMA public TO dbis;
|
||
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO dbis;
|
||
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO dbis;
|
||
|
|
\q
|
||
|
|
exit
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Next Steps
|
||
|
|
|
||
|
|
### Step 1: Grant Database Permissions
|
||
|
|
|
||
|
|
Use one of the methods above to grant permissions.
|
||
|
|
|
||
|
|
### Step 2: Run Migration
|
||
|
|
|
||
|
|
After permissions are granted, run the migration from your local machine:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /home/intlc/projects/proxmox/dbis_core
|
||
|
|
./scripts/run-chart-of-accounts-migration.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
This will:
|
||
|
|
1. ✅ Generate Prisma client (already done)
|
||
|
|
2. ⏳ Create and apply migration (needs permissions)
|
||
|
|
3. ⏳ Initialize 50+ chart of accounts (needs permissions)
|
||
|
|
|
||
|
|
### Step 3: Verify
|
||
|
|
|
||
|
|
After migration completes, verify accounts were created:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Via API (if running)
|
||
|
|
curl http://localhost:3000/api/accounting/chart-of-accounts
|
||
|
|
|
||
|
|
# Or directly in database
|
||
|
|
psql "postgresql://dbis:8cba649443f97436db43b34ab2c0e75b5cf15611bef9c099cee6fb22cc3d7771@192.168.11.105:5432/dbis_core" -c "SELECT COUNT(*) FROM chart_of_accounts;"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 Files Created
|
||
|
|
|
||
|
|
1. ✅ `src/core/accounting/chart-of-accounts.service.ts` - Service (989 lines)
|
||
|
|
2. ✅ `src/core/accounting/chart-of-accounts.routes.ts` - API routes
|
||
|
|
3. ✅ `scripts/initialize-chart-of-accounts.ts` - Initialization script
|
||
|
|
4. ✅ `scripts/run-chart-of-accounts-migration.sh` - Migration script
|
||
|
|
5. ✅ `scripts/grant-database-permissions.sh` - Permission grant script
|
||
|
|
6. ✅ `prisma/migrations/add_chart_of_accounts.sql` - SQL migration
|
||
|
|
7. ✅ Prisma schema updated with `ChartOfAccount` model
|
||
|
|
8. ✅ Documentation files
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔧 Configuration
|
||
|
|
|
||
|
|
- **Database Host**: `192.168.11.105`
|
||
|
|
- **Database Port**: `5432`
|
||
|
|
- **Database Name**: `dbis_core`
|
||
|
|
- **Database User**: `dbis`
|
||
|
|
- **Database Password**: `8cba649443f97436db43b34ab2c0e75b5cf15611bef9c099cee6fb22cc3d7771`
|
||
|
|
- **Connection String**: `postgresql://dbis:8cba649443f97436db43b34ab2c0e75b5cf15611bef9c099cee6fb22cc3d7771@192.168.11.105:5432/dbis_core`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Summary
|
||
|
|
|
||
|
|
**What's Ready:**
|
||
|
|
- ✅ All code implemented
|
||
|
|
- ✅ Database schema defined
|
||
|
|
- ✅ Migration scripts ready
|
||
|
|
- ✅ Database connection configured
|
||
|
|
|
||
|
|
**What's Needed:**
|
||
|
|
- ⏳ Grant database permissions (5 minutes)
|
||
|
|
- ⏳ Run migration (2 minutes)
|
||
|
|
- ⏳ Verify accounts created (1 minute)
|
||
|
|
|
||
|
|
**Total Time to Complete**: ~8 minutes
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Status**: Ready to proceed once permissions are granted!
|