nda
This commit is contained in:
@@ -110,6 +110,11 @@ export interface NdaRound {
|
||||
signer_name: string | null;
|
||||
/** A declined round stays SENT — it was never signed. */
|
||||
declined: boolean;
|
||||
/** Read straight off the signed Dropbox Sign form. */
|
||||
income_requirements: string | null;
|
||||
accountant: string | null;
|
||||
attorney: string | null;
|
||||
bank: string | null;
|
||||
deals: Deal[];
|
||||
}
|
||||
|
||||
@@ -269,6 +274,8 @@ export interface InboxRow {
|
||||
signer: { name: string; email: string };
|
||||
/** Full ISO timestamp as well — the second the signature came in. */
|
||||
signed_at: string | null;
|
||||
/** signed_at once signed, created_at until then: the moment that matters. */
|
||||
relevant_at: string;
|
||||
imported: { nda_id: string; buyer_id: string } | null;
|
||||
known_buyer: { buyer_id: string; company_name: string | null; contact_name: string } | null;
|
||||
business_suggestions: { id: string; name: string; status: BusinessStatus }[];
|
||||
@@ -294,6 +301,14 @@ export interface ImportResult {
|
||||
warning: string | null;
|
||||
}
|
||||
|
||||
export interface BackfillResult {
|
||||
candidates: number;
|
||||
filled: number;
|
||||
empty: number;
|
||||
failed: number;
|
||||
warnings: string[];
|
||||
}
|
||||
|
||||
export interface SyncResult {
|
||||
checked: number;
|
||||
signed: number;
|
||||
@@ -417,6 +432,7 @@ export const api = {
|
||||
business_id: businessId,
|
||||
}),
|
||||
syncInbox: () => post<SyncResult>('/api/nda-inbox/sync'),
|
||||
backfillFields: () => post<BackfillResult>('/api/nda-inbox/backfill-fields'),
|
||||
};
|
||||
|
||||
/** Same-origin streaming URL of the PDF filed for one NDA round. */
|
||||
|
||||
@@ -422,6 +422,27 @@ function Round({
|
||||
value={nda.down_payment}
|
||||
onSave={(next) => guard(() => api.updateNda(nda.id, { down_payment: next }))}
|
||||
/>
|
||||
{/* Read off the signed Dropbox Sign form, editable like everything else. */}
|
||||
<InlineField
|
||||
label="Income requirements"
|
||||
value={nda.income_requirements}
|
||||
onSave={(next) => guard(() => api.updateNda(nda.id, { income_requirements: next }))}
|
||||
/>
|
||||
<InlineField
|
||||
label="Accountant"
|
||||
value={nda.accountant}
|
||||
onSave={(next) => guard(() => api.updateNda(nda.id, { accountant: next }))}
|
||||
/>
|
||||
<InlineField
|
||||
label="Attorney"
|
||||
value={nda.attorney}
|
||||
onSave={(next) => guard(() => api.updateNda(nda.id, { attorney: next }))}
|
||||
/>
|
||||
<InlineField
|
||||
label="Bank"
|
||||
value={nda.bank}
|
||||
onSave={(next) => guard(() => api.updateNda(nda.id, { bank: next }))}
|
||||
/>
|
||||
<div className="col-span-2">
|
||||
<InlineField
|
||||
label="Preferred businesses"
|
||||
|
||||
@@ -229,8 +229,9 @@ export default function NdaInbox({
|
||||
<tbody>
|
||||
{rows?.map((row) => (
|
||||
<tr key={row.signature_request_id} className="border-b border-gray-100 align-top">
|
||||
{/* Signed → when it was signed; still pending → when it arrived. */}
|
||||
<td className="px-3 py-1.5 text-gray-500">
|
||||
<DateTime iso={row.created_at} />
|
||||
<DateTime iso={row.relevant_at} />
|
||||
</td>
|
||||
<td className="px-3 py-1.5">{row.signer.name || '—'}</td>
|
||||
<td className="px-3 py-1.5 text-gray-600">{row.signer.email || '—'}</td>
|
||||
|
||||
Reference in New Issue
Block a user