@things-factory/sales 10.1.223 → 10.1.227
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-client/index.d.ts +1 -0
- package/dist-client/index.js +1 -0
- package/dist-client/index.js.map +1 -1
- package/dist-client/pages/quotation-editor.d.ts +50 -6
- package/dist-client/pages/quotation-editor.js +303 -33
- package/dist-client/pages/quotation-editor.js.map +1 -1
- package/dist-client/pages/sales-product-list.d.ts +54 -0
- package/dist-client/pages/sales-product-list.js +202 -0
- package/dist-client/pages/sales-product-list.js.map +1 -0
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +3 -0
- package/dist-client/route.js.map +1 -1
- package/dist-client/sales-product-pick.d.ts +51 -0
- package/dist-client/sales-product-pick.js +210 -0
- package/dist-client/sales-product-pick.js.map +1 -0
- package/dist-client/sales-product-words.d.ts +2 -0
- package/dist-client/sales-product-words.js +8 -0
- package/dist-client/sales-product-words.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/index.d.ts +6 -2
- package/dist-server/service/index.js +8 -3
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/quotation/quotation-query.d.ts +3 -0
- package/dist-server/service/quotation/quotation-query.js +36 -0
- package/dist-server/service/quotation/quotation-query.js.map +1 -1
- package/dist-server/service/quotation/quotation-service.d.ts +1 -0
- package/dist-server/service/quotation/quotation-service.js +5 -4
- package/dist-server/service/quotation/quotation-service.js.map +1 -1
- package/dist-server/service/sales-product/index.d.ts +6 -0
- package/dist-server/service/sales-product/index.js +10 -0
- package/dist-server/service/sales-product/index.js.map +1 -0
- package/dist-server/service/sales-product/sales-product-mutation.d.ts +6 -0
- package/dist-server/service/sales-product/sales-product-mutation.js +46 -0
- package/dist-server/service/sales-product/sales-product-mutation.js.map +1 -0
- package/dist-server/service/sales-product/sales-product-query.d.ts +11 -0
- package/dist-server/service/sales-product/sales-product-query.js +78 -0
- package/dist-server/service/sales-product/sales-product-query.js.map +1 -0
- package/dist-server/service/sales-product/sales-product-rules.d.ts +8 -0
- package/dist-server/service/sales-product/sales-product-rules.js +26 -0
- package/dist-server/service/sales-product/sales-product-rules.js.map +1 -0
- package/dist-server/service/sales-product/sales-product-service.d.ts +10 -0
- package/dist-server/service/sales-product/sales-product-service.js +86 -0
- package/dist-server/service/sales-product/sales-product-service.js.map +1 -0
- package/dist-server/service/sales-product/sales-product-type.d.ts +22 -0
- package/dist-server/service/sales-product/sales-product-type.js +81 -0
- package/dist-server/service/sales-product/sales-product-type.js.map +1 -0
- package/dist-server/service/sales-product/sales-product.d.ts +32 -0
- package/dist-server/service/sales-product/sales-product.js +126 -0
- package/dist-server/service/sales-product/sales-product.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/things-factory.config.js +2 -1
- package/translations/en.json +33 -3
- package/translations/es.json +33 -3
- package/translations/ja.json +33 -3
- package/translations/ko.json +34 -4
- package/translations/ms.json +33 -3
- package/translations/zh.json +33 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/sales",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.227",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "dist-client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@operato/shell": "^10.0.0",
|
|
40
40
|
"@operato/styles": "^10.29.1",
|
|
41
41
|
"@operato/utils": "^10.0.0",
|
|
42
|
-
"@things-factory/ai-assistant": "^10.1.
|
|
43
|
-
"@things-factory/auth-base": "^10.1.
|
|
44
|
-
"@things-factory/biz-base": "^10.1.
|
|
45
|
-
"@things-factory/invoice": "^10.1.
|
|
46
|
-
"@things-factory/shell": "^10.1.
|
|
42
|
+
"@things-factory/ai-assistant": "^10.1.227",
|
|
43
|
+
"@things-factory/auth-base": "^10.1.227",
|
|
44
|
+
"@things-factory/biz-base": "^10.1.227",
|
|
45
|
+
"@things-factory/invoice": "^10.1.227",
|
|
46
|
+
"@things-factory/shell": "^10.1.227"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "f66591e3864aab08a6fb93fb1fcf1c9de6b546ac"
|
|
49
49
|
}
|
package/things-factory.config.js
CHANGED
|
@@ -7,7 +7,8 @@ export default {
|
|
|
7
7
|
{ tagname: 'quotation-list', page: 'quotation-list' },
|
|
8
8
|
{ tagname: 'quotation-editor', page: 'quotation-editor' },
|
|
9
9
|
{ tagname: 'opportunity-list', page: 'opportunity-list' },
|
|
10
|
-
{ tagname: 'opportunity-editor', page: 'opportunity-editor' }
|
|
10
|
+
{ tagname: 'opportunity-editor', page: 'opportunity-editor' },
|
|
11
|
+
{ tagname: 'sales-product-list', page: 'sales-product-list' }
|
|
11
12
|
],
|
|
12
13
|
bootstrap
|
|
13
14
|
}
|
package/translations/en.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"button.quotation-accept": "Mark accepted",
|
|
4
4
|
"button.quotation-expire": "Mark expired",
|
|
5
5
|
"button.quotation-new": "New quotation",
|
|
6
|
-
"button.quotation-print": "Print",
|
|
7
6
|
"button.quotation-reject": "Mark declined",
|
|
8
7
|
"button.quotation-revise": "Revise",
|
|
9
8
|
"button.quotation-send": "Send",
|
|
@@ -97,11 +96,42 @@
|
|
|
97
96
|
"title.opportunity-list": "Opportunities",
|
|
98
97
|
"title.opportunity-new": "New opportunity",
|
|
99
98
|
"button.opportunity-new-quotation": "New quotation",
|
|
99
|
+
"button.quotation-make-invoice": "Make an invoice",
|
|
100
100
|
"error.quotation-opportunity-invalid": "Choose an opportunity of this company.",
|
|
101
101
|
"field.quotation-opportunity": "Opportunity",
|
|
102
102
|
"text.opportunity-section-quotations": "Quotations",
|
|
103
103
|
"task.sales.reading.name": "Reading quotations and opportunities",
|
|
104
|
-
"task.sales.reading.description": "Reads quotations and
|
|
104
|
+
"task.sales.reading.description": "Reads quotations, sales opportunities and the products sold.",
|
|
105
105
|
"task.sales.keeping.name": "Keeping quotations and opportunities",
|
|
106
|
-
"task.sales.keeping.description": "Reads and changes quotations and
|
|
106
|
+
"task.sales.keeping.description": "Reads and changes quotations, sales opportunities and the products sold.",
|
|
107
|
+
"title.sales-product-list": "Products",
|
|
108
|
+
"field.sales-product-code": "Code",
|
|
109
|
+
"field.sales-product-name": "Name",
|
|
110
|
+
"field.sales-product-kind": "Kind",
|
|
111
|
+
"field.sales-product-grade": "Grade",
|
|
112
|
+
"field.sales-product-spec": "Specification",
|
|
113
|
+
"field.sales-product-unit": "Unit",
|
|
114
|
+
"field.sales-product-unit-price": "Unit price",
|
|
115
|
+
"field.sales-product-currency": "Currency",
|
|
116
|
+
"field.sales-product-tax-kind": "Taxation",
|
|
117
|
+
"field.sales-product-active": "Offered",
|
|
118
|
+
"field.sales-product-description": "Notes",
|
|
119
|
+
"field.sales-product-pick": "Add from products",
|
|
120
|
+
"text.sales-product-kind-goods": "Goods",
|
|
121
|
+
"text.sales-product-kind-service": "Service",
|
|
122
|
+
"text.sales-product-kind-labor": "Labor",
|
|
123
|
+
"text.sales-product-empty": "No products yet",
|
|
124
|
+
"text.sales-product-empty-description": "Press Add or type into the grid, then save. Quotation lines are picked from here.",
|
|
125
|
+
"text.sales-product-saved": "Products saved.",
|
|
126
|
+
"text.sales-product-delete-confirm": "Delete {count} products? Lines of quotations already written stay as they are.",
|
|
127
|
+
"text.sales-product-search": "Find by product code or name",
|
|
128
|
+
"text.sales-product-none": "No product found.",
|
|
129
|
+
"error.sales-product-code-required": "Give the product a code.",
|
|
130
|
+
"error.sales-product-name-required": "Name the product.",
|
|
131
|
+
"error.sales-product-code-duplicate": "Product code {code} is already in use.",
|
|
132
|
+
"error.sales-product-price-invalid": "The price is zero or more.",
|
|
133
|
+
"error.sales-product-not-found": "A product was not found - reload and try again.",
|
|
134
|
+
"text.quotation-invoice-source": "Quotation {number} · v{version}",
|
|
135
|
+
"text.quotation-send-confirm": "To {party} · total {total}. Once sent, its amounts cannot be changed - revise it to change them.",
|
|
136
|
+
"text.quotation-send-confirm-purchase": "From {party} · total {total}. Once sent, its amounts cannot be changed - revise it to change them."
|
|
107
137
|
}
|
package/translations/es.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"button.quotation-accept": "Marcar como aceptada",
|
|
4
4
|
"button.quotation-expire": "Marcar como vencida",
|
|
5
5
|
"button.quotation-new": "Nueva cotización",
|
|
6
|
-
"button.quotation-print": "Imprimir",
|
|
7
6
|
"button.quotation-reject": "Marcar como rechazada",
|
|
8
7
|
"button.quotation-revise": "Revisar",
|
|
9
8
|
"button.quotation-send": "Enviar",
|
|
@@ -97,11 +96,42 @@
|
|
|
97
96
|
"title.opportunity-list": "Oportunidades",
|
|
98
97
|
"title.opportunity-new": "Nueva oportunidad",
|
|
99
98
|
"button.opportunity-new-quotation": "Nueva cotización",
|
|
99
|
+
"button.quotation-make-invoice": "Crear factura",
|
|
100
100
|
"error.quotation-opportunity-invalid": "Elija una oportunidad de esta empresa.",
|
|
101
101
|
"field.quotation-opportunity": "Oportunidad",
|
|
102
102
|
"text.opportunity-section-quotations": "Cotizaciones",
|
|
103
103
|
"task.sales.reading.name": "Leer presupuestos y oportunidades",
|
|
104
|
-
"task.sales.reading.description": "Lee presupuestos
|
|
104
|
+
"task.sales.reading.description": "Lee presupuestos, oportunidades de venta y los productos que se venden.",
|
|
105
105
|
"task.sales.keeping.name": "Mantener presupuestos y oportunidades",
|
|
106
|
-
"task.sales.keeping.description": "Lee y modifica presupuestos
|
|
106
|
+
"task.sales.keeping.description": "Lee y modifica presupuestos, oportunidades de venta y los productos que se venden.",
|
|
107
|
+
"title.sales-product-list": "Productos",
|
|
108
|
+
"field.sales-product-code": "Código",
|
|
109
|
+
"field.sales-product-name": "Nombre",
|
|
110
|
+
"field.sales-product-kind": "Tipo",
|
|
111
|
+
"field.sales-product-grade": "Categoría",
|
|
112
|
+
"field.sales-product-spec": "Especificación",
|
|
113
|
+
"field.sales-product-unit": "Unidad",
|
|
114
|
+
"field.sales-product-unit-price": "Precio unitario",
|
|
115
|
+
"field.sales-product-currency": "Moneda",
|
|
116
|
+
"field.sales-product-tax-kind": "Tributación",
|
|
117
|
+
"field.sales-product-active": "Ofrecido",
|
|
118
|
+
"field.sales-product-description": "Notas",
|
|
119
|
+
"field.sales-product-pick": "Añadir desde productos",
|
|
120
|
+
"text.sales-product-kind-goods": "Bienes",
|
|
121
|
+
"text.sales-product-kind-service": "Servicio",
|
|
122
|
+
"text.sales-product-kind-labor": "Mano de obra",
|
|
123
|
+
"text.sales-product-empty": "Aún no hay productos",
|
|
124
|
+
"text.sales-product-empty-description": "Pulse Añadir o escriba en la tabla y guarde. Las líneas de presupuesto se eligen aquí.",
|
|
125
|
+
"text.sales-product-saved": "Productos guardados.",
|
|
126
|
+
"text.sales-product-delete-confirm": "¿Eliminar {count} productos? Las líneas de presupuestos ya redactados no cambian.",
|
|
127
|
+
"text.sales-product-search": "Buscar por código o nombre",
|
|
128
|
+
"text.sales-product-none": "No se encontró ningún producto.",
|
|
129
|
+
"error.sales-product-code-required": "Indique el código del producto.",
|
|
130
|
+
"error.sales-product-name-required": "Indique el nombre del producto.",
|
|
131
|
+
"error.sales-product-code-duplicate": "El código de producto {code} ya está en uso.",
|
|
132
|
+
"error.sales-product-price-invalid": "El precio debe ser cero o más.",
|
|
133
|
+
"error.sales-product-not-found": "No se encontró un producto; recargue e inténtelo de nuevo.",
|
|
134
|
+
"text.quotation-invoice-source": "Cotización {number} · v{version}",
|
|
135
|
+
"text.quotation-send-confirm": "Para {party} · total {total}. Una vez enviada, sus importes no se pueden cambiar; revísela para cambiarlos.",
|
|
136
|
+
"text.quotation-send-confirm-purchase": "De {party} · total {total}. Una vez enviada, sus importes no se pueden cambiar; revísela para cambiarlos."
|
|
107
137
|
}
|
package/translations/ja.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"button.quotation-accept": "受諾処理",
|
|
4
4
|
"button.quotation-expire": "期限切れ処理",
|
|
5
5
|
"button.quotation-new": "見積作成",
|
|
6
|
-
"button.quotation-print": "印刷",
|
|
7
6
|
"button.quotation-reject": "辞退処理",
|
|
8
7
|
"button.quotation-revise": "改訂",
|
|
9
8
|
"button.quotation-send": "送付",
|
|
@@ -97,11 +96,42 @@
|
|
|
97
96
|
"title.opportunity-list": "商談",
|
|
98
97
|
"title.opportunity-new": "新しい商談",
|
|
99
98
|
"button.opportunity-new-quotation": "見積作成",
|
|
99
|
+
"button.quotation-make-invoice": "請求書を作成",
|
|
100
100
|
"error.quotation-opportunity-invalid": "この会社の商談から選んでください。",
|
|
101
101
|
"field.quotation-opportunity": "商談",
|
|
102
102
|
"text.opportunity-section-quotations": "見積",
|
|
103
103
|
"task.sales.reading.name": "見積・営業機会の閲覧",
|
|
104
|
-
"task.sales.reading.description": "
|
|
104
|
+
"task.sales.reading.description": "見積、営業機会と販売商品を読む。",
|
|
105
105
|
"task.sales.keeping.name": "見積・営業機会の管理",
|
|
106
|
-
"task.sales.keeping.description": "
|
|
106
|
+
"task.sales.keeping.description": "見積、営業機会と販売商品を読み、変更する。",
|
|
107
|
+
"title.sales-product-list": "商品",
|
|
108
|
+
"field.sales-product-code": "商品コード",
|
|
109
|
+
"field.sales-product-name": "商品名",
|
|
110
|
+
"field.sales-product-kind": "区分",
|
|
111
|
+
"field.sales-product-grade": "等級",
|
|
112
|
+
"field.sales-product-spec": "規格",
|
|
113
|
+
"field.sales-product-unit": "単位",
|
|
114
|
+
"field.sales-product-unit-price": "単価",
|
|
115
|
+
"field.sales-product-currency": "通貨",
|
|
116
|
+
"field.sales-product-tax-kind": "課税区分",
|
|
117
|
+
"field.sales-product-active": "使用",
|
|
118
|
+
"field.sales-product-description": "備考",
|
|
119
|
+
"field.sales-product-pick": "商品から追加",
|
|
120
|
+
"text.sales-product-kind-goods": "物品",
|
|
121
|
+
"text.sales-product-kind-service": "役務",
|
|
122
|
+
"text.sales-product-kind-labor": "人員",
|
|
123
|
+
"text.sales-product-empty": "登録した商品はありません",
|
|
124
|
+
"text.sales-product-empty-description": "追加を押すか表に直接入力して保存してください。見積の品目はここから選びます。",
|
|
125
|
+
"text.sales-product-saved": "商品を保存しました。",
|
|
126
|
+
"text.sales-product-delete-confirm": "商品{count}件を削除します。作成済みの見積の品目はそのまま残ります。",
|
|
127
|
+
"text.sales-product-search": "商品コード・名前で検索",
|
|
128
|
+
"text.sales-product-none": "該当する商品はありません。",
|
|
129
|
+
"error.sales-product-code-required": "商品コードを入力してください。",
|
|
130
|
+
"error.sales-product-name-required": "商品名を入力してください。",
|
|
131
|
+
"error.sales-product-code-duplicate": "商品コード{code}はすでに使われています。",
|
|
132
|
+
"error.sales-product-price-invalid": "単価は0以上にしてください。",
|
|
133
|
+
"error.sales-product-not-found": "商品が見つかりません。再読み込みしてやり直してください。",
|
|
134
|
+
"text.quotation-invoice-source": "見積 {number} · v{version}",
|
|
135
|
+
"text.quotation-send-confirm": "送付先 {party} · 合計 {total}。送付後は金額を変更できません。変更するには改訂します。",
|
|
136
|
+
"text.quotation-send-confirm-purchase": "送付元 {party} · 合計 {total}。送付後は金額を変更できません。変更するには改訂します。"
|
|
107
137
|
}
|
package/translations/ko.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"button.quotation-accept": "수락 처리",
|
|
4
4
|
"button.quotation-expire": "만료 처리",
|
|
5
5
|
"button.quotation-new": "견적 작성",
|
|
6
|
-
"button.quotation-print": "인쇄",
|
|
7
6
|
"button.quotation-reject": "거절 처리",
|
|
8
7
|
"button.quotation-revise": "개정",
|
|
9
8
|
"button.quotation-send": "발송",
|
|
@@ -19,7 +18,7 @@
|
|
|
19
18
|
"error.quotation-valid-until": "유효기한을 입력하세요.",
|
|
20
19
|
"field.quotation-outcome-reason": "거절 사유",
|
|
21
20
|
"field.quotation-valid-until": "유효기한",
|
|
22
|
-
"field.quotation-version": "
|
|
21
|
+
"field.quotation-version": "버전",
|
|
23
22
|
"text.quotation-empty": "견적이 없습니다.",
|
|
24
23
|
"text.quotation-empty-description": "견적 작성으로 첫 견적을 만듭니다.",
|
|
25
24
|
"text.quotation-not-found": "견적을 찾을 수 없습니다.",
|
|
@@ -97,11 +96,42 @@
|
|
|
97
96
|
"title.opportunity-list": "영업 기회",
|
|
98
97
|
"title.opportunity-new": "새 영업 기회",
|
|
99
98
|
"button.opportunity-new-quotation": "견적 작성",
|
|
99
|
+
"button.quotation-make-invoice": "청구서 만들기",
|
|
100
100
|
"error.quotation-opportunity-invalid": "이 회사에 등록된 영업 기회를 선택해 주세요.",
|
|
101
101
|
"field.quotation-opportunity": "영업 기회",
|
|
102
102
|
"text.opportunity-section-quotations": "견적",
|
|
103
103
|
"task.sales.reading.name": "견적·영업 기회 열람",
|
|
104
|
-
"task.sales.reading.description": "
|
|
104
|
+
"task.sales.reading.description": "견적, 영업 기회와 상품을 읽는다.",
|
|
105
105
|
"task.sales.keeping.name": "견적·영업 기회 관리",
|
|
106
|
-
"task.sales.keeping.description": "
|
|
106
|
+
"task.sales.keeping.description": "견적, 영업 기회와 상품을 읽고 바꾼다.",
|
|
107
|
+
"title.sales-product-list": "상품",
|
|
108
|
+
"field.sales-product-code": "상품 코드",
|
|
109
|
+
"field.sales-product-name": "상품명",
|
|
110
|
+
"field.sales-product-kind": "구분",
|
|
111
|
+
"field.sales-product-grade": "등급",
|
|
112
|
+
"field.sales-product-spec": "규격",
|
|
113
|
+
"field.sales-product-unit": "단위",
|
|
114
|
+
"field.sales-product-unit-price": "단가",
|
|
115
|
+
"field.sales-product-currency": "통화",
|
|
116
|
+
"field.sales-product-tax-kind": "과세 구분",
|
|
117
|
+
"field.sales-product-active": "사용",
|
|
118
|
+
"field.sales-product-description": "비고",
|
|
119
|
+
"field.sales-product-pick": "상품에서 추가",
|
|
120
|
+
"text.sales-product-kind-goods": "물품",
|
|
121
|
+
"text.sales-product-kind-service": "용역",
|
|
122
|
+
"text.sales-product-kind-labor": "인력",
|
|
123
|
+
"text.sales-product-empty": "등록한 상품이 없습니다",
|
|
124
|
+
"text.sales-product-empty-description": "추가를 누르거나 표에 바로 입력한 뒤 저장하세요. 견적 품목은 여기서 골라 넣습니다.",
|
|
125
|
+
"text.sales-product-saved": "상품을 저장했습니다.",
|
|
126
|
+
"text.sales-product-delete-confirm": "상품 {count}개를 삭제합니다. 이미 작성한 견적의 품목은 그대로 남습니다.",
|
|
127
|
+
"text.sales-product-search": "상품 코드·이름으로 찾기",
|
|
128
|
+
"text.sales-product-none": "찾은 상품이 없습니다.",
|
|
129
|
+
"error.sales-product-code-required": "상품 코드를 입력해 주세요.",
|
|
130
|
+
"error.sales-product-name-required": "상품명을 입력해 주세요.",
|
|
131
|
+
"error.sales-product-code-duplicate": "상품 코드 {code}는 이미 쓰고 있습니다.",
|
|
132
|
+
"error.sales-product-price-invalid": "단가는 0 이상이어야 합니다.",
|
|
133
|
+
"error.sales-product-not-found": "상품을 찾을 수 없습니다. 새로 고친 뒤 다시 해 주세요.",
|
|
134
|
+
"text.quotation-invoice-source": "견적 {number} · v{version}",
|
|
135
|
+
"text.quotation-send-confirm": "받는 곳 {party} · 합계 {total}. 보낸 뒤에는 금액을 고칠 수 없습니다 — 고치려면 새 버전을 만듭니다.",
|
|
136
|
+
"text.quotation-send-confirm-purchase": "보낸 곳 {party} · 합계 {total}. 보낸 뒤에는 금액을 고칠 수 없습니다 — 고치려면 새 버전을 만듭니다."
|
|
107
137
|
}
|
package/translations/ms.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"button.quotation-accept": "Tandakan diterima",
|
|
4
4
|
"button.quotation-expire": "Tandakan tamat",
|
|
5
5
|
"button.quotation-new": "Sebut harga baharu",
|
|
6
|
-
"button.quotation-print": "Cetak",
|
|
7
6
|
"button.quotation-reject": "Tandakan ditolak",
|
|
8
7
|
"button.quotation-revise": "Semak semula",
|
|
9
8
|
"button.quotation-send": "Hantar",
|
|
@@ -97,11 +96,42 @@
|
|
|
97
96
|
"title.opportunity-list": "Peluang",
|
|
98
97
|
"title.opportunity-new": "Peluang baharu",
|
|
99
98
|
"button.opportunity-new-quotation": "Sebut harga baharu",
|
|
99
|
+
"button.quotation-make-invoice": "Buat invois",
|
|
100
100
|
"error.quotation-opportunity-invalid": "Pilih peluang syarikat ini.",
|
|
101
101
|
"field.quotation-opportunity": "Peluang",
|
|
102
102
|
"text.opportunity-section-quotations": "Sebut harga",
|
|
103
103
|
"task.sales.reading.name": "Membaca sebut harga dan peluang",
|
|
104
|
-
"task.sales.reading.description": "Membaca sebut harga dan
|
|
104
|
+
"task.sales.reading.description": "Membaca sebut harga, peluang jualan dan produk jualan.",
|
|
105
105
|
"task.sales.keeping.name": "Menyelenggara sebut harga dan peluang",
|
|
106
|
-
"task.sales.keeping.description": "Membaca dan mengubah sebut harga dan
|
|
106
|
+
"task.sales.keeping.description": "Membaca dan mengubah sebut harga, peluang jualan dan produk jualan.",
|
|
107
|
+
"title.sales-product-list": "Produk",
|
|
108
|
+
"field.sales-product-code": "Kod",
|
|
109
|
+
"field.sales-product-name": "Nama",
|
|
110
|
+
"field.sales-product-kind": "Jenis",
|
|
111
|
+
"field.sales-product-grade": "Gred",
|
|
112
|
+
"field.sales-product-spec": "Spesifikasi",
|
|
113
|
+
"field.sales-product-unit": "Unit",
|
|
114
|
+
"field.sales-product-unit-price": "Harga seunit",
|
|
115
|
+
"field.sales-product-currency": "Mata wang",
|
|
116
|
+
"field.sales-product-tax-kind": "Percukaian",
|
|
117
|
+
"field.sales-product-active": "Ditawarkan",
|
|
118
|
+
"field.sales-product-description": "Catatan",
|
|
119
|
+
"field.sales-product-pick": "Tambah daripada produk",
|
|
120
|
+
"text.sales-product-kind-goods": "Barangan",
|
|
121
|
+
"text.sales-product-kind-service": "Perkhidmatan",
|
|
122
|
+
"text.sales-product-kind-labor": "Tenaga kerja",
|
|
123
|
+
"text.sales-product-empty": "Belum ada produk",
|
|
124
|
+
"text.sales-product-empty-description": "Tekan Tambah atau taip terus ke dalam jadual, kemudian simpan. Baris sebut harga dipilih dari sini.",
|
|
125
|
+
"text.sales-product-saved": "Produk disimpan.",
|
|
126
|
+
"text.sales-product-delete-confirm": "Padam {count} produk? Baris sebut harga yang sudah ditulis kekal.",
|
|
127
|
+
"text.sales-product-search": "Cari mengikut kod atau nama produk",
|
|
128
|
+
"text.sales-product-none": "Tiada produk ditemui.",
|
|
129
|
+
"error.sales-product-code-required": "Berikan kod produk.",
|
|
130
|
+
"error.sales-product-name-required": "Namakan produk.",
|
|
131
|
+
"error.sales-product-code-duplicate": "Kod produk {code} sudah digunakan.",
|
|
132
|
+
"error.sales-product-price-invalid": "Harga mestilah sifar atau lebih.",
|
|
133
|
+
"error.sales-product-not-found": "Produk tidak ditemui - muat semula dan cuba lagi.",
|
|
134
|
+
"text.quotation-invoice-source": "Sebut harga {number} · v{version}",
|
|
135
|
+
"text.quotation-send-confirm": "Kepada {party} · jumlah {total}. Selepas dihantar, amaunnya tidak boleh diubah - semak semula untuk mengubahnya.",
|
|
136
|
+
"text.quotation-send-confirm-purchase": "Daripada {party} · jumlah {total}. Selepas dihantar, amaunnya tidak boleh diubah - semak semula untuk mengubahnya."
|
|
107
137
|
}
|
package/translations/zh.json
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
"button.quotation-accept": "标记为接受",
|
|
4
4
|
"button.quotation-expire": "标记为过期",
|
|
5
5
|
"button.quotation-new": "新建报价",
|
|
6
|
-
"button.quotation-print": "打印",
|
|
7
6
|
"button.quotation-reject": "标记为拒绝",
|
|
8
7
|
"button.quotation-revise": "修订",
|
|
9
8
|
"button.quotation-send": "发送",
|
|
@@ -97,11 +96,42 @@
|
|
|
97
96
|
"title.opportunity-list": "商机",
|
|
98
97
|
"title.opportunity-new": "新商机",
|
|
99
98
|
"button.opportunity-new-quotation": "新建报价单",
|
|
99
|
+
"button.quotation-make-invoice": "生成发票",
|
|
100
100
|
"error.quotation-opportunity-invalid": "请从本公司的商机中选择。",
|
|
101
101
|
"field.quotation-opportunity": "商机",
|
|
102
102
|
"text.opportunity-section-quotations": "报价单",
|
|
103
103
|
"task.sales.reading.name": "查看报价与商机",
|
|
104
|
-
"task.sales.reading.description": "
|
|
104
|
+
"task.sales.reading.description": "读取报价、销售商机和销售商品。",
|
|
105
105
|
"task.sales.keeping.name": "管理报价与商机",
|
|
106
|
-
"task.sales.keeping.description": "
|
|
106
|
+
"task.sales.keeping.description": "读取并修改报价、销售商机和销售商品。",
|
|
107
|
+
"title.sales-product-list": "商品",
|
|
108
|
+
"field.sales-product-code": "商品编码",
|
|
109
|
+
"field.sales-product-name": "商品名称",
|
|
110
|
+
"field.sales-product-kind": "类别",
|
|
111
|
+
"field.sales-product-grade": "等级",
|
|
112
|
+
"field.sales-product-spec": "规格",
|
|
113
|
+
"field.sales-product-unit": "单位",
|
|
114
|
+
"field.sales-product-unit-price": "单价",
|
|
115
|
+
"field.sales-product-currency": "币种",
|
|
116
|
+
"field.sales-product-tax-kind": "计税类别",
|
|
117
|
+
"field.sales-product-active": "启用",
|
|
118
|
+
"field.sales-product-description": "备注",
|
|
119
|
+
"field.sales-product-pick": "从商品添加",
|
|
120
|
+
"text.sales-product-kind-goods": "货物",
|
|
121
|
+
"text.sales-product-kind-service": "服务",
|
|
122
|
+
"text.sales-product-kind-labor": "人力",
|
|
123
|
+
"text.sales-product-empty": "尚无商品",
|
|
124
|
+
"text.sales-product-empty-description": "点击添加或直接在表格中输入后保存。报价明细从这里选取。",
|
|
125
|
+
"text.sales-product-saved": "商品已保存。",
|
|
126
|
+
"text.sales-product-delete-confirm": "删除 {count} 个商品?已填写的报价明细保持不变。",
|
|
127
|
+
"text.sales-product-search": "按商品编码或名称查找",
|
|
128
|
+
"text.sales-product-none": "未找到商品。",
|
|
129
|
+
"error.sales-product-code-required": "请输入商品编码。",
|
|
130
|
+
"error.sales-product-name-required": "请输入商品名称。",
|
|
131
|
+
"error.sales-product-code-duplicate": "商品编码 {code} 已被使用。",
|
|
132
|
+
"error.sales-product-price-invalid": "单价须大于或等于0。",
|
|
133
|
+
"error.sales-product-not-found": "未找到商品,请刷新后重试。",
|
|
134
|
+
"text.quotation-invoice-source": "报价 {number} · v{version}",
|
|
135
|
+
"text.quotation-send-confirm": "收件方 {party} · 合计 {total}。发送后金额不可更改,如需更改请修订。",
|
|
136
|
+
"text.quotation-send-confirm-purchase": "发件方 {party} · 合计 {total}。发送后金额不可更改,如需更改请修订。"
|
|
107
137
|
}
|