fix: Corriger types TypeScript pour globalSelectedOrgId null

- Ajouter vérification null avant isValidUUID dans tous les useState
- Ajouter vérification null dans tous les useEffect de synchronisation
- Typer explicitement payslip_id dans map
- Compléter createForm reset avec tous les champs requis
This commit is contained in:
odentas 2025-12-01 22:17:17 +01:00
parent 266eb3598a
commit 88ad651557
9 changed files with 18 additions and 15 deletions

View file

@ -316,7 +316,7 @@ export default function CotisationsMensuellesPage() {
// État local initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrgId, setSelectedOrgId] = useState<string>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : ""
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : ""
);
const handlePeriodChange = (value: Filters["period"]) => {
@ -365,7 +365,7 @@ export default function CotisationsMensuellesPage() {
// Synchronisation bidirectionnelle : global → local
useEffect(() => {
if (staffCheck?.isStaff && isValidUUID(globalSelectedOrgId)) {
if (staffCheck?.isStaff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrgId(globalSelectedOrgId);
}
}, [globalSelectedOrgId, staffCheck?.isStaff]);

View file

@ -212,7 +212,7 @@ export default function FacturationPage() {
// État local initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrgId, setSelectedOrgId] = useState<string>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : ""
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : ""
);
// Détection staff
@ -247,7 +247,7 @@ export default function FacturationPage() {
// Synchronisation bidirectionnelle : global → local
useEffect(() => {
if (meData?.is_staff && isValidUUID(globalSelectedOrgId)) {
if (meData?.is_staff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrgId(globalSelectedOrgId);
}
}, [globalSelectedOrgId, meData?.is_staff]);

View file

@ -84,7 +84,7 @@ export default function InformationsPage() {
// État local initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrgId, setSelectedOrgId] = useState<string>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : ""
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : ""
);
// Récupération dynamique des infos client via /api/me
@ -144,7 +144,7 @@ export default function InformationsPage() {
// Synchronisation bidirectionnelle : global → local
useEffect(() => {
if (meData?.is_staff && isValidUUID(globalSelectedOrgId)) {
if (meData?.is_staff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrgId(globalSelectedOrgId);
}
}, [globalSelectedOrgId, meData?.is_staff]);

View file

@ -351,7 +351,7 @@ export default function SalariesPage() {
const [orgs, setOrgs] = useState<Array<{ id: string; name: string }>>([]);
// État local initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrg, setSelectedOrg] = useState<string | null>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : null
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : null
);
const { data, isLoading, isFetching } = useSalaries(page, limit, query, selectedOrg, isDemoMode);
@ -377,7 +377,7 @@ export default function SalariesPage() {
// Synchronisation bidirectionnelle : global → local
useEffect(() => {
if (meData?.is_staff && isValidUUID(globalSelectedOrgId)) {
if (meData?.is_staff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrg(globalSelectedOrgId);
}
}, [globalSelectedOrgId, meData?.is_staff]);

View file

@ -196,7 +196,7 @@ export default function SignaturesElectroniques() {
// État pour le sélecteur d'organisation (staff uniquement)
// Initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrgId, setSelectedOrgId] = useState<string>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : ""
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : ""
);
// Référence pour le conteneur DocuSeal
@ -235,7 +235,7 @@ export default function SignaturesElectroniques() {
// Synchronisation bidirectionnelle : global → local
useEffect(() => {
if (userInfo?.isStaff && isValidUUID(globalSelectedOrgId)) {
if (userInfo?.isStaff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrgId(globalSelectedOrgId);
}
}, [globalSelectedOrgId, userInfo?.isStaff]);

View file

@ -385,7 +385,7 @@ export default function VirementsPage() {
const [copiedField, setCopiedField] = useState<null | 'iban' | 'bic' | 'benef'>(null);
// État local initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrgId, setSelectedOrgId] = useState<string>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : ""
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : ""
);
const [pdfModalOpen, setPdfModalOpen] = useState(false);
const [pdfUrl, setPdfUrl] = useState<string>("");
@ -414,7 +414,7 @@ export default function VirementsPage() {
// Synchronisation bidirectionnelle : global → local
useEffect(() => {
if (userInfo?.isStaff && isValidUUID(globalSelectedOrgId)) {
if (userInfo?.isStaff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrgId(globalSelectedOrgId);
}
}, [globalSelectedOrgId, userInfo?.isStaff]);

View file

@ -607,7 +607,7 @@ export default function VosDocumentsPage() {
const [activeTab, setActiveTab] = React.useState('comptables');
// État local initialisé avec la valeur globale si elle est un UUID valide
const [selectedOrgId, setSelectedOrgId] = React.useState<string>(
isValidUUID(globalSelectedOrgId) ? globalSelectedOrgId : ''
(globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) ? globalSelectedOrgId : ''
);
const [isStaff, setIsStaff] = React.useState(false);
const [isCheckingStaff, setIsCheckingStaff] = React.useState(true);
@ -668,7 +668,7 @@ export default function VosDocumentsPage() {
// Synchronisation bidirectionnelle : global → local
React.useEffect(() => {
if (isStaff && isValidUUID(globalSelectedOrgId)) {
if (isStaff && globalSelectedOrgId && isValidUUID(globalSelectedOrgId)) {
setSelectedOrgId(globalSelectedOrgId);
}
}, [globalSelectedOrgId, isStaff]);

View file

@ -164,7 +164,7 @@ export async function POST(req: NextRequest) {
// 6b) If manual mode, insert payslip links
if (selectionMode === 'manual' && payslip_ids && payslip_ids.length > 0) {
const links = payslip_ids.map(payslip_id => ({
const links = payslip_ids.map((payslip_id: string) => ({
salary_transfer_id: newTransfer.id,
payslip_id,
custom_amount: custom_amounts?.[payslip_id] || null,

View file

@ -1565,6 +1565,9 @@ export default function SalaryTransfersGrid({
num_appel: "",
total_net: "",
notes: "",
selection_mode: "period",
payslip_ids: [],
custom_amounts: {},
});
}}
className="px-4 py-2 text-slate-700 border rounded-lg hover:bg-slate-50 transition-colors"