@posx/core 5.5.89 → 5.5.90

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/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2019 Francisco Hodge
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.
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Francisco Hodge
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.
package/README.md CHANGED
@@ -1,85 +1,85 @@
1
- # 第一阶段
2
- - 1. 创建,更新,删除都是通过 -> Http API
3
- - 2. 读取是通过本地数据库 -> 本地, (例外:订单从云端读取)
4
-
5
- # 第二阶段 (单机版)
6
- 1. 创建,更新,删除,读取都通过本地数据库,然后进行数据和云端同步(Web Worker)
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
- <div align="center">
19
- <img align="center" width="230" src="https://i.imgur.com/iHgtvmg.png" />
20
- <h2>Typescript Library Boilerplate Basic</h2>
21
- <blockquote>Minimal Library Starter Kit for your Typescript projects</blockquote>
22
-
23
- <a href="https://www.npmjs.com/package/@hodgef/ts-library-boilerplate-basic"><img src="https://badgen.net/npm/v/@hodgef/ts-library-boilerplate-basic?color=blue" alt="npm version"></a> <a href="https://github.com/hodgef/ts-library-boilerplate"><img src="https://img.shields.io/github/last-commit/hodgef/ts-library-boilerplate" alt="latest commit"></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"><img alt="Build Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Build/badge.svg?color=green" /></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"> <img alt="Publish Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Publish/badge.svg?color=green" /></a>
24
-
25
- <strong>For a plain Javascript alternative, check out [js-library-boilerplate-basic](https://github.com/hodgef/js-library-boilerplate-basic).</strong>
26
-
27
- </div>
28
-
29
- ## ⭐️ Features
30
-
31
- - Webpack 5
32
- - Babel 7
33
- - Hot reloading (`npm start`)
34
- - Automatic Types file generation (index.d.ts)
35
- - UMD exports, so your library works everywhere.
36
- - Jest unit testing
37
- - Customizable file headers for your build [(Example 1)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/index.js) [(Example2)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/css/index.css)
38
- - Daily [dependabot](https://dependabot.com) dependency updates
39
-
40
- ## 📦 Getting Started
41
-
42
- ```
43
- git clone https://github.com/hodgef/ts-library-boilerplate-basic.git myLibrary
44
- npm install
45
- ```
46
-
47
- ## 💎 Customization
48
-
49
- > Before shipping, make sure to:
50
-
51
- 1. Edit `LICENSE` file
52
- 2. Edit `package.json` information (These will be used to generate the headers for your built files)
53
- 3. Edit `library: "MyLibrary"` with your library's export name in `./webpack.config.js`
54
-
55
- ## 🚀 Deployment
56
-
57
- 1. `npm publish`
58
- 2. Your users can include your library as usual
59
-
60
- ### npm
61
-
62
- ```
63
- import MyLibrary from 'my-library';
64
- const libraryInstance = new MyLibrary();
65
- ...
66
- ```
67
-
68
- ### self-host/cdn
69
-
70
- ```
71
- <script src="build/index.js"></script>
72
-
73
- const MyLibrary = window.MyLibrary.default;
74
- const libraryInstance = new MyLibrary();
75
- ...
76
- ```
77
-
78
- ## ✅ Libraries built with this boilerplate
79
-
80
- > Made a library using this starter kit? Share it here by [submitting a pull request](https://github.com/hodgef/ts-library-boilerplate-basic/pulls)!
81
-
82
- - [simple-keyboard](https://github.com/hodgef/simple-keyboard) - Javascript Virtual Keyboard
83
- - [react-simple-keyboard](https://github.com/hodgef/react-simple-keyboard) - React Virtual Keyboard
84
- - [simple-keyboard-layouts](https://github.com/hodgef/simple-keyboard-layouts) - Keyboard layouts for simple-keyboard
85
- - [atlas-monaco](https://github.com/datdao/atlas-monaco) - AtlasHCL for monaco editor
1
+ # 第一阶段
2
+ - 1. 创建,更新,删除都是通过 -> Http API
3
+ - 2. 读取是通过本地数据库 -> 本地, (例外:订单从云端读取)
4
+
5
+ # 第二阶段 (单机版)
6
+ 1. 创建,更新,删除,读取都通过本地数据库,然后进行数据和云端同步(Web Worker)
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+ <div align="center">
19
+ <img align="center" width="230" src="https://i.imgur.com/iHgtvmg.png" />
20
+ <h2>Typescript Library Boilerplate Basic</h2>
21
+ <blockquote>Minimal Library Starter Kit for your Typescript projects</blockquote>
22
+
23
+ <a href="https://www.npmjs.com/package/@hodgef/ts-library-boilerplate-basic"><img src="https://badgen.net/npm/v/@hodgef/ts-library-boilerplate-basic?color=blue" alt="npm version"></a> <a href="https://github.com/hodgef/ts-library-boilerplate"><img src="https://img.shields.io/github/last-commit/hodgef/ts-library-boilerplate" alt="latest commit"></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"><img alt="Build Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Build/badge.svg?color=green" /></a> <a href="https://github.com/hodgef/ts-library-boilerplate-basic/actions"> <img alt="Publish Status" src="https://github.com/hodgef/ts-library-boilerplate-basic/workflows/Publish/badge.svg?color=green" /></a>
24
+
25
+ <strong>For a plain Javascript alternative, check out [js-library-boilerplate-basic](https://github.com/hodgef/js-library-boilerplate-basic).</strong>
26
+
27
+ </div>
28
+
29
+ ## ⭐️ Features
30
+
31
+ - Webpack 5
32
+ - Babel 7
33
+ - Hot reloading (`npm start`)
34
+ - Automatic Types file generation (index.d.ts)
35
+ - UMD exports, so your library works everywhere.
36
+ - Jest unit testing
37
+ - Customizable file headers for your build [(Example 1)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/index.js) [(Example2)](https://github.com/hodgef/ts-library-boilerplate-basic/blob/master/build/css/index.css)
38
+ - Daily [dependabot](https://dependabot.com) dependency updates
39
+
40
+ ## 📦 Getting Started
41
+
42
+ ```
43
+ git clone https://github.com/hodgef/ts-library-boilerplate-basic.git myLibrary
44
+ npm install
45
+ ```
46
+
47
+ ## 💎 Customization
48
+
49
+ > Before shipping, make sure to:
50
+
51
+ 1. Edit `LICENSE` file
52
+ 2. Edit `package.json` information (These will be used to generate the headers for your built files)
53
+ 3. Edit `library: "MyLibrary"` with your library's export name in `./webpack.config.js`
54
+
55
+ ## 🚀 Deployment
56
+
57
+ 1. `npm publish`
58
+ 2. Your users can include your library as usual
59
+
60
+ ### npm
61
+
62
+ ```
63
+ import MyLibrary from 'my-library';
64
+ const libraryInstance = new MyLibrary();
65
+ ...
66
+ ```
67
+
68
+ ### self-host/cdn
69
+
70
+ ```
71
+ <script src="build/index.js"></script>
72
+
73
+ const MyLibrary = window.MyLibrary.default;
74
+ const libraryInstance = new MyLibrary();
75
+ ...
76
+ ```
77
+
78
+ ## ✅ Libraries built with this boilerplate
79
+
80
+ > Made a library using this starter kit? Share it here by [submitting a pull request](https://github.com/hodgef/ts-library-boilerplate-basic/pulls)!
81
+
82
+ - [simple-keyboard](https://github.com/hodgef/simple-keyboard) - Javascript Virtual Keyboard
83
+ - [react-simple-keyboard](https://github.com/hodgef/react-simple-keyboard) - React Virtual Keyboard
84
+ - [simple-keyboard-layouts](https://github.com/hodgef/simple-keyboard-layouts) - Keyboard layouts for simple-keyboard
85
+ - [atlas-monaco](https://github.com/datdao/atlas-monaco) - AtlasHCL for monaco editor
package/build/index.d.ts CHANGED
@@ -32,6 +32,17 @@ declare module '@posx/core/index' {
32
32
  export * from '@posx/core/types/condition.type';
33
33
  export * from '@posx/core/types/merchant.type';
34
34
 
35
+ }
36
+ declare module '@posx/core/libs/FindOptions' {
37
+ export const Include: (query?: string) => (val: any) => any;
38
+ export const In: (query?: never[]) => (val: never) => boolean;
39
+ export const Between: (begin: number, end: number) => (val: number) => boolean;
40
+ export const Not: (query?: any) => (val: any, values: any) => boolean;
41
+ export const Raw: (fn: any) => any;
42
+ export const filterByParams: (params: {
43
+ [key: string]: any;
44
+ }) => (values: any) => boolean;
45
+
35
46
  }
36
47
  declare module '@posx/core/libs/electron.socket' {
37
48
  export class ElectronSocket {
@@ -247,17 +258,6 @@ declare module '@posx/core/libs/escpos.printer' {
247
258
  items: IPrintCommandLine[];
248
259
  }
249
260
 
250
- }
251
- declare module '@posx/core/libs/FindOptions' {
252
- export const Include: (query?: string) => (val: any) => any;
253
- export const In: (query?: never[]) => (val: never) => boolean;
254
- export const Between: (begin: number, end: number) => (val: number) => boolean;
255
- export const Not: (query?: any) => (val: any, values: any) => boolean;
256
- export const Raw: (fn: any) => any;
257
- export const filterByParams: (params: {
258
- [key: string]: any;
259
- }) => (values: any) => boolean;
260
-
261
261
  }
262
262
  declare module '@posx/core/service.factory' {
263
263
  import { IServiceOptions } from '@posx/core/types/misc.type';
@@ -1876,10 +1876,16 @@ declare module '@posx/core/types/config.type' {
1876
1876
  export interface IAppConfig extends IAppCoreModel {
1877
1877
  config: IConfig;
1878
1878
  cache: ICache;
1879
+ storage: {
1880
+ pricing_lookup_keys: string[];
1881
+ };
1879
1882
  }
1880
1883
  export class AppConfig extends AppCoreModel implements IAppConfig {
1881
1884
  config: Config;
1882
1885
  cache: Cache;
1886
+ storage: {
1887
+ pricing_lookup_keys: any[];
1888
+ };
1883
1889
  constructor();
1884
1890
  }
1885
1891
  export interface ICache {
@@ -2675,6 +2681,14 @@ declare module '@posx/core/types/invoice.type' {
2675
2681
  is_duplicate: boolean;
2676
2682
  /** The line item that this line item is duplicated from. */
2677
2683
  duplicated_from_uid: string;
2684
+ /** Whether the line item is a combo. */
2685
+ is_combo: boolean;
2686
+ /** Whether the line item is a combo item. */
2687
+ is_combo_item: boolean;
2688
+ /** Combo group unique id. */
2689
+ combo_group_uid: string;
2690
+ /** Combo line unique id. */
2691
+ combo_line_uid: string;
2678
2692
  /** Any modifiers applied to the line item. */
2679
2693
  modifiers: IInvoiceCoreLine[];
2680
2694
  /** Meta data for the line item */
@@ -2853,6 +2867,10 @@ declare module '@posx/core/types/invoice.type' {
2853
2867
  up_size: boolean;
2854
2868
  is_take_out: boolean;
2855
2869
  is_duplicate: boolean;
2870
+ is_combo: boolean;
2871
+ is_combo_item: boolean;
2872
+ combo_group_uid: string;
2873
+ combo_line_uid: string;
2856
2874
  modifiers: any[];
2857
2875
  duplicated_from_uid: string;
2858
2876
  sent: number;
@@ -3041,7 +3059,8 @@ declare module '@posx/core/types/misc.type' {
3041
3059
  EmployeeRole = "emr_",
3042
3060
  OrderDisplaySystem = "ods_",
3043
3061
  Charge = "chr_",
3044
- Price = "prc_"
3062
+ Price = "prc_",
3063
+ ComboGroup = "cbo_"
3045
3064
  }
3046
3065
  export enum ModelType {
3047
3066
  Merchant = "mnt",
@@ -3867,7 +3886,7 @@ declare module '@posx/core/types/product.type' {
3867
3886
  unit: number;
3868
3887
  /**
3869
3888
  * Number of items sold
3870
- * @ignore
3889
+ * @ignore
3871
3890
  */
3872
3891
  sold: number;
3873
3892
  /**
@@ -3898,7 +3917,7 @@ declare module '@posx/core/types/product.type' {
3898
3917
  likes: number;
3899
3918
  /**
3900
3919
  * Number of dislikes for the item
3901
- * @ignore
3920
+ * @ignore
3902
3921
  */
3903
3922
  dislikes: number;
3904
3923
  /**
@@ -3953,6 +3972,10 @@ declare module '@posx/core/types/product.type' {
3953
3972
  * if price editor will be opened by default when item is clicked
3954
3973
  */
3955
3974
  open_price_editor: boolean;
3975
+ /**
3976
+ * Combo groups (only applicable when type is ProductType.Combo)
3977
+ */
3978
+ combo_groups: IComboGroup[];
3956
3979
  }
3957
3980
  export class Item extends CoreItem implements IItem {
3958
3981
  codename: string;
@@ -3989,6 +4012,7 @@ declare module '@posx/core/types/product.type' {
3989
4012
  label_printers_uids: any[];
3990
4013
  open_editor_panel: boolean;
3991
4014
  open_price_editor: boolean;
4015
+ combo_groups: IComboGroup[];
3992
4016
  constructor();
3993
4017
  }
3994
4018
  export interface IPrice extends IAppCoreModel {
@@ -4006,6 +4030,93 @@ declare module '@posx/core/types/product.type' {
4006
4030
  amount: number;
4007
4031
  constructor();
4008
4032
  }
4033
+ /**
4034
+ * COMBO PRODUCT IMPLEMENTATION
4035
+ *
4036
+ * Combo products bundle multiple existing products together and sell them as a group,
4037
+ * usually at a discount. This implementation provides minimal impact on existing data structures.
4038
+ *
4039
+ * Usage:
4040
+ * 1. Create combo product with type = ProductType.Combo
4041
+ * 2. Define combo_groups array with component groups and available items
4042
+ * 3. Set combo discount (either amount or percentage)
4043
+ * 4. When adding to invoice, combo appears as single line with selections in combo_components
4044
+ *
4045
+ * Example:
4046
+ * ```
4047
+ * const combo: IItem = {
4048
+ * type: ProductType.Combo,
4049
+ * combo_groups: [
4050
+ * {
4051
+ * name: "Choose your main",
4052
+ * min_selections: 1,
4053
+ * max_selections: 1,
4054
+ * required: true,
4055
+ * items: [
4056
+ * { item_uid: 'burger_uid', is_default: true },
4057
+ * { item_uid: 'chicken_uid', price_override: 2.00 }
4058
+ * ]
4059
+ * },
4060
+ * {
4061
+ * name: "Pick a side",
4062
+ * min_selections: 1,
4063
+ * max_selections: 1,
4064
+ * required: true,
4065
+ * items: [
4066
+ * { item_uid: 'fries_uid', is_default: true },
4067
+ * { item_uid: 'onion_rings_uid', price_override: 1.50 }
4068
+ * ]
4069
+ * }
4070
+ * ],
4071
+ * combo_discount_percent: 15 // 15% discount
4072
+ * }
4073
+ * ```
4074
+ */
4075
+ /**
4076
+ * Interface for individual items within a combo group
4077
+ */
4078
+ export interface IComboGroupItem extends IAppModelSequence {
4079
+ /** Item unique id */
4080
+ item_uid: string;
4081
+ /** Combo item */
4082
+ combo_item: ICoreItem;
4083
+ /** Price of the item in combo */
4084
+ price: number;
4085
+ }
4086
+ /**
4087
+ * Interface for combo component groups (e.g., "Main Course", "Side", "Drink")
4088
+ */
4089
+ export interface IComboGroup extends IAppModelSequence {
4090
+ /** Group unique id */
4091
+ uid: string;
4092
+ /** Group name (e.g., "Choose your main", "Pick a side") */
4093
+ name: string;
4094
+ /** Translations of the name */
4095
+ name_translations: Record<string, string>;
4096
+ /** Minimum selections required from this group */
4097
+ min_order: number;
4098
+ /** Maximum selections allowed from this group */
4099
+ max_order: number;
4100
+ /** Available items in this group */
4101
+ combo_items: IComboGroupItem[];
4102
+ }
4103
+ export class ComboGroupItem implements IComboGroupItem {
4104
+ item_uid: string;
4105
+ combo_item: CoreItem;
4106
+ price: number;
4107
+ sequence: number;
4108
+ constructor();
4109
+ }
4110
+ export class ComboGroup implements IComboGroup {
4111
+ uid: string;
4112
+ name: string;
4113
+ name_translations: Record<string, string>;
4114
+ min_order: number;
4115
+ max_order: number;
4116
+ combo_items: IComboGroupItem[];
4117
+ sequence: number;
4118
+ constructor();
4119
+ }
4009
4120
 
4010
4121
  }
4011
4122
  declare module '@posx/core/types/report.type' {