vv-iiko-pp-parser 1.0.6

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 (87) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.md +582 -0
  3. package/dist/clients/clients.fetcher.d.ts +102 -0
  4. package/dist/clients/clients.fetcher.d.ts.map +1 -0
  5. package/dist/clients/clients.fetcher.js +196 -0
  6. package/dist/clients/clients.fetcher.js.map +1 -0
  7. package/dist/clients/clients.parser.d.ts +144 -0
  8. package/dist/clients/clients.parser.d.ts.map +1 -0
  9. package/dist/clients/clients.parser.js +473 -0
  10. package/dist/clients/clients.parser.js.map +1 -0
  11. package/dist/clients/clients.service.d.ts +90 -0
  12. package/dist/clients/clients.service.d.ts.map +1 -0
  13. package/dist/clients/clients.service.js +277 -0
  14. package/dist/clients/clients.service.js.map +1 -0
  15. package/dist/clients/clients.types.d.ts +127 -0
  16. package/dist/clients/clients.types.d.ts.map +1 -0
  17. package/dist/clients/clients.types.js +6 -0
  18. package/dist/clients/clients.types.js.map +1 -0
  19. package/dist/clients/index.d.ts +5 -0
  20. package/dist/clients/index.d.ts.map +1 -0
  21. package/dist/clients/index.js +25 -0
  22. package/dist/clients/index.js.map +1 -0
  23. package/dist/core/auth/iiko-auth.service.d.ts +52 -0
  24. package/dist/core/auth/iiko-auth.service.d.ts.map +1 -0
  25. package/dist/core/auth/iiko-auth.service.js +302 -0
  26. package/dist/core/auth/iiko-auth.service.js.map +1 -0
  27. package/dist/core/http/iiko-http.client.d.ts +13 -0
  28. package/dist/core/http/iiko-http.client.d.ts.map +1 -0
  29. package/dist/core/http/iiko-http.client.js +55 -0
  30. package/dist/core/http/iiko-http.client.js.map +1 -0
  31. package/dist/core/iiko-parser.config.d.ts +28 -0
  32. package/dist/core/iiko-parser.config.d.ts.map +1 -0
  33. package/dist/core/iiko-parser.config.js +76 -0
  34. package/dist/core/iiko-parser.config.js.map +1 -0
  35. package/dist/core/parser/iiko-parser.service.d.ts +15 -0
  36. package/dist/core/parser/iiko-parser.service.d.ts.map +1 -0
  37. package/dist/core/parser/iiko-parser.service.js +156 -0
  38. package/dist/core/parser/iiko-parser.service.js.map +1 -0
  39. package/dist/core/session/iiko-session.service.d.ts +68 -0
  40. package/dist/core/session/iiko-session.service.d.ts.map +1 -0
  41. package/dist/core/session/iiko-session.service.js +209 -0
  42. package/dist/core/session/iiko-session.service.js.map +1 -0
  43. package/dist/iiko-parser.d.ts +149 -0
  44. package/dist/iiko-parser.d.ts.map +1 -0
  45. package/dist/iiko-parser.js +209 -0
  46. package/dist/iiko-parser.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +7 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/interfaces/company-profile.interface.d.ts +12 -0
  52. package/dist/interfaces/company-profile.interface.d.ts.map +1 -0
  53. package/dist/interfaces/company-profile.interface.js +3 -0
  54. package/dist/interfaces/company-profile.interface.js.map +1 -0
  55. package/dist/invoices/index.d.ts +6 -0
  56. package/dist/invoices/index.d.ts.map +1 -0
  57. package/dist/invoices/index.js +22 -0
  58. package/dist/invoices/index.js.map +1 -0
  59. package/dist/invoices/invoices.fetcher.d.ts +49 -0
  60. package/dist/invoices/invoices.fetcher.d.ts.map +1 -0
  61. package/dist/invoices/invoices.fetcher.js +141 -0
  62. package/dist/invoices/invoices.fetcher.js.map +1 -0
  63. package/dist/invoices/invoices.filters.d.ts +40 -0
  64. package/dist/invoices/invoices.filters.d.ts.map +1 -0
  65. package/dist/invoices/invoices.filters.js +81 -0
  66. package/dist/invoices/invoices.filters.js.map +1 -0
  67. package/dist/invoices/invoices.parser.d.ts +101 -0
  68. package/dist/invoices/invoices.parser.d.ts.map +1 -0
  69. package/dist/invoices/invoices.parser.js +540 -0
  70. package/dist/invoices/invoices.parser.js.map +1 -0
  71. package/dist/invoices/invoices.service.d.ts +82 -0
  72. package/dist/invoices/invoices.service.d.ts.map +1 -0
  73. package/dist/invoices/invoices.service.js +361 -0
  74. package/dist/invoices/invoices.service.js.map +1 -0
  75. package/dist/invoices/invoices.storage.service.d.ts +30 -0
  76. package/dist/invoices/invoices.storage.service.d.ts.map +1 -0
  77. package/dist/invoices/invoices.storage.service.js +135 -0
  78. package/dist/invoices/invoices.storage.service.js.map +1 -0
  79. package/dist/invoices/invoices.types.d.ts +94 -0
  80. package/dist/invoices/invoices.types.d.ts.map +1 -0
  81. package/dist/invoices/invoices.types.js +3 -0
  82. package/dist/invoices/invoices.types.js.map +1 -0
  83. package/dist/types.d.ts +138 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +4 -0
  86. package/dist/types.js.map +1 -0
  87. package/package.json +52 -0
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.IikoInvoicesStorageService = void 0;
37
+ const fs_1 = require("fs");
38
+ const path = __importStar(require("path"));
39
+ class IikoInvoicesStorageService {
40
+ constructor() {
41
+ this.outputDir = path.join(process.cwd(), 'integrations', 'iikoParser', 'output');
42
+ }
43
+ /**
44
+ * Сохраняет данные инвойсов в JSON файл
45
+ */
46
+ async saveToFile(data) {
47
+ try {
48
+ // 1. Создаём директорию, если не существует
49
+ await this.ensureOutputDirectory();
50
+ // 2. Генерируем имя файла
51
+ const fileName = this.generateFileName(data);
52
+ // 3. Проверяем на дубликаты и генерируем уникальное имя
53
+ const uniqueFileName = await this.getUniqueFileName(fileName);
54
+ // 4. Полный путь к файлу
55
+ const filePath = path.join(this.outputDir, uniqueFileName);
56
+ // 5. Сериализуем в JSON (pretty print с 2 пробелами)
57
+ const jsonContent = JSON.stringify(data, null, 2);
58
+ // 6. Записываем в файл
59
+ await fs_1.promises.writeFile(filePath, jsonContent, 'utf-8');
60
+ // 7. Логируем результат
61
+ this.logSuccess(uniqueFileName, data);
62
+ return filePath;
63
+ }
64
+ catch (error) {
65
+ console.error('❌ Ошибка сохранения файла', error);
66
+ throw error;
67
+ }
68
+ }
69
+ /**
70
+ * Создаёт output директорию, если не существует
71
+ */
72
+ async ensureOutputDirectory() {
73
+ try {
74
+ await fs_1.promises.access(this.outputDir);
75
+ }
76
+ catch {
77
+ await fs_1.promises.mkdir(this.outputDir, { recursive: true });
78
+ console.log(`📁 Создана директория: ${this.outputDir}`);
79
+ }
80
+ }
81
+ /**
82
+ * Генерирует имя файла на основе метаданных
83
+ * Формат: invoices_YYYY-MM_status.json
84
+ */
85
+ generateFileName(data) {
86
+ const { period, statusFilter } = data.meta;
87
+ // Извлекаем год и месяц из периода "from"
88
+ const fromDate = new Date(period.from);
89
+ const year = fromDate.getFullYear();
90
+ const month = String(fromDate.getMonth() + 1).padStart(2, '0');
91
+ // Статус фильтра (например, "issued", "all", "paid")
92
+ const status = statusFilter.toLowerCase().replace(/\s+/g, '_');
93
+ return `invoices_${year}-${month}_${status}.json`;
94
+ }
95
+ /**
96
+ * Проверяет существование файла и добавляет суффикс _v2, _v3 при необходимости
97
+ */
98
+ async getUniqueFileName(fileName) {
99
+ const baseName = fileName.replace('.json', '');
100
+ let uniqueName = fileName;
101
+ let version = 2;
102
+ while (await this.fileExists(path.join(this.outputDir, uniqueName))) {
103
+ uniqueName = `${baseName}_v${version}.json`;
104
+ version++;
105
+ }
106
+ return uniqueName;
107
+ }
108
+ /**
109
+ * Проверяет существование файла
110
+ */
111
+ async fileExists(filePath) {
112
+ try {
113
+ await fs_1.promises.access(filePath);
114
+ return true;
115
+ }
116
+ catch {
117
+ return false;
118
+ }
119
+ }
120
+ /**
121
+ * Логирует успешное сохранение
122
+ */
123
+ logSuccess(fileName, data) {
124
+ const totalInvoices = data.invoices.length;
125
+ const totalItems = data.invoices.reduce((sum, invoice) => sum + invoice.items.length, 0);
126
+ console.log('==============================');
127
+ console.log('📦 Invoices saved successfully');
128
+ console.log(`📄 File: ${fileName}`);
129
+ console.log(`📊 Total invoices: ${totalInvoices}`);
130
+ console.log(`📦 Total items: ${totalItems}`);
131
+ console.log('==============================');
132
+ }
133
+ }
134
+ exports.IikoInvoicesStorageService = IikoInvoicesStorageService;
135
+ //# sourceMappingURL=invoices.storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoices.storage.service.js","sourceRoot":"","sources":["../../src/invoices/invoices.storage.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ export interface InvoiceRow {
2
+ columns: string[];
3
+ }
4
+ export interface InvoiceTableData {
5
+ rows: InvoiceRow[];
6
+ totalRows: number;
7
+ }
8
+ export interface InvoicesFetchParams {
9
+ perPage?: number;
10
+ page?: number;
11
+ searchBy?: string;
12
+ searchValue?: string;
13
+ withDetails?: boolean;
14
+ }
15
+ export interface InvoiceListItem {
16
+ invoiceNumber: string;
17
+ invoiceDate: string;
18
+ dueDate: string;
19
+ status: string;
20
+ amount: string;
21
+ clientId: string;
22
+ invoiceId: string;
23
+ }
24
+ export interface InvoiceItem {
25
+ name: string;
26
+ quantity: string;
27
+ price: string;
28
+ amount: string;
29
+ }
30
+ export interface InvoiceDetails {
31
+ payer: string;
32
+ legalEntity: string;
33
+ paymentDate?: string;
34
+ items: InvoiceItem[];
35
+ total: string;
36
+ }
37
+ export interface ParsedInvoice {
38
+ invoiceNumber: string;
39
+ invoiceDate: string;
40
+ dueDate: string;
41
+ status: string;
42
+ amount: string;
43
+ details: InvoiceDetails;
44
+ }
45
+ export interface ParseInvoicesParams {
46
+ year: number;
47
+ month: number;
48
+ statuses: string[];
49
+ }
50
+ export interface SavedInvoiceItem {
51
+ name: string;
52
+ quantity: number;
53
+ price: number;
54
+ total: number;
55
+ }
56
+ export interface SavedInvoice {
57
+ invoiceNumber: string;
58
+ date: string;
59
+ status: string;
60
+ currency: string;
61
+ total: number;
62
+ vat: number;
63
+ payer?: string;
64
+ legalEntity?: string;
65
+ paymentDate?: string;
66
+ items: SavedInvoiceItem[];
67
+ }
68
+ export interface MasterPartnerInfo {
69
+ company: string;
70
+ manager: string;
71
+ email: string;
72
+ }
73
+ export interface CompanyInfo {
74
+ name: string;
75
+ phone: string;
76
+ email: string;
77
+ status: string;
78
+ masterPartner: MasterPartnerInfo;
79
+ }
80
+ export interface PeriodInfo {
81
+ from: string;
82
+ to: string;
83
+ }
84
+ export interface InvoicesMeta {
85
+ company: CompanyInfo;
86
+ period: PeriodInfo;
87
+ statusFilter: string;
88
+ parsedAt: string;
89
+ }
90
+ export interface SavedInvoicesData {
91
+ meta: InvoicesMeta;
92
+ invoices: SavedInvoice[];
93
+ }
94
+ //# sourceMappingURL=invoices.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoices.types.d.ts","sourceRoot":"","sources":["../../src/invoices/invoices.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=invoices.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoices.types.js","sourceRoot":"","sources":["../../src/invoices/invoices.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Событие прогресса выполнения парсера.
3
+ *
4
+ * Используется для передачи информации о текущем состоянии
5
+ * выполнения операций парсера во внешний код.
6
+ */
7
+ export interface ParserProgressEvent {
8
+ /** Стадия выполнения */
9
+ stage: 'session' | 'auth' | 'fetch_invoices' | 'parse_invoices' | 'fetch_invoice_details' | 'fetch_clients' | 'parse_clients' | 'fetch_client_details' | 'detect_chain' | 'load_chain_members' | 'done';
10
+ /** Описание текущего действия */
11
+ message: string;
12
+ /** Текущее значение (для операций с счётчиком) */
13
+ current?: number | string;
14
+ /** Общее количество элементов (для операций с счётчиком) */
15
+ total?: number | string;
16
+ /** Номер инвойса (для детальной загрузки) */
17
+ invoiceNumber?: string;
18
+ }
19
+ /**
20
+ * Callback для отслеживания прогресса выполнения парсера.
21
+ *
22
+ * Вызывается на каждом значимом этапе работы (авторизация, пагинация, парсинг).
23
+ * Позволяет внешнему коду реагировать на изменения состояния.
24
+ */
25
+ export type ParserProgressCallback = (event: ParserProgressEvent) => void;
26
+ /**
27
+ * Параметры конфигурации парсера iiko Partner Portal.
28
+ */
29
+ export interface IikoParserOptions {
30
+ /** Email для авторизации */
31
+ login: string;
32
+ /** Пароль для авторизации */
33
+ password: string;
34
+ /** Базовый URL портала (по умолчанию: https://pp.iiko.ru) */
35
+ baseUrl?: string;
36
+ /** Язык интерфейса (en или ru, по умолчанию: en) */
37
+ language?: 'en' | 'ru';
38
+ /** Пользовательский путь к файлу cookies (опционально) */
39
+ cookiesPath?: string;
40
+ /** Callback для отслеживания прогресса выполнения (опционально) */
41
+ onProgress?: ParserProgressCallback;
42
+ }
43
+ /**
44
+ * Параметры пагинации для загрузки инвойсов.
45
+ */
46
+ export interface PaginationOptions {
47
+ /** Количество инвойсов на страницу (по умолчанию: 50) */
48
+ pageSize?: number;
49
+ /** Максимальное количество страниц для загрузки (по умолчанию: без ограничений) */
50
+ maxPages?: number;
51
+ }
52
+ /**
53
+ * Параметры фильтрации списка инвойсов.
54
+ */
55
+ export interface InvoicesFilter {
56
+ /** Дата начала периода в формате YYYY-MM-DD */
57
+ dateFrom?: string;
58
+ /** Дата окончания периода в формате YYYY-MM-DD */
59
+ dateTo?: string;
60
+ /** Поле для поиска */
61
+ searchBy?: 'client' | 'firm' | 'tax_id' | 'invoice_number';
62
+ /** Значение для поиска */
63
+ searchValue?: string;
64
+ /** Параметры пагинации (опционально) */
65
+ pagination?: PaginationOptions;
66
+ }
67
+ /**
68
+ * Структура данных инвойса из iiko Partner Portal.
69
+ *
70
+ * Содержит основные поля из таблицы инвойсов и опциональные
71
+ * детали (items, subscriptions), загружаемые из модального окна.
72
+ */
73
+ export interface InvoiceData {
74
+ /** Номер инвойса (например: "INV3818369") */
75
+ invoiceNumber: string;
76
+ /** Дата создания инвойса */
77
+ invoiceDate: string;
78
+ /** Срок оплаты */
79
+ dueDate: string;
80
+ /** Название клиента */
81
+ clientName: string;
82
+ /** Название компании */
83
+ companyName: string;
84
+ /** Tax ID (только цифры, без пробелов) */
85
+ taxId: string;
86
+ /** Статус инвойса (Issued, Paid, Cancelled, и др.) */
87
+ status: string;
88
+ /** Общая сумма инвойса (число) */
89
+ amount: number;
90
+ /** Относительный URL для загрузки деталей из модального окна */
91
+ detailsUrl: string;
92
+ /** Элементы инвойса (загружаются при withDetails: true) */
93
+ items: InvoiceItem[];
94
+ /** Подписки (загружаются при withDetails: true) */
95
+ subscriptions: Subscription[];
96
+ }
97
+ /**
98
+ * Элемент инвойса из таблицы Invoice Information.
99
+ */
100
+ export interface InvoiceItem {
101
+ /** Название продукта */
102
+ productName: string;
103
+ /** Цена за единицу */
104
+ price: number;
105
+ /** Количество */
106
+ quantity: number;
107
+ /** Скидка в процентах */
108
+ discount: number;
109
+ /** Итоговая сумма */
110
+ amount: number;
111
+ }
112
+ /**
113
+ * Подписка из таблицы Subscription Info.
114
+ */
115
+ export interface Subscription {
116
+ /** Название продукта */
117
+ productName: string;
118
+ /** Количество */
119
+ quantity: number;
120
+ /** Цена */
121
+ price: number;
122
+ /** Итоговая сумма */
123
+ amount: number;
124
+ }
125
+ /**
126
+ * Профиль компании из кабинета iiko Partner Portal.
127
+ */
128
+ export interface CompanyProfile {
129
+ /** Название компании */
130
+ name: string;
131
+ /** Телефон */
132
+ phone: string;
133
+ /** Email */
134
+ email: string;
135
+ /** Адрес (может быть пустым) */
136
+ address: string;
137
+ }
138
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Public API types
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,mBAAmB"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "vv-iiko-pp-parser",
3
+ "version": "1.0.6",
4
+ "description": "Unofficial iiko Partner Portal parser with session handling and Chain support",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "dev": "tsc --watch",
10
+ "clean": "rm -rf dist",
11
+ "prepublishOnly": "npm run clean && npm run build",
12
+ "test": "npm run build && node test-parser.js"
13
+ },
14
+ "keywords": [
15
+ "iiko",
16
+ "parser",
17
+ "invoices",
18
+ "pp.iiko.ru",
19
+ "session-handling",
20
+ "invoice-parser",
21
+ "iiko-partner-portal"
22
+ ],
23
+ "author": "A. Mirzaev (mirzaev.uz)",
24
+ "license": "UNLICENSED",
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "dependencies": {
29
+ "axios": "^1.6.0",
30
+ "axios-cookiejar-support": "^4.0.7",
31
+ "cheerio": "^1.0.0-rc.12",
32
+ "dotenv": "^17.2.3",
33
+ "tough-cookie": "^4.1.3"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^18.0.0",
37
+ "@types/tough-cookie": "^4.0.5",
38
+ "typescript": "^5.3.0"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "README.md",
43
+ "CHANGELOG.md"
44
+ ],
45
+ "engines": {
46
+ "node": ">=16.0.0"
47
+ },
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "https://gitlab.com/mirby/vv-iiko-pp-parser.git"
51
+ }
52
+ }