PageSourceSearch

https://medifit-nienburg.de/assets/AgencyCosts-DMNIgUtH.js

js medifit-nienburg.de collected 2026-10-04 03:33:21 UTC 7,317 bytes, 1 lines download raw bytes

1import{a as o,j as e}from"./trpc-vendor-Bta84Nsh.js";import{t as l,B as d,C as i,h as x,D as V,a as $,b as A,c as U,L as r,I as N}from"./index-_3-B0itT.js";import{S as f,a as y,b as v,c as S,d as C}from"./select-DqcHU93A.js";import{t as c,b0 as W,j as _,aD as q,a_ as X,ap as Z}from"./ui-vendor-NEZNvIbV.js";import"./react-vendor-DpXpH6G7.js";const w=["Software & Tools","Personal","Büro & Miete","Werbung & Marketing","Steuerberatung","Versicherungen","Sonstiges"];function ee(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function R(t){const[u,E]=t.split("-");return new Date(parseInt(u),parseInt(E)-1,1).toLocaleDateString("de-DE",{month:"long",year:"numeric"})}function oe(){const[t,u]=o.useState(ee()),[E,m]=o.useState(!1),[F,D]=o.useState(null),[h,g]=o.useState(w[0]),[n,j]=o.useState(""),[p,b]=o.useState(""),{data:M,refetch:k}=l.agencyCosts.list.useQuery({month:t}),T=l.agencyCosts.create.useMutation({onSuccess:()=>{c.success("Kosten eingetragen"),k(),m(!1),L()},onError:s=>c.error(s.message)}),K=l.agencyCosts.update.useMutation({onSuccess:()=>{c.success("Gespeichert"),k(),D(null)},onError:s=>c.error(s.message)}),G=l.agencyCosts.delete.useMutation({onSuccess:()=>{c.success("Gelöscht"),k()},onError:s=>c.error(s.message)}),O=(()=>{const[s,a]=t.split("-").map(Number),H=new Date(s,a-1,1).getTime(),J=new Date(s,a,0,23,59,59,999).getTime();return{dateFrom:H,dateTo:J}})(),{data:Q}=l.dashboard.kpis.useQuery(O,{retry:!1});function L(){g(w[0]),j(""),b("")}function Y(s){D(s),g(s.category),j(String(s.amount)),b(s.notes??"")}const z=(M??[]).reduce((s,a)=>s+parseFloat(String(a.amount)),0),B=Q?.commissionTotal??0,P=B-z,I=[];for(let s=0;s<12;s++){const a=new Date;a.setMonth(a.getMonth()-s),I.push(`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}`)}return e.jsxs("div",{className:"space-y-6 max-w-3xl",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h1",{className:"text-2xl font-bold text-foreground flex items-center gap-2",children:[e.jsx(W,{className:"h-6 w-6"})," Agenturkosten"]}),e.jsxs(d,{size:"sm",onClick:()=>{L(),m(!0)},children:[e.jsx(_,{className:"h-4 w-4 mr-1"})," Kosten eintragen"]})]}),e.jsxs(f,{value:t,onValueChange:u,children:[e.jsx(y,{className:"w-56 bg-muted border-border",children:e.jsx(v,{})}),e.jsx(S,{children:I.map(s=>e.jsx(C,{value:s,children:R(s)},s))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(i,{className:"bg-card border-border",children:e.jsxs(x,{className:"p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Provision MoreMembers"}),e.jsx("p",{className:"text-xl font-bold text-green-400",children:B.toLocaleString("de-DE",{style:"currency",currency:"EUR"})})]})}),e.jsx(i,{className:"bg-card border-border",children:e.jsxs(x,{className:"p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Kosten (gesamt)"}),e.jsx("p",{className:"text-xl font-bold text-red-400",children:z.toLocaleString("de-DE",{style:"currency",currency:"EUR"})})]})}),e.jsx(i,{className:`border-border ${P>=0?"bg-green-500/10":"bg-red-500/10"}`,children:e.jsxs(x,{className:"p-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Nettogewinn"}),e.jsx("p",{className:`text-xl font-bold ${P>=0?"text-green-400":"text-red-400"}`,children:P.toLocaleString("de-DE",{style:"currency",currency:"EUR"})})]})})]}),e.jsx("div",{className:"space-y-2",children:(M??[]).length===0?e.jsx(i,{className:"bg-card border-border",children:e.jsxs(x,{className:"p-8 text-center text-muted-foreground",children:[e.jsx(q,{className:"h-8 w-8 mx-auto mb-2 opacity-30"}),e.jsxs("p",{children:["Keine Kosten für ",R(t)," eingetragen"]})]})}):(M??[]).map(s=>e.jsx(i,{className:"bg-card border-border",children:e.jsxs(x,{className:"p-4 flex items-center justify-between",children:[e.jsx("div",{className:"flex-1",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-xs bg-muted px-2 py-0.5 rounded text-muted-foreground",children:s.category}),s.notes&&e.jsx("span",{className:"text-xs text-muted-foreground truncate max-w-[200px]",children:s.notes})]})}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"font-semibold text-foreground",children:parseFloat(s.amount).toLocaleStr
1ing("de-DE",{style:"currency",currency:"EUR"})}),e.jsx(d,{variant:"ghost",size:"icon",onClick:()=>Y(s),children:e.jsx(X,{className:"h-4 w-4"})}),e.jsx(d,{variant:"ghost",size:"icon",className:"text-destructive hover:text-destructive",onClick:()=>G.mutate({id:s.id}),children:e.jsx(Z,{className:"h-4 w-4"})})]})]})},s.id))}),e.jsx(V,{open:E,onOpenChange:m,children:e.jsxs($,{className:"bg-card border-border max-w-sm",children:[e.jsx(A,{children:e.jsx(U,{children:"Kosten eintragen"})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Monat"}),e.jsxs(f,{value:t,onValueChange:u,children:[e.jsx(y,{className:"bg-muted border-border",children:e.jsx(v,{})}),e.jsx(S,{children:I.map(s=>e.jsx(C,{value:s,children:R(s)},s))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Kategorie"}),e.jsxs(f,{value:h,onValueChange:g,children:[e.jsx(y,{className:"bg-muted border-border",children:e.jsx(v,{})}),e.jsx(S,{children:w.map(s=>e.jsx(C,{value:s,children:s},s))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Betrag (€)"}),e.jsx(N,{type:"number",placeholder:"0.00",value:n,onChange:s=>j(s.target.value),className:"bg-muted border-border"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Notiz (optional)"}),e.jsx(N,{placeholder:"z.B. Jahresbeitrag anteilig",value:p,onChange:s=>b(s.target.value),className:"bg-muted border-border"})]}),e.jsx(d,{className:"w-full",disabled:!n||parseFloat(n)<=0||T.isPending,onClick:()=>T.mutate({month:t,category:h,amount:n,notes:p||void 0}),children:T.isPending?"Speichern...":"Eintragen"})]})]})}),e.jsx(V,{open:!!F,onOpenChange:s=>{s||D(null)},children:e.jsxs($,{className:"bg-card border-border max-w-sm",children:[e.jsx(A,{children:e.jsx(U,{children:"Kosten bearbeiten"})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Kategorie"}),e.jsxs(f,{value:h,onValueChange:g,children:[e.jsx(y,{className:"bg-muted border-border",children:e.jsx(v,{})}),e.jsx(S,{children:w.map(s=>e.jsx(C,{value:s,children:s},s))})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Betrag (€)"}),e.jsx(N,{type:"number",value:n,onChange:s=>j(s.target.value),className:"bg-muted border-border"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{className:"text-xs text-muted-foreground",children:"Notiz"}),e.jsx(N,{value:p,onChange:s=>b(s.target.value),className:"bg-muted border-border"})]}),e.jsx(d,{className:"w-full",disabled:K.isPending,onClick:()=>K.mutate({id:F.id,category:h,amount:n,notes:p||null}),children:K.isPending?"Speichern...":"Speichern"})]})]})})]})}export{oe as default};

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.