@marcfargas/odoo-cli 0.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/dist/cli.d.ts +27 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +152 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/accounting.d.ts +16 -0
- package/dist/commands/accounting.d.ts.map +1 -0
- package/dist/commands/accounting.js +363 -0
- package/dist/commands/accounting.js.map +1 -0
- package/dist/commands/attendance.d.ts +14 -0
- package/dist/commands/attendance.d.ts.map +1 -0
- package/dist/commands/attendance.js +339 -0
- package/dist/commands/attendance.js.map +1 -0
- package/dist/commands/config.d.ts +12 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +159 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/mail.d.ts +12 -0
- package/dist/commands/mail.d.ts.map +1 -0
- package/dist/commands/mail.js +236 -0
- package/dist/commands/mail.js.map +1 -0
- package/dist/commands/modules.d.ts +14 -0
- package/dist/commands/modules.d.ts.map +1 -0
- package/dist/commands/modules.js +351 -0
- package/dist/commands/modules.js.map +1 -0
- package/dist/commands/records.d.ts +15 -0
- package/dist/commands/records.d.ts.map +1 -0
- package/dist/commands/records.js +591 -0
- package/dist/commands/records.js.map +1 -0
- package/dist/commands/schema.d.ts +16 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +381 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/state.d.ts +14 -0
- package/dist/commands/state.d.ts.map +1 -0
- package/dist/commands/state.js +373 -0
- package/dist/commands/state.js.map +1 -0
- package/dist/commands/timesheets.d.ts +15 -0
- package/dist/commands/timesheets.d.ts.map +1 -0
- package/dist/commands/timesheets.js +453 -0
- package/dist/commands/timesheets.js.map +1 -0
- package/dist/commands/url.d.ts +12 -0
- package/dist/commands/url.d.ts.map +1 -0
- package/dist/commands/url.js +149 -0
- package/dist/commands/url.js.map +1 -0
- package/dist/help/extra-help.d.ts +18 -0
- package/dist/help/extra-help.d.ts.map +1 -0
- package/dist/help/extra-help.js +207 -0
- package/dist/help/extra-help.js.map +1 -0
- package/dist/middleware/auth.d.ts +29 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +68 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/common-params.d.ts +90 -0
- package/dist/middleware/common-params.d.ts.map +1 -0
- package/dist/middleware/common-params.js +169 -0
- package/dist/middleware/common-params.js.map +1 -0
- package/dist/middleware/safety.d.ts +30 -0
- package/dist/middleware/safety.d.ts.map +1 -0
- package/dist/middleware/safety.js +64 -0
- package/dist/middleware/safety.js.map +1 -0
- package/dist/output/errors.d.ts +69 -0
- package/dist/output/errors.d.ts.map +1 -0
- package/dist/output/errors.js +193 -0
- package/dist/output/errors.js.map +1 -0
- package/dist/output/formatter.d.ts +80 -0
- package/dist/output/formatter.d.ts.map +1 -0
- package/dist/output/formatter.js +285 -0
- package/dist/output/formatter.js.map +1 -0
- package/dist/output/stream-writer.d.ts +33 -0
- package/dist/output/stream-writer.d.ts.map +1 -0
- package/dist/output/stream-writer.js +74 -0
- package/dist/output/stream-writer.js.map +1 -0
- package/dist/parsing/domain-parser.d.ts +61 -0
- package/dist/parsing/domain-parser.d.ts.map +1 -0
- package/dist/parsing/domain-parser.js +427 -0
- package/dist/parsing/domain-parser.js.map +1 -0
- package/dist/parsing/json-arg.d.ts +48 -0
- package/dist/parsing/json-arg.d.ts.map +1 -0
- package/dist/parsing/json-arg.js +165 -0
- package/dist/parsing/json-arg.js.map +1 -0
- package/package.json +53 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* odoo-cli — CLI for Odoo ERP
|
|
4
|
+
*
|
|
5
|
+
* Entry point. Sets up Commander program with global flags and all command groups.
|
|
6
|
+
*
|
|
7
|
+
* Output contract:
|
|
8
|
+
* stdout = data only (JSON, table, CSV, ndjson) — always parseable
|
|
9
|
+
* stderr = errors, progress, warnings, decorative messages
|
|
10
|
+
*
|
|
11
|
+
* Safety model:
|
|
12
|
+
* READ → no --confirm required
|
|
13
|
+
* WRITE → --confirm required
|
|
14
|
+
* DESTRUCTIVE → --confirm required (+ explicit warning)
|
|
15
|
+
*
|
|
16
|
+
* Exit codes:
|
|
17
|
+
* 0 success
|
|
18
|
+
* 1 usage error
|
|
19
|
+
* 2 auth / network error
|
|
20
|
+
* 3 not found
|
|
21
|
+
* 4 permission denied
|
|
22
|
+
* 5 validation error
|
|
23
|
+
* 6 conflict
|
|
24
|
+
* 10 partial success
|
|
25
|
+
*/
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* odoo-cli — CLI for Odoo ERP
|
|
5
|
+
*
|
|
6
|
+
* Entry point. Sets up Commander program with global flags and all command groups.
|
|
7
|
+
*
|
|
8
|
+
* Output contract:
|
|
9
|
+
* stdout = data only (JSON, table, CSV, ndjson) — always parseable
|
|
10
|
+
* stderr = errors, progress, warnings, decorative messages
|
|
11
|
+
*
|
|
12
|
+
* Safety model:
|
|
13
|
+
* READ → no --confirm required
|
|
14
|
+
* WRITE → --confirm required
|
|
15
|
+
* DESTRUCTIVE → --confirm required (+ explicit warning)
|
|
16
|
+
*
|
|
17
|
+
* Exit codes:
|
|
18
|
+
* 0 success
|
|
19
|
+
* 1 usage error
|
|
20
|
+
* 2 auth / network error
|
|
21
|
+
* 3 not found
|
|
22
|
+
* 4 permission denied
|
|
23
|
+
* 5 validation error
|
|
24
|
+
* 6 conflict
|
|
25
|
+
* 10 partial success
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
const commander_1 = require("commander");
|
|
29
|
+
const config_1 = require("./commands/config");
|
|
30
|
+
const records_1 = require("./commands/records");
|
|
31
|
+
const mail_1 = require("./commands/mail");
|
|
32
|
+
const modules_1 = require("./commands/modules");
|
|
33
|
+
const attendance_1 = require("./commands/attendance");
|
|
34
|
+
const timesheets_1 = require("./commands/timesheets");
|
|
35
|
+
const accounting_1 = require("./commands/accounting");
|
|
36
|
+
const url_1 = require("./commands/url");
|
|
37
|
+
const schema_1 = require("./commands/schema");
|
|
38
|
+
const state_1 = require("./commands/state");
|
|
39
|
+
const errors_1 = require("./output/errors");
|
|
40
|
+
const common_params_1 = require("./middleware/common-params");
|
|
41
|
+
const formatter_1 = require("./output/formatter");
|
|
42
|
+
// Resolve package version at runtime (CJS-compatible)
|
|
43
|
+
let version = '0.1.0';
|
|
44
|
+
try {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
46
|
+
const pkg = require('../package.json');
|
|
47
|
+
version = pkg.version;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// fallback to default
|
|
51
|
+
}
|
|
52
|
+
const program = new commander_1.Command();
|
|
53
|
+
program
|
|
54
|
+
.name('odoo')
|
|
55
|
+
.description(`CLI for Odoo ERP — records, mail, modules, attendance, timesheets, accounting, schema
|
|
56
|
+
|
|
57
|
+
AUTHENTICATION (env vars or flags)
|
|
58
|
+
ODOO_URL Odoo base URL (or --url)
|
|
59
|
+
ODOO_DB Database name (or --db)
|
|
60
|
+
ODOO_USERNAME Username (or --user)
|
|
61
|
+
ODOO_PASSWORD Password (or --password, avoid in CLI!)
|
|
62
|
+
|
|
63
|
+
SAFETY MODEL
|
|
64
|
+
READ No confirmation needed. Safe to run anywhere.
|
|
65
|
+
WRITE Requires --confirm. Mutates Odoo data.
|
|
66
|
+
DESTRUCTIVE Requires --confirm. May permanently delete data. ⚠
|
|
67
|
+
|
|
68
|
+
Each command's help shows its safety level: [READ], [WRITE], or [DESTRUCTIVE].
|
|
69
|
+
|
|
70
|
+
OUTPUT
|
|
71
|
+
stdout = data only (json, table, csv, ndjson) — always parseable
|
|
72
|
+
stderr = errors, progress, warnings
|
|
73
|
+
|
|
74
|
+
Format auto-detection: TTY → table, pipe → json
|
|
75
|
+
Override with --format json|table|csv|ndjson
|
|
76
|
+
|
|
77
|
+
FIRST RUN
|
|
78
|
+
odoo config check # verify connection
|
|
79
|
+
odoo records search res.partner --limit 5
|
|
80
|
+
odoo schema models --search sale
|
|
81
|
+
`)
|
|
82
|
+
.version(version, '-v, --version', 'Show version')
|
|
83
|
+
.helpOption('-h, --help', 'Show help')
|
|
84
|
+
.addHelpText('after', `
|
|
85
|
+
More help:
|
|
86
|
+
odoo <command> --help # command-specific help
|
|
87
|
+
odoo <command> --help-extra # full skill documentation (paged)
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
odoo config check
|
|
91
|
+
odoo records search crm.lead --fields id,name,stage_id --limit 20
|
|
92
|
+
odoo records create res.partner --data '{"name":"Acme"}' --confirm
|
|
93
|
+
odoo mail note crm.lead 42 "Called customer" --confirm
|
|
94
|
+
odoo modules list --filter installed
|
|
95
|
+
odoo schema fields crm.lead --type many2one
|
|
96
|
+
`);
|
|
97
|
+
// ── Global flags ────────────────────────────────────────────────────
|
|
98
|
+
// These are available on the root program and inherited by subcommands.
|
|
99
|
+
// Defined in common-params.ts (single source of truth).
|
|
100
|
+
program.addOption((0, common_params_1.urlOption)());
|
|
101
|
+
program.addOption((0, common_params_1.dbOption)());
|
|
102
|
+
program.addOption((0, common_params_1.userOption)());
|
|
103
|
+
program.addOption((0, common_params_1.passwordOption)());
|
|
104
|
+
program.addOption((0, common_params_1.formatOption)());
|
|
105
|
+
program.addOption((0, common_params_1.noColorOption)());
|
|
106
|
+
program.addOption((0, common_params_1.quietOption)());
|
|
107
|
+
// Wire --quiet and --no-color flags into output modules.
|
|
108
|
+
// Commander sets opts.color = false when --no-color is passed.
|
|
109
|
+
program.hook('preAction', (thisCommand) => {
|
|
110
|
+
const opts = thisCommand.optsWithGlobals();
|
|
111
|
+
(0, errors_1.setQuiet)(!!opts.quiet);
|
|
112
|
+
(0, formatter_1.setNoColor)(opts.color === false);
|
|
113
|
+
(0, errors_1.setNoColor)(opts.color === false);
|
|
114
|
+
});
|
|
115
|
+
// ── Commands ────────────────────────────────────────────────────────
|
|
116
|
+
program.addCommand((0, config_1.buildConfigCommand)());
|
|
117
|
+
program.addCommand((0, records_1.buildRecordsCommand)());
|
|
118
|
+
program.addCommand((0, mail_1.buildMailCommand)());
|
|
119
|
+
program.addCommand((0, modules_1.buildModulesCommand)());
|
|
120
|
+
program.addCommand((0, attendance_1.buildAttendanceCommand)());
|
|
121
|
+
program.addCommand((0, timesheets_1.buildTimesheetsCommand)());
|
|
122
|
+
program.addCommand((0, accounting_1.buildAccountingCommand)());
|
|
123
|
+
program.addCommand((0, url_1.buildUrlCommand)());
|
|
124
|
+
program.addCommand((0, schema_1.buildSchemaCommand)());
|
|
125
|
+
program.addCommand((0, state_1.buildStateCommand)());
|
|
126
|
+
// ── Error handling ──────────────────────────────────────────────────
|
|
127
|
+
// Commander's built-in error handling — exit 1 on usage errors
|
|
128
|
+
program.exitOverride((err) => {
|
|
129
|
+
if (err.code === 'commander.helpDisplayed') {
|
|
130
|
+
process.exit(0);
|
|
131
|
+
}
|
|
132
|
+
if (err.code === 'commander.version') {
|
|
133
|
+
process.exit(0);
|
|
134
|
+
}
|
|
135
|
+
process.stderr.write(err.message + '\n');
|
|
136
|
+
process.exit(1);
|
|
137
|
+
});
|
|
138
|
+
// Global uncaught error handler — last resort
|
|
139
|
+
process.on('uncaughtException', (err) => {
|
|
140
|
+
const code = (0, errors_1.handleError)(err);
|
|
141
|
+
process.exit(code);
|
|
142
|
+
});
|
|
143
|
+
process.on('unhandledRejection', (err) => {
|
|
144
|
+
const code = (0, errors_1.handleError)(err);
|
|
145
|
+
process.exit(code);
|
|
146
|
+
});
|
|
147
|
+
// ── Main ────────────────────────────────────────────────────────────
|
|
148
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
149
|
+
const code = (0, errors_1.handleError)(err);
|
|
150
|
+
process.exit(code);
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `odoo accounting` command group — all read-only accounting queries.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* accounting cash-accounts Discover cash/bank journal accounts [READ]
|
|
6
|
+
* accounting cash-balance Show balance as-of a date [READ]
|
|
7
|
+
* accounting trace-recon Show reconciliation for a move [READ]
|
|
8
|
+
* accounting posted-moves List posted journal entries [READ]
|
|
9
|
+
* accounting days-to-pay Payment term analysis for an invoice [READ]
|
|
10
|
+
*
|
|
11
|
+
* All commands are READ — no mutations, no --confirm required.
|
|
12
|
+
* Requires account module (Invoicing/Accounting) to be installed.
|
|
13
|
+
*/
|
|
14
|
+
import { Command } from 'commander';
|
|
15
|
+
export declare function buildAccountingCommand(): Command;
|
|
16
|
+
//# sourceMappingURL=accounting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounting.d.ts","sourceRoot":"","sources":["../../src/commands/accounting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,sBAAsB,IAAI,OAAO,CAmChD"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `odoo accounting` command group — all read-only accounting queries.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* accounting cash-accounts Discover cash/bank journal accounts [READ]
|
|
7
|
+
* accounting cash-balance Show balance as-of a date [READ]
|
|
8
|
+
* accounting trace-recon Show reconciliation for a move [READ]
|
|
9
|
+
* accounting posted-moves List posted journal entries [READ]
|
|
10
|
+
* accounting days-to-pay Payment term analysis for an invoice [READ]
|
|
11
|
+
*
|
|
12
|
+
* All commands are READ — no mutations, no --confirm required.
|
|
13
|
+
* Requires account module (Invoicing/Accounting) to be installed.
|
|
14
|
+
*/
|
|
15
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.buildAccountingCommand = buildAccountingCommand;
|
|
20
|
+
const commander_1 = require("commander");
|
|
21
|
+
const debug_1 = __importDefault(require("debug"));
|
|
22
|
+
const auth_1 = require("../middleware/auth");
|
|
23
|
+
const common_params_1 = require("../middleware/common-params");
|
|
24
|
+
const formatter_1 = require("../output/formatter");
|
|
25
|
+
const errors_1 = require("../output/errors");
|
|
26
|
+
const stream_writer_1 = require("../output/stream-writer");
|
|
27
|
+
const extra_help_1 = require("../help/extra-help");
|
|
28
|
+
const log = (0, debug_1.default)('odoo-cli:accounting');
|
|
29
|
+
function buildAccountingCommand() {
|
|
30
|
+
const acc = new commander_1.Command('accounting')
|
|
31
|
+
.description('Read-only accounting queries — cash discovery, balances, reconciliation')
|
|
32
|
+
.addHelpText('after', `
|
|
33
|
+
All commands are READ-ONLY — no confirmation required.
|
|
34
|
+
Requires: account Odoo module (Invoicing/Accounting).
|
|
35
|
+
|
|
36
|
+
Examples:
|
|
37
|
+
odoo accounting cash-accounts
|
|
38
|
+
odoo accounting cash-balance --as-of 2024-03-31
|
|
39
|
+
odoo accounting posted-moves --from 2024-01-01 --to 2024-03-31
|
|
40
|
+
odoo accounting trace-recon 42
|
|
41
|
+
odoo accounting days-to-pay 1042
|
|
42
|
+
`);
|
|
43
|
+
// --help-extra
|
|
44
|
+
acc.option('--help-extra', 'Show extended skill documentation for accounting');
|
|
45
|
+
acc.hook('preAction', async (thisCommand) => {
|
|
46
|
+
const opts = thisCommand.opts();
|
|
47
|
+
if (opts.helpExtra) {
|
|
48
|
+
await (0, extra_help_1.showHelpExtra)('accounting');
|
|
49
|
+
process.exit(0);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
acc.addCommand(buildCashAccountsCommand());
|
|
53
|
+
acc.addCommand(buildCashBalanceCommand());
|
|
54
|
+
acc.addCommand(buildTraceReconCommand());
|
|
55
|
+
acc.addCommand(buildPostedMovesCommand());
|
|
56
|
+
acc.addCommand(buildDaysToPayCommand());
|
|
57
|
+
return acc;
|
|
58
|
+
}
|
|
59
|
+
function buildCashAccountsCommand() {
|
|
60
|
+
const cmd = new commander_1.Command('cash-accounts')
|
|
61
|
+
.description('Discover cash and bank journal accounts [READ]')
|
|
62
|
+
.addHelpText('after', `
|
|
63
|
+
Examples:
|
|
64
|
+
odoo accounting cash-accounts
|
|
65
|
+
odoo accounting cash-accounts --format json
|
|
66
|
+
`);
|
|
67
|
+
(0, common_params_1.addAuthOptions)(cmd);
|
|
68
|
+
(0, common_params_1.addOutputOptions)(cmd);
|
|
69
|
+
cmd.action(async () => {
|
|
70
|
+
const opts = cmd.optsWithGlobals();
|
|
71
|
+
log('accounting cash-accounts');
|
|
72
|
+
let client;
|
|
73
|
+
try {
|
|
74
|
+
client = await (0, auth_1.createAuthClient)(opts);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
process.exit((0, errors_1.handleError)(err));
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const accounts = await client.accounting.discoverCashAccounts();
|
|
81
|
+
const format = (0, formatter_1.resolveFormat)(opts.format);
|
|
82
|
+
const rows = accounts.map((a) => ({
|
|
83
|
+
journal_name: a.journalName,
|
|
84
|
+
journal_type: a.journalType,
|
|
85
|
+
account_id: a.accountId,
|
|
86
|
+
account_name: a.accountName,
|
|
87
|
+
}));
|
|
88
|
+
await (0, formatter_1.render)(rows, format);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
process.exit((0, errors_1.handleError)(err));
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
client?.logout();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return cmd;
|
|
98
|
+
}
|
|
99
|
+
function buildCashBalanceCommand() {
|
|
100
|
+
const cmd = new commander_1.Command('cash-balance')
|
|
101
|
+
.description('Show cash/bank balance as-of a date [READ]')
|
|
102
|
+
.addHelpText('after', `
|
|
103
|
+
Examples:
|
|
104
|
+
odoo accounting cash-balance
|
|
105
|
+
odoo accounting cash-balance --as-of 2024-03-31
|
|
106
|
+
BALANCE=$(odoo accounting cash-balance --format json | jq '[.[].balance] | add')
|
|
107
|
+
`);
|
|
108
|
+
(0, common_params_1.addAuthOptions)(cmd);
|
|
109
|
+
(0, common_params_1.addOutputOptions)(cmd);
|
|
110
|
+
cmd.option('--as-of <date>', 'Balance date YYYY-MM-DD (default: today)');
|
|
111
|
+
cmd.option('--journal-id <n,...>', 'Specific journal IDs (default: all cash/bank)');
|
|
112
|
+
cmd.action(async () => {
|
|
113
|
+
const opts = cmd.optsWithGlobals();
|
|
114
|
+
log('accounting cash-balance as-of=%s', opts.asOf);
|
|
115
|
+
const asOf = opts.asOf ?? new Date().toISOString().split('T')[0];
|
|
116
|
+
let client;
|
|
117
|
+
try {
|
|
118
|
+
client = await (0, auth_1.createAuthClient)(opts);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
process.exit((0, errors_1.handleError)(err));
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const format = (0, formatter_1.resolveFormat)(opts.format);
|
|
125
|
+
let cashAccountIds;
|
|
126
|
+
if (opts.journalId) {
|
|
127
|
+
// Resolve account IDs from journal IDs
|
|
128
|
+
const journalIds = opts.journalId.split(',').map((s) => parseInt(s.trim(), 10));
|
|
129
|
+
const journals = await client.searchRead('account.journal', [['id', 'in', journalIds]], { fields: ['default_account_id'] });
|
|
130
|
+
cashAccountIds = journals
|
|
131
|
+
.filter((j) => Array.isArray(j.default_account_id))
|
|
132
|
+
.map((j) => j.default_account_id[0]);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
cashAccountIds = await client.accounting.getCashAccountIds();
|
|
136
|
+
}
|
|
137
|
+
if (cashAccountIds.length === 0) {
|
|
138
|
+
process.stderr.write('No cash/bank accounts found\n');
|
|
139
|
+
process.exit(errors_1.EXIT_CODES.NOT_FOUND);
|
|
140
|
+
}
|
|
141
|
+
// Get per-account balances
|
|
142
|
+
const accounts = await client.accounting.discoverCashAccounts();
|
|
143
|
+
const rows = [];
|
|
144
|
+
let totalBalance = 0;
|
|
145
|
+
for (const account of accounts) {
|
|
146
|
+
if (!cashAccountIds.includes(account.accountId))
|
|
147
|
+
continue;
|
|
148
|
+
const balance = await client.accounting.getCashBalance([account.accountId], asOf);
|
|
149
|
+
rows.push({
|
|
150
|
+
journal: account.journalName,
|
|
151
|
+
balance,
|
|
152
|
+
currency: 'EUR', // Odoo doesn't easily expose currency per account without more calls
|
|
153
|
+
});
|
|
154
|
+
totalBalance += balance;
|
|
155
|
+
}
|
|
156
|
+
if (format === 'json' || format === 'ndjson') {
|
|
157
|
+
await (0, stream_writer_1.writeStdout)(JSON.stringify(rows, null, format === 'json' ? 2 : 0) + '\n');
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
await (0, formatter_1.render)(rows.map((r) => ({ ...r, balance: r.balance.toFixed(2) })), format);
|
|
161
|
+
process.stderr.write(`TOTAL: ${totalBalance.toFixed(2)}\n`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
process.exit((0, errors_1.handleError)(err));
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
client?.logout();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
return cmd;
|
|
172
|
+
}
|
|
173
|
+
function buildTraceReconCommand() {
|
|
174
|
+
const cmd = new commander_1.Command('trace-recon')
|
|
175
|
+
.description('Show reconciliation trace for a journal entry move [READ]')
|
|
176
|
+
.argument('<move-id>', 'Journal entry (account.move) ID')
|
|
177
|
+
.addHelpText('after', `
|
|
178
|
+
Examples:
|
|
179
|
+
odoo accounting trace-recon 42
|
|
180
|
+
odoo accounting trace-recon 42 --format json
|
|
181
|
+
`);
|
|
182
|
+
(0, common_params_1.addAuthOptions)(cmd);
|
|
183
|
+
(0, common_params_1.addOutputOptions)(cmd);
|
|
184
|
+
cmd.action(async (moveIdStr) => {
|
|
185
|
+
const opts = cmd.optsWithGlobals();
|
|
186
|
+
const moveId = parseInt(moveIdStr, 10);
|
|
187
|
+
if (isNaN(moveId)) {
|
|
188
|
+
process.stderr.write(`✗ Error: Invalid move-id '${moveIdStr}'\n`);
|
|
189
|
+
process.exit(errors_1.EXIT_CODES.USAGE_ERROR);
|
|
190
|
+
}
|
|
191
|
+
log('accounting trace-recon %d', moveId);
|
|
192
|
+
let client;
|
|
193
|
+
try {
|
|
194
|
+
client = await (0, auth_1.createAuthClient)(opts);
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
process.exit((0, errors_1.handleError)(err));
|
|
198
|
+
}
|
|
199
|
+
try {
|
|
200
|
+
const format = (0, formatter_1.resolveFormat)(opts.format);
|
|
201
|
+
// Find reconcile_id on the move's lines
|
|
202
|
+
const lines = await client.searchRead('account.move.line', [
|
|
203
|
+
['move_id', '=', moveId],
|
|
204
|
+
['full_reconcile_id', '!=', false],
|
|
205
|
+
], { fields: ['full_reconcile_id'], limit: 1 });
|
|
206
|
+
if (lines.length === 0) {
|
|
207
|
+
process.stderr.write(`No reconciliation found for move#${moveId}\n`);
|
|
208
|
+
process.exit(errors_1.EXIT_CODES.NOT_FOUND);
|
|
209
|
+
}
|
|
210
|
+
const fullReconcileId = lines[0].full_reconcile_id[0];
|
|
211
|
+
const trace = await client.accounting.traceReconciliation(fullReconcileId);
|
|
212
|
+
if (format === 'json' || format === 'ndjson') {
|
|
213
|
+
await (0, stream_writer_1.writeStdout)(JSON.stringify(trace, null, format === 'json' ? 2 : 0) + '\n');
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const rows = trace.lines.map((l) => ({
|
|
217
|
+
move_id: l.move_id,
|
|
218
|
+
account: Array.isArray(l.account_id) ? l.account_id[1] : l.account_id,
|
|
219
|
+
partner: Array.isArray(l.partner_id) ? l.partner_id[1] : '',
|
|
220
|
+
debit: typeof l.debit === 'number' ? l.debit.toFixed(2) : '',
|
|
221
|
+
credit: typeof l.credit === 'number' ? l.credit.toFixed(2) : '',
|
|
222
|
+
}));
|
|
223
|
+
await (0, formatter_1.render)(rows, format);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
process.exit((0, errors_1.handleError)(err));
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
client?.logout();
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
return cmd;
|
|
234
|
+
}
|
|
235
|
+
function buildPostedMovesCommand() {
|
|
236
|
+
const cmd = new commander_1.Command('posted-moves')
|
|
237
|
+
.description('List posted journal entries [READ]')
|
|
238
|
+
.addHelpText('after', `
|
|
239
|
+
Examples:
|
|
240
|
+
odoo accounting posted-moves --from 2024-01-01 --to 2024-03-31
|
|
241
|
+
odoo accounting posted-moves --journal-id 5 --format csv > moves.csv
|
|
242
|
+
`);
|
|
243
|
+
(0, common_params_1.addAuthOptions)(cmd);
|
|
244
|
+
(0, common_params_1.addOutputOptions)(cmd);
|
|
245
|
+
cmd.option('--from <date>', 'Start date YYYY-MM-DD');
|
|
246
|
+
cmd.option('--to <date>', 'End date YYYY-MM-DD');
|
|
247
|
+
cmd.option('--journal-id <n,...>', 'Filter by journal IDs');
|
|
248
|
+
cmd.action(async () => {
|
|
249
|
+
const opts = cmd.optsWithGlobals();
|
|
250
|
+
log('accounting posted-moves from=%s to=%s', opts.from, opts.to);
|
|
251
|
+
let client;
|
|
252
|
+
try {
|
|
253
|
+
client = await (0, auth_1.createAuthClient)(opts);
|
|
254
|
+
}
|
|
255
|
+
catch (err) {
|
|
256
|
+
process.exit((0, errors_1.handleError)(err));
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
const domain = [];
|
|
260
|
+
if (opts.from)
|
|
261
|
+
domain.push(['date', '>=', opts.from]);
|
|
262
|
+
if (opts.to)
|
|
263
|
+
domain.push(['date', '<=', opts.to]);
|
|
264
|
+
if (opts.journalId) {
|
|
265
|
+
const jIds = opts.journalId.split(',').map((s) => parseInt(s.trim(), 10));
|
|
266
|
+
domain.push(['journal_id', 'in', jIds]);
|
|
267
|
+
}
|
|
268
|
+
const lines = await client.accounting.getPostedMoveLines(domain, {
|
|
269
|
+
fields: [
|
|
270
|
+
'move_id',
|
|
271
|
+
'date',
|
|
272
|
+
'account_id',
|
|
273
|
+
'partner_id',
|
|
274
|
+
'name',
|
|
275
|
+
'debit',
|
|
276
|
+
'credit',
|
|
277
|
+
'balance',
|
|
278
|
+
],
|
|
279
|
+
limit: 200,
|
|
280
|
+
});
|
|
281
|
+
const format = (0, formatter_1.resolveFormat)(opts.format);
|
|
282
|
+
const rows = lines.map((l) => ({
|
|
283
|
+
move: Array.isArray(l.move_id) ? l.move_id[1] : l.move_id,
|
|
284
|
+
date: l.date,
|
|
285
|
+
account: Array.isArray(l.account_id) ? l.account_id[1] : l.account_id,
|
|
286
|
+
partner: Array.isArray(l.partner_id) ? l.partner_id[1] : '',
|
|
287
|
+
description: l.name ?? '',
|
|
288
|
+
debit: typeof l.debit === 'number' ? l.debit.toFixed(2) : '',
|
|
289
|
+
credit: typeof l.credit === 'number' ? l.credit.toFixed(2) : '',
|
|
290
|
+
}));
|
|
291
|
+
await (0, formatter_1.render)(rows, format);
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
process.exit((0, errors_1.handleError)(err));
|
|
295
|
+
}
|
|
296
|
+
finally {
|
|
297
|
+
client?.logout();
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
return cmd;
|
|
301
|
+
}
|
|
302
|
+
function buildDaysToPayCommand() {
|
|
303
|
+
const cmd = new commander_1.Command('days-to-pay')
|
|
304
|
+
.description('Payment term analysis for an invoice [READ]')
|
|
305
|
+
.argument('<move-id>', 'Invoice (account.move) ID')
|
|
306
|
+
.addHelpText('after', `
|
|
307
|
+
Returns null if the invoice is not yet paid.
|
|
308
|
+
|
|
309
|
+
Examples:
|
|
310
|
+
odoo accounting days-to-pay 1042
|
|
311
|
+
odoo accounting days-to-pay 1042 --format json
|
|
312
|
+
`);
|
|
313
|
+
(0, common_params_1.addAuthOptions)(cmd);
|
|
314
|
+
(0, common_params_1.addOutputOptions)(cmd);
|
|
315
|
+
cmd.action(async (moveIdStr) => {
|
|
316
|
+
const opts = cmd.optsWithGlobals();
|
|
317
|
+
const moveId = parseInt(moveIdStr, 10);
|
|
318
|
+
if (isNaN(moveId)) {
|
|
319
|
+
process.stderr.write(`✗ Error: Invalid move-id '${moveIdStr}'\n`);
|
|
320
|
+
process.exit(errors_1.EXIT_CODES.USAGE_ERROR);
|
|
321
|
+
}
|
|
322
|
+
log('accounting days-to-pay %d', moveId);
|
|
323
|
+
let client;
|
|
324
|
+
try {
|
|
325
|
+
client = await (0, auth_1.createAuthClient)(opts);
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
process.exit((0, errors_1.handleError)(err));
|
|
329
|
+
}
|
|
330
|
+
try {
|
|
331
|
+
const result = await client.accounting.calculateDaysToPay(moveId);
|
|
332
|
+
const format = (0, formatter_1.resolveFormat)(opts.format);
|
|
333
|
+
if (!result) {
|
|
334
|
+
if (format === 'json' || format === 'ndjson') {
|
|
335
|
+
await (0, stream_writer_1.writeStdout)(JSON.stringify(null) + '\n');
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
process.stdout.write('Invoice is not yet paid (no reconciliation found)\n');
|
|
339
|
+
}
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
if (format === 'json' || format === 'ndjson') {
|
|
343
|
+
await (0, stream_writer_1.writeStdout)(JSON.stringify(result, null, format === 'json' ? 2 : 0) + '\n');
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
await (0, formatter_1.renderKeyValue)({
|
|
347
|
+
invoice_id: String(moveId),
|
|
348
|
+
days: String(result.days),
|
|
349
|
+
invoice_date: result.invoiceDate,
|
|
350
|
+
payment_date: result.paymentDate,
|
|
351
|
+
}, format);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch (err) {
|
|
355
|
+
process.exit((0, errors_1.handleError)(err));
|
|
356
|
+
}
|
|
357
|
+
finally {
|
|
358
|
+
client?.logout();
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
return cmd;
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=accounting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounting.js","sourceRoot":"","sources":["../../src/commands/accounting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `odoo attendance` command group.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* attendance clock-in Record clock-in [WRITE]
|
|
6
|
+
* attendance clock-out Record clock-out [WRITE]
|
|
7
|
+
* attendance status Show current status [READ]
|
|
8
|
+
* attendance list List records by date range [READ]
|
|
9
|
+
*
|
|
10
|
+
* Requires hr_attendance module to be installed.
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
export declare function buildAttendanceCommand(): Command;
|
|
14
|
+
//# sourceMappingURL=attendance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attendance.d.ts","sourceRoot":"","sources":["../../src/commands/attendance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyDpC,wBAAgB,sBAAsB,IAAI,OAAO,CAyChD"}
|