edumanagerpro2/manager/scratch/fix_json_and_sql.cjs

64 lines
2.4 KiB
JavaScript

const pg = require('pg');
const pool = new pg.Pool({ connectionString: 'postgresql://edumanager:EduManager2026!Seguro@150.230.87.131:5432/edumanager' });
// Import the sync function from database.js
// Since database.js uses ES modules (import/export), we can simulate or run it,
// or write a quick sync block here to ensure the SQL table matches our corrected JSON.
async function runFix() {
try {
console.log('--- Iniciando correção dos dados ---');
// 1. Buscar o JSON legado da tabela school_data
const { rows } = await pool.query('SELECT data FROM school_data WHERE id = 1');
if (rows.length === 0) {
console.error('Tabela school_data vazia!');
await pool.end();
return;
}
const schoolData = rows[0].data;
let modifiedPaymentsCount = 0;
// 2. Corrigir os pagamentos no JSON
if (schoolData.payments && Array.isArray(schoolData.payments)) {
for (const p of schoolData.payments) {
if (p.status === 'paid' && p.amount === 190 && p.discount === 20) {
p.amount = 170;
p.valor_pago = 150;
modifiedPaymentsCount++;
}
}
}
if (modifiedPaymentsCount > 0) {
// Salvar de volta na tabela school_data
await pool.query('UPDATE school_data SET data = $1 WHERE id = 1', [JSON.stringify(schoolData)]);
console.log(`JSON corrigido: ${modifiedPaymentsCount} pagamentos atualizados de 190/170 para 170/150.`);
} else {
console.log('Nenhum pagamento pago de R$ 190 com desconto de R$ 20 encontrado no JSON.');
}
// 3. Atualizar diretamente a tabela alunos_cobrancas no SQL para refletir a correção
const sqlResult = await pool.query(
"UPDATE alunos_cobrancas SET valor = 170, amount_original = 170, valor_pago = 150 WHERE status = 'PAGO' AND discount = 20"
);
console.log(`Tabela SQL alunos_cobrancas corrigida diretamente: ${sqlResult.rowCount} linhas.`);
// 4. Exibir o estado atualizado das duas fontes para auditoria
const statusQuery = await pool.query(
`SELECT status, valor, discount, valor_pago, amount_original, count(*)
FROM alunos_cobrancas
GROUP BY status, valor, discount, valor_pago, amount_original`
);
console.log('\n--- Estado Atual no PostgreSQL (alunos_cobrancas) ---');
console.table(statusQuery.rows);
} catch (error) {
console.error('Erro ao executar correção:', error);
} finally {
await pool.end();
}
}
runFix();