feat(nakui): metainterfaz declarativa + 6 modulos ERP estandar
1{
2 "id": "inventory_movements",
3 "label": "Inventario",
4 "description": "Movimientos de stock: entradas, salidas, ajustes.",
5 "entities": [
6 {
7 "name": "stock_movement",
8 "label": "Movimiento",
9 "fields": [
10 { "name": "occurred_at", "label": "Fecha", "kind": "date", "required": true },
11 { "name": "movement_type", "label": "Tipo", "kind": "text", "required": true, "help": "in / out / adjustment" },
12 { "name": "product_sku", "label": "SKU producto", "kind": "text", "required": true },
13 { "name": "quantity", "label": "Cantidad", "kind": "number", "required": true },
14 { "name": "unit_cost", "label": "Costo unitario", "kind": "number", "default": "0" },
15 { "name": "reason", "label": "Motivo", "kind": "text", "help": "Compra, venta, merma, ajuste por inventario..." },
16 { "name": "reference", "label": "Doc. referencia", "kind": "text", "help": "Factura, orden, conteo..." }
17 ]
18 }
19 ],
20 "menu": [
21 { "label": "Movimientos", "view": "list", "icon": "📊" },
22 { "label": "Registrar", "view": "form", "icon": "✚" }
23 ],
24 "views": {
25 "list": {
26 "kind": "list",
27 "title": "Movimientos de stock",
28 "entity": "stock_movement",
29 "columns": [
30 { "field": "occurred_at", "label": "Fecha", "weight": 1.0 },
31 { "field": "movement_type", "label": "Tipo", "weight": 0.7 },
32 { "field": "product_sku", "label": "SKU", "weight": 1.0 },
33 { "field": "quantity", "label": "Cantidad", "weight": 0.8 },
34 { "field": "unit_cost", "label": "Costo", "weight": 0.8 },
35 { "field": "reason", "label": "Motivo", "weight": 1.5 },
36 { "field": "reference", "label": "Ref.", "weight": 1.0 }
37 ],
38 "actions": [
39 { "kind": "open_view", "view": "form", "label": "✚ Registrar" }
40 ],
41 "search_in": ["product_sku", "reason", "reference"]
42 },
43 "form": {
44 "kind": "form",
45 "title": "Registrar movimiento",
46 "entity": "stock_movement",
47 "fields": [
48 { "name": "occurred_at", "label": "Fecha", "kind": "date", "required": true },
49 { "name": "movement_type", "label": "Tipo (in/out/adjustment)", "kind": "text", "required": true, "default": "in" },
50 { "name": "product_sku", "label": "SKU producto", "kind": "text", "required": true },
51 { "name": "quantity", "label": "Cantidad", "kind": "number", "required": true },
52 { "name": "unit_cost", "label": "Costo unitario", "kind": "number", "default": "0" },
53 { "name": "reason", "label": "Motivo", "kind": "text" },
54 { "name": "reference", "label": "Documento de referencia", "kind": "text" }
55 ],
56 "on_submit": {
57 "kind": "seed_entity",
58 "entity": "stock_movement",
59 "next_view": "list"
60 }
61 }
62 }
63}