@aderis-erp/cli 1.1.1 → 1.1.2

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.
Files changed (134) hide show
  1. package/dist/commands/access-groups.d.ts +8 -0
  2. package/dist/commands/access-groups.js +54 -6
  3. package/dist/commands/account-transaction-allocations.d.ts +8 -0
  4. package/dist/commands/account-transaction-allocations.js +52 -5
  5. package/dist/commands/account-transactions.d.ts +8 -0
  6. package/dist/commands/account-transactions.js +55 -7
  7. package/dist/commands/accounts.d.ts +8 -0
  8. package/dist/commands/accounts.js +52 -5
  9. package/dist/commands/agent-platform.d.ts +8 -0
  10. package/dist/commands/agent-platform.js +52 -5
  11. package/dist/commands/agent-runs.d.ts +8 -0
  12. package/dist/commands/agent-runs.js +52 -5
  13. package/dist/commands/analytics.d.ts +8 -0
  14. package/dist/commands/analytics.js +52 -5
  15. package/dist/commands/api-keys.d.ts +8 -0
  16. package/dist/commands/api-keys.js +52 -5
  17. package/dist/commands/async-jobs.d.ts +8 -0
  18. package/dist/commands/async-jobs.js +52 -5
  19. package/dist/commands/audit-log.d.ts +8 -0
  20. package/dist/commands/audit-log.js +52 -5
  21. package/dist/commands/bank-accounts.d.ts +8 -0
  22. package/dist/commands/bank-accounts.js +52 -5
  23. package/dist/commands/bank-integrations.d.ts +8 -0
  24. package/dist/commands/bank-integrations.js +52 -5
  25. package/dist/commands/business-partners.d.ts +9 -0
  26. package/dist/commands/business-partners.js +64 -7
  27. package/dist/commands/chat.d.ts +8 -0
  28. package/dist/commands/chat.js +52 -5
  29. package/dist/commands/credit-card-accounts.d.ts +8 -0
  30. package/dist/commands/credit-card-accounts.js +52 -5
  31. package/dist/commands/delivery-notes.d.ts +8 -0
  32. package/dist/commands/delivery-notes.js +52 -5
  33. package/dist/commands/dunning-configs.d.ts +8 -0
  34. package/dist/commands/dunning-configs.js +52 -5
  35. package/dist/commands/dunning-reminders.d.ts +8 -0
  36. package/dist/commands/dunning-reminders.js +52 -5
  37. package/dist/commands/dunning-runs.d.ts +8 -0
  38. package/dist/commands/dunning-runs.js +52 -5
  39. package/dist/commands/email-transactions.d.ts +8 -0
  40. package/dist/commands/email-transactions.js +52 -5
  41. package/dist/commands/employees.d.ts +8 -0
  42. package/dist/commands/employees.js +52 -5
  43. package/dist/commands/entity-configurations.d.ts +8 -0
  44. package/dist/commands/entity-configurations.js +52 -5
  45. package/dist/commands/event-processor-mappings.d.ts +8 -0
  46. package/dist/commands/event-processor-mappings.js +52 -5
  47. package/dist/commands/files.d.ts +8 -0
  48. package/dist/commands/files.js +52 -5
  49. package/dist/commands/health.d.ts +8 -0
  50. package/dist/commands/health.js +52 -5
  51. package/dist/commands/imports.d.ts +8 -0
  52. package/dist/commands/imports.js +53 -8
  53. package/dist/commands/inbox.d.ts +8 -0
  54. package/dist/commands/inbox.js +53 -7
  55. package/dist/commands/integration-identities.d.ts +8 -0
  56. package/dist/commands/integration-identities.js +52 -5
  57. package/dist/commands/integrations.d.ts +8 -0
  58. package/dist/commands/integrations.js +52 -5
  59. package/dist/commands/item-categories.d.ts +8 -0
  60. package/dist/commands/item-categories.js +52 -5
  61. package/dist/commands/items.d.ts +8 -0
  62. package/dist/commands/items.js +52 -5
  63. package/dist/commands/journal-lines.d.ts +8 -0
  64. package/dist/commands/journal-lines.js +52 -5
  65. package/dist/commands/journals.d.ts +8 -0
  66. package/dist/commands/journals.js +52 -5
  67. package/dist/commands/ledgers.d.ts +8 -0
  68. package/dist/commands/ledgers.js +52 -5
  69. package/dist/commands/my-account.d.ts +8 -0
  70. package/dist/commands/my-account.js +52 -5
  71. package/dist/commands/office-locations.d.ts +8 -0
  72. package/dist/commands/office-locations.js +52 -5
  73. package/dist/commands/payment-methods.d.ts +8 -0
  74. package/dist/commands/payment-methods.js +52 -5
  75. package/dist/commands/payment-runs.d.ts +8 -0
  76. package/dist/commands/payment-runs.js +54 -6
  77. package/dist/commands/payment-terms.d.ts +8 -0
  78. package/dist/commands/payment-terms.js +52 -5
  79. package/dist/commands/payments.d.ts +8 -0
  80. package/dist/commands/payments.js +52 -5
  81. package/dist/commands/payroll-runs.d.ts +8 -0
  82. package/dist/commands/payroll-runs.js +52 -5
  83. package/dist/commands/permissions.d.ts +8 -0
  84. package/dist/commands/permissions.js +52 -5
  85. package/dist/commands/price-lists.d.ts +8 -0
  86. package/dist/commands/price-lists.js +52 -5
  87. package/dist/commands/processor-mappings.d.ts +8 -0
  88. package/dist/commands/processor-mappings.js +52 -5
  89. package/dist/commands/processors.d.ts +8 -0
  90. package/dist/commands/processors.js +52 -5
  91. package/dist/commands/purchase-order-types.d.ts +8 -0
  92. package/dist/commands/purchase-order-types.js +52 -5
  93. package/dist/commands/purchase-orders.d.ts +8 -0
  94. package/dist/commands/purchase-orders.js +52 -5
  95. package/dist/commands/reports.d.ts +8 -0
  96. package/dist/commands/reports.js +52 -5
  97. package/dist/commands/roles.d.ts +8 -0
  98. package/dist/commands/roles.js +52 -5
  99. package/dist/commands/salary-types.d.ts +8 -0
  100. package/dist/commands/salary-types.js +52 -5
  101. package/dist/commands/sales-invoices.d.ts +10 -0
  102. package/dist/commands/sales-invoices.js +62 -6
  103. package/dist/commands/sales-orders.d.ts +8 -0
  104. package/dist/commands/sales-orders.js +52 -5
  105. package/dist/commands/saved-views.d.ts +8 -0
  106. package/dist/commands/saved-views.js +52 -5
  107. package/dist/commands/scheduled-processor-mappings.d.ts +8 -0
  108. package/dist/commands/scheduled-processor-mappings.js +52 -5
  109. package/dist/commands/schedules.d.ts +8 -0
  110. package/dist/commands/schedules.js +52 -5
  111. package/dist/commands/tags.d.ts +8 -0
  112. package/dist/commands/tags.js +52 -5
  113. package/dist/commands/tax-codes.d.ts +8 -0
  114. package/dist/commands/tax-codes.js +52 -5
  115. package/dist/commands/tax-matrix.d.ts +8 -0
  116. package/dist/commands/tax-matrix.js +52 -5
  117. package/dist/commands/templates.d.ts +8 -0
  118. package/dist/commands/templates.js +52 -5
  119. package/dist/commands/tenants.d.ts +8 -0
  120. package/dist/commands/tenants.js +52 -5
  121. package/dist/commands/tools.d.ts +8 -0
  122. package/dist/commands/tools.js +52 -5
  123. package/dist/commands/users.d.ts +8 -0
  124. package/dist/commands/users.js +52 -5
  125. package/dist/commands/vat-declarations.d.ts +8 -0
  126. package/dist/commands/vat-declarations.js +52 -5
  127. package/dist/commands/vendor-invoices.d.ts +9 -0
  128. package/dist/commands/vendor-invoices.js +60 -8
  129. package/dist/commands/webhooks.d.ts +8 -0
  130. package/dist/commands/webhooks.js +52 -5
  131. package/dist/commands/workflows.d.ts +8 -0
  132. package/dist/commands/workflows.js +52 -5
  133. package/oclif.manifest.json +433 -10
  134. package/package.json +1 -1
@@ -23,6 +23,7 @@ export default class Workflows extends Command {
23
23
  query: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
24
  fields: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
25
  sanitize: import("@oclif/core/interfaces").BooleanFlag<boolean>;
26
+ meta: import("@oclif/core/interfaces").BooleanFlag<boolean>;
26
27
  'show-http-request': import("@oclif/core/interfaces").BooleanFlag<boolean>;
27
28
  };
28
29
  run(): Promise<void>;
@@ -31,6 +32,13 @@ export default class Workflows extends Command {
31
32
  private runCamt053Import;
32
33
  private runNestedImport;
33
34
  private parseFilterValue;
35
+ /** The page line under a table: which page, how many, and any sums the API returned. */
36
+ private printPageSummary;
37
+ /**
38
+ * The API caps how many records a page may hold. Asking for more and getting
39
+ * fewer looks like "that is everything" unless it is said out loud.
40
+ */
41
+ private warnShortPage;
34
42
  private sanitizeOutput;
35
43
  private getColumns;
36
44
  private getValue;
@@ -39,6 +39,7 @@ export default class Workflows extends Command {
39
39
  query: Flags.string({ description: 'Additional query params as JSON' }),
40
40
  fields: Flags.string({ description: 'Comma-separated list of fields to return, applied by the API (e.g. --fields=id,name,status)' }),
41
41
  sanitize: Flags.boolean({ description: 'Remove null values, audit fields, and duplicate UUIDs from output' }),
42
+ meta: Flags.boolean({ description: 'Keep the API envelope in JSON output: data plus page, totals and sums' }),
42
43
  'show-http-request': Flags.boolean({ description: 'Show HTTP request details (method, URL, body)' }),
43
44
  };
44
45
  async run() {
@@ -331,9 +332,15 @@ export default class Workflows extends Command {
331
332
  }
332
333
  catch { /* keep as string */ }
333
334
  }
334
- // Extract data array from paginated wrapper (e.g., { data: [...], total: 3 })
335
+ // A paginated answer is { data, meta, links, totals }. The records are
336
+ // unwrapped for output, but what the API said about the page is kept:
337
+ // dropping it silently let a script read one page as the whole result
338
+ // (AderisERP/product#61).
339
+ let envelope;
335
340
  if (output && typeof output === 'object' && !Array.isArray(output) && 'data' in output && Array.isArray(output.data)) {
336
- output = output.data;
341
+ const page = output;
342
+ envelope = page;
343
+ output = page.data;
337
344
  }
338
345
  // For table/csv on non-array responses, auto-extract the primary array
339
346
  // e.g., { payments: [...], total: 3 } → extract payments array
@@ -350,12 +357,24 @@ export default class Workflows extends Command {
350
357
  output = this.sanitizeOutput(output);
351
358
  }
352
359
  const fieldList = flags.fields?.split(',').map(f => f.trim());
353
- if (flags.csv || flags.output === 'csv')
360
+ if (envelope)
361
+ this.warnShortPage(envelope, flags.limit);
362
+ if (flags.csv || flags.output === 'csv') {
354
363
  this.printCsv(output, fieldList);
355
- else if (flags.table || flags.output === 'table')
364
+ }
365
+ else if (flags.table || flags.output === 'table') {
356
366
  this.printTable(output, fieldList);
357
- else
367
+ if (envelope)
368
+ this.printPageSummary(envelope);
369
+ }
370
+ else if (envelope && flags.meta) {
371
+ // The whole envelope, for a caller that asked for it; the default stays
372
+ // a bare array so existing scripts are unaffected.
373
+ this.log(JSON.stringify({ ...envelope, data: output }, null, 2));
374
+ }
375
+ else {
358
376
  this.log(JSON.stringify(output, null, 2));
377
+ }
359
378
  }
360
379
  catch (error) {
361
380
  if (error instanceof ApiError) {
@@ -984,6 +1003,34 @@ export default class Workflows extends Command {
984
1003
  return `\$${op}`;
985
1004
  return opRe.test(rest) ? `\$${op}:${this.parseFilterValue(rest)}` : `\$${op}:${rest}`;
986
1005
  }
1006
+ /** The page line under a table: which page, how many, and any sums the API returned. */
1007
+ printPageSummary(envelope) {
1008
+ const meta = envelope.meta;
1009
+ if (meta && typeof meta.currentPage === 'number' && typeof meta.totalPages === 'number') {
1010
+ const shown = Array.isArray(envelope.data) ? envelope.data.length : 0;
1011
+ this.log(`
1012
+ Page ${meta.currentPage}/${meta.totalPages} — ${shown} of ${meta.totalItems ?? '?'} records`);
1013
+ }
1014
+ for (const total of envelope.totals ?? []) {
1015
+ const { currency, ...sums } = total;
1016
+ const parts = Object.entries(sums).map(([column, value]) => `${column} ${value}`).join(', ');
1017
+ this.log(`Total ${currency ?? ''}: ${parts}`.trim());
1018
+ }
1019
+ }
1020
+ /**
1021
+ * The API caps how many records a page may hold. Asking for more and getting
1022
+ * fewer looks like "that is everything" unless it is said out loud.
1023
+ */
1024
+ warnShortPage(envelope, requestedLimit) {
1025
+ const asked = requestedLimit === undefined ? undefined : Number(requestedLimit);
1026
+ const perPage = envelope.meta?.itemsPerPage;
1027
+ if (asked === undefined || Number.isNaN(asked) || typeof perPage !== 'number' || perPage >= asked)
1028
+ return;
1029
+ const pages = envelope.meta?.totalPages;
1030
+ const more = typeof pages === 'number' && pages > 1 ? ` Use --page, or the export action for every page.` : '';
1031
+ process.stderr.write(`! Asked for ${asked} records per page; the API returned at most ${perPage}.${more}
1032
+ `);
1033
+ }
987
1034
  sanitizeOutput(data) {
988
1035
  const auditFields = ['_type', 'tenantId', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy'];
989
1036
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;