lambda-erp 0.8.0__tar.gz → 0.8.2__tar.gz

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 (88) hide show
  1. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/PKG-INFO +1 -1
  2. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/chat.py +19 -3
  3. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/pyproject.toml +1 -1
  4. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/.gitignore +0 -0
  5. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/LICENSE +0 -0
  6. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/README.md +0 -0
  7. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/__init__.py +0 -0
  8. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/attachments.py +0 -0
  9. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/auth.py +0 -0
  10. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/bootstrap.py +0 -0
  11. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/demo_limits.py +0 -0
  12. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/deps.py +0 -0
  13. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/errors.py +0 -0
  14. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/main.py +0 -0
  15. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/oauth.py +0 -0
  16. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/pdf.py +0 -0
  17. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/providers.py +0 -0
  18. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/remarks_md.py +0 -0
  19. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/__init__.py +0 -0
  20. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/accounting.py +0 -0
  21. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/admin.py +0 -0
  22. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/analytics.py +0 -0
  23. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/availability.py +0 -0
  24. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/bank_reconciliation.py +0 -0
  25. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/chat_api.py +0 -0
  26. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/documents.py +0 -0
  27. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/masters.py +0 -0
  28. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/mcp.py +0 -0
  29. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/proposals.py +0 -0
  30. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/reports.py +0 -0
  31. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/routers/setup.py +0 -0
  32. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/services.py +0 -0
  33. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/templates/document.html +0 -0
  34. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/api/templates/proposal.html +0 -0
  35. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/docs/agents/README.md +0 -0
  36. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/frontend/LICENSE +0 -0
  37. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/frontend/README.md +0 -0
  38. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/frontend/src/api/client.ts +0 -0
  39. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/__init__.py +0 -0
  40. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/__init__.py +0 -0
  41. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/bank_transaction.py +0 -0
  42. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/budget.py +0 -0
  43. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/chart_of_accounts.py +0 -0
  44. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/general_ledger.py +0 -0
  45. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/journal_entry.py +0 -0
  46. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/payment_entry.py +0 -0
  47. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/pos_invoice.py +0 -0
  48. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/purchase_invoice.py +0 -0
  49. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/revaluation.py +0 -0
  50. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/sales_invoice.py +0 -0
  51. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/__init__.py +0 -0
  52. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/engine.py +0 -0
  53. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/pack.py +0 -0
  54. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/packs/__init__.py +0 -0
  55. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/packs/ch.py +0 -0
  56. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/packs/de_common.py +0 -0
  57. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/packs/de_skr03.py +0 -0
  58. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/packs/de_skr04.py +0 -0
  59. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/packs/generic.py +0 -0
  60. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/profiles.py +0 -0
  61. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/setup/spine.py +0 -0
  62. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/accounting/subscription.py +0 -0
  63. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/assets/__init__.py +0 -0
  64. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/assets/asset.py +0 -0
  65. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/assets/reservation.py +0 -0
  66. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/buying/__init__.py +0 -0
  67. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/buying/purchase_order.py +0 -0
  68. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/controllers/__init__.py +0 -0
  69. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/controllers/currency.py +0 -0
  70. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/controllers/defaults.py +0 -0
  71. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/controllers/pricing_rule.py +0 -0
  72. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/controllers/taxes_and_totals.py +0 -0
  73. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/database.py +0 -0
  74. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/exceptions.py +0 -0
  75. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/hooks.py +0 -0
  76. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/model.py +0 -0
  77. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/selling/__init__.py +0 -0
  78. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/selling/proposal.py +0 -0
  79. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/selling/quotation.py +0 -0
  80. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/selling/sales_order.py +0 -0
  81. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/simulation.py +0 -0
  82. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/stock/__init__.py +0 -0
  83. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/stock/delivery_note.py +0 -0
  84. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/stock/purchase_receipt.py +0 -0
  85. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/stock/stock_entry.py +0 -0
  86. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/stock/stock_ledger.py +0 -0
  87. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/lambda_erp/utils.py +0 -0
  88. {lambda_erp-0.8.0 → lambda_erp-0.8.2}/terraform/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: lambda-erp
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: Core ERP logic - accounting, sales, purchasing, inventory
5
5
  Author: TORUS INVESTMENTS AG
6
6
  License-Expression: Apache-2.0
@@ -1524,10 +1524,26 @@ def _handle_search_masters(args):
1524
1524
  # that the default search skips. Unknown names are ignored.
1525
1525
  requested = args.get("fields") or []
1526
1526
  if requested:
1527
- valid = db._get_table_columns(doctype)
1528
- search_cols = sorted(c for c in requested if c in valid)
1527
+ valid = set(db._get_table_columns(doctype))
1528
+ # The identity alias (e.g. "item_code") is what the model calls the code
1529
+ # everywhere else — create_master, document lines, the asset/reservation
1530
+ # prompt — so it naturally passes fields=["item_code"]. But the real
1531
+ # column is the `name` PK; resolve the alias to `name` so that lookup
1532
+ # works instead of erroring "None of fields ['item_code'] exist".
1533
+ alias = MASTER_IDENTITY_ALIAS.get(master_type)
1534
+ search_cols = []
1535
+ for c in requested:
1536
+ if c in valid:
1537
+ search_cols.append(c)
1538
+ elif alias and c == alias and "name" in valid:
1539
+ search_cols.append("name")
1540
+ search_cols = sorted(set(search_cols))
1541
+ # Nothing resolved (all names unknown) — degrade to the default text
1542
+ # search rather than erroring: the value the caller meant is almost
1543
+ # always in the columns the default already covers (incl. the `name`
1544
+ # code). Honours the "unknown names are ignored" contract above.
1529
1545
  if not search_cols:
1530
- return {"error": f"None of fields {requested} exist on {master_type}"}
1546
+ search_cols = _master_search_columns(db, doctype)
1531
1547
  else:
1532
1548
  search_cols = _master_search_columns(db, doctype)
1533
1549
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lambda-erp"
3
- version = "0.8.0"
3
+ version = "0.8.2"
4
4
  description = "Core ERP logic - accounting, sales, purchasing, inventory"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes