cli-dolibarr 3.2.0__tar.gz → 3.3.0__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.
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/PKG-INFO +1 -1
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/README.md +3 -4
- cli_dolibarr-3.3.0/cli_dolibarr/dolibarr/__init__.py +1 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/schema.py +6 -35
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/schema_manager.py +1 -8
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/schema.json +287 -1
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr.egg-info/PKG-INFO +1 -1
- cli_dolibarr-3.2.0/cli_dolibarr/dolibarr/__init__.py +0 -1
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/LICENSE +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/README.md +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/__init__.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/_template.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/accountancy.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/agendaevents.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/apibridge.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/bankaccounts.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/boms.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/categories.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/config.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/contacts.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/contracts.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/delivery.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/documents.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/donations.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/expensereports.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/interventions.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/invoices.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/knowledge.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/login.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/member_types.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/members.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/mobilehub.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/mobilehubapi.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/mos.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/multicurrencies.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/orderprocessor.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/orders.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/partnerships.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/pdfa.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/products.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/projects.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/proposals.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/quickprint.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/receptions.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/recruitments.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/salaries.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/setup.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/shipments.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/status.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/stock.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/stockmodule.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/stockmovements.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/subscriptions.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplier_invoices.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplier_orders.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplier_proposals.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplierinvoices.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplierorders.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplierproposals.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/system.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/tasks.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/thirdparties.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/tickets.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/users.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/warehouses.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/webhook.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/workstations.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/zapier.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/__init__.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/client.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/config.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/output.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/schema_agents.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/schema_generator.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/core/session_client.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/dolibarr_cli.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/extrafields_cache.json +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/hermes_plugin/__init__.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/models_supplement.json +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tests/__init__.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tests/test_core.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tests/test_enrich.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tests/test_full_e2e.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tests/test_tools.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tools/__init__.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tools/executor.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/tools/tools_schema.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/utils/__init__.py +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr.egg-info/SOURCES.txt +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr.egg-info/dependency_links.txt +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr.egg-info/entry_points.txt +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr.egg-info/requires.txt +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr.egg-info/top_level.txt +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/pyproject.toml +0 -0
- {cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/setup.cfg +0 -0
|
@@ -128,9 +128,9 @@ dolibarr> exit
|
|
|
128
128
|
|
|
129
129
|
| 命令 | 说明 |
|
|
130
130
|
|------|------|
|
|
131
|
-
| `schema refresh
|
|
131
|
+
| `schema refresh` | 一键刷新:sync → extrafields → enrich → auto-infer |
|
|
132
132
|
| `schema sync` | 从 Dolibarr swagger 端点拉取最新 API 定义 |
|
|
133
|
-
| `schema extrafields
|
|
133
|
+
| `schema extrafields` | 拉取自定义字段定义并注入 schema |
|
|
134
134
|
| `schema enrich` | 用 models_supplement.json 补全 model 字段定义(sync 后必须执行) |
|
|
135
135
|
| `schema diff` | 对比覆盖情况,显示哪些端点尚无 CLI 命令 |
|
|
136
136
|
| `schema generate --all` | 自动生成缺失的 CLI 命令文件 |
|
|
@@ -231,9 +231,8 @@ python -m vllm.entrypoints.openai.api_server \
|
|
|
231
231
|
| 变量 | 说明 |
|
|
232
232
|
|------|------|
|
|
233
233
|
| `DOLIBARR_URL` | API 完整地址,例如 `https://your-dolibarr.example.com/api/index.php` |
|
|
234
|
-
| `DOLIBARR_API_KEY` | Dolibarr
|
|
234
|
+
| `DOLIBARR_API_KEY` | Dolibarr API Key |
|
|
235
235
|
| `DOLIBARR_VERIFY_SSL` | 设为 `1` 或 `true` 启用 SSL 证书验证 |
|
|
236
|
-
| `DOLIBARR_ADMIN_API_KEY` | 管理员 API Key,用于拉取自定义字段定义 |
|
|
237
236
|
| `OPENAI_API_KEY` | OpenAI 兼容 API Key,用于 auto-infer 生成精确中文描述(可选) |
|
|
238
237
|
| `OPENAI_BASE_URL` | OpenAI 兼容 API 地址(默认 `https://api.openai.com/v1`,可选) |
|
|
239
238
|
| `OPENAI_MODEL` | 使用的模型名称(默认 `gpt-4o-mini`,可选) |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.3.0"
|
|
@@ -297,32 +297,15 @@ def export(ctx, fmt, output_file):
|
|
|
297
297
|
sys.exit(1)
|
|
298
298
|
|
|
299
299
|
|
|
300
|
-
def _resolve_admin_key(ctx, admin_api_key):
|
|
301
|
-
"""Resolve admin API key: CLI option > env var > default client key."""
|
|
302
|
-
if admin_api_key:
|
|
303
|
-
return admin_api_key
|
|
304
|
-
env_key = os.environ.get('DOLIBARR_ADMIN_API_KEY')
|
|
305
|
-
if env_key:
|
|
306
|
-
return env_key
|
|
307
|
-
return None
|
|
308
|
-
|
|
309
|
-
|
|
310
300
|
@schema.command()
|
|
311
|
-
@click.option('--admin-api-key', default=None,
|
|
312
|
-
help='Admin API key (overrides config). Falls back to DOLIBARR_ADMIN_API_KEY env var.')
|
|
313
301
|
@click.pass_context
|
|
314
|
-
def extrafields(ctx
|
|
302
|
+
def extrafields(ctx):
|
|
315
303
|
"""Fetch extrafield definitions from Dolibarr and inject into schema.
|
|
316
304
|
|
|
317
|
-
Calls the /setup/extrafields API endpoint
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
Admin key resolution: --admin-api-key > DOLIBARR_ADMIN_API_KEY env > default key.
|
|
305
|
+
Calls the /setup/extrafields API endpoint and adds array_options
|
|
306
|
+
properties to the corresponding models in schema.json.
|
|
321
307
|
"""
|
|
322
308
|
client = _get_client(ctx)
|
|
323
|
-
resolved_key = _resolve_admin_key(ctx, admin_api_key)
|
|
324
|
-
if resolved_key:
|
|
325
|
-
client.session.headers['DOLAPIKEY'] = resolved_key
|
|
326
309
|
try:
|
|
327
310
|
manager = SchemaManager()
|
|
328
311
|
click.echo("Fetching extrafield definitions...")
|
|
@@ -344,22 +327,10 @@ def extrafields(ctx, admin_api_key):
|
|
|
344
327
|
|
|
345
328
|
|
|
346
329
|
@schema.command()
|
|
347
|
-
@click.option('--admin-api-key', default=None,
|
|
348
|
-
help='Admin API key. Falls back to DOLIBARR_ADMIN_API_KEY env var.')
|
|
349
330
|
@click.pass_context
|
|
350
|
-
def refresh(ctx
|
|
351
|
-
"""Full schema refresh: sync + extrafields + enrich + auto-infer.
|
|
352
|
-
|
|
353
|
-
One-command pipeline that:
|
|
354
|
-
1. Syncs API schema from Dolibarr swagger
|
|
355
|
-
2. Fetches extrafield definitions (admin key via --admin-api-key or DOLIBARR_ADMIN_API_KEY)
|
|
356
|
-
3. Enriches models with supplement definitions
|
|
357
|
-
4. Auto-infers remaining bad models
|
|
358
|
-
"""
|
|
331
|
+
def refresh(ctx):
|
|
332
|
+
"""Full schema refresh: sync + extrafields + enrich + auto-infer."""
|
|
359
333
|
client = _get_client(ctx)
|
|
360
|
-
resolved_key = _resolve_admin_key(ctx, admin_api_key)
|
|
361
|
-
if resolved_key:
|
|
362
|
-
client.session.headers['DOLAPIKEY'] = resolved_key
|
|
363
334
|
try:
|
|
364
335
|
manager = SchemaManager()
|
|
365
336
|
click.echo("Refreshing schema...")
|
|
@@ -380,7 +351,7 @@ def refresh(ctx, admin_api_key):
|
|
|
380
351
|
click.echo(f" {ef_stats['injected_fields']} fields injected "
|
|
381
352
|
f"into {ef_stats['injected_models']} models")
|
|
382
353
|
except RuntimeError:
|
|
383
|
-
click.echo(" Skipped (
|
|
354
|
+
click.echo(" Skipped (permission denied)")
|
|
384
355
|
|
|
385
356
|
click.echo(" [3/4] Enriching models...")
|
|
386
357
|
enrich_stats = manager.enrich()
|
|
@@ -461,14 +461,7 @@ class SchemaManager:
|
|
|
461
461
|
return stats
|
|
462
462
|
|
|
463
463
|
def refresh(self, client) -> Dict[str, Any]:
|
|
464
|
-
"""Full schema refresh: sync + extrafields + enrich.
|
|
465
|
-
|
|
466
|
-
One-command pipeline that:
|
|
467
|
-
1. Syncs API schema from Dolibarr swagger
|
|
468
|
-
2. Fetches extrafield definitions (best-effort, skips if no admin key)
|
|
469
|
-
3. Enriches models with supplement definitions
|
|
470
|
-
4. Auto-infers remaining bad models (best-effort)
|
|
471
|
-
"""
|
|
464
|
+
"""Full schema refresh: sync + extrafields + enrich + auto-infer."""
|
|
472
465
|
swagger = self.fetch_swagger(client)
|
|
473
466
|
schema = self.normalize(swagger)
|
|
474
467
|
self.save(schema)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"synced_at": "2026-05-
|
|
2
|
+
"synced_at": "2026-05-23T12:42:43Z",
|
|
3
3
|
"source": "swagger",
|
|
4
4
|
"dolibarr_version": "1",
|
|
5
5
|
"endpoints": [
|
|
@@ -2984,6 +2984,244 @@
|
|
|
2984
2984
|
"request_body": null,
|
|
2985
2985
|
"response_schema": "string"
|
|
2986
2986
|
},
|
|
2987
|
+
{
|
|
2988
|
+
"path": "/productplus/hscode-specs",
|
|
2989
|
+
"method": "GET",
|
|
2990
|
+
"summary": "获取HS编码规格列表 🔐",
|
|
2991
|
+
"group": "productplus",
|
|
2992
|
+
"parameters": [
|
|
2993
|
+
{
|
|
2994
|
+
"name": "sortfield",
|
|
2995
|
+
"in": "query",
|
|
2996
|
+
"type": "string",
|
|
2997
|
+
"required": false
|
|
2998
|
+
},
|
|
2999
|
+
{
|
|
3000
|
+
"name": "sortorder",
|
|
3001
|
+
"in": "query",
|
|
3002
|
+
"type": "string",
|
|
3003
|
+
"required": false
|
|
3004
|
+
},
|
|
3005
|
+
{
|
|
3006
|
+
"name": "limit",
|
|
3007
|
+
"in": "query",
|
|
3008
|
+
"type": "integer",
|
|
3009
|
+
"required": false
|
|
3010
|
+
},
|
|
3011
|
+
{
|
|
3012
|
+
"name": "page",
|
|
3013
|
+
"in": "query",
|
|
3014
|
+
"type": "integer",
|
|
3015
|
+
"required": false
|
|
3016
|
+
}
|
|
3017
|
+
],
|
|
3018
|
+
"request_body": null,
|
|
3019
|
+
"response_schema": "array"
|
|
3020
|
+
},
|
|
3021
|
+
{
|
|
3022
|
+
"path": "/productplus/hscode-specs",
|
|
3023
|
+
"method": "POST",
|
|
3024
|
+
"summary": "创建HS编码规格 🔐",
|
|
3025
|
+
"group": "productplus",
|
|
3026
|
+
"parameters": [],
|
|
3027
|
+
"request_body": "productplusCreateHscodeSpecModel",
|
|
3028
|
+
"response_schema": "array"
|
|
3029
|
+
},
|
|
3030
|
+
{
|
|
3031
|
+
"path": "/productplus/hscode-specs/{id}",
|
|
3032
|
+
"method": "GET",
|
|
3033
|
+
"summary": "按ID获取HS编码规格 🔐",
|
|
3034
|
+
"group": "productplus",
|
|
3035
|
+
"parameters": [
|
|
3036
|
+
{
|
|
3037
|
+
"name": "id",
|
|
3038
|
+
"in": "path",
|
|
3039
|
+
"type": "integer",
|
|
3040
|
+
"required": true
|
|
3041
|
+
}
|
|
3042
|
+
],
|
|
3043
|
+
"request_body": null,
|
|
3044
|
+
"response_schema": "string"
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
"path": "/productplus/hscode-specs/{id}",
|
|
3048
|
+
"method": "PUT",
|
|
3049
|
+
"summary": "更新HS编码规格 🔐",
|
|
3050
|
+
"group": "productplus",
|
|
3051
|
+
"parameters": [
|
|
3052
|
+
{
|
|
3053
|
+
"name": "id",
|
|
3054
|
+
"in": "path",
|
|
3055
|
+
"type": "integer",
|
|
3056
|
+
"required": true
|
|
3057
|
+
}
|
|
3058
|
+
],
|
|
3059
|
+
"request_body": "productplusUpdateHscodeSpecModel",
|
|
3060
|
+
"response_schema": "array"
|
|
3061
|
+
},
|
|
3062
|
+
{
|
|
3063
|
+
"path": "/productplus/hscode-specs/{id}",
|
|
3064
|
+
"method": "DELETE",
|
|
3065
|
+
"summary": "删除HS编码规格 🔐",
|
|
3066
|
+
"group": "productplus",
|
|
3067
|
+
"parameters": [
|
|
3068
|
+
{
|
|
3069
|
+
"name": "id",
|
|
3070
|
+
"in": "path",
|
|
3071
|
+
"type": "integer",
|
|
3072
|
+
"required": true
|
|
3073
|
+
}
|
|
3074
|
+
],
|
|
3075
|
+
"request_body": null,
|
|
3076
|
+
"response_schema": "array"
|
|
3077
|
+
},
|
|
3078
|
+
{
|
|
3079
|
+
"path": "/productplus/hscode-specs/by-code/{hscode}",
|
|
3080
|
+
"method": "GET",
|
|
3081
|
+
"summary": "按编码获取HS编码规格 🔐",
|
|
3082
|
+
"group": "productplus",
|
|
3083
|
+
"parameters": [
|
|
3084
|
+
{
|
|
3085
|
+
"name": "hscode",
|
|
3086
|
+
"in": "path",
|
|
3087
|
+
"type": "string",
|
|
3088
|
+
"required": true
|
|
3089
|
+
}
|
|
3090
|
+
],
|
|
3091
|
+
"request_body": null,
|
|
3092
|
+
"response_schema": "string"
|
|
3093
|
+
},
|
|
3094
|
+
{
|
|
3095
|
+
"path": "/productplus/currency-prices",
|
|
3096
|
+
"method": "GET",
|
|
3097
|
+
"summary": "获取多货币定价列表 🔐",
|
|
3098
|
+
"group": "productplus",
|
|
3099
|
+
"parameters": [
|
|
3100
|
+
{
|
|
3101
|
+
"name": "fk_product",
|
|
3102
|
+
"in": "query",
|
|
3103
|
+
"type": "integer",
|
|
3104
|
+
"required": false
|
|
3105
|
+
},
|
|
3106
|
+
{
|
|
3107
|
+
"name": "currency_code",
|
|
3108
|
+
"in": "query",
|
|
3109
|
+
"type": "string",
|
|
3110
|
+
"required": false
|
|
3111
|
+
},
|
|
3112
|
+
{
|
|
3113
|
+
"name": "fk_soc",
|
|
3114
|
+
"in": "query",
|
|
3115
|
+
"type": "integer",
|
|
3116
|
+
"required": false
|
|
3117
|
+
},
|
|
3118
|
+
{
|
|
3119
|
+
"name": "limit",
|
|
3120
|
+
"in": "query",
|
|
3121
|
+
"type": "integer",
|
|
3122
|
+
"required": false
|
|
3123
|
+
},
|
|
3124
|
+
{
|
|
3125
|
+
"name": "page",
|
|
3126
|
+
"in": "query",
|
|
3127
|
+
"type": "integer",
|
|
3128
|
+
"required": false
|
|
3129
|
+
}
|
|
3130
|
+
],
|
|
3131
|
+
"request_body": null,
|
|
3132
|
+
"response_schema": "array"
|
|
3133
|
+
},
|
|
3134
|
+
{
|
|
3135
|
+
"path": "/productplus/currency-prices",
|
|
3136
|
+
"method": "POST",
|
|
3137
|
+
"summary": "创建多货币定价 (Upsert逻辑) 🔐",
|
|
3138
|
+
"group": "productplus",
|
|
3139
|
+
"parameters": [],
|
|
3140
|
+
"request_body": "productplusCreateCurrencyPriceModel",
|
|
3141
|
+
"response_schema": "array"
|
|
3142
|
+
},
|
|
3143
|
+
{
|
|
3144
|
+
"path": "/productplus/currency-prices/{id}",
|
|
3145
|
+
"method": "GET",
|
|
3146
|
+
"summary": "按ID获取多货币定价 🔐",
|
|
3147
|
+
"group": "productplus",
|
|
3148
|
+
"parameters": [
|
|
3149
|
+
{
|
|
3150
|
+
"name": "id",
|
|
3151
|
+
"in": "path",
|
|
3152
|
+
"type": "integer",
|
|
3153
|
+
"required": true
|
|
3154
|
+
}
|
|
3155
|
+
],
|
|
3156
|
+
"request_body": null,
|
|
3157
|
+
"response_schema": "string"
|
|
3158
|
+
},
|
|
3159
|
+
{
|
|
3160
|
+
"path": "/productplus/currency-prices/{id}",
|
|
3161
|
+
"method": "PUT",
|
|
3162
|
+
"summary": "按ID更新多货币定价 🔐",
|
|
3163
|
+
"group": "productplus",
|
|
3164
|
+
"parameters": [
|
|
3165
|
+
{
|
|
3166
|
+
"name": "id",
|
|
3167
|
+
"in": "path",
|
|
3168
|
+
"type": "integer",
|
|
3169
|
+
"required": true
|
|
3170
|
+
}
|
|
3171
|
+
],
|
|
3172
|
+
"request_body": "productplusUpdateCurrencyPriceModel",
|
|
3173
|
+
"response_schema": "array"
|
|
3174
|
+
},
|
|
3175
|
+
{
|
|
3176
|
+
"path": "/productplus/currency-prices/{id}",
|
|
3177
|
+
"method": "DELETE",
|
|
3178
|
+
"summary": "删除多货币定价 🔐",
|
|
3179
|
+
"group": "productplus",
|
|
3180
|
+
"parameters": [
|
|
3181
|
+
{
|
|
3182
|
+
"name": "id",
|
|
3183
|
+
"in": "path",
|
|
3184
|
+
"type": "integer",
|
|
3185
|
+
"required": true
|
|
3186
|
+
}
|
|
3187
|
+
],
|
|
3188
|
+
"request_body": null,
|
|
3189
|
+
"response_schema": "array"
|
|
3190
|
+
},
|
|
3191
|
+
{
|
|
3192
|
+
"path": "/productplus/price-lookup",
|
|
3193
|
+
"method": "GET",
|
|
3194
|
+
"summary": "价格查询 - 阶梯价格 + 客户优先级 🔐",
|
|
3195
|
+
"group": "productplus",
|
|
3196
|
+
"parameters": [
|
|
3197
|
+
{
|
|
3198
|
+
"name": "id",
|
|
3199
|
+
"in": "query",
|
|
3200
|
+
"type": "integer",
|
|
3201
|
+
"required": false
|
|
3202
|
+
},
|
|
3203
|
+
{
|
|
3204
|
+
"name": "currency",
|
|
3205
|
+
"in": "query",
|
|
3206
|
+
"type": "string",
|
|
3207
|
+
"required": false
|
|
3208
|
+
},
|
|
3209
|
+
{
|
|
3210
|
+
"name": "qty",
|
|
3211
|
+
"in": "query",
|
|
3212
|
+
"type": "integer",
|
|
3213
|
+
"required": false
|
|
3214
|
+
},
|
|
3215
|
+
{
|
|
3216
|
+
"name": "socid",
|
|
3217
|
+
"in": "query",
|
|
3218
|
+
"type": "integer",
|
|
3219
|
+
"required": false
|
|
3220
|
+
}
|
|
3221
|
+
],
|
|
3222
|
+
"request_body": null,
|
|
3223
|
+
"response_schema": "array"
|
|
3224
|
+
},
|
|
2987
3225
|
{
|
|
2988
3226
|
"path": "/products/{id}",
|
|
2989
3227
|
"method": "GET",
|
|
@@ -11250,6 +11488,54 @@
|
|
|
11250
11488
|
}
|
|
11251
11489
|
}
|
|
11252
11490
|
},
|
|
11491
|
+
"productplusCreateHscodeSpecModel": {
|
|
11492
|
+
"properties": {
|
|
11493
|
+
"dummy": {
|
|
11494
|
+
"type": "integer",
|
|
11495
|
+
"description": "Restler POST参数占位"
|
|
11496
|
+
},
|
|
11497
|
+
"request_data": {
|
|
11498
|
+
"type": "array",
|
|
11499
|
+
"description": "请求体JSON"
|
|
11500
|
+
}
|
|
11501
|
+
}
|
|
11502
|
+
},
|
|
11503
|
+
"productplusUpdateHscodeSpecModel": {
|
|
11504
|
+
"properties": {
|
|
11505
|
+
"dummy": {
|
|
11506
|
+
"type": "integer",
|
|
11507
|
+
"description": "Restler PUT参数占位"
|
|
11508
|
+
},
|
|
11509
|
+
"request_data": {
|
|
11510
|
+
"type": "array",
|
|
11511
|
+
"description": "请求体JSON"
|
|
11512
|
+
}
|
|
11513
|
+
}
|
|
11514
|
+
},
|
|
11515
|
+
"productplusCreateCurrencyPriceModel": {
|
|
11516
|
+
"properties": {
|
|
11517
|
+
"dummy": {
|
|
11518
|
+
"type": "integer",
|
|
11519
|
+
"description": "Restler POST参数占位"
|
|
11520
|
+
},
|
|
11521
|
+
"request_data": {
|
|
11522
|
+
"type": "array",
|
|
11523
|
+
"description": "请求体JSON"
|
|
11524
|
+
}
|
|
11525
|
+
}
|
|
11526
|
+
},
|
|
11527
|
+
"productplusUpdateCurrencyPriceModel": {
|
|
11528
|
+
"properties": {
|
|
11529
|
+
"dummy": {
|
|
11530
|
+
"type": "integer",
|
|
11531
|
+
"description": "Restler PUT参数占位"
|
|
11532
|
+
},
|
|
11533
|
+
"request_data": {
|
|
11534
|
+
"type": "array",
|
|
11535
|
+
"description": "请求体JSON"
|
|
11536
|
+
}
|
|
11537
|
+
}
|
|
11538
|
+
},
|
|
11253
11539
|
"updateProductsModel": {
|
|
11254
11540
|
"properties": {
|
|
11255
11541
|
"label": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "3.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
|
|
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
|
|
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
|
{cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplier_invoices.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplier_proposals.py
RENAMED
|
File without changes
|
{cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplierinvoices.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_dolibarr-3.2.0 → cli_dolibarr-3.3.0}/cli_dolibarr/dolibarr/commands/supplierproposals.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|