@chenchaolong/plugin-trade-compliance-workbench 1.0.0 → 1.0.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 (194) hide show
  1. package/README.md +46 -1
  2. package/dist/assets/branding/yuneec-logo.png +0 -0
  3. package/dist/assets/templates/CI.xlsx +0 -0
  4. package/dist/assets/templates/CUSTOMS_DECLARATION.xlsx +0 -0
  5. package/dist/assets/templates/PI.xlsx +0 -0
  6. package/dist/assets/templates/PL.xlsx +0 -0
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/lib/adapters/file-storage.d.ts +4 -2
  10. package/dist/lib/adapters/file-storage.d.ts.map +1 -1
  11. package/dist/lib/adapters/file-storage.js +25 -10
  12. package/dist/lib/adapters/file-storage.js.map +1 -1
  13. package/dist/lib/adapters/hsbianma.provider.d.ts +1 -0
  14. package/dist/lib/adapters/hsbianma.provider.d.ts.map +1 -1
  15. package/dist/lib/adapters/hsbianma.provider.js +32 -3
  16. package/dist/lib/adapters/hsbianma.provider.js.map +1 -1
  17. package/dist/lib/adapters/translation.provider.d.ts +3 -0
  18. package/dist/lib/adapters/translation.provider.d.ts.map +1 -1
  19. package/dist/lib/adapters/translation.provider.js +15 -6
  20. package/dist/lib/adapters/translation.provider.js.map +1 -1
  21. package/dist/lib/constants.d.ts +3 -2
  22. package/dist/lib/constants.d.ts.map +1 -1
  23. package/dist/lib/constants.js +3 -2
  24. package/dist/lib/constants.js.map +1 -1
  25. package/dist/lib/demo-data.definitions.d.ts +28 -0
  26. package/dist/lib/demo-data.definitions.d.ts.map +1 -0
  27. package/dist/lib/demo-data.definitions.js +236 -0
  28. package/dist/lib/demo-data.definitions.js.map +1 -0
  29. package/dist/lib/demo-data.entity.d.ts +9 -0
  30. package/dist/lib/demo-data.entity.d.ts.map +1 -0
  31. package/dist/lib/demo-data.entity.js +24 -0
  32. package/dist/lib/demo-data.entity.js.map +1 -0
  33. package/dist/lib/demo-data.ids.d.ts +4 -0
  34. package/dist/lib/demo-data.ids.d.ts.map +1 -0
  35. package/dist/lib/demo-data.ids.js +19 -0
  36. package/dist/lib/demo-data.ids.js.map +1 -0
  37. package/dist/lib/demo-data.service.d.ts +26 -0
  38. package/dist/lib/demo-data.service.d.ts.map +1 -0
  39. package/dist/lib/demo-data.service.js +124 -0
  40. package/dist/lib/demo-data.service.js.map +1 -0
  41. package/dist/lib/domain/default-settings.d.ts +1 -0
  42. package/dist/lib/domain/default-settings.d.ts.map +1 -1
  43. package/dist/lib/domain/default-settings.js +1 -0
  44. package/dist/lib/domain/default-settings.js.map +1 -1
  45. package/dist/lib/domain/risk-notice.d.ts +59 -0
  46. package/dist/lib/domain/risk-notice.d.ts.map +1 -0
  47. package/dist/lib/domain/risk-notice.js +30 -0
  48. package/dist/lib/domain/risk-notice.js.map +1 -0
  49. package/dist/lib/entities/catalog.entity.d.ts.map +1 -1
  50. package/dist/lib/entities/catalog.entity.js +4 -2
  51. package/dist/lib/entities/catalog.entity.js.map +1 -1
  52. package/dist/lib/entities/customer.entity.d.ts +9 -2
  53. package/dist/lib/entities/customer.entity.d.ts.map +1 -1
  54. package/dist/lib/entities/customer.entity.js +29 -1
  55. package/dist/lib/entities/customer.entity.js.map +1 -1
  56. package/dist/lib/entities/index.d.ts +2 -2
  57. package/dist/lib/entities/index.d.ts.map +1 -1
  58. package/dist/lib/entities/index.js +2 -2
  59. package/dist/lib/entities/index.js.map +1 -1
  60. package/dist/lib/entities/procurement.entity.d.ts +6 -4
  61. package/dist/lib/entities/procurement.entity.d.ts.map +1 -1
  62. package/dist/lib/entities/procurement.entity.js +9 -1
  63. package/dist/lib/entities/procurement.entity.js.map +1 -1
  64. package/dist/lib/entities/settings.entity.d.ts +12 -2
  65. package/dist/lib/entities/settings.entity.d.ts.map +1 -1
  66. package/dist/lib/entities/settings.entity.js +40 -0
  67. package/dist/lib/entities/settings.entity.js.map +1 -1
  68. package/dist/lib/entities/shared.entity.d.ts +10 -5
  69. package/dist/lib/entities/shared.entity.d.ts.map +1 -1
  70. package/dist/lib/entities/shared.entity.js +22 -1
  71. package/dist/lib/entities/shared.entity.js.map +1 -1
  72. package/dist/lib/remote-components/trade-compliance-workbench/app.css +1 -0
  73. package/dist/lib/remote-components/trade-compliance-workbench/app.js +63 -277
  74. package/dist/lib/remote-ui/analytics-contracts.d.ts +106 -0
  75. package/dist/lib/remote-ui/analytics-contracts.d.ts.map +1 -0
  76. package/dist/lib/remote-ui/analytics-contracts.js +4 -0
  77. package/dist/lib/remote-ui/analytics-contracts.js.map +1 -0
  78. package/dist/lib/remote-ui/app-source.d.ts +2 -0
  79. package/dist/lib/remote-ui/app-source.d.ts.map +1 -0
  80. package/dist/lib/remote-ui/app-source.js +753 -0
  81. package/dist/lib/remote-ui/app-source.js.map +1 -0
  82. package/dist/lib/remote-ui/bridge.d.ts +36 -0
  83. package/dist/lib/remote-ui/bridge.d.ts.map +1 -0
  84. package/dist/lib/remote-ui/bridge.js +159 -0
  85. package/dist/lib/remote-ui/bridge.js.map +1 -0
  86. package/dist/lib/remote-ui/components/data-grid.d.ts +34 -0
  87. package/dist/lib/remote-ui/components/data-grid.d.ts.map +1 -0
  88. package/dist/lib/remote-ui/components/data-grid.js +59 -0
  89. package/dist/lib/remote-ui/components/data-grid.js.map +1 -0
  90. package/dist/lib/remote-ui/components/forms.d.ts +63 -0
  91. package/dist/lib/remote-ui/components/forms.d.ts.map +1 -0
  92. package/dist/lib/remote-ui/components/forms.js +117 -0
  93. package/dist/lib/remote-ui/components/forms.js.map +1 -0
  94. package/dist/lib/remote-ui/components/layout.d.ts +34 -0
  95. package/dist/lib/remote-ui/components/layout.d.ts.map +1 -0
  96. package/dist/lib/remote-ui/components/layout.js +89 -0
  97. package/dist/lib/remote-ui/components/layout.js.map +1 -0
  98. package/dist/lib/remote-ui/contract-import.d.ts +82 -0
  99. package/dist/lib/remote-ui/contract-import.d.ts.map +1 -0
  100. package/dist/lib/remote-ui/contract-import.js +102 -0
  101. package/dist/lib/remote-ui/contract-import.js.map +1 -0
  102. package/dist/lib/remote-ui/contracts.d.ts +257 -0
  103. package/dist/lib/remote-ui/contracts.d.ts.map +1 -0
  104. package/dist/lib/remote-ui/contracts.js +12 -0
  105. package/dist/lib/remote-ui/contracts.js.map +1 -0
  106. package/dist/lib/remote-ui/customer-contract-contracts.d.ts +227 -0
  107. package/dist/lib/remote-ui/customer-contract-contracts.d.ts.map +1 -0
  108. package/dist/lib/remote-ui/customer-contract-contracts.js +10 -0
  109. package/dist/lib/remote-ui/customer-contract-contracts.js.map +1 -0
  110. package/dist/lib/remote-ui/model.d.ts +31 -0
  111. package/dist/lib/remote-ui/model.d.ts.map +1 -0
  112. package/dist/lib/remote-ui/model.js +248 -0
  113. package/dist/lib/remote-ui/model.js.map +1 -0
  114. package/dist/lib/remote-ui/pages/analytics.d.ts +12 -0
  115. package/dist/lib/remote-ui/pages/analytics.d.ts.map +1 -0
  116. package/dist/lib/remote-ui/pages/analytics.js +123 -0
  117. package/dist/lib/remote-ui/pages/analytics.js.map +1 -0
  118. package/dist/lib/remote-ui/pages/catalogs.d.ts +225 -0
  119. package/dist/lib/remote-ui/pages/catalogs.d.ts.map +1 -0
  120. package/dist/lib/remote-ui/pages/catalogs.js +572 -0
  121. package/dist/lib/remote-ui/pages/catalogs.js.map +1 -0
  122. package/dist/lib/remote-ui/pages/contracts.d.ts +80 -0
  123. package/dist/lib/remote-ui/pages/contracts.d.ts.map +1 -0
  124. package/dist/lib/remote-ui/pages/contracts.js +396 -0
  125. package/dist/lib/remote-ui/pages/contracts.js.map +1 -0
  126. package/dist/lib/remote-ui/pages/files.d.ts +31 -0
  127. package/dist/lib/remote-ui/pages/files.d.ts.map +1 -0
  128. package/dist/lib/remote-ui/pages/files.js +64 -0
  129. package/dist/lib/remote-ui/pages/files.js.map +1 -0
  130. package/dist/lib/remote-ui/pages/home.d.ts +71 -0
  131. package/dist/lib/remote-ui/pages/home.d.ts.map +1 -0
  132. package/dist/lib/remote-ui/pages/home.js +136 -0
  133. package/dist/lib/remote-ui/pages/home.js.map +1 -0
  134. package/dist/lib/remote-ui/pages/procurement.d.ts +36 -0
  135. package/dist/lib/remote-ui/pages/procurement.d.ts.map +1 -0
  136. package/dist/lib/remote-ui/pages/procurement.js +370 -0
  137. package/dist/lib/remote-ui/pages/procurement.js.map +1 -0
  138. package/dist/lib/remote-ui/pages/sales.d.ts +12 -0
  139. package/dist/lib/remote-ui/pages/sales.d.ts.map +1 -0
  140. package/dist/lib/remote-ui/pages/sales.js +106 -0
  141. package/dist/lib/remote-ui/pages/sales.js.map +1 -0
  142. package/dist/lib/remote-ui/pages/settings.d.ts +34 -0
  143. package/dist/lib/remote-ui/pages/settings.d.ts.map +1 -0
  144. package/dist/lib/remote-ui/pages/settings.js +259 -0
  145. package/dist/lib/remote-ui/pages/settings.js.map +1 -0
  146. package/dist/lib/remote-ui/procurement-contracts.d.ts +177 -0
  147. package/dist/lib/remote-ui/procurement-contracts.d.ts.map +1 -0
  148. package/dist/lib/remote-ui/procurement-contracts.js +2 -0
  149. package/dist/lib/remote-ui/procurement-contracts.js.map +1 -0
  150. package/dist/lib/remote-ui/sales-contracts.d.ts +133 -0
  151. package/dist/lib/remote-ui/sales-contracts.d.ts.map +1 -0
  152. package/dist/lib/remote-ui/sales-contracts.js +2 -0
  153. package/dist/lib/remote-ui/sales-contracts.js.map +1 -0
  154. package/dist/lib/remote-ui/settings-contracts.d.ts +114 -0
  155. package/dist/lib/remote-ui/settings-contracts.d.ts.map +1 -0
  156. package/dist/lib/remote-ui/settings-contracts.js +6 -0
  157. package/dist/lib/remote-ui/settings-contracts.js.map +1 -0
  158. package/dist/lib/remote-ui/upload-policy.d.ts +18 -0
  159. package/dist/lib/remote-ui/upload-policy.d.ts.map +1 -0
  160. package/dist/lib/remote-ui/upload-policy.js +56 -0
  161. package/dist/lib/remote-ui/upload-policy.js.map +1 -0
  162. package/dist/lib/runtime-validation.d.ts +61 -0
  163. package/dist/lib/runtime-validation.d.ts.map +1 -0
  164. package/dist/lib/runtime-validation.js +243 -0
  165. package/dist/lib/runtime-validation.js.map +1 -0
  166. package/dist/lib/sales-file.service.d.ts +54 -6
  167. package/dist/lib/sales-file.service.d.ts.map +1 -1
  168. package/dist/lib/sales-file.service.js +278 -33
  169. package/dist/lib/sales-file.service.js.map +1 -1
  170. package/dist/lib/trade-compliance.config.d.ts +32 -0
  171. package/dist/lib/trade-compliance.config.d.ts.map +1 -1
  172. package/dist/lib/trade-compliance.config.js +16 -4
  173. package/dist/lib/trade-compliance.config.js.map +1 -1
  174. package/dist/lib/types.d.ts +253 -1
  175. package/dist/lib/types.d.ts.map +1 -1
  176. package/dist/lib/types.js +24 -0
  177. package/dist/lib/types.js.map +1 -1
  178. package/dist/lib/workbench-view.provider.d.ts +675 -38
  179. package/dist/lib/workbench-view.provider.d.ts.map +1 -1
  180. package/dist/lib/workbench-view.provider.js +411 -40
  181. package/dist/lib/workbench-view.provider.js.map +1 -1
  182. package/dist/lib/workbench.middleware.d.ts +70 -19
  183. package/dist/lib/workbench.middleware.d.ts.map +1 -1
  184. package/dist/lib/workbench.middleware.js +5 -1
  185. package/dist/lib/workbench.middleware.js.map +1 -1
  186. package/dist/lib/workbench.plugin.d.ts.map +1 -1
  187. package/dist/lib/workbench.plugin.js +6 -4
  188. package/dist/lib/workbench.plugin.js.map +1 -1
  189. package/dist/lib/workbench.service.d.ts +629 -48
  190. package/dist/lib/workbench.service.d.ts.map +1 -1
  191. package/dist/lib/workbench.service.js +1818 -300
  192. package/dist/lib/workbench.service.js.map +1 -1
  193. package/package.json +15 -4
  194. package/scripts/seed-demo-data.mjs +138 -0
@@ -0,0 +1,370 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { DataGrid, FilterPanel, InfoNotice, RiskNotice } from '../components/data-grid.js';
4
+ import { ConfirmDialog, FieldGrid, FormField, Modal, ReviewSplit } from '../components/forms.js';
5
+ import { HsCodeLookupDialog } from './catalogs.js';
6
+ const PAGE_SIZE = 20;
7
+ const sanctionLabels = { UNCHECKED: '未检查', CLEAR: '无命中', HIT: '命中提醒' };
8
+ const hsStatusLabels = { UNCONFIRMED: '待审核', AI_CONFIRMED: 'AI确认', MANUALLY_CONFIRMED: '人工确认' };
9
+ const complianceLabels = { DUAL_USE: '军民两用', OVERSEAS_SANCTION: '海外制裁' };
10
+ const sourceTypeLabels = { CONTRACT_EXTRACTED: '合同提取', MANUAL_ENTRY: '手工新增' };
11
+ const supplierFilters = [
12
+ { type: 'text', key: 'code', label: '供应商代码' },
13
+ { type: 'text', key: 'name', label: '供应商名称' },
14
+ { type: 'text', key: 'shortName', label: '简称' },
15
+ { type: 'text', key: 'contactName', label: '联系人' },
16
+ { type: 'text', key: 'phone', label: '联系电话' }
17
+ ];
18
+ const orderFilters = [
19
+ { type: 'text', key: 'contractNo', label: '采购合同编号' },
20
+ { type: 'date-range', key: 'orderDate', label: '下单日期' },
21
+ { type: 'amount-range', key: 'contractAmountCny', label: '采购金额', currency: 'CNY' },
22
+ { type: 'select', key: 'hasUnpaid', label: '未付款', options: booleanOptions() },
23
+ { type: 'select', key: 'hasUnrefunded', label: '未退税', options: booleanOptions() },
24
+ { type: 'select', key: 'linkStatus', label: '关联状态', options: [{ value: 'LINKED', label: '已关联' }, { value: 'UNLINKED', label: '未关联' }] }
25
+ ];
26
+ const lineFilters = [
27
+ { type: 'text', key: 'productName', label: '商品名称' },
28
+ { type: 'text', key: 'productDescription', label: '商品描述' },
29
+ { type: 'text', key: 'hsCode', label: '海关编码' },
30
+ { type: 'select', key: 'hsCodeStatus', label: '编码状态', options: enumOptions(hsStatusLabels) },
31
+ { type: 'select', key: 'complianceCategory', label: '合规分类', options: enumOptions(complianceLabels) }
32
+ ];
33
+ export const procurementFilterMappings = {
34
+ suppliers: {
35
+ code: { type: 'fuzzy', accessor: 'code' },
36
+ name: { type: 'fuzzy', accessor: 'name' },
37
+ shortName: { type: 'fuzzy', accessor: 'shortName' },
38
+ contactName: { type: 'fuzzy', accessor: 'contactName' },
39
+ phone: { type: 'fuzzy', accessor: 'phone' }
40
+ },
41
+ purchaseOrders: {
42
+ contractNo: { type: 'fuzzy', accessor: 'contractNo' },
43
+ orderDate: { type: 'range', accessor: 'orderDate' },
44
+ contractAmountCny: { type: 'range', accessor: 'contractAmountCny' },
45
+ hasUnpaid: { type: 'exact', accessor: (row) => amount(row.contractAmountCny) > amount(row.paidAmountCny) ? 'true' : 'false' },
46
+ hasUnrefunded: { type: 'exact', accessor: (row) => amount(row.estimatedRefundAmountCny) > amount(row.refundedAmountCny) ? 'true' : 'false' },
47
+ linkStatus: { type: 'exact', accessor: (row) => row.customerContractId || row.customerContractNo ? 'LINKED' : 'UNLINKED' }
48
+ },
49
+ purchaseLines: {
50
+ productName: { type: 'fuzzy', accessor: 'productName' },
51
+ productDescription: { type: 'fuzzy', accessor: 'productDescription' },
52
+ hsCode: { type: 'fuzzy', accessor: 'hsCode' },
53
+ hsCodeStatus: { type: 'exact', accessor: 'hsCodeStatus' },
54
+ complianceCategory: { type: 'exact', accessor: (row) => row.complianceCategories ?? [] }
55
+ }
56
+ };
57
+ export function createProcurementQueryScheduler(query, debounceMs = 300) {
58
+ let timer = null;
59
+ const cancel = () => { if (timer)
60
+ clearTimeout(timer); timer = null; };
61
+ return {
62
+ schedule(type, filters) {
63
+ cancel();
64
+ if (type !== 'text') {
65
+ query(filters);
66
+ return;
67
+ }
68
+ timer = setTimeout(() => { timer = null; query(filters); }, debounceMs);
69
+ },
70
+ flush(filters) { cancel(); query(filters); },
71
+ cancel
72
+ };
73
+ }
74
+ export function createProcurementActionApi({ onAction, onFileAction }) {
75
+ const mutate = async (actionKey, input) => {
76
+ const result = await onAction(actionKey, input);
77
+ assertSucceeded(result);
78
+ return result;
79
+ };
80
+ return {
81
+ uploadPurchaseContract: async (file) => {
82
+ const result = await onFileAction('upload_purchase_contract', file, { documentType: 'PURCHASE_CONTRACT' });
83
+ assertSucceeded(result);
84
+ return result;
85
+ },
86
+ savePurchaseReview: (taskId, draft) => mutate('save_purchase_review', { importTaskId: taskId, draft }),
87
+ updateSupplier: (input) => mutate('update_supplier', { ...input }),
88
+ updatePurchaseOrder: (input) => mutate('update_purchase_order', { ...input }),
89
+ addPurchaseLine: (purchaseOrderId, input) => mutate('add_purchase_line', { ...input, purchaseOrderId, sourceType: 'MANUAL_ENTRY' }),
90
+ updatePurchaseLine: (input) => mutate('update_purchase_line', { ...input }),
91
+ deleteEntity: (entityType, id) => mutate('delete_entity', { entityType, id })
92
+ };
93
+ }
94
+ export function buildProcurementMetrics(orders, lines, currentYear = new Date().getFullYear()) {
95
+ const currentYearPrefix = `${currentYear}-`;
96
+ const productAmounts = new Map();
97
+ const orderBalances = {};
98
+ for (const order of orders) {
99
+ if (!order.id)
100
+ continue;
101
+ orderBalances[order.id] = {
102
+ unpaidAmountCny: Math.max(amount(order.contractAmountCny) - amount(order.paidAmountCny), 0),
103
+ unrefundedAmountCny: Math.max(amount(order.estimatedRefundAmountCny) - amount(order.refundedAmountCny), 0)
104
+ };
105
+ }
106
+ for (const line of lines)
107
+ productAmounts.set(line.productName, (productAmounts.get(line.productName) ?? 0) + amount(line.lineAmountTaxIncluded));
108
+ const currentOrders = orders.filter((item) => item.orderDate.startsWith(currentYearPrefix));
109
+ return {
110
+ totalOrderCount: orders.length,
111
+ totalPurchaseAmountCny: sum(orders, (item) => item.contractAmountCny),
112
+ currentYearOrderCount: currentOrders.length,
113
+ currentYearPurchaseAmountCny: sum(currentOrders, (item) => item.contractAmountCny),
114
+ topProducts: [...productAmounts].map(([productName, amountCny]) => ({ productName, amountCny })).sort((left, right) => right.amountCny - left.amountCny || left.productName.localeCompare(right.productName)).slice(0, 5),
115
+ orderBalances
116
+ };
117
+ }
118
+ export function validatePurchaseContractReview(draft) {
119
+ const errors = [];
120
+ if (!draft.supplier.name.trim())
121
+ errors.push('供应商名称为必填项');
122
+ if (!draft.order.contractNo.trim())
123
+ errors.push('采购合同编号为必填项');
124
+ if (!draft.order.orderDate)
125
+ errors.push('下单日期为必填项');
126
+ if (!(amount(draft.order.contractAmountCny) >= 0))
127
+ errors.push('采购订单总额必须为有效金额');
128
+ if (amount(draft.order.paidAmountCny) < 0)
129
+ errors.push('已付款不能为负数');
130
+ if (amount(draft.order.paidAmountCny) > amount(draft.order.contractAmountCny))
131
+ errors.push('已付款不能超过采购订单总额');
132
+ if (amount(draft.order.refundedAmountCny) < 0)
133
+ errors.push('已退税不能为负数');
134
+ if (draft.order.amountMismatch && !draft.order.amountMismatchConfirmed)
135
+ errors.push('订单总额差异必须确认');
136
+ if (!draft.lines.length)
137
+ errors.push('采购合同必须包含至少一条商品');
138
+ draft.lines.forEach((line, index) => {
139
+ const prefix = `第${index + 1}条商品`;
140
+ if (!line.productName.trim())
141
+ errors.push(`${prefix}名称为必填项`);
142
+ if (!line.unit?.trim())
143
+ errors.push(`${prefix}单位为必填项`);
144
+ if (!(amount(line.quantity) > 0))
145
+ errors.push(`${prefix}数量必须大于0`);
146
+ if (amount(line.unitPriceTaxIncluded) < 0)
147
+ errors.push(`${prefix}含税单价不能为负数`);
148
+ if (amount(line.lineAmountTaxIncluded) < 0)
149
+ errors.push(`${prefix}含税金额不能为负数`);
150
+ if (blank(line.refundRate))
151
+ errors.push(`${prefix}退税率为必填项`);
152
+ if (blank(line.refundPolicyReference))
153
+ errors.push(`${prefix}退税政策依据为必填项`);
154
+ if (blank(line.refundPolicyDate))
155
+ errors.push(`${prefix}退税政策日期为必填项`);
156
+ if (line.refundPolicyDate && draft.order.orderDate && line.refundPolicyDate > draft.order.orderDate)
157
+ errors.push(`${prefix}退税政策日期不得晚于下单日期`);
158
+ if (line.amountMismatch && !line.amountMismatchConfirmed)
159
+ errors.push(`${prefix}金额差异必须确认`);
160
+ });
161
+ const estimatedRefund = draft.lines.reduce((total, item) => total + estimatedLineRefund(item), 0);
162
+ if (amount(draft.order.refundedAmountCny) > estimatedRefund)
163
+ errors.push('已退税不能超过预计退税总额');
164
+ return errors;
165
+ }
166
+ export function ProcurementPage(props) {
167
+ const [filters, setFilters] = React.useState({});
168
+ const [supplierDialog, setSupplierDialog] = React.useState(null);
169
+ const [orderDialog, setOrderDialog] = React.useState(null);
170
+ const [lineDialog, setLineDialog] = React.useState(null);
171
+ const [deleteTarget, setDeleteTarget] = React.useState(null);
172
+ const [draft, setDraft] = React.useState(props.reviewDraft);
173
+ const [message, setMessage] = React.useState('');
174
+ const closeDraft = React.useCallback(() => { setDraft(null); props.onReviewClose?.(); }, [props.onReviewClose]);
175
+ const api = React.useMemo(() => createProcurementActionApi(props), [props.onAction, props.onFileAction]);
176
+ const collectionKey = routeCollection(props.route);
177
+ const definitions = collectionKey === 'suppliers' ? supplierFilters : collectionKey === 'purchaseOrders' ? orderFilters : lineFilters;
178
+ const query = React.useCallback((page, nextFilters) => props.onQuery(collectionKey, {
179
+ page,
180
+ pageSize: PAGE_SIZE,
181
+ filters: nextFilters,
182
+ parameters: props.route.level === 'orders' ? { supplierId: props.route.supplierId } : props.route.level === 'lines' ? { supplierId: props.route.supplierId, purchaseOrderId: props.route.orderId } : undefined
183
+ }), [collectionKey, props.onQuery, props.route]);
184
+ const scheduler = React.useMemo(() => createProcurementQueryScheduler((nextFilters) => void query(1, nextFilters)), [query]);
185
+ React.useEffect(() => () => scheduler.cancel(), [scheduler]);
186
+ React.useEffect(() => { setDraft(props.reviewDraft); }, [props.reviewDraft]);
187
+ const changeFilter = (key, value) => {
188
+ const next = { ...filters, [key]: value };
189
+ setFilters(next);
190
+ scheduler.schedule(definitions.find((item) => item.key === key)?.type ?? 'text', next);
191
+ };
192
+ const reset = () => { setFilters({}); scheduler.flush({}); };
193
+ const execute = async (operation, success) => {
194
+ setMessage('');
195
+ try {
196
+ await operation();
197
+ setMessage(success);
198
+ return true;
199
+ }
200
+ catch (cause) {
201
+ setMessage(errorMessage(cause));
202
+ return false;
203
+ }
204
+ };
205
+ const saveLine = (item) => {
206
+ if (stateIsCreate(lineDialog))
207
+ return api.addPurchaseLine(props.order?.id ?? '', item);
208
+ if (!item.id)
209
+ return Promise.reject(new Error('采购商品标识不能为空'));
210
+ return api.updatePurchaseLine({ ...item, id: item.id });
211
+ };
212
+ const reviewVisible = Boolean(props.importTask && (draft || props.importTask.duplicateContractError));
213
+ return (_jsxs("section", { className: "tcw-procurement-page", "data-procurement-level": props.route.level, children: [message && _jsx("div", { className: "tcw-procurement-feedback", role: "status", children: message }), props.importTask && (props.importTask.status === 'FAILED' || props.importTask.status === 'TIMED_OUT') && _jsxs("div", { className: "tcw-procurement-feedback", role: "alert", children: [props.importTask.errorMessage || '采购合同解析失败', props.onRetryImport && _jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => void props.onRetryImport?.(props.importTask.id), children: "\u91CD\u65B0\u89E3\u6790" })] }), props.route.level === 'suppliers' && _jsx(SupplierLevel, { props: props, filters: filters, definitions: definitions, onFilter: changeFilter, onSubmit: () => scheduler.flush(filters), onReset: reset, onPage: (page) => void query(page, filters), onSupplierDialog: setSupplierDialog, onDelete: (item) => setDeleteTarget({ entityType: 'supplier', item }) }), props.route.level === 'orders' && _jsx(OrderLevel, { props: props, filters: filters, definitions: definitions, onFilter: changeFilter, onSubmit: () => scheduler.flush(filters), onReset: reset, onPage: (page) => void query(page, filters), onOrderDialog: setOrderDialog, onDelete: (item) => setDeleteTarget({ entityType: 'purchaseOrder', item }) }), props.route.level === 'lines' && _jsx(LineLevel, { props: props, filters: filters, definitions: definitions, onFilter: changeFilter, onSubmit: () => scheduler.flush(filters), onReset: reset, onPage: (page) => void query(page, filters), onLineDialog: setLineDialog, onDelete: (item) => setDeleteTarget({ entityType: 'purchaseLine', item }) }), _jsx(SupplierDialog, { state: supplierDialog, busy: props.busy, onClose: () => setSupplierDialog(null), onSave: (item) => execute(() => api.updateSupplier(item), '供应商主档已保存').then((saved) => { if (saved)
214
+ setSupplierDialog(null); }) }), _jsx(OrderDialog, { state: orderDialog, lines: props.purchaseLines.items, busy: props.busy, onClose: () => setOrderDialog(null), onSave: (item) => execute(() => api.updatePurchaseOrder(item), '采购订单已保存').then((saved) => { if (saved)
215
+ setOrderDialog(null); }) }), _jsx(LineDialog, { state: lineDialog, order: props.order ?? null, busy: props.busy, onAction: props.onAction, onClose: () => setLineDialog(null), onSave: (item) => execute(() => saveLine(item), '采购商品已保存').then((saved) => { if (saved)
216
+ setLineDialog(null); }) }), _jsx(PurchaseContractReviewDialog, { open: reviewVisible, task: props.importTask, draft: draft, busy: props.busy, onChange: setDraft, onClose: closeDraft, onSave: (nextDraft) => execute(() => api.savePurchaseReview(props.importTask.id, nextDraft), '采购合同审核已保存').then((saved) => { if (saved)
217
+ closeDraft(); }) }), _jsx(DeleteDialog, { target: deleteTarget, supplier: props.supplier ?? null, busy: props.busy, onCancel: () => setDeleteTarget(null), onConfirm: () => {
218
+ if (!deleteTarget?.item.id)
219
+ return;
220
+ void execute(() => api.deleteEntity(deleteTarget.entityType, deleteTarget.item.id), '已逻辑删除').then((deleted) => { if (deleted)
221
+ setDeleteTarget(null); });
222
+ } })] }));
223
+ }
224
+ function SupplierLevel({ props, filters, definitions, onFilter, onSubmit, onReset, onPage, onSupplierDialog, onDelete }) {
225
+ const columns = [
226
+ { type: 'custom', key: 'code', header: '供应商代码', width: 130, render: (_, row) => _jsx(LinkButton, { onClick: () => row.id && props.onRouteChange({ type: 'procurement', level: 'orders', supplierId: row.id }), children: row.code || '—' }) },
227
+ { type: 'ellipsis', key: 'name', header: '供应商名称', width: 240, maxWidth: 240 },
228
+ { type: 'text', key: 'shortName', header: '简称', width: 140 },
229
+ { type: 'text', key: 'contactName', header: '联系人', width: 130 },
230
+ { type: 'text', key: 'phone', header: '联系电话', width: 160 },
231
+ { type: 'custom', key: 'sanctionStatus', header: '制裁风险', width: 110, render: (_, row) => _jsx(StatusTag, { tone: row.sanctionStatus === 'HIT' ? 'danger' : row.sanctionStatus === 'CLEAR' ? 'success' : 'muted', children: sanctionLabels[row.sanctionStatus ?? 'UNCHECKED'] }) },
232
+ { type: 'text', key: 'createdAt', header: '创建时间', width: 170 }
233
+ ];
234
+ return _jsxs(_Fragment, { children: [_jsx(ProcurementLevelHeading, { title: "\u4F9B\u5E94\u5546\u5217\u8868", description: "\u4E00\u7EA7\u9875\u9762\uFF1A\u7BA1\u7406\u4F9B\u5E94\u5546\u4E3B\u6863\uFF0C\u5E76\u901A\u8FC7\u4F9B\u5E94\u5546\u4EE3\u7801\u8FDB\u5165\u8BE5\u4F9B\u5E94\u5546\u7684\u91C7\u8D2D\u8BA2\u5355\u5217\u8868\u3002" }), _jsx(FilterPanel, { definitions: definitions, values: filters, onChange: onFilter, onQuery: onSubmit, onReset: onReset }), _jsx(InfoNotice, { children: "\u91C7\u8D2D\u5408\u540C\u4E0A\u4F20\u540E\u81EA\u52A8\u5F52\u5165\u4F9B\u5E94\u5546\uFF1B\u540C\u540D\u4F9B\u5E94\u5546\u5F52\u5E76\u5230\u540C\u4E00\u4E3B\u6863\u3002\u70B9\u51FB\u4F9B\u5E94\u5546\u4EE3\u7801\u8FDB\u5165\u91C7\u8D2D\u8BA2\u5355\u5217\u8868\u3002" }), _jsx(DataGrid, { columns: columns, rows: props.suppliers.items, rowKey: (row, index) => row.id ?? index, pagination: pagination(props.suppliers), onPageChange: onPage, emptyText: "\u6682\u65E0\u4F9B\u5E94\u5546\u6570\u636E", actionWidth: 160, actions: (row) => _jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => onSupplierDialog({ mode: 'detail', item: row }), children: "\u8BE6\u60C5" }), _jsx("button", { type: "button", onClick: () => onSupplierDialog({ mode: 'review', item: row }), children: "\u5BA1\u6838" }), _jsx("button", { type: "button", className: "is-danger", onClick: () => onDelete(row), children: "\u5220\u9664" })] }) })] });
235
+ }
236
+ function OrderLevel({ props, filters, definitions, onFilter, onSubmit, onReset, onPage, onOrderDialog, onDelete }) {
237
+ const metrics = props.metrics ?? buildProcurementMetrics(props.purchaseOrders.items, props.purchaseLines.items);
238
+ const columns = [
239
+ { type: 'custom', key: 'contractNo', header: '采购合同编号', width: 160, render: (_, row) => _jsx(LinkButton, { onClick: () => row.id && props.onRouteChange({ type: 'procurement', level: 'lines', supplierId: props.route.level === 'orders' ? props.route.supplierId : row.supplierId, orderId: row.id }), children: row.contractNo }) },
240
+ { type: 'text', key: 'orderDate', header: '下单日期', width: 120 },
241
+ { type: 'text', key: 'contractAmountCny', header: '采购金额(人民币)', width: 160, align: 'right', format: currency },
242
+ { type: 'text', key: 'paidAmountCny', header: '已付款', width: 130, align: 'right', format: currency },
243
+ { type: 'text', key: 'unpaidAmount', header: '未付款', width: 130, align: 'right', accessor: (row) => balance(metrics, row).unpaidAmountCny, format: currency },
244
+ { type: 'text', key: 'refundedAmountCny', header: '已退税', width: 130, align: 'right', format: currency },
245
+ { type: 'text', key: 'estimatedRefundAmountCny', header: '预计退税总额', width: 150, align: 'right', format: currency },
246
+ { type: 'text', key: 'unrefundedAmount', header: '未退税', width: 130, align: 'right', accessor: (row) => balance(metrics, row).unrefundedAmountCny, format: currency },
247
+ { type: 'text', key: 'customerContractNo', header: '匹配客户合同', width: 150, format: (value) => String(value || '未关联') }
248
+ ];
249
+ return _jsxs(_Fragment, { children: [props.supplier && _jsx(ProcurementContextBar, { level: "supplier", supplier: props.supplier, onRouteChange: props.onRouteChange }), _jsx(ProcurementLevelHeading, { title: "\u91C7\u8D2D\u8BA2\u5355\u5217\u8868", description: "\u4E8C\u7EA7\u9875\u9762\uFF1A\u67E5\u770B\u5F53\u524D\u4F9B\u5E94\u5546\u7684\u91C7\u8D2D\u8BA2\u5355\uFF0C\u5E76\u901A\u8FC7\u91C7\u8D2D\u5408\u540C\u7F16\u53F7\u8FDB\u5165\u8BA2\u5355\u5546\u54C1\u5217\u8868\u3002" }), _jsx(MetricStrip, { metrics: metrics }), _jsx(FilterPanel, { definitions: definitions, values: filters, onChange: onFilter, onQuery: onSubmit, onReset: onReset }), _jsx(DataGrid, { columns: columns, rows: props.purchaseOrders.items, rowKey: (row, index) => row.id ?? index, pagination: pagination(props.purchaseOrders), onPageChange: onPage, emptyText: "\u6682\u65E0\u91C7\u8D2D\u8BA2\u5355\u6570\u636E", actionWidth: 160, actions: (row) => _jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => onOrderDialog({ mode: 'detail', item: row }), children: "\u8BE6\u60C5" }), _jsx("button", { type: "button", onClick: () => onOrderDialog({ mode: 'review', item: row }), children: "\u5BA1\u6838" }), _jsx("button", { type: "button", className: "is-danger", onClick: () => onDelete(row), children: "\u5220\u9664" })] }) })] });
250
+ }
251
+ function LineLevel({ props, filters, definitions, onFilter, onSubmit, onReset, onPage, onLineDialog, onDelete }) {
252
+ const columns = [
253
+ { type: 'ellipsis', key: 'productName', header: '商品名称', width: 170, maxWidth: 170 },
254
+ { type: 'ellipsis', key: 'productDescription', header: '商品描述', width: 190, maxWidth: 190 },
255
+ { type: 'text', key: 'modelSpecification', header: '规格型号', width: 150 },
256
+ { type: 'text', key: 'unit', header: '单位', width: 80 },
257
+ { type: 'text', key: 'quantity', header: '数量', width: 110, align: 'right', format: number },
258
+ { type: 'text', key: 'unitPriceTaxIncluded', header: '含税单价', width: 120, align: 'right', format: currency },
259
+ { type: 'text', key: 'lineAmountTaxIncluded', header: '含税金额', width: 130, align: 'right', format: currency },
260
+ { type: 'text', key: 'vatRate', header: '增值税率', width: 100, align: 'right', format: percent },
261
+ { type: 'text', key: 'hsCode', header: '海关编码', width: 130 },
262
+ { type: 'text', key: 'refundRate', header: '退税率', width: 90, align: 'right', format: percent },
263
+ { type: 'custom', key: 'hsCodeStatus', header: '编码确认状态', width: 120, render: (_, row) => _jsx(StatusTag, { tone: row.hsCodeStatus === 'UNCONFIRMED' || !row.hsCodeStatus ? 'warning' : 'success', children: hsStatusLabels[row.hsCodeStatus ?? 'UNCONFIRMED'] }) },
264
+ { type: 'text', key: 'complianceCategories', header: '命中合规分类', width: 150, format: (value) => Array.isArray(value) && value.length ? value.map((item) => complianceLabels[item]).join('、') : '无命中' },
265
+ { type: 'text', key: 'sourceType', header: '来源类型', width: 110, format: (value) => sourceTypeLabels[value] }
266
+ ];
267
+ const newLine = { purchaseOrderId: props.order?.id ?? '', sourceType: 'MANUAL_ENTRY', productName: '', quantity: '', unitPriceTaxIncluded: '', lineAmountTaxIncluded: '', hsCodeStatus: 'UNCONFIRMED' };
268
+ return _jsxs(_Fragment, { children: [_jsx(ProcurementLevelHeading, { title: "\u91C7\u8D2D\u5546\u54C1\u5217\u8868", description: "\u4E09\u7EA7\u9875\u9762\uFF1A\u67E5\u770B\u5F53\u524D\u91C7\u8D2D\u8BA2\u5355\u7684\u5546\u54C1\u660E\u7EC6\uFF0C\u53EF\u65B0\u589E\u3001\u5BA1\u6838\u548C\u903B\u8F91\u5220\u9664\u5546\u54C1\u3002", commands: _jsxs("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: props.busy || !props.order?.id, onClick: () => onLineDialog({ mode: 'create', item: newLine }), children: [_jsx("i", { className: "ri-add-line", "aria-hidden": "true" }), "\u65B0\u589E\u5546\u54C1"] }) }), props.supplier && props.order && _jsx(ProcurementContextBar, { level: "order", supplier: props.supplier, order: props.order, onRouteChange: props.onRouteChange }), _jsx(FilterPanel, { definitions: definitions, values: filters, onChange: onFilter, onQuery: onSubmit, onReset: onReset }), _jsx(InfoNotice, { children: "\u53EF\u901A\u8FC7\u5BA1\u6838\u5B8C\u5584\u82F1\u6587\u540D\u79F0\u3001\u6D77\u5173\u7F16\u7801\u3001\u9000\u7A0E\u7387\u548C\u98CE\u9669\u5339\u914D\u4FE1\u606F\u3002" }), _jsx(DataGrid, { columns: columns, rows: props.purchaseLines.items, rowKey: (row, index) => row.id ?? index, pagination: pagination(props.purchaseLines), onPageChange: onPage, emptyText: "\u6682\u65E0\u91C7\u8D2D\u5546\u54C1\u6570\u636E", actionWidth: 120, actions: (row) => _jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => onLineDialog({ mode: 'review', item: row }), children: "\u5BA1\u6838" }), _jsx("button", { type: "button", className: "is-danger", onClick: () => onDelete(row), children: "\u5220\u9664" })] }) })] });
269
+ }
270
+ function ProcurementLevelHeading({ title, description, commands }) {
271
+ return _jsxs("header", { className: "tcw-procurement-level-heading", children: [_jsxs("div", { children: [_jsx("h2", { children: title }), _jsx("p", { children: description })] }), commands && _jsx("div", { className: "tcw-procurement-toolbar", children: commands })] });
272
+ }
273
+ export function ProcurementContextBar(props) {
274
+ return _jsxs("section", { className: "tcw-procurement-context", "aria-label": props.level === 'supplier' ? '供应商上下文' : '采购订单上下文', children: [_jsx(ContextValue, { label: "\u4F9B\u5E94\u5546\u4EE3\u7801", value: props.supplier.code }), _jsx(ContextValue, { label: "\u4F9B\u5E94\u5546\u540D\u79F0", value: props.supplier.name }), _jsx(ContextValue, { label: "\u8054\u7CFB\u4EBA", value: props.supplier.contactName }), _jsx(ContextValue, { label: "\u8054\u7CFB\u7535\u8BDD", value: props.supplier.phone }), props.level === 'order' && _jsxs(_Fragment, { children: [_jsx(ContextValue, { label: "\u91C7\u8D2D\u5408\u540C\u7F16\u53F7", value: props.order.contractNo }), _jsx(ContextValue, { label: "\u4E0B\u5355\u65E5\u671F", value: props.order.orderDate }), _jsx(ContextValue, { label: "\u91C7\u8D2D\u91D1\u989D", value: currency(props.order.contractAmountCny) })] }), _jsxs("div", { className: "tcw-procurement-context-actions", children: [_jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => props.onRouteChange({ type: 'procurement', level: 'suppliers' }), children: [_jsx("i", { className: "ri-arrow-left-line", "aria-hidden": "true" }), "\u8FD4\u56DE\u4F9B\u5E94\u5546\u5217\u8868"] }), props.level === 'order' && _jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => props.onRouteChange({ type: 'procurement', level: 'orders', supplierId: props.supplier.id ?? props.order.supplierId }), children: [_jsx("i", { className: "ri-arrow-left-line", "aria-hidden": "true" }), "\u8FD4\u56DE\u8BA2\u5355\u5217\u8868"] })] })] });
275
+ }
276
+ function MetricStrip({ metrics }) {
277
+ const items = [
278
+ ['订单总数', number(metrics.totalOrderCount)],
279
+ ['采购订单总额', currency(metrics.totalPurchaseAmountCny)],
280
+ ['本年订单数', number(metrics.currentYearOrderCount)],
281
+ ['本年采购金额', currency(metrics.currentYearPurchaseAmountCny)]
282
+ ];
283
+ return _jsxs("section", { className: "tcw-procurement-metrics", "aria-label": "\u91C7\u8D2D\u7EDF\u8BA1", children: [items.map(([label, value]) => _jsxs("div", { children: [_jsx("span", { children: label }), _jsx("strong", { children: value })] }, label)), _jsxs("div", { className: "tcw-procurement-top", children: [_jsx("span", { children: "\u91C7\u8D2D\u5546\u54C1TOP5" }), metrics.topProducts.length ? _jsx("ol", { children: metrics.topProducts.map((item) => _jsxs("li", { children: [_jsx("span", { children: item.productName }), _jsx("strong", { children: currency(item.amountCny) })] }, item.productName)) }) : _jsx("small", { children: "\u6682\u65E0\u5546\u54C1\u6570\u636E" })] })] });
284
+ }
285
+ function SupplierDialog({ state, busy, onClose, onSave }) {
286
+ const [value, setValue] = React.useState(state?.item ?? null);
287
+ React.useEffect(() => setValue(state?.item ?? null), [state]);
288
+ if (!state || !value)
289
+ return null;
290
+ const disabled = state.mode === 'detail';
291
+ const fields = [
292
+ ['code', '供应商代码'], ['name', '供应商名称', true], ['shortName', '简称'], ['countryOrRegion', '国别/地区'], ['contactName', '联系人'], ['phone', '联系电话'], ['wechat', '微信'], ['email', '邮箱'], ['address', '地址'], ['taxNumber', '税号'], ['paymentAccount', '收款账号'], ['bankName', '开户行'], ['taxpayerRating', '纳税等级'], ['website', '公司网站'], ['businessProducts', '经营产品']
293
+ ];
294
+ return _jsxs(Modal, { open: true, title: state.mode === 'detail' ? '供应商详情' : '供应商详情审核', size: "wide", onClose: onClose, footer: disabled ? _jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: "\u5173\u95ED" }) : _jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || !value.name.trim(), onClick: () => void onSave(value), children: "\u4FDD\u5B58" })] }), children: [_jsx(FieldGrid, { columns: 2, children: fields.map(([key, label, required]) => _jsx(FormField, { label: label, required: required, full: key === 'address' || key === 'businessProducts', children: _jsx("input", { disabled: disabled, value: String(value[key] ?? ''), onChange: (event) => setValue({ ...value, [key]: event.target.value }) }) }, key)) }), _jsxs("div", { className: "tcw-procurement-audit-meta", children: [_jsx(StatusTag, { tone: value.sanctionStatus === 'HIT' ? 'danger' : 'success', children: sanctionLabels[value.sanctionStatus ?? 'UNCHECKED'] }), _jsxs("span", { children: ["\u6700\u8FD1\u5236\u88C1\u68C0\u67E5\uFF1A", value.complianceCheckedAt || '尚未检查'] }), _jsxs("span", { children: ["\u6700\u540E\u7F16\u8F91\uFF1A", value.updatedByName || '—', " ", value.updatedAt || ''] })] })] });
295
+ }
296
+ function OrderDialog({ state, lines, busy, onClose, onSave }) {
297
+ const [value, setValue] = React.useState(state?.item ?? null);
298
+ React.useEffect(() => setValue(state?.item ?? null), [state]);
299
+ if (!state || !value)
300
+ return null;
301
+ const disabled = state.mode === 'detail';
302
+ const estimated = value.estimatedRefundAmountCny ?? lines.filter((item) => item.purchaseOrderId === value.id).reduce((total, item) => total + estimatedLineRefund(item), 0).toFixed(2);
303
+ const error = amount(value.paidAmountCny) > amount(value.contractAmountCny) ? '已付款不能超过采购订单总额' : amount(value.refundedAmountCny) > amount(estimated) ? '已退税不能超过预计退税总额' : '';
304
+ return _jsxs(Modal, { open: true, title: disabled ? '采购订单详情' : '采购订单审核', size: "wide", onClose: onClose, footer: disabled ? _jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: "\u5173\u95ED" }) : _jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || Boolean(error) || !value.orderDate, onClick: () => void onSave(value), children: "\u4FDD\u5B58" })] }), children: [error && _jsx(RiskNotice, { children: error }), _jsxs(FieldGrid, { columns: 2, children: [_jsx(FormField, { label: "\u91C7\u8D2D\u5408\u540C\u7F16\u53F7", required: true, children: _jsx("input", { disabled: true, value: value.contractNo }) }), _jsx(FormField, { label: "\u4E0B\u5355\u65E5\u671F", required: true, children: _jsx("input", { type: "date", disabled: disabled, value: value.orderDate, onChange: (event) => setValue({ ...value, orderDate: event.target.value }) }) }), _jsx(MoneyField, { label: "\u91C7\u8D2D\u8BA2\u5355\u603B\u989D", disabled: disabled, value: value.contractAmountCny, onChange: (next) => setValue({ ...value, contractAmountCny: next }) }), _jsx(MoneyField, { label: "\u5DF2\u4ED8\u6B3E", disabled: disabled, value: value.paidAmountCny, onChange: (next) => setValue({ ...value, paidAmountCny: next }) }), _jsx(MoneyField, { label: "\u672A\u4ED8\u6B3E", disabled: true, value: String(Math.max(amount(value.contractAmountCny) - amount(value.paidAmountCny), 0)) }), _jsx(MoneyField, { label: "\u5DF2\u9000\u7A0E", disabled: disabled, value: value.refundedAmountCny, onChange: (next) => setValue({ ...value, refundedAmountCny: next }) }), _jsx(MoneyField, { label: "\u9884\u8BA1\u9000\u7A0E\u603B\u989D", disabled: true, value: estimated }), _jsx(MoneyField, { label: "\u672A\u9000\u7A0E", disabled: true, value: String(Math.max(amount(estimated) - amount(value.refundedAmountCny), 0)) }), _jsx(FormField, { label: "\u5339\u914D\u5BA2\u6237\u5408\u540C", children: _jsx("input", { disabled: true, value: value.customerContractNo || '未关联' }) }), _jsx(FormField, { label: "\u6765\u6E90\u6587\u4EF6", children: _jsx("input", { disabled: true, value: value.sourceFileName || '—' }) })] })] });
305
+ }
306
+ function LineDialog({ state, order, busy, onAction, onClose, onSave }) {
307
+ const [value, setValue] = React.useState(state?.item ?? null);
308
+ const [hsOpen, setHsOpen] = React.useState(false);
309
+ React.useEffect(() => setValue(state?.item ?? null), [state]);
310
+ if (!state || !value)
311
+ return null;
312
+ const computedAmount = amount(value.quantity) * amount(value.unitPriceTaxIncluded);
313
+ const errors = validatePurchaseContractReview({ supplier: { name: 'line-review' }, order: order ?? { supplierId: '', contractNo: 'line-review', orderDate: '', contractAmountCny: value.lineAmountTaxIncluded }, lines: [value] })
314
+ .filter((item) => item.startsWith('第1条商品') || item.includes('下单日期'));
315
+ const hsAction = (actionKey, input) => {
316
+ if (actionKey !== 'search_hs_code' && actionKey !== 'get_hs_code_detail')
317
+ return Promise.resolve({ success: false, message: '采购商品仅支持海关编码查询' });
318
+ return onAction(actionKey, input);
319
+ };
320
+ return _jsxs(_Fragment, { children: [_jsxs(Modal, { open: true, title: state.mode === 'create' ? '新增商品' : '采购商品审核', size: "wide", onClose: onClose, footer: _jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || errors.length > 0, onClick: () => void onSave(value), children: "\u4FDD\u5B58" })] }), children: [_jsxs("div", { className: "tcw-procurement-source-label", children: ["\u6765\u6E90\u7C7B\u578B\uFF1A", sourceTypeLabels[value.sourceType]] }), errors.length > 0 && _jsx(RiskNotice, { children: errors.join(';') }), _jsxs(FieldGrid, { columns: 2, children: [_jsx(TextField, { label: "\u5546\u54C1\u540D\u79F0", required: true, value: value.productName, onChange: (next) => setValue({ ...value, productName: next }) }), _jsx(TextField, { label: "\u5546\u54C1\u63CF\u8FF0", value: value.productDescription, onChange: (next) => setValue({ ...value, productDescription: next }) }), _jsx(TextField, { label: "\u89C4\u683C\u578B\u53F7", value: value.modelSpecification, onChange: (next) => setValue({ ...value, modelSpecification: next }) }), _jsx(TextField, { label: "\u5355\u4F4D", required: true, value: value.unit, onChange: (next) => setValue({ ...value, unit: next }) }), _jsx(TextField, { label: "\u6570\u91CF", required: true, type: "number", value: value.quantity, onChange: (next) => setValue({ ...value, quantity: next, lineAmountTaxIncluded: String(amount(next) * amount(value.unitPriceTaxIncluded)) }) }), _jsx(TextField, { label: "\u542B\u7A0E\u5355\u4EF7\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: value.unitPriceTaxIncluded, onChange: (next) => setValue({ ...value, unitPriceTaxIncluded: next, lineAmountTaxIncluded: String(amount(value.quantity) * amount(next)) }) }), _jsx(TextField, { label: "\u542B\u7A0E\u91D1\u989D\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: value.lineAmountTaxIncluded || String(computedAmount), onChange: (next) => setValue({ ...value, lineAmountTaxIncluded: next }) }), _jsx(TextField, { label: "\u589E\u503C\u7A0E\u7387", required: true, type: "number", value: value.vatRate, onChange: (next) => setValue({ ...value, vatRate: next }) }), _jsx(FormField, { label: "\u6D77\u5173\u7F16\u7801", children: _jsxs("div", { className: "tcw-procurement-inline-field", children: [_jsx("input", { value: value.hsCode ?? '', onChange: (event) => setValue({ ...value, hsCode: event.target.value }) }), _jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => setHsOpen(true), children: "HS\u7F16\u7801\u67E5\u8BE2" })] }) }), _jsx(FormField, { label: "\u7F16\u7801\u786E\u8BA4\u72B6\u6001", children: _jsx("select", { value: value.hsCodeStatus ?? 'UNCONFIRMED', onChange: (event) => setValue({ ...value, hsCodeStatus: event.target.value }), children: enumOptions(hsStatusLabels).map((item) => _jsx("option", { value: item.value, children: item.label }, item.value)) }) }), _jsx(TextField, { label: "\u9000\u7A0E\u7387", required: true, type: "number", value: value.refundRate, onChange: (next) => setValue({ ...value, refundRate: next }) }), _jsx(TextField, { label: "\u9000\u7A0E\u653F\u7B56\u4F9D\u636E", required: true, value: value.refundPolicyReference, onChange: (next) => setValue({ ...value, refundPolicyReference: next }) }), _jsx(TextField, { label: "\u653F\u7B56\u65E5\u671F", required: true, type: "date", value: value.refundPolicyDate, onChange: (next) => setValue({ ...value, refundPolicyDate: next, refundValidationMethod: 'REVIEW_CONFIRMED' }) }), _jsx(TextField, { label: "\u82F1\u6587\u540D\u79F0", value: value.englishName, onChange: (next) => setValue({ ...value, englishName: next }) })] })] }), _jsx(HsCodeLookupDialog, { open: hsOpen, initialQuery: value.hsCode || value.englishName || value.productName, onAction: hsAction, onClose: () => setHsOpen(false) })] });
321
+ }
322
+ function PurchaseContractReviewDialog({ open, task, draft, busy, onChange, onClose, onSave }) {
323
+ const errors = draft ? validatePurchaseContractReview(draft) : [];
324
+ const duplicate = task?.duplicateContractError;
325
+ return _jsxs(Modal, { open: open, title: "\u91C7\u8D2D\u5408\u540C\u5BA1\u6838", size: "full", onClose: onClose, footer: _jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: onClose, children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "tcw-button tcw-button--primary", disabled: busy || !draft || Boolean(duplicate) || errors.length > 0, onClick: () => draft && void onSave(draft), children: "\u5BA1\u6838\u5E76\u5165\u5E93" })] }), children: [duplicate && _jsx(RiskNotice, { children: duplicate }), !draft ? _jsx(RiskNotice, { children: task?.errorMessage || '采购合同解析结果不可用' }) : _jsx(ReviewSplit, { editor: _jsxs("div", { className: "tcw-procurement-review-editor", children: [errors.length > 0 && _jsx(RiskNotice, { children: errors.join(';') }), _jsx(ReviewSection, { title: "\u4F9B\u5E94\u5546\u4FE1\u606F", children: _jsx(SupplierDraftEditor, { supplier: draft.supplier, onChange: (supplier) => onChange({ ...draft, supplier }) }) }), _jsx(ReviewSection, { title: "\u8BA2\u5355\u4FE1\u606F", children: _jsxs(FieldGrid, { columns: 2, children: [_jsx(TextField, { label: "\u91C7\u8D2D\u5408\u540C\u7F16\u53F7", required: true, value: draft.order.contractNo, onChange: (value) => onChange({ ...draft, order: { ...draft.order, contractNo: value } }) }), _jsx(TextField, { label: "\u4E0B\u5355\u65E5\u671F", required: true, type: "date", value: draft.order.orderDate, onChange: (value) => onChange({ ...draft, order: { ...draft.order, orderDate: value } }) }), _jsx(TextField, { label: "\u91C7\u8D2D\u603B\u989D\uFF08\u4EBA\u6C11\u5E01\uFF09", required: true, type: "number", value: draft.order.contractAmountCny, onChange: (value) => onChange({ ...draft, order: { ...draft.order, contractAmountCny: value } }) }), _jsx(TextField, { label: "\u5DF2\u4ED8\u6B3E", type: "number", value: draft.order.paidAmountCny, onChange: (value) => onChange({ ...draft, order: { ...draft.order, paidAmountCny: value } }) }), _jsx(TextField, { label: "\u5DF2\u9000\u7A0E", type: "number", value: draft.order.refundedAmountCny, onChange: (value) => onChange({ ...draft, order: { ...draft.order, refundedAmountCny: value } }) })] }) }), _jsx(ReviewSection, { title: `全部商品(${draft.lines.length})`, children: _jsx("div", { className: "tcw-procurement-review-lines", children: draft.lines.map((line, index) => _jsx(ContractLineEditor, { index: index, line: line, onChange: (next) => onChange({ ...draft, lines: draft.lines.map((item, lineIndex) => lineIndex === index ? next : item) }) }, line.id ?? index)) }) })] }), source: _jsx(SourcePreview, { draft: draft, task: task }) })] });
326
+ }
327
+ function ContractLineEditor({ line, index, onChange }) {
328
+ return _jsxs("section", { className: "tcw-procurement-review-line", children: [_jsxs("h4", { children: ["\u5546\u54C1 ", index + 1, " ", _jsx(StatusTag, { tone: "muted", children: sourceTypeLabels[line.sourceType] })] }), _jsxs(FieldGrid, { columns: 2, children: [_jsx(TextField, { label: "\u5546\u54C1\u540D\u79F0", required: true, value: line.productName, onChange: (value) => onChange({ ...line, productName: value }) }), _jsx(TextField, { label: "\u5546\u54C1\u63CF\u8FF0", value: line.productDescription, onChange: (value) => onChange({ ...line, productDescription: value }) }), _jsx(TextField, { label: "\u82F1\u6587\u540D\u79F0", value: line.englishName, onChange: (value) => onChange({ ...line, englishName: value }) }), _jsx(TextField, { label: "\u89C4\u683C\u578B\u53F7", value: line.modelSpecification, onChange: (value) => onChange({ ...line, modelSpecification: value }) }), _jsx(TextField, { label: "\u5355\u4F4D", required: true, value: line.unit, onChange: (value) => onChange({ ...line, unit: value }) }), _jsx(TextField, { label: "\u6570\u91CF", required: true, type: "number", value: line.quantity, onChange: (value) => onChange({ ...line, quantity: value }) }), _jsx(TextField, { label: "\u542B\u7A0E\u5355\u4EF7", required: true, type: "number", value: line.unitPriceTaxIncluded, onChange: (value) => onChange({ ...line, unitPriceTaxIncluded: value }) }), _jsx(TextField, { label: "\u542B\u7A0E\u91D1\u989D", required: true, type: "number", value: line.lineAmountTaxIncluded, onChange: (value) => onChange({ ...line, lineAmountTaxIncluded: value }) }), _jsx(TextField, { label: "\u589E\u503C\u7A0E\u7387", required: true, type: "number", value: line.vatRate, onChange: (value) => onChange({ ...line, vatRate: value }) }), _jsx(TextField, { label: "\u6D77\u5173\u7F16\u7801", value: line.hsCode, onChange: (value) => onChange({ ...line, hsCode: value }) }), _jsx(FormField, { label: "\u7F16\u7801\u786E\u8BA4\u72B6\u6001", children: _jsx("select", { value: line.hsCodeStatus ?? 'UNCONFIRMED', onChange: (event) => onChange({ ...line, hsCodeStatus: event.target.value }), children: enumOptions(hsStatusLabels).map((item) => _jsx("option", { value: item.value, children: item.label }, item.value)) }) }), _jsx(TextField, { label: "\u9000\u7A0E\u7387", required: true, type: "number", value: line.refundRate, onChange: (value) => onChange({ ...line, refundRate: value }) }), _jsx(TextField, { label: "\u9000\u7A0E\u653F\u7B56\u4F9D\u636E", required: true, value: line.refundPolicyReference, onChange: (value) => onChange({ ...line, refundPolicyReference: value }) }), _jsx(TextField, { label: "\u9000\u7A0E\u653F\u7B56\u65E5\u671F", required: true, type: "date", value: line.refundPolicyDate, onChange: (value) => onChange({ ...line, refundPolicyDate: value, refundValidationMethod: 'REVIEW_CONFIRMED' }) }), line.amountMismatch && _jsx(FormField, { label: "\u91D1\u989D\u5DEE\u5F02\u786E\u8BA4", required: true, children: _jsxs("label", { className: "tcw-procurement-checkbox", children: [_jsx("input", { type: "checkbox", checked: Boolean(line.amountMismatchConfirmed), onChange: (event) => onChange({ ...line, amountMismatchConfirmed: event.target.checked }) }), "\u786E\u8BA4\u4FDD\u7559\u5408\u540C\u539F\u59CB\u91D1\u989D"] }) })] })] });
329
+ }
330
+ function SupplierDraftEditor({ supplier, onChange }) {
331
+ const fields = [
332
+ ['code', '供应商代码'], ['name', '供应商名称', true], ['shortName', '简称'], ['countryOrRegion', '国别/地区'], ['address', '地址'], ['contactName', '联系人'], ['phone', '联系电话'], ['wechat', '微信'], ['email', '邮箱'], ['taxNumber', '税号'], ['paymentAccount', '收款账号'], ['bankName', '开户行'], ['taxpayerRating', '纳税等级'], ['website', '公司网站'], ['businessProducts', '经营产品']
333
+ ];
334
+ return _jsx(FieldGrid, { columns: 2, children: fields.map(([key, label, required]) => _jsx(TextField, { label: label, required: required, value: supplier[key], onChange: (value) => onChange({ ...supplier, [key]: value }) }, key)) });
335
+ }
336
+ function SourcePreview({ draft, task }) {
337
+ const explicit = draft.lines.find(line => line.sourceContent)?.sourceContent ?? draft.sourceText;
338
+ const location = draft.lines.find(line => line.sourceContent)?.sourceLocation;
339
+ return _jsxs("div", { className: "tcw-procurement-source", children: [_jsx("strong", { children: draft.sourceFileName || task?.sourceFileName || '采购合同源文件' }), draft.sourceFileUrl ? _jsx("iframe", { src: draft.sourceFileUrl, title: "\u91C7\u8D2D\u5408\u540C\u6E90\u6587\u4EF6" }) : explicit ? _jsxs(_Fragment, { children: [_jsx("small", { children: location || '来源位置未标注' }), _jsx("pre", { children: explicit })] }) : _jsx("pre", { children: "\u6E90\u6587\u4EF6\u6682\u65E0\u6CD5\u5728\u7EBF\u9884\u89C8" })] });
340
+ }
341
+ function DeleteDialog({ target, supplier, busy, onCancel, onConfirm }) {
342
+ const isOrder = target?.entityType === 'purchaseOrder';
343
+ const order = isOrder ? target.item : null;
344
+ const name = target?.entityType === 'supplier' ? target.item.name : target?.entityType === 'purchaseOrder' ? target.item.contractNo : target?.item?.productName;
345
+ return _jsx(ConfirmDialog, { open: Boolean(target), title: isOrder ? '确认删除采购订单?' : `确认删除${target?.entityType === 'supplier' ? '供应商' : '采购商品'}?`, danger: true, confirmText: "\u786E\u8BA4\u5220\u9664", confirmDisabled: busy, onCancel: onCancel, onConfirm: onConfirm, message: _jsxs("div", { className: "tcw-procurement-delete-summary", children: [_jsx("strong", { children: name || '当前记录' }), isOrder && _jsxs(_Fragment, { children: [_jsxs("span", { children: ["\u4F9B\u5E94\u5546\uFF1A", supplier?.name || '—'] }), _jsxs("span", { children: ["\u5546\u54C1\u6761\u6570\uFF1A", order?.lineCount ?? 0] }), _jsxs("span", { children: ["\u91C7\u8D2D\u91D1\u989D\uFF1A", currency(order?.contractAmountCny)] }), _jsxs("span", { children: ["\u5DF2\u4ED8\u6B3E\uFF1A", currency(order?.paidAmountCny)] }), _jsxs("span", { children: ["\u5DF2\u9000\u7A0E\uFF1A", currency(order?.refundedAmountCny)] }), _jsx("b", { children: "\u5220\u9664\u540E\u5C06\u540C\u65F6\u903B\u8F91\u5220\u9664\u8BE5\u8BA2\u5355\u53CA\u5168\u90E8\u5546\u54C1\u660E\u7EC6\uFF1B\u91CD\u65B0\u4E0A\u4F20\u540C\u7F16\u53F7\u5408\u540C\u4F1A\u4F5C\u4E3A\u5168\u65B0\u8BB0\u5F55\uFF0C\u4E0D\u8FC1\u79FB\u65E7\u8BA2\u5355\u4EBA\u5DE5\u6570\u636E\u3002" })] })] }) });
346
+ }
347
+ function ReviewSection({ title, children }) { return _jsxs("section", { className: "tcw-procurement-review-section", children: [_jsx("h3", { children: title }), children] }); }
348
+ function ContextValue({ label, value }) { return _jsxs("div", { children: [_jsx("span", { children: label }), _jsx("strong", { children: String(value || '—') })] }); }
349
+ function LinkButton({ children, onClick }) { return _jsx("button", { type: "button", className: "tcw-procurement-link", onClick: onClick, children: children }); }
350
+ function StatusTag({ children, tone }) { return _jsx("span", { className: `tcw-procurement-status tcw-procurement-status--${tone}`, children: children }); }
351
+ function TextField({ label, value, required, type = 'text', onChange }) { return _jsx(FormField, { label: label, required: required, children: _jsx("input", { type: type, value: String(value ?? ''), onChange: (event) => onChange(event.target.value) }) }); }
352
+ function MoneyField({ label, value, disabled, onChange }) { return _jsx(FormField, { label: label, children: _jsx("input", { type: "number", disabled: disabled, value: String(value ?? ''), onChange: (event) => onChange?.(event.target.value) }) }); }
353
+ function routeCollection(route) { return route.level === 'suppliers' ? 'suppliers' : route.level === 'orders' ? 'purchaseOrders' : 'purchaseLines'; }
354
+ function stateIsCreate(state) { return state?.mode === 'create'; }
355
+ function balance(metrics, row) { return row.id && metrics.orderBalances[row.id] || { unpaidAmountCny: Math.max(amount(row.contractAmountCny) - amount(row.paidAmountCny), 0), unrefundedAmountCny: Math.max(amount(row.estimatedRefundAmountCny) - amount(row.refundedAmountCny), 0) }; }
356
+ function estimatedLineRefund(line) { const divisor = 1 + rate(line.vatRate); return divisor > 0 ? amount(line.lineAmountTaxIncluded) / divisor * rate(line.refundRate) : 0; }
357
+ function amount(value) { const parsed = Number(value ?? 0); return Number.isFinite(parsed) ? parsed : 0; }
358
+ function rate(value) { const parsed = amount(value); return parsed > 1 ? parsed / 100 : parsed; }
359
+ function sum(items, read) { return items.reduce((total, item) => total + amount(read(item)), 0); }
360
+ function blank(value) { return String(value ?? '').trim() === ''; }
361
+ function currency(value) { return `¥${amount(value).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`; }
362
+ function number(value) { return amount(value).toLocaleString('zh-CN'); }
363
+ function percent(value) { return `${(rate(value) * 100).toLocaleString('zh-CN', { maximumFractionDigits: 4 })}%`; }
364
+ function booleanOptions() { return [{ value: 'true', label: '是' }, { value: 'false', label: '否' }]; }
365
+ function enumOptions(labels) { return Object.entries(labels).map(([value, label]) => ({ value, label: String(label) })); }
366
+ function pagination(collection) { const total = collection.total ?? collection.items.length; const pageSize = collection.pageSize ?? PAGE_SIZE; return { page: collection.page ?? 1, pageSize, total, pageCount: Math.max(1, Math.ceil(total / pageSize)) }; }
367
+ function assertSucceeded(result) { if (result.success === false)
368
+ throw new Error(result.message || '采购操作失败'); }
369
+ function errorMessage(cause) { return cause instanceof Error ? cause.message : '采购操作失败'; }
370
+ //# sourceMappingURL=procurement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procurement.js","sourceRoot":"","sources":["../../../../src/lib/remote-ui/pages/procurement.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SalesLineLookupRequest, SalesOrderLineRow, SalesPageProps } from '../sales-contracts.js';
2
+ import { type CatalogActionKey, type CatalogActionResult } from './catalogs.js';
3
+ export declare function SalesPage(props: SalesPageProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function salesLineLookupQuery(line: SalesOrderLineRow, field: 'productName' | 'hsCode'): string;
5
+ export declare function createSalesLineLookupRequest(line: SalesOrderLineRow, field: SalesLineLookupRequest['field']): SalesLineLookupRequest;
6
+ export declare function dispatchSalesLineLookup(line: SalesOrderLineRow, field: SalesLineLookupRequest['field'], onLookup?: SalesPageProps['onSalesLineLookup']): SalesLineLookupRequest;
7
+ export declare function createSalesLineLookupAction(onAction: SalesPageProps['onAction']): (actionKey: CatalogActionKey, input: Record<string, unknown>) => Promise<CatalogActionResult>;
8
+ export declare function SalesProductRiskDialog({ line, onClose }: {
9
+ line: SalesOrderLineRow;
10
+ onClose: () => void;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=sales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sales.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-ui/pages/sales.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0C,sBAAsB,EAAE,iBAAiB,EAAiB,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAG7J,OAAO,EAAsB,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAkBnG,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAyD9C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,GAAG,QAAQ,UAA2E;AAExK,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAEpI;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,mBAAmB,CAAC,0BAItJ;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,IACtE,WAAW,gBAAgB,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAInG;AAED,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,2CAmCzG"}