diff --git a/amplify/data/account-schema.ts b/amplify/data/account-schema.ts index ee71e0808..0b63a55bd 100644 --- a/amplify/data/account-schema.ts +++ b/amplify/data/account-schema.ts @@ -65,6 +65,7 @@ const accountSchema = { isViaReseller: a.boolean(), resellerId: a.id(), reseller: a.belongsTo("Account", "resellerId"), + notes: a.string(), mainContactId: a.id(), mainContact: a.belongsTo("Person", "mainContactId"), financials: a.hasMany("PayerAccountMrr", "awsAccountNumber"), diff --git a/api/usePayer.ts b/api/usePayer.ts index 50bddc368..6477e1de8 100644 --- a/api/usePayer.ts +++ b/api/usePayer.ts @@ -19,6 +19,7 @@ const selectionSet = [ "accounts.accountId", "resellerId", "mainContactId", + "notes", ] as const; export type Payer = { @@ -27,6 +28,7 @@ export type Payer = { resellerId?: string; accountIds: string[]; mainContactId?: string; + notes: string; }; const mapPayer = ({ @@ -34,12 +36,14 @@ const mapPayer = ({ accounts, resellerId, mainContactId, + notes, }: PayerData): Payer => ({ accountNumber: awsAccountNumber, isReseller: !!resellerId, resellerId: resellerId ?? undefined, accountIds: map(({ accountId }) => accountId)(accounts) ?? [], mainContactId: mainContactId ?? undefined, + notes: notes ?? "", }); const fetchPayer = (payerId?: string) => async () => { @@ -109,6 +113,19 @@ const usePayer = (payerId?: string) => { return data; }; + const updateNotes = async (notes: string) => { + if (!payer) return; + const updatedPayer = { ...payer, notes } as Payer; + mutate(updatedPayer, false); + const { data, errors } = await client.models.PayerAccount.update({ + awsAccountNumber: payer.accountNumber, + notes, + }); + if (errors) handleApiErrors(errors, "Updating notes failed"); + mutate(updatedPayer); + return data; + }; + return { payer, isLoading, @@ -116,6 +133,7 @@ const usePayer = (payerId?: string) => { createPayerAccountLink, deletePayerAccount, attachReseller, + updateNotes, }; }; diff --git a/components/payers/details.tsx b/components/payers/details.tsx index 5c905c45a..f45effa68 100644 --- a/components/payers/details.tsx +++ b/components/payers/details.tsx @@ -4,26 +4,33 @@ import { FC } from "react"; import AccountSelector from "../ui-elements/selectors/account-selector"; import PayerAccounts from "./accounts"; import PayerFinancials from "./financials"; +import NotesInput from "./notes-input"; import PayerReseller from "./reseller"; type PayerDetailsProps = { showLinkedAccounts?: boolean; showFinancials?: boolean; + showNotes?: boolean; showReseller?: boolean; payerId: string | undefined; }; const PayerDetails: FC = ({ payerId, + showNotes, showFinancials = true, showLinkedAccounts = true, showReseller = true, }) => { - const { attachReseller } = usePayer(payerId); + const { attachReseller, payer, updateNotes } = usePayer(payerId); return ( payerId && ( + {showNotes && ( + + )} +
void; + className?: string; +}; + +const NotesInput: FC = ({ payer, onChange, className }) => { + const [notes, setNotes] = useState(""); + + useEffect(() => { + setNotes(payer?.notes ?? ""); + }, [payer]); + + return ( +
+ setNotes(e.target.value)} + placeholder="Add notes…" + /> + +
+ ); +}; + +export default NotesInput; diff --git a/docs/releases/next.md b/docs/releases/next.md index 17684ce36..71ff254af 100644 --- a/docs/releases/next.md +++ b/docs/releases/next.md @@ -1,19 +1,16 @@ -# Verarbeiten der Inbox optimieren (Version :VERSION) +# AWS Payer ID erhält ein zusätzliches Notizfeld (Version :VERSION) -- Die Inbox zeigt jetzt immer nur den ersten offenen Eintrag an, so dass die Inbox ganz konzentriert bearbeitet werden kann. -- Neue Inbox Einträge können nun mit Cmd+Enter gespeichert werden. -- Der Workflow für Inbox-Einträge ist vollständig überarbeitet und insgesamt schlüssiger und schneller. Die getroffene Entscheidung wird ausschließlich am Ende gespeichert und nicht mehr zwischendurch. -- Inbox-Einträge können nun auch als Gelerntes über Personen gespeichert werden. -- In der Wochenplanung ist nun eine kleine Checkliste eingeführt. Zunächst werden offene Inbox-Einträge verarbeitet, dann aktuelle Umsätze und Projekte der Kunden geladen und schließlich – wie zuvor auch – die Projekte überprüft. - -## Kleinere Verbesserungen - -- Im Dialog zum Erstellen neuer Aufgaben muss nun nicht mehr der Speichern-Button gedrückt werden; es kann nun auch mit der Tastenkombination Cmd+Enter gespeichert werden. +Damit können Bemerkungen für einen Account hinterlassen werden. ## In Arbeit ## Geplant +### Meetings + +- In einem Meeting möchte ich zu einer Person schnell etwas Gelerntes erfassen können, ein Gebetsanliegen, eine Geschenkidee, die aktuelle Jobposition oder ein Kontaktdetail (z.B. Email, Telefon). +- In einem Meeting möchte ich zu jedem Teilnehmer schnell die letzten "Learnings" einsehen können sowie offene Gebetsanliegen oder den Geburtstag, so dass ich das in dem Meeting einfließen lassen oder nutzen kann. + ### Account Details - Bei Accounts sollten auch Projekte auftauchen, bei denen der Account als Partner engagiert ist; das gleiche gilt auch für die Notizen. @@ -38,6 +35,7 @@ - In Wochenplanung persönliche Termine mit berücksichtigen (Geburtstage, Jahrestage). - Ich möchte einfache Todos haben, die keinem Projekt zugeordnet sind. - Eine Checkliste einführen für das tägliche Planen. +- Option anbieten, um verwaiste Aufgaben zu löschen. ### Projekte diff --git a/pages/payers/[id].tsx b/pages/payers/[id].tsx index f9df48217..d06cfc101 100644 --- a/pages/payers/[id].tsx +++ b/pages/payers/[id].tsx @@ -26,7 +26,7 @@ const ProjectDetailPage = () => { resellerId={payer?.resellerId} /> - + ); };