@asteby/metacore-runtime-react 48.0.0 → 49.1.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/CHANGELOG.md +41 -0
- package/dist/action-modal-dispatcher.d.ts +33 -3
- package/dist/action-modal-dispatcher.d.ts.map +1 -1
- package/dist/action-modal-dispatcher.js +84 -11
- package/dist/action-priority.d.ts +34 -0
- package/dist/action-priority.d.ts.map +1 -0
- package/dist/action-priority.js +60 -0
- package/dist/business/catalog-product-search.d.ts +7 -0
- package/dist/business/catalog-product-search.d.ts.map +1 -1
- package/dist/business/catalog-product-search.js +14 -0
- package/dist/business/document-editor-model.d.ts +14 -2
- package/dist/business/document-editor-model.d.ts.map +1 -1
- package/dist/business/document-editor-model.js +42 -4
- package/dist/business/document-editor.d.ts.map +1 -1
- package/dist/business/document-editor.js +68 -19
- package/dist/business/line-items.d.ts +9 -1
- package/dist/business/line-items.d.ts.map +1 -1
- package/dist/business/line-items.js +8 -1
- package/dist/calendar-date.d.ts +12 -0
- package/dist/calendar-date.d.ts.map +1 -1
- package/dist/calendar-date.js +36 -0
- package/dist/document/document-page.d.ts.map +1 -1
- package/dist/document/document-page.js +8 -1
- package/dist/document/evaluate.d.ts.map +1 -1
- package/dist/document/evaluate.js +17 -1
- package/dist/document/index.d.ts +1 -0
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/index.js +1 -0
- package/dist/document/secondary-bar.d.ts +20 -0
- package/dist/document/secondary-bar.d.ts.map +1 -0
- package/dist/document/secondary-bar.js +44 -0
- package/dist/document/types.d.ts +8 -0
- package/dist/document/types.d.ts.map +1 -1
- package/dist/document-form-dialog.d.ts +23 -2
- package/dist/document-form-dialog.d.ts.map +1 -1
- package/dist/document-form-dialog.js +48 -9
- package/dist/dynamic-columns.d.ts +1 -11
- package/dist/dynamic-columns.d.ts.map +1 -1
- package/dist/dynamic-columns.js +7 -17
- package/dist/dynamic-crud-page.d.ts +19 -0
- package/dist/dynamic-crud-page.d.ts.map +1 -1
- package/dist/dynamic-crud-page.js +6 -5
- package/dist/dynamic-row-actions.d.ts +8 -0
- package/dist/dynamic-row-actions.d.ts.map +1 -1
- package/dist/dynamic-row-actions.js +12 -2
- package/dist/dynamic-table.d.ts.map +1 -1
- package/dist/dynamic-table.js +64 -63
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/primitives/contributions.d.ts +14 -3
- package/dist/primitives/contributions.d.ts.map +1 -1
- package/dist/primitives/contributions.js +50 -13
- package/dist/record-actions.d.ts +21 -0
- package/dist/record-actions.d.ts.map +1 -0
- package/dist/record-actions.js +76 -0
- package/dist/row-actions-menu.d.ts +32 -0
- package/dist/row-actions-menu.d.ts.map +1 -0
- package/dist/row-actions-menu.js +59 -0
- package/dist/slot.d.ts +4 -21
- package/dist/slot.d.ts.map +1 -1
- package/dist/slot.js +14 -36
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/document-editor-model.test.ts +55 -1
- package/src/__tests__/document-editor.test.tsx +80 -1
- package/src/__tests__/document-form-create-model.test.tsx +143 -0
- package/src/__tests__/document-form-dialog.test.tsx +40 -0
- package/src/__tests__/field-default-today.test.tsx +116 -0
- package/src/__tests__/prefill-scalar-from-record.test.ts +52 -1
- package/src/__tests__/row-action-link-navigation.test.ts +17 -0
- package/src/__tests__/secondary-actions.test.tsx +261 -0
- package/src/action-modal-dispatcher.tsx +97 -17
- package/src/action-priority.ts +82 -0
- package/src/business/business.test.ts +1 -1
- package/src/business/catalog-product-search.ts +18 -0
- package/src/business/document-editor-model.ts +48 -6
- package/src/business/document-editor.tsx +75 -20
- package/src/business/line-items.ts +16 -1
- package/src/calendar-date.ts +36 -0
- package/src/document/document-page.tsx +15 -0
- package/src/document/evaluate.ts +17 -1
- package/src/document/index.ts +1 -0
- package/src/document/secondary-bar.tsx +92 -0
- package/src/document/types.ts +8 -0
- package/src/document-form-dialog.tsx +67 -8
- package/src/dynamic-columns.tsx +13 -57
- package/src/dynamic-crud-page.tsx +31 -4
- package/src/dynamic-row-actions.tsx +12 -2
- package/src/dynamic-table.tsx +3 -0
- package/src/index.ts +31 -0
- package/src/primitives/contributions.ts +59 -12
- package/src/record-actions.ts +101 -0
- package/src/row-actions-menu.tsx +159 -0
- package/src/slot.tsx +18 -53
- package/src/types.ts +35 -0
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asteby/metacore-runtime-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "49.1.0",
|
|
4
4
|
"description": "React runtime for metacore hosts — renders addon contributions dynamically",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"zod": "^4.3.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@asteby/metacore-sdk": "^3.
|
|
29
|
+
"@asteby/metacore-sdk": "^3.14.0",
|
|
30
30
|
"@asteby/metacore-ui": "^2.24.1",
|
|
31
31
|
"@tanstack/react-query": ">=5",
|
|
32
32
|
"@tanstack/react-router": ">=1.100",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@asteby/metacore-sdk": "3.
|
|
53
|
+
"@asteby/metacore-sdk": "3.14.0",
|
|
54
54
|
"@asteby/metacore-ui": "2.24.1",
|
|
55
55
|
"@tanstack/react-query": "^5.95.0",
|
|
56
56
|
"@tanstack/react-router": "^1.168.0",
|
|
@@ -9,13 +9,15 @@ import {
|
|
|
9
9
|
isEditorLayout,
|
|
10
10
|
linesFromSource,
|
|
11
11
|
localIssues,
|
|
12
|
+
sourceLoadSummary,
|
|
13
|
+
sourceTracksRemaining,
|
|
12
14
|
overdueDays,
|
|
13
15
|
partyDefaults,
|
|
14
16
|
partySummaryRows,
|
|
15
17
|
splitEditorFields,
|
|
16
18
|
toOpenDocuments,
|
|
17
19
|
} from '../business/document-editor-model'
|
|
18
|
-
import { makeLine } from '../business/line-items'
|
|
20
|
+
import { makeLine, serializeLineItems } from '../business/line-items'
|
|
19
21
|
import { allocatePayment, validateAllocation } from '../primitives/allocation'
|
|
20
22
|
import type { ActionFieldDef, DocumentFormOpenDocuments } from '../types'
|
|
21
23
|
|
|
@@ -55,6 +57,10 @@ describe('layout y renglones', () => {
|
|
|
55
57
|
expect(isEditorLayout({ layout: 'editor' })).toBe(true)
|
|
56
58
|
expect(isEditorLayout({ layout: 'wizard' })).toBe(false)
|
|
57
59
|
expect(isEditorLayout({})).toBe(false)
|
|
60
|
+
// Un tipo con «Cargar desde…» usa el editor salvo wizard explícito.
|
|
61
|
+
const src = [{ key: 'sale', label: 'Venta', model: 'customers.SalesOrder', lines: 'items' }]
|
|
62
|
+
expect(isEditorLayout({ sources: src })).toBe(true)
|
|
63
|
+
expect(isEditorLayout({ layout: 'wizard', sources: src })).toBe(false)
|
|
58
64
|
})
|
|
59
65
|
it('allocation usa `allocations` por defecto; el manifest manda', () => {
|
|
60
66
|
const base = { key: 'p', label: 'P', fields: [] }
|
|
@@ -165,3 +171,51 @@ describe('cobro / REP (allocation)', () => {
|
|
|
165
171
|
expect(overdueDays({ due_at: null })).toBe(0)
|
|
166
172
|
})
|
|
167
173
|
})
|
|
174
|
+
|
|
175
|
+
describe('linesFromSource con lo pendiente («crear desde»)', () => {
|
|
176
|
+
it('la cantidad sugerida y el tope son remaining_quantity; lo ya cubierto se omite; guarda el renglón origen', () => {
|
|
177
|
+
const rows = [
|
|
178
|
+
{ id: 'a', source_line_id: 'a', product_id: 'p1', product_name: 'Llanta', quantity: 4, remaining_quantity: 1, unit_price: 1500, discount: 5, tax_rate: 0.16 },
|
|
179
|
+
{ id: 'b', source_line_id: 'b', product_name: 'Balanceo', quantity: 2, remaining_quantity: 0, unit_price: 100 },
|
|
180
|
+
]
|
|
181
|
+
const lines = linesFromSource(rows, { description: 'product_name' })
|
|
182
|
+
expect(lines).toHaveLength(1)
|
|
183
|
+
expect(lines[0]).toMatchObject({ product_id: 'p1', description: 'Llanta', quantity: 1, max_quantity: 1, unit_price: 1500, discount: 5, tax_rate: 0.16, source_line_id: 'a' })
|
|
184
|
+
expect(sourceLoadSummary(rows)).toEqual({ loaded: 1, covered: 1 })
|
|
185
|
+
})
|
|
186
|
+
it('sin remaining_quantity conserva la cantidad del origen y usa su id como vínculo', () => {
|
|
187
|
+
const [l] = linesFromSource([{ id: 'x', description: 'Servicio', quantity: 3, unit_price: 10 }])
|
|
188
|
+
expect(l.quantity).toBe(3)
|
|
189
|
+
expect(l.max_quantity).toBeUndefined()
|
|
190
|
+
expect(l.source_line_id).toBe('x')
|
|
191
|
+
})
|
|
192
|
+
it('localIssues marca la cantidad que excede lo pendiente', () => {
|
|
193
|
+
const l = { ...makeLine({ description: 'Llanta', quantity: 3, unit_price: 10 }), max_quantity: 2 }
|
|
194
|
+
expect(localIssues([l]).some((i) => i.severity === 'error' && i.message.includes('excede lo pendiente'))).toBe(true)
|
|
195
|
+
})
|
|
196
|
+
it('sourceTracksRemaining: solo con line_link_field, remaining_qty_field o remaining_endpoint', () => {
|
|
197
|
+
expect(sourceTracksRemaining({ line_link_field: 'sales_order_item_id' })).toBe(true)
|
|
198
|
+
expect(sourceTracksRemaining({ remaining_endpoint: '/x' })).toBe(true)
|
|
199
|
+
expect(sourceTracksRemaining({})).toBe(false)
|
|
200
|
+
})
|
|
201
|
+
})
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
describe('serializeLineItems con vínculo al renglón origen', () => {
|
|
205
|
+
it('escribe source_line_id en la columna line_link_field y no en renglones libres', () => {
|
|
206
|
+
const linked = { ...makeLine({ description: 'Llanta', quantity: 1, unit_price: 10 }), source_line_id: 'soi-1' }
|
|
207
|
+
const free = makeLine({ description: 'Flete', quantity: 1, unit_price: 50 })
|
|
208
|
+
const [a, b] = serializeLineItems([linked, free], { sourceLineField: 'sales_order_item_id' })
|
|
209
|
+
expect(a.sales_order_item_id).toBe('soi-1')
|
|
210
|
+
expect(b.sales_order_item_id).toBeUndefined()
|
|
211
|
+
expect(serializeLineItems([linked])[0].sales_order_item_id).toBeUndefined()
|
|
212
|
+
})
|
|
213
|
+
it('lleva subtotal e impuesto calculados (modelos de renglón sin tasa)', () => {
|
|
214
|
+
const l = { ...makeLine({ description: 'Llanta', quantity: 2, unit_price: 100, discount: 20, tax_rate: 0.16 }), discount_kind: 'amount' as const }
|
|
215
|
+
expect(serializeLineItems([l])[0]).toMatchObject({ subtotal: 180, tax_amount: 28.8, discount: 20, discount_kind: 'amount' })
|
|
216
|
+
})
|
|
217
|
+
it('linesFromSource con discount_mode amount conserva el descuento como importe', () => {
|
|
218
|
+
const [l] = linesFromSource([{ id: 'a', quantity: 2, unit_price: 100, discount: 20, remaining_quantity: 2 }], {}, { discountMode: 'amount' })
|
|
219
|
+
expect(l.discount_kind).toBe('amount')
|
|
220
|
+
})
|
|
221
|
+
})
|
|
@@ -252,10 +252,89 @@ describe('DocumentFormDialog + layout: editor', () => {
|
|
|
252
252
|
unmount()
|
|
253
253
|
render(
|
|
254
254
|
<ApiProvider client={api.client}>
|
|
255
|
-
<DocumentFormDialog open onOpenChange={() => {}} model="customers.Invoice" forms={{ ...forms, types: [{ ...invoice, layout: undefined }] }} />
|
|
255
|
+
<DocumentFormDialog open onOpenChange={() => {}} model="customers.Invoice" forms={{ ...forms, types: [{ ...invoice, layout: undefined, sources: undefined }] }} />
|
|
256
256
|
</ApiProvider>,
|
|
257
257
|
)
|
|
258
258
|
expect(document.querySelector('[data-slot="document-editor"]')).toBeNull()
|
|
259
259
|
expect(screen.getByRole('button', { name: 'Siguiente' })).toBeTruthy()
|
|
260
260
|
})
|
|
261
|
+
|
|
262
|
+
it('un tipo con sources usa el editor («Cargar desde…») salvo layout: wizard explícito', () => {
|
|
263
|
+
const api = makeApi()
|
|
264
|
+
const { unmount } = render(
|
|
265
|
+
<ApiProvider client={api.client}>
|
|
266
|
+
<DocumentFormDialog open onOpenChange={() => {}} model="customers.Invoice" forms={{ ...forms, types: [{ ...invoice, layout: undefined }] }} />
|
|
267
|
+
</ApiProvider>,
|
|
268
|
+
)
|
|
269
|
+
expect(document.querySelector('[data-slot="load-from-source"]')).toBeTruthy()
|
|
270
|
+
unmount()
|
|
271
|
+
render(
|
|
272
|
+
<ApiProvider client={api.client}>
|
|
273
|
+
<DocumentFormDialog open onOpenChange={() => {}} model="customers.Invoice" forms={{ ...forms, types: [{ ...invoice, layout: 'wizard' }] }} />
|
|
274
|
+
</ApiProvider>,
|
|
275
|
+
)
|
|
276
|
+
expect(document.querySelector('[data-slot="document-editor"]')).toBeNull()
|
|
277
|
+
})
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
describe('DocumentEditor — «crear desde» con lo pendiente del servidor', () => {
|
|
281
|
+
const tracked: DocumentFormType = {
|
|
282
|
+
...invoice,
|
|
283
|
+
sources: [{ ...invoice.sources![0], line_link_field: 'sales_order_item_id', exclude_states: ['cancelled'] }],
|
|
284
|
+
}
|
|
285
|
+
const pendingRows = {
|
|
286
|
+
data: [
|
|
287
|
+
{ id: 'soi-1', source_line_id: 'soi-1', product_id: 'p1', product_name: 'Llanta 205/55R16', quantity: 4, remaining_quantity: 1, unit_price: 1500, discount: 0, tax_rate: 0.16 },
|
|
288
|
+
{ id: 'soi-2', source_line_id: 'soi-2', product_id: 'p2', product_name: 'Balanceo', quantity: 4, remaining_quantity: 0, unit_price: 100, tax_rate: 0.16 },
|
|
289
|
+
],
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
it('precarga lo pendiente (no lo vendido), omite lo ya facturado y guarda el vínculo por renglón', async () => {
|
|
293
|
+
const api = makeApi({
|
|
294
|
+
'/dynamic/customers.Invoice/source-lines': pendingRows,
|
|
295
|
+
'/data/customers.SalesOrder': { data: [{ id: 'so-1' }] },
|
|
296
|
+
})
|
|
297
|
+
renderEditor(tracked, api, { initialSource: { key: 'sales_order', id: 'so-1' } })
|
|
298
|
+
await screen.findByDisplayValue('Llanta 205/55R16')
|
|
299
|
+
expect(screen.queryByDisplayValue('Balanceo')).toBeNull()
|
|
300
|
+
expect(api.get).toHaveBeenCalledWith('/dynamic/customers.Invoice/source-lines', { params: { source: 'sales_order', id: 'so-1' } })
|
|
301
|
+
expect(await screen.findByText('1 renglones con lo pendiente · 1 ya cubiertos se omitieron')).toBeTruthy()
|
|
302
|
+
})
|
|
303
|
+
|
|
304
|
+
it('si el host aún no sirve source-lines (404) cae a la relación del origen', async () => {
|
|
305
|
+
const api = makeApi({
|
|
306
|
+
'/dynamic/customers.Invoice/source-lines': () => {
|
|
307
|
+
throw { response: { status: 404 } }
|
|
308
|
+
},
|
|
309
|
+
'/metadata/table/customers.SalesOrder': { data: { relations: [{ name: 'items', kind: 'one_to_many', through: 'customers.SalesOrderItem', foreign_key: 'sales_order_id' }] } },
|
|
310
|
+
'/data/customers.SalesOrderItem': { data: [{ id: 'soi-1', product_id: 'p1', product_name: 'Llanta 205/55R16', quantity: 4, unit_price: 1500, tax_rate: 0.16 }] },
|
|
311
|
+
})
|
|
312
|
+
renderEditor(tracked, api, { initialSource: { key: 'sales_order', id: 'so-1' } })
|
|
313
|
+
await screen.findByDisplayValue('Llanta 205/55R16')
|
|
314
|
+
})
|
|
315
|
+
|
|
316
|
+
it('el rechazo del servidor por exceso se muestra con su mensaje en español', async () => {
|
|
317
|
+
const post = vi.fn().mockRejectedValue({
|
|
318
|
+
response: {
|
|
319
|
+
status: 422,
|
|
320
|
+
data: {
|
|
321
|
+
success: false,
|
|
322
|
+
message: 'validation failed',
|
|
323
|
+
errors: { 'lines.0.quantity': [{ code: 'exceeds_remaining', message: 'Renglón 1: la cantidad 1 excede lo pendiente de «Venta» (0).' }] },
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
})
|
|
327
|
+
const api = makeApi({ '/dynamic/customers.Invoice/source-lines': pendingRows, '/data/customers.SalesOrder': { data: [{ id: 'so-1', customer_name: 'ACME' }] } }, post)
|
|
328
|
+
renderEditor(
|
|
329
|
+
{ ...tracked, sources: [{ ...tracked.sources![0], header: { customer_name: 'customer_name' } }] },
|
|
330
|
+
api,
|
|
331
|
+
{ initialSource: { key: 'sales_order', id: 'so-1' } },
|
|
332
|
+
)
|
|
333
|
+
await screen.findByDisplayValue('ACME')
|
|
334
|
+
fireEvent.click(screen.getByRole('button', { name: 'Guardar factura' }))
|
|
335
|
+
await waitFor(() => expect(post).toHaveBeenCalled())
|
|
336
|
+
const [, body] = post.mock.calls[0] as [string, any]
|
|
337
|
+
expect(body.lines).toEqual([expect.objectContaining({ product_id: 'p1', quantity: 1, sales_order_item_id: 'soi-1' })])
|
|
338
|
+
expect(await screen.findByText(/excede lo pendiente de «Venta»/)).toBeTruthy()
|
|
339
|
+
})
|
|
261
340
|
})
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
// Retest r4 Pitsline (06/10): Documentos fiscales → Facturas se quedó sin
|
|
3
|
+
// «Crear» (#1048 lo oculta: FiscalDocument no tiene formulario de factura). Un
|
|
4
|
+
// tipo con `create_model` delega el alta a otro modelo (customers.Invoice): el
|
|
5
|
+
// host abre esa página con su alta abierta.
|
|
6
|
+
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
7
|
+
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
|
|
8
|
+
|
|
9
|
+
vi.mock('@tanstack/react-router', () => ({ useNavigate: () => () => {} }))
|
|
10
|
+
vi.mock('react-i18next', () => {
|
|
11
|
+
const i18n = { language: 'es' }
|
|
12
|
+
const t = (k: string, o?: { defaultValue?: string }) => o?.defaultValue ?? k
|
|
13
|
+
const value = { t, i18n }
|
|
14
|
+
return { useTranslation: () => value }
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
DocumentFormDialog,
|
|
19
|
+
delegatedCreate,
|
|
20
|
+
scopeDocumentFormsToFilter,
|
|
21
|
+
withoutDelegatedTypes,
|
|
22
|
+
} from '../document-form-dialog'
|
|
23
|
+
import { DynamicCRUDPage } from '../dynamic-crud-page'
|
|
24
|
+
import { useMetadataCache } from '../metadata-cache'
|
|
25
|
+
import { ApiProvider, type ApiClient } from '../api-context'
|
|
26
|
+
import type { DocumentFormsManifest } from '../types'
|
|
27
|
+
|
|
28
|
+
afterEach(cleanup)
|
|
29
|
+
|
|
30
|
+
// Forma de fiscal_mexico FiscalDocument: el REP se crea aquí, la factura en customers.
|
|
31
|
+
const fiscalForms: DocumentFormsManifest = {
|
|
32
|
+
type_field: 'document_type',
|
|
33
|
+
types: [
|
|
34
|
+
{
|
|
35
|
+
key: 'payment_complement',
|
|
36
|
+
label: 'Complemento de pago',
|
|
37
|
+
value: 'payment_complement',
|
|
38
|
+
fields: [{ key: 'amount', label: 'Monto', type: 'number', required: true }],
|
|
39
|
+
},
|
|
40
|
+
{ key: 'invoice', label: 'Factura', value: 'invoice', fields: [], create_model: 'customers.Invoice' },
|
|
41
|
+
],
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function client(): ApiClient {
|
|
45
|
+
return {
|
|
46
|
+
get: vi.fn().mockResolvedValue({ data: {} }),
|
|
47
|
+
post: vi.fn().mockResolvedValue({ data: { success: true } }),
|
|
48
|
+
put: vi.fn(),
|
|
49
|
+
delete: vi.fn(),
|
|
50
|
+
} as unknown as ApiClient
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
describe('create_model: alta delegada', () => {
|
|
54
|
+
it('la vista Facturas (filtro document_type=invoice) conserva el tipo delegado y no oculta Crear', () => {
|
|
55
|
+
const scoped = scopeDocumentFormsToFilter(fiscalForms, { document_type: 'eq:invoice' })
|
|
56
|
+
expect(scoped.hideCreate).toBe(false)
|
|
57
|
+
expect(delegatedCreate(scoped.forms)).toMatchObject({ model: 'customers.Invoice', type: { key: 'invoice' } })
|
|
58
|
+
// REP sigue igual: tipo con formulario propio, sin delegación.
|
|
59
|
+
expect(delegatedCreate(scopeDocumentFormsToFilter(fiscalForms, { document_type: 'payment_complement' }).forms)).toBeUndefined()
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('sin host que sepa navegar, el tipo delegado no se ofrece (vista acotada a él = sin Crear)', () => {
|
|
63
|
+
const forms = withoutDelegatedTypes(fiscalForms)
|
|
64
|
+
expect(forms?.types.map((x) => x.key)).toEqual(['payment_complement'])
|
|
65
|
+
expect(scopeDocumentFormsToFilter(forms, { document_type: 'invoice' }).hideCreate).toBe(true)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('el diálogo con el tipo delegado no pinta formulario: llama al host y se cierra', async () => {
|
|
69
|
+
const onDelegateCreate = vi.fn()
|
|
70
|
+
const onOpenChange = vi.fn()
|
|
71
|
+
render(
|
|
72
|
+
<ApiProvider client={client()}>
|
|
73
|
+
<DocumentFormDialog
|
|
74
|
+
open
|
|
75
|
+
onOpenChange={onOpenChange}
|
|
76
|
+
model="fiscal_documents"
|
|
77
|
+
forms={fiscalForms}
|
|
78
|
+
initialType="invoice"
|
|
79
|
+
onDelegateCreate={onDelegateCreate}
|
|
80
|
+
/>
|
|
81
|
+
</ApiProvider>,
|
|
82
|
+
)
|
|
83
|
+
await waitFor(() => expect(onDelegateCreate).toHaveBeenCalledTimes(1))
|
|
84
|
+
expect(onDelegateCreate.mock.calls[0][0]).toMatchObject({ model: 'customers.Invoice', type: { key: 'invoice' } })
|
|
85
|
+
expect(onOpenChange).toHaveBeenCalledWith(false)
|
|
86
|
+
expect(document.querySelector('[data-slot="document-form-dialog"]')).toBeNull()
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
it('con varios tipos, elegir la tarjeta delegada navega; sin callback la tarjeta no aparece', async () => {
|
|
90
|
+
const onDelegateCreate = vi.fn()
|
|
91
|
+
render(
|
|
92
|
+
<ApiProvider client={client()}>
|
|
93
|
+
<DocumentFormDialog open onOpenChange={() => {}} model="fiscal_documents" forms={fiscalForms} onDelegateCreate={onDelegateCreate} />
|
|
94
|
+
</ApiProvider>,
|
|
95
|
+
)
|
|
96
|
+
fireEvent.click(screen.getByText('Factura'))
|
|
97
|
+
await waitFor(() => expect(onDelegateCreate).toHaveBeenCalled())
|
|
98
|
+
cleanup()
|
|
99
|
+
render(
|
|
100
|
+
<ApiProvider client={client()}>
|
|
101
|
+
<DocumentFormDialog open onOpenChange={() => {}} model="fiscal_documents" forms={fiscalForms} />
|
|
102
|
+
</ApiProvider>,
|
|
103
|
+
)
|
|
104
|
+
// Un solo tipo restante (REP): se salta el selector.
|
|
105
|
+
expect(screen.queryByText('Factura')).toBeNull()
|
|
106
|
+
expect(screen.getByText('Monto')).toBeTruthy()
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
it('DynamicCRUDPage: en Facturas «Crear» delega al host', async () => {
|
|
110
|
+
const m = {
|
|
111
|
+
title: 'Documentos fiscales',
|
|
112
|
+
endpoint: '/data/x',
|
|
113
|
+
columns: [],
|
|
114
|
+
actions: [],
|
|
115
|
+
perPageOptions: [10],
|
|
116
|
+
defaultPerPage: 10,
|
|
117
|
+
searchPlaceholder: 'Buscar',
|
|
118
|
+
enableCRUDActions: true,
|
|
119
|
+
hasActions: false,
|
|
120
|
+
canExport: false,
|
|
121
|
+
canImport: false,
|
|
122
|
+
document_forms: fiscalForms,
|
|
123
|
+
} as any
|
|
124
|
+
useMetadataCache.getState().setMetadata('fiscal_documents', m)
|
|
125
|
+
const api = {
|
|
126
|
+
get: vi.fn(async (url: string) =>
|
|
127
|
+
url.startsWith('/metadata/') ? { data: { success: true, data: m } } : { data: { success: true, data: [], meta: { total: 0 } } },
|
|
128
|
+
),
|
|
129
|
+
post: vi.fn(),
|
|
130
|
+
put: vi.fn(),
|
|
131
|
+
delete: vi.fn(),
|
|
132
|
+
} as unknown as ApiClient
|
|
133
|
+
const onDelegateCreate = vi.fn()
|
|
134
|
+
render(
|
|
135
|
+
<ApiProvider client={api}>
|
|
136
|
+
<DynamicCRUDPage model="fiscal_documents" filter={{ document_type: 'invoice' }} onDelegateCreate={onDelegateCreate} />
|
|
137
|
+
</ApiProvider>,
|
|
138
|
+
)
|
|
139
|
+
fireEvent.click((await screen.findByText(/New Documentos/)).closest('button')!)
|
|
140
|
+
await waitFor(() => expect(onDelegateCreate).toHaveBeenCalled())
|
|
141
|
+
expect(onDelegateCreate.mock.calls[0][0].model).toBe('customers.Invoice')
|
|
142
|
+
})
|
|
143
|
+
})
|
|
@@ -207,6 +207,46 @@ describe('DocumentFormDialog: buscador de catálogo por defecto', () => {
|
|
|
207
207
|
})
|
|
208
208
|
})
|
|
209
209
|
|
|
210
|
+
// Retest Pitsline 2026-10-05 (FAC-00013): el buscador de ops no trae tasa y el
|
|
211
|
+
// renglón entraba sin IVA; el producto sin tasa toma la de la org.
|
|
212
|
+
describe('DocumentFormDialog: IVA de la org con el buscador del host', () => {
|
|
213
|
+
it('producto sin tasa → IVA de la org; con tasa propia → la suya', async () => {
|
|
214
|
+
const searchProducts = vi.fn(async () => [
|
|
215
|
+
{ id: 'p1', name: 'Llanta host', price: 200 },
|
|
216
|
+
{ id: 'p2', name: 'Frontera host', price: 100, tax_rate: 0.08 },
|
|
217
|
+
])
|
|
218
|
+
const post = vi.fn().mockResolvedValue({ data: { success: true, data: { id: 'inv-1' } } })
|
|
219
|
+
const client = { get: vi.fn(), post, put: vi.fn(), delete: vi.fn() } as unknown as ApiClient
|
|
220
|
+
render(
|
|
221
|
+
<ApiProvider client={client}>
|
|
222
|
+
<OrgRuntimeProvider taxRate={0.16}>
|
|
223
|
+
<DocumentFormDialog
|
|
224
|
+
open
|
|
225
|
+
onOpenChange={vi.fn()}
|
|
226
|
+
model="customers.Invoice"
|
|
227
|
+
forms={{ ...forms, lines_field: 'items', types: [forms.types[0]] }}
|
|
228
|
+
searchProducts={searchProducts as any}
|
|
229
|
+
/>
|
|
230
|
+
</OrgRuntimeProvider>
|
|
231
|
+
</ApiProvider>,
|
|
232
|
+
)
|
|
233
|
+
fireEvent.change(document.querySelectorAll('input')[0], { target: { value: 'ACME' } })
|
|
234
|
+
fireEvent.click(screen.getByRole('button', { name: 'Siguiente' }))
|
|
235
|
+
const search = await screen.findByLabelText('Buscar producto')
|
|
236
|
+
fireEvent.change(search, { target: { value: 'host' } })
|
|
237
|
+
fireEvent.click(await waitFor(() => screen.getByRole('button', { name: /Llanta host/ }), { timeout: 2000 }))
|
|
238
|
+
fireEvent.change(await screen.findByLabelText('Buscar producto'), { target: { value: 'fron' } })
|
|
239
|
+
fireEvent.click(await waitFor(() => screen.getByRole('button', { name: /Frontera host/ }), { timeout: 2000 }))
|
|
240
|
+
fireEvent.click(screen.getByRole('button', { name: 'Crear' }))
|
|
241
|
+
await waitFor(() => expect(post).toHaveBeenCalled())
|
|
242
|
+
const body = post.mock.calls[0][1] as any
|
|
243
|
+
expect(body.items).toEqual([
|
|
244
|
+
expect.objectContaining({ product_id: 'p1', quantity: 1, unit_price: 200, tax_rate: 0.16 }),
|
|
245
|
+
expect.objectContaining({ product_id: 'p2', quantity: 1, unit_price: 100, tax_rate: 0.08 }),
|
|
246
|
+
])
|
|
247
|
+
})
|
|
248
|
+
})
|
|
249
|
+
|
|
210
250
|
describe('resolveDocumentForms', () => {
|
|
211
251
|
it('sin manifest (o sin tipos) devuelve undefined: el alta genérica sigue igual', () => {
|
|
212
252
|
expect(resolveDocumentForms(null)).toBeUndefined()
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
// Retest r4 Pitsline (06/10, FAC-00014): la factura del wizard se guardó con
|
|
3
|
+
// fecha 26/27 sep. `invoice_date` no tenía default: el campo nacía vacío, era
|
|
4
|
+
// obligatorio y el calendario abría en octubre con 27–30 sep en la primera fila
|
|
5
|
+
// (showOutsideDays). Un campo fecha puede declarar `default: "$today"` y nace
|
|
6
|
+
// con el día de HOY en la zona de la org, no la del navegador ni UTC.
|
|
7
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
8
|
+
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
|
|
9
|
+
|
|
10
|
+
vi.mock('@tanstack/react-router', () => ({ useNavigate: () => () => {} }))
|
|
11
|
+
vi.mock('react-i18next', () => {
|
|
12
|
+
const i18n = { language: 'es' }
|
|
13
|
+
const t = (k: string, o?: { defaultValue?: string }) => o?.defaultValue ?? k
|
|
14
|
+
const value = { t, i18n }
|
|
15
|
+
return { useTranslation: () => value }
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
import { buildFieldDefaults, resolveFieldDefault } from '../action-modal-dispatcher'
|
|
19
|
+
import { isTodayToken, todayInZone } from '../calendar-date'
|
|
20
|
+
import { DocumentFormDialog } from '../document-form-dialog'
|
|
21
|
+
import { ApiProvider, type ApiClient } from '../api-context'
|
|
22
|
+
import { OrgRuntimeProvider } from '../org-runtime-provider'
|
|
23
|
+
import type { ActionFieldDef, DocumentFormsManifest } from '../types'
|
|
24
|
+
|
|
25
|
+
// 20:00 del 6 de octubre en Ciudad de México = 02:00Z del 7.
|
|
26
|
+
const EVENING_MX = new Date('2026-10-07T02:00:00Z')
|
|
27
|
+
|
|
28
|
+
describe('todayInZone', () => {
|
|
29
|
+
it('es el día de la zona de la org, no el de UTC', () => {
|
|
30
|
+
expect(todayInZone('America/Mexico_City', EVENING_MX)).toBe('2026-10-06')
|
|
31
|
+
expect(todayInZone('UTC', EVENING_MX)).toBe('2026-10-07')
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('zona inválida → día del navegador (no revienta)', () => {
|
|
35
|
+
expect(todayInZone('Nope/Nowhere', EVENING_MX)).toMatch(/^\d{4}-\d{2}-\d{2}$/)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('reconoce $today / today', () => {
|
|
39
|
+
expect(isTodayToken('$today')).toBe(true)
|
|
40
|
+
expect(isTodayToken(' TODAY ')).toBe(true)
|
|
41
|
+
expect(isTodayToken('2026-10-06')).toBe(false)
|
|
42
|
+
expect(isTodayToken(undefined)).toBe(false)
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
describe('buildFieldDefaults con default declarado', () => {
|
|
47
|
+
const ctx = { timeZone: 'America/Mexico_City', now: EVENING_MX }
|
|
48
|
+
|
|
49
|
+
it('un campo fecha con default "$today" nace con hoy en la zona de la org', () => {
|
|
50
|
+
const fields = [
|
|
51
|
+
{ key: 'invoice_date', label: 'Fecha de emisión', type: 'date', required: true, default: '$today' },
|
|
52
|
+
] as unknown as ActionFieldDef[]
|
|
53
|
+
expect(buildFieldDefaults(fields, undefined, undefined, ctx)).toEqual({ invoice_date: '2026-10-06' })
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
it('lee `default` (manifest) además de `defaultValue` (host)', () => {
|
|
57
|
+
const fields = [
|
|
58
|
+
{ key: 'metodo', label: 'Método', type: 'select', default: 'PUE' },
|
|
59
|
+
{ key: 'forma', label: 'Forma', type: 'select', defaultValue: '01' },
|
|
60
|
+
] as unknown as ActionFieldDef[]
|
|
61
|
+
expect(buildFieldDefaults(fields, undefined, undefined, ctx)).toEqual({ metodo: 'PUE', forma: '01' })
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
it('un $token desconocido nunca entra a un campo fecha; sin default sigue vacío', () => {
|
|
65
|
+
const unknown = { key: 'd', label: 'D', type: 'date', default: '$yesterday' } as unknown as ActionFieldDef
|
|
66
|
+
expect(resolveFieldDefault(unknown, ctx)).toBeUndefined()
|
|
67
|
+
const fields = [unknown, { key: 'notes', label: 'Notas', type: 'textarea' }] as unknown as ActionFieldDef[]
|
|
68
|
+
expect(buildFieldDefaults(fields, undefined, undefined, ctx)).toEqual({ d: '', notes: '' })
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
it('una fecha fija declarada se respeta tal cual', () => {
|
|
72
|
+
const f = { key: 'd', label: 'D', type: 'date', default: '2026-01-01' } as unknown as ActionFieldDef
|
|
73
|
+
expect(resolveFieldDefault(f, ctx)).toBe('2026-01-01')
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
describe('DocumentFormDialog — fecha de emisión por defecto', () => {
|
|
78
|
+
beforeEach(() => {
|
|
79
|
+
vi.useFakeTimers({ toFake: ['Date'] })
|
|
80
|
+
vi.setSystemTime(EVENING_MX)
|
|
81
|
+
})
|
|
82
|
+
afterEach(() => {
|
|
83
|
+
vi.useRealTimers()
|
|
84
|
+
cleanup()
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
const forms: DocumentFormsManifest = {
|
|
88
|
+
types: [
|
|
89
|
+
{
|
|
90
|
+
key: 'invoice',
|
|
91
|
+
label: 'Factura',
|
|
92
|
+
value: 'I',
|
|
93
|
+
fields: [
|
|
94
|
+
{ key: 'customer_name', label: 'Cliente', type: 'text', required: true },
|
|
95
|
+
{ key: 'invoice_date', label: 'Fecha de emisión', type: 'date', required: true, default: '$today' },
|
|
96
|
+
] as unknown as ActionFieldDef[],
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
it('sin tocar la fecha, el alta viaja con hoy en la zona de la org', async () => {
|
|
102
|
+
const post = vi.fn().mockResolvedValue({ data: { success: true, data: { id: '1' } } })
|
|
103
|
+
const client = { get: vi.fn().mockResolvedValue({ data: {} }), post, put: vi.fn(), delete: vi.fn() } as unknown as ApiClient
|
|
104
|
+
render(
|
|
105
|
+
<ApiProvider client={client}>
|
|
106
|
+
<OrgRuntimeProvider timeZone="America/Mexico_City">
|
|
107
|
+
<DocumentFormDialog open onOpenChange={() => {}} model="invoices" forms={forms} />
|
|
108
|
+
</OrgRuntimeProvider>
|
|
109
|
+
</ApiProvider>,
|
|
110
|
+
)
|
|
111
|
+
fireEvent.change(document.querySelectorAll('input')[0], { target: { value: 'ACME' } })
|
|
112
|
+
fireEvent.click(screen.getByRole('button', { name: 'Crear' }))
|
|
113
|
+
await waitFor(() => expect(post).toHaveBeenCalled())
|
|
114
|
+
expect(post.mock.calls[0][1]).toMatchObject({ customer_name: 'ACME', invoice_date: '2026-10-06' })
|
|
115
|
+
})
|
|
116
|
+
})
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
buildFieldDefaults,
|
|
4
|
+
readRecordPath,
|
|
5
|
+
refTargetsModel,
|
|
6
|
+
scalarDefaultFromRecord,
|
|
7
|
+
unwrapRecordScalar,
|
|
8
|
+
} from '../action-modal-dispatcher'
|
|
3
9
|
import type { ActionFieldDef } from '../types'
|
|
4
10
|
|
|
5
11
|
describe('scalarDefaultFromRecord', () => {
|
|
@@ -35,3 +41,48 @@ describe('scalarDefaultFromRecord', () => {
|
|
|
35
41
|
expect(scalarDefaultFromRecord(field, record)).toBe('11111111-1111-4111-8111-111111111111')
|
|
36
42
|
})
|
|
37
43
|
})
|
|
44
|
+
|
|
45
|
+
// Retest Pitsline 2026-10-05: «Registrar pago» desde una factura PPD con saldo
|
|
46
|
+
// abría el modal con «Factura» vacía: el campo es `invoice_id` y la fila (la
|
|
47
|
+
// factura) no tiene esa columna, tiene `id`.
|
|
48
|
+
describe('selector que apunta al modelo de la fila', () => {
|
|
49
|
+
// Campos de customers `register_payment` (target_model Invoice).
|
|
50
|
+
const registerPayment = [
|
|
51
|
+
{ key: 'customer_id', label: 'Cliente', type: 'dynamic_select', required: true, ref: 'Customer' },
|
|
52
|
+
{
|
|
53
|
+
key: 'invoice_id',
|
|
54
|
+
label: 'Factura',
|
|
55
|
+
type: 'dynamic_select',
|
|
56
|
+
ref: 'Invoice',
|
|
57
|
+
options: { source: 'Invoice', value: 'id', label: 'number' },
|
|
58
|
+
},
|
|
59
|
+
{ key: 'amount', label: 'Monto', type: 'number', required: true },
|
|
60
|
+
] as unknown as ActionFieldDef[]
|
|
61
|
+
const invoice = { id: 'inv-13', number: 'FAC-00013', customer_id: { value: 'cus-1', label: 'Demo' }, amount_due: 232 }
|
|
62
|
+
|
|
63
|
+
it('«Registrar pago» abre precargado con la factura y su cliente', () => {
|
|
64
|
+
const d = buildFieldDefaults(registerPayment, invoice, 'invoices')
|
|
65
|
+
expect(d.invoice_id).toBe('inv-13')
|
|
66
|
+
expect(d.customer_id).toBe('cus-1')
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
it('sin el modelo de la fila no adivina', () => {
|
|
70
|
+
expect(buildFieldDefaults(registerPayment, invoice).invoice_id).toBe('')
|
|
71
|
+
expect(buildFieldDefaults(registerPayment, invoice, 'customers').invoice_id).toBe('')
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
it('una columna propia vacía (parent_id sin padre) no se siembra con el id de la fila', () => {
|
|
75
|
+
const parent = { key: 'parent_id', label: 'Padre', type: 'dynamic_select', ref: 'Category' } as ActionFieldDef
|
|
76
|
+
expect(scalarDefaultFromRecord(parent, { id: 'cat-1', parent_id: null }, 'categories')).toBeUndefined()
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it('refTargetsModel tolera prefijo de addon, PascalCase y plural de tabla', () => {
|
|
80
|
+
expect(refTargetsModel('customers.Invoice', 'invoices')).toBe(true)
|
|
81
|
+
expect(refTargetsModel('Invoice', 'Invoice')).toBe(true)
|
|
82
|
+
expect(refTargetsModel('CustomerAddress', 'customer_addresses')).toBe(true)
|
|
83
|
+
expect(refTargetsModel('SalesOrder', 'sales_orders')).toBe(true)
|
|
84
|
+
expect(refTargetsModel('Invoice', 'invoice_items')).toBe(false)
|
|
85
|
+
expect(refTargetsModel(undefined, 'invoices')).toBe(false)
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { linkNavigation } from '../dynamic-row-actions'
|
|
3
|
+
|
|
4
|
+
// «Crear desde»: el botón de la fila del origen es una acción link con query
|
|
5
|
+
// (`/m/invoices?create=invoice&from=sales_order&from_id={id}`). En `to` el
|
|
6
|
+
// router la tomaba como parte del path y `$model` quedaba "invoices?create=…".
|
|
7
|
+
describe('linkNavigation', () => {
|
|
8
|
+
it('separa la query como search', () => {
|
|
9
|
+
expect(linkNavigation('/m/invoices?create=invoice&from=sales_order&from_id=so-1')).toEqual({
|
|
10
|
+
to: '/m/invoices',
|
|
11
|
+
search: { create: 'invoice', from: 'sales_order', from_id: 'so-1' },
|
|
12
|
+
})
|
|
13
|
+
})
|
|
14
|
+
it('sin query deja el destino igual', () => {
|
|
15
|
+
expect(linkNavigation('/m/quotes/abc')).toEqual({ to: '/m/quotes/abc' })
|
|
16
|
+
})
|
|
17
|
+
})
|