feat : agence d'intérim sur les contrats INTERIM + renommage Types d'absence en Types de statut + colonne Absence en Statut
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
- Nouvelle entité InterimAgency (table interim_agencies, API lecture seule) - Sélecteur agence conditionnel dans les formulaires création employé et ajout contrat - Affichage "Intérim (NomAgence)" sur la liste employés et l'historique contrat - Date de fin obligatoire côté frontend pour CDD et INTERIM (aligné backend) - Renommage "Types d'absence" → "Types de statut" (sidebar, page, titre) - Renommage en-tête "Absence" → "Statut" sur les vues jour heures et conducteurs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,8 @@ export type ContractHistoryItem = {
|
||||
suspensions?: ContractSuspension[]
|
||||
isDriver?: boolean
|
||||
workDaysHours?: Record<number, number> | null
|
||||
interimAgencyId?: number | null
|
||||
interimAgencyName?: string | null
|
||||
}
|
||||
|
||||
export type Employee = {
|
||||
@@ -37,4 +39,6 @@ export type Employee = {
|
||||
displayOrder?: number
|
||||
entryDate?: string | null
|
||||
currentSuspensions?: ContractSuspension[]
|
||||
currentInterimAgencyId?: number | null
|
||||
currentInterimAgencyName?: string | null
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ export const createEmployee = async (payload: {
|
||||
contractEndDate?: string | null
|
||||
isDriverInput?: boolean
|
||||
workDaysHoursInput?: Record<number, number> | null
|
||||
interimAgencyId?: number | null
|
||||
}) => {
|
||||
const api = useApi()
|
||||
return api.post<Employee>('/employees', {
|
||||
@@ -47,7 +48,8 @@ export const createEmployee = async (payload: {
|
||||
contractStartDate: payload.contractStartDate,
|
||||
contractEndDate: payload.contractEndDate ?? null,
|
||||
isDriverInput: payload.isDriverInput ?? false,
|
||||
workDaysHoursInput: payload.workDaysHoursInput ?? null
|
||||
workDaysHoursInput: payload.workDaysHoursInput ?? null,
|
||||
interimAgencyId: payload.interimAgencyId ?? null
|
||||
}, {
|
||||
toastSuccessKey: 'success.employee.create',
|
||||
toastErrorKey: 'errors.employee.create'
|
||||
@@ -69,6 +71,7 @@ export const updateEmployee = async (
|
||||
displayOrder?: number
|
||||
isDriverInput?: boolean
|
||||
workDaysHoursInput?: Record<number, number> | null
|
||||
interimAgencyId?: number | null
|
||||
}
|
||||
) => {
|
||||
const api = useApi()
|
||||
@@ -103,6 +106,9 @@ export const updateEmployee = async (
|
||||
if (payload.workDaysHoursInput !== undefined) {
|
||||
body.workDaysHoursInput = payload.workDaysHoursInput
|
||||
}
|
||||
if (payload.interimAgencyId !== undefined) {
|
||||
body.interimAgencyId = payload.interimAgencyId
|
||||
}
|
||||
|
||||
return api.patch<Employee>(`/employees/${id}`, body, {
|
||||
toastSuccessKey: 'success.employee.update',
|
||||
|
||||
16
frontend/services/interim-agencies.ts
Normal file
16
frontend/services/interim-agencies.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { extractItems } from '~/utils/api'
|
||||
|
||||
export type InterimAgency = {
|
||||
id: number
|
||||
name: string
|
||||
}
|
||||
|
||||
export const listInterimAgencies = async (): Promise<InterimAgency[]> => {
|
||||
const api = useApi()
|
||||
const data = await api.get<InterimAgency[] | { 'hydra:member'?: InterimAgency[] }>(
|
||||
'/interim_agencies',
|
||||
{},
|
||||
{ toast: false }
|
||||
)
|
||||
return extractItems<InterimAgency>(data)
|
||||
}
|
||||
Reference in New Issue
Block a user