@airporting/tech-app 0.0.139 → 0.0.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mf/9669.js +1 -1
- package/dist/mf/@mf-types/compiled-types/api/tech/sales/moveDealStageMutation.d.ts +11 -0
- package/dist/mf/@mf-types/compiled-types/apps/pipeline/DealCard.d.ts +4 -1
- package/dist/mf/@mf-types/compiled-types/apps/pipeline/KanbanBoard.d.ts +3 -1
- package/dist/mf/@mf-types/compiled-types/apps/pipeline/moveDeal.d.ts +8 -0
- package/dist/mf/@mf-types/compiled-types/apps/pipeline/types.d.ts +4 -0
- package/dist/mf/@mf-types/compiled-types/gen/TechApi/index.d.ts +251 -35
- package/dist/mf/__federation_expose_etat_saisie.js +1 -1
- package/dist/mf/__federation_expose_pipeline.js +1 -1
- package/dist/mf/index.css +73 -73
- package/dist/mf/index.js +3 -3
- package/dist/mf/mf-manifest.json +2 -2
- package/dist/mf/mf-stats.json +6 -6
- package/dist/mf/tech_app.js +3 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(globalThis["chunk_tech_app"]=globalThis["chunk_tech_app"]||[]).push([["7915"],{3437:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{D:()=>CompanyLogo});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5893);var _mantine_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(207);const BASE_URL="https://s3.dualstack.eu-west-3.amazonaws.com/media.airporting/companies";function CompanyLogo({slug,updatedAt,size=20,...rest}){const base=`${BASE_URL}/${slug}.png`;const url=updatedAt?`${base}?v=${new Date(updatedAt).getTime()}`:base;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Image,{src:url,fallbackSrc:`${BASE_URL}/undefined.png`,alt:slug??"",w:size,h:size,fit:"contain",radius:"sm",style:{aspectRatio:1},...rest})}},1354:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{m:()=>PageHeader});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5893);var _mantine_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(207);var _tabler_icons_react__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(9632);var react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(5850);function formatRelative(now,then){const seconds=Math.max(0,Math.floor((now-then)/1e3));if(seconds<5)return"\xe0 l’instant";if(seconds<60)return`il y a ${seconds}s`;const minutes=Math.floor(seconds/60);if(minutes<60)return`il y a ${minutes} min`;const hours=Math.floor(minutes/60);return`il y a ${hours} h`}function PageHeader({title,leading,badge,updatedAt,isFetching,isError,onRefresh,actions}){const[now,setNow]=(0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(()=>Date.now());(0,react__WEBPACK_IMPORTED_MODULE_3__.useEffect)(()=>{if(!updatedAt)return;const id=window.setInterval(()=>setNow(Date.now()),1e3);return()=>window.clearInterval(id)},[updatedAt]);const relative=updatedAt?formatRelative(now,updatedAt):null;const color=isError?"orange":isFetching?"teal":"dimmed";return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Group,{justify:"space-between",align:"center",mih:48,mb:"md",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Group,{gap:"sm",align:"center",children:[leading,/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Title,{order:2,children:title}),badge]}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Group,{gap:"sm",align:"center",children:[relative&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Text,{size:"xs",c:color,fw:isFetching?600:400,"data-testid":"page-header-freshness",children:isError?"\xe9chec maj":isFetching?"maj…":relative}),onRefresh&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Tooltip,{label:"Rafra\xeechir",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.ActionIcon,{variant:"default",size:"md",onClick:onRefresh,loading:isFetching,"aria-label":"Refresh",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_tabler_icons_react__WEBPACK_IMPORTED_MODULE_2__.IconRefresh,{size:16})})}),actions]})]})}},9781:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{h:()=>QuickBooksIcon});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5893);function QuickBooksIcon(props){const size=props.size??20;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg",{width:size,height:size,viewBox:"0 0 24 24",role:"img","aria-label":"QuickBooks",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("title",{children:"QuickBooks"}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle",{cx:"12",cy:"12",r:"12",fill:"#2CA01C"}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("text",{x:"12",y:"16.5",textAnchor:"middle",fontSize:"12",fontWeight:"700",fill:"#ffffff",fontFamily:"Arial, Helvetica, sans-serif",children:"qb"})]})}},243:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{j:()=>logoDevUrl});const LOGO_DEV_TOKEN="pk_BVN4OQv0Qs-bnqjdIgTppg";function logoDevUrl(domain){return`https://img.logo.dev/${domain}?token=${LOGO_DEV_TOKEN}`}},5554:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>EtatSaisie});var jsx_runtime=__webpack_require__(5893);var consume_shared_module_default_react_strict_=__webpack_require__(5850);var providers=__webpack_require__(7034);var index_mjs_=__webpack_require__(207);var esm_index_mjs_=__webpack_require__(3863);var index_js_=__webpack_require__(6197);var useApi=__webpack_require__(4148);function useEtatSaisieLatest(){const api=(0,useApi.h)();return(0,index_js_.useQuery)({queryKey:["tech","etat-saisie","latest"],queryFn:async()=>(await api.etatSaisie.getLatestV1()).data,staleTime:6e5,refetchOnWindowFocus:false})}function useEtatSaisieRecompute(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async()=>(await api.etatSaisie.recomputeV1()).data,onSuccess:()=>qc.invalidateQueries({queryKey:["tech","etat-saisie","latest"]})})}function useSetReconciliationMute(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async variables=>(await api.etatSaisie.setReconciliationMuteV1({company_id:variables.company_id,account_id:variables.account_id,muted:variables.muted})).data,onSuccess:()=>{qc.invalidateQueries({queryKey:["tech","etat-saisie","dossiers"]});qc.invalidateQueries({queryKey:["tech","etat-saisie","latest"]})}})}var tabler_icons_react_mjs_=__webpack_require__(9632);function DetailTableInner(props){const{columns,rows,onRowClick,rowKey}=props;const[sortKey,setSortKey]=(0,consume_shared_module_default_react_strict_.useState)(null);const[asc,setAsc]=(0,consume_shared_module_default_react_strict_.useState)(false);const sortColumn=sortKey?columns.find(c=>c.key===sortKey):void 0;const sorted=[...rows].sort((a,b)=>{if(!sortKey)return 0;const av=sortColumn?.sortValue?sortColumn.sortValue(a):a[sortKey];const bv=sortColumn?.sortValue?sortColumn.sortValue(b):b[sortKey];if("number"==typeof av&&"number"==typeof bv)return asc?av-bv:bv-av;return asc?String(av).localeCompare(String(bv)):String(bv).localeCompare(String(av))});const toggle=k=>{if(sortKey===k)setAsc(v=>!v);else{setSortKey(k);setAsc(false)}};const fmt=(v,numeric)=>{if(numeric&&"number"==typeof v)return v.toLocaleString("fr-FR",{minimumFractionDigits:0,maximumFractionDigits:0});if("boolean"==typeof v)return v?"✓":"";if(null==v)return"—";if("object"==typeof v)return"—";return String(v)};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table,{striped:true,highlightOnHover:true,withTableBorder:true,stickyHeader:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Thead,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{children:columns.map(c=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{onClick:()=>toggle(c.key),style:{cursor:"pointer"},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:4,wrap:"nowrap",component:"span",display:"inline-flex",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:c.label}),c.hint?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tooltip,{label:c.hint,multiline:true,w:260,withArrow:true,children:/*#__PURE__*/(0,jsx_runtime.jsx)("span",{style:{display:"inline-flex",alignItems:"center"},onClick:e=>e.stopPropagation(),children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconInfoCircle,{size:13})})}):null,/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:sortKey===c.key?asc?" ▲":" ▼":""})]})},c.key))})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tbody,{children:0===sorted.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{colSpan:columns.length,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",children:"Aucune ligne"})})}):sorted.map((row,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{onClick:onRowClick?()=>onRowClick(row):void 0,style:onRowClick?{cursor:"pointer"}:void 0,children:columns.map(c=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{style:c.numeric?{textAlign:"right",fontVariantNumeric:"tabular-nums"}:void 0,children:c.render?c.render(row):fmt(row[c.key],c.numeric)},c.key))},rowKey?rowKey(row,i):i))})]})}const DetailTable=/*#__PURE__*/(0,consume_shared_module_default_react_strict_.memo)(DetailTableInner);function useDossiers(){const api=(0,useApi.h)();return(0,index_js_.useQuery)({queryKey:["tech","etat-saisie","dossiers"],queryFn:async()=>(await api.etatSaisie.getDossiersV1()).data,refetchOnWindowFocus:true})}function useSetConnectorManaged(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async variables=>(await api.etatSaisie.setConnectorManagedV1({id:variables.id,provider:variables.provider},{managed:variables.managed})).data,onSuccess:()=>{qc.invalidateQueries({queryKey:["tech","etat-saisie","dossiers"]});qc.invalidateQueries({queryKey:["tech","etat-saisie","latest"]})}})}function useSetResponsable(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async variables=>(await api.etatSaisie.setResponsableV1({id:variables.id},{notion_user_id:variables.notionUserId})).data,onSuccess:()=>{qc.invalidateQueries({queryKey:["tech","etat-saisie","dossiers"]})}})}var logoDev=__webpack_require__(243);var QuickBooksIcon=__webpack_require__(9781);const PROVIDER_DOMAIN={pennylane:"pennylane.com",zohobooks:"zoho.com",xero:"xero.com",odoo:"odoo.com"};function ProviderIcon(props){const{provider}=props;if(!provider)return null;if("quickbooks"===provider)return/*#__PURE__*/(0,jsx_runtime.jsx)(QuickBooksIcon.h,{size:20});const domain=PROVIDER_DOMAIN[provider];if(!domain)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{size:"sm",variant:"light",color:"gray",title:provider,children:provider.slice(0,2).toUpperCase()});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Image,{src:(0,logoDev.j)(domain),alt:provider,title:provider,w:20,h:20,fit:"contain",radius:"sm",style:{aspectRatio:1}})}function DossiersTab(){const isMobile=(0,esm_index_mjs_.useMediaQuery)("(max-width: 48em)",false);const dossiers=useDossiers();const setConnectorManaged=useSetConnectorManaged();const setResponsable=useSetResponsable();const[filter,setFilter]=(0,consume_shared_module_default_react_strict_.useState)("");const options=dossiers.data?.responsable_options??[];const optionData=options.map(u=>({value:String(u.id),label:u.name}));const rows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const all=dossiers.data?.dossiers??[];const needle=filter.trim().toLowerCase();const filtered=needle?all.filter(dossier=>dossier.display_name.toLowerCase().includes(needle)||dossier.slug.toLowerCase().includes(needle)):all;return[...filtered].sort((a,b)=>a.display_name.localeCompare(b.display_name))},[dossiers.data,filter]);if(dossiers.isError)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"red",mt:"md",children:"Erreur de chargement des dossiers."});return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{mb:"md",children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{placeholder:"Filtrer par nom ou slug",value:filter,onChange:event=>setFilter(event.currentTarget.value),w:isMobile?"100%":320})}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:"sm",children:0===rows.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",py:"xl",children:"Aucun dossier"}):rows.map(dossier=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{withBorder:true,p:"sm",radius:"md",children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:dossier.provider}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:dossier.display_name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:dossier.slug})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{checked:dossier.managed,onChange:event=>setConnectorManaged.mutate({id:dossier.airporting_id,provider:dossier.provider,managed:event.currentTarget.checked})})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{placeholder:"Responsable",data:optionData,value:dossier.responsable?String(dossier.responsable.id):null,onChange:v=>setResponsable.mutate({id:dossier.airporting_id,notionUserId:v?Number(v):null}),searchable:true,clearable:true,leftSection:dossier.responsable?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:dossier.responsable.avatar_url,size:20,radius:"xl"}):void 0})]})},`${dossier.airporting_id}:${dossier.provider}`))}):/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table,{striped:true,highlightOnHover:true,withTableBorder:true,stickyHeader:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Thead,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Source"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Dossier"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"G\xe9r\xe9"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Responsable"})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tbody,{children:0===rows.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{colSpan:4,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",children:"Aucun dossier"})})}):rows.map(dossier=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:dossier.provider})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:dossier.display_name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{checked:dossier.managed,onChange:event=>setConnectorManaged.mutate({id:dossier.airporting_id,provider:dossier.provider,managed:event.currentTarget.checked})})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{placeholder:"—",data:optionData,value:dossier.responsable?String(dossier.responsable.id):null,onChange:v=>setResponsable.mutate({id:dossier.airporting_id,notionUserId:v?Number(v):null}),searchable:true,clearable:true,w:220,leftSection:dossier.responsable?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:dossier.responsable.avatar_url,size:20,radius:"xl"}):void 0})})]},`${dossier.airporting_id}:${dossier.provider}`))})]})]})}const MAX_STARS=5;const REASON_BADGES={vide:{label:"Vide",color:"gray"},erreur_scan:{label:"Erreur de scan",color:"red"},couverture_connecteur:{label:"Non not\xe9",color:"gray"}};const VERDICT_STYLE={parfait:{color:"green",symbol:"✓"},vert:{color:"green",symbol:"✓"},orange:{color:"orange",symbol:"!"},rouge:{color:"red",symbol:"✕"},non_mesurable:{color:"gray",symbol:"\xb7"}};function starColor(score){if(score>=4)return"var(--mantine-color-green-6)";if(score>=3)return"var(--mantine-color-yellow-6)";if(score>=2)return"var(--mantine-color-orange-6)";return"var(--mantine-color-red-6)"}function Stars(props){const color=starColor(props.score);const items=[];for(let i=1;i<=MAX_STARS;i+=1)if(props.score>=i)items.push(/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconStarFilled,{size:13,color:color},i));else if(props.score>=i-.5)items.push(/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconStarHalfFilled,{size:13,color:color},i));else items.push(/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconStar,{size:13,color:"var(--mantine-color-dark-2)"},i));return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{gap:1,wrap:"nowrap",children:items})}function ControlList(props){const controls=props.row.score_controls??[];if(0===controls.length)return null;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:4,children:controls.map(c=>{const style=VERDICT_STYLE[c.verdict]??VERDICT_STYLE.non_mesurable;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",align:"flex-start",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:style.color,fw:700,w:12,children:style.symbol}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",children:c.label}),c.detail?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:c.detail}):null]})]},c.key)})})}function ScoreStars(props){const{row}=props;if(null==row.score){const badge=row.score_reason?REASON_BADGES[row.score_reason]:void 0;const fallback=badge??{label:"Non not\xe9",color:"gray"};const controls=row.score_controls??[];const content=/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{size:"xs",color:fallback.color,variant:"light",children:fallback.label});if("couverture_connecteur"!==row.score_reason)return content;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard,{width:300,shadow:"md",openDelay:150,withinPortal:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("span",{style:{cursor:"help"},children:content})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard.Dropdown,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",fw:600,mb:6,children:"Pas assez de contr\xf4les mesurables"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{size:"xs",c:"dimmed",mb:6,children:["Ce connecteur n’expose pas les comptes n\xe9cessaires. Une note fond\xe9e sur ",controls.filter(c=>"non_mesurable"!==c.verdict).length," ","contr\xf4le(s) sur ",MAX_STARS," ne voudrait rien dire."]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ControlList,{row:row})]})]})}const stale=null!=row.refreshed_at&&null!=row.reconciliation_refresh_date&&row.refreshed_at<row.reconciliation_refresh_date;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard,{width:320,shadow:"md",openDelay:150,withinPortal:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{gap:6,wrap:"nowrap",style:{cursor:"help"},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Stars,{score:row.score})})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard.Dropdown,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",mb:6,wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Stars,{score:row.score}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{size:"xs",fw:600,children:[row.score.toLocaleString("fr-FR")," / ",MAX_STARS,row.score_label?` \xb7 ${row.score_label}`:""]})]}),row.score_capped_reason?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"orange",mb:6,children:row.score_capped_reason}):null,stale?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"yellow",mb:6,children:"Chiffres repris d’un calcul ant\xe9rieur."}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(ControlList,{row:row})]})]})}function scoreBucket(row){if(null==row.score)return"non_note";if(row.score>=4)return"bon";if(row.score>=3)return"moyen";return"faible"}function ManagedBadge(props){const{managed}=props;if(!managed)return null;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Image,{src:(0,logoDev.j)("airporting.com"),alt:"G\xe9r\xe9 par Airporting",title:"G\xe9r\xe9 par Airporting",w:18,h:18,fit:"contain",radius:"sm",style:{aspectRatio:1}})}const BANK_DOMAINS=[["bnp paribas","bnpparibas.com"],["societe generale","societegenerale.fr"],["qonto","qonto.com"],["revolut","revolut.com"],["stripe","stripe.com"],["wise","wise.com"],["transferwise","wise.com"],["ibanfirst","ibanfirst.com"],["credit agricole","credit-agricole.fr"],["credit mutuel","creditmutuel.fr"],["banque populaire","banquepopulaire.fr"],["caisse d","caisse-epargne.fr"],["american express","americanexpress.com"],["amex","americanexpress.com"],["paypal","paypal.com"],["hsbc","hsbc.com"],["pennylane","pennylane.com"],["mercury","mercury.com"],["lcl","lcl.fr"],["boursorama","boursorama.com"],["bpce","bpce.fr"]];function normalize(value){return value.toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu,"")}function BankLogo(props){const{label,size=20}=props;const normalized=label?normalize(label):"";const match=BANK_DOMAINS.find(([needle])=>normalized.includes(needle));if(!match)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,children:"\uD83C\uDFE6"});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Image,{src:(0,logoDev.j)(match[1]),alt:label??"",title:label??"",w:size,h:size,fit:"contain",radius:"sm",style:{aspectRatio:1}})}var CompanyLogo=__webpack_require__(3437);var PageHeader=__webpack_require__(1354);function drillCategoryLabel(category){if("471"===category)return"D\xe9tail 471";if("58"===category)return"D\xe9tail 58";if("supplier"===category)return"Fournisseurs d\xe9biteurs 401";if("customer"===category)return"Clients cr\xe9diteurs 411";if("factor"===category)return"Cr\xe9ances c\xe9d\xe9es au factor 4116";if("reconciliation"===category)return"Rappros bancaires";return null}function syncBadge(isoDate){if(!isoDate)return null;const days=Math.floor((Date.now()-new Date(isoDate).getTime())/864e5);let color="green";if(days>10)color="red";else if(days>4)color="orange";return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Badge,{ml:6,size:"xs",color:color,variant:"light",children:[days,"j"]})}function isStaleRefresh(refreshedAt,computedAt){if(!refreshedAt)return false;const refreshedDay=refreshedAt.slice(0,10);const referenceDay=(computedAt??new Date().toISOString()).slice(0,10);return refreshedDay<referenceDay}function refreshKoBadge(refreshedAt,computedAt){if(!isStaleRefresh(refreshedAt,computedAt))return null;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tooltip,{label:`Chiffres du ${formatDate(refreshedAt?.slice(0,10))} \u{2014} refresh KO ce run`,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{ml:6,size:"xs",color:"yellow",variant:"light",children:"refresh KO"})})}function factorKeur(row){const v=row.total_factor_eur??0;return 0===v?"—":formatKeur(v)}function withDossierFilter(rows,dossier){if(!dossier)return rows;return rows.filter(r=>r.dossier===dossier)}function withManagedFilter(rows,managedOnly){if(!managedOnly)return rows;return rows.filter(r=>true===r.managed)}const NO_RESPONSABLE="__none__";function withResponsableFilter(rows,responsable){if(!responsable)return rows;if(responsable===NO_RESPONSABLE)return rows.filter(r=>null==r.responsable);return rows.filter(r=>String(r.responsable?.id)===responsable)}function withScoreFilter(rows,bucket){if("all"===bucket)return rows;return rows.filter(r=>scoreBucket(r)===bucket)}function formatCurrency(value){if(null==value)return"—";return value.toLocaleString("fr-FR",{style:"currency",currency:"EUR",minimumFractionDigits:0,maximumFractionDigits:0})}function formatNumber(value){if(null==value)return"—";return value.toLocaleString("fr-FR")}function formatDate(value){if(!value)return"—";return value.split("-").reverse().join("/")}function formatKeur(value){if(null==value)return"—";const keur=(Math.round(value/1e3)||0).toLocaleString("fr-FR");return`${keur} k\u{20AC}`}function sumBy(rows,pick){return rows.reduce((acc,row)=>acc+(pick(row)??0),0)}function DrillSectionTitle(props){const isSample=null!=props.total&&props.count>0&&Math.abs(props.visibleSum-props.total)>.5;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Title,{order:5,mb:6,children:[props.label," (",props.count,isSample?" affich\xe9s":"",")",null!=props.total?` \xb7 total ${formatCurrency(props.total)}`:""]})}function ClickableMetricValue(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,style:{cursor:"pointer",display:"block",width:"100%"},onClick:e=>{e.stopPropagation();props.onClick()},children:props.value})}function updateDateParts(row){return[{label:"Derni\xe8re \xe9criture",iso:row.last_entry_date},{label:"Dernier import GLA",iso:row.gla_last_sync_date?.slice(0,10)??null},{label:"Rappros / factures",iso:row.reconciliation_refresh_date?.slice(0,10)??null}]}function oldestUpdateDate(parts){const present=parts.map(p=>p.iso).filter(v=>null!=v);if(0===present.length)return null;return present.reduce((a,b)=>a<b?a:b)}function UpdateDateCell(props){const parts=updateDateParts(props.row);const oldest=oldestUpdateDate(parts);if(null==oldest)return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"});return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard,{withArrow:true,shadow:"md",openDelay:120,position:"bottom-start",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{span:true,style:{cursor:"default"},children:[formatDate(oldest),syncBadge(oldest),refreshKoBadge(props.row.refreshed_at,props.computedAt),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"dimmed",children:" ▾"})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Dropdown,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:4,children:parts.map(p=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",gap:"lg",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:p.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",children:p.iso?formatDate(p.iso):"—"})]},p.label))})})]})}function clickableCardStyle(clickable){return clickable?{cursor:"pointer"}:void 0}function MobileMetricGrid({metrics}){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:2,spacing:"xs",children:metrics.map(metric=>/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:metric.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",fw:700,c:metric.color,lineClamp:2,children:metric.value})]},metric.label))})}function MobileAccountingList(props){const{rows,emptyLabel="Aucune ligne",getKey,renderHeader,getMetrics,onRowClick}=props;if(0===rows.length)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",py:"xl",children:emptyLabel});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:"sm",children:rows.map((row,index)=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{withBorder:true,p:"sm",radius:"md",onClick:onRowClick?()=>onRowClick(row):void 0,style:clickableCardStyle(!!onRowClick),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[renderHeader(row),/*#__PURE__*/(0,jsx_runtime.jsx)(MobileMetricGrid,{metrics:getMetrics(row)})]})},getKey(row,index)))})}function MobileDossierLineList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:row=>props.onDrill(row),getKey:row=>`${row.source}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",align:"center",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsx)(CompanyLogo.D,{slug:row.slug,updatedAt:row.logo_updated_at,size:24}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.dossier}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:6,wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.responsable?.name??"Sans responsable"})]})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ScoreStars,{row:row})]}),getMetrics:row=>[{label:"471",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.solde_attente_eur),onClick:()=>props.onDrill(row,"471")})},{label:"58",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.solde_virements_eur),onClick:()=>props.onDrill(row,"58")})},{label:"401",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.total_fournisseurs_eur),onClick:()=>props.onDrill(row,"supplier")})},{label:"411",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.total_clients_eur),onClick:()=>props.onDrill(row,"customer")})},{label:"Cr\xe9ances c\xe9d\xe9es",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:factorKeur(row),onClick:()=>props.onDrill(row,"factor")})},{label:"Date mise \xe0 jour",value:(()=>{const oldest=oldestUpdateDate(updateDateParts(row));if(null==oldest)return"—";return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[formatDate(oldest),syncBadge(oldest),refreshKoBadge(row.refreshed_at,props.computedAt)]})})()},{label:"Rappro",value:(()=>{const text="pennylane"!==row.source?"—":row.last_reconciliation_date?formatDate(row.last_reconciliation_date):props.dossiersWithActiveReco.has(row.dossier)?"jamais":"—";if("—"===text)return text;return/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:text,onClick:()=>props.onDrill(row,"reconciliation")})})(),color:"pennylane"===row.source&&null==row.last_reconciliation_date&&props.dossiersWithActiveReco.has(row.dossier)?"red":void 0}]})}function MobileSuspenseList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:(row,index)=>`${row.dossier}:${row.date}:${row.numero_piece??index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.dossier}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:2,children:row.libelle_ecriture??row.libelle_compte??"Sans libell\xe9"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde net",value:formatCurrency(row.solde_net)},{label:"Date",value:formatDate(row.date)},{label:"Compte",value:row.numero_compte??"—"},{label:"Pi\xe8ce",value:row.numero_piece??"—"}]})}function MobileSupplierList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:(row,index)=>`${row.dossier}:${row.fournisseur}:${index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.fournisseur}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.dossier})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde d\xe9biteur",value:formatCurrency(row.solde_debiteur_eur)},{label:"\xc9critures",value:formatNumber(row.nb_ecritures)},{label:"Devise",value:row.devise||"—"}]})}function MobileCustomerList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:(row,index)=>`${row.dossier}:${row.client}:${index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.client}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.dossier})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde cr\xe9diteur",value:formatCurrency(row.solde_crediteur_eur)},{label:"\xc9critures",value:formatNumber(row.nb_ecritures)},{label:"Devise",value:row.devise||"—"}]})}function MobileReconciliationList({rows,onToggleMute}){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:rows,getKey:(row,index)=>`${row.dossier}:${row.bank_label??index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"center",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BankLogo,{label:row.bank_label,size:24}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,c:row.muted?"dimmed":void 0,children:row.bank_label??"Banque"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{size:"sm",checked:!row.muted,label:row.muted?"non suivi":"suivi",onLabel:"suivi",onChange:e=>onToggleMute({company_id:row.airporting_company_id,account_id:row.account_id,muted:!e.currentTarget.checked})})]}),getMetrics:row=>[{label:"Dernier rappro",value:row.muted?"non suivi":row.last_reconciled_period_end?formatDate(row.last_reconciled_period_end):"jamais",color:row.muted?"dimmed":row.last_reconciled_period_end?void 0:"red"}]})}function MobileTopSuspenseList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:row=>`471:${row.rank}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:["#",row.rank," ",row.dossier]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.top_libelle??"Sans libell\xe9"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde 471",value:formatCurrency(row.solde_eur)},{label:"\xc9critures",value:formatNumber(row.nb_ecritures)},{label:"Top montant",value:formatCurrency(row.top_montant)}]})}function MobileTopSupplierList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:row=>`401:${row.rank}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:["#",row.rank," ",row.dossier]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.top_nom??"Sans fournisseur"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Total d\xe9biteur",value:formatCurrency(row.total_eur)},{label:"Fournisseurs",value:formatNumber(row.nb_fournisseurs)},{label:"Top montant",value:formatCurrency(row.top_montant)}]})}function MobileTopCustomerList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:row=>`411:${row.rank}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:["#",row.rank," ",row.dossier]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.top_nom??"Sans client"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Total cr\xe9diteur",value:formatCurrency(row.total_eur)},{label:"Clients",value:formatNumber(row.nb_clients)},{label:"Top montant",value:formatCurrency(row.top_montant)}]})}function EtatSaisieApp(){const isMobile=(0,esm_index_mjs_.useMediaQuery)("(max-width: 48em)",false);const latest=useEtatSaisieLatest();const recompute=useEtatSaisieRecompute();const setReconciliationMute=useSetReconciliationMute();const[tab,setTab]=(0,consume_shared_module_default_react_strict_.useState)("resume");const[selectedDossier,setSelectedDossier]=(0,consume_shared_module_default_react_strict_.useState)(null);const[managedOnly,setManagedOnly]=(0,consume_shared_module_default_react_strict_.useState)(true);const[statusFilter,setStatusFilter]=(0,consume_shared_module_default_react_strict_.useState)("all");const[selectedResponsable,setSelectedResponsable]=(0,consume_shared_module_default_react_strict_.useState)(null);const[drillDossier,setDrillDossier]=(0,consume_shared_module_default_react_strict_.useState)(null);const[drillProvider,setDrillProvider]=(0,consume_shared_module_default_react_strict_.useState)(null);const[drillCategory,setDrillCategory]=(0,consume_shared_module_default_react_strict_.useState)(null);const d=latest.data;const allDossiers=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{if(!d?.available)return[];const set=new Set;for(const r of d.suspense_rows??[])set.add(r.dossier);for(const r of d.supplier_rows??[])set.add(r.dossier);for(const r of d.customer_rows??[])set.add(r.dossier);for(const r of d.dossier_lines??[])set.add(r.dossier);for(const r of d.reconciliation_rows??[])set.add(r.dossier);for(const r of d.summary?.top_5_suspense??[])set.add(r.dossier);for(const r of d.summary?.top_5_supplier_debtors??[])set.add(r.dossier);for(const r of d.summary?.top_5_customer_creditors??[])set.add(r.dossier);return[...set].sort()},[d]);const responsableOptions=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const byId=new Map;let hasNone=false;for(const line of d?.dossier_lines??[])if(line.responsable)byId.set(line.responsable.id,line.responsable.name);else hasNone=true;const options=[...byId.entries()].map(([id,name])=>({value:String(id),label:name})).sort((a,b)=>a.label.localeCompare(b.label));if(hasNone)options.push({value:NO_RESPONSABLE,label:"Sans responsable"});return options},[d]);const dossiersWithActiveReco=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const set=new Set;for(const r of d?.reconciliation_rows??[])if(!r.muted)set.add(r.dossier);return set},[d]);const openDrill=(0,consume_shared_module_default_react_strict_.useCallback)((row,category=null)=>{setDrillDossier(row.dossier);setDrillProvider(row.source);setDrillCategory(category)},[]);const closeDrill=(0,consume_shared_module_default_react_strict_.useCallback)(()=>{setDrillDossier(null);setDrillProvider(null);setDrillCategory(null)},[]);const unifiedCols=(0,consume_shared_module_default_react_strict_.useMemo)(()=>buildUnifiedCols(d?.computed_at,openDrill,dossiersWithActiveReco),[d?.computed_at,openDrill,dossiersWithActiveReco]);const drillData=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{if(!drillDossier||!d?.available)return null;const scoped=rows=>(rows??[]).filter(r=>r.dossier===drillDossier&&r.source===drillProvider);const reconciliation=scoped(d.reconciliation_rows).sort((a,b)=>{const av=a.last_reconciled_period_end??"0000-00-00";const bv=b.last_reconciled_period_end??"0000-00-00";return av.localeCompare(bv)});const lines=(d.dossier_lines??[]).filter(l=>l.dossier===drillDossier&&l.source===drillProvider);const sumLines=pick=>lines.reduce((acc,l)=>acc+(pick(l)??0),0);return{reconciliation,suspense:scoped(d.suspense_rows),internalTransfers:scoped(d.internal_transfer_rows),supplier:scoped(d.supplier_rows),customer:scoped(d.customer_rows),factor:scoped(d.factor_rows??[]),totals:{suspense:sumLines(l=>l.solde_attente_eur),internalTransfers:sumLines(l=>l.solde_virements_eur),supplier:sumLines(l=>l.total_fournisseurs_eur),customer:sumLines(l=>l.total_clients_eur),factor:sumLines(l=>l.total_factor_eur??0)}}},[drillDossier,drillProvider,d]);const summaryRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withScoreFilter(withResponsableFilter(withManagedFilter(withDossierFilter(d?.dossier_lines??[],selectedDossier),managedOnly),selectedResponsable),statusFilter),[d,selectedDossier,managedOnly,selectedResponsable,statusFilter]);const scoreTiles=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const base=withResponsableFilter(withManagedFilter(withDossierFilter(d?.dossier_lines??[],selectedDossier),managedOnly),selectedResponsable);const count=bucket=>base.filter(r=>scoreBucket(r)===bucket).length;return[{key:"all",label:"Dossiers",value:base.length,color:void 0},{key:"bon",label:"4 \xe0 5 \xe9toiles",value:count("bon"),color:"green"},{key:"moyen",label:"3 \xe9toiles",value:count("moyen"),color:"yellow"},{key:"faible",label:"1 \xe0 2 \xe9toiles",value:count("faible"),color:"red"},{key:"non_note",label:"Non not\xe9s",value:count("non_note"),color:"gray"}]},[d,selectedDossier,managedOnly,selectedResponsable]);const topSuspenseRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withDossierFilter(d?.summary?.top_5_suspense??[],selectedDossier),[d,selectedDossier]);const topSupplierRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withDossierFilter(d?.summary?.top_5_supplier_debtors??[],selectedDossier),[d,selectedDossier]);const topCustomerRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withDossierFilter(d?.summary?.top_5_customer_creditors??[],selectedDossier),[d,selectedDossier]);const suspenseRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.suspense_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);const internalTransferRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.internal_transfer_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);const supplierRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.supplier_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);const customerRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.customer_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Container,{fluid:true,my:isMobile?0:"md",px:isMobile?12:void 0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(PageHeader.m,{title:"Accounting",updatedAt:d?.computed_at?new Date(d.computed_at).getTime():latest.dataUpdatedAt,isFetching:latest.isFetching,isError:latest.isError,onRefresh:()=>latest.refetch(),actions:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{loading:recompute.isPending,onClick:()=>recompute.mutate(),variant:"light",size:isMobile?"xs":"sm",children:"Recalculer"})}),d&&!d.available?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",children:"Aucun snapshot disponible — lancez \xab Recalculer \xbb ou attendez le run nocturne."}):/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{mb:"md",align:"end",gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"Focus dossier",placeholder:"Tous les dossiers",data:allDossiers.map(dos=>({value:dos,label:dos})),value:selectedDossier,onChange:setSelectedDossier,searchable:true,clearable:true,w:isMobile?"100%":320}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"Responsable",placeholder:"Tous les responsables",data:responsableOptions,value:selectedResponsable,onChange:setSelectedResponsable,searchable:true,clearable:true,w:isMobile?"100%":240}),(selectedDossier||selectedResponsable)&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"subtle",onClick:()=>{setSelectedDossier(null);setSelectedResponsable(null)},w:isMobile?"100%":void 0,children:"R\xe9initialiser"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:managedOnly?"managed":"all",onChange:v=>setManagedOnly("managed"===v),data:[{label:"G\xe9r\xe9s",value:"managed"},{label:"Tous",value:"all"}],w:isMobile?"100%":void 0})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Tabs,{value:tab,onChange:setTab,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Tabs.List,{style:isMobile?{flexWrap:"nowrap",overflowX:"auto",overflowY:"hidden"}:void 0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Tab,{value:"resume",children:"R\xe9sum\xe9"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Tab,{value:"dossiers",children:"Dossiers"})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Tabs.Panel,{value:"resume",pt:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:isMobile?2:5,mb:"md",spacing:"sm",children:scoreTiles.map(tile=>{const active=statusFilter===tile.key;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{withBorder:active,style:{cursor:"pointer",borderColor:active?"var(--mantine-color-blue-5)":void 0},onClick:()=>setStatusFilter(tile.key),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:tile.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"xl",c:tile.color,children:tile.value})]},tile.key)})}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileDossierLineList,{rows:summaryRows,onDrill:openDrill,computedAt:d?.computed_at,dossiersWithActiveReco:dossiersWithActiveReco}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:unifiedCols,rows:summaryRows,onRowClick:openDrill,rowKey:r=>`${r.source}:${r.dossier}`})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"top5",pt:"md",children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"lg",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,mb:"sm",children:"Top 5 comptes d'attente (471)"}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileTopSuspenseList,{rows:topSuspenseRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:TOP_SUSPENSE_COLS,rows:topSuspenseRows,onRowClick:openDrill})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,mb:"sm",children:"Top 5 fournisseurs d\xe9biteurs (401)"}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileTopSupplierList,{rows:topSupplierRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:TOP_SUPPLIER_COLS,rows:topSupplierRows,onRowClick:openDrill})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,mb:"sm",children:"Top 5 clients cr\xe9diteurs (411)"}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileTopCustomerList,{rows:topCustomerRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:TOP_CUSTOMER_COLS,rows:topCustomerRows,onRowClick:openDrill})]})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s471",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:suspenseRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:SUSPENSE_COLS,rows:suspenseRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s58",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:internalTransferRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:SUSPENSE_COLS,rows:internalTransferRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s401",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSupplierList,{rows:supplierRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:SUPPLIER_COLS,rows:supplierRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s411",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileCustomerList,{rows:customerRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:CUSTOMER_COLS,rows:customerRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"dossiers",pt:"md",children:/*#__PURE__*/(0,jsx_runtime.jsx)(DossiersTab,{})})]})]}),latest.isError?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"red",mt:"md",children:"Erreur de chargement."}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Drawer,{opened:!!drillDossier,onClose:closeDrill,position:isMobile?"bottom":"right",size:isMobile?"calc(100dvh - 88px)":"xl",title:drillDossier?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",align:"center",wrap:isMobile?"wrap":"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:isMobile?5:4,children:drillCategoryLabel(drillCategory)?`${drillCategoryLabel(drillCategory)} : ${drillDossier}`:`Dossier ${drillDossier}`}),drillProvider&&/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:4,wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:drillProvider}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:drillProvider})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{size:"xs",variant:"light",onClick:()=>{setSelectedDossier(drillDossier);closeDrill()},children:"Focus sur ce dossier"})]}):null,styles:isMobile?{body:{padding:12,paddingBottom:24}}:void 0,children:drillData&&/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"md",children:[(null===drillCategory||"reconciliation"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Title,{order:5,mb:6,children:["Rappros bancaires (",drillData.reconciliation.length,")"]}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileReconciliationList,{rows:drillData.reconciliation,onToggleMute:setReconciliationMute.mutate}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:buildDrillRecoCols(setReconciliationMute.mutate),rows:drillData.reconciliation})]}),(null===drillCategory||"471"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Comptes d'attente 471",count:drillData.suspense.length,visibleSum:sumBy(drillData.suspense,r=>r.solde_net),total:drillData.totals.suspense}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:drillData.suspense}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_SUSPENSE_COLS,rows:drillData.suspense})]}),(null===drillCategory||"58"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Virements internes 58",count:drillData.internalTransfers.length,visibleSum:sumBy(drillData.internalTransfers,r=>r.solde_net),total:drillData.totals.internalTransfers}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:drillData.internalTransfers}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_SUSPENSE_COLS,rows:drillData.internalTransfers})]}),(null===drillCategory||"supplier"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Fournisseurs d\xe9biteurs 401",count:drillData.supplier.length,visibleSum:sumBy(drillData.supplier,r=>r.solde_debiteur_eur),total:drillData.totals.supplier}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSupplierList,{rows:drillData.supplier}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_SUPPLIER_COLS,rows:drillData.supplier})]}),(null===drillCategory||"customer"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Clients cr\xe9diteurs 411",count:drillData.customer.length,visibleSum:sumBy(drillData.customer,r=>r.solde_crediteur_eur),total:drillData.totals.customer}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileCustomerList,{rows:drillData.customer}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_CUSTOMER_COLS,rows:drillData.customer})]}),(null===drillCategory||"factor"===drillCategory)&&drillData.factor.length>0&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Cr\xe9ances c\xe9d\xe9es au factor 4116",count:drillData.factor.length,visibleSum:sumBy(drillData.factor,r=>r.solde_eur),total:drillData.totals.factor}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileCustomerList,{rows:drillData.factor.map(factorRowAsCustomerRow)}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_FACTOR_COLS,rows:drillData.factor})]})]})})]})}const TOP_SUSPENSE_COLS=[{key:"rank",label:"#",numeric:true},{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"G\xe9r\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"solde_eur",label:"Solde 471 (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"top_libelle",label:"Top \xe9criture"},{key:"top_montant",label:"Montant",numeric:true}];const TOP_SUPPLIER_COLS=[{key:"rank",label:"#",numeric:true},{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"total_eur",label:"Total d\xe9biteur (€)",numeric:true},{key:"nb_fournisseurs",label:"Nb fourn.",numeric:true},{key:"top_nom",label:"Top fournisseur"},{key:"top_montant",label:"Montant",numeric:true}];const TOP_CUSTOMER_COLS=[{key:"rank",label:"#",numeric:true},{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"total_eur",label:"Total cr\xe9diteur (€)",numeric:true},{key:"nb_clients",label:"Nb clients",numeric:true},{key:"top_nom",label:"Top client"},{key:"top_montant",label:"Montant",numeric:true}];function buildUnifiedCols(computedAt,openDrill,dossiersWithActiveReco){return[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"score",label:"Tenue",hint:"Note de tenue comptable sur 5 : un point par contr\xf4le pass\xe9 (saisie \xe0 jour, banques rapproch\xe9es, compte d’attente, virements internes, comptes tiers). Survolez pour le d\xe9tail.",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ScoreStars,{row:r})},{key:"dossier",label:"Dossier",render:r=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(CompanyLogo.D,{slug:r.slug,updatedAt:r.logo_updated_at,size:20}),/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.dossier})]})},{key:"responsable",label:"Responsable",sortValue:r=>r.responsable?.name??"",render:r=>r.responsable?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:r.responsable.avatar_url,size:20,radius:"xl"}),/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.responsable.name})]}):/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"})},{key:"fiscal_year_end",label:"Cl\xf4ture",render:r=>r.fiscal_year_end?/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.fiscal_year_end.split("-").reverse().join("/")}):/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"})},{key:"solde_attente_eur",label:"Solde 471",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.solde_attente_eur),onClick:()=>openDrill(r,"471")})},{key:"solde_virements_eur",label:"Solde 58",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.solde_virements_eur),onClick:()=>openDrill(r,"58")})},{key:"total_fournisseurs_eur",label:"Fourn. d\xe9biteurs",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.total_fournisseurs_eur),onClick:()=>openDrill(r,"supplier")})},{key:"total_clients_eur",label:"Clients cr\xe9diteurs",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.total_clients_eur),onClick:()=>openDrill(r,"customer")})},{key:"total_factor_eur",label:"Cr\xe9ances c\xe9d\xe9es",hint:"Cr\xe9ances c\xe9d\xe9es au factor (comptes 4116) : solde cr\xe9diteur par construction, il vaut moins l’encours c\xe9d\xe9 au portail du factor. Ce n’est pas une anomalie clients.",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:factorKeur(r),onClick:()=>openDrill(r,"factor")})},{key:"last_entry_date",label:"Date mise \xe0 jour",hint:"La plus ancienne des 3 dates de fra\xeecheur : derni\xe8re \xe9criture comptable, dernier import GLA, dernier passage du scrapper rappros/factures. Survolez pour le d\xe9tail des 3 dates.",render:row=>/*#__PURE__*/(0,jsx_runtime.jsx)(UpdateDateCell,{row:row,computedAt:computedAt})},{key:"last_reconciliation_date",label:"Rappro le + en retard",render:r=>{if("pennylane"!==r.source)return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"});if(null==r.last_reconciliation_date){if(!dossiersWithActiveReco.has(r.dossier))return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"dimmed",children:"—"});return/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"red",fw:700,children:"jamais"}),onClick:()=>openDrill(r,"reconciliation")})}return/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:r.last_reconciliation_date.split("-").reverse().join("/"),onClick:()=>openDrill(r,"reconciliation")})}},{key:"pending_supplier_invoices",label:"Fact. fourn. \xe0 traiter",numeric:true,render:r=>{if("pennylane"!==r.source||null==r.pending_supplier_invoices)return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"});return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.pending_supplier_invoices})}}]}const SUSPENSE_COLS=[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"date",label:"Date"},{key:"numero_compte",label:"N\xb0 Compte"},{key:"libelle_compte",label:"Libell\xe9 compte"},{key:"libelle_ecriture",label:"Libell\xe9 \xe9criture"},{key:"journal",label:"Journal"},{key:"numero_piece",label:"N\xb0 Pi\xe8ce"},{key:"debit",label:"D\xe9bit",numeric:true},{key:"credit",label:"Cr\xe9dit",numeric:true},{key:"solde_net",label:"Solde net",numeric:true},{key:"lettre",label:"Lettr\xe9"},{key:"devise",label:"Devise"}];const SUPPLIER_COLS=[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"fournisseur",label:"Fournisseur"},{key:"solde_debiteur_eur",label:"Solde d\xe9biteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr. non lettr\xe9es",numeric:true},{key:"devise",label:"Devise"}];const CUSTOMER_COLS=[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"client",label:"Client"},{key:"solde_crediteur_eur",label:"Solde cr\xe9diteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr. non lettr\xe9es",numeric:true},{key:"devise",label:"Devise"}];function buildDrillRecoCols(onToggleMute){return[{key:"bank_label",label:"Banque",render:r=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BankLogo,{label:r.bank_label,size:20}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:r.muted?"dimmed":void 0,children:r.bank_label??"—"})]})},{key:"last_reconciled_period_end",label:"Dernier rappro",render:r=>{if(r.muted)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"dimmed",children:"non suivi"});if(null==r.last_reconciled_period_end)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"red",fw:700,children:"jamais"});return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.last_reconciled_period_end.split("-").reverse().join("/")})}},{key:"muted",label:"Suivi",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{size:"sm",checked:!r.muted,label:r.muted?"non suivi":"suivi",onLabel:"suivi",onChange:e=>onToggleMute({company_id:r.airporting_company_id,account_id:r.account_id,muted:!e.currentTarget.checked})})}]}const DRILL_SUSPENSE_COLS=[{key:"date",label:"Date"},{key:"numero_compte",label:"N\xb0 Compte"},{key:"libelle_ecriture",label:"Libell\xe9"},{key:"debit",label:"D\xe9bit",numeric:true},{key:"credit",label:"Cr\xe9dit",numeric:true},{key:"solde_net",label:"Solde net",numeric:true},{key:"lettre",label:"Lettr\xe9"}];const DRILL_SUPPLIER_COLS=[{key:"fournisseur",label:"Fournisseur"},{key:"solde_debiteur_eur",label:"Solde d\xe9biteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"devise",label:"Devise"}];const DRILL_FACTOR_COLS=[{key:"compte",label:"Compte"},{key:"solde_eur",label:"Solde (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"devise",label:"Devise"}];function factorRowAsCustomerRow(r){return{source:r.source,dossier:r.dossier,managed:r.managed,client:r.compte,solde_crediteur_eur:r.solde_eur,nb_ecritures:r.nb_ecritures,devise:r.devise}}const DRILL_CUSTOMER_COLS=[{key:"client",label:"Client"},{key:"solde_crediteur_eur",label:"Solde cr\xe9diteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"devise",label:"Devise"}];function EtatSaisie(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(consume_shared_module_default_react_strict_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(providers.C,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(EtatSaisieApp,{})})})}}}]);
|
|
1
|
+
"use strict";(globalThis["chunk_tech_app"]=globalThis["chunk_tech_app"]||[]).push([["7915"],{3437:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{D:()=>CompanyLogo});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5893);var _mantine_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(207);const BASE_URL="https://s3.dualstack.eu-west-3.amazonaws.com/media.airporting/companies";function CompanyLogo({slug,updatedAt,size=20,...rest}){const base=`${BASE_URL}/${slug}.png`;const url=updatedAt?`${base}?v=${new Date(updatedAt).getTime()}`:base;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Image,{src:url,fallbackSrc:`${BASE_URL}/undefined.png`,alt:slug??"",w:size,h:size,fit:"contain",radius:"sm",style:{aspectRatio:1},...rest})}},1354:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{m:()=>PageHeader});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5893);var _mantine_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(207);var _tabler_icons_react__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(9632);var react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(5850);function formatRelative(now,then){const seconds=Math.max(0,Math.floor((now-then)/1e3));if(seconds<5)return"\xe0 l’instant";if(seconds<60)return`il y a ${seconds}s`;const minutes=Math.floor(seconds/60);if(minutes<60)return`il y a ${minutes} min`;const hours=Math.floor(minutes/60);return`il y a ${hours} h`}function PageHeader({title,leading,badge,updatedAt,isFetching,isError,onRefresh,actions}){const[now,setNow]=(0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(()=>Date.now());(0,react__WEBPACK_IMPORTED_MODULE_3__.useEffect)(()=>{if(!updatedAt)return;const id=window.setInterval(()=>setNow(Date.now()),1e3);return()=>window.clearInterval(id)},[updatedAt]);const relative=updatedAt?formatRelative(now,updatedAt):null;const color=isError?"orange":isFetching?"teal":"dimmed";return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Group,{justify:"space-between",align:"center",mih:48,mb:"md",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Group,{gap:"sm",align:"center",children:[leading,/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Title,{order:2,children:title}),badge]}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Group,{gap:"sm",align:"center",children:[relative&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Text,{size:"xs",c:color,fw:isFetching?600:400,"data-testid":"page-header-freshness",children:isError?"\xe9chec maj":isFetching?"maj…":relative}),onRefresh&&/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.Tooltip,{label:"Rafra\xeechir",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mantine_core__WEBPACK_IMPORTED_MODULE_1__.ActionIcon,{variant:"default",size:"md",onClick:onRefresh,loading:isFetching,"aria-label":"Refresh",children:/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_tabler_icons_react__WEBPACK_IMPORTED_MODULE_2__.IconRefresh,{size:16})})}),actions]})]})}},9781:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{h:()=>QuickBooksIcon});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5893);function QuickBooksIcon(props){const size=props.size??20;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg",{width:size,height:size,viewBox:"0 0 24 24",role:"img","aria-label":"QuickBooks",children:[/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("title",{children:"QuickBooks"}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle",{cx:"12",cy:"12",r:"12",fill:"#2CA01C"}),/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("text",{x:"12",y:"16.5",textAnchor:"middle",fontSize:"12",fontWeight:"700",fill:"#ffffff",fontFamily:"Arial, Helvetica, sans-serif",children:"qb"})]})}},243:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{j:()=>logoDevUrl});const LOGO_DEV_TOKEN="pk_BVN4OQv0Qs-bnqjdIgTppg";function logoDevUrl(domain){return`https://img.logo.dev/${domain}?token=${LOGO_DEV_TOKEN}`}},5554:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>EtatSaisie});var jsx_runtime=__webpack_require__(5893);var consume_shared_module_default_react_strict_=__webpack_require__(5850);var providers=__webpack_require__(7034);var index_mjs_=__webpack_require__(207);var esm_index_mjs_=__webpack_require__(3863);var index_js_=__webpack_require__(6197);var useApi=__webpack_require__(4148);function useEtatSaisieLatest(){const api=(0,useApi.h)();return(0,index_js_.useQuery)({queryKey:["tech","etat-saisie","latest"],queryFn:async()=>(await api.etatSaisie.getLatestV1()).data,staleTime:6e5,refetchOnWindowFocus:false})}function useEtatSaisieRecompute(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async()=>(await api.etatSaisie.recomputeV1()).data,onSuccess:()=>qc.invalidateQueries({queryKey:["tech","etat-saisie","latest"]})})}function useSetReconciliationMute(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async variables=>(await api.etatSaisie.setReconciliationMuteV1({company_id:variables.company_id,account_id:variables.account_id,muted:variables.muted})).data,onSuccess:()=>{qc.invalidateQueries({queryKey:["tech","etat-saisie","dossiers"]});qc.invalidateQueries({queryKey:["tech","etat-saisie","latest"]})}})}var tabler_icons_react_mjs_=__webpack_require__(9632);function DetailTableInner(props){const{columns,rows,onRowClick,rowKey}=props;const[sortKey,setSortKey]=(0,consume_shared_module_default_react_strict_.useState)(null);const[asc,setAsc]=(0,consume_shared_module_default_react_strict_.useState)(false);const sortColumn=sortKey?columns.find(c=>c.key===sortKey):void 0;const sorted=[...rows].sort((a,b)=>{if(!sortKey)return 0;const av=sortColumn?.sortValue?sortColumn.sortValue(a):a[sortKey];const bv=sortColumn?.sortValue?sortColumn.sortValue(b):b[sortKey];if("number"==typeof av&&"number"==typeof bv)return asc?av-bv:bv-av;return asc?String(av).localeCompare(String(bv)):String(bv).localeCompare(String(av))});const toggle=k=>{if(sortKey===k)setAsc(v=>!v);else{setSortKey(k);setAsc(false)}};const fmt=(v,numeric)=>{if(numeric&&"number"==typeof v)return v.toLocaleString("fr-FR",{minimumFractionDigits:0,maximumFractionDigits:0});if("boolean"==typeof v)return v?"✓":"";if(null==v)return"—";if("object"==typeof v)return"—";return String(v)};return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table,{striped:true,highlightOnHover:true,withTableBorder:true,stickyHeader:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Thead,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{children:columns.map(c=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{onClick:()=>toggle(c.key),style:{cursor:"pointer"},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:4,wrap:"nowrap",component:"span",display:"inline-flex",children:[/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:c.label}),c.hint?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tooltip,{label:c.hint,multiline:true,w:260,withArrow:true,children:/*#__PURE__*/(0,jsx_runtime.jsx)("span",{style:{display:"inline-flex",alignItems:"center"},onClick:e=>e.stopPropagation(),children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconInfoCircle,{size:13})})}):null,/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:sortKey===c.key?asc?" ▲":" ▼":""})]})},c.key))})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tbody,{children:0===sorted.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{colSpan:columns.length,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",children:"Aucune ligne"})})}):sorted.map((row,i)=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{onClick:onRowClick?()=>onRowClick(row):void 0,style:onRowClick?{cursor:"pointer"}:void 0,children:columns.map(c=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{style:c.numeric?{textAlign:"right",fontVariantNumeric:"tabular-nums"}:void 0,children:c.render?c.render(row):fmt(row[c.key],c.numeric)},c.key))},rowKey?rowKey(row,i):i))})]})}const DetailTable=/*#__PURE__*/(0,consume_shared_module_default_react_strict_.memo)(DetailTableInner);function useDossiers(){const api=(0,useApi.h)();return(0,index_js_.useQuery)({queryKey:["tech","etat-saisie","dossiers"],queryFn:async()=>(await api.etatSaisie.getDossiersV1()).data,refetchOnWindowFocus:true})}function useSetConnectorManaged(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async variables=>(await api.etatSaisie.setConnectorManagedV1({id:variables.id,provider:variables.provider},{managed:variables.managed})).data,onSuccess:()=>{qc.invalidateQueries({queryKey:["tech","etat-saisie","dossiers"]});qc.invalidateQueries({queryKey:["tech","etat-saisie","latest"]})}})}function useSetResponsable(){const api=(0,useApi.h)();const qc=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async variables=>(await api.etatSaisie.setResponsableV1({id:variables.id},{notion_user_id:variables.notionUserId})).data,onSuccess:()=>{qc.invalidateQueries({queryKey:["tech","etat-saisie","dossiers"]})}})}var logoDev=__webpack_require__(243);var QuickBooksIcon=__webpack_require__(9781);const PROVIDER_DOMAIN={pennylane:"pennylane.com",zohobooks:"zoho.com",xero:"xero.com",odoo:"odoo.com"};function ProviderIcon(props){const{provider}=props;if(!provider)return null;if("quickbooks"===provider)return/*#__PURE__*/(0,jsx_runtime.jsx)(QuickBooksIcon.h,{size:20});const domain=PROVIDER_DOMAIN[provider];if(!domain)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{size:"sm",variant:"light",color:"gray",title:provider,children:provider.slice(0,2).toUpperCase()});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Image,{src:(0,logoDev.j)(domain),alt:provider,title:provider,w:20,h:20,fit:"contain",radius:"sm",style:{aspectRatio:1}})}function DossiersTab(){const isMobile=(0,esm_index_mjs_.useMediaQuery)("(max-width: 48em)",false);const dossiers=useDossiers();const setConnectorManaged=useSetConnectorManaged();const setResponsable=useSetResponsable();const[filter,setFilter]=(0,consume_shared_module_default_react_strict_.useState)("");const options=dossiers.data?.responsable_options??[];const optionData=options.map(u=>({value:String(u.id),label:u.name}));const rows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const all=dossiers.data?.dossiers??[];const needle=filter.trim().toLowerCase();const filtered=needle?all.filter(dossier=>dossier.display_name.toLowerCase().includes(needle)||dossier.slug.toLowerCase().includes(needle)):all;return[...filtered].sort((a,b)=>a.display_name.localeCompare(b.display_name))},[dossiers.data,filter]);if(dossiers.isError)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"red",mt:"md",children:"Erreur de chargement des dossiers."});return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{mb:"md",children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{placeholder:"Filtrer par nom ou slug",value:filter,onChange:event=>setFilter(event.currentTarget.value),w:isMobile?"100%":320})}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:"sm",children:0===rows.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",py:"xl",children:"Aucun dossier"}):rows.map(dossier=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{withBorder:true,p:"sm",radius:"md",children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:dossier.provider}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:dossier.display_name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:dossier.slug})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{checked:dossier.managed,onChange:event=>setConnectorManaged.mutate({id:dossier.airporting_id,provider:dossier.provider,managed:event.currentTarget.checked})})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{placeholder:"Responsable",data:optionData,value:dossier.responsable?String(dossier.responsable.id):null,onChange:v=>setResponsable.mutate({id:dossier.airporting_id,notionUserId:v?Number(v):null}),searchable:true,clearable:true,leftSection:dossier.responsable?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:dossier.responsable.avatar_url,size:20,radius:"xl"}):void 0})]})},`${dossier.airporting_id}:${dossier.provider}`))}):/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table,{striped:true,highlightOnHover:true,withTableBorder:true,stickyHeader:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Thead,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Source"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Dossier"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"G\xe9r\xe9"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Responsable"})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tbody,{children:0===rows.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tr,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{colSpan:4,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",children:"Aucun dossier"})})}):rows.map(dossier=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:dossier.provider})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:dossier.display_name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{checked:dossier.managed,onChange:event=>setConnectorManaged.mutate({id:dossier.airporting_id,provider:dossier.provider,managed:event.currentTarget.checked})})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{placeholder:"—",data:optionData,value:dossier.responsable?String(dossier.responsable.id):null,onChange:v=>setResponsable.mutate({id:dossier.airporting_id,notionUserId:v?Number(v):null}),searchable:true,clearable:true,w:220,leftSection:dossier.responsable?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:dossier.responsable.avatar_url,size:20,radius:"xl"}):void 0})})]},`${dossier.airporting_id}:${dossier.provider}`))})]})]})}const MAX_STARS=5;const REASON_BADGES={vide:{label:"Vide",color:"gray"},erreur_scan:{label:"Erreur de scan",color:"red"},couverture_connecteur:{label:"Non not\xe9",color:"gray"}};const VERDICT_STYLE={parfait:{color:"green",symbol:"✓"},vert:{color:"green",symbol:"✓"},orange:{color:"orange",symbol:"!"},rouge:{color:"red",symbol:"✕"},non_mesurable:{color:"gray",symbol:"\xb7"}};function starColor(score){if(score>=4)return"var(--mantine-color-green-6)";if(score>=3)return"var(--mantine-color-yellow-6)";if(score>=2)return"var(--mantine-color-orange-6)";return"var(--mantine-color-red-6)"}function Stars(props){const color=starColor(props.score);const items=[];for(let i=1;i<=MAX_STARS;i+=1)if(props.score>=i)items.push(/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconStarFilled,{size:13,color:color},i));else if(props.score>=i-.5)items.push(/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconStarHalfFilled,{size:13,color:color},i));else items.push(/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconStar,{size:13,color:"var(--mantine-color-dark-2)"},i));return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{gap:1,wrap:"nowrap",children:items})}function ControlList(props){const controls=props.row.score_controls??[];if(0===controls.length)return null;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:4,children:controls.map(c=>{const style=VERDICT_STYLE[c.verdict]??VERDICT_STYLE.non_mesurable;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",align:"flex-start",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:style.color,fw:700,w:12,children:style.symbol}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",children:c.label}),c.detail?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:c.detail}):null]})]},c.key)})})}function ScoreStars(props){const{row}=props;if(null==row.score){const badge=row.score_reason?REASON_BADGES[row.score_reason]:void 0;const fallback=badge??{label:"Non not\xe9",color:"gray"};const controls=row.score_controls??[];const content=/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{size:"xs",color:fallback.color,variant:"light",children:fallback.label});if("couverture_connecteur"!==row.score_reason)return content;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard,{width:300,shadow:"md",openDelay:150,withinPortal:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsx)("span",{style:{cursor:"help"},children:content})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard.Dropdown,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",fw:600,mb:6,children:"Pas assez de contr\xf4les mesurables"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{size:"xs",c:"dimmed",mb:6,children:["Ce connecteur n’expose pas les comptes n\xe9cessaires. Une note fond\xe9e sur ",controls.filter(c=>"non_mesurable"!==c.verdict).length," ","contr\xf4le(s) sur ",MAX_STARS," ne voudrait rien dire."]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ControlList,{row:row})]})]})}const stale=null!=row.refreshed_at&&null!=row.reconciliation_refresh_date&&row.refreshed_at<row.reconciliation_refresh_date;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard,{width:320,shadow:"md",openDelay:150,withinPortal:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{gap:6,wrap:"nowrap",style:{cursor:"help"},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Stars,{score:row.score})})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard.Dropdown,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",mb:6,wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Stars,{score:row.score}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{size:"xs",fw:600,children:[row.score.toLocaleString("fr-FR")," / ",MAX_STARS,row.score_label?` \xb7 ${row.score_label}`:""]})]}),row.score_capped_reason?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"orange",mb:6,children:row.score_capped_reason}):null,stale?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"yellow",mb:6,children:"Chiffres repris d’un calcul ant\xe9rieur."}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(ControlList,{row:row})]})]})}function scoreBucket(row){if(null==row.score)return"non_note";if(row.score>=4)return"bon";if(row.score>=3)return"moyen";return"faible"}function ManagedBadge(props){const{managed}=props;if(!managed)return null;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Image,{src:(0,logoDev.j)("airporting.com"),alt:"G\xe9r\xe9 par Airporting",title:"G\xe9r\xe9 par Airporting",w:18,h:18,fit:"contain",radius:"sm",style:{aspectRatio:1}})}const BANK_DOMAINS=[["bnp paribas","bnpparibas.com"],["societe generale","societegenerale.fr"],["qonto","qonto.com"],["revolut","revolut.com"],["stripe","stripe.com"],["wise","wise.com"],["transferwise","wise.com"],["ibanfirst","ibanfirst.com"],["credit agricole","credit-agricole.fr"],["credit mutuel","creditmutuel.fr"],["banque populaire","banquepopulaire.fr"],["caisse d","caisse-epargne.fr"],["american express","americanexpress.com"],["amex","americanexpress.com"],["paypal","paypal.com"],["hsbc","hsbc.com"],["pennylane","pennylane.com"],["mercury","mercury.com"],["lcl","lcl.fr"],["boursorama","boursorama.com"],["bpce","bpce.fr"]];function normalize(value){return value.toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu,"")}function BankLogo(props){const{label,size=20}=props;const normalized=label?normalize(label):"";const match=BANK_DOMAINS.find(([needle])=>normalized.includes(needle));if(!match)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,children:"\uD83C\uDFE6"});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Image,{src:(0,logoDev.j)(match[1]),alt:label??"",title:label??"",w:size,h:size,fit:"contain",radius:"sm",style:{aspectRatio:1}})}var CompanyLogo=__webpack_require__(3437);var PageHeader=__webpack_require__(1354);function drillCategoryLabel(category){if("471"===category)return"D\xe9tail 471";if("58"===category)return"D\xe9tail 58";if("supplier"===category)return"Fournisseurs d\xe9biteurs 401";if("customer"===category)return"Clients cr\xe9diteurs 411";if("factor"===category)return"Cr\xe9ances c\xe9d\xe9es au factor 4116";if("reconciliation"===category)return"Rappros bancaires";return null}function syncBadge(isoDate){if(!isoDate)return null;const days=Math.floor((Date.now()-new Date(isoDate).getTime())/864e5);let color="green";if(days>10)color="red";else if(days>4)color="orange";return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Badge,{ml:6,size:"xs",color:color,variant:"light",children:[days,"j"]})}function isStaleRefresh(refreshedAt,computedAt){if(!refreshedAt)return false;const refreshedDay=refreshedAt.slice(0,10);const referenceDay=(computedAt??new Date().toISOString()).slice(0,10);return refreshedDay<referenceDay}function refreshKoBadge(refreshedAt,computedAt){if(!isStaleRefresh(refreshedAt,computedAt))return null;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tooltip,{label:`Chiffres du ${formatDate(refreshedAt?.slice(0,10))} \u{2014} refresh KO ce run`,children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{ml:6,size:"xs",color:"yellow",variant:"light",children:"refresh KO"})})}function factorKeur(row){const v=row.total_factor_eur??0;return 0===v?"—":formatKeur(v,row.currency)}function withDossierFilter(rows,dossier){if(!dossier)return rows;return rows.filter(r=>r.dossier===dossier)}function withManagedFilter(rows,managedOnly){if(!managedOnly)return rows;return rows.filter(r=>true===r.managed)}const NO_RESPONSABLE="__none__";function withResponsableFilter(rows,responsable){if(!responsable)return rows;if(responsable===NO_RESPONSABLE)return rows.filter(r=>null==r.responsable);return rows.filter(r=>String(r.responsable?.id)===responsable)}function withScoreFilter(rows,bucket){if("all"===bucket)return rows;return rows.filter(r=>scoreBucket(r)===bucket)}function formatCurrency(value,currency){if(null==value)return"—";try{return value.toLocaleString("fr-FR",{style:"currency",currency:currency||"EUR",minimumFractionDigits:0,maximumFractionDigits:0})}catch{return`${Math.round(value).toLocaleString("fr-FR")} ${currency}`}}function formatNumber(value){if(null==value)return"—";return value.toLocaleString("fr-FR")}function formatDate(value){if(!value)return"—";return value.split("-").reverse().join("/")}function currencySymbol(code){const currency=code||"EUR";try{const parts=new Intl.NumberFormat("fr-FR",{style:"currency",currency}).formatToParts(0);return parts.find(part=>"currency"===part.type)?.value??currency}catch{return currency}}function formatKeur(value,currency){if(null==value)return"—";const keur=(Math.round(value/1e3)||0).toLocaleString("fr-FR");return`${keur} k${currencySymbol(currency)}`}function sumBy(rows,pick){return rows.reduce((acc,row)=>acc+(pick(row)??0),0)}function DrillSectionTitle(props){const isSample=null!=props.total&&props.count>0&&Math.abs(props.visibleSum-props.total)>.5;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Title,{order:5,mb:6,children:[props.label," (",props.count,isSample?" affich\xe9s":"",")",null!=props.total?` \xb7 total ${formatCurrency(props.total,props.currency)}`:""]})}function ClickableMetricValue(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,style:{cursor:"pointer",display:"block",width:"100%"},onClick:e=>{e.stopPropagation();props.onClick()},children:props.value})}function updateDateParts(row){return[{label:"Derni\xe8re \xe9criture",iso:row.last_entry_date},{label:"Dernier import GLA",iso:row.gla_last_sync_date?.slice(0,10)??null},{label:"Rappros / factures",iso:row.reconciliation_refresh_date?.slice(0,10)??null}]}function oldestUpdateDate(parts){const present=parts.map(p=>p.iso).filter(v=>null!=v);if(0===present.length)return null;return present.reduce((a,b)=>a<b?a:b)}function UpdateDateCell(props){const parts=updateDateParts(props.row);const oldest=oldestUpdateDate(parts);if(null==oldest)return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"});return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.HoverCard,{withArrow:true,shadow:"md",openDelay:120,position:"bottom-start",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Target,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{span:true,style:{cursor:"default"},children:[formatDate(oldest),syncBadge(oldest),refreshKoBadge(props.row.refreshed_at,props.computedAt),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"dimmed",children:" ▾"})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.HoverCard.Dropdown,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:4,children:parts.map(p=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",gap:"lg",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:p.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",children:p.iso?formatDate(p.iso):"—"})]},p.label))})})]})}function clickableCardStyle(clickable){return clickable?{cursor:"pointer"}:void 0}function MobileMetricGrid({metrics}){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:2,spacing:"xs",children:metrics.map(metric=>/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:metric.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",fw:700,c:metric.color,lineClamp:2,children:metric.value})]},metric.label))})}function MobileAccountingList(props){const{rows,emptyLabel="Aucune ligne",getKey,renderHeader,getMetrics,onRowClick}=props;if(0===rows.length)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",ta:"center",py:"xl",children:emptyLabel});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Stack,{gap:"sm",children:rows.map((row,index)=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{withBorder:true,p:"sm",radius:"md",onClick:onRowClick?()=>onRowClick(row):void 0,style:clickableCardStyle(!!onRowClick),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[renderHeader(row),/*#__PURE__*/(0,jsx_runtime.jsx)(MobileMetricGrid,{metrics:getMetrics(row)})]})},getKey(row,index)))})}function MobileDossierLineList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:row=>props.onDrill(row),getKey:row=>`${row.source}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",align:"center",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsx)(CompanyLogo.D,{slug:row.slug,updatedAt:row.logo_updated_at,size:24}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.dossier}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:6,wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.responsable?.name??"Sans responsable"})]})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ScoreStars,{row:row})]}),getMetrics:row=>[{label:"471",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.solde_attente_eur,row.currency),onClick:()=>props.onDrill(row,"471")})},{label:"58",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.solde_virements_eur,row.currency),onClick:()=>props.onDrill(row,"58")})},{label:"401",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.total_fournisseurs_eur,row.currency),onClick:()=>props.onDrill(row,"supplier")})},{label:"411",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(row.total_clients_eur,row.currency),onClick:()=>props.onDrill(row,"customer")})},{label:"Cr\xe9ances c\xe9d\xe9es",value:/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:factorKeur(row),onClick:()=>props.onDrill(row,"factor")})},{label:"Date mise \xe0 jour",value:(()=>{const oldest=oldestUpdateDate(updateDateParts(row));if(null==oldest)return"—";return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[formatDate(oldest),syncBadge(oldest),refreshKoBadge(row.refreshed_at,props.computedAt)]})})()},{label:"Rappro",value:(()=>{const text="pennylane"!==row.source?"—":row.last_reconciliation_date?formatDate(row.last_reconciliation_date):props.dossiersWithActiveReco.has(row.dossier)?"jamais":"—";if("—"===text)return text;return/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:text,onClick:()=>props.onDrill(row,"reconciliation")})})(),color:"pennylane"===row.source&&null==row.last_reconciliation_date&&props.dossiersWithActiveReco.has(row.dossier)?"red":void 0}]})}function MobileSuspenseList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:(row,index)=>`${row.dossier}:${row.date}:${row.numero_piece??index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.dossier}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:2,children:row.libelle_ecriture??row.libelle_compte??"Sans libell\xe9"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde net",value:formatCurrency(row.solde_net)},{label:"Date",value:formatDate(row.date)},{label:"Compte",value:row.numero_compte??"—"},{label:"Pi\xe8ce",value:row.numero_piece??"—"}]})}function MobileSupplierList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:(row,index)=>`${row.dossier}:${row.fournisseur}:${index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.fournisseur}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.dossier})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde d\xe9biteur",value:formatCurrency(row.solde_debiteur_eur)},{label:"\xc9critures",value:formatNumber(row.nb_ecritures)},{label:"Devise",value:row.devise||"—"}]})}function MobileCustomerList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:(row,index)=>`${row.dossier}:${row.client}:${index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:row.client}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.dossier})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde cr\xe9diteur",value:formatCurrency(row.solde_crediteur_eur)},{label:"\xc9critures",value:formatNumber(row.nb_ecritures)},{label:"Devise",value:row.devise||"—"}]})}function MobileReconciliationList({rows,onToggleMute}){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:rows,getKey:(row,index)=>`${row.dossier}:${row.bank_label??index}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"center",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BankLogo,{label:row.bank_label,size:24}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,c:row.muted?"dimmed":void 0,children:row.bank_label??"Banque"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{size:"sm",checked:!row.muted,label:row.muted?"non suivi":"suivi",onLabel:"suivi",onChange:e=>onToggleMute({company_id:row.airporting_company_id,account_id:row.account_id,muted:!e.currentTarget.checked})})]}),getMetrics:row=>[{label:"Dernier rappro",value:row.muted?"non suivi":row.last_reconciled_period_end?formatDate(row.last_reconciled_period_end):"jamais",color:row.muted?"dimmed":row.last_reconciled_period_end?void 0:"red"}]})}function MobileTopSuspenseList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:row=>`471:${row.rank}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:["#",row.rank," ",row.dossier]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.top_libelle??"Sans libell\xe9"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Solde 471",value:formatCurrency(row.solde_eur)},{label:"\xc9critures",value:formatNumber(row.nb_ecritures)},{label:"Top montant",value:formatCurrency(row.top_montant)}]})}function MobileTopSupplierList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:row=>`401:${row.rank}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:["#",row.rank," ",row.dossier]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.top_nom??"Sans fournisseur"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Total d\xe9biteur",value:formatCurrency(row.total_eur)},{label:"Fournisseurs",value:formatNumber(row.nb_fournisseurs)},{label:"Top montant",value:formatCurrency(row.top_montant)}]})}function MobileTopCustomerList(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(MobileAccountingList,{rows:props.rows,onRowClick:props.onRowClick,getKey:row=>`411:${row.rank}:${row.dossier}`,renderHeader:row=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",align:"flex-start",gap:"sm",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",miw:0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:row.source}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Text,{fw:700,size:"sm",lineClamp:1,children:["#",row.rank," ",row.dossier]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",lineClamp:1,children:row.top_nom??"Sans client"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:row.managed})]}),getMetrics:row=>[{label:"Total cr\xe9diteur",value:formatCurrency(row.total_eur)},{label:"Clients",value:formatNumber(row.nb_clients)},{label:"Top montant",value:formatCurrency(row.top_montant)}]})}function EtatSaisieApp(){const isMobile=(0,esm_index_mjs_.useMediaQuery)("(max-width: 48em)",false);const latest=useEtatSaisieLatest();const recompute=useEtatSaisieRecompute();const setReconciliationMute=useSetReconciliationMute();const[tab,setTab]=(0,consume_shared_module_default_react_strict_.useState)("resume");const[selectedDossier,setSelectedDossier]=(0,consume_shared_module_default_react_strict_.useState)(null);const[managedOnly,setManagedOnly]=(0,consume_shared_module_default_react_strict_.useState)(true);const[statusFilter,setStatusFilter]=(0,consume_shared_module_default_react_strict_.useState)("all");const[selectedResponsable,setSelectedResponsable]=(0,consume_shared_module_default_react_strict_.useState)(null);const[drillDossier,setDrillDossier]=(0,consume_shared_module_default_react_strict_.useState)(null);const[drillProvider,setDrillProvider]=(0,consume_shared_module_default_react_strict_.useState)(null);const[drillCategory,setDrillCategory]=(0,consume_shared_module_default_react_strict_.useState)(null);const d=latest.data;const allDossiers=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{if(!d?.available)return[];const set=new Set;for(const r of d.suspense_rows??[])set.add(r.dossier);for(const r of d.supplier_rows??[])set.add(r.dossier);for(const r of d.customer_rows??[])set.add(r.dossier);for(const r of d.dossier_lines??[])set.add(r.dossier);for(const r of d.reconciliation_rows??[])set.add(r.dossier);for(const r of d.summary?.top_5_suspense??[])set.add(r.dossier);for(const r of d.summary?.top_5_supplier_debtors??[])set.add(r.dossier);for(const r of d.summary?.top_5_customer_creditors??[])set.add(r.dossier);return[...set].sort()},[d]);const responsableOptions=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const byId=new Map;let hasNone=false;for(const line of d?.dossier_lines??[])if(line.responsable)byId.set(line.responsable.id,line.responsable.name);else hasNone=true;const options=[...byId.entries()].map(([id,name])=>({value:String(id),label:name})).sort((a,b)=>a.label.localeCompare(b.label));if(hasNone)options.push({value:NO_RESPONSABLE,label:"Sans responsable"});return options},[d]);const dossiersWithActiveReco=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const set=new Set;for(const r of d?.reconciliation_rows??[])if(!r.muted)set.add(r.dossier);return set},[d]);const openDrill=(0,consume_shared_module_default_react_strict_.useCallback)((row,category=null)=>{setDrillDossier(row.dossier);setDrillProvider(row.source);setDrillCategory(category)},[]);const closeDrill=(0,consume_shared_module_default_react_strict_.useCallback)(()=>{setDrillDossier(null);setDrillProvider(null);setDrillCategory(null)},[]);const unifiedCols=(0,consume_shared_module_default_react_strict_.useMemo)(()=>buildUnifiedCols(d?.computed_at,openDrill,dossiersWithActiveReco),[d?.computed_at,openDrill,dossiersWithActiveReco]);const drillData=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{if(!drillDossier||!d?.available)return null;const scoped=rows=>(rows??[]).filter(r=>r.dossier===drillDossier&&r.source===drillProvider);const reconciliation=scoped(d.reconciliation_rows).sort((a,b)=>{const av=a.last_reconciled_period_end??"0000-00-00";const bv=b.last_reconciled_period_end??"0000-00-00";return av.localeCompare(bv)});const lines=(d.dossier_lines??[]).filter(l=>l.dossier===drillDossier&&l.source===drillProvider);const sumLines=pick=>lines.reduce((acc,l)=>acc+(pick(l)??0),0);return{reconciliation,suspense:scoped(d.suspense_rows),internalTransfers:scoped(d.internal_transfer_rows),supplier:scoped(d.supplier_rows),customer:scoped(d.customer_rows),factor:scoped(d.factor_rows??[]),currency:lines[0]?.currency??null,totals:{suspense:sumLines(l=>l.solde_attente_eur),internalTransfers:sumLines(l=>l.solde_virements_eur),supplier:sumLines(l=>l.total_fournisseurs_eur),customer:sumLines(l=>l.total_clients_eur),factor:sumLines(l=>l.total_factor_eur??0)}}},[drillDossier,drillProvider,d]);const summaryRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withScoreFilter(withResponsableFilter(withManagedFilter(withDossierFilter(d?.dossier_lines??[],selectedDossier),managedOnly),selectedResponsable),statusFilter),[d,selectedDossier,managedOnly,selectedResponsable,statusFilter]);const scoreTiles=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{const base=withResponsableFilter(withManagedFilter(withDossierFilter(d?.dossier_lines??[],selectedDossier),managedOnly),selectedResponsable);const count=bucket=>base.filter(r=>scoreBucket(r)===bucket).length;return[{key:"all",label:"Dossiers",value:base.length,color:void 0},{key:"bon",label:"4 \xe0 5 \xe9toiles",value:count("bon"),color:"green"},{key:"moyen",label:"3 \xe9toiles",value:count("moyen"),color:"yellow"},{key:"faible",label:"1 \xe0 2 \xe9toiles",value:count("faible"),color:"red"},{key:"non_note",label:"Non not\xe9s",value:count("non_note"),color:"gray"}]},[d,selectedDossier,managedOnly,selectedResponsable]);const topSuspenseRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withDossierFilter(d?.summary?.top_5_suspense??[],selectedDossier),[d,selectedDossier]);const topSupplierRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withDossierFilter(d?.summary?.top_5_supplier_debtors??[],selectedDossier),[d,selectedDossier]);const topCustomerRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withDossierFilter(d?.summary?.top_5_customer_creditors??[],selectedDossier),[d,selectedDossier]);const suspenseRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.suspense_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);const internalTransferRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.internal_transfer_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);const supplierRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.supplier_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);const customerRows=(0,consume_shared_module_default_react_strict_.useMemo)(()=>withManagedFilter(withDossierFilter(d?.customer_rows??[],selectedDossier),managedOnly),[d,selectedDossier,managedOnly]);return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Container,{fluid:true,my:isMobile?0:"md",px:isMobile?12:void 0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(PageHeader.m,{title:"Accounting",updatedAt:d?.computed_at?new Date(d.computed_at).getTime():latest.dataUpdatedAt,isFetching:latest.isFetching,isError:latest.isError,onRefresh:()=>latest.refetch(),actions:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{loading:recompute.isPending,onClick:()=>recompute.mutate(),variant:"light",size:isMobile?"xs":"sm",children:"Recalculer"})}),d&&!d.available?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"dimmed",children:"Aucun snapshot disponible — lancez \xab Recalculer \xbb ou attendez le run nocturne."}):/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{mb:"md",align:"end",gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"Focus dossier",placeholder:"Tous les dossiers",data:allDossiers.map(dos=>({value:dos,label:dos})),value:selectedDossier,onChange:setSelectedDossier,searchable:true,clearable:true,w:isMobile?"100%":320}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"Responsable",placeholder:"Tous les responsables",data:responsableOptions,value:selectedResponsable,onChange:setSelectedResponsable,searchable:true,clearable:true,w:isMobile?"100%":240}),(selectedDossier||selectedResponsable)&&/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"subtle",onClick:()=>{setSelectedDossier(null);setSelectedResponsable(null)},w:isMobile?"100%":void 0,children:"R\xe9initialiser"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:managedOnly?"managed":"all",onChange:v=>setManagedOnly("managed"===v),data:[{label:"G\xe9r\xe9s",value:"managed"},{label:"Tous",value:"all"}],w:isMobile?"100%":void 0})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Tabs,{value:tab,onChange:setTab,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Tabs.List,{style:isMobile?{flexWrap:"nowrap",overflowX:"auto",overflowY:"hidden"}:void 0,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Tab,{value:"resume",children:"R\xe9sum\xe9"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Tab,{value:"dossiers",children:"Dossiers"})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Tabs.Panel,{value:"resume",pt:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SimpleGrid,{cols:isMobile?2:5,mb:"md",spacing:"sm",children:scoreTiles.map(tile=>{const active=statusFilter===tile.key;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Card,{withBorder:active,style:{cursor:"pointer",borderColor:active?"var(--mantine-color-blue-5)":void 0},onClick:()=>setStatusFilter(tile.key),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:tile.label}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:700,size:"xl",c:tile.color,children:tile.value})]},tile.key)})}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileDossierLineList,{rows:summaryRows,onDrill:openDrill,computedAt:d?.computed_at,dossiersWithActiveReco:dossiersWithActiveReco}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:unifiedCols,rows:summaryRows,onRowClick:openDrill,rowKey:r=>`${r.source}:${r.dossier}`})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"top5",pt:"md",children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"lg",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,mb:"sm",children:"Top 5 comptes d'attente (471)"}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileTopSuspenseList,{rows:topSuspenseRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:TOP_SUSPENSE_COLS,rows:topSuspenseRows,onRowClick:openDrill})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,mb:"sm",children:"Top 5 fournisseurs d\xe9biteurs (401)"}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileTopSupplierList,{rows:topSupplierRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:TOP_SUPPLIER_COLS,rows:topSupplierRows,onRowClick:openDrill})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,mb:"sm",children:"Top 5 clients cr\xe9diteurs (411)"}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileTopCustomerList,{rows:topCustomerRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:TOP_CUSTOMER_COLS,rows:topCustomerRows,onRowClick:openDrill})]})]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s471",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:suspenseRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:SUSPENSE_COLS,rows:suspenseRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s58",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:internalTransferRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:SUSPENSE_COLS,rows:internalTransferRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s401",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSupplierList,{rows:supplierRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:SUPPLIER_COLS,rows:supplierRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"s411",pt:"md",children:isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileCustomerList,{rows:customerRows,onRowClick:openDrill}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:CUSTOMER_COLS,rows:customerRows,onRowClick:openDrill})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Tabs.Panel,{value:"dossiers",pt:"md",children:/*#__PURE__*/(0,jsx_runtime.jsx)(DossiersTab,{})})]})]}),latest.isError?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{c:"red",mt:"md",children:"Erreur de chargement."}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Drawer,{opened:!!drillDossier,onClose:closeDrill,position:isMobile?"bottom":"right",size:isMobile?"calc(100dvh - 88px)":"xl",title:drillDossier?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",align:"center",wrap:isMobile?"wrap":"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:isMobile?5:4,children:drillCategoryLabel(drillCategory)?`${drillCategoryLabel(drillCategory)} : ${drillDossier}`:`Dossier ${drillDossier}`}),drillProvider&&/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:4,wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:drillProvider}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:drillProvider})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{size:"xs",variant:"light",onClick:()=>{setSelectedDossier(drillDossier);closeDrill()},children:"Focus sur ce dossier"})]}):null,styles:isMobile?{body:{padding:12,paddingBottom:24}}:void 0,children:drillData&&/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"md",children:[(null===drillCategory||"reconciliation"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Title,{order:5,mb:6,children:["Rappros bancaires (",drillData.reconciliation.length,")"]}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileReconciliationList,{rows:drillData.reconciliation,onToggleMute:setReconciliationMute.mutate}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:buildDrillRecoCols(setReconciliationMute.mutate),rows:drillData.reconciliation})]}),(null===drillCategory||"471"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Comptes d'attente 471",count:drillData.suspense.length,visibleSum:sumBy(drillData.suspense,r=>r.solde_net),total:drillData.totals.suspense,currency:drillData.currency}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:drillData.suspense}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_SUSPENSE_COLS,rows:drillData.suspense})]}),(null===drillCategory||"58"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Virements internes 58",count:drillData.internalTransfers.length,visibleSum:sumBy(drillData.internalTransfers,r=>r.solde_net),total:drillData.totals.internalTransfers,currency:drillData.currency}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSuspenseList,{rows:drillData.internalTransfers}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_SUSPENSE_COLS,rows:drillData.internalTransfers})]}),(null===drillCategory||"supplier"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Fournisseurs d\xe9biteurs 401",count:drillData.supplier.length,visibleSum:sumBy(drillData.supplier,r=>r.solde_debiteur_eur),total:drillData.totals.supplier,currency:drillData.currency}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileSupplierList,{rows:drillData.supplier}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_SUPPLIER_COLS,rows:drillData.supplier})]}),(null===drillCategory||"customer"===drillCategory)&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Clients cr\xe9diteurs 411",count:drillData.customer.length,visibleSum:sumBy(drillData.customer,r=>r.solde_crediteur_eur),total:drillData.totals.customer,currency:drillData.currency}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileCustomerList,{rows:drillData.customer}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_CUSTOMER_COLS,rows:drillData.customer})]}),(null===drillCategory||"factor"===drillCategory)&&drillData.factor.length>0&&/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(DrillSectionTitle,{label:"Cr\xe9ances c\xe9d\xe9es au factor 4116",count:drillData.factor.length,visibleSum:sumBy(drillData.factor,r=>r.solde_eur),total:drillData.totals.factor}),isMobile?/*#__PURE__*/(0,jsx_runtime.jsx)(MobileCustomerList,{rows:drillData.factor.map(factorRowAsCustomerRow)}):/*#__PURE__*/(0,jsx_runtime.jsx)(DetailTable,{columns:DRILL_FACTOR_COLS,rows:drillData.factor})]})]})})]})}const TOP_SUSPENSE_COLS=[{key:"rank",label:"#",numeric:true},{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"G\xe9r\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"solde_eur",label:"Solde 471 (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"top_libelle",label:"Top \xe9criture"},{key:"top_montant",label:"Montant",numeric:true}];const TOP_SUPPLIER_COLS=[{key:"rank",label:"#",numeric:true},{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"total_eur",label:"Total d\xe9biteur (€)",numeric:true},{key:"nb_fournisseurs",label:"Nb fourn.",numeric:true},{key:"top_nom",label:"Top fournisseur"},{key:"top_montant",label:"Montant",numeric:true}];const TOP_CUSTOMER_COLS=[{key:"rank",label:"#",numeric:true},{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"total_eur",label:"Total cr\xe9diteur (€)",numeric:true},{key:"nb_clients",label:"Nb clients",numeric:true},{key:"top_nom",label:"Top client"},{key:"top_montant",label:"Montant",numeric:true}];function buildUnifiedCols(computedAt,openDrill,dossiersWithActiveReco){return[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"score",label:"Tenue",hint:"Note de tenue comptable sur 5 : un point par contr\xf4le pass\xe9 (saisie \xe0 jour, banques rapproch\xe9es, compte d’attente, virements internes, comptes tiers). Survolez pour le d\xe9tail.",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ScoreStars,{row:r})},{key:"dossier",label:"Dossier",render:r=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(CompanyLogo.D,{slug:r.slug,updatedAt:r.logo_updated_at,size:20}),/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.dossier})]})},{key:"responsable",label:"Responsable",sortValue:r=>r.responsable?.name??"",render:r=>r.responsable?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Avatar,{src:r.responsable.avatar_url,size:20,radius:"xl"}),/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.responsable.name})]}):/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"})},{key:"fiscal_year_end",label:"Cl\xf4ture",render:r=>r.fiscal_year_end?/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.fiscal_year_end.split("-").reverse().join("/")}):/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"})},{key:"solde_attente_eur",label:"Solde 471",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.solde_attente_eur,r.currency),onClick:()=>openDrill(r,"471")})},{key:"solde_virements_eur",label:"Solde 58",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.solde_virements_eur,r.currency),onClick:()=>openDrill(r,"58")})},{key:"total_fournisseurs_eur",label:"Fourn. d\xe9biteurs",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.total_fournisseurs_eur,r.currency),onClick:()=>openDrill(r,"supplier")})},{key:"total_clients_eur",label:"Clients cr\xe9diteurs",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:formatKeur(r.total_clients_eur,r.currency),onClick:()=>openDrill(r,"customer")})},{key:"total_factor_eur",label:"Cr\xe9ances c\xe9d\xe9es",hint:"Cr\xe9ances c\xe9d\xe9es au factor (comptes 4116) : solde cr\xe9diteur par construction, il vaut moins l’encours c\xe9d\xe9 au portail du factor. Ce n’est pas une anomalie clients.",numeric:true,render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:factorKeur(r),onClick:()=>openDrill(r,"factor")})},{key:"last_entry_date",label:"Date mise \xe0 jour",hint:"La plus ancienne des 3 dates de fra\xeecheur : derni\xe8re \xe9criture comptable, dernier import GLA, dernier passage du scrapper rappros/factures. Survolez pour le d\xe9tail des 3 dates.",render:row=>/*#__PURE__*/(0,jsx_runtime.jsx)(UpdateDateCell,{row:row,computedAt:computedAt})},{key:"last_reconciliation_date",label:"Rappro le + en retard",render:r=>{if("pennylane"!==r.source)return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"});if(null==r.last_reconciliation_date){if(!dossiersWithActiveReco.has(r.dossier))return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"dimmed",children:"—"});return/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"red",fw:700,children:"jamais"}),onClick:()=>openDrill(r,"reconciliation")})}return/*#__PURE__*/(0,jsx_runtime.jsx)(ClickableMetricValue,{value:r.last_reconciliation_date.split("-").reverse().join("/"),onClick:()=>openDrill(r,"reconciliation")})}},{key:"pending_supplier_invoices",label:"Fact. fourn. \xe0 traiter",numeric:true,render:r=>{if("pennylane"!==r.source||null==r.pending_supplier_invoices)return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:"—"});return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.pending_supplier_invoices})}}]}const SUSPENSE_COLS=[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"date",label:"Date"},{key:"numero_compte",label:"N\xb0 Compte"},{key:"libelle_compte",label:"Libell\xe9 compte"},{key:"libelle_ecriture",label:"Libell\xe9 \xe9criture"},{key:"journal",label:"Journal"},{key:"numero_piece",label:"N\xb0 Pi\xe8ce"},{key:"debit",label:"D\xe9bit",numeric:true},{key:"credit",label:"Cr\xe9dit",numeric:true},{key:"solde_net",label:"Solde net",numeric:true},{key:"lettre",label:"Lettr\xe9"},{key:"devise",label:"Devise"}];const SUPPLIER_COLS=[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"fournisseur",label:"Fournisseur"},{key:"solde_debiteur_eur",label:"Solde d\xe9biteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr. non lettr\xe9es",numeric:true},{key:"devise",label:"Devise"}];const CUSTOMER_COLS=[{key:"source",label:"Source",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ProviderIcon,{provider:r.source})},{key:"managed",label:"Manag\xe9",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(ManagedBadge,{managed:r.managed})},{key:"dossier",label:"Dossier"},{key:"client",label:"Client"},{key:"solde_crediteur_eur",label:"Solde cr\xe9diteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr. non lettr\xe9es",numeric:true},{key:"devise",label:"Devise"}];function buildDrillRecoCols(onToggleMute){return[{key:"bank_label",label:"Banque",render:r=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(BankLogo,{label:r.bank_label,size:20}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:r.muted?"dimmed":void 0,children:r.bank_label??"—"})]})},{key:"last_reconciled_period_end",label:"Dernier rappro",render:r=>{if(r.muted)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"dimmed",children:"non suivi"});if(null==r.last_reconciled_period_end)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{span:true,c:"red",fw:700,children:"jamais"});return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:r.last_reconciled_period_end.split("-").reverse().join("/")})}},{key:"muted",label:"Suivi",render:r=>/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Switch,{size:"sm",checked:!r.muted,label:r.muted?"non suivi":"suivi",onLabel:"suivi",onChange:e=>onToggleMute({company_id:r.airporting_company_id,account_id:r.account_id,muted:!e.currentTarget.checked})})}]}const DRILL_SUSPENSE_COLS=[{key:"date",label:"Date"},{key:"numero_compte",label:"N\xb0 Compte"},{key:"libelle_ecriture",label:"Libell\xe9"},{key:"debit",label:"D\xe9bit",numeric:true},{key:"credit",label:"Cr\xe9dit",numeric:true},{key:"solde_net",label:"Solde net",numeric:true},{key:"lettre",label:"Lettr\xe9"}];const DRILL_SUPPLIER_COLS=[{key:"fournisseur",label:"Fournisseur"},{key:"solde_debiteur_eur",label:"Solde d\xe9biteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"devise",label:"Devise"}];const DRILL_FACTOR_COLS=[{key:"compte",label:"Compte"},{key:"solde_eur",label:"Solde (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"devise",label:"Devise"}];function factorRowAsCustomerRow(r){return{source:r.source,dossier:r.dossier,managed:r.managed,client:r.compte,solde_crediteur_eur:r.solde_eur,nb_ecritures:r.nb_ecritures,devise:r.devise}}const DRILL_CUSTOMER_COLS=[{key:"client",label:"Client"},{key:"solde_crediteur_eur",label:"Solde cr\xe9diteur (€)",numeric:true},{key:"nb_ecritures",label:"Nb \xe9cr.",numeric:true},{key:"devise",label:"Devise"}];function EtatSaisie(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(consume_shared_module_default_react_strict_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(providers.C,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(EtatSaisieApp,{})})})}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(globalThis["chunk_tech_app"]=globalThis["chunk_tech_app"]||[]).push([["2149"],{1334:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{m:()=>useSalesLeads});var _tanstack_react_query__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(6197);var _useApi_ts__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(4148);function useSalesLeads(status){const api=(0,_useApi_ts__WEBPACK_IMPORTED_MODULE_1__.h)();return(0,_tanstack_react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)({queryKey:["tech","sales","leads",status],queryFn:async()=>(await api.sales.listLeadsV1({status})).data,refetchOnWindowFocus:true})}},9328:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{A:()=>NewLeadModal});var jsx_runtime=__webpack_require__(5893);var index_mjs_=__webpack_require__(207);var esm_index_mjs_=__webpack_require__(9038);var form_esm_index_mjs_=__webpack_require__(5021);var notifications_esm_index_mjs_=__webpack_require__(1455);var index_js_=__webpack_require__(6197);var useApi=__webpack_require__(4148);function useCreateLead(){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.createLeadV1(payload)).data,onSuccess:data=>{notifications_esm_index_mjs_.notifications.show({title:"Lead",message:data?.attached?"Coordonn\xe9e d\xe9j\xe0 connue — rattach\xe9 au lead existant":"Lead cr\xe9\xe9",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Lead",message:err?.error?.error??err?.message??"\xc9chec de la cr\xe9ation",color:"red"})}})}function NewLeadModal({opened,onClose,onCreated}){const create=useCreateLead();const form=(0,form_esm_index_mjs_.useForm)({initialValues:{first_name:"",last_name:"",company:"",email:"",phone:"",linkedin_url:"",note:"",next_action_due_at:null,request_reconstruction:true}});function submit(values){const hasAny=Boolean(values.first_name)||Boolean(values.last_name)||Boolean(values.company)||Boolean(values.email)||Boolean(values.phone)||Boolean(values.linkedin_url);if(!hasAny)return void notifications_esm_index_mjs_.notifications.show({title:"Lead",message:"Renseignez au moins un nom, une entreprise ou une coordonn\xe9e",color:"orange"});create.mutate({first_name:values.first_name||null,last_name:values.last_name||null,company:values.company||null,emails:values.email?[values.email]:[],phones:values.phone?[values.phone]:[],linkedin_url:values.linkedin_url||null,note:values.note||null,next_action_due_at:values.next_action_due_at?new Date(values.next_action_due_at).toISOString():null,request_reconstruction:values.request_reconstruction},{onSuccess:data=>{onCreated?.({id:data.id,first_name:values.first_name||null,last_name:values.last_name||null,company:values.company||null});form.reset();onClose()}})}return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Modal,{opened:opened,onClose:onClose,title:"Nouveau lead",children:/*#__PURE__*/(0,jsx_runtime.jsx)("form",{onSubmit:form.onSubmit(submit),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{grow:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Pr\xe9nom",...form.getInputProps("first_name")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Nom",...form.getInputProps("last_name")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Entreprise",...form.getInputProps("company")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"URL LinkedIn",placeholder:"https://www.linkedin.com/in/...",...form.getInputProps("linkedin_url")}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{grow:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Email",...form.getInputProps("email")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"T\xe9l\xe9phone",...form.getInputProps("phone")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Textarea,{label:"Note / prochaine action",...form.getInputProps("note")}),/*#__PURE__*/(0,jsx_runtime.jsx)(esm_index_mjs_.DateInput,{label:"Relancer le",placeholder:"Pas de date fix\xe9e",clearable:true,valueFormat:"DD/MM/YYYY",...form.getInputProps("next_action_due_at")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Checkbox,{label:"Reconstruire l'historique (recherche multi-sources)",...form.getInputProps("request_reconstruction",{type:"checkbox"})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"default",onClick:onClose,children:"Annuler"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{type:"submit",loading:create.isPending,children:"Cr\xe9er"})]})]})})})}},479:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{P:()=>TEMPERATURE_META,o:()=>TEMPERATURE_ORDER});const TEMPERATURE_META={burning:{emoji:"\uD83D\uDD25\uD83D\uDD25",label:"Br\xfblant",order:5},hot:{emoji:"\uD83D\uDD25",label:"Chaud",order:4},warm:{emoji:"\uD83C\uDF21️",label:"Ti\xe8de",order:3},cold:{emoji:"❄️",label:"Froid",order:2},frozen:{emoji:"\uD83E\uDDCA",label:"Gel\xe9",order:1}};const TEMPERATURE_ORDER=["burning","hot","warm","cold","frozen"]},2722:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>Pipeline});var jsx_runtime=__webpack_require__(5893);var consume_shared_module_default_react_strict_=__webpack_require__(5850);var providers=__webpack_require__(7034);var index_mjs_=__webpack_require__(207);var esm_index_mjs_=__webpack_require__(3863);var index_js_=__webpack_require__(6197);var useApi=__webpack_require__(4148);function useSalesDeals(pipeline,status){const api=(0,useApi.h)();return(0,index_js_.useQuery)({queryKey:["tech","sales","deals",pipeline,status],queryFn:async()=>(await api.sales.listDealsV1({pipeline,status})).data,refetchOnWindowFocus:true})}var dates_esm_index_mjs_=__webpack_require__(9038);var notifications_esm_index_mjs_=__webpack_require__(1455);function useDeleteDeal(){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async id=>(await api.sales.deleteDealV1({id})).data,onSuccess:()=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Deal supprim\xe9",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec de la suppression",color:"red"})}})}function useUpdateDeal(id){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.updateDealV1({id},payload)).data,onSuccess:()=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Modifications enregistr\xe9es",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec de la mise \xe0 jour",color:"red"})}})}const eurFormatter=new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR",maximumFractionDigits:0});const dayFormatter=new Intl.DateTimeFormat("fr-FR",{timeZone:"Europe/Paris",day:"2-digit",month:"2-digit",year:"numeric"});function formatEur(value){if(Number.isNaN(value))return eurFormatter.format(0);return eurFormatter.format(value)}function formatAmount(value,currency){if("EUR"===currency||""===currency)return formatEur(value);return new Intl.NumberFormat("fr-FR",{style:"currency",currency,maximumFractionDigits:0}).format(value)}function formatDay(iso){if(null===iso)return"";const date=new Date(iso);if(Number.isNaN(date.getTime()))return"";return dayFormatter.format(date)}var temperature=__webpack_require__(479);const STATUS_META={open:{label:"Ouvert",color:"blue"},won:{label:"Gagn\xe9",color:"green"},lost:{label:"Perdu",color:"red"}};function personLabel(deal){const parts=[deal.lead.first_name,deal.lead.last_name].filter(Boolean);return parts.join(" ")}function DealDetailForm({deal,stages,onClose}){const update=useUpdateDeal(deal.id);const remove=useDeleteDeal();const[title,setTitle]=(0,consume_shared_module_default_react_strict_.useState)(deal.title);const[value,setValue]=(0,consume_shared_module_default_react_strict_.useState)(deal.value);const[probability,setProbability]=(0,consume_shared_module_default_react_strict_.useState)(null===deal.probability?"":deal.probability);const[expectedCloseDate,setExpectedCloseDate]=(0,consume_shared_module_default_react_strict_.useState)(deal.expected_close_date??"");const[stageId,setStageId]=(0,consume_shared_module_default_react_strict_.useState)(String(deal.stage_id));const[lostReason,setLostReason]=(0,consume_shared_module_default_react_strict_.useState)(deal.lost_reason??"");const statusMeta=STATUS_META[deal.status];function save(){update.mutate({title,value:""===value?0:Number(value),probability:""===probability?null:Number(probability),expected_close_date:""===expectedCloseDate?null:expectedCloseDate,stage_id:null===stageId?void 0:Number(stageId)})}function markWon(){update.mutate({status:"won"},{onSuccess:onClose})}function markLost(){update.mutate({status:"lost",lost_reason:""===lostReason?null:lostReason},{onSuccess:onClose})}function reopen(){update.mutate({status:"open"},{onSuccess:onClose})}function handleDelete(){remove.mutate(deal.id,{onSuccess:onClose})}return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[statusMeta?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:statusMeta.color,children:statusMeta.label}):null,"won"===deal.status&&null!==deal.won_at?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:`Gagn\xe9 le ${formatDay(deal.won_at)}`}):null,"lost"===deal.status&&null!==deal.lost_at?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:`Perdu le ${formatDay(deal.lost_at)}`}):null]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",children:`${temperature.P[deal.lead.temperature]?.emoji??""} ${personLabel(deal)}`.trim()}),deal.lead.company?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:deal.lead.company}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Anchor,{href:"/console/sales",size:"sm",children:"Voir le lead"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Divider,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Titre",value:title,onChange:e=>setTitle(e.currentTarget.value)}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{grow:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.NumberInput,{label:"Montant",value:value,onChange:setValue,min:0,thousandSeparator:" ",decimalSeparator:",",suffix:` ${deal.currency}`}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.NumberInput,{label:"Probabilit\xe9 (%)",value:probability,onChange:setProbability,min:0,max:100})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(dates_esm_index_mjs_.DateInput,{label:"\xc9ch\xe9ance",placeholder:"Pas de date fix\xe9e",clearable:true,valueFormat:"DD/MM/YYYY",value:expectedCloseDate?new Date(expectedCloseDate):null,onChange:v=>setExpectedCloseDate(v?new Date(v).toISOString():"")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"\xc9tape",data:stages.map(s=>({value:String(s.id),label:s.name})),value:stageId,onChange:setStageId}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"red",variant:"light",onClick:handleDelete,children:"Supprimer"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{loading:update.isPending,onClick:save,children:"Enregistrer"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Divider,{mt:"md"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:5,children:"Statut"}),"open"===deal.status?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Raison de la perte (optionnelle)",value:lostReason,onChange:e=>setLostReason(e.currentTarget.value)}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"red",variant:"light",loading:update.isPending,onClick:markLost,children:"Perdu"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"green",loading:update.isPending,onClick:markWon,children:"Gagn\xe9"})]})]}):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{justify:"flex-end",children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"light",loading:update.isPending,onClick:reopen,children:"Rouvrir"})})]})}function DealDetailDrawer({deal,stages,onClose}){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Drawer,{opened:null!==deal,onClose:onClose,position:"right",size:"lg",title:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,children:"Deal"}),children:deal?/*#__PURE__*/(0,jsx_runtime.jsx)(DealDetailForm,{deal:deal,stages:stages,onClose:onClose},deal.id):null})}function stageName(stages,stageId){const stage=stages.find(s=>s.id===stageId);if(!stage)return"";return stage.name}function DealsTable({deals,stages,status,onRowClick}){const isLost="lost"===status;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table,{highlightOnHover:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Thead,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Titre"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Entreprise"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Montant"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:isLost?"Perdu le":"Gagn\xe9 le"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"\xc9tape"}),isLost?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Raison"}):null]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tbody,{children:deals.map(deal=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{style:{cursor:"pointer"},onClick:()=>onRowClick(deal.id),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:deal.title}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:deal.lead.company??""}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:formatAmount(deal.value,deal.currency)}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:formatDay(isLost?deal.lost_at:deal.won_at)}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:stageName(stages,deal.stage_id)}),isLost?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:deal.lost_reason?void 0:"dimmed",children:deal.lost_reason??"Non renseign\xe9e"})}):null]},deal.id))})]})}var tabler_icons_react_mjs_=__webpack_require__(9632);function DealCard_personLabel(deal){const parts=[deal.lead.first_name,deal.lead.last_name].filter(Boolean);return parts.join(" ")}function DealCard({deal,stages,onOpen}){const update=useUpdateDeal(deal.id);const index=stages.findIndex(s=>s.id===deal.stage_id);const previous=index>0?stages[index-1]:null;const next=index>=0&&index<stages.length-1?stages[index+1]:null;function move(target){if(null===target)return;update.mutate({stage_id:target.id})}return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{withBorder:true,padding:"sm",radius:"md",style:{cursor:"pointer"},onClick:()=>onOpen(deal.id),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:6,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",wrap:"nowrap",align:"flex-start",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:500,size:"sm",lineClamp:2,children:deal.title}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"blue",children:formatAmount(deal.value,deal.currency)})]}),deal.lead.company?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:deal.lead.company}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:`${temperature.P[deal.lead.temperature]?.emoji??""} ${DealCard_personLabel(deal)}`.trim()}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[null!==deal.probability?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",size:"sm",children:`${deal.probability} %`}):null,null!==deal.expected_close_date?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",size:"sm",children:`\xc9ch\xe9ance : ${formatDay(deal.expected_close_date)}`}):null]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.ActionIcon,{variant:"subtle",size:"sm","aria-label":"\xc9tape pr\xe9c\xe9dente",disabled:null===previous||update.isPending,onClick:e=>{e.stopPropagation();move(previous)},children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronLeft,{size:16})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.ActionIcon,{variant:"subtle",size:"sm","aria-label":"\xc9tape suivante",disabled:null===next||update.isPending,onClick:e=>{e.stopPropagation();move(next)},children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronRight,{size:16})})]})]})})}function KanbanBoard({stages,deals,onOpen}){if(0===stages.length)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:"Aucune \xe9tape configur\xe9e pour ce pipeline"});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Box,{style:{display:"flex",gap:"var(--mantine-spacing-md)",alignItems:"flex-start",overflowX:"auto",paddingBottom:"var(--mantine-spacing-sm)"},children:stages.map(stage=>{const stageDeals=deals.filter(d=>d.stage_id===stage.id);return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Paper,{withBorder:true,radius:"md",p:"sm",style:{flex:"0 0 300px",width:300},children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:600,size:"sm",children:stage.name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",children:stage.deal_count})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:formatEur(stage.total_value)})]}),0===stageDeals.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:"Aucun deal"}):null,stageDeals.map(deal=>/*#__PURE__*/(0,jsx_runtime.jsx)(DealCard,{deal:deal,stages:stages,onOpen:onOpen},deal.id))]})},stage.id)})})}function useCreateDeal(){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.createDealV1(payload)).data,onSuccess:()=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Deal cr\xe9\xe9",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec de la cr\xe9ation",color:"red"})}})}var leadsQuery=__webpack_require__(1334);var NewLeadModal=__webpack_require__(9328);function leadLabel(lead){const name=[lead.first_name,lead.last_name].filter(Boolean).join(" ");if(lead.company&&name)return`${name} (${lead.company})`;if(lead.company)return lead.company;if(name)return name;return`Lead ${lead.id}`}function NewDealForm({onClose,stages}){const leads=(0,leadsQuery.m)("active");const create=useCreateDeal();const[leadId,setLeadId]=(0,consume_shared_module_default_react_strict_.useState)(null);const[newLeadOpened,setNewLeadOpened]=(0,consume_shared_module_default_react_strict_.useState)(false);const[createdLead,setCreatedLead]=(0,consume_shared_module_default_react_strict_.useState)(null);const[title,setTitle]=(0,consume_shared_module_default_react_strict_.useState)("");const[value,setValue]=(0,consume_shared_module_default_react_strict_.useState)("");const[stageId,setStageId]=(0,consume_shared_module_default_react_strict_.useState)(stages.length>0?String(stages[0].id):null);const leadOptions=(leads.data?.leads??[]).map(lead=>({value:String(lead.id),label:leadLabel(lead)}));if(createdLead&&!leadOptions.some(option=>option.value===String(createdLead.id)))leadOptions.push({value:String(createdLead.id),label:leadLabel(createdLead)});function submit(){if(null===leadId||null===stageId||""===title.trim())return void notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Renseignez un lead, un titre et une \xe9tape",color:"orange"});create.mutate({lead_id:Number(leadId),stage_id:Number(stageId),title:title.trim(),value:""===value?0:Number(value),currency:"EUR"},{onSuccess:onClose})}return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"Lead",placeholder:"Rechercher un lead",searchable:true,nothingFoundMessage:"Aucun lead",data:leadOptions,value:leadId,onChange:setLeadId}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"subtle",size:"compact-sm",style:{alignSelf:"flex-start"},onClick:()=>setNewLeadOpened(true),children:"+ Cr\xe9er un nouveau lead"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Titre",value:title,onChange:e=>setTitle(e.currentTarget.value)}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.NumberInput,{label:"Montant (EUR)",value:value,onChange:setValue,min:0,thousandSeparator:" ",decimalSeparator:","}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"\xc9tape",data:stages.map(s=>({value:String(s.id),label:s.name})),value:stageId,onChange:setStageId}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"default",onClick:onClose,children:"Annuler"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{loading:create.isPending,onClick:submit,children:"Cr\xe9er"})]}),newLeadOpened?/*#__PURE__*/(0,jsx_runtime.jsx)(NewLeadModal.A,{opened:true,onClose:()=>setNewLeadOpened(false),onCreated:lead=>{setCreatedLead(lead);setLeadId(String(lead.id))}}):null]})}function NewDealModal({opened,onClose,stages}){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Modal,{opened:opened,onClose:onClose,title:"Nouveau deal",children:opened?/*#__PURE__*/(0,jsx_runtime.jsx)(NewDealForm,{onClose:onClose,stages:stages}):null})}function PipelineApp(){const[pipeline,setPipeline]=(0,consume_shared_module_default_react_strict_.useState)("new_business");const[status,setStatus]=(0,consume_shared_module_default_react_strict_.useState)("open");const[selectedId,setSelectedId]=(0,consume_shared_module_default_react_strict_.useState)(null);const[newDealOpened,newDeal]=(0,esm_index_mjs_.useDisclosure)(false);const deals=useSalesDeals(pipeline,status);const stages=deals.data?.stages??[];const rows=deals.data?.deals??[];const selected=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{if(null===selectedId)return null;return rows.find(d=>d.id===selectedId)??null},[rows,selectedId]);const total=rows.reduce((acc,d)=>acc+d.value,0);return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Container,{fluid:true,my:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",mb:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:2,children:"Pipeline"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"blue",children:`${rows.length} deal(s) : ${formatEur(total)}`}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{onClick:newDeal.open,disabled:0===stages.length,children:"+ Nouveau deal"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",mb:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:pipeline,onChange:setPipeline,data:[{label:"New Business",value:"new_business"},{label:"Upsell / Cross-sell",value:"upsell"}]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:status,onChange:setStatus,data:[{label:"Ouverts",value:"open"},{label:"Gagn\xe9s",value:"won"},{label:"Perdus",value:"lost"}]})]}),deals.isLoading?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Loader,{}):null,deals.data&&"open"===status?/*#__PURE__*/(0,jsx_runtime.jsx)(KanbanBoard,{stages:stages,deals:rows,onOpen:setSelectedId}):null,deals.data&&"open"!==status?/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:0===rows.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:"Aucun deal"}):/*#__PURE__*/(0,jsx_runtime.jsx)(DealsTable,{deals:rows,stages:stages,status:status,onRowClick:setSelectedId})}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(NewDealModal,{opened:newDealOpened,onClose:newDeal.close,stages:stages}),/*#__PURE__*/(0,jsx_runtime.jsx)(DealDetailDrawer,{deal:selected,stages:stages,onClose:()=>setSelectedId(null)})]})}function Pipeline(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(consume_shared_module_default_react_strict_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(providers.C,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(PipelineApp,{})})})}}}]);
|
|
1
|
+
"use strict";(globalThis["chunk_tech_app"]=globalThis["chunk_tech_app"]||[]).push([["2149"],{1334:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{m:()=>useSalesLeads});var _tanstack_react_query__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(6197);var _useApi_ts__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(4148);function useSalesLeads(status){const api=(0,_useApi_ts__WEBPACK_IMPORTED_MODULE_1__.h)();return(0,_tanstack_react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)({queryKey:["tech","sales","leads",status],queryFn:async()=>(await api.sales.listLeadsV1({status})).data,refetchOnWindowFocus:true})}},9328:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{A:()=>NewLeadModal});var jsx_runtime=__webpack_require__(5893);var index_mjs_=__webpack_require__(207);var esm_index_mjs_=__webpack_require__(9038);var form_esm_index_mjs_=__webpack_require__(5021);var notifications_esm_index_mjs_=__webpack_require__(1455);var index_js_=__webpack_require__(6197);var useApi=__webpack_require__(4148);function useCreateLead(){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.createLeadV1(payload)).data,onSuccess:data=>{notifications_esm_index_mjs_.notifications.show({title:"Lead",message:data?.attached?"Coordonn\xe9e d\xe9j\xe0 connue — rattach\xe9 au lead existant":"Lead cr\xe9\xe9",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Lead",message:err?.error?.error??err?.message??"\xc9chec de la cr\xe9ation",color:"red"})}})}function NewLeadModal({opened,onClose,onCreated}){const create=useCreateLead();const form=(0,form_esm_index_mjs_.useForm)({initialValues:{first_name:"",last_name:"",company:"",email:"",phone:"",linkedin_url:"",note:"",next_action_due_at:null,request_reconstruction:true}});function submit(values){const hasAny=Boolean(values.first_name)||Boolean(values.last_name)||Boolean(values.company)||Boolean(values.email)||Boolean(values.phone)||Boolean(values.linkedin_url);if(!hasAny)return void notifications_esm_index_mjs_.notifications.show({title:"Lead",message:"Renseignez au moins un nom, une entreprise ou une coordonn\xe9e",color:"orange"});create.mutate({first_name:values.first_name||null,last_name:values.last_name||null,company:values.company||null,emails:values.email?[values.email]:[],phones:values.phone?[values.phone]:[],linkedin_url:values.linkedin_url||null,note:values.note||null,next_action_due_at:values.next_action_due_at?new Date(values.next_action_due_at).toISOString():null,request_reconstruction:values.request_reconstruction},{onSuccess:data=>{onCreated?.({id:data.id,first_name:values.first_name||null,last_name:values.last_name||null,company:values.company||null});form.reset();onClose()}})}return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Modal,{opened:opened,onClose:onClose,title:"Nouveau lead",children:/*#__PURE__*/(0,jsx_runtime.jsx)("form",{onSubmit:form.onSubmit(submit),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{grow:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Pr\xe9nom",...form.getInputProps("first_name")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Nom",...form.getInputProps("last_name")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Entreprise",...form.getInputProps("company")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"URL LinkedIn",placeholder:"https://www.linkedin.com/in/...",...form.getInputProps("linkedin_url")}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{grow:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Email",...form.getInputProps("email")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"T\xe9l\xe9phone",...form.getInputProps("phone")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Textarea,{label:"Note / prochaine action",...form.getInputProps("note")}),/*#__PURE__*/(0,jsx_runtime.jsx)(esm_index_mjs_.DateInput,{label:"Relancer le",placeholder:"Pas de date fix\xe9e",clearable:true,valueFormat:"DD/MM/YYYY",...form.getInputProps("next_action_due_at")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Checkbox,{label:"Reconstruire l'historique (recherche multi-sources)",...form.getInputProps("request_reconstruction",{type:"checkbox"})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"default",onClick:onClose,children:"Annuler"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{type:"submit",loading:create.isPending,children:"Cr\xe9er"})]})]})})})}},479:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{P:()=>TEMPERATURE_META,o:()=>TEMPERATURE_ORDER});const TEMPERATURE_META={burning:{emoji:"\uD83D\uDD25\uD83D\uDD25",label:"Br\xfblant",order:5},hot:{emoji:"\uD83D\uDD25",label:"Chaud",order:4},warm:{emoji:"\uD83C\uDF21️",label:"Ti\xe8de",order:3},cold:{emoji:"❄️",label:"Froid",order:2},frozen:{emoji:"\uD83E\uDDCA",label:"Gel\xe9",order:1}};const TEMPERATURE_ORDER=["burning","hot","warm","cold","frozen"]},7314:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{default:()=>Pipeline});var jsx_runtime=__webpack_require__(5893);var consume_shared_module_default_react_strict_=__webpack_require__(5850);var providers=__webpack_require__(7034);var index_mjs_=__webpack_require__(207);var esm_index_mjs_=__webpack_require__(3863);var index_js_=__webpack_require__(6197);var useApi=__webpack_require__(4148);function useSalesDeals(pipeline,status){const api=(0,useApi.h)();return(0,index_js_.useQuery)({queryKey:["tech","sales","deals",pipeline,status],queryFn:async()=>(await api.sales.listDealsV1({pipeline,status})).data,refetchOnWindowFocus:true})}var dates_esm_index_mjs_=__webpack_require__(9038);var notifications_esm_index_mjs_=__webpack_require__(1455);function useDeleteDeal(){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async id=>(await api.sales.deleteDealV1({id})).data,onSuccess:()=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Deal supprim\xe9",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec de la suppression",color:"red"})}})}function useUpdateDeal(id){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.updateDealV1({id},payload)).data,onSuccess:()=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Modifications enregistr\xe9es",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec de la mise \xe0 jour",color:"red"})}})}const eurFormatter=new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR",maximumFractionDigits:0});const dayFormatter=new Intl.DateTimeFormat("fr-FR",{timeZone:"Europe/Paris",day:"2-digit",month:"2-digit",year:"numeric"});function formatEur(value){if(Number.isNaN(value))return eurFormatter.format(0);return eurFormatter.format(value)}function formatAmount(value,currency){if("EUR"===currency||""===currency)return formatEur(value);return new Intl.NumberFormat("fr-FR",{style:"currency",currency,maximumFractionDigits:0}).format(value)}function formatDay(iso){if(null===iso)return"";const date=new Date(iso);if(Number.isNaN(date.getTime()))return"";return dayFormatter.format(date)}var temperature=__webpack_require__(479);const STATUS_META={open:{label:"Ouvert",color:"blue"},won:{label:"Gagn\xe9",color:"green"},lost:{label:"Perdu",color:"red"}};function personLabel(deal){const parts=[deal.lead.first_name,deal.lead.last_name].filter(Boolean);return parts.join(" ")}function DealDetailForm({deal,stages,onClose}){const update=useUpdateDeal(deal.id);const remove=useDeleteDeal();const[title,setTitle]=(0,consume_shared_module_default_react_strict_.useState)(deal.title);const[value,setValue]=(0,consume_shared_module_default_react_strict_.useState)(deal.value);const[probability,setProbability]=(0,consume_shared_module_default_react_strict_.useState)(null===deal.probability?"":deal.probability);const[expectedCloseDate,setExpectedCloseDate]=(0,consume_shared_module_default_react_strict_.useState)(deal.expected_close_date??"");const[stageId,setStageId]=(0,consume_shared_module_default_react_strict_.useState)(String(deal.stage_id));const[lostReason,setLostReason]=(0,consume_shared_module_default_react_strict_.useState)(deal.lost_reason??"");const statusMeta=STATUS_META[deal.status];function save(){update.mutate({title,value:""===value?0:Number(value),probability:""===probability?null:Number(probability),expected_close_date:""===expectedCloseDate?null:expectedCloseDate,stage_id:null===stageId?void 0:Number(stageId)})}function markWon(){update.mutate({status:"won"},{onSuccess:onClose})}function markLost(){update.mutate({status:"lost",lost_reason:""===lostReason?null:lostReason},{onSuccess:onClose})}function reopen(){update.mutate({status:"open"},{onSuccess:onClose})}function handleDelete(){remove.mutate(deal.id,{onSuccess:onClose})}return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[statusMeta?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:statusMeta.color,children:statusMeta.label}):null,"won"===deal.status&&null!==deal.won_at?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:`Gagn\xe9 le ${formatDay(deal.won_at)}`}):null,"lost"===deal.status&&null!==deal.lost_at?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:`Perdu le ${formatDay(deal.lost_at)}`}):null]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",children:`${temperature.P[deal.lead.temperature]?.emoji??""} ${personLabel(deal)}`.trim()}),deal.lead.company?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:deal.lead.company}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Anchor,{href:"/console/sales",size:"sm",children:"Voir le lead"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Divider,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Titre",value:title,onChange:e=>setTitle(e.currentTarget.value)}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{grow:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.NumberInput,{label:"Montant",value:value,onChange:setValue,min:0,thousandSeparator:" ",decimalSeparator:",",suffix:` ${deal.currency}`}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.NumberInput,{label:"Probabilit\xe9 (%)",value:probability,onChange:setProbability,min:0,max:100})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(dates_esm_index_mjs_.DateInput,{label:"\xc9ch\xe9ance",placeholder:"Pas de date fix\xe9e",clearable:true,valueFormat:"DD/MM/YYYY",value:expectedCloseDate?new Date(expectedCloseDate):null,onChange:v=>setExpectedCloseDate(v?new Date(v).toISOString():"")}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"\xc9tape",data:stages.map(s=>({value:String(s.id),label:s.name})),value:stageId,onChange:setStageId}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"red",variant:"light",onClick:handleDelete,children:"Supprimer"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{loading:update.isPending,onClick:save,children:"Enregistrer"})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Divider,{mt:"md"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:5,children:"Statut"}),"open"===deal.status?/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Raison de la perte (optionnelle)",value:lostReason,onChange:e=>setLostReason(e.currentTarget.value)}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"red",variant:"light",loading:update.isPending,onClick:markLost,children:"Perdu"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{color:"green",loading:update.isPending,onClick:markWon,children:"Gagn\xe9"})]})]}):/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Group,{justify:"flex-end",children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"light",loading:update.isPending,onClick:reopen,children:"Rouvrir"})})]})}function DealDetailDrawer({deal,stages,onClose}){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Drawer,{opened:null!==deal,onClose:onClose,position:"right",size:"lg",title:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:4,children:"Deal"}),children:deal?/*#__PURE__*/(0,jsx_runtime.jsx)(DealDetailForm,{deal:deal,stages:stages,onClose:onClose},deal.id):null})}function stageName(stages,stageId){const stage=stages.find(s=>s.id===stageId);if(!stage)return"";return stage.name}function DealsTable({deals,stages,status,onRowClick}){const isLost="lost"===status;return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table,{highlightOnHover:true,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Thead,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Titre"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Entreprise"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Montant"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:isLost?"Perdu le":"Gagn\xe9 le"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"\xc9tape"}),isLost?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Th,{children:"Raison"}):null]})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Tbody,{children:deals.map(deal=>/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Table.Tr,{style:{cursor:"pointer"},onClick:()=>onRowClick(deal.id),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:deal.title}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:deal.lead.company??""}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:formatAmount(deal.value,deal.currency)}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:formatDay(isLost?deal.lost_at:deal.won_at)}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:stageName(stages,deal.stage_id)}),isLost?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Table.Td,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:deal.lost_reason?void 0:"dimmed",children:deal.lost_reason??"Non renseign\xe9e"})}):null]},deal.id))})]})}function moveDealToStage(current,dealId,stageId){const deal=current.deals.find(d=>d.id===dealId);if(void 0===deal||deal.stage_id===stageId)return current;const fromStageId=deal.stage_id;return{stages:current.stages.map(stage=>{if(stage.id===fromStageId)return{...stage,deal_count:Math.max(0,stage.deal_count-1),total_value:stage.total_value-deal.value};if(stage.id===stageId)return{...stage,deal_count:stage.deal_count+1,total_value:stage.total_value+deal.value};return stage}),deals:current.deals.map(d=>d.id===dealId?{...d,stage_id:stageId}:d)}}function useMoveDealStage(pipeline,status){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();const queryKey=["tech","sales","deals",pipeline,status];return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.updateDealV1({id:payload.id},{stage_id:payload.stage_id})).data,onMutate:async payload=>{await queryClient.cancelQueries({queryKey});const previous=queryClient.getQueryData(queryKey);if(void 0!==previous)queryClient.setQueryData(queryKey,moveDealToStage(previous,payload.id,payload.stage_id));return{previous}},onError:(err,_payload,context)=>{if(context?.previous!==void 0)queryClient.setQueryData(queryKey,context.previous);notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec du changement d'\xe9tape",color:"red"})},onSettled:()=>{queryClient.invalidateQueries({queryKey:["tech","sales"]})}})}var tabler_icons_react_mjs_=__webpack_require__(9632);function DealCard_personLabel(deal){const parts=[deal.lead.first_name,deal.lead.last_name].filter(Boolean);return parts.join(" ")}function DealCard({deal,stages,isDragging,onOpen,onDragStart,onDragEnd}){const update=useUpdateDeal(deal.id);const index=stages.findIndex(s=>s.id===deal.stage_id);const previous=index>0?stages[index-1]:null;const next=index>=0&&index<stages.length-1?stages[index+1]:null;function move(target){if(null===target)return;update.mutate({stage_id:target.id})}return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Card,{withBorder:true,padding:"sm",radius:"md",draggable:true,style:{cursor:isDragging?"grabbing":"grab",opacity:isDragging?.4:1,transition:"opacity 120ms ease"},onClick:()=>onOpen(deal.id),onDragStart:e=>{e.dataTransfer.effectAllowed="move";e.dataTransfer.setData("text/plain",String(deal.id));onDragStart(deal.id)},onDragEnd:onDragEnd,children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:6,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",wrap:"nowrap",align:"flex-start",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:4,wrap:"nowrap",align:"flex-start",style:{minWidth:0},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconGripVertical,{size:16,"aria-hidden":true,style:{flexShrink:0,marginTop:2,color:"var(--mantine-color-dimmed)"}}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:500,size:"sm",lineClamp:2,children:deal.title})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"blue",children:formatAmount(deal.value,deal.currency)})]}),deal.lead.company?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:deal.lead.company}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:`${temperature.P[deal.lead.temperature]?.emoji??""} ${DealCard_personLabel(deal)}`.trim()}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{gap:"xs",children:[null!==deal.probability?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",size:"sm",children:`${deal.probability} %`}):null,null!==deal.expected_close_date?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",size:"sm",children:`\xc9ch\xe9ance : ${formatDay(deal.expected_close_date)}`}):null]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.ActionIcon,{variant:"subtle",size:"sm","aria-label":"\xc9tape pr\xe9c\xe9dente",disabled:null===previous||update.isPending,onClick:e=>{e.stopPropagation();move(previous)},children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronLeft,{size:16})}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.ActionIcon,{variant:"subtle",size:"sm","aria-label":"\xc9tape suivante",disabled:null===next||update.isPending,onClick:e=>{e.stopPropagation();move(next)},children:/*#__PURE__*/(0,jsx_runtime.jsx)(tabler_icons_react_mjs_.IconChevronRight,{size:16})})]})]})})}function KanbanBoard({pipeline,status,stages,deals,onOpen}){const move=useMoveDealStage(pipeline,status);const[draggedId,setDraggedId]=(0,consume_shared_module_default_react_strict_.useState)(null);const[hoveredStageId,setHoveredStageId]=(0,consume_shared_module_default_react_strict_.useState)(null);const draggedDeal=null===draggedId?null:deals.find(d=>d.id===draggedId)??null;function resetDrag(){setDraggedId(null);setHoveredStageId(null)}function handleDrop(e,stage){e.preventDefault();const raw=Number(e.dataTransfer.getData("text/plain"));const dealId=Number.isFinite(raw)&&raw>0?raw:draggedId;resetDrag();if(null===dealId)return;const deal=deals.find(d=>d.id===dealId);if(void 0===deal||deal.stage_id===stage.id)return;move.mutate({id:deal.id,stage_id:stage.id})}if(0===stages.length)return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:"Aucune \xe9tape configur\xe9e pour ce pipeline"});return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Box,{style:{display:"flex",gap:"var(--mantine-spacing-md)",alignItems:"flex-start",overflowX:"auto",paddingBottom:"var(--mantine-spacing-sm)"},children:stages.map(stage=>{const stageDeals=deals.filter(d=>d.stage_id===stage.id);const isDropTarget=hoveredStageId===stage.id&&null!==draggedDeal&&draggedDeal.stage_id!==stage.id;return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Paper,{withBorder:true,radius:"md",p:"sm",style:{flex:"0 0 300px",width:300,backgroundColor:isDropTarget?"var(--mantine-color-blue-light)":void 0,outline:isDropTarget?"2px solid var(--mantine-color-blue-filled)":void 0,outlineOffset:2,transition:"background-color 120ms ease"},onDragOver:e=>{if(null===draggedId)return;e.preventDefault();e.dataTransfer.dropEffect="move";if(hoveredStageId!==stage.id)setHoveredStageId(stage.id)},onDragLeave:e=>{if(e.currentTarget.contains(e.relatedTarget))return;if(hoveredStageId===stage.id)setHoveredStageId(null)},onDrop:e=>handleDrop(e,stage),children:/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",mih:140,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",wrap:"nowrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{fw:600,size:"sm",children:stage.name}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"gray",children:stage.deal_count})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:formatEur(stage.total_value)})]}),0===stageDeals.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"xs",c:"dimmed",children:isDropTarget?"D\xe9poser ici":"Aucun deal"}):null,stageDeals.map(deal=>/*#__PURE__*/(0,jsx_runtime.jsx)(DealCard,{deal:deal,stages:stages,isDragging:draggedId===deal.id,onOpen:onOpen,onDragStart:setDraggedId,onDragEnd:resetDrag},deal.id))]})},stage.id)})})}function useCreateDeal(){const api=(0,useApi.h)();const queryClient=(0,index_js_.useQueryClient)();return(0,index_js_.useMutation)({mutationFn:async payload=>(await api.sales.createDealV1(payload)).data,onSuccess:()=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Deal cr\xe9\xe9",color:"green"});queryClient.invalidateQueries({queryKey:["tech","sales"]})},onError:err=>{notifications_esm_index_mjs_.notifications.show({title:"Deal",message:err?.error?.error??err?.message??"\xc9chec de la cr\xe9ation",color:"red"})}})}var leadsQuery=__webpack_require__(1334);var NewLeadModal=__webpack_require__(9328);function leadLabel(lead){const name=[lead.first_name,lead.last_name].filter(Boolean).join(" ");if(lead.company&&name)return`${name} (${lead.company})`;if(lead.company)return lead.company;if(name)return name;return`Lead ${lead.id}`}function NewDealForm({onClose,stages}){const leads=(0,leadsQuery.m)("active");const create=useCreateDeal();const[leadId,setLeadId]=(0,consume_shared_module_default_react_strict_.useState)(null);const[newLeadOpened,setNewLeadOpened]=(0,consume_shared_module_default_react_strict_.useState)(false);const[createdLead,setCreatedLead]=(0,consume_shared_module_default_react_strict_.useState)(null);const[title,setTitle]=(0,consume_shared_module_default_react_strict_.useState)("");const[value,setValue]=(0,consume_shared_module_default_react_strict_.useState)("");const[stageId,setStageId]=(0,consume_shared_module_default_react_strict_.useState)(stages.length>0?String(stages[0].id):null);const leadOptions=(leads.data?.leads??[]).map(lead=>({value:String(lead.id),label:leadLabel(lead)}));if(createdLead&&!leadOptions.some(option=>option.value===String(createdLead.id)))leadOptions.push({value:String(createdLead.id),label:leadLabel(createdLead)});function submit(){if(null===leadId||null===stageId||""===title.trim())return void notifications_esm_index_mjs_.notifications.show({title:"Deal",message:"Renseignez un lead, un titre et une \xe9tape",color:"orange"});create.mutate({lead_id:Number(leadId),stage_id:Number(stageId),title:title.trim(),value:""===value?0:Number(value),currency:"EUR"},{onSuccess:onClose})}return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"Lead",placeholder:"Rechercher un lead",searchable:true,nothingFoundMessage:"Aucun lead",data:leadOptions,value:leadId,onChange:setLeadId}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"subtle",size:"compact-sm",style:{alignSelf:"flex-start"},onClick:()=>setNewLeadOpened(true),children:"+ Cr\xe9er un nouveau lead"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.TextInput,{label:"Titre",value:title,onChange:e=>setTitle(e.currentTarget.value)}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.NumberInput,{label:"Montant (EUR)",value:value,onChange:setValue,min:0,thousandSeparator:" ",decimalSeparator:","}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Select,{label:"\xc9tape",data:stages.map(s=>({value:String(s.id),label:s.name})),value:stageId,onChange:setStageId}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"flex-end",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{variant:"default",onClick:onClose,children:"Annuler"}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{loading:create.isPending,onClick:submit,children:"Cr\xe9er"})]}),newLeadOpened?/*#__PURE__*/(0,jsx_runtime.jsx)(NewLeadModal.A,{opened:true,onClose:()=>setNewLeadOpened(false),onCreated:lead=>{setCreatedLead(lead);setLeadId(String(lead.id))}}):null]})}function NewDealModal({opened,onClose,stages}){return/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Modal,{opened:opened,onClose:onClose,title:"Nouveau deal",children:opened?/*#__PURE__*/(0,jsx_runtime.jsx)(NewDealForm,{onClose:onClose,stages:stages}):null})}function PipelineApp(){const[pipeline,setPipeline]=(0,consume_shared_module_default_react_strict_.useState)("new_business");const[status,setStatus]=(0,consume_shared_module_default_react_strict_.useState)("open");const[selectedId,setSelectedId]=(0,consume_shared_module_default_react_strict_.useState)(null);const[newDealOpened,newDeal]=(0,esm_index_mjs_.useDisclosure)(false);const deals=useSalesDeals(pipeline,status);const stages=deals.data?.stages??[];const rows=deals.data?.deals??[];const selected=(0,consume_shared_module_default_react_strict_.useMemo)(()=>{if(null===selectedId)return null;return rows.find(d=>d.id===selectedId)??null},[rows,selectedId]);const total=rows.reduce((acc,d)=>acc+d.value,0);return/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Container,{fluid:true,my:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{justify:"space-between",mb:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Title,{order:2,children:"Pipeline"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Group,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Badge,{variant:"light",color:"blue",children:`${rows.length} deal(s) : ${formatEur(total)}`}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Button,{onClick:newDeal.open,disabled:0===stages.length,children:"+ Nouveau deal"})]})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(index_mjs_.Stack,{gap:"sm",mb:"md",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:pipeline,onChange:setPipeline,data:[{label:"New Business",value:"new_business"},{label:"Upsell / Cross-sell",value:"upsell"}]}),/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.SegmentedControl,{value:status,onChange:setStatus,data:[{label:"Ouverts",value:"open"},{label:"Gagn\xe9s",value:"won"},{label:"Perdus",value:"lost"}]})]}),deals.isLoading?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Loader,{}):null,deals.data&&"open"===status?/*#__PURE__*/(0,jsx_runtime.jsx)(KanbanBoard,{pipeline:pipeline,status:status,stages:stages,deals:rows,onOpen:setSelectedId}):null,deals.data&&"open"!==status?/*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment,{children:0===rows.length?/*#__PURE__*/(0,jsx_runtime.jsx)(index_mjs_.Text,{size:"sm",c:"dimmed",children:"Aucun deal"}):/*#__PURE__*/(0,jsx_runtime.jsx)(DealsTable,{deals:rows,stages:stages,status:status,onRowClick:setSelectedId})}):null,/*#__PURE__*/(0,jsx_runtime.jsx)(NewDealModal,{opened:newDealOpened,onClose:newDeal.close,stages:stages}),/*#__PURE__*/(0,jsx_runtime.jsx)(DealDetailDrawer,{deal:selected,stages:stages,onClose:()=>setSelectedId(null)})]})}function Pipeline(props){return/*#__PURE__*/(0,jsx_runtime.jsx)(consume_shared_module_default_react_strict_.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(providers.C,{...props,children:/*#__PURE__*/(0,jsx_runtime.jsx)(PipelineApp,{})})})}}}]);
|