@robosystems/client 1.3.0 → 1.4.0
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/artifacts/LedgerClient.d.ts +17 -0
- package/artifacts/LedgerClient.js +17 -0
- package/artifacts/LedgerClient.ts +55 -0
- package/artifacts/graphql/generated/graphql.d.ts +18 -2
- package/artifacts/graphql/generated/graphql.js +30 -0
- package/artifacts/graphql/generated/graphql.ts +48 -2
- package/artifacts/graphql/queries/ledger/fiscalCalendar.d.ts +7 -0
- package/artifacts/graphql/queries/ledger/fiscalCalendar.js +23 -0
- package/artifacts/graphql/queries/ledger/fiscalCalendar.ts +23 -0
- package/package.json +1 -1
- package/sdk/types.gen.d.ts +3 -3
- package/sdk/types.gen.ts +3 -3
- package/types.gen.d.ts +3 -3
- package/types.gen.ts +3 -3
|
@@ -97,7 +97,17 @@ export interface InitializeLedgerResult {
|
|
|
97
97
|
}
|
|
98
98
|
export interface ClosePeriodResult {
|
|
99
99
|
period: string;
|
|
100
|
+
/**
|
|
101
|
+
* Total drafts the close moved to posted, across both post paths. A close
|
|
102
|
+
* that published everything to QuickBooks used to report 0 here, because
|
|
103
|
+
* the pre-publish step promotes each draft before the local bulk
|
|
104
|
+
* transition counts it; both paths are summed now.
|
|
105
|
+
*/
|
|
100
106
|
entriesPosted: number;
|
|
107
|
+
/** Drafts published to QuickBooks by the close's pre-publish step. */
|
|
108
|
+
entriesPublishedToQb: number;
|
|
109
|
+
/** Drafts posted by the local bulk transition (never reach QuickBooks). */
|
|
110
|
+
entriesPostedLocally: number;
|
|
101
111
|
targetAutoAdvanced: boolean;
|
|
102
112
|
fiscalCalendar: LedgerFiscalCalendar;
|
|
103
113
|
/**
|
|
@@ -152,6 +162,13 @@ export interface InitializeLedgerOptions {
|
|
|
152
162
|
export interface ClosePeriodOptions {
|
|
153
163
|
note?: string | null;
|
|
154
164
|
allowStaleSync?: boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Close despite matured obligations that were never drafted, knowingly
|
|
167
|
+
* omitting those adjusting entries. Prefer re-running promotion with
|
|
168
|
+
* handler dispatch, or voiding the obligations. The override is recorded
|
|
169
|
+
* in the close audit note.
|
|
170
|
+
*/
|
|
171
|
+
allowStrandedObligations?: boolean;
|
|
155
172
|
}
|
|
156
173
|
export interface CreateScheduleOptions {
|
|
157
174
|
name: string;
|
|
@@ -579,12 +579,15 @@ class LedgerClient {
|
|
|
579
579
|
period,
|
|
580
580
|
note: options?.note ?? null,
|
|
581
581
|
allow_stale_sync: options?.allowStaleSync,
|
|
582
|
+
allow_stranded_obligations: options?.allowStrandedObligations,
|
|
582
583
|
};
|
|
583
584
|
const envelope = await this.callOperation('Close period', (0, sdk_gen_1.closePeriod)({ path: { graph_id: graphId }, body }));
|
|
584
585
|
const raw = envelope.result;
|
|
585
586
|
return {
|
|
586
587
|
period: raw.period,
|
|
587
588
|
entriesPosted: raw.entries_posted ?? 0,
|
|
589
|
+
entriesPublishedToQb: raw.entries_published_to_qb ?? 0,
|
|
590
|
+
entriesPostedLocally: raw.entries_posted_locally ?? 0,
|
|
588
591
|
targetAutoAdvanced: raw.target_auto_advanced ?? false,
|
|
589
592
|
fiscalCalendar: rawFiscalCalendarToCamel(raw.fiscal_calendar),
|
|
590
593
|
ruleSummary: raw.rule_summary ?? null,
|
|
@@ -1079,6 +1082,14 @@ class LedgerClient {
|
|
|
1079
1082
|
}
|
|
1080
1083
|
exports.LedgerClient = LedgerClient;
|
|
1081
1084
|
// ── Module-private conversion helpers ─────────────────────────────────
|
|
1085
|
+
function rawObligationDetailToCamel(raw) {
|
|
1086
|
+
return {
|
|
1087
|
+
eventId: raw.event_id,
|
|
1088
|
+
scheduleId: raw.schedule_id ?? null,
|
|
1089
|
+
scheduleName: raw.schedule_name ?? null,
|
|
1090
|
+
period: raw.period,
|
|
1091
|
+
};
|
|
1092
|
+
}
|
|
1082
1093
|
function rawFiscalCalendarToCamel(raw) {
|
|
1083
1094
|
return {
|
|
1084
1095
|
graphId: raw.graph_id,
|
|
@@ -1089,6 +1100,12 @@ function rawFiscalCalendarToCamel(raw) {
|
|
|
1089
1100
|
catchUpSequence: raw.catch_up_sequence ?? [],
|
|
1090
1101
|
closeableNow: raw.closeable_now ?? false,
|
|
1091
1102
|
blockers: raw.blockers ?? [],
|
|
1103
|
+
pendingObligationCount: raw.pending_obligation_count ?? 0,
|
|
1104
|
+
pendingObligationSample: (raw.pending_obligation_sample ?? []).map(rawObligationDetailToCamel),
|
|
1105
|
+
earliestPendingPeriod: raw.earliest_pending_period ?? null,
|
|
1106
|
+
strandedObligationCount: raw.stranded_obligation_count ?? 0,
|
|
1107
|
+
strandedObligationSample: (raw.stranded_obligation_sample ?? []).map(rawObligationDetailToCamel),
|
|
1108
|
+
syncStaleDays: raw.sync_stale_days ?? null,
|
|
1092
1109
|
lastCloseAt: raw.last_close_at ?? null,
|
|
1093
1110
|
initializedAt: raw.initialized_at ?? null,
|
|
1094
1111
|
lastSyncAt: raw.last_sync_at ?? null,
|
|
@@ -345,6 +345,13 @@ export interface CreateReportOptions {
|
|
|
345
345
|
// consumers; for simple ack/ack-with-id payloads we keep the raw shape.
|
|
346
346
|
|
|
347
347
|
/** Snake-case shape returned in envelope.result for fiscal calendar writes. */
|
|
348
|
+
interface RawObligationDetail {
|
|
349
|
+
event_id: string
|
|
350
|
+
schedule_id?: string | null
|
|
351
|
+
schedule_name?: string | null
|
|
352
|
+
period: string
|
|
353
|
+
}
|
|
354
|
+
|
|
348
355
|
interface RawFiscalCalendar {
|
|
349
356
|
graph_id: string
|
|
350
357
|
fiscal_year_start_month: number
|
|
@@ -354,6 +361,15 @@ interface RawFiscalCalendar {
|
|
|
354
361
|
catch_up_sequence: string[]
|
|
355
362
|
closeable_now: boolean
|
|
356
363
|
blockers: string[]
|
|
364
|
+
// Detail for actionable blockers — the API populates each only when its
|
|
365
|
+
// corresponding code is in `blockers`, so a caller can name which
|
|
366
|
+
// schedules hold the close rather than just that something does.
|
|
367
|
+
pending_obligation_count?: number
|
|
368
|
+
pending_obligation_sample?: RawObligationDetail[]
|
|
369
|
+
earliest_pending_period?: string | null
|
|
370
|
+
stranded_obligation_count?: number
|
|
371
|
+
stranded_obligation_sample?: RawObligationDetail[]
|
|
372
|
+
sync_stale_days?: number | null
|
|
357
373
|
last_close_at: string | null
|
|
358
374
|
initialized_at: string | null
|
|
359
375
|
last_sync_at: string | null
|
|
@@ -375,6 +391,8 @@ interface RawInitializeLedgerResult {
|
|
|
375
391
|
interface RawClosePeriodResult {
|
|
376
392
|
period: string
|
|
377
393
|
entries_posted: number
|
|
394
|
+
entries_published_to_qb?: number
|
|
395
|
+
entries_posted_locally?: number
|
|
378
396
|
target_auto_advanced: boolean
|
|
379
397
|
fiscal_calendar: RawFiscalCalendar
|
|
380
398
|
// §3.8 — auto-run rules on close. `null` when no schedules with facts
|
|
@@ -404,7 +422,17 @@ export interface InitializeLedgerResult {
|
|
|
404
422
|
|
|
405
423
|
export interface ClosePeriodResult {
|
|
406
424
|
period: string
|
|
425
|
+
/**
|
|
426
|
+
* Total drafts the close moved to posted, across both post paths. A close
|
|
427
|
+
* that published everything to QuickBooks used to report 0 here, because
|
|
428
|
+
* the pre-publish step promotes each draft before the local bulk
|
|
429
|
+
* transition counts it; both paths are summed now.
|
|
430
|
+
*/
|
|
407
431
|
entriesPosted: number
|
|
432
|
+
/** Drafts published to QuickBooks by the close's pre-publish step. */
|
|
433
|
+
entriesPublishedToQb: number
|
|
434
|
+
/** Drafts posted by the local bulk transition (never reach QuickBooks). */
|
|
435
|
+
entriesPostedLocally: number
|
|
408
436
|
targetAutoAdvanced: boolean
|
|
409
437
|
fiscalCalendar: LedgerFiscalCalendar
|
|
410
438
|
/**
|
|
@@ -466,6 +494,13 @@ export interface InitializeLedgerOptions {
|
|
|
466
494
|
export interface ClosePeriodOptions {
|
|
467
495
|
note?: string | null
|
|
468
496
|
allowStaleSync?: boolean
|
|
497
|
+
/**
|
|
498
|
+
* Close despite matured obligations that were never drafted, knowingly
|
|
499
|
+
* omitting those adjusting entries. Prefer re-running promotion with
|
|
500
|
+
* handler dispatch, or voiding the obligations. The override is recorded
|
|
501
|
+
* in the close audit note.
|
|
502
|
+
*/
|
|
503
|
+
allowStrandedObligations?: boolean
|
|
469
504
|
}
|
|
470
505
|
|
|
471
506
|
export interface CreateScheduleOptions {
|
|
@@ -1603,6 +1638,7 @@ export class LedgerClient {
|
|
|
1603
1638
|
period,
|
|
1604
1639
|
note: options?.note ?? null,
|
|
1605
1640
|
allow_stale_sync: options?.allowStaleSync,
|
|
1641
|
+
allow_stranded_obligations: options?.allowStrandedObligations,
|
|
1606
1642
|
}
|
|
1607
1643
|
const envelope = await this.callOperation(
|
|
1608
1644
|
'Close period',
|
|
@@ -1612,6 +1648,8 @@ export class LedgerClient {
|
|
|
1612
1648
|
return {
|
|
1613
1649
|
period: raw.period,
|
|
1614
1650
|
entriesPosted: raw.entries_posted ?? 0,
|
|
1651
|
+
entriesPublishedToQb: raw.entries_published_to_qb ?? 0,
|
|
1652
|
+
entriesPostedLocally: raw.entries_posted_locally ?? 0,
|
|
1615
1653
|
targetAutoAdvanced: raw.target_auto_advanced ?? false,
|
|
1616
1654
|
fiscalCalendar: rawFiscalCalendarToCamel(raw.fiscal_calendar),
|
|
1617
1655
|
ruleSummary: raw.rule_summary ?? null,
|
|
@@ -2363,6 +2401,15 @@ export class LedgerClient {
|
|
|
2363
2401
|
|
|
2364
2402
|
// ── Module-private conversion helpers ─────────────────────────────────
|
|
2365
2403
|
|
|
2404
|
+
function rawObligationDetailToCamel(raw: RawObligationDetail) {
|
|
2405
|
+
return {
|
|
2406
|
+
eventId: raw.event_id,
|
|
2407
|
+
scheduleId: raw.schedule_id ?? null,
|
|
2408
|
+
scheduleName: raw.schedule_name ?? null,
|
|
2409
|
+
period: raw.period,
|
|
2410
|
+
}
|
|
2411
|
+
}
|
|
2412
|
+
|
|
2366
2413
|
function rawFiscalCalendarToCamel(raw: RawFiscalCalendar): LedgerFiscalCalendar {
|
|
2367
2414
|
return {
|
|
2368
2415
|
graphId: raw.graph_id,
|
|
@@ -2373,6 +2420,14 @@ function rawFiscalCalendarToCamel(raw: RawFiscalCalendar): LedgerFiscalCalendar
|
|
|
2373
2420
|
catchUpSequence: raw.catch_up_sequence ?? [],
|
|
2374
2421
|
closeableNow: raw.closeable_now ?? false,
|
|
2375
2422
|
blockers: raw.blockers ?? [],
|
|
2423
|
+
pendingObligationCount: raw.pending_obligation_count ?? 0,
|
|
2424
|
+
pendingObligationSample: (raw.pending_obligation_sample ?? []).map(rawObligationDetailToCamel),
|
|
2425
|
+
earliestPendingPeriod: raw.earliest_pending_period ?? null,
|
|
2426
|
+
strandedObligationCount: raw.stranded_obligation_count ?? 0,
|
|
2427
|
+
strandedObligationSample: (raw.stranded_obligation_sample ?? []).map(
|
|
2428
|
+
rawObligationDetailToCamel
|
|
2429
|
+
),
|
|
2430
|
+
syncStaleDays: raw.sync_stale_days ?? null,
|
|
2376
2431
|
lastCloseAt: raw.last_close_at ?? null,
|
|
2377
2432
|
initializedAt: raw.initialized_at ?? null,
|
|
2378
2433
|
lastSyncAt: raw.last_sync_at ?? null,
|
|
@@ -317,10 +317,10 @@ export type EventBlock = {
|
|
|
317
317
|
externalId: Maybe<Scalars['String']['output']>;
|
|
318
318
|
externalUrl: Maybe<Scalars['String']['output']>;
|
|
319
319
|
id: Scalars['String']['output'];
|
|
320
|
+
isReconcilingItem: Scalars['Boolean']['output'];
|
|
320
321
|
metadata: Scalars['JSON']['output'];
|
|
321
322
|
obligatedByEventId: Maybe<Scalars['String']['output']>;
|
|
322
323
|
occurredAt: Scalars['DateTime']['output'];
|
|
323
|
-
payloadDrift: Scalars['Boolean']['output'];
|
|
324
324
|
replacedByEventId: Maybe<Scalars['String']['output']>;
|
|
325
325
|
replacesEventId: Maybe<Scalars['String']['output']>;
|
|
326
326
|
resourceElementId: Maybe<Scalars['String']['output']>;
|
|
@@ -1620,9 +1620,9 @@ export type QueryEventBlocksArgs = {
|
|
|
1620
1620
|
agentId?: InputMaybe<Scalars['String']['input']>;
|
|
1621
1621
|
eventCategory?: InputMaybe<Scalars['String']['input']>;
|
|
1622
1622
|
eventType?: InputMaybe<Scalars['String']['input']>;
|
|
1623
|
+
isReconcilingItem?: InputMaybe<Scalars['Boolean']['input']>;
|
|
1623
1624
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
1624
1625
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
1625
|
-
payloadDrift?: InputMaybe<Scalars['Boolean']['input']>;
|
|
1626
1626
|
source?: InputMaybe<Scalars['String']['input']>;
|
|
1627
1627
|
status?: InputMaybe<Scalars['String']['input']>;
|
|
1628
1628
|
};
|
|
@@ -2771,9 +2771,25 @@ export type GetLedgerFiscalCalendarQuery = {
|
|
|
2771
2771
|
catchUpSequence: Array<string>;
|
|
2772
2772
|
closeableNow: boolean;
|
|
2773
2773
|
blockers: Array<string>;
|
|
2774
|
+
pendingObligationCount: number;
|
|
2775
|
+
earliestPendingPeriod: string | null;
|
|
2776
|
+
strandedObligationCount: number;
|
|
2777
|
+
syncStaleDays: number | null;
|
|
2774
2778
|
lastCloseAt: any | null;
|
|
2775
2779
|
initializedAt: any | null;
|
|
2776
2780
|
lastSyncAt: any | null;
|
|
2781
|
+
pendingObligationSample: Array<{
|
|
2782
|
+
eventId: string;
|
|
2783
|
+
scheduleId: string | null;
|
|
2784
|
+
scheduleName: string | null;
|
|
2785
|
+
period: string;
|
|
2786
|
+
}>;
|
|
2787
|
+
strandedObligationSample: Array<{
|
|
2788
|
+
eventId: string;
|
|
2789
|
+
scheduleId: string | null;
|
|
2790
|
+
scheduleName: string | null;
|
|
2791
|
+
period: string;
|
|
2792
|
+
}>;
|
|
2777
2793
|
periods: Array<{
|
|
2778
2794
|
name: string;
|
|
2779
2795
|
startDate: any;
|
|
@@ -1621,6 +1621,36 @@ exports.GetLedgerFiscalCalendarDocument = {
|
|
|
1621
1621
|
{ kind: 'Field', name: { kind: 'Name', value: 'catchUpSequence' } },
|
|
1622
1622
|
{ kind: 'Field', name: { kind: 'Name', value: 'closeableNow' } },
|
|
1623
1623
|
{ kind: 'Field', name: { kind: 'Name', value: 'blockers' } },
|
|
1624
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'pendingObligationCount' } },
|
|
1625
|
+
{
|
|
1626
|
+
kind: 'Field',
|
|
1627
|
+
name: { kind: 'Name', value: 'pendingObligationSample' },
|
|
1628
|
+
selectionSet: {
|
|
1629
|
+
kind: 'SelectionSet',
|
|
1630
|
+
selections: [
|
|
1631
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'eventId' } },
|
|
1632
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleId' } },
|
|
1633
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleName' } },
|
|
1634
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'period' } },
|
|
1635
|
+
],
|
|
1636
|
+
},
|
|
1637
|
+
},
|
|
1638
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'earliestPendingPeriod' } },
|
|
1639
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'strandedObligationCount' } },
|
|
1640
|
+
{
|
|
1641
|
+
kind: 'Field',
|
|
1642
|
+
name: { kind: 'Name', value: 'strandedObligationSample' },
|
|
1643
|
+
selectionSet: {
|
|
1644
|
+
kind: 'SelectionSet',
|
|
1645
|
+
selections: [
|
|
1646
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'eventId' } },
|
|
1647
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleId' } },
|
|
1648
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleName' } },
|
|
1649
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'period' } },
|
|
1650
|
+
],
|
|
1651
|
+
},
|
|
1652
|
+
},
|
|
1653
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'syncStaleDays' } },
|
|
1624
1654
|
{ kind: 'Field', name: { kind: 'Name', value: 'lastCloseAt' } },
|
|
1625
1655
|
{ kind: 'Field', name: { kind: 'Name', value: 'initializedAt' } },
|
|
1626
1656
|
{ kind: 'Field', name: { kind: 'Name', value: 'lastSyncAt' } },
|
|
@@ -301,10 +301,10 @@ export type EventBlock = {
|
|
|
301
301
|
externalId: Maybe<Scalars['String']['output']>
|
|
302
302
|
externalUrl: Maybe<Scalars['String']['output']>
|
|
303
303
|
id: Scalars['String']['output']
|
|
304
|
+
isReconcilingItem: Scalars['Boolean']['output']
|
|
304
305
|
metadata: Scalars['JSON']['output']
|
|
305
306
|
obligatedByEventId: Maybe<Scalars['String']['output']>
|
|
306
307
|
occurredAt: Scalars['DateTime']['output']
|
|
307
|
-
payloadDrift: Scalars['Boolean']['output']
|
|
308
308
|
replacedByEventId: Maybe<Scalars['String']['output']>
|
|
309
309
|
replacesEventId: Maybe<Scalars['String']['output']>
|
|
310
310
|
resourceElementId: Maybe<Scalars['String']['output']>
|
|
@@ -1680,9 +1680,9 @@ export type QueryEventBlocksArgs = {
|
|
|
1680
1680
|
agentId?: InputMaybe<Scalars['String']['input']>
|
|
1681
1681
|
eventCategory?: InputMaybe<Scalars['String']['input']>
|
|
1682
1682
|
eventType?: InputMaybe<Scalars['String']['input']>
|
|
1683
|
+
isReconcilingItem?: InputMaybe<Scalars['Boolean']['input']>
|
|
1683
1684
|
limit?: InputMaybe<Scalars['Int']['input']>
|
|
1684
1685
|
offset?: InputMaybe<Scalars['Int']['input']>
|
|
1685
|
-
payloadDrift?: InputMaybe<Scalars['Boolean']['input']>
|
|
1686
1686
|
source?: InputMaybe<Scalars['String']['input']>
|
|
1687
1687
|
status?: InputMaybe<Scalars['String']['input']>
|
|
1688
1688
|
}
|
|
@@ -2896,9 +2896,25 @@ export type GetLedgerFiscalCalendarQuery = {
|
|
|
2896
2896
|
catchUpSequence: Array<string>
|
|
2897
2897
|
closeableNow: boolean
|
|
2898
2898
|
blockers: Array<string>
|
|
2899
|
+
pendingObligationCount: number
|
|
2900
|
+
earliestPendingPeriod: string | null
|
|
2901
|
+
strandedObligationCount: number
|
|
2902
|
+
syncStaleDays: number | null
|
|
2899
2903
|
lastCloseAt: any | null
|
|
2900
2904
|
initializedAt: any | null
|
|
2901
2905
|
lastSyncAt: any | null
|
|
2906
|
+
pendingObligationSample: Array<{
|
|
2907
|
+
eventId: string
|
|
2908
|
+
scheduleId: string | null
|
|
2909
|
+
scheduleName: string | null
|
|
2910
|
+
period: string
|
|
2911
|
+
}>
|
|
2912
|
+
strandedObligationSample: Array<{
|
|
2913
|
+
eventId: string
|
|
2914
|
+
scheduleId: string | null
|
|
2915
|
+
scheduleName: string | null
|
|
2916
|
+
period: string
|
|
2917
|
+
}>
|
|
2902
2918
|
periods: Array<{
|
|
2903
2919
|
name: string
|
|
2904
2920
|
startDate: any
|
|
@@ -5857,6 +5873,36 @@ export const GetLedgerFiscalCalendarDocument = {
|
|
|
5857
5873
|
{ kind: 'Field', name: { kind: 'Name', value: 'catchUpSequence' } },
|
|
5858
5874
|
{ kind: 'Field', name: { kind: 'Name', value: 'closeableNow' } },
|
|
5859
5875
|
{ kind: 'Field', name: { kind: 'Name', value: 'blockers' } },
|
|
5876
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'pendingObligationCount' } },
|
|
5877
|
+
{
|
|
5878
|
+
kind: 'Field',
|
|
5879
|
+
name: { kind: 'Name', value: 'pendingObligationSample' },
|
|
5880
|
+
selectionSet: {
|
|
5881
|
+
kind: 'SelectionSet',
|
|
5882
|
+
selections: [
|
|
5883
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'eventId' } },
|
|
5884
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleId' } },
|
|
5885
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleName' } },
|
|
5886
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'period' } },
|
|
5887
|
+
],
|
|
5888
|
+
},
|
|
5889
|
+
},
|
|
5890
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'earliestPendingPeriod' } },
|
|
5891
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'strandedObligationCount' } },
|
|
5892
|
+
{
|
|
5893
|
+
kind: 'Field',
|
|
5894
|
+
name: { kind: 'Name', value: 'strandedObligationSample' },
|
|
5895
|
+
selectionSet: {
|
|
5896
|
+
kind: 'SelectionSet',
|
|
5897
|
+
selections: [
|
|
5898
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'eventId' } },
|
|
5899
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleId' } },
|
|
5900
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'scheduleName' } },
|
|
5901
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'period' } },
|
|
5902
|
+
],
|
|
5903
|
+
},
|
|
5904
|
+
},
|
|
5905
|
+
{ kind: 'Field', name: { kind: 'Name', value: 'syncStaleDays' } },
|
|
5860
5906
|
{ kind: 'Field', name: { kind: 'Name', value: 'lastCloseAt' } },
|
|
5861
5907
|
{ kind: 'Field', name: { kind: 'Name', value: 'initializedAt' } },
|
|
5862
5908
|
{ kind: 'Field', name: { kind: 'Name', value: 'lastSyncAt' } },
|
|
@@ -4,5 +4,12 @@
|
|
|
4
4
|
* The resolver blends extensions-DB data (calendar + periods) with a
|
|
5
5
|
* platform-DB lookup for QB sync state (last_sync_at). Clients use
|
|
6
6
|
* `closeableNow` + `blockers` as the close gate.
|
|
7
|
+
*
|
|
8
|
+
* The obligation and staleness detail fields populate only when their
|
|
9
|
+
* corresponding blocker code is present, so a UI can name *which* schedules
|
|
10
|
+
* are holding the close instead of just reporting that something is. They
|
|
11
|
+
* are selected unconditionally here — the resolver returns 0 / [] / null
|
|
12
|
+
* when the blocker isn't active, which costs nothing and keeps the document
|
|
13
|
+
* free of a second round trip for the case that matters most.
|
|
7
14
|
*/
|
|
8
15
|
export declare const GET_FISCAL_CALENDAR: string;
|
|
@@ -8,6 +8,13 @@ const graphql_request_1 = require("graphql-request");
|
|
|
8
8
|
* The resolver blends extensions-DB data (calendar + periods) with a
|
|
9
9
|
* platform-DB lookup for QB sync state (last_sync_at). Clients use
|
|
10
10
|
* `closeableNow` + `blockers` as the close gate.
|
|
11
|
+
*
|
|
12
|
+
* The obligation and staleness detail fields populate only when their
|
|
13
|
+
* corresponding blocker code is present, so a UI can name *which* schedules
|
|
14
|
+
* are holding the close instead of just reporting that something is. They
|
|
15
|
+
* are selected unconditionally here — the resolver returns 0 / [] / null
|
|
16
|
+
* when the blocker isn't active, which costs nothing and keeps the document
|
|
17
|
+
* free of a second round trip for the case that matters most.
|
|
11
18
|
*/
|
|
12
19
|
exports.GET_FISCAL_CALENDAR = (0, graphql_request_1.gql) `
|
|
13
20
|
query GetLedgerFiscalCalendar {
|
|
@@ -20,6 +27,22 @@ exports.GET_FISCAL_CALENDAR = (0, graphql_request_1.gql) `
|
|
|
20
27
|
catchUpSequence
|
|
21
28
|
closeableNow
|
|
22
29
|
blockers
|
|
30
|
+
pendingObligationCount
|
|
31
|
+
pendingObligationSample {
|
|
32
|
+
eventId
|
|
33
|
+
scheduleId
|
|
34
|
+
scheduleName
|
|
35
|
+
period
|
|
36
|
+
}
|
|
37
|
+
earliestPendingPeriod
|
|
38
|
+
strandedObligationCount
|
|
39
|
+
strandedObligationSample {
|
|
40
|
+
eventId
|
|
41
|
+
scheduleId
|
|
42
|
+
scheduleName
|
|
43
|
+
period
|
|
44
|
+
}
|
|
45
|
+
syncStaleDays
|
|
23
46
|
lastCloseAt
|
|
24
47
|
initializedAt
|
|
25
48
|
lastSyncAt
|
|
@@ -6,6 +6,13 @@ import { gql } from 'graphql-request'
|
|
|
6
6
|
* The resolver blends extensions-DB data (calendar + periods) with a
|
|
7
7
|
* platform-DB lookup for QB sync state (last_sync_at). Clients use
|
|
8
8
|
* `closeableNow` + `blockers` as the close gate.
|
|
9
|
+
*
|
|
10
|
+
* The obligation and staleness detail fields populate only when their
|
|
11
|
+
* corresponding blocker code is present, so a UI can name *which* schedules
|
|
12
|
+
* are holding the close instead of just reporting that something is. They
|
|
13
|
+
* are selected unconditionally here — the resolver returns 0 / [] / null
|
|
14
|
+
* when the blocker isn't active, which costs nothing and keeps the document
|
|
15
|
+
* free of a second round trip for the case that matters most.
|
|
9
16
|
*/
|
|
10
17
|
export const GET_FISCAL_CALENDAR = gql`
|
|
11
18
|
query GetLedgerFiscalCalendar {
|
|
@@ -18,6 +25,22 @@ export const GET_FISCAL_CALENDAR = gql`
|
|
|
18
25
|
catchUpSequence
|
|
19
26
|
closeableNow
|
|
20
27
|
blockers
|
|
28
|
+
pendingObligationCount
|
|
29
|
+
pendingObligationSample {
|
|
30
|
+
eventId
|
|
31
|
+
scheduleId
|
|
32
|
+
scheduleName
|
|
33
|
+
period
|
|
34
|
+
}
|
|
35
|
+
earliestPendingPeriod
|
|
36
|
+
strandedObligationCount
|
|
37
|
+
strandedObligationSample {
|
|
38
|
+
eventId
|
|
39
|
+
scheduleId
|
|
40
|
+
scheduleName
|
|
41
|
+
period
|
|
42
|
+
}
|
|
43
|
+
syncStaleDays
|
|
21
44
|
lastCloseAt
|
|
22
45
|
initializedAt
|
|
23
46
|
lastSyncAt
|
package/package.json
CHANGED
package/sdk/types.gen.d.ts
CHANGED
|
@@ -4804,11 +4804,11 @@ export type EventBlockEnvelope = {
|
|
|
4804
4804
|
[key: string]: unknown;
|
|
4805
4805
|
};
|
|
4806
4806
|
/**
|
|
4807
|
-
*
|
|
4807
|
+
* Is Reconciling Item
|
|
4808
4808
|
*
|
|
4809
|
-
* True when a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4809
|
+
* True when this event is a reconciling item: a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync) — the local books legitimately no longer mirror the source, and the difference awaits an explicit disposition (restate the affected months, or book a catch-up entry in the open period). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4810
4810
|
*/
|
|
4811
|
-
|
|
4811
|
+
is_reconciling_item?: boolean;
|
|
4812
4812
|
/**
|
|
4813
4813
|
* Dimension Ids
|
|
4814
4814
|
*
|
package/sdk/types.gen.ts
CHANGED
|
@@ -4929,11 +4929,11 @@ export type EventBlockEnvelope = {
|
|
|
4929
4929
|
[key: string]: unknown;
|
|
4930
4930
|
};
|
|
4931
4931
|
/**
|
|
4932
|
-
*
|
|
4932
|
+
* Is Reconciling Item
|
|
4933
4933
|
*
|
|
4934
|
-
* True when a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4934
|
+
* True when this event is a reconciling item: a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync) — the local books legitimately no longer mirror the source, and the difference awaits an explicit disposition (restate the affected months, or book a catch-up entry in the open period). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4935
4935
|
*/
|
|
4936
|
-
|
|
4936
|
+
is_reconciling_item?: boolean;
|
|
4937
4937
|
/**
|
|
4938
4938
|
* Dimension Ids
|
|
4939
4939
|
*
|
package/types.gen.d.ts
CHANGED
|
@@ -4804,11 +4804,11 @@ export type EventBlockEnvelope = {
|
|
|
4804
4804
|
[key: string]: unknown;
|
|
4805
4805
|
};
|
|
4806
4806
|
/**
|
|
4807
|
-
*
|
|
4807
|
+
* Is Reconciling Item
|
|
4808
4808
|
*
|
|
4809
|
-
* True when a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4809
|
+
* True when this event is a reconciling item: a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync) — the local books legitimately no longer mirror the source, and the difference awaits an explicit disposition (restate the affected months, or book a catch-up entry in the open period). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4810
4810
|
*/
|
|
4811
|
-
|
|
4811
|
+
is_reconciling_item?: boolean;
|
|
4812
4812
|
/**
|
|
4813
4813
|
* Dimension Ids
|
|
4814
4814
|
*
|
package/types.gen.ts
CHANGED
|
@@ -4929,11 +4929,11 @@ export type EventBlockEnvelope = {
|
|
|
4929
4929
|
[key: string]: unknown;
|
|
4930
4930
|
};
|
|
4931
4931
|
/**
|
|
4932
|
-
*
|
|
4932
|
+
* Is Reconciling Item
|
|
4933
4933
|
*
|
|
4934
|
-
* True when a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4934
|
+
* True when this event is a reconciling item: a source re-sync surfaced a changed upstream payload for an event whose GL is already posted (committed/fulfilled are immutable to sync) — the local books legitimately no longer mirror the source, and the difference awaits an explicit disposition (restate the affected months, or book a catch-up entry in the open period). The live payload and GL are untouched; the incoming payload is stashed in `metadata.drift_payload` with `metadata.drift_detected_at`.
|
|
4935
4935
|
*/
|
|
4936
|
-
|
|
4936
|
+
is_reconciling_item?: boolean;
|
|
4937
4937
|
/**
|
|
4938
4938
|
* Dimension Ids
|
|
4939
4939
|
*
|