@newpeak/barista-cli 0.1.16 → 0.1.18

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/liberica/client-price/create.d.ts +3 -0
  3. package/dist/commands/liberica/client-price/create.d.ts.map +1 -0
  4. package/dist/commands/liberica/client-price/create.js +179 -0
  5. package/dist/commands/liberica/client-price/create.js.map +1 -0
  6. package/dist/commands/liberica/client-price/delete.d.ts +3 -0
  7. package/dist/commands/liberica/client-price/delete.d.ts.map +1 -0
  8. package/dist/commands/liberica/client-price/delete.js +102 -0
  9. package/dist/commands/liberica/client-price/delete.js.map +1 -0
  10. package/dist/commands/liberica/client-price/diff.d.ts +3 -0
  11. package/dist/commands/liberica/client-price/diff.d.ts.map +1 -0
  12. package/dist/commands/liberica/client-price/diff.js +162 -0
  13. package/dist/commands/liberica/client-price/diff.js.map +1 -0
  14. package/dist/commands/liberica/client-price/disable.d.ts +3 -0
  15. package/dist/commands/liberica/client-price/disable.d.ts.map +1 -0
  16. package/dist/commands/liberica/client-price/disable.js +63 -0
  17. package/dist/commands/liberica/client-price/disable.js.map +1 -0
  18. package/dist/commands/liberica/client-price/enable.d.ts +3 -0
  19. package/dist/commands/liberica/client-price/enable.d.ts.map +1 -0
  20. package/dist/commands/liberica/client-price/enable.js +63 -0
  21. package/dist/commands/liberica/client-price/enable.js.map +1 -0
  22. package/dist/commands/liberica/client-price/expire.d.ts +3 -0
  23. package/dist/commands/liberica/client-price/expire.d.ts.map +1 -0
  24. package/dist/commands/liberica/client-price/expire.js +167 -0
  25. package/dist/commands/liberica/client-price/expire.js.map +1 -0
  26. package/dist/commands/liberica/client-price/get.d.ts +3 -0
  27. package/dist/commands/liberica/client-price/get.d.ts.map +1 -0
  28. package/dist/commands/liberica/client-price/get.js +93 -0
  29. package/dist/commands/liberica/client-price/get.js.map +1 -0
  30. package/dist/commands/liberica/client-price/history.d.ts +3 -0
  31. package/dist/commands/liberica/client-price/history.d.ts.map +1 -0
  32. package/dist/commands/liberica/client-price/history.js +114 -0
  33. package/dist/commands/liberica/client-price/history.js.map +1 -0
  34. package/dist/commands/liberica/client-price/index.d.ts +3 -0
  35. package/dist/commands/liberica/client-price/index.d.ts.map +1 -0
  36. package/dist/commands/liberica/client-price/index.js +29 -0
  37. package/dist/commands/liberica/client-price/index.js.map +1 -0
  38. package/dist/commands/liberica/client-price/list.d.ts +3 -0
  39. package/dist/commands/liberica/client-price/list.d.ts.map +1 -0
  40. package/dist/commands/liberica/client-price/list.js +115 -0
  41. package/dist/commands/liberica/client-price/list.js.map +1 -0
  42. package/dist/commands/liberica/client-price/simulate.d.ts +3 -0
  43. package/dist/commands/liberica/client-price/simulate.d.ts.map +1 -0
  44. package/dist/commands/liberica/client-price/simulate.js +124 -0
  45. package/dist/commands/liberica/client-price/simulate.js.map +1 -0
  46. package/dist/commands/liberica/client-price/update.d.ts +3 -0
  47. package/dist/commands/liberica/client-price/update.d.ts.map +1 -0
  48. package/dist/commands/liberica/client-price/update.js +147 -0
  49. package/dist/commands/liberica/client-price/update.js.map +1 -0
  50. package/dist/commands/liberica/employees/update.d.ts.map +1 -1
  51. package/dist/commands/liberica/employees/update.js +9 -1
  52. package/dist/commands/liberica/employees/update.js.map +1 -1
  53. package/dist/commands/liberica/index.d.ts.map +1 -1
  54. package/dist/commands/liberica/index.js +3 -0
  55. package/dist/commands/liberica/index.js.map +1 -1
  56. package/dist/index.js +1 -1
  57. package/dist/types/client-price.d.ts +181 -0
  58. package/dist/types/client-price.d.ts.map +1 -0
  59. package/dist/types/client-price.js +3 -0
  60. package/dist/types/client-price.js.map +1 -0
  61. package/dist/types/employee.d.ts +1 -0
  62. package/dist/types/employee.d.ts.map +1 -1
  63. package/dist/utils/tax.d.ts +82 -0
  64. package/dist/utils/tax.d.ts.map +1 -0
  65. package/dist/utils/tax.js +149 -0
  66. package/dist/utils/tax.js.map +1 -0
  67. package/package.json +25 -2
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2026 Newpeak Technology
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createClientPriceCreateCommand(): Command;
3
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,8BAA8B,IAAI,OAAO,CAkLxD"}
@@ -0,0 +1,179 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../core/config/manager.js';
4
+ import { tokenManager } from '../../../core/auth/token-manager.js';
5
+ import { createAPIClient } from '../../../core/api/client.js';
6
+ import { percentToDecimal, decimalToPercent, getTodayString } from '../../../utils/tax.js';
7
+ export function createClientPriceCreateCommand() {
8
+ const createCommand = new Command('create');
9
+ createCommand.description('Create a new client price');
10
+ createCommand
11
+ .option('--client <code>', 'Client code (required)')
12
+ .option('--material <code>', 'Material code (required)')
13
+ .option('--unit-price <price>', 'Unit price (required)', parseFloat)
14
+ .option('--currency <code>', 'Currency (required)')
15
+ .option('--uom <code>', 'UOM code', 'PCS')
16
+ .option('--min-qty <number>', 'Min order quantity', '1')
17
+ .option('--tax-type <type>', 'Tax type')
18
+ .option('--tax-rate <percent>', 'Tax rate in percent (e.g., 13 for 13%)', parseFloat)
19
+ .option('--effective-date <date>', 'Effective date (YYYY-MM-DD, default: today)')
20
+ .option('--remark <text>', 'Remark')
21
+ .option('--dry-run', 'Preview without making API call')
22
+ .option('--json', 'Output as JSON');
23
+ createCommand.action(async (_options) => {
24
+ const context = configManager.getCurrentContext();
25
+ const environment = context.environment;
26
+ const tenant = context.tenant;
27
+ if (!tenant) {
28
+ console.error(chalk.red('\n✗ No tenant configured. Run "barista liberica auth login" first.\n'));
29
+ process.exit(1);
30
+ }
31
+ const opts = createCommand.opts();
32
+ const clientCode = opts.client;
33
+ const materialCode = opts.material;
34
+ const unitPrice = opts.unitPrice;
35
+ const currency = opts.currency;
36
+ const uom = opts.uom;
37
+ const minQty = parseInt(opts.minQty, 10) || 1;
38
+ const taxType = opts.taxType;
39
+ const taxRatePercent = opts.taxRate;
40
+ const effectiveDate = opts.effectiveDate || getTodayString();
41
+ const remark = opts.remark;
42
+ const dryRun = opts.dryRun === true;
43
+ const jsonOutput = opts.json === true;
44
+ if (!clientCode) {
45
+ if (jsonOutput) {
46
+ console.log(JSON.stringify({ success: false, error: { code: 'VALIDATION_ERROR', message: '--client is required' } }));
47
+ }
48
+ else {
49
+ console.error(chalk.red('\n✗ --client is required\n'));
50
+ }
51
+ process.exit(1);
52
+ }
53
+ if (!materialCode) {
54
+ if (jsonOutput) {
55
+ console.log(JSON.stringify({ success: false, error: { code: 'VALIDATION_ERROR', message: '--material is required' } }));
56
+ }
57
+ else {
58
+ console.error(chalk.red('\n✗ --material is required\n'));
59
+ }
60
+ process.exit(1);
61
+ }
62
+ if (unitPrice === undefined || unitPrice <= 0) {
63
+ if (jsonOutput) {
64
+ console.log(JSON.stringify({ success: false, error: { code: 'VALIDATION_ERROR', message: '--unit-price must be a positive number' } }));
65
+ }
66
+ else {
67
+ console.error(chalk.red('\n✗ --unit-price must be a positive number\n'));
68
+ }
69
+ process.exit(1);
70
+ }
71
+ if (!currency) {
72
+ if (jsonOutput) {
73
+ console.log(JSON.stringify({ success: false, error: { code: 'VALIDATION_ERROR', message: '--currency is required' } }));
74
+ }
75
+ else {
76
+ console.error(chalk.red('\n✗ --currency is required\n'));
77
+ }
78
+ process.exit(1);
79
+ }
80
+ if (taxRatePercent !== undefined && (taxRatePercent < 0 || taxRatePercent > 100)) {
81
+ if (jsonOutput) {
82
+ console.log(JSON.stringify({ success: false, error: { code: 'VALIDATION_ERROR', message: '--tax-rate must be between 0 and 100' } }));
83
+ }
84
+ else {
85
+ console.error(chalk.red('\n✗ --tax-rate must be between 0 and 100\n'));
86
+ }
87
+ process.exit(1);
88
+ }
89
+ const taxRateDecimal = percentToDecimal(taxRatePercent);
90
+ const requestData = {
91
+ clientCode,
92
+ materialCode,
93
+ materialUomCode: uom,
94
+ minOrderNumber: minQty,
95
+ unitPrice,
96
+ currency,
97
+ taxType,
98
+ taxRate: taxRateDecimal,
99
+ effectiveDate,
100
+ remark,
101
+ };
102
+ if (dryRun) {
103
+ if (jsonOutput) {
104
+ console.log(JSON.stringify({ success: true, dryRun: true, data: requestData }, null, 2));
105
+ }
106
+ else {
107
+ console.log(chalk.bold('\n🔍 Dry-Run Mode: No changes will be made\n'));
108
+ console.log(' Client price to be created:');
109
+ console.log(` ${chalk.gray('Client:')} ${clientCode}`);
110
+ console.log(` ${chalk.gray('Material:')} ${materialCode}`);
111
+ console.log(` ${chalk.gray('Unit Price:')} ¥${unitPrice}`);
112
+ console.log(` ${chalk.gray('Currency:')} ${currency}`);
113
+ console.log(` ${chalk.gray('UOM:')} ${uom}`);
114
+ console.log(` ${chalk.gray('Min Qty:')} ${minQty}`);
115
+ console.log(` ${chalk.gray('Tax Rate:')} ${decimalToPercent(taxRateDecimal)}`);
116
+ console.log(` ${chalk.gray('Eff. Date:')} ${effectiveDate}`);
117
+ if (remark)
118
+ console.log(` ${chalk.gray('Remark:')} ${remark}`);
119
+ console.log();
120
+ }
121
+ return;
122
+ }
123
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
124
+ if (!token) {
125
+ console.error(chalk.red('\n✗ Not logged in. Run "barista liberica auth login" first.\n'));
126
+ process.exit(1);
127
+ }
128
+ const client = createAPIClient('liberica', environment, tenant);
129
+ client.setAuthToken(token);
130
+ if (!jsonOutput) {
131
+ console.log(chalk.bold('\n📝 Creating Client Price\n'));
132
+ }
133
+ try {
134
+ const response = await client.getClient().post('/api/enterprise/sales/client/price/add', requestData);
135
+ if (!response.data.success) {
136
+ const errorMsg = response.data.error?.message || 'Failed to create client price';
137
+ const errorCode = response.data.error?.code || 'CREATE_ERROR';
138
+ if (jsonOutput) {
139
+ console.log(JSON.stringify({ success: false, error: { code: errorCode, message: errorMsg } }));
140
+ }
141
+ else {
142
+ console.error(chalk.red(`\n✗ Failed to create client price: ${errorMsg}`));
143
+ if (response.data.error?.code) {
144
+ console.error(chalk.gray(` Error code: ${response.data.error.code}`));
145
+ }
146
+ console.error();
147
+ }
148
+ process.exit(1);
149
+ }
150
+ const created = response.data.data;
151
+ if (jsonOutput) {
152
+ console.log(JSON.stringify({ success: true, data: created }, null, 2));
153
+ }
154
+ else {
155
+ console.log(chalk.green('\n✓ Client price created successfully\n'));
156
+ if (created) {
157
+ console.log(` ${chalk.gray('Price ID:')} ${chalk.green(String(created.clientPriceId))}`);
158
+ console.log(` ${chalk.gray('Client:')} ${created.clientName || created.clientCode}`);
159
+ console.log(` ${chalk.gray('Material:')} ${created.materialName || created.materialCode}`);
160
+ console.log(` ${chalk.gray('Unit Price:')} ¥${created.unitPrice?.toFixed(2)}`);
161
+ console.log(` ${chalk.gray('Eff. Date:')} ${created.effectiveDate}`);
162
+ }
163
+ console.log();
164
+ }
165
+ }
166
+ catch (error) {
167
+ const errMsg = error instanceof Error ? error.message : 'Unknown error';
168
+ if (jsonOutput) {
169
+ console.log(JSON.stringify({ success: false, error: { code: 'API_ERROR', message: errMsg } }));
170
+ }
171
+ else {
172
+ console.error(chalk.red(`\n✗ Error: ${errMsg}\n`));
173
+ }
174
+ process.exit(1);
175
+ }
176
+ });
177
+ return createCommand;
178
+ }
179
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createClientPriceDeleteCommand(): Command;
3
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,8BAA8B,IAAI,OAAO,CAuGxD"}
@@ -0,0 +1,102 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../core/config/manager.js';
4
+ import { tokenManager } from '../../../core/auth/token-manager.js';
5
+ import { createAPIClient } from '../../../core/api/client.js';
6
+ import { getTodayString } from '../../../utils/tax.js';
7
+ export function createClientPriceDeleteCommand() {
8
+ const deleteCommand = new Command('delete');
9
+ deleteCommand.description('Delete a client price');
10
+ deleteCommand.arguments('<id>');
11
+ deleteCommand.option('--force', 'Skip confirmation and delete directly');
12
+ deleteCommand.option('--json', 'Output as JSON');
13
+ deleteCommand.action(async (id, options) => {
14
+ const context = configManager.getCurrentContext();
15
+ const environment = context.environment;
16
+ const tenant = context.tenant;
17
+ const jsonOutput = options.json === true;
18
+ if (!tenant) {
19
+ console.error(chalk.red('\n✗ No tenant configured. Run "barista liberica auth login" first.\n'));
20
+ process.exit(1);
21
+ }
22
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
23
+ if (!token) {
24
+ console.error(chalk.red('\n✗ Not logged in. Run "barista liberica auth login" first.\n'));
25
+ process.exit(1);
26
+ }
27
+ const client = createAPIClient('liberica', environment, tenant);
28
+ client.setAuthToken(token);
29
+ let price = null;
30
+ const detailResponse = await client.getClient().get(`/api/enterprise/sales/client/price/detail?clientPriceId=${id}`);
31
+ if (detailResponse.data.success && detailResponse.data.data) {
32
+ price = detailResponse.data.data;
33
+ }
34
+ if (!jsonOutput) {
35
+ console.log(chalk.bold(`\n🗑️ Delete Client Price (${environment})\n`));
36
+ console.log(chalk.gray(` Price ID: ${id}`));
37
+ if (price) {
38
+ console.log(chalk.gray(` Client: ${price.clientName || price.clientCode}`));
39
+ console.log(chalk.gray(` Material: ${price.materialName || price.materialCode}`));
40
+ console.log(chalk.gray(` Price: ¥${price.unitPrice} | Eff. Date: ${price.effectiveDate}`));
41
+ }
42
+ }
43
+ const today = getTodayString();
44
+ if (price && price.effectiveDate && price.effectiveDate < today) {
45
+ if (jsonOutput) {
46
+ console.log(JSON.stringify({ success: false, error: { code: 'CANNOT_DELETE_HISTORICAL', message: 'Historical prices (effectiveDate < today) cannot be deleted' } }));
47
+ }
48
+ else {
49
+ console.error(chalk.red('\n✗ Cannot delete historical price: effectiveDate is in the past.\n'));
50
+ }
51
+ process.exit(1);
52
+ }
53
+ if (!options.force) {
54
+ if (jsonOutput) {
55
+ console.log(JSON.stringify({ success: true, dryRun: true, priceId: id }));
56
+ }
57
+ else {
58
+ console.log(chalk.cyan('\n🔍 Dry-Run Mode: No actual deletion will be made\n'));
59
+ console.log(chalk.yellow(' To delete, add: --force\n'));
60
+ }
61
+ return;
62
+ }
63
+ try {
64
+ const response = await client.getClient().post('/api/enterprise/sales/client/price/delete', { clientPriceId: parseInt(id, 10) });
65
+ if (response.data.success) {
66
+ if (jsonOutput) {
67
+ console.log(JSON.stringify({ success: true, clientPriceId: id }));
68
+ }
69
+ else {
70
+ console.log(chalk.green(`\n✓ Client price (ID: ${id}) deleted successfully\n`));
71
+ }
72
+ }
73
+ else {
74
+ const errorMsg = response.data.error?.message || 'Unknown error';
75
+ const errorCode = response.data.error?.code || 'DELETE_ERROR';
76
+ if (jsonOutput) {
77
+ console.log(JSON.stringify({ success: false, error: { code: errorCode, message: errorMsg } }));
78
+ }
79
+ else {
80
+ console.error(chalk.red(`\n✗ Failed to delete client price: ${errorMsg}`));
81
+ if (response.data.error?.code) {
82
+ console.error(chalk.gray(` Error code: ${response.data.error.code}`));
83
+ }
84
+ console.error();
85
+ }
86
+ process.exit(1);
87
+ }
88
+ }
89
+ catch (error) {
90
+ const errMsg = error instanceof Error ? error.message : 'Unknown error';
91
+ if (jsonOutput) {
92
+ console.log(JSON.stringify({ success: false, error: { code: 'API_ERROR', message: errMsg } }));
93
+ }
94
+ else {
95
+ console.error(chalk.red(`\n✗ Error: ${errMsg}\n`));
96
+ }
97
+ process.exit(1);
98
+ }
99
+ });
100
+ return deleteCommand;
101
+ }
102
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createClientPriceDiffCommand(): Command;
3
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,4BAA4B,IAAI,OAAO,CA0KtD"}
@@ -0,0 +1,162 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { configManager } from '../../../core/config/manager.js';
5
+ import { tokenManager } from '../../../core/auth/token-manager.js';
6
+ import { createAPIClient } from '../../../core/api/client.js';
7
+ import { decimalToPercent, calculatePriceChange } from '../../../utils/tax.js';
8
+ export function createClientPriceDiffCommand() {
9
+ const diffCommand = new Command('diff');
10
+ diffCommand.description('Compare prices at two different dates');
11
+ diffCommand
12
+ .requiredOption('--client <code>', 'Client code')
13
+ .requiredOption('--material <code>', 'Material code')
14
+ .requiredOption('--date1 <date>', 'First date (YYYY-MM-DD)')
15
+ .requiredOption('--date2 <date>', 'Second date (YYYY-MM-DD)')
16
+ .option('--uom <code>', 'UOM code')
17
+ .option('--json', 'Output as JSON');
18
+ diffCommand.action(async (options) => {
19
+ const context = configManager.getCurrentContext();
20
+ const environment = context.environment;
21
+ const tenant = context.tenant;
22
+ const jsonOutput = options.json === true;
23
+ if (!tenant) {
24
+ console.error(chalk.red('\n✗ No tenant configured. Run "barista liberica auth login" first.\n'));
25
+ process.exit(1);
26
+ }
27
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
28
+ if (!token) {
29
+ console.error(chalk.red('\n✗ Not logged in. Run "barista liberica auth login" first.\n'));
30
+ process.exit(1);
31
+ }
32
+ const client = createAPIClient('liberica', environment, tenant);
33
+ client.setAuthToken(token);
34
+ const queryString = new URLSearchParams();
35
+ queryString.append('clientCode', options.client);
36
+ queryString.append('materialCode', options.material);
37
+ if (options.uom)
38
+ queryString.append('materialUomCode', options.uom);
39
+ try {
40
+ const response = await client.getClient().get(`/api/enterprise/sales/client/price/list?${queryString.toString()}`);
41
+ if (!response.data.success) {
42
+ const errMsg = response.data.error?.message || 'Failed to fetch prices';
43
+ if (jsonOutput) {
44
+ console.log(JSON.stringify({ success: false, error: response.data.error }));
45
+ }
46
+ else {
47
+ console.error(chalk.red(`\n✗ ${errMsg}\n`));
48
+ }
49
+ process.exit(1);
50
+ }
51
+ const allPrices = response.data.data || [];
52
+ const findPriceAtDate = (date) => allPrices
53
+ .filter((p) => p.statusFlag === 'ENABLE')
54
+ .filter((p) => p.effectiveDate <= date)
55
+ .filter((p) => !options.uom || p.materialUomCode === options.uom)
56
+ .sort((a, b) => b.effectiveDate.localeCompare(a.effectiveDate))[0];
57
+ const price1 = findPriceAtDate(options.date1);
58
+ const price2 = findPriceAtDate(options.date2);
59
+ if (jsonOutput) {
60
+ console.log(JSON.stringify({
61
+ success: true,
62
+ date1: options.date1,
63
+ date2: options.date2,
64
+ price1,
65
+ price2,
66
+ changes: price1 && price2 ? {
67
+ unitPrice: calculatePriceChange(price1.unitPrice, price2.unitPrice),
68
+ taxRate: price1.taxRate !== price2.taxRate ? `${decimalToPercent(price1.taxRate)} → ${decimalToPercent(price2.taxRate)}` : null,
69
+ afterTaxPrice: calculatePriceChange(price1.afterTaxPrice, price2.afterTaxPrice),
70
+ } : null,
71
+ }, null, 2));
72
+ return;
73
+ }
74
+ console.log(chalk.bold('\n Price Comparison\n'));
75
+ console.log(chalk.gray(` Client: ${options.client}`));
76
+ console.log(chalk.gray(` Material: ${options.material}`));
77
+ console.log(chalk.gray(` Dates: ${options.date1} vs ${options.date2}\n`));
78
+ const table = new Table({
79
+ head: [
80
+ chalk.bold('Field'),
81
+ chalk.bold(options.date1),
82
+ chalk.bold(options.date2),
83
+ chalk.bold('Change'),
84
+ ],
85
+ colWidths: [16, 16, 16, 16],
86
+ style: { border: [], head: [] },
87
+ });
88
+ const changes = [];
89
+ if (price1 && price2) {
90
+ const unitPriceChange = calculatePriceChange(price1.unitPrice, price2.unitPrice);
91
+ const unitPriceCell = `¥${price1.unitPrice.toFixed(2)}`;
92
+ let unitPriceCell2 = `¥${price2.unitPrice.toFixed(2)}`;
93
+ let unitPriceDiff = '-';
94
+ if (unitPriceChange.direction === 'up') {
95
+ unitPriceCell2 = chalk.red(`¥${price2.unitPrice.toFixed(2)} ↑`);
96
+ unitPriceDiff = chalk.red(`+¥${unitPriceChange.amount.toFixed(2)} (+${unitPriceChange.percent.toFixed(1)}%)`);
97
+ changes.push(`Unit price ↑ ${unitPriceChange.percent.toFixed(1)}%`);
98
+ }
99
+ else if (unitPriceChange.direction === 'down') {
100
+ unitPriceCell2 = chalk.green(`¥${price2.unitPrice.toFixed(2)} ↓`);
101
+ unitPriceDiff = chalk.green(`-¥${Math.abs(unitPriceChange.amount).toFixed(2)} (${unitPriceChange.percent.toFixed(1)}%)`);
102
+ changes.push(`Unit price ↓ ${Math.abs(unitPriceChange.percent).toFixed(1)}%`);
103
+ }
104
+ else {
105
+ unitPriceDiff = 'No change';
106
+ }
107
+ table.push(['Unit Price', unitPriceCell, unitPriceCell2, unitPriceDiff]);
108
+ const taxRate1 = decimalToPercent(price1.taxRate);
109
+ const taxRate2 = decimalToPercent(price2.taxRate);
110
+ table.push(['Tax Rate', taxRate1, taxRate2, taxRate1 !== taxRate2 ? `${taxRate1} → ${taxRate2}` : 'No change']);
111
+ const afterTaxChange = calculatePriceChange(price1.afterTaxPrice, price2.afterTaxPrice);
112
+ const afterTaxCell = `¥${price1.afterTaxPrice.toFixed(2)}`;
113
+ let afterTaxCell2 = `¥${price2.afterTaxPrice.toFixed(2)}`;
114
+ let afterTaxDiff = '-';
115
+ if (afterTaxChange.direction === 'up') {
116
+ afterTaxCell2 = chalk.red(`¥${price2.afterTaxPrice.toFixed(2)} ↑`);
117
+ afterTaxDiff = chalk.red(`+¥${afterTaxChange.amount.toFixed(2)} (+${afterTaxChange.percent.toFixed(1)}%)`);
118
+ }
119
+ else if (afterTaxChange.direction === 'down') {
120
+ afterTaxCell2 = chalk.green(`¥${price2.afterTaxPrice.toFixed(2)} ↓`);
121
+ afterTaxDiff = chalk.green(`-¥${Math.abs(afterTaxChange.amount).toFixed(2)} (${afterTaxChange.percent.toFixed(1)}%)`);
122
+ }
123
+ else {
124
+ afterTaxDiff = 'No change';
125
+ }
126
+ table.push(['After Tax Price', afterTaxCell, afterTaxCell2, afterTaxDiff]);
127
+ table.push(['Min Order Qty', price1.minOrderNumber?.toString() || '-', price2.minOrderNumber?.toString() || '-', '-']);
128
+ }
129
+ else if (!price1 && price2) {
130
+ table.push([chalk.red('No price at date1'), '-', `¥${price2.unitPrice.toFixed(2)}`, 'New price']);
131
+ changes.push('New price at date2');
132
+ }
133
+ else if (price1 && !price2) {
134
+ table.push([`¥${price1.unitPrice.toFixed(2)}`, chalk.red('No price at date2'), '-', 'Price removed']);
135
+ changes.push('Price removed at date2');
136
+ }
137
+ else {
138
+ table.push(['No prices found', '-', '-', '-']);
139
+ }
140
+ console.log(table.toString());
141
+ if (changes.length > 0) {
142
+ console.log(chalk.gray('\n Summary:'));
143
+ for (const c of changes) {
144
+ console.log(chalk.gray(` • ${c}`));
145
+ }
146
+ }
147
+ console.log();
148
+ }
149
+ catch (error) {
150
+ const errMsg = error instanceof Error ? error.message : 'Unknown error';
151
+ if (jsonOutput) {
152
+ console.log(JSON.stringify({ success: false, error: { code: 'API_ERROR', message: errMsg } }));
153
+ }
154
+ else {
155
+ console.error(chalk.red(`\n✗ ${errMsg}\n`));
156
+ }
157
+ process.exit(1);
158
+ }
159
+ });
160
+ return diffCommand;
161
+ }
162
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createClientPriceDisableCommand(): Command;
3
+ //# sourceMappingURL=disable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/disable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,+BAA+B,IAAI,OAAO,CA8DzD"}
@@ -0,0 +1,63 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../core/config/manager.js';
4
+ import { tokenManager } from '../../../core/auth/token-manager.js';
5
+ import { createAPIClient } from '../../../core/api/client.js';
6
+ export function createClientPriceDisableCommand() {
7
+ const disableCommand = new Command('disable');
8
+ disableCommand.description('Disable one or more client prices');
9
+ disableCommand.arguments('<id...>');
10
+ disableCommand.option('--json', 'Output as JSON');
11
+ disableCommand.action(async (ids, options) => {
12
+ const context = configManager.getCurrentContext();
13
+ const environment = context.environment;
14
+ const tenant = context.tenant;
15
+ const jsonOutput = options.json === true;
16
+ if (!tenant) {
17
+ console.error(chalk.red('\n✗ No tenant configured. Run "barista liberica auth login" first.\n'));
18
+ process.exit(1);
19
+ }
20
+ const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
21
+ if (!token) {
22
+ console.error(chalk.red('\n✗ Not logged in. Run "barista liberica auth login" first.\n'));
23
+ process.exit(1);
24
+ }
25
+ const client = createAPIClient('liberica', environment, tenant);
26
+ client.setAuthToken(token);
27
+ const idList = ids.map((id) => parseInt(id, 10));
28
+ try {
29
+ const response = await client.getClient().post('/api/enterprise/sales/client/price/batchDeActive', { clientPriceIdList: idList });
30
+ if (response.data.success) {
31
+ const successCount = response.data.data?.successCount ?? idList.length;
32
+ if (jsonOutput) {
33
+ console.log(JSON.stringify({ success: true, successCount, ids: idList }));
34
+ }
35
+ else {
36
+ console.log(chalk.green(`\n✓ ${successCount} client price(s) disabled successfully\n`));
37
+ }
38
+ }
39
+ else {
40
+ const errorMsg = response.data.error?.message || 'Unknown error';
41
+ if (jsonOutput) {
42
+ console.log(JSON.stringify({ success: false, error: response.data.error }));
43
+ }
44
+ else {
45
+ console.error(chalk.red(`\n✗ Failed to disable: ${errorMsg}\n`));
46
+ }
47
+ process.exit(1);
48
+ }
49
+ }
50
+ catch (error) {
51
+ const errMsg = error instanceof Error ? error.message : 'Unknown error';
52
+ if (jsonOutput) {
53
+ console.log(JSON.stringify({ success: false, error: { code: 'API_ERROR', message: errMsg } }));
54
+ }
55
+ else {
56
+ console.error(chalk.red(`\n✗ Error: ${errMsg}\n`));
57
+ }
58
+ process.exit(1);
59
+ }
60
+ });
61
+ return disableCommand;
62
+ }
63
+ //# sourceMappingURL=disable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/disable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createClientPriceEnableCommand(): Command;
3
+ //# sourceMappingURL=enable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../../../src/commands/liberica/client-price/enable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,8BAA8B,IAAI,OAAO,CA8DxD"}