@things-factory/sales 0.0.0-stage → 10.1.176
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/CHANGELOG.md +8 -0
- package/assets/images/hatiolab-logo.png +0 -0
- package/dist-client/bootstrap.d.ts +1 -0
- package/dist-client/bootstrap.js +5 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/entity360/opportunity-360.d.ts +12 -0
- package/dist-client/entity360/opportunity-360.js +114 -0
- package/dist-client/entity360/opportunity-360.js.map +1 -0
- package/dist-client/index.d.ts +4 -0
- package/dist-client/index.js +5 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/opportunity-attach.d.ts +17 -0
- package/dist-client/opportunity-attach.js +8 -0
- package/dist-client/opportunity-attach.js.map +1 -0
- package/dist-client/opportunity-words.d.ts +1 -0
- package/dist-client/opportunity-words.js +13 -0
- package/dist-client/opportunity-words.js.map +1 -0
- package/dist-client/pages/opportunity-editor.d.ts +81 -0
- package/dist-client/pages/opportunity-editor.js +482 -0
- package/dist-client/pages/opportunity-editor.js.map +1 -0
- package/dist-client/pages/opportunity-list.d.ts +40 -0
- package/dist-client/pages/opportunity-list.js +134 -0
- package/dist-client/pages/opportunity-list.js.map +1 -0
- package/dist-client/pages/quotation-editor.d.ts +44 -0
- package/dist-client/pages/quotation-editor.js +315 -0
- package/dist-client/pages/quotation-editor.js.map +1 -0
- package/dist-client/pages/quotation-list.d.ts +36 -0
- package/dist-client/pages/quotation-list.js +113 -0
- package/dist-client/pages/quotation-list.js.map +1 -0
- package/dist-client/quotation-attach.d.ts +16 -0
- package/dist-client/quotation-attach.js +8 -0
- package/dist-client/quotation-attach.js.map +1 -0
- package/dist-client/quotation-words.d.ts +1 -0
- package/dist-client/quotation-words.js +13 -0
- package/dist-client/quotation-words.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +17 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/controllers/index.d.ts +0 -0
- package/dist-server/controllers/index.js +1 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/index.d.ts +4 -0
- package/dist-server/index.js +8 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/middlewares/index.d.ts +2 -0
- package/dist-server/middlewares/index.js +7 -0
- package/dist-server/middlewares/index.js.map +1 -0
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/routes.d.ts +0 -0
- package/dist-server/routes.js +24 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/index.d.ts +16 -0
- package/dist-server/service/index.js +21 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/opportunity/index.d.ts +8 -0
- package/dist-server/service/opportunity/index.js +12 -0
- package/dist-server/service/opportunity/index.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-event-query.d.ts +9 -0
- package/dist-server/service/opportunity/opportunity-event-query.js +55 -0
- package/dist-server/service/opportunity/opportunity-event-query.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-event.d.ts +27 -0
- package/dist-server/service/opportunity/opportunity-event.js +115 -0
- package/dist-server/service/opportunity/opportunity-event.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-mutation.d.ts +7 -0
- package/dist-server/service/opportunity/opportunity-mutation.js +64 -0
- package/dist-server/service/opportunity/opportunity-mutation.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-query.d.ts +19 -0
- package/dist-server/service/opportunity/opportunity-query.js +144 -0
- package/dist-server/service/opportunity/opportunity-query.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-rules.d.ts +22 -0
- package/dist-server/service/opportunity/opportunity-rules.js +59 -0
- package/dist-server/service/opportunity/opportunity-rules.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-service.d.ts +19 -0
- package/dist-server/service/opportunity/opportunity-service.js +107 -0
- package/dist-server/service/opportunity/opportunity-service.js.map +1 -0
- package/dist-server/service/opportunity/opportunity-type.d.ts +23 -0
- package/dist-server/service/opportunity/opportunity-type.js +86 -0
- package/dist-server/service/opportunity/opportunity-type.js.map +1 -0
- package/dist-server/service/opportunity/opportunity.d.ts +35 -0
- package/dist-server/service/opportunity/opportunity.js +147 -0
- package/dist-server/service/opportunity/opportunity.js.map +1 -0
- package/dist-server/service/quotation/index.d.ts +10 -0
- package/dist-server/service/quotation/index.js +14 -0
- package/dist-server/service/quotation/index.js.map +1 -0
- package/dist-server/service/quotation/quotation-event-query.d.ts +9 -0
- package/dist-server/service/quotation/quotation-event-query.js +55 -0
- package/dist-server/service/quotation/quotation-event-query.js.map +1 -0
- package/dist-server/service/quotation/quotation-event.d.ts +22 -0
- package/dist-server/service/quotation/quotation-event.js +98 -0
- package/dist-server/service/quotation/quotation-event.js.map +1 -0
- package/dist-server/service/quotation/quotation-item-query.d.ts +8 -0
- package/dist-server/service/quotation/quotation-item-query.js +45 -0
- package/dist-server/service/quotation/quotation-item-query.js.map +1 -0
- package/dist-server/service/quotation/quotation-item.d.ts +18 -0
- package/dist-server/service/quotation/quotation-item.js +75 -0
- package/dist-server/service/quotation/quotation-item.js.map +1 -0
- package/dist-server/service/quotation/quotation-mutation.d.ts +11 -0
- package/dist-server/service/quotation/quotation-mutation.js +117 -0
- package/dist-server/service/quotation/quotation-mutation.js.map +1 -0
- package/dist-server/service/quotation/quotation-query.d.ts +17 -0
- package/dist-server/service/quotation/quotation-query.js +125 -0
- package/dist-server/service/quotation/quotation-query.js.map +1 -0
- package/dist-server/service/quotation/quotation-rules.d.ts +6 -0
- package/dist-server/service/quotation/quotation-rules.js +22 -0
- package/dist-server/service/quotation/quotation-rules.js.map +1 -0
- package/dist-server/service/quotation/quotation-service.d.ts +23 -0
- package/dist-server/service/quotation/quotation-service.js +115 -0
- package/dist-server/service/quotation/quotation-service.js.map +1 -0
- package/dist-server/service/quotation/quotation-type.d.ts +9 -0
- package/dist-server/service/quotation/quotation-type.js +32 -0
- package/dist-server/service/quotation/quotation-type.js.map +1 -0
- package/dist-server/service/quotation/quotation.d.ts +33 -0
- package/dist-server/service/quotation/quotation.js +109 -0
- package/dist-server/service/quotation/quotation.js.map +1 -0
- package/dist-server/service/sales-event.d.ts +15 -0
- package/dist-server/service/sales-event.js +12 -0
- package/dist-server/service/sales-event.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/helps/quotation/quotation.md +160 -0
- package/package.json +46 -4
- package/things-factory.config.js +13 -0
- package/translations/en.json +98 -0
- package/translations/es.json +98 -0
- package/translations/ja.json +98 -0
- package/translations/ko.json +98 -0
- package/translations/ms.json +98 -0
- package/translations/zh.json +98 -0
- package/README.md +0 -3
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Quotation
|
|
2
|
+
|
|
3
|
+
Paragraphs are separated by a blank line.
|
|
4
|
+
|
|
5
|
+
2nd paragraph. _Italic_, **bold**, and `monospace`. Itemized lists
|
|
6
|
+
look like:
|
|
7
|
+
|
|
8
|
+
- this one
|
|
9
|
+
- that one
|
|
10
|
+
- the other one
|
|
11
|
+
|
|
12
|
+
Note that --- not considering the asterisk --- the actual text
|
|
13
|
+
content starts at 4-columns in.
|
|
14
|
+
|
|
15
|
+
> Block quotes are
|
|
16
|
+
> written like so.
|
|
17
|
+
>
|
|
18
|
+
> They can span multiple paragraphs,
|
|
19
|
+
> if you like.
|
|
20
|
+
|
|
21
|
+
Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., "it's all
|
|
22
|
+
in chapters 12--14"). Three dots ... will be converted to an ellipsis.
|
|
23
|
+
Unicode is supported. ☺
|
|
24
|
+
|
|
25
|
+
## An h2 header
|
|
26
|
+
|
|
27
|
+
Here's a numbered list:
|
|
28
|
+
|
|
29
|
+
1. first item
|
|
30
|
+
2. second item
|
|
31
|
+
3. third item
|
|
32
|
+
|
|
33
|
+
Note again how the actual text starts at 4 columns in (4 characters
|
|
34
|
+
from the left side). Here's a code sample:
|
|
35
|
+
|
|
36
|
+
# Let me re-iterate ...
|
|
37
|
+
|
|
38
|
+
for i in 1 .. 10 { do-something(i) }
|
|
39
|
+
|
|
40
|
+
As you probably guessed, indented 4 spaces. By the way, instead of
|
|
41
|
+
indenting the block, you can use delimited blocks, if you like:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
define foobar() {
|
|
45
|
+
print "Welcome to flavor country!";
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
(which makes copying & pasting easier). You can optionally mark the
|
|
50
|
+
delimited block for Pandoc to syntax highlight it:
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
import time
|
|
54
|
+
# Quick, count to ten!
|
|
55
|
+
for i in range(10):
|
|
56
|
+
# (but not *too* quick)
|
|
57
|
+
time.sleep(0.5)
|
|
58
|
+
print(i)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### An h3 header
|
|
62
|
+
|
|
63
|
+
Now a nested list:
|
|
64
|
+
|
|
65
|
+
1. First, get these ingredients:
|
|
66
|
+
|
|
67
|
+
- carrots
|
|
68
|
+
- celery
|
|
69
|
+
- lentils
|
|
70
|
+
|
|
71
|
+
2. Boil some water.
|
|
72
|
+
|
|
73
|
+
3. Dump everything in the pot and follow
|
|
74
|
+
this algorithm:
|
|
75
|
+
|
|
76
|
+
find wooden spoon
|
|
77
|
+
uncover pot
|
|
78
|
+
stir
|
|
79
|
+
cover pot
|
|
80
|
+
balance wooden spoon precariously on pot handle
|
|
81
|
+
wait 10 minutes
|
|
82
|
+
goto first step (or shut off burner when done)
|
|
83
|
+
|
|
84
|
+
Do not bump wooden spoon or it will fall.
|
|
85
|
+
|
|
86
|
+
Notice again how text always lines up on 4-space indents (including
|
|
87
|
+
that last line which continues item 3 above).
|
|
88
|
+
|
|
89
|
+
Here's a link to [a website](http://foo.bar), to a [local
|
|
90
|
+
doc](local-doc.html), and to a [section heading in the current
|
|
91
|
+
doc](#an-h2-header). Here's a footnote [^1].
|
|
92
|
+
|
|
93
|
+
[^1]: Some footnote text.
|
|
94
|
+
|
|
95
|
+
Tables can look like this:
|
|
96
|
+
|
|
97
|
+
Name Size Material Color
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
All Business 9 leather brown
|
|
102
|
+
Roundabout 10 hemp canvas natural
|
|
103
|
+
Cinderella 11 glass transparent
|
|
104
|
+
|
|
105
|
+
Table: Shoes sizes, materials, and colors.
|
|
106
|
+
|
|
107
|
+
(The above is the caption for the table.) Pandoc also supports
|
|
108
|
+
multi-line tables:
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
Keyword Text
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
red Sunsets, apples, and
|
|
117
|
+
other red or reddish
|
|
118
|
+
things.
|
|
119
|
+
|
|
120
|
+
green Leaves, grass, frogs
|
|
121
|
+
and other things it's
|
|
122
|
+
not easy being.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
A horizontal rule follows.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
Here's a definition list:
|
|
131
|
+
|
|
132
|
+
apples
|
|
133
|
+
: Good for making applesauce.
|
|
134
|
+
|
|
135
|
+
oranges
|
|
136
|
+
: Citrus!
|
|
137
|
+
|
|
138
|
+
tomatoes
|
|
139
|
+
: There's no "e" in tomatoe.
|
|
140
|
+
|
|
141
|
+
Again, text is indented 4 spaces. (Put a blank line between each
|
|
142
|
+
term and its definition to spread things out more.)
|
|
143
|
+
|
|
144
|
+
Here's a "line block" (note how whitespace is honored):
|
|
145
|
+
|
|
146
|
+
| Line one
|
|
147
|
+
| Line too
|
|
148
|
+
| Line tree
|
|
149
|
+
|
|
150
|
+
and images can be specified like so:
|
|
151
|
+
|
|
152
|
+

|
|
153
|
+
|
|
154
|
+
Inline math equation: $\omega = d\phi / dt$. Display
|
|
155
|
+
math should get its own line like so:
|
|
156
|
+
|
|
157
|
+
$$I = \int \rho R^{2} dV$$
|
|
158
|
+
|
|
159
|
+
And note that you can backslash-escape any punctuation characters
|
|
160
|
+
which you wish to be displayed literally, ex.: \`foo\`, \*bar\*, etc.
|
package/package.json
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/sales",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "10.1.176",
|
|
4
|
+
"main": "dist-server/index.js",
|
|
5
|
+
"browser": "dist-client/index.js",
|
|
6
|
+
"things-factory": true,
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "heartyoh <heartyoh@hatiolab.com>",
|
|
9
|
+
"description": "Sales opportunities and quotations with revisions, on the commercial document of @things-factory/invoice",
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public",
|
|
12
|
+
"@things-factory:registry": "https://registry.npmjs.org"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/hatiolab/things-factory.git",
|
|
17
|
+
"directory": "packages/sales"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "npm run build:server && npm run build:client",
|
|
21
|
+
"copy:files": "copyfiles -e \"./client/**/*.{ts,js,json}\" -u 1 \"./client/**/*\" dist-client",
|
|
22
|
+
"build:client": "npm run copy:files && npx tsc --p ./client/tsconfig.json",
|
|
23
|
+
"build:server": "npx tsc --p ./server/tsconfig.json",
|
|
24
|
+
"clean:client": "npx rimraf dist-client",
|
|
25
|
+
"clean:server": "npx rimraf dist-server",
|
|
26
|
+
"clean": "npm run clean:server && npm run clean:client",
|
|
27
|
+
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration",
|
|
28
|
+
"test": "node --test test/*.test.mjs",
|
|
29
|
+
"pretest": "npm run build:server"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@material/web": "^2.0.0",
|
|
33
|
+
"@operato/data-grist": "^10.0.0",
|
|
34
|
+
"@operato/graphql": "^10.0.0",
|
|
35
|
+
"@operato/i18n": "^10.0.0",
|
|
36
|
+
"@operato/layout": "^10.0.0",
|
|
37
|
+
"@operato/list-state": "^10.29.1",
|
|
38
|
+
"@operato/popup": "^10.0.0",
|
|
39
|
+
"@operato/shell": "^10.0.0",
|
|
40
|
+
"@operato/styles": "^10.29.1",
|
|
41
|
+
"@operato/utils": "^10.0.0",
|
|
42
|
+
"@things-factory/auth-base": "^10.1.176",
|
|
43
|
+
"@things-factory/biz-base": "^10.1.176",
|
|
44
|
+
"@things-factory/invoice": "^10.1.176",
|
|
45
|
+
"@things-factory/shell": "^10.1.165"
|
|
46
|
+
},
|
|
47
|
+
"gitHead": "24928f127d73de0e9946423bd4c3295f54cce03d"
|
|
48
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import route from './dist-client/route'
|
|
2
|
+
import bootstrap from './dist-client/bootstrap'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
route,
|
|
6
|
+
routes: [
|
|
7
|
+
{ tagname: 'quotation-list', page: 'quotation-list' },
|
|
8
|
+
{ tagname: 'quotation-editor', page: 'quotation-editor' },
|
|
9
|
+
{ tagname: 'opportunity-list', page: 'opportunity-list' },
|
|
10
|
+
{ tagname: 'opportunity-editor', page: 'opportunity-editor' }
|
|
11
|
+
],
|
|
12
|
+
bootstrap
|
|
13
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"button.quotation-accept": "Mark accepted",
|
|
3
|
+
"button.quotation-expire": "Mark expired",
|
|
4
|
+
"button.quotation-new": "New quotation",
|
|
5
|
+
"button.quotation-print": "Print",
|
|
6
|
+
"button.quotation-reject": "Mark declined",
|
|
7
|
+
"button.quotation-revise": "Revise",
|
|
8
|
+
"button.quotation-send": "Send",
|
|
9
|
+
"error.quotation-draft-required": "Revise a sent quotation to change it.",
|
|
10
|
+
"error.quotation-issue-date-required": "Enter the issue date before sending.",
|
|
11
|
+
"error.quotation-latest-required": "Revise the latest version.",
|
|
12
|
+
"error.quotation-not-found": "Quotation not found.",
|
|
13
|
+
"error.quotation-number-duplicate": "Quotation number already exists.",
|
|
14
|
+
"error.quotation-reason-required": "Say why the buyer declined.",
|
|
15
|
+
"error.quotation-revision-invalid": "Only a sent quotation nobody accepted can be revised.",
|
|
16
|
+
"error.quotation-revision-number": "A revision keeps its quotation number.",
|
|
17
|
+
"error.quotation-transition-invalid": "The quotation status or its last day does not allow this.",
|
|
18
|
+
"error.quotation-valid-until": "Enter the last day the offer holds.",
|
|
19
|
+
"field.quotation-outcome-reason": "Reason declined",
|
|
20
|
+
"field.quotation-valid-until": "Valid until",
|
|
21
|
+
"field.quotation-version": "Version",
|
|
22
|
+
"text.quotation-empty": "No quotations yet.",
|
|
23
|
+
"text.quotation-empty-description": "Create the first one with New quotation.",
|
|
24
|
+
"text.quotation-not-found": "Quotation not found.",
|
|
25
|
+
"text.quotation-section-decline": "Declined",
|
|
26
|
+
"text.quotation-status-accepted": "Accepted",
|
|
27
|
+
"text.quotation-status-draft": "Draft",
|
|
28
|
+
"text.quotation-status-expired": "Expired",
|
|
29
|
+
"text.quotation-status-rejected": "Declined",
|
|
30
|
+
"text.quotation-status-sent": "Sent",
|
|
31
|
+
"text.quotation-status-superseded": "Superseded",
|
|
32
|
+
"title.quotation": "Quotation",
|
|
33
|
+
"title.quotation-list": "Quotations",
|
|
34
|
+
"title.quotation-new": "New quotation",
|
|
35
|
+
"title.quotation-print": "QUOTATION",
|
|
36
|
+
"field.quotation-counterpart": "Counterparty",
|
|
37
|
+
"field.quotation-issue-date": "Issue date",
|
|
38
|
+
"field.quotation-number": "Number",
|
|
39
|
+
"field.quotation-status": "Status",
|
|
40
|
+
"field.quotation-total-amount": "Quoted amount",
|
|
41
|
+
"text.quotation-section-head": "Details",
|
|
42
|
+
"text.quotation-section-lines": "Lines",
|
|
43
|
+
"text.quotation-section-totals": "Amounts",
|
|
44
|
+
"button.opportunity-new": "New opportunity",
|
|
45
|
+
"button.opportunity-lose": "Mark as lost",
|
|
46
|
+
"button.opportunity-clear": "Clear",
|
|
47
|
+
"error.opportunity-not-found": "Opportunity not found.",
|
|
48
|
+
"error.opportunity-closed": "This opportunity is closed. Choose an open stage to reopen a lost one.",
|
|
49
|
+
"error.opportunity-stage-open-required": "Choose an open stage. Won and lost are closings.",
|
|
50
|
+
"error.opportunity-stage-move-invalid": "The opportunity cannot move to that stage.",
|
|
51
|
+
"error.opportunity-name-required": "Enter the opportunity name.",
|
|
52
|
+
"error.opportunity-amount-invalid": "The expected amount must be zero or more.",
|
|
53
|
+
"error.opportunity-close-month-invalid": "Enter the expected month.",
|
|
54
|
+
"error.opportunity-probability-invalid": "The probability is a whole number from 0 to 100.",
|
|
55
|
+
"error.opportunity-counterparty-required": "Choose the counterparty.",
|
|
56
|
+
"error.opportunity-end-customer-invalid": "Choose the end customer among the registered counterparties.",
|
|
57
|
+
"error.opportunity-owner-invalid": "Choose the owner among this company's users.",
|
|
58
|
+
"error.opportunity-reason-required": "Enter the reason it was lost.",
|
|
59
|
+
"error.opportunity-closed-on-invalid": "Enter the closing day as YYYY-MM-DD.",
|
|
60
|
+
"field.opportunity-name": "Name",
|
|
61
|
+
"field.opportunity-counterparty": "Counterparty",
|
|
62
|
+
"field.opportunity-end-customer": "End customer",
|
|
63
|
+
"field.opportunity-amount": "Expected amount",
|
|
64
|
+
"field.opportunity-currency": "Currency",
|
|
65
|
+
"field.opportunity-expected-close-month": "Expected month",
|
|
66
|
+
"field.opportunity-owner": "Owner",
|
|
67
|
+
"field.opportunity-description": "Notes",
|
|
68
|
+
"field.opportunity-stage": "Stage",
|
|
69
|
+
"field.opportunity-probability": "Probability",
|
|
70
|
+
"field.opportunity-closed-on": "Closed on",
|
|
71
|
+
"field.opportunity-lost-reason": "Lost reason",
|
|
72
|
+
"field.opportunity-event-at": "When",
|
|
73
|
+
"field.opportunity-event-actor": "By",
|
|
74
|
+
"field.opportunity-event-action": "What",
|
|
75
|
+
"text.opportunity-stage-lead": "Lead",
|
|
76
|
+
"text.opportunity-stage-proposal": "Proposal",
|
|
77
|
+
"text.opportunity-stage-quoted": "Quoted",
|
|
78
|
+
"text.opportunity-stage-negotiation": "Negotiation",
|
|
79
|
+
"text.opportunity-stage-won": "Won",
|
|
80
|
+
"text.opportunity-stage-lost": "Lost",
|
|
81
|
+
"text.opportunity-empty": "No opportunities.",
|
|
82
|
+
"text.opportunity-empty-description": "Create the first one with New opportunity.",
|
|
83
|
+
"text.opportunity-not-found": "Opportunity not found.",
|
|
84
|
+
"text.opportunity-section-head": "Details",
|
|
85
|
+
"text.opportunity-section-stage": "Stage",
|
|
86
|
+
"text.opportunity-section-lose": "Lost",
|
|
87
|
+
"text.opportunity-section-history": "History",
|
|
88
|
+
"text.opportunity-counterparty-search": "Counterparty name or business number",
|
|
89
|
+
"text.opportunity-owner-me": "Me",
|
|
90
|
+
"text.opportunity-event-created": "Created",
|
|
91
|
+
"text.opportunity-event-updated": "Changed",
|
|
92
|
+
"text.opportunity-event-staged": "Stage changed",
|
|
93
|
+
"text.opportunity-event-won": "Won",
|
|
94
|
+
"text.opportunity-event-lost": "Lost",
|
|
95
|
+
"title.opportunity": "Opportunity",
|
|
96
|
+
"title.opportunity-list": "Opportunities",
|
|
97
|
+
"title.opportunity-new": "New opportunity"
|
|
98
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"button.quotation-accept": "Marcar como aceptada",
|
|
3
|
+
"button.quotation-expire": "Marcar como vencida",
|
|
4
|
+
"button.quotation-new": "Nueva cotización",
|
|
5
|
+
"button.quotation-print": "Imprimir",
|
|
6
|
+
"button.quotation-reject": "Marcar como rechazada",
|
|
7
|
+
"button.quotation-revise": "Revisar",
|
|
8
|
+
"button.quotation-send": "Enviar",
|
|
9
|
+
"error.quotation-draft-required": "Para modificar una cotización enviada, cree una revisión.",
|
|
10
|
+
"error.quotation-issue-date-required": "Introduzca la fecha de emisión antes de enviar.",
|
|
11
|
+
"error.quotation-latest-required": "Revise la versión más reciente.",
|
|
12
|
+
"error.quotation-not-found": "No se encontró la cotización.",
|
|
13
|
+
"error.quotation-number-duplicate": "El número de cotización ya existe.",
|
|
14
|
+
"error.quotation-reason-required": "Indique por qué el comprador la rechazó.",
|
|
15
|
+
"error.quotation-revision-invalid": "Solo se puede revisar una cotización enviada que nadie haya aceptado.",
|
|
16
|
+
"error.quotation-revision-number": "Una revisión conserva el número de cotización.",
|
|
17
|
+
"error.quotation-transition-invalid": "El estado de la cotización o su fecha de validez no lo permiten.",
|
|
18
|
+
"error.quotation-valid-until": "Introduzca el último día de validez de la oferta.",
|
|
19
|
+
"field.quotation-outcome-reason": "Motivo del rechazo",
|
|
20
|
+
"field.quotation-valid-until": "Válida hasta",
|
|
21
|
+
"field.quotation-version": "Versión",
|
|
22
|
+
"text.quotation-empty": "Todavía no hay cotizaciones.",
|
|
23
|
+
"text.quotation-empty-description": "Cree la primera con Nueva cotización.",
|
|
24
|
+
"text.quotation-not-found": "No se encontró la cotización.",
|
|
25
|
+
"text.quotation-section-decline": "Rechazada",
|
|
26
|
+
"text.quotation-status-accepted": "Aceptada",
|
|
27
|
+
"text.quotation-status-draft": "Borrador",
|
|
28
|
+
"text.quotation-status-expired": "Vencida",
|
|
29
|
+
"text.quotation-status-rejected": "Rechazada",
|
|
30
|
+
"text.quotation-status-sent": "Enviada",
|
|
31
|
+
"text.quotation-status-superseded": "Sustituida",
|
|
32
|
+
"title.quotation": "Cotización",
|
|
33
|
+
"title.quotation-list": "Cotizaciones",
|
|
34
|
+
"title.quotation-new": "Nueva cotización",
|
|
35
|
+
"title.quotation-print": "COTIZACIÓN",
|
|
36
|
+
"field.quotation-counterpart": "Contraparte",
|
|
37
|
+
"field.quotation-issue-date": "Fecha de emisión",
|
|
38
|
+
"field.quotation-number": "Número",
|
|
39
|
+
"field.quotation-status": "Estado",
|
|
40
|
+
"field.quotation-total-amount": "Importe cotizado",
|
|
41
|
+
"text.quotation-section-head": "Datos",
|
|
42
|
+
"text.quotation-section-lines": "Líneas",
|
|
43
|
+
"text.quotation-section-totals": "Importes",
|
|
44
|
+
"button.opportunity-new": "Nueva oportunidad",
|
|
45
|
+
"button.opportunity-lose": "Marcar como perdida",
|
|
46
|
+
"button.opportunity-clear": "Borrar",
|
|
47
|
+
"error.opportunity-not-found": "No se encontró la oportunidad.",
|
|
48
|
+
"error.opportunity-closed": "Esta oportunidad está cerrada. Elija una etapa abierta para reabrir una perdida.",
|
|
49
|
+
"error.opportunity-stage-open-required": "Elija una etapa abierta. Ganada y perdida son cierres.",
|
|
50
|
+
"error.opportunity-stage-move-invalid": "La oportunidad no puede pasar a esa etapa.",
|
|
51
|
+
"error.opportunity-name-required": "Introduzca el nombre de la oportunidad.",
|
|
52
|
+
"error.opportunity-amount-invalid": "El importe previsto debe ser cero o más.",
|
|
53
|
+
"error.opportunity-close-month-invalid": "Introduzca el mes previsto.",
|
|
54
|
+
"error.opportunity-probability-invalid": "La probabilidad es un número entero de 0 a 100.",
|
|
55
|
+
"error.opportunity-counterparty-required": "Elija la contraparte.",
|
|
56
|
+
"error.opportunity-end-customer-invalid": "Elija el cliente final entre las contrapartes registradas.",
|
|
57
|
+
"error.opportunity-owner-invalid": "Elija el responsable entre los usuarios de esta empresa.",
|
|
58
|
+
"error.opportunity-reason-required": "Indique por qué se perdió.",
|
|
59
|
+
"error.opportunity-closed-on-invalid": "Introduzca el día de cierre como AAAA-MM-DD.",
|
|
60
|
+
"field.opportunity-name": "Nombre",
|
|
61
|
+
"field.opportunity-counterparty": "Contraparte",
|
|
62
|
+
"field.opportunity-end-customer": "Cliente final",
|
|
63
|
+
"field.opportunity-amount": "Importe previsto",
|
|
64
|
+
"field.opportunity-currency": "Moneda",
|
|
65
|
+
"field.opportunity-expected-close-month": "Mes previsto",
|
|
66
|
+
"field.opportunity-owner": "Responsable",
|
|
67
|
+
"field.opportunity-description": "Notas",
|
|
68
|
+
"field.opportunity-stage": "Etapa",
|
|
69
|
+
"field.opportunity-probability": "Probabilidad",
|
|
70
|
+
"field.opportunity-closed-on": "Cerrada el",
|
|
71
|
+
"field.opportunity-lost-reason": "Motivo de pérdida",
|
|
72
|
+
"field.opportunity-event-at": "Cuándo",
|
|
73
|
+
"field.opportunity-event-actor": "Por",
|
|
74
|
+
"field.opportunity-event-action": "Qué",
|
|
75
|
+
"text.opportunity-stage-lead": "Prospecto",
|
|
76
|
+
"text.opportunity-stage-proposal": "Propuesta",
|
|
77
|
+
"text.opportunity-stage-quoted": "Cotizada",
|
|
78
|
+
"text.opportunity-stage-negotiation": "Negociación",
|
|
79
|
+
"text.opportunity-stage-won": "Ganada",
|
|
80
|
+
"text.opportunity-stage-lost": "Perdida",
|
|
81
|
+
"text.opportunity-empty": "No hay oportunidades.",
|
|
82
|
+
"text.opportunity-empty-description": "Cree la primera con Nueva oportunidad.",
|
|
83
|
+
"text.opportunity-not-found": "No se encontró la oportunidad.",
|
|
84
|
+
"text.opportunity-section-head": "Datos",
|
|
85
|
+
"text.opportunity-section-stage": "Etapa",
|
|
86
|
+
"text.opportunity-section-lose": "Perdida",
|
|
87
|
+
"text.opportunity-section-history": "Historial",
|
|
88
|
+
"text.opportunity-counterparty-search": "Nombre o número fiscal de la contraparte",
|
|
89
|
+
"text.opportunity-owner-me": "Yo",
|
|
90
|
+
"text.opportunity-event-created": "Creada",
|
|
91
|
+
"text.opportunity-event-updated": "Modificada",
|
|
92
|
+
"text.opportunity-event-staged": "Cambio de etapa",
|
|
93
|
+
"text.opportunity-event-won": "Ganada",
|
|
94
|
+
"text.opportunity-event-lost": "Perdida",
|
|
95
|
+
"title.opportunity": "Oportunidad",
|
|
96
|
+
"title.opportunity-list": "Oportunidades",
|
|
97
|
+
"title.opportunity-new": "Nueva oportunidad"
|
|
98
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"button.quotation-accept": "受諾処理",
|
|
3
|
+
"button.quotation-expire": "期限切れ処理",
|
|
4
|
+
"button.quotation-new": "見積作成",
|
|
5
|
+
"button.quotation-print": "印刷",
|
|
6
|
+
"button.quotation-reject": "辞退処理",
|
|
7
|
+
"button.quotation-revise": "改訂",
|
|
8
|
+
"button.quotation-send": "送付",
|
|
9
|
+
"error.quotation-draft-required": "送付済みの見積は改訂して変更します。",
|
|
10
|
+
"error.quotation-issue-date-required": "送付する前に作成日を入力してください。",
|
|
11
|
+
"error.quotation-latest-required": "最新の版を改訂してください。",
|
|
12
|
+
"error.quotation-not-found": "見積が見つかりません。",
|
|
13
|
+
"error.quotation-number-duplicate": "既に使われている見積番号です。",
|
|
14
|
+
"error.quotation-reason-required": "辞退の理由を入力してください。",
|
|
15
|
+
"error.quotation-revision-invalid": "受諾されていない送付済みの見積だけ改訂できます。",
|
|
16
|
+
"error.quotation-revision-number": "改訂版は見積番号を変えられません。",
|
|
17
|
+
"error.quotation-transition-invalid": "見積の状態か有効期限のためできません。",
|
|
18
|
+
"error.quotation-valid-until": "有効期限を入力してください。",
|
|
19
|
+
"field.quotation-outcome-reason": "辞退理由",
|
|
20
|
+
"field.quotation-valid-until": "有効期限",
|
|
21
|
+
"field.quotation-version": "版",
|
|
22
|
+
"text.quotation-empty": "見積がありません。",
|
|
23
|
+
"text.quotation-empty-description": "見積作成で最初の見積を作ります。",
|
|
24
|
+
"text.quotation-not-found": "見積が見つかりません。",
|
|
25
|
+
"text.quotation-section-decline": "辞退",
|
|
26
|
+
"text.quotation-status-accepted": "受諾",
|
|
27
|
+
"text.quotation-status-draft": "作成中",
|
|
28
|
+
"text.quotation-status-expired": "期限切れ",
|
|
29
|
+
"text.quotation-status-rejected": "辞退",
|
|
30
|
+
"text.quotation-status-sent": "送付",
|
|
31
|
+
"text.quotation-status-superseded": "改訂済み",
|
|
32
|
+
"title.quotation": "見積",
|
|
33
|
+
"title.quotation-list": "見積",
|
|
34
|
+
"title.quotation-new": "新しい見積",
|
|
35
|
+
"title.quotation-print": "見積書",
|
|
36
|
+
"field.quotation-counterpart": "取引先",
|
|
37
|
+
"field.quotation-issue-date": "作成日",
|
|
38
|
+
"field.quotation-number": "見積番号",
|
|
39
|
+
"field.quotation-status": "状態",
|
|
40
|
+
"field.quotation-total-amount": "見積金額",
|
|
41
|
+
"text.quotation-section-head": "基本情報",
|
|
42
|
+
"text.quotation-section-lines": "品目",
|
|
43
|
+
"text.quotation-section-totals": "金額",
|
|
44
|
+
"button.opportunity-new": "商談登録",
|
|
45
|
+
"button.opportunity-lose": "失注にする",
|
|
46
|
+
"button.opportunity-clear": "クリア",
|
|
47
|
+
"error.opportunity-not-found": "商談が見つかりません。",
|
|
48
|
+
"error.opportunity-closed": "終了した商談です。失注した商談は進行中の段階を選ぶと再開します。",
|
|
49
|
+
"error.opportunity-stage-open-required": "進行中の段階を選んでください。受注と失注は終了処理で行います。",
|
|
50
|
+
"error.opportunity-stage-move-invalid": "その段階には移せません。",
|
|
51
|
+
"error.opportunity-name-required": "商談名を入力してください。",
|
|
52
|
+
"error.opportunity-amount-invalid": "見込金額は0以上にしてください。",
|
|
53
|
+
"error.opportunity-close-month-invalid": "受注見込月を入力してください。",
|
|
54
|
+
"error.opportunity-probability-invalid": "確度は0から100の整数です。",
|
|
55
|
+
"error.opportunity-counterparty-required": "取引先を選んでください。",
|
|
56
|
+
"error.opportunity-end-customer-invalid": "エンド顧客は登録済みの取引先から選んでください。",
|
|
57
|
+
"error.opportunity-owner-invalid": "担当者はこの会社のユーザーから選んでください。",
|
|
58
|
+
"error.opportunity-reason-required": "失注理由を入力してください。",
|
|
59
|
+
"error.opportunity-closed-on-invalid": "終了日をYYYY-MM-DD形式で入力してください。",
|
|
60
|
+
"field.opportunity-name": "商談名",
|
|
61
|
+
"field.opportunity-counterparty": "取引先",
|
|
62
|
+
"field.opportunity-end-customer": "エンド顧客",
|
|
63
|
+
"field.opportunity-amount": "見込金額",
|
|
64
|
+
"field.opportunity-currency": "通貨",
|
|
65
|
+
"field.opportunity-expected-close-month": "受注見込月",
|
|
66
|
+
"field.opportunity-owner": "担当者",
|
|
67
|
+
"field.opportunity-description": "メモ",
|
|
68
|
+
"field.opportunity-stage": "段階",
|
|
69
|
+
"field.opportunity-probability": "確度",
|
|
70
|
+
"field.opportunity-closed-on": "終了日",
|
|
71
|
+
"field.opportunity-lost-reason": "失注理由",
|
|
72
|
+
"field.opportunity-event-at": "日時",
|
|
73
|
+
"field.opportunity-event-actor": "処理者",
|
|
74
|
+
"field.opportunity-event-action": "内容",
|
|
75
|
+
"text.opportunity-stage-lead": "発掘",
|
|
76
|
+
"text.opportunity-stage-proposal": "提案",
|
|
77
|
+
"text.opportunity-stage-quoted": "見積",
|
|
78
|
+
"text.opportunity-stage-negotiation": "交渉",
|
|
79
|
+
"text.opportunity-stage-won": "受注",
|
|
80
|
+
"text.opportunity-stage-lost": "失注",
|
|
81
|
+
"text.opportunity-empty": "商談がありません。",
|
|
82
|
+
"text.opportunity-empty-description": "商談登録で最初の商談を作成します。",
|
|
83
|
+
"text.opportunity-not-found": "商談が見つかりません。",
|
|
84
|
+
"text.opportunity-section-head": "基本情報",
|
|
85
|
+
"text.opportunity-section-stage": "段階",
|
|
86
|
+
"text.opportunity-section-lose": "失注",
|
|
87
|
+
"text.opportunity-section-history": "履歴",
|
|
88
|
+
"text.opportunity-counterparty-search": "取引先名または事業者番号",
|
|
89
|
+
"text.opportunity-owner-me": "自分",
|
|
90
|
+
"text.opportunity-event-created": "登録",
|
|
91
|
+
"text.opportunity-event-updated": "変更",
|
|
92
|
+
"text.opportunity-event-staged": "段階変更",
|
|
93
|
+
"text.opportunity-event-won": "受注",
|
|
94
|
+
"text.opportunity-event-lost": "失注",
|
|
95
|
+
"title.opportunity": "商談",
|
|
96
|
+
"title.opportunity-list": "商談",
|
|
97
|
+
"title.opportunity-new": "新しい商談"
|
|
98
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"button.quotation-accept": "수락 처리",
|
|
3
|
+
"button.quotation-expire": "만료 처리",
|
|
4
|
+
"button.quotation-new": "견적 작성",
|
|
5
|
+
"button.quotation-print": "인쇄",
|
|
6
|
+
"button.quotation-reject": "거절 처리",
|
|
7
|
+
"button.quotation-revise": "개정",
|
|
8
|
+
"button.quotation-send": "발송",
|
|
9
|
+
"error.quotation-draft-required": "발송한 견적을 수정하려면 개정본을 생성해 주세요.",
|
|
10
|
+
"error.quotation-issue-date-required": "보내기 전에 작성일을 입력하세요.",
|
|
11
|
+
"error.quotation-latest-required": "가장 최근 판을 개정하세요.",
|
|
12
|
+
"error.quotation-not-found": "견적을 찾을 수 없습니다.",
|
|
13
|
+
"error.quotation-number-duplicate": "이미 사용한 견적 번호입니다.",
|
|
14
|
+
"error.quotation-reason-required": "거절 사유를 입력하세요.",
|
|
15
|
+
"error.quotation-revision-invalid": "발송 후 아직 수락되지 않은 견적만 개정할 수 있습니다.",
|
|
16
|
+
"error.quotation-revision-number": "개정본은 견적 번호를 바꿀 수 없습니다.",
|
|
17
|
+
"error.quotation-transition-invalid": "견적 상태나 유효기한 때문에 할 수 없습니다.",
|
|
18
|
+
"error.quotation-valid-until": "유효기한을 입력하세요.",
|
|
19
|
+
"field.quotation-outcome-reason": "거절 사유",
|
|
20
|
+
"field.quotation-valid-until": "유효기한",
|
|
21
|
+
"field.quotation-version": "판",
|
|
22
|
+
"text.quotation-empty": "견적이 없습니다.",
|
|
23
|
+
"text.quotation-empty-description": "견적 작성으로 첫 견적을 만듭니다.",
|
|
24
|
+
"text.quotation-not-found": "견적을 찾을 수 없습니다.",
|
|
25
|
+
"text.quotation-section-decline": "거절",
|
|
26
|
+
"text.quotation-status-accepted": "수락",
|
|
27
|
+
"text.quotation-status-draft": "작성 중",
|
|
28
|
+
"text.quotation-status-expired": "기한 만료",
|
|
29
|
+
"text.quotation-status-rejected": "거절",
|
|
30
|
+
"text.quotation-status-sent": "발송",
|
|
31
|
+
"text.quotation-status-superseded": "개정됨",
|
|
32
|
+
"title.quotation": "견적",
|
|
33
|
+
"title.quotation-list": "견적",
|
|
34
|
+
"title.quotation-new": "새 견적",
|
|
35
|
+
"title.quotation-print": "견적서",
|
|
36
|
+
"field.quotation-counterpart": "거래처",
|
|
37
|
+
"field.quotation-issue-date": "작성일",
|
|
38
|
+
"field.quotation-number": "견적 번호",
|
|
39
|
+
"field.quotation-status": "상태",
|
|
40
|
+
"field.quotation-total-amount": "견적 금액",
|
|
41
|
+
"text.quotation-section-head": "기본 정보",
|
|
42
|
+
"text.quotation-section-lines": "품목",
|
|
43
|
+
"text.quotation-section-totals": "금액",
|
|
44
|
+
"button.opportunity-new": "영업 기회 등록",
|
|
45
|
+
"button.opportunity-lose": "실주 처리",
|
|
46
|
+
"button.opportunity-clear": "지우기",
|
|
47
|
+
"error.opportunity-not-found": "영업 기회를 찾을 수 없습니다.",
|
|
48
|
+
"error.opportunity-closed": "종료된 영업 기회입니다. 실주한 기회는 진행 단계를 골라 다시 엽니다.",
|
|
49
|
+
"error.opportunity-stage-open-required": "진행 단계를 고르세요. 수주와 실주는 종료 처리로 합니다.",
|
|
50
|
+
"error.opportunity-stage-move-invalid": "그 단계로 옮길 수 없습니다.",
|
|
51
|
+
"error.opportunity-name-required": "기회 이름을 입력하세요.",
|
|
52
|
+
"error.opportunity-amount-invalid": "예상 금액은 0 이상이어야 합니다.",
|
|
53
|
+
"error.opportunity-close-month-invalid": "예상 수주월을 입력하세요.",
|
|
54
|
+
"error.opportunity-probability-invalid": "확률은 0에서 100 사이의 정수입니다.",
|
|
55
|
+
"error.opportunity-counterparty-required": "거래처를 고르세요.",
|
|
56
|
+
"error.opportunity-end-customer-invalid": "최종 고객은 등록된 거래처에서 고르세요.",
|
|
57
|
+
"error.opportunity-owner-invalid": "담당자는 이 회사 사용자 중에서 고르세요.",
|
|
58
|
+
"error.opportunity-reason-required": "실주 사유를 입력하세요.",
|
|
59
|
+
"error.opportunity-closed-on-invalid": "종료일을 YYYY-MM-DD 형식으로 입력하세요.",
|
|
60
|
+
"field.opportunity-name": "기회 이름",
|
|
61
|
+
"field.opportunity-counterparty": "거래처",
|
|
62
|
+
"field.opportunity-end-customer": "최종 고객",
|
|
63
|
+
"field.opportunity-amount": "예상 금액",
|
|
64
|
+
"field.opportunity-currency": "통화",
|
|
65
|
+
"field.opportunity-expected-close-month": "예상 수주월",
|
|
66
|
+
"field.opportunity-owner": "담당자",
|
|
67
|
+
"field.opportunity-description": "메모",
|
|
68
|
+
"field.opportunity-stage": "단계",
|
|
69
|
+
"field.opportunity-probability": "확률",
|
|
70
|
+
"field.opportunity-closed-on": "종료일",
|
|
71
|
+
"field.opportunity-lost-reason": "실주 사유",
|
|
72
|
+
"field.opportunity-event-at": "일시",
|
|
73
|
+
"field.opportunity-event-actor": "처리자",
|
|
74
|
+
"field.opportunity-event-action": "내용",
|
|
75
|
+
"text.opportunity-stage-lead": "발굴",
|
|
76
|
+
"text.opportunity-stage-proposal": "제안",
|
|
77
|
+
"text.opportunity-stage-quoted": "견적",
|
|
78
|
+
"text.opportunity-stage-negotiation": "협상",
|
|
79
|
+
"text.opportunity-stage-won": "수주",
|
|
80
|
+
"text.opportunity-stage-lost": "실주",
|
|
81
|
+
"text.opportunity-empty": "영업 기회가 없습니다.",
|
|
82
|
+
"text.opportunity-empty-description": "영업 기회 등록으로 첫 기회를 만듭니다.",
|
|
83
|
+
"text.opportunity-not-found": "영업 기회를 찾을 수 없습니다.",
|
|
84
|
+
"text.opportunity-section-head": "기본 정보",
|
|
85
|
+
"text.opportunity-section-stage": "단계",
|
|
86
|
+
"text.opportunity-section-lose": "실주",
|
|
87
|
+
"text.opportunity-section-history": "이력",
|
|
88
|
+
"text.opportunity-counterparty-search": "거래처 이름 또는 사업자번호",
|
|
89
|
+
"text.opportunity-owner-me": "나",
|
|
90
|
+
"text.opportunity-event-created": "등록",
|
|
91
|
+
"text.opportunity-event-updated": "수정",
|
|
92
|
+
"text.opportunity-event-staged": "단계 변경",
|
|
93
|
+
"text.opportunity-event-won": "수주",
|
|
94
|
+
"text.opportunity-event-lost": "실주",
|
|
95
|
+
"title.opportunity": "영업 기회",
|
|
96
|
+
"title.opportunity-list": "영업 기회",
|
|
97
|
+
"title.opportunity-new": "새 영업 기회"
|
|
98
|
+
}
|