@endora-commerce/mod-invoice-ledger 0.100.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/LICENSE +21 -0
- package/README.md +57 -0
- package/dist/admin/api/ledger-client.d.ts +15 -0
- package/dist/admin/api/ledger-client.d.ts.map +1 -0
- package/dist/admin/api/ledger-client.js +35 -0
- package/dist/admin/api/ledger-client.js.map +1 -0
- package/dist/admin/index.d.ts +11 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +52 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/LedgerDeliveriesPage.d.ts +4 -0
- package/dist/admin/pages/LedgerDeliveriesPage.d.ts.map +1 -0
- package/dist/admin/pages/LedgerDeliveriesPage.js +101 -0
- package/dist/admin/pages/LedgerDeliveriesPage.js.map +1 -0
- package/dist/admin/pages/LedgerRoutingPage.d.ts +4 -0
- package/dist/admin/pages/LedgerRoutingPage.d.ts.map +1 -0
- package/dist/admin/pages/LedgerRoutingPage.js +67 -0
- package/dist/admin/pages/LedgerRoutingPage.js.map +1 -0
- package/dist/admin/pages/merge-delivery-pages.d.ts +3 -0
- package/dist/admin/pages/merge-delivery-pages.d.ts.map +1 -0
- package/dist/admin/pages/merge-delivery-pages.js +5 -0
- package/dist/admin/pages/merge-delivery-pages.js.map +1 -0
- package/dist/admin/zones/InvoiceLedgerRemoteIdPanel.d.ts +11 -0
- package/dist/admin/zones/InvoiceLedgerRemoteIdPanel.d.ts.map +1 -0
- package/dist/admin/zones/InvoiceLedgerRemoteIdPanel.js +36 -0
- package/dist/admin/zones/InvoiceLedgerRemoteIdPanel.js.map +1 -0
- package/dist/admin/zones/LedgerDeliveriesTab.d.ts +10 -0
- package/dist/admin/zones/LedgerDeliveriesTab.d.ts.map +1 -0
- package/dist/admin/zones/LedgerDeliveriesTab.js +15 -0
- package/dist/admin/zones/LedgerDeliveriesTab.js.map +1 -0
- package/dist/admin/zones/LedgerRoutingTab.d.ts +11 -0
- package/dist/admin/zones/LedgerRoutingTab.d.ts.map +1 -0
- package/dist/admin/zones/LedgerRoutingTab.js +16 -0
- package/dist/admin/zones/LedgerRoutingTab.js.map +1 -0
- package/dist/backend/commands/retry-delivery.command.d.ts +8 -0
- package/dist/backend/commands/retry-delivery.command.d.ts.map +1 -0
- package/dist/backend/commands/retry-delivery.command.js +26 -0
- package/dist/backend/commands/retry-delivery.command.js.map +1 -0
- package/dist/backend/commands/routing.commands.d.ts +7 -0
- package/dist/backend/commands/routing.commands.d.ts.map +1 -0
- package/dist/backend/commands/routing.commands.js +13 -0
- package/dist/backend/commands/routing.commands.js.map +1 -0
- package/dist/backend/entities/invoice-ledger-activation-lock.entity.d.ts +15 -0
- package/dist/backend/entities/invoice-ledger-activation-lock.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-ledger-activation-lock.entity.js +46 -0
- package/dist/backend/entities/invoice-ledger-activation-lock.entity.js.map +1 -0
- package/dist/backend/entities/invoice-ledger-client-map.entity.d.ts +18 -0
- package/dist/backend/entities/invoice-ledger-client-map.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-ledger-client-map.entity.js +72 -0
- package/dist/backend/entities/invoice-ledger-client-map.entity.js.map +1 -0
- package/dist/backend/entities/invoice-ledger-delivery.entity.d.ts +65 -0
- package/dist/backend/entities/invoice-ledger-delivery.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-ledger-delivery.entity.js +168 -0
- package/dist/backend/entities/invoice-ledger-delivery.entity.js.map +1 -0
- package/dist/backend/entities/invoice-ledger-document-map.entity.d.ts +25 -0
- package/dist/backend/entities/invoice-ledger-document-map.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-ledger-document-map.entity.js +80 -0
- package/dist/backend/entities/invoice-ledger-document-map.entity.js.map +1 -0
- package/dist/backend/entities/invoice-ledger-webhook-receipt.entity.d.ts +18 -0
- package/dist/backend/entities/invoice-ledger-webhook-receipt.entity.d.ts.map +1 -0
- package/dist/backend/entities/invoice-ledger-webhook-receipt.entity.js +71 -0
- package/dist/backend/entities/invoice-ledger-webhook-receipt.entity.js.map +1 -0
- package/dist/backend/index.d.ts +12 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +230 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +11 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +36 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/services/invoice-ledger-delivery-admin.service.d.ts +33 -0
- package/dist/backend/services/invoice-ledger-delivery-admin.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-delivery-admin.service.js +104 -0
- package/dist/backend/services/invoice-ledger-delivery-admin.service.js.map +1 -0
- package/dist/backend/services/invoice-ledger-delivery.service.d.ts +55 -0
- package/dist/backend/services/invoice-ledger-delivery.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-delivery.service.js +322 -0
- package/dist/backend/services/invoice-ledger-delivery.service.js.map +1 -0
- package/dist/backend/services/invoice-ledger-registry.service.d.ts +64 -0
- package/dist/backend/services/invoice-ledger-registry.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-registry.service.js +119 -0
- package/dist/backend/services/invoice-ledger-registry.service.js.map +1 -0
- package/dist/backend/services/invoice-ledger-routing-write.service.d.ts +15 -0
- package/dist/backend/services/invoice-ledger-routing-write.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-routing-write.service.js +85 -0
- package/dist/backend/services/invoice-ledger-routing-write.service.js.map +1 -0
- package/dist/backend/services/invoice-ledger-routing.service.d.ts +11 -0
- package/dist/backend/services/invoice-ledger-routing.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-routing.service.js +20 -0
- package/dist/backend/services/invoice-ledger-routing.service.js.map +1 -0
- package/dist/backend/services/invoice-ledger-vendor-freeze-registry.d.ts +9 -0
- package/dist/backend/services/invoice-ledger-vendor-freeze-registry.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-vendor-freeze-registry.js +13 -0
- package/dist/backend/services/invoice-ledger-vendor-freeze-registry.js.map +1 -0
- package/dist/backend/services/invoice-ledger-webhook.service.d.ts +30 -0
- package/dist/backend/services/invoice-ledger-webhook.service.d.ts.map +1 -0
- package/dist/backend/services/invoice-ledger-webhook.service.js +170 -0
- package/dist/backend/services/invoice-ledger-webhook.service.js.map +1 -0
- package/dist/backend/services/mapped-delivery-error.d.ts +25 -0
- package/dist/backend/services/mapped-delivery-error.d.ts.map +1 -0
- package/dist/backend/services/mapped-delivery-error.js +54 -0
- package/dist/backend/services/mapped-delivery-error.js.map +1 -0
- package/dist/manifest.d.ts +183 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +112 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260908T125013_invoice_ledger_init.d.ts +12 -0
- package/dist/migrations/20260908T125013_invoice_ledger_init.d.ts.map +1 -0
- package/dist/migrations/20260908T125013_invoice_ledger_init.js +167 -0
- package/dist/migrations/20260908T125013_invoice_ledger_init.js.map +1 -0
- package/dist/migrations/20260914T140000_invoice_ledger_row_organization.d.ts +64 -0
- package/dist/migrations/20260914T140000_invoice_ledger_row_organization.d.ts.map +1 -0
- package/dist/migrations/20260914T140000_invoice_ledger_row_organization.js +126 -0
- package/dist/migrations/20260914T140000_invoice_ledger_row_organization.js.map +1 -0
- package/dist/migrations/index.d.ts +13 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +16 -0
- package/dist/migrations/index.js.map +1 -0
- package/docs/invoice-ledger.md +22 -0
- package/i18n/en.json +50 -0
- package/i18n/pl.json +50 -0
- package/package.json +89 -0
- package/tailwind.css +14 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Endora sp. z o.o. and the Endora Commerce contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!-- Generated by `pnpm --filter backend run manifests:generate`. Delete this line to take the file over; a README without it is never regenerated. -->
|
|
2
|
+
|
|
3
|
+
# @endora-commerce/mod-invoice-ledger
|
|
4
|
+
|
|
5
|
+
Shared invoice-ledger rails: vendor mutex, numbering and KSeF routing, deliveries, and document maps. Vendor HTTP lives in the vendor adapter modules.
|
|
6
|
+
|
|
7
|
+
## What this is
|
|
8
|
+
|
|
9
|
+
An **Endora Commerce module package**. Its module id is `invoice_ledger` — the identity of record in the platform's registries, in its migrations and in its setting, permission and translation codes.
|
|
10
|
+
|
|
11
|
+
A module is not imported by application code. The platform discovers the extension packages an instance has installed, reads the manifest on the root subpath and composes the module from it, so installing this package and starting the instance is the whole integration.
|
|
12
|
+
|
|
13
|
+
## Entry points
|
|
14
|
+
|
|
15
|
+
| Import | Contents |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| `@endora-commerce/mod-invoice-ledger` | the module manifest — its id, version, dependencies, settings and activation |
|
|
18
|
+
| `@endora-commerce/mod-invoice-ledger/admin` | the Admin UI contribution: the screens, navigation and palette actions it adds |
|
|
19
|
+
| `@endora-commerce/mod-invoice-ledger/backend` | the composition root the platform calls, with the entities, services, routes and workers it registers |
|
|
20
|
+
| `@endora-commerce/mod-invoice-ledger/migrations` | the module’s own schema migrations, in the order the platform runs them |
|
|
21
|
+
| `@endora-commerce/mod-invoice-ledger/tailwind.css` | the Tailwind source declaration for the admin code above |
|
|
22
|
+
|
|
23
|
+
## Depends on
|
|
24
|
+
|
|
25
|
+
Everything below is a **peer** dependency, so the application resolves exactly one copy of each — two copies of a host or of React are a runtime failure rather than a type error. An entry marked *optional* is needed only by the layers that use it.
|
|
26
|
+
|
|
27
|
+
**Endora packages**
|
|
28
|
+
|
|
29
|
+
- `@endora-commerce/admin-kit` — *optional*
|
|
30
|
+
- `@endora-commerce/contracts`
|
|
31
|
+
- `@endora-commerce/platform`
|
|
32
|
+
|
|
33
|
+
**Third-party**
|
|
34
|
+
|
|
35
|
+
- `@mikro-orm/core` ^6
|
|
36
|
+
- `@mikro-orm/migrations` ^6
|
|
37
|
+
- `@mikro-orm/postgresql` ^6
|
|
38
|
+
- `fastify` ^5
|
|
39
|
+
- `react` ^19 — *optional*
|
|
40
|
+
- `zod` ^4
|
|
41
|
+
|
|
42
|
+
## What the tarball carries
|
|
43
|
+
|
|
44
|
+
- `dist/` — the compiled JavaScript and its type declarations
|
|
45
|
+
- `i18n/` — the translation bundles this package ships (`en`, `pl`), loaded by the platform
|
|
46
|
+
- `docs/` — the package’s own pages in the Endora Commerce documentation site
|
|
47
|
+
- `tailwind.css` — the Tailwind source declaration
|
|
48
|
+
|
|
49
|
+
## Install
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pnpm add @endora-commerce/mod-invoice-ledger
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Licence
|
|
56
|
+
|
|
57
|
+
MIT — the text is in `LICENSE`, beside this file.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { InvoiceLedgerDeliveryListItem, InvoiceLedgerDeliveryListQuery, InvoiceLedgerRoutingDto, InvoiceLedgerRoutingWriteBody, LedgerDeliveryRecord } from '@endora-commerce/contracts';
|
|
2
|
+
export declare const invoiceLedgerAdminClient: {
|
|
3
|
+
getRouting(): Promise<InvoiceLedgerRoutingDto>;
|
|
4
|
+
saveRouting(body: InvoiceLedgerRoutingWriteBody): Promise<InvoiceLedgerRoutingDto>;
|
|
5
|
+
listDeliveries(query?: InvoiceLedgerDeliveryListQuery): Promise<{
|
|
6
|
+
data: InvoiceLedgerDeliveryListItem[];
|
|
7
|
+
pagination: {
|
|
8
|
+
cursor: string | null;
|
|
9
|
+
hasMore: boolean;
|
|
10
|
+
limit: number;
|
|
11
|
+
};
|
|
12
|
+
}>;
|
|
13
|
+
retryDelivery(id: string): Promise<LedgerDeliveryRecord>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=ledger-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-client.d.ts","sourceRoot":"","sources":["../../../src/admin/api/ledger-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAC9B,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,wBAAwB;kBACrB,OAAO,CAAC,uBAAuB,CAAC;sBAM5B,6BAA6B,GAAG,OAAO,CAAC,uBAAuB,CAAC;2BAOzE,8BAA8B,GACpC,OAAO,CAAC;QACT,IAAI,EAAE,6BAA6B,EAAE,CAAC;QACtC,UAAU,EAAE;YAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KACxE,CAAC;sBAWgB,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAKzD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { apiClient } from '@endora-commerce/admin-kit/lib';
|
|
2
|
+
const BASE = '/api/v1/admin/invoice-ledger';
|
|
3
|
+
export const invoiceLedgerAdminClient = {
|
|
4
|
+
getRouting() {
|
|
5
|
+
return apiClient
|
|
6
|
+
.get(`${BASE}/routing`)
|
|
7
|
+
.then((r) => r.data);
|
|
8
|
+
},
|
|
9
|
+
saveRouting(body) {
|
|
10
|
+
return apiClient
|
|
11
|
+
.put(`${BASE}/routing`, body)
|
|
12
|
+
.then((r) => r.data);
|
|
13
|
+
},
|
|
14
|
+
listDeliveries(query = { limit: 50 }) {
|
|
15
|
+
const params = new URLSearchParams();
|
|
16
|
+
if (query.status)
|
|
17
|
+
params.set('status', query.status);
|
|
18
|
+
if (query.salesChannelId)
|
|
19
|
+
params.set('salesChannelId', query.salesChannelId);
|
|
20
|
+
if (query.invoiceId)
|
|
21
|
+
params.set('invoiceId', query.invoiceId);
|
|
22
|
+
if (query.limit)
|
|
23
|
+
params.set('limit', String(query.limit));
|
|
24
|
+
if (query.cursor)
|
|
25
|
+
params.set('cursor', query.cursor);
|
|
26
|
+
const qs = params.toString();
|
|
27
|
+
return apiClient.get(`${BASE}/deliveries${qs ? `?${qs}` : ''}`);
|
|
28
|
+
},
|
|
29
|
+
retryDelivery(id) {
|
|
30
|
+
return apiClient
|
|
31
|
+
.post(`${BASE}/deliveries/${id}/retry`)
|
|
32
|
+
.then((r) => r.data);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=ledger-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-client.js","sourceRoot":"","sources":["../../../src/admin/api/ledger-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAS3D,MAAM,IAAI,GAAG,8BAA8B,CAAC;AAE5C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU;QACR,OAAO,SAAS;aACb,GAAG,CAAoC,GAAG,IAAI,UAAU,CAAC;aACzD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,IAAmC;QAC7C,OAAO,SAAS;aACb,GAAG,CAAoC,GAAG,IAAI,UAAU,EAAE,IAAI,CAAC;aAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,cAAc,CACZ,QAAwC,EAAE,KAAK,EAAE,EAAE,EAAE;QAKrD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,cAAc;YAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,OAAO,SAAS;aACb,IAAI,CAAiC,GAAG,IAAI,eAAe,EAAE,QAAQ,CAAC;aACtE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AdminContributions } from '@endora-commerce/admin-kit/contributions';
|
|
2
|
+
/**
|
|
3
|
+
* Invoice-ledger admin: two routes, one sidebar row, two strip tabs.
|
|
4
|
+
*
|
|
5
|
+
* Routing is not a second Sales destination. It sits on `ledger.section.tabs`
|
|
6
|
+
* next to deliveries, the same way invoice templates sit behind
|
|
7
|
+
* `InvoiceSectionTabs` rather than a sidebar row. Vendor adapters (Infakt)
|
|
8
|
+
* contribute further tabs; this module does not name them.
|
|
9
|
+
*/
|
|
10
|
+
export declare const contributions: AdminContributions;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,0CAA0C,CAAC;AAMlD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,kBAsC3B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { zoneComponent, } from '@endora-commerce/admin-kit/contributions';
|
|
2
|
+
const READ_PERMISSION = 'invoice_ledger:read';
|
|
3
|
+
const DELIVERIES_PATH = '/invoice-ledger/deliveries';
|
|
4
|
+
const ROUTING_PATH = '/invoice-ledger/routing';
|
|
5
|
+
/**
|
|
6
|
+
* Invoice-ledger admin: two routes, one sidebar row, two strip tabs.
|
|
7
|
+
*
|
|
8
|
+
* Routing is not a second Sales destination. It sits on `ledger.section.tabs`
|
|
9
|
+
* next to deliveries, the same way invoice templates sit behind
|
|
10
|
+
* `InvoiceSectionTabs` rather than a sidebar row. Vendor adapters (Infakt)
|
|
11
|
+
* contribute further tabs; this module does not name them.
|
|
12
|
+
*/
|
|
13
|
+
export const contributions = {
|
|
14
|
+
routes: [
|
|
15
|
+
{
|
|
16
|
+
path: DELIVERIES_PATH,
|
|
17
|
+
component: () => import('./pages/LedgerDeliveriesPage.js'),
|
|
18
|
+
requiredPermission: READ_PERMISSION,
|
|
19
|
+
index: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
path: ROUTING_PATH,
|
|
23
|
+
component: () => import('./pages/LedgerRoutingPage.js'),
|
|
24
|
+
requiredPermission: READ_PERMISSION,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
nav: [
|
|
28
|
+
{
|
|
29
|
+
to: DELIVERIES_PATH,
|
|
30
|
+
labelKey: 'nav.deliveries.label',
|
|
31
|
+
icon: 'ClipboardList',
|
|
32
|
+
section: 'sales',
|
|
33
|
+
weight: 610,
|
|
34
|
+
requiredPermission: READ_PERMISSION,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
zones: [
|
|
38
|
+
zoneComponent('invoice.detail.after', () => import('./zones/InvoiceLedgerRemoteIdPanel.js'), {
|
|
39
|
+
weight: 90,
|
|
40
|
+
requiredPermission: READ_PERMISSION,
|
|
41
|
+
}),
|
|
42
|
+
zoneComponent('ledger.section.tabs', () => import('./zones/LedgerDeliveriesTab.js'), {
|
|
43
|
+
weight: 100,
|
|
44
|
+
requiredPermission: READ_PERMISSION,
|
|
45
|
+
}),
|
|
46
|
+
zoneComponent('ledger.section.tabs', () => import('./zones/LedgerRoutingTab.js'), {
|
|
47
|
+
weight: 200,
|
|
48
|
+
requiredPermission: READ_PERMISSION,
|
|
49
|
+
}),
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,0CAA0C,CAAC;AAElD,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,eAAe,GAAG,4BAA4B,CAAC;AACrD,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,MAAM,EAAE;QACN;YACE,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC;YAC1D,kBAAkB,EAAE,eAAe;YACnC,KAAK,EAAE,IAAI;SACZ;QACD;YACE,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;YACvD,kBAAkB,EAAE,eAAe;SACpC;KACF;IACD,GAAG,EAAE;QACH;YACE,EAAE,EAAE,eAAe;YACnB,QAAQ,EAAE,sBAAsB;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,GAAG;YACX,kBAAkB,EAAE,eAAe;SACpC;KACF;IACD,KAAK,EAAE;QACL,aAAa,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uCAAuC,CAAC,EAAE;YAC3F,MAAM,EAAE,EAAE;YACV,kBAAkB,EAAE,eAAe;SACpC,CAAC;QACF,aAAa,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gCAAgC,CAAC,EAAE;YACnF,MAAM,EAAE,GAAG;YACX,kBAAkB,EAAE,eAAe;SACpC,CAAC;QACF,aAAa,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE;YAChF,MAAM,EAAE,GAAG;YACX,kBAAkB,EAAE,eAAe;SACpC,CAAC;KACH;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerDeliveriesPage.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/LedgerDeliveriesPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBzE,wBAAgB,oBAAoB,IAAI,SAAS,CAiJhD;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
import { INVOICE_LEDGER_DELIVERY_STATUSES, } from '@endora-commerce/contracts';
|
|
4
|
+
import { Alert, AlertDescription, Button, PageHeader, Select } from '@endora-commerce/admin-kit/ui';
|
|
5
|
+
import { RouteTabsZone } from '@endora-commerce/admin-kit/zones';
|
|
6
|
+
import { ResponsiveTable } from '@endora-commerce/admin-kit/components';
|
|
7
|
+
import { ApiError, formatDateTime, useAuth } from '@endora-commerce/admin-kit/lib';
|
|
8
|
+
import { useTranslation } from '@endora-commerce/admin-kit/i18n';
|
|
9
|
+
import { invoiceLedgerAdminClient } from '../api/ledger-client.js';
|
|
10
|
+
import { mergeLedgerDeliveryPages } from './merge-delivery-pages.js';
|
|
11
|
+
const RETRYABLE = ['failed', 'dead'];
|
|
12
|
+
export function LedgerDeliveriesPage() {
|
|
13
|
+
const t = useTranslation('invoice_ledger');
|
|
14
|
+
const { hasPermission } = useAuth();
|
|
15
|
+
const canWrite = hasPermission('invoice_ledger:write');
|
|
16
|
+
const [items, setItems] = useState([]);
|
|
17
|
+
const [status, setStatus] = useState('');
|
|
18
|
+
const [cursor, setCursor] = useState(undefined);
|
|
19
|
+
const [hasMore, setHasMore] = useState(false);
|
|
20
|
+
const [loading, setLoading] = useState(true);
|
|
21
|
+
const [error, setError] = useState(null);
|
|
22
|
+
const [busy, setBusy] = useState(false);
|
|
23
|
+
const reload = useCallback(async () => {
|
|
24
|
+
setLoading(true);
|
|
25
|
+
setError(null);
|
|
26
|
+
try {
|
|
27
|
+
const res = await invoiceLedgerAdminClient.listDeliveries({
|
|
28
|
+
limit: 50,
|
|
29
|
+
...(status ? { status } : {}),
|
|
30
|
+
...(cursor ? { cursor } : {}),
|
|
31
|
+
});
|
|
32
|
+
setItems((prev) => (cursor ? mergeLedgerDeliveryPages(prev, res.data) : res.data));
|
|
33
|
+
setHasMore(res.pagination.hasMore);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
setError(err instanceof ApiError ? err.message : t('error.loadDeliveries'));
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
setLoading(false);
|
|
40
|
+
}
|
|
41
|
+
}, [status, cursor, t]);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
void reload();
|
|
44
|
+
}, [reload]);
|
|
45
|
+
const retry = async (id) => {
|
|
46
|
+
setBusy(true);
|
|
47
|
+
setError(null);
|
|
48
|
+
try {
|
|
49
|
+
await invoiceLedgerAdminClient.retryDelivery(id);
|
|
50
|
+
setCursor(undefined);
|
|
51
|
+
await reload();
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
setError(err instanceof ApiError ? err.message : t('error.retry'));
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
setBusy(false);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const columns = [
|
|
61
|
+
{
|
|
62
|
+
id: 'invoice',
|
|
63
|
+
header: t('deliveries.column.invoice'),
|
|
64
|
+
primary: true,
|
|
65
|
+
render: (row) => row.invoiceNumber ?? row.invoiceId,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'adapter',
|
|
69
|
+
header: t('deliveries.column.adapter'),
|
|
70
|
+
render: (row) => row.adapterId,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'status',
|
|
74
|
+
header: t('deliveries.column.status'),
|
|
75
|
+
render: (row) => t(`deliveries.status.${row.status}`),
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'error',
|
|
79
|
+
header: t('deliveries.column.lastError'),
|
|
80
|
+
render: (row) => row.lastError ?? t('deliveries.noError'),
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 'environment',
|
|
84
|
+
header: t('deliveries.column.environment'),
|
|
85
|
+
hideOnMobile: true,
|
|
86
|
+
render: (row) => row.environment,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: 'updated',
|
|
90
|
+
header: t('deliveries.column.updated'),
|
|
91
|
+
hideOnMobile: true,
|
|
92
|
+
render: (row) => formatDateTime(row.updatedAt),
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
return (_jsxs("div", { children: [_jsx(PageHeader, { title: t('deliveries.page.title'), description: t('deliveries.page.subtitle') }), _jsx(RouteTabsZone, { name: "ledger.section.tabs", props: {}, className: "mb-4" }), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, _jsx("div", { className: "mb-4 max-w-xs", children: _jsxs(Select, { id: "ledger-delivery-status", value: status, onChange: (e) => {
|
|
96
|
+
setCursor(undefined);
|
|
97
|
+
setStatus(e.target.value);
|
|
98
|
+
}, children: [_jsx("option", { value: "", children: t('deliveries.filter.status.all') }), INVOICE_LEDGER_DELIVERY_STATUSES.map((value) => (_jsx("option", { value: value, children: t(`deliveries.status.${value}`) }, value)))] }) }), loading && items.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('deliveries.loading') })) : (_jsx(ResponsiveTable, { columns: columns, data: items, keyExtractor: (row) => row.id, emptyState: _jsx("p", { className: "text-sm text-muted-foreground", children: t('deliveries.empty') }), renderActions: (row) => canWrite && RETRYABLE.includes(row.status) ? (_jsx(Button, { type: "button", variant: "outline", size: "sm", disabled: busy, onClick: () => void retry(row.id), children: t('deliveries.retry') })) : null })), hasMore ? (_jsx(Button, { type: "button", variant: "outline", className: "mt-4", onClick: () => setCursor(items[items.length - 1]?.id), children: t('deliveries.loadMore') })) : null] }));
|
|
99
|
+
}
|
|
100
|
+
export default LedgerDeliveriesPage;
|
|
101
|
+
//# sourceMappingURL=LedgerDeliveriesPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerDeliveriesPage.js","sourceRoot":"","sources":["../../../src/admin/pages/LedgerDeliveriesPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerRoutingPage.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/LedgerRoutingPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAwBzE,wBAAgB,iBAAiB,IAAI,SAAS,CAiI7C;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
import { ApiError, useAuth } from '@endora-commerce/admin-kit/lib';
|
|
4
|
+
import { useTranslation } from '@endora-commerce/admin-kit/i18n';
|
|
5
|
+
import { Alert, AlertDescription, Button, Card, CardContent, CardHeader, CardTitle, Checkbox, Label, PageHeader, Select, } from '@endora-commerce/admin-kit/ui';
|
|
6
|
+
import { RouteTabsZone } from '@endora-commerce/admin-kit/zones';
|
|
7
|
+
import { invoiceLedgerAdminClient } from '../api/ledger-client.js';
|
|
8
|
+
export function LedgerRoutingPage() {
|
|
9
|
+
const t = useTranslation('invoice_ledger');
|
|
10
|
+
const { hasPermission } = useAuth();
|
|
11
|
+
const canWrite = hasPermission('invoice_ledger:write');
|
|
12
|
+
const [routing, setRouting] = useState(null);
|
|
13
|
+
const [numberingMode, setNumberingMode] = useState('endora');
|
|
14
|
+
const [ksefRouting, setKsefRouting] = useState('native');
|
|
15
|
+
const [confirm, setConfirm] = useState(false);
|
|
16
|
+
const [loading, setLoading] = useState(true);
|
|
17
|
+
const [saving, setSaving] = useState(false);
|
|
18
|
+
const [error, setError] = useState(null);
|
|
19
|
+
const [info, setInfo] = useState(null);
|
|
20
|
+
const apply = useCallback((next) => {
|
|
21
|
+
setRouting(next);
|
|
22
|
+
setNumberingMode(next.numberingMode);
|
|
23
|
+
setKsefRouting(next.ksefRouting);
|
|
24
|
+
setConfirm(false);
|
|
25
|
+
}, []);
|
|
26
|
+
const refresh = useCallback(async () => {
|
|
27
|
+
setLoading(true);
|
|
28
|
+
setError(null);
|
|
29
|
+
try {
|
|
30
|
+
apply(await invoiceLedgerAdminClient.getRouting());
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
setError(err instanceof ApiError ? err.message : t('error.load'));
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
setLoading(false);
|
|
37
|
+
}
|
|
38
|
+
}, [apply, t]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
void refresh();
|
|
41
|
+
}, [refresh]);
|
|
42
|
+
const save = async () => {
|
|
43
|
+
setError(null);
|
|
44
|
+
setInfo(null);
|
|
45
|
+
setSaving(true);
|
|
46
|
+
try {
|
|
47
|
+
apply(await invoiceLedgerAdminClient.saveRouting({
|
|
48
|
+
numberingMode,
|
|
49
|
+
ksefRouting,
|
|
50
|
+
...(numberingMode !== routing?.numberingMode ? { confirm } : {}),
|
|
51
|
+
}));
|
|
52
|
+
setInfo(t('routing.saved'));
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
setError(err instanceof ApiError ? err.message : t('error.save'));
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
setSaving(false);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
if (loading && !routing) {
|
|
62
|
+
return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: t('routing.page.title'), description: t('routing.page.subtitle') }), _jsx(RouteTabsZone, { name: "ledger.section.tabs", props: {}, className: "mb-4" })] }));
|
|
63
|
+
}
|
|
64
|
+
return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: t('routing.page.title'), description: t('routing.page.subtitle') }), _jsx(RouteTabsZone, { name: "ledger.section.tabs", props: {}, className: "mb-4" }), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, info ? (_jsx(Alert, { className: "mb-4", children: _jsx(AlertDescription, { children: info }) })) : null, _jsxs(Card, { className: "max-w-xl", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('routing.form.title') }) }), _jsxs(CardContent, { className: "grid gap-4", children: [_jsxs("div", { className: "grid gap-2", children: [_jsx(Label, { htmlFor: "ledger-numbering-mode", children: t('routing.numberingMode') }), _jsxs(Select, { id: "ledger-numbering-mode", value: numberingMode, disabled: !canWrite, onChange: (e) => setNumberingMode(e.target.value), children: [_jsx("option", { value: "endora", children: t('routing.numberingMode.endora') }), _jsx("option", { value: "vendor", children: t('routing.numberingMode.vendor') })] })] }), _jsxs("div", { className: "grid gap-2", children: [_jsx(Label, { htmlFor: "ledger-ksef-routing", children: t('routing.ksefRouting') }), _jsxs(Select, { id: "ledger-ksef-routing", value: ksefRouting, disabled: !canWrite, onChange: (e) => setKsefRouting(e.target.value), children: [_jsx("option", { value: "native", children: t('routing.ksefRouting.native') }), _jsx("option", { value: "vendor", children: t('routing.ksefRouting.vendor') })] })] }), numberingMode !== routing?.numberingMode ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Checkbox, { id: "ledger-numbering-confirm", checked: confirm, disabled: !canWrite, onChange: (e) => setConfirm(e.target.checked) }), _jsx(Label, { htmlFor: "ledger-numbering-confirm", children: t('routing.confirm') })] })) : null, canWrite ? (_jsx(Button, { type: "button", onClick: () => void save(), disabled: saving, children: t('routing.save') })) : null] })] })] }));
|
|
65
|
+
}
|
|
66
|
+
export default LedgerRoutingPage;
|
|
67
|
+
//# sourceMappingURL=LedgerRoutingPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerRoutingPage.js","sourceRoot":"","sources":["../../../src/admin/pages/LedgerRoutingPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { InvoiceLedgerDeliveryListItem } from '@endora-commerce/contracts';
|
|
2
|
+
export declare function mergeLedgerDeliveryPages(existing: InvoiceLedgerDeliveryListItem[], incoming: InvoiceLedgerDeliveryListItem[]): InvoiceLedgerDeliveryListItem[];
|
|
3
|
+
//# sourceMappingURL=merge-delivery-pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-delivery-pages.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/merge-delivery-pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,6BAA6B,EAAE,EACzC,QAAQ,EAAE,6BAA6B,EAAE,GACxC,6BAA6B,EAAE,CAGjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-delivery-pages.js","sourceRoot":"","sources":["../../../src/admin/pages/merge-delivery-pages.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,QAAyC,EACzC,QAAyC;IAEzC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { AdminZoneProps } from '@endora-commerce/contracts';
|
|
3
|
+
export type InvoiceLedgerRemoteIdPanelProps = AdminZoneProps<'invoice.detail.after'>;
|
|
4
|
+
/**
|
|
5
|
+
* Read-only historical vendor document id on invoice admin (US9 / FR-040).
|
|
6
|
+
* Reads the ledger, never the vendor HTTP client, so the id stays after the
|
|
7
|
+
* adapter is switched off.
|
|
8
|
+
*/
|
|
9
|
+
export declare function InvoiceLedgerRemoteIdPanel({ invoiceId, kind, }: InvoiceLedgerRemoteIdPanelProps): ReactNode;
|
|
10
|
+
export default InvoiceLedgerRemoteIdPanel;
|
|
11
|
+
//# sourceMappingURL=InvoiceLedgerRemoteIdPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvoiceLedgerRemoteIdPanel.d.ts","sourceRoot":"","sources":["../../../src/admin/zones/InvoiceLedgerRemoteIdPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAiC,MAAM,4BAA4B,CAAC;AAKhG,MAAM,MAAM,+BAA+B,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;AAErF;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,IAAI,GACL,EAAE,+BAA+B,GAAG,SAAS,CAqC7C;AAED,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@endora-commerce/admin-kit/ui';
|
|
4
|
+
import { useTranslation } from '@endora-commerce/admin-kit/i18n';
|
|
5
|
+
import { invoiceLedgerAdminClient } from '../api/ledger-client.js';
|
|
6
|
+
/**
|
|
7
|
+
* Read-only historical vendor document id on invoice admin (US9 / FR-040).
|
|
8
|
+
* Reads the ledger, never the vendor HTTP client, so the id stays after the
|
|
9
|
+
* adapter is switched off.
|
|
10
|
+
*/
|
|
11
|
+
export function InvoiceLedgerRemoteIdPanel({ invoiceId, kind, }) {
|
|
12
|
+
const t = useTranslation('invoice_ledger');
|
|
13
|
+
const [row, setRow] = useState(null);
|
|
14
|
+
const [state, setState] = useState('loading');
|
|
15
|
+
const isProforma = kind === 'proforma';
|
|
16
|
+
const reload = useCallback(async () => {
|
|
17
|
+
try {
|
|
18
|
+
const res = await invoiceLedgerAdminClient.listDeliveries({ invoiceId, limit: 1 });
|
|
19
|
+
setRow(res.data[0] ?? null);
|
|
20
|
+
setState('ready');
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
setState('hidden');
|
|
24
|
+
}
|
|
25
|
+
}, [invoiceId]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (isProforma)
|
|
28
|
+
return;
|
|
29
|
+
void reload();
|
|
30
|
+
}, [isProforma, reload]);
|
|
31
|
+
if (isProforma || state !== 'ready' || !row?.remoteDocumentId)
|
|
32
|
+
return null;
|
|
33
|
+
return (_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('invoicePanel.title') }) }), _jsx(CardContent, { className: "space-y-2 text-sm", children: _jsxs("div", { className: "flex items-center justify-between gap-4", children: [_jsx("span", { className: "text-muted-foreground", children: t('invoicePanel.remoteDocumentId') }), _jsx("code", { className: "text-xs", children: row.remoteDocumentId })] }) })] }));
|
|
34
|
+
}
|
|
35
|
+
export default InvoiceLedgerRemoteIdPanel;
|
|
36
|
+
//# sourceMappingURL=InvoiceLedgerRemoteIdPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvoiceLedgerRemoteIdPanel.js","sourceRoot":"","sources":["../../../src/admin/zones/InvoiceLedgerRemoteIdPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAInE;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,SAAS,EACT,IAAI,GAC4B;IAChC,MAAM,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAuC,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiC,SAAS,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,CAAC;IAEvC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAmB,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU;YAAE,OAAO;QACvB,KAAK,MAAM,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEzB,IAAI,UAAU,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,GAAG,EAAE,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAE3E,OAAO,CACL,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,cAAE,CAAC,CAAC,oBAAoB,CAAC,GAAa,GACrC,EACb,KAAC,WAAW,IAAC,SAAS,EAAC,mBAAmB,YACxC,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAQ,EACnF,eAAM,SAAS,EAAC,SAAS,YAAE,GAAG,CAAC,gBAAgB,GAAQ,IACnD,GACM,IACT,CACR,CAAC;AACJ,CAAC;AAED,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Deliveries tab of the invoice-ledger section strip (`ledger.section.tabs`).
|
|
4
|
+
*
|
|
5
|
+
* The route and the label are this module's. Selected state is the tab's,
|
|
6
|
+
* which is what a contributed `RouteTabLink` has to do.
|
|
7
|
+
*/
|
|
8
|
+
export declare function LedgerDeliveriesTab(): ReactNode;
|
|
9
|
+
export default LedgerDeliveriesTab;
|
|
10
|
+
//# sourceMappingURL=LedgerDeliveriesTab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerDeliveriesTab.d.ts","sourceRoot":"","sources":["../../../src/admin/zones/LedgerDeliveriesTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAG/C;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { RouteTabLink } from '@endora-commerce/admin-kit/ui';
|
|
3
|
+
import { useTranslation } from '@endora-commerce/admin-kit/i18n';
|
|
4
|
+
/**
|
|
5
|
+
* Deliveries tab of the invoice-ledger section strip (`ledger.section.tabs`).
|
|
6
|
+
*
|
|
7
|
+
* The route and the label are this module's. Selected state is the tab's,
|
|
8
|
+
* which is what a contributed `RouteTabLink` has to do.
|
|
9
|
+
*/
|
|
10
|
+
export function LedgerDeliveriesTab() {
|
|
11
|
+
const t = useTranslation('invoice_ledger');
|
|
12
|
+
return _jsx(RouteTabLink, { to: "/invoice-ledger/deliveries", label: t('tabs.deliveries') });
|
|
13
|
+
}
|
|
14
|
+
export default LedgerDeliveriesTab;
|
|
15
|
+
//# sourceMappingURL=LedgerDeliveriesTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerDeliveriesTab.js","sourceRoot":"","sources":["../../../src/admin/zones/LedgerDeliveriesTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC3C,OAAO,KAAC,YAAY,IAAC,EAAE,EAAC,4BAA4B,EAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAI,CAAC;AACvF,CAAC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Routing tab of the invoice-ledger section strip (`ledger.section.tabs`).
|
|
4
|
+
*
|
|
5
|
+
* Sibling of {@link LedgerDeliveriesTab}: same module, own route, own label.
|
|
6
|
+
* Two contributions from one owner so a later vendor adapter joins the strip
|
|
7
|
+
* without the host listing it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function LedgerRoutingTab(): ReactNode;
|
|
10
|
+
export default LedgerRoutingTab;
|
|
11
|
+
//# sourceMappingURL=LedgerRoutingTab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerRoutingTab.d.ts","sourceRoot":"","sources":["../../../src/admin/zones/LedgerRoutingTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,CAG5C;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { RouteTabLink } from '@endora-commerce/admin-kit/ui';
|
|
3
|
+
import { useTranslation } from '@endora-commerce/admin-kit/i18n';
|
|
4
|
+
/**
|
|
5
|
+
* Routing tab of the invoice-ledger section strip (`ledger.section.tabs`).
|
|
6
|
+
*
|
|
7
|
+
* Sibling of {@link LedgerDeliveriesTab}: same module, own route, own label.
|
|
8
|
+
* Two contributions from one owner so a later vendor adapter joins the strip
|
|
9
|
+
* without the host listing it.
|
|
10
|
+
*/
|
|
11
|
+
export function LedgerRoutingTab() {
|
|
12
|
+
const t = useTranslation('invoice_ledger');
|
|
13
|
+
return _jsx(RouteTabLink, { to: "/invoice-ledger/routing", label: t('tabs.routing') });
|
|
14
|
+
}
|
|
15
|
+
export default LedgerRoutingTab;
|
|
16
|
+
//# sourceMappingURL=LedgerRoutingTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LedgerRoutingTab.js","sourceRoot":"","sources":["../../../src/admin/zones/LedgerRoutingTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC3C,OAAO,KAAC,YAAY,IAAC,EAAE,EAAC,yBAAyB,EAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,GAAI,CAAC;AACjF,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LedgerDeliveryRecord } from '@endora-commerce/contracts';
|
|
2
|
+
import type { Command } from '@endora-commerce/platform/commands';
|
|
3
|
+
export declare function makeRetryInvoiceLedgerDeliveryCommand(input: {
|
|
4
|
+
deliveryId: string;
|
|
5
|
+
before: LedgerDeliveryRecord;
|
|
6
|
+
retry: () => Promise<LedgerDeliveryRecord>;
|
|
7
|
+
}): Command<LedgerDeliveryRecord>;
|
|
8
|
+
//# sourceMappingURL=retry-delivery.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-delivery.command.d.ts","sourceRoot":"","sources":["../../../src/backend/commands/retry-delivery.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAElE,wBAAgB,qCAAqC,CAAC,KAAK,EAAE;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC5C,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwBhC"}
|