feat(nakui): metainterfaz declarativa + 6 modulos ERP estandar
1{
2 "id": "invoices",
3 "label": "Facturación",
4 "description": "Facturas emitidas y su seguimiento de pago.",
5 "entities": [
6 {
7 "name": "invoice",
8 "label": "Factura",
9 "fields": [
10 { "name": "invoice_number", "label": "N° factura", "kind": "text", "required": true },
11 { "name": "customer_name", "label": "Cliente", "kind": "text", "required": true },
12 { "name": "issued_at", "label": "Emitida", "kind": "date", "required": true },
13 { "name": "due_at", "label": "Vencimiento", "kind": "date", "required": true },
14 { "name": "subtotal", "label": "Subtotal", "kind": "number", "default": "0" },
15 { "name": "tax", "label": "Impuestos", "kind": "number", "default": "0" },
16 { "name": "total", "label": "Total", "kind": "number", "default": "0" },
17 { "name": "amount_paid", "label": "Pagado", "kind": "number", "default": "0" },
18 { "name": "status", "label": "Estado", "kind": "text", "required": true, "default": "issued", "help": "draft / issued / partially_paid / paid / overdue / void" },
19 { "name": "currency", "label": "Moneda", "kind": "text", "default": "USD" },
20 { "name": "reference_order", "label": "Orden referencia", "kind": "text" }
21 ]
22 }
23 ],
24 "menu": [
25 { "label": "Facturas", "view": "list", "icon": "💳" },
26 { "label": "Nueva factura", "view": "form", "icon": "✚" }
27 ],
28 "views": {
29 "list": {
30 "kind": "list",
31 "title": "Facturas",
32 "entity": "invoice",
33 "columns": [
34 { "field": "invoice_number", "label": "N°", "weight": 1.0 },
35 { "field": "customer_name", "label": "Cliente", "weight": 2.0 },
36 { "field": "issued_at", "label": "Emitida", "weight": 1.0 },
37 { "field": "due_at", "label": "Vence", "weight": 1.0 },
38 { "field": "total", "label": "Total", "weight": 1.0 },
39 { "field": "amount_paid", "label": "Pagado", "weight": 1.0 },
40 { "field": "currency", "label": "Mon.", "weight": 0.5 },
41 { "field": "status", "label": "Estado", "weight": 0.9 }
42 ],
43 "actions": [
44 { "kind": "open_view", "view": "form", "label": "✚ Nueva" }
45 ],
46 "search_in": ["invoice_number", "customer_name", "reference_order"]
47 },
48 "form": {
49 "kind": "form",
50 "title": "Nueva factura",
51 "entity": "invoice",
52 "fields": [
53 { "name": "invoice_number", "label": "Número de factura", "kind": "text", "required": true },
54 { "name": "customer_name", "label": "Cliente", "kind": "text", "required": true },
55 { "name": "issued_at", "label": "Fecha de emisión", "kind": "date", "required": true },
56 { "name": "due_at", "label": "Fecha de vencimiento", "kind": "date", "required": true },
57 { "name": "subtotal", "label": "Subtotal", "kind": "number", "default": "0" },
58 { "name": "tax", "label": "Impuestos", "kind": "number", "default": "0" },
59 { "name": "total", "label": "Total", "kind": "number", "default": "0" },
60 { "name": "amount_paid", "label": "Pagado", "kind": "number", "default": "0" },
61 { "name": "status", "label": "Estado", "kind": "text", "required": true, "default": "issued" },
62 { "name": "currency", "label": "Moneda", "kind": "text", "default": "USD" },
63 { "name": "reference_order", "label": "Orden de venta referenciada", "kind": "text" }
64 ],
65 "on_submit": {
66 "kind": "seed_entity",
67 "entity": "invoice",
68 "next_view": "list"
69 }
70 }
71 }
72}