fix(seeds): many fixes to match data needed to print

This commit is contained in:
Matthieu Haineault 2025-08-29 09:57:12 -04:00
parent 3fad532685
commit 770ed8cf64
7 changed files with 62 additions and 16 deletions

View File

@ -1,5 +1,10 @@
import { PrismaClient } from '@prisma/client';
if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)");
process.exit(0);
}
const prisma = new PrismaClient();
function daysAgo(n: number) {

View File

@ -1,5 +1,11 @@
// prisma/mock-seeds-scripts/06-customers-archive.ts
import { PrismaClient } from '@prisma/client';
if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)");
process.exit(0);
}
const prisma = new PrismaClient();
async function main() {

View File

@ -1,5 +1,10 @@
import { PrismaClient, Prisma, LeaveTypes, LeaveApprovalStatus } from '@prisma/client';
if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)");
process.exit(0);
}
const prisma = new PrismaClient();
function dateOn(y: number, m: number, d: number) {

View File

@ -1,44 +1,64 @@
import { PrismaClient, LeaveTypes, LeaveApprovalStatus, LeaveRequests } from '@prisma/client';
import { PrismaClient, LeaveApprovalStatus, LeaveRequests } from '@prisma/client';
if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)");
process.exit(0);
}
const prisma = new PrismaClient();
function daysAgo(n:number) {
function daysAgo(n: number) {
const d = new Date();
d.setUTCDate(d.getUTCDate() - n);
d.setUTCHours(0,0,0,0);
d.setUTCHours(0, 0, 0, 0);
return d;
}
async function main() {
// 1) Récupère tous les employés
const employees = await prisma.employees.findMany({ select: { id: true } });
const bankCodes = await prisma.bankCodes.findMany({ select: { id: true }, where: { categorie: 'LEAVE' } });
if (!employees.length) {
throw new Error('Aucun employé trouvé. Exécute le seed employees avant celui-ci.');
}
// 2) Va chercher les bank codes dont le type est SICK, VACATION ou HOLIDAY
const leaveCodes = await prisma.bankCodes.findMany({
where: { type: { in: ['SICK', 'VACATION'] } },
select: { id: true, type: true, bank_code: true },
});
if (!leaveCodes.length) {
throw new Error("Aucun bank code trouvé avec type in ('SICK','VACATION','HOLIDAY'). Vérifie ta table bank_codes.");
}
const types = Object.values(LeaveTypes);
const statuses = Object.values(LeaveApprovalStatus);
const created: LeaveRequests[] = [];
for (let i = 0; i < 10; i++) {
// 3) Crée quelques leave requests
const COUNT = 12;
for (let i = 0; i < COUNT; i++) {
const emp = employees[i % employees.length];
const bc = bankCodes[i % bankCodes.length];
const start = daysAgo(120 - i * 3); // tous avant aujourd'hui
const end = Math.random() < 0.4 ? null : daysAgo(119 - i * 3);
const leaveCode = leaveCodes[Math.floor(Math.random() * leaveCodes.length)];
const start = daysAgo(120 - i * 3);
const end = Math.random() < 0.6 ? daysAgo(119 - i * 3) : null;
const lr = await prisma.leaveRequests.create({
data: {
employee_id: emp.id,
bank_code_id: bc.id,
leave_type: types[i % types.length],
bank_code_id: leaveCode.id,
// on stocke le "type" tel quil est défini dans bank_codes
leave_type: leaveCode.type as any,
start_date_time: start,
end_date_time: end,
comment: `Past leave #${i+1}`,
approval_status: statuses[(i+2) % statuses.length],
comment: `Past leave #${i + 1} (${leaveCode.type})`,
approval_status: statuses[(i + 2) % statuses.length],
},
});
created.push(lr);
}
// 4) Archive
for (const lr of created) {
await prisma.leaveRequestsArchive.create({
data: {

View File

@ -1,5 +1,10 @@
import { PrismaClient } from '@prisma/client';
if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)");
process.exit(0);
}
const prisma = new PrismaClient();
function timeAt(h:number,m:number) {

View File

@ -32,7 +32,7 @@ function rndAmount(minCents: number, maxCents: number) {
async function main() {
// Codes autorisés (aléatoires à chaque dépense)
const BANKS = ['G517', 'G57', 'G502', 'G202', 'G234'] as const;
const BANKS = ['G517', 'G56', 'G502', 'G202', 'G234'] as const;
const bcRows = await prisma.bankCodes.findMany({
where: { bank_code: { in: BANKS as unknown as string[] } },
select: { id: true, bank_code: true },
@ -81,7 +81,7 @@ async function main() {
// Montant aléatoire (ranges par défaut en $ — ajuste au besoin)
// (ex.: G57 plus petit, G517 remboursement plus large)
const amount =
randomCode === 'G57'
randomCode === 'G56'
? rndAmount(1000, 7500) // 10.00..75.00
: rndAmount(2000, 25000); // 20.00..250.00 pour les autres

View File

@ -1,6 +1,11 @@
// 13-expenses-archive.ts
import { PrismaClient, Expenses } from '@prisma/client';
if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)");
process.exit(0);
}
const prisma = new PrismaClient();
function daysAgo(n:number) {