1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2074],{22840:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/recon/trade-4way",function(){return r(79378)}])},62842:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>x,Ip:()=>h,Jt:()=>g,Mw:()=>l,Qn:()=>m,Te:()=>u,bQ:()=>p,qs:()=>d,qw:()=>N,v7:()=>j});var a=r(37876),n=r(14232),s=r(37497);let i={"live-core":{label:"Live \xb7 core",color:"bg-emerald-100 text-emerald-700 border-emerald-200",description:"Reading real production data from core / Briteblue."},"live-saasport":{label:"Live \xb7 saasport",color:"bg-emerald-100 text-emerald-700 border-emerald-200",description:"Reading real production data from saasport."},"live-gtn":{label:"Live \xb7 GTN/DWM",color:"bg-emerald-100 text-emerald-700 border-emerald-200",description:"Reading real production data from GTN/DWM."},"wire-pending":{label:"Wire pending",color:"bg-amber-100 text-amber-700 border-amber-200",description:"UI is in place; data source identified â adapter still to be wired."},scoping:{label:"Scoping",color:"bg-gray-100 text-gray-700 border-gray-200",description:"Awaiting product-ops scope before backend work begins."},mock:{label:"Mock data",color:"bg-blue-100 text-blue-700 border-blue-200",description:"Illustrative numbers only â do not act on them."}};function l(e){let{backend:t}=e,r=i[t];return(0,a.jsx)("span",{title:r.description,className:"inline-flex items-center gap-1.5 text-xs font-semibold px-2.5 py-1 rounded-full border ".concat(r.color),children:r.label})}function o(e){let{note:t}=e;return(0,a.jsxs)("div",{className:"mb-4 bg-amber-50 border-l-4 border-amber-400 px-4 py-3 rounded-r text-sm text-amber-900",children:[(0,a.jsx)("strong",{className:"font-semibold",children:"Mock data."})," ",null!=t?t:"Numbers below are illustrative â they show the page structure ahead of the adapter being wired to the live source."]})}let c={success:"bg-emerald-100 text-emerald-700",warning:"bg-amber-100 text-amber-700",danger:"bg-red-100 text-red-700",info:"bg-blue-100 text-blue-700",neutral:"bg-gray-100 text-gray-700",pending:"bg-indigo-100 text-indigo-700"};function d(e){let{tone:t,children:r}=e;return(0,a.jsx)("span",{className:"inline-flex items-center text-xs font-medium px-2 py-0.5 rounded-full ".concat(c[t]),children:r})}function x(e){let{title:t,owner:r,backend:n,description:i,workflowRef:c,mockNote:d,showMockBanner:x=!0,actions:m,children:u}=e;return(0,a.jsx)(s.A,{children:(0,a.jsxs)("div",{className:"max-w-7xl",children:[(0,a.jsxs)("header",{className:"mb-6",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4 mb-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:t}),(0,a.jsxs)("div",{className:"text-sm text-gray-500 mt-1",children:["Owner: ",r,c&&(0,a.jsxs)(a.Fragment,{children:[" \xb7 ",(0,a.jsx)("span",{className:"font-mono text-xs",children:c})]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(l,{backend:n}),m]})]}),i&&(0,a.jsx)("p",{className:"text-sm text-gray-600 leading-relaxed mt-2 max-w-3xl",children:i})]}),x&&("mock"===n||"wire-pending"===n||"scoping"===n)&&(0,a.jsx)(o,{note:d}),(0,a.jsx)("main",{children:u})]})})}function m(e){let{children:t}=e;return(0,a.jsx)("div",{className:"flex flex-wrap items-end gap-3 bg-white border border-gray-200 rounded-lg p-3 mb-4",children:t})}function u(e){let{value:t,onChange:r,placeholder:n="Searchâ¦",width:s=240}=e;return(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs font-medium text-gray-600",children:["Search",(0,a.jsx)("input",{type:"search",value:t,onChange:e=>r(e.target.value),placeholder:n,style:{width:s},className:"border border-gray-300 rounded-md px-2.5 py-1.5 text-sm font-normal text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})]})}function g(e){let{label:t,value:r,onChange:n,options:s}=e;return(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs font-medium text-gray-600",children:[t,(0,a.jsx)("select",{value:r,onChange:e=>n(e.target.value),className:"border border-gray-300 rounded-md px-2.5 py-1.5 text-sm font-normal text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 bg-white",children:s.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]})}function p(e){let{rows:t,columns:r,rowKey:s,emptyLabel:i="No matching rows.",onRowClick:l}
1=e,[o,c]=(0,n.useState)(null),[d,x]=(0,n.useState)("desc"),m=(0,n.useMemo)(()=>{if(!o)return t;let e=r.find(e=>e.key===o);if(!e||!e.sortBy)return t;let a=e.sortBy,n=[...t];return n.sort((e,t)=>{let r=a(e),n=a(t);if(r===n)return 0;if(r instanceof Date&&n instanceof Date)return"asc"===d?r.getTime()-n.getTime():n.getTime()-r.getTime();if("number"==typeof r&&"number"==typeof n)return"asc"===d?r-n:n-r;let s=String(r),i=String(n);return"asc"===d?s.localeCompare(i):i.localeCompare(s)}),n},[t,r,o,d]);return 0===t.length?(0,a.jsx)(b,{label:i}):(0,a.jsxs)("div",{className:"overflow-x-auto bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-gray-50 border-b border-gray-200",children:(0,a.jsx)("tr",{children:r.map(e=>{var t;return(0,a.jsx)("th",{style:{width:e.width,textAlign:null!=(t=e.align)?t:"left"},className:"px-3 py-2.5 text-xs font-semibold text-gray-700 uppercase tracking-wider",children:e.sortBy?(0,a.jsxs)("button",{onClick:()=>{var t;o===(t=e.key)?x(e=>"asc"===e?"desc":"asc"):(c(t),x("desc"))},className:"inline-flex items-center gap-1 hover:text-gray-900",children:[e.header,o===e.key&&(0,a.jsx)("span",{className:"text-gray-400",children:"asc"===d?"â²":"â¼"})]}):e.header},e.key)})})}),(0,a.jsx)("tbody",{className:"divide-y divide-gray-100",children:m.map(e=>(0,a.jsx)("tr",{onClick:l?()=>l(e):void 0,className:l?"hover:bg-blue-50 cursor-pointer":"hover:bg-gray-50",children:r.map(t=>{var r;return(0,a.jsx)("td",{style:{textAlign:null!=(r=t.align)?r:"left"},className:"px-3 py-2.5 text-gray-800 whitespace-nowrap",children:t.render(e)},t.key)})},s(e)))})]}),(0,a.jsxs)("div",{className:"border-t border-gray-100 px-3 py-2 text-xs text-gray-500 bg-gray-50",children:[m.length," row",1===m.length?"":"s"]})]})}function b(e){let{label:t}=e;return(0,a.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg p-12 text-center text-gray-500 text-sm",children:t})}function h(e){return new Intl.NumberFormat("en-ZA",{style:"currency",currency:"ZAR",maximumFractionDigits:2}).format(e)}let f=/^(\d{2})\/(\d{2})\/(\d{4})(?:[ T](\d{2}):(\d{2})(?::(\d{2}))?)?$/;function y(e){if(e instanceof Date)return e;if("number"==typeof e)return new Date(e);let t=f.exec(e.trim());if(t){var r,a,n;return new Date(Number(t[3]),Number(t[2])-1,Number(t[1]),Number(null!=(r=t[4])?r:0),Number(null!=(a=t[5])?a:0),Number(null!=(n=t[6])?n:0))}return new Date(e)}function N(e){let t=y(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleDateString("en-GB",{day:"2-digit",month:"short",year:"numeric"})}function j(e){let t=y(e);return Number.isNaN(t.getTime())?String(e):"".concat(N(t)," ").concat(t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"}))}},79378:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var a=r(37876),n=r(62842);let s=[{ticker:"ASHGEQ",contractNoteUnits:500,dwmUnits:500,clientUnits:500,custodianUnits:500,contractNoteValue:11225,aisValue:11225,bankValue:11225},{ticker:"ASHACC",contractNoteUnits:280,dwmUnits:280,clientUnits:280,custodianUnits:280,contractNoteValue:5558,aisValue:5570.5,bankValue:5558,break:"AIS settlement value differs from contract note by R12.50 â investigating with ABSA."},{ticker:"ASHPRE",contractNoteUnits:380,dwmUnits:380,clientUnits:380,custodianUnits:380,contractNoteValue:4679.8,aisValue:4679.8,bankValue:4679.8},{ticker:"STXIND",contractNoteUnits:120,dwmUnits:120,clientUnits:120,custodianUnits:120,contractNoteValue:8520,aisValue:8520,bankValue:8520}];function i(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.01;return Math.abs(e-t)<=r}function l(){return(0,a.jsxs)(n.Ay,{title:"Daily Trade 4-way reconciliation",owner:"Investment Operations \xb7 Siba",backend:"scoping",workflowRef:"WF-RECON-002 \xb7 derived from Daily_28042026.xlsx",description:"Per-instrument check across ABSA contract notes (SFTP pickup at 17:30 SAST), GTN/DWM trade orders, client orders, and Strate AIS settlement files. NEEDS NEW INGESTION PIPELINE: ABSA contract-note SFTP and Strate AIS file feeds are not yet wired into saasport. Page structure shown below illustrates the target â actual rows will populate once the file ingest job lands.",mockNote:"Page structure illustrative only. Real data requires the ABSA SFTP + Strate AIS file ingestion pipeline â see WF-RECON-002 in Siba's plan.",children:[(0,a.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg overflow-hidden mb-4",children:(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsxs)("thead",{className:"bg-gray-50 border-b border-gray-200",children:[(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"px-3 py-2 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",rowSpan:2,children:"Ticker"}),(0,a.jsx)("th",{className:"px-3 py-2 text-center text-xs font-semibold text-gray-700 uppercase tracking-wider",colSpan:4,children:"Units (4-way)"}),(0,a.jsx)("th",{className:"px-3 py-2 text-center text-xs font-semibold text-gray-700 uppercase tracking-wider",colSpan:3,children:"Settlement value (3-way)"}),(0,a.jsx)("th",{className:"px-3 py-2 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",rowSpan:2,children:"Status"})]}),(0,a.jsxs)("tr",{className:"border-t border-gray-100",children:[(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"ABSA"}),(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"DWM"}),(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"Client"}),(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"Custodian"}),(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"Contract"}),(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"AIS"}),(0,a.jsx)("th",{className:"px-2 py-1.5 text-right text-[10px] font-medium text-gray-500 uppercase",children:"Bank"})]})]}),(0,a.jsx)("tbody",{className:"divide-y divide-gray-100",children:s.map(e=>{let t=e.contractNoteUnits===e.dwmUnits&&e.dwmUnits===e.clientUnits&&e.clientUnits===e.custodianUnits,r=i(e.contractNoteValue,e.aisValue)&&i(e.aisValue,e.bankValue),s=!!e.break||!t||!r;return(0,a.jsxs)("tr",{className:s?"bg-red-50/50":"",children:[(0,a.jsx)("td",{className:"px-3 py-2.5 font-mono font-semibold text-gray-900",children:e.ticker}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono",children:e.contractNoteUnits}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono",children:e.dwmUnits}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono",children:e.clientUnits}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono",children:e.custodianUnits}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono text-xs",children:(0,n.Ip)(e.contractNoteValue)}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono text-xs ".concat(i(e.contractNoteValue,e.aisValue)?"":"text-red-700 font-semibold"),children:(0,n.Ip)(e.aisValue)}),(0,a.jsx)("td",{className:"px-2 py-2.5 text-right font-mono text-xs",children:(0,n.Ip)(e.bankValue)}),(0,a.jsx)("td",{className:"px-3 py-2.5",children:s?(0,a.jsxs)("div",{className:"leading-tight",children:[(0,a.jsx)(n.qs,{tone:"danger",children:"Break"}),e.break&&(0,a.jsx)("div",{className:"text-xs text-red-700 mt-1 max-w-[280px] whitespace-normal",children:e.break})]}):(0,a.jsx)(n.qs,{tone:"success",children:"Clean"})})]},e.ticker)})})]})}),(0,a.jsxs)("div",{className:"bg-white border border-gray-200 rounded-lg p-4 text-xs text-gray-600 leading-relaxed",children:[(0,a.jsx)("strong",{className:"text-gray-800",children:"Logic:"})," ","ABSA contract note units = DWM trade order units = Client order units = Strate AIS custodian units. Settlement value check: contract-note amount due â AIS DVP/RVP â ABSA 22Seven bank statement (tolerance R0.01). Settlement date uses ",(0,a.jsx)("code",{className:"font-mono",children:"WORKDAY(trade, 3)"})," or ",(0,a.jsx)("code",{className:"font-mono",children:"WORKDAY(trade, 4)"})," on public-holiday weeks. Recon ran for trade date ",(0,a.jsx)("strong",{children:(0,n.qw)("2026-05-21")}),"."]})]})}}},e=>{e.O(0,[7497,636,6593,8792],()=>e(e.s=22840)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.