medusa-invoice 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. package/.yarnrc.yml +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +177 -0
  4. package/dist/admin/_virtual_entry.js +15246 -0
  5. package/dist/api/admin/document-invoice-settings/forced-number/route.d.ts +2 -0
  6. package/dist/api/admin/document-invoice-settings/forced-number/route.js +39 -0
  7. package/dist/api/admin/document-invoice-settings/format-number/route.d.ts +2 -0
  8. package/dist/api/admin/document-invoice-settings/format-number/route.js +39 -0
  9. package/dist/api/admin/document-invoice-settings/invoice-template/route.d.ts +2 -0
  10. package/dist/api/admin/document-invoice-settings/invoice-template/route.js +39 -0
  11. package/dist/api/admin/document-invoice-settings/route.d.ts +3 -0
  12. package/dist/api/admin/document-invoice-settings/route.js +56 -0
  13. package/dist/api/admin/document-packing-slip-settings/route.d.ts +3 -0
  14. package/dist/api/admin/document-packing-slip-settings/route.js +56 -0
  15. package/dist/api/admin/document-packing-slip-settings/template/route.d.ts +2 -0
  16. package/dist/api/admin/document-packing-slip-settings/template/route.js +39 -0
  17. package/dist/api/admin/document-settings/document-address/route.d.ts +2 -0
  18. package/dist/api/admin/document-settings/document-address/route.js +46 -0
  19. package/dist/api/admin/document-settings/logo/route.d.ts +3 -0
  20. package/dist/api/admin/document-settings/logo/route.js +61 -0
  21. package/dist/api/admin/document-settings/route.d.ts +2 -0
  22. package/dist/api/admin/document-settings/route.js +30 -0
  23. package/dist/api/admin/invoice/display-number/route.d.ts +2 -0
  24. package/dist/api/admin/invoice/display-number/route.js +32 -0
  25. package/dist/api/admin/invoice/generate/route.d.ts +2 -0
  26. package/dist/api/admin/invoice/generate/route.js +29 -0
  27. package/dist/api/admin/invoice/route.d.ts +3 -0
  28. package/dist/api/admin/invoice/route.js +44 -0
  29. package/dist/api/admin/packing-slip/preview/route.d.ts +2 -0
  30. package/dist/api/admin/packing-slip/preview/route.js +29 -0
  31. package/dist/api/admin/packing-slip/route.d.ts +3 -0
  32. package/dist/api/admin/packing-slip/route.js +44 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +29 -0
  35. package/dist/loaders/i18next.d.ts +3 -0
  36. package/dist/loaders/i18next.js +72 -0
  37. package/dist/migrations/1711700828113-DocumentSettings.d.ts +6 -0
  38. package/dist/migrations/1711700828113-DocumentSettings.js +47 -0
  39. package/dist/migrations/1711701185935-Invoice.d.ts +5 -0
  40. package/dist/migrations/1711701185935-Invoice.js +50 -0
  41. package/dist/migrations/1712753213091-DocumentInvoiceSettings.d.ts +5 -0
  42. package/dist/migrations/1712753213091-DocumentInvoiceSettings.js +46 -0
  43. package/dist/migrations/1712754851678-Invoice.d.ts +5 -0
  44. package/dist/migrations/1712754851678-Invoice.js +23 -0
  45. package/dist/migrations/1714903066794-DocumentPackingSlipSettings.d.ts +5 -0
  46. package/dist/migrations/1714903066794-DocumentPackingSlipSettings.js +25 -0
  47. package/dist/migrations/1714903539447-PackingSlip.d.ts +5 -0
  48. package/dist/migrations/1714903539447-PackingSlip.js +45 -0
  49. package/dist/models/document-invoice-settings.d.ts +11 -0
  50. package/dist/models/document-invoice-settings.js +61 -0
  51. package/dist/models/document-packing-slip-settings.d.ts +11 -0
  52. package/dist/models/document-packing-slip-settings.js +61 -0
  53. package/dist/models/document-settings.d.ts +12 -0
  54. package/dist/models/document-settings.js +66 -0
  55. package/dist/models/invoice.d.ts +15 -0
  56. package/dist/models/invoice.js +74 -0
  57. package/dist/models/packing-slip.d.ts +15 -0
  58. package/dist/models/packing-slip.js +74 -0
  59. package/dist/services/document-invoice-settings.d.ts +14 -0
  60. package/dist/services/document-invoice-settings.js +110 -0
  61. package/dist/services/document-packing-slip-settings.d.ts +14 -0
  62. package/dist/services/document-packing-slip-settings.js +110 -0
  63. package/dist/services/generators/invoice-generator.d.ts +8 -0
  64. package/dist/services/generators/invoice-generator.js +64 -0
  65. package/dist/services/generators/packing-slip-generator.d.ts +8 -0
  66. package/dist/services/generators/packing-slip-generator.js +64 -0
  67. package/dist/services/invoice.d.ts +22 -0
  68. package/dist/services/invoice.js +277 -0
  69. package/dist/services/packing-slip.d.ts +16 -0
  70. package/dist/services/packing-slip.js +187 -0
  71. package/dist/services/templates/invoices/basic/basic-logo.d.ts +8 -0
  72. package/dist/services/templates/invoices/basic/basic-logo.js +56 -0
  73. package/dist/services/templates/invoices/basic/basic.d.ts +8 -0
  74. package/dist/services/templates/invoices/basic/basic.js +53 -0
  75. package/dist/services/templates/invoices/basic/parts/customer-info.d.ts +2 -0
  76. package/dist/services/templates/invoices/basic/parts/customer-info.js +70 -0
  77. package/dist/services/templates/invoices/basic/parts/header-for-logo.d.ts +2 -0
  78. package/dist/services/templates/invoices/basic/parts/header-for-logo.js +33 -0
  79. package/dist/services/templates/invoices/basic/parts/header-logo.d.ts +1 -0
  80. package/dist/services/templates/invoices/basic/parts/header-logo.js +30 -0
  81. package/dist/services/templates/invoices/basic/parts/header.d.ts +2 -0
  82. package/dist/services/templates/invoices/basic/parts/header.js +36 -0
  83. package/dist/services/templates/invoices/basic/parts/hr.d.ts +1 -0
  84. package/dist/services/templates/invoices/basic/parts/hr.js +24 -0
  85. package/dist/services/templates/invoices/basic/parts/invoice-info.d.ts +2 -0
  86. package/dist/services/templates/invoices/basic/parts/invoice-info.js +36 -0
  87. package/dist/services/templates/invoices/basic/parts/table.d.ts +2 -0
  88. package/dist/services/templates/invoices/basic/parts/table.js +54 -0
  89. package/dist/services/templates/packing-slips/basic/basic.d.ts +8 -0
  90. package/dist/services/templates/packing-slips/basic/basic.js +53 -0
  91. package/dist/services/templates/packing-slips/basic/parts/customer-info-small.d.ts +2 -0
  92. package/dist/services/templates/packing-slips/basic/parts/customer-info-small.js +70 -0
  93. package/dist/services/templates/packing-slips/basic/parts/customer-info.d.ts +2 -0
  94. package/dist/services/templates/packing-slips/basic/parts/customer-info.js +66 -0
  95. package/dist/services/templates/packing-slips/basic/parts/header-small.d.ts +2 -0
  96. package/dist/services/templates/packing-slips/basic/parts/header-small.js +38 -0
  97. package/dist/services/templates/packing-slips/basic/parts/header.d.ts +2 -0
  98. package/dist/services/templates/packing-slips/basic/parts/header.js +38 -0
  99. package/dist/services/templates/packing-slips/basic/parts/hr.d.ts +2 -0
  100. package/dist/services/templates/packing-slips/basic/parts/hr.js +33 -0
  101. package/dist/services/templates/packing-slips/basic/parts/table-items-small.d.ts +2 -0
  102. package/dist/services/templates/packing-slips/basic/parts/table-items-small.js +45 -0
  103. package/dist/services/templates/packing-slips/basic/parts/table-items.d.ts +2 -0
  104. package/dist/services/templates/packing-slips/basic/parts/table-items.js +45 -0
  105. package/dist/services/templates/packing-slips/basic/parts/table-order-info-small.d.ts +2 -0
  106. package/dist/services/templates/packing-slips/basic/parts/table-order-info-small.js +36 -0
  107. package/dist/services/templates/packing-slips/basic/parts/table-order-info.d.ts +2 -0
  108. package/dist/services/templates/packing-slips/basic/parts/table-order-info.js +37 -0
  109. package/dist/services/templates/packing-slips/basic/small.d.ts +8 -0
  110. package/dist/services/templates/packing-slips/basic/small.js +54 -0
  111. package/dist/services/types/api.d.ts +14 -0
  112. package/dist/services/types/api.js +14 -0
  113. package/dist/services/types/constants.d.ts +2 -0
  114. package/dist/services/types/constants.js +17 -0
  115. package/dist/services/types/template-kind.d.ts +8 -0
  116. package/dist/services/types/template-kind.js +25 -0
  117. package/dist/services/utils/currency.d.ts +1 -0
  118. package/dist/services/utils/currency.js +19 -0
  119. package/dist/ui-components/actions-dropdown/actions-dropdown.d.ts +4 -0
  120. package/dist/ui-components/actions-dropdown/actions-dropdown.js +18 -0
  121. package/dist/ui-components/actions-dropdown/invoice/button-generate-invoice.d.ts +5 -0
  122. package/dist/ui-components/actions-dropdown/invoice/button-generate-invoice.js +56 -0
  123. package/dist/ui-components/actions-dropdown/invoice/button-view-invoice.d.ts +5 -0
  124. package/dist/ui-components/actions-dropdown/invoice/button-view-invoice.js +64 -0
  125. package/dist/ui-components/actions-dropdown/packing-slip/button-generate-packing-slip.d.ts +5 -0
  126. package/dist/ui-components/actions-dropdown/packing-slip/button-generate-packing-slip.js +56 -0
  127. package/dist/ui-components/actions-dropdown/packing-slip/button-view-packing-slip.d.ts +5 -0
  128. package/dist/ui-components/actions-dropdown/packing-slip/button-view-packing-slip.js +64 -0
  129. package/dist/ui-components/index.d.ts +3 -0
  130. package/dist/ui-components/index.js +21 -0
  131. package/dist/ui-components/orders/order-table/invoice-number-from-order.d.ts +4 -0
  132. package/dist/ui-components/orders/order-table/invoice-number-from-order.js +30 -0
  133. package/dist/ui-components/orders/order-table/packing-slip-number.d.ts +4 -0
  134. package/dist/ui-components/orders/order-table/packing-slip-number.js +30 -0
  135. package/dist/ui-components/orders/order-table/use-columns.d.ts +45 -0
  136. package/dist/ui-components/orders/order-table/use-columns.js +186 -0
  137. package/dist/ui-components/orders/order-table/use-orders.d.ts +9 -0
  138. package/dist/ui-components/orders/order-table/use-orders.js +146 -0
  139. package/dist/ui-components/orders/order-table/utils/currencies.d.ts +14 -0
  140. package/dist/ui-components/orders/order-table/utils/currencies.js +1077 -0
  141. package/dist/ui-components/orders/order-table/utils/time.d.ts +10 -0
  142. package/dist/ui-components/orders/order-table/utils/time.js +54 -0
  143. package/dist/ui-components/orders/order-table.d.ts +8 -0
  144. package/dist/ui-components/orders/order-table.js +92 -0
  145. package/dist/ui-components/settings/settings-address.d.ts +2 -0
  146. package/dist/ui-components/settings/settings-address.js +66 -0
  147. package/dist/ui-components/settings/settings-invoice-display-number.d.ts +5 -0
  148. package/dist/ui-components/settings/settings-invoice-display-number.js +29 -0
  149. package/dist/ui-components/settings/settings-invoice.d.ts +2 -0
  150. package/dist/ui-components/settings/settings-invoice.js +116 -0
  151. package/dist/ui-components/settings/settings-logo.d.ts +2 -0
  152. package/dist/ui-components/settings/settings-logo.js +86 -0
  153. package/dist/ui-components/tabs/orders-tab.d.ts +1 -0
  154. package/dist/ui-components/tabs/orders-tab.js +28 -0
  155. package/dist/ui-components/tabs/pro-tab.d.ts +1 -0
  156. package/dist/ui-components/tabs/pro-tab.js +23 -0
  157. package/dist/ui-components/tabs/settings-tab.d.ts +1 -0
  158. package/dist/ui-components/tabs/settings-tab.js +28 -0
  159. package/dist/ui-components/tabs/templates-tab/templates-invoice-tab.d.ts +1 -0
  160. package/dist/ui-components/tabs/templates-tab/templates-invoice-tab.js +92 -0
  161. package/dist/ui-components/tabs/templates-tab/templates-packing-slip-tab.d.ts +1 -0
  162. package/dist/ui-components/tabs/templates-tab/templates-packing-slip-tab.js +92 -0
  163. package/dist/ui-components/tabs/templates-tab/templates-tab.d.ts +1 -0
  164. package/dist/ui-components/tabs/templates-tab/templates-tab.js +24 -0
  165. package/dist/ui-components/types/api.d.ts +54 -0
  166. package/dist/ui-components/types/api.js +14 -0
  167. package/dist/ui-components/types/invoice.d.ts +8 -0
  168. package/dist/ui-components/types/invoice.js +14 -0
  169. package/dist/ui-components/types/packing-slip.d.ts +8 -0
  170. package/dist/ui-components/types/packing-slip.js +14 -0
  171. package/dist/ui-components/types/template-kind.d.ts +8 -0
  172. package/dist/ui-components/types/template-kind.js +25 -0
  173. package/index.js +50 -0
  174. package/package.json +94 -0
  175. package/tsconfig.admin.json +8 -0
  176. package/tsconfig.json +32 -0
  177. package/tsconfig.server.json +8 -0
  178. package/tsconfig.spec.json +5 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2024 RSC-Labs, https://rsoftcon.com/
4
+ *
5
+ * MIT License
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software
8
+ * distributed under the License is distributed on an "AS IS" BASIS,
9
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ * See the License for the specific language governing permissions and
11
+ * limitations under the License.
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.generate = exports.validateInputForProvidedKind = void 0;
38
+ const template_kind_1 = require("../types/template-kind");
39
+ const basic_1 = __importStar(require("../templates/packing-slips/basic/basic"));
40
+ const small_1 = __importStar(require("../templates/packing-slips/basic/small"));
41
+ function validateInputForProvidedKind(templateKind, documentSettings) {
42
+ switch (templateKind) {
43
+ case template_kind_1.PackingSlipTemplateKind.BASIC:
44
+ return (0, basic_1.validateInput)(documentSettings);
45
+ case template_kind_1.PackingSlipTemplateKind.BASIC_SMALL:
46
+ return (0, small_1.validateInput)(documentSettings);
47
+ default:
48
+ return [false, 'Not supported template'];
49
+ }
50
+ }
51
+ exports.validateInputForProvidedKind = validateInputForProvidedKind;
52
+ function generate(kind, documentSettings, packingSlip, order) {
53
+ switch (kind) {
54
+ case template_kind_1.PackingSlipTemplateKind.BASIC:
55
+ return (0, basic_1.default)(documentSettings, packingSlip, order);
56
+ case template_kind_1.PackingSlipTemplateKind.BASIC_SMALL:
57
+ return (0, small_1.default)(documentSettings, packingSlip, order);
58
+ default:
59
+ return Promise.resolve(Buffer.from('Not supported template'));
60
+ }
61
+ }
62
+ exports.generate = generate;
63
+ ;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2luZy1zbGlwLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nZW5lcmF0b3JzL3BhY2tpbmctc2xpcC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0dBVUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMERBQWlFO0FBQ2pFLGdGQUEwRztBQUMxRyxnRkFBMEc7QUFLMUcsU0FBZ0IsNEJBQTRCLENBQUMsWUFBcUMsRUFBRSxnQkFBa0M7SUFDcEgsUUFBUSxZQUFZLEVBQUU7UUFDcEIsS0FBSyx1Q0FBdUIsQ0FBQyxLQUFLO1lBQ2hDLE9BQU8sSUFBQSxxQkFBa0IsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlDLEtBQUssdUNBQXVCLENBQUMsV0FBVztZQUN0QyxPQUFPLElBQUEscUJBQWtCLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QztZQUNFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztLQUM1QztBQUVILENBQUM7QUFWRCxvRUFVQztBQUVELFNBQWdCLFFBQVEsQ0FBQyxJQUE2QixFQUFFLGdCQUFrQyxFQUFFLFdBQXdCLEVBQUUsS0FBWTtJQUNoSSxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssdUNBQXVCLENBQUMsS0FBSztZQUNoQyxPQUFPLElBQUEsZUFBYSxFQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxLQUFLLHVDQUF1QixDQUFDLFdBQVc7WUFDdEMsT0FBTyxJQUFBLGVBQWEsRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0Q7WUFDRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7S0FDakU7QUFDSCxDQUFDO0FBVEQsNEJBU0M7QUFBQSxDQUFDIn0=
@@ -0,0 +1,22 @@
1
+ import { TransactionBaseService } from "@medusajs/medusa";
2
+ import { DocumentSettings } from "../models/document-settings";
3
+ import { DocumentAddress, InvoiceResult } from "./types/api";
4
+ import { InvoiceTemplateKind } from "./types/template-kind";
5
+ export default class InvoiceService extends TransactionBaseService {
6
+ private readonly orderService;
7
+ private readonly documentInvoiceSettingsService;
8
+ constructor(container: any);
9
+ private calculateTemplateKind;
10
+ private calculateFormatNumber;
11
+ private getNextInvoiceNumber;
12
+ private copySettingsIfPossible;
13
+ getTestDisplayNumber(formatNumber?: string, forcedNumber?: string): Promise<string | undefined>;
14
+ getInvoiceTemplate(): Promise<string | undefined>;
15
+ getStoreLogo(): Promise<string | undefined>;
16
+ updateStoreLogo(newLogoSource: string): Promise<DocumentSettings | undefined>;
17
+ updateStoreDocumentAddress(newAddress: DocumentAddress): Promise<DocumentSettings | undefined>;
18
+ getLastDocumentSettings(): Promise<DocumentSettings | undefined>;
19
+ getInvoice(invoiceId: string, includeBuffer?: boolean): Promise<InvoiceResult>;
20
+ generateInvoiceForOrder(orderId: string): Promise<InvoiceResult>;
21
+ generateTestInvoice(templateKind: InvoiceTemplateKind): Promise<InvoiceResult>;
22
+ }
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2024 RSC-Labs, https://rsoftcon.com/
4
+ *
5
+ * MIT License
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software
8
+ * distributed under the License is distributed on an "AS IS" BASIS,
9
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ * See the License for the specific language governing permissions and
11
+ * limitations under the License.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ const medusa_1 = require("@medusajs/medusa");
15
+ const medusa_2 = require("@medusajs/medusa");
16
+ const utils_1 = require("@medusajs/utils");
17
+ const invoice_1 = require("../models/invoice");
18
+ const document_settings_1 = require("../models/document-settings");
19
+ const template_kind_1 = require("./types/template-kind");
20
+ const invoice_generator_1 = require("./generators/invoice-generator");
21
+ const constants_1 = require("./types/constants");
22
+ class InvoiceService extends medusa_1.TransactionBaseService {
23
+ constructor(container) {
24
+ super(container);
25
+ this.orderService = container.orderService;
26
+ this.documentInvoiceSettingsService = container.documentInvoiceSettingsService;
27
+ }
28
+ calculateTemplateKind(documentSettings, documentInvoiceSettings) {
29
+ if (documentInvoiceSettings && documentInvoiceSettings.invoice_template) {
30
+ return documentInvoiceSettings.invoice_template;
31
+ }
32
+ // Legacy
33
+ if (documentSettings && documentSettings.invoice_template) {
34
+ return documentSettings.invoice_template;
35
+ }
36
+ return template_kind_1.InvoiceTemplateKind.BASIC;
37
+ }
38
+ calculateFormatNumber(documentSettings, documentInvoiceSettings) {
39
+ if (documentInvoiceSettings && documentInvoiceSettings.invoice_number_format) {
40
+ return documentInvoiceSettings.invoice_number_format;
41
+ }
42
+ // Legacy
43
+ if (documentSettings && documentSettings.invoice_number_format) {
44
+ return documentSettings.invoice_number_format;
45
+ }
46
+ return undefined;
47
+ }
48
+ async getNextInvoiceNumber(resetForcedNumber) {
49
+ const forcedNumber = await this.documentInvoiceSettingsService.getInvoiceForcedNumber();
50
+ if (forcedNumber !== undefined) {
51
+ if (resetForcedNumber) {
52
+ await this.documentInvoiceSettingsService.resetForcedNumberByCreatingNewSettings();
53
+ }
54
+ return forcedNumber;
55
+ }
56
+ const lastInvoice = await this.activeManager_
57
+ .getRepository(invoice_1.Invoice)
58
+ .createQueryBuilder('invoice')
59
+ .orderBy('created_at', 'DESC')
60
+ .getOne();
61
+ if (lastInvoice !== null) {
62
+ return (parseInt(lastInvoice.number) + 1).toString();
63
+ }
64
+ return '1';
65
+ }
66
+ copySettingsIfPossible(newSettings, lastSettings) {
67
+ if (lastSettings) {
68
+ newSettings.invoice_number_format = lastSettings.invoice_number_format;
69
+ newSettings.invoice_template = lastSettings.invoice_template;
70
+ newSettings.store_address = lastSettings.store_address;
71
+ newSettings.store_logo_source = lastSettings.store_logo_source;
72
+ }
73
+ }
74
+ async getTestDisplayNumber(formatNumber, forcedNumber) {
75
+ const nextNumber = forcedNumber !== undefined ? forcedNumber : await this.getNextInvoiceNumber();
76
+ if (nextNumber) {
77
+ return formatNumber ? formatNumber.replace(constants_1.INVOICE_NUMBER_PLACEHOLDER, nextNumber) : nextNumber;
78
+ }
79
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Neither forced number is set or any order present');
80
+ }
81
+ async getInvoiceTemplate() {
82
+ const documentSettingsRepository = this.activeManager_.getRepository(document_settings_1.DocumentSettings);
83
+ const lastDocumentSettings = await documentSettingsRepository.createQueryBuilder('documentSettings')
84
+ .orderBy('created_at', 'DESC')
85
+ .getOne();
86
+ if (lastDocumentSettings) {
87
+ return lastDocumentSettings.invoice_template;
88
+ }
89
+ return undefined;
90
+ }
91
+ async getStoreLogo() {
92
+ const documentSettingsRepository = this.activeManager_.getRepository(document_settings_1.DocumentSettings);
93
+ const lastDocumentSettings = await documentSettingsRepository.createQueryBuilder('documentSettings')
94
+ .orderBy('created_at', 'DESC')
95
+ .getOne();
96
+ if (lastDocumentSettings) {
97
+ return lastDocumentSettings.store_logo_source;
98
+ }
99
+ return undefined;
100
+ }
101
+ async updateStoreLogo(newLogoSource) {
102
+ const documentSettingsRepository = this.activeManager_.getRepository(document_settings_1.DocumentSettings);
103
+ const lastDocumentSettings = await documentSettingsRepository.createQueryBuilder('documentSettings')
104
+ .leftJoinAndSelect("documentSettings.store_address", "store_address")
105
+ .orderBy('documentSettings.created_at', 'DESC')
106
+ .getOne();
107
+ const newDocumentSettings = this.activeManager_.create(document_settings_1.DocumentSettings);
108
+ this.copySettingsIfPossible(newDocumentSettings, lastDocumentSettings === null ? undefined : lastDocumentSettings);
109
+ newDocumentSettings.store_logo_source = newLogoSource;
110
+ const result = await documentSettingsRepository.save(newDocumentSettings);
111
+ return result;
112
+ }
113
+ async updateStoreDocumentAddress(newAddress) {
114
+ const newEntry = this.activeManager_.create(medusa_1.Address);
115
+ newEntry.company = newAddress.company;
116
+ newEntry.first_name = newAddress.first_name;
117
+ newEntry.last_name = newAddress.last_name;
118
+ newEntry.city = newAddress.city;
119
+ newEntry.address_1 = newAddress.address_1;
120
+ newEntry.postal_code = newAddress.postal_code;
121
+ newEntry.phone = newAddress.phone;
122
+ const resultAddress = await this.activeManager_.getRepository(medusa_1.Address).save(newEntry);
123
+ const documentSettingsRepository = this.activeManager_.getRepository(document_settings_1.DocumentSettings);
124
+ const lastDocumentSettings = await documentSettingsRepository.createQueryBuilder('documentSettings')
125
+ .leftJoinAndSelect("documentSettings.store_address", "store_address")
126
+ .orderBy('documentSettings.created_at', 'DESC')
127
+ .getOne();
128
+ const newDocumentSettings = this.activeManager_.create(document_settings_1.DocumentSettings);
129
+ this.copySettingsIfPossible(newDocumentSettings, lastDocumentSettings === null ? undefined : lastDocumentSettings);
130
+ newDocumentSettings.store_address = resultAddress;
131
+ const result = await documentSettingsRepository.save(newDocumentSettings);
132
+ return result;
133
+ }
134
+ async getLastDocumentSettings() {
135
+ const documentSettingsRepository = this.activeManager_.getRepository(document_settings_1.DocumentSettings);
136
+ const lastDocumentSettings = await documentSettingsRepository.createQueryBuilder('documentSettings')
137
+ .leftJoinAndSelect("documentSettings.store_address", "store_address")
138
+ .orderBy('documentSettings.created_at', 'DESC')
139
+ .getOne();
140
+ if (lastDocumentSettings === null) {
141
+ return undefined;
142
+ }
143
+ return lastDocumentSettings;
144
+ }
145
+ async getInvoice(invoiceId, includeBuffer = false) {
146
+ if (includeBuffer) {
147
+ const invoice = await this.activeManager_
148
+ .getRepository(invoice_1.Invoice)
149
+ .createQueryBuilder('invoice')
150
+ .leftJoinAndSelect("invoice.document_settings", "document_settings")
151
+ .leftJoinAndSelect("document_settings.store_address", "store_address")
152
+ .leftJoinAndSelect("invoice.document_invoice_settings", "document_invoice_settings")
153
+ .leftJoinAndSelect("invoice.order", "order")
154
+ .where("invoice.id = :invoiceId", { invoiceId: invoiceId })
155
+ .getOne();
156
+ if (invoice && invoice !== null && invoice.document_settings) {
157
+ const order = await this.orderService.retrieveWithTotals(invoice.order.id, {
158
+ relations: ['billing_address', 'shipping_address']
159
+ });
160
+ const calculatedTemplateKind = this.calculateTemplateKind(invoice.document_settings, invoice.document_invoice_settings);
161
+ const buffer = await (0, invoice_generator_1.generateInvoice)(calculatedTemplateKind, invoice.document_settings, invoice, order);
162
+ return {
163
+ invoice: invoice,
164
+ buffer: buffer
165
+ };
166
+ }
167
+ }
168
+ const invoice = await this.activeManager_
169
+ .getRepository(invoice_1.Invoice)
170
+ .createQueryBuilder('invoice')
171
+ .where("invoice.id = :invoiceId", { invoiceId: invoiceId })
172
+ .getOne();
173
+ if (invoice && invoice !== null) {
174
+ return {
175
+ invoice: invoice
176
+ };
177
+ }
178
+ return {
179
+ invoice: undefined,
180
+ buffer: undefined
181
+ };
182
+ }
183
+ async generateInvoiceForOrder(orderId) {
184
+ const order = await this.orderService.retrieveWithTotals(orderId, {
185
+ relations: ['billing_address', 'shipping_address']
186
+ });
187
+ if (order) {
188
+ const settings = await this.getLastDocumentSettings();
189
+ if (settings) {
190
+ const invoiceSettings = await this.documentInvoiceSettingsService.getLastDocumentInvoiceSettings();
191
+ if (invoiceSettings) {
192
+ const calculatedTemplateKind = this.calculateTemplateKind(settings, invoiceSettings);
193
+ const [validationPassed, info] = (0, invoice_generator_1.validateInputForProvidedKind)(calculatedTemplateKind, settings);
194
+ if (validationPassed) {
195
+ const RESET_FORCED_NUMBER = true;
196
+ const nextNumber = await this.getNextInvoiceNumber(RESET_FORCED_NUMBER);
197
+ const newEntry = this.activeManager_.create(invoice_1.Invoice);
198
+ newEntry.number = nextNumber;
199
+ const invoiceFormatNumber = this.calculateFormatNumber(settings, invoiceSettings);
200
+ newEntry.display_number = invoiceFormatNumber ? invoiceFormatNumber.replace(constants_1.INVOICE_NUMBER_PLACEHOLDER, newEntry.number) : newEntry.number;
201
+ newEntry.order = order;
202
+ newEntry.document_settings = settings;
203
+ newEntry.document_invoice_settings = invoiceSettings;
204
+ const resultInvoice = await this.activeManager_.getRepository(invoice_1.Invoice).save(newEntry);
205
+ const metaDataUpdate = (0, medusa_1.setMetadata)(order, {
206
+ invoice_id: resultInvoice.id
207
+ });
208
+ order.metadata = metaDataUpdate;
209
+ await this.activeManager_.getRepository(medusa_2.Order).save(order);
210
+ const buffer = await (0, invoice_generator_1.generateInvoice)(calculatedTemplateKind, settings, resultInvoice, order);
211
+ return {
212
+ invoice: newEntry,
213
+ buffer: buffer
214
+ };
215
+ }
216
+ else {
217
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, info);
218
+ }
219
+ }
220
+ else {
221
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Retrieve invoice settings failed. Please check if they are set.');
222
+ }
223
+ }
224
+ else {
225
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Retrieve document settings failed. Please check if they are set.');
226
+ }
227
+ }
228
+ else {
229
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Cant retrieve order');
230
+ }
231
+ }
232
+ async generateTestInvoice(templateKind) {
233
+ const lastOrder = await this.activeManager_.getRepository(medusa_2.Order).find({
234
+ skip: 0,
235
+ take: 1,
236
+ order: { created_at: "DESC" },
237
+ });
238
+ if (lastOrder && lastOrder.length > 0) {
239
+ const lastOrderWithTotals = await this.orderService.retrieveWithTotals(lastOrder[0].id, {
240
+ relations: ['billing_address', 'shipping_address']
241
+ });
242
+ const settings = await this.getLastDocumentSettings();
243
+ if (settings) {
244
+ const invoiceSettings = await this.documentInvoiceSettingsService.getLastDocumentInvoiceSettings();
245
+ if (invoiceSettings) {
246
+ const testInvoice = this.activeManager_.create(invoice_1.Invoice);
247
+ const nextNumber = await this.getNextInvoiceNumber();
248
+ testInvoice.number = nextNumber;
249
+ testInvoice.display_number = invoiceSettings.invoice_number_format ? invoiceSettings.invoice_number_format.replace(constants_1.INVOICE_NUMBER_PLACEHOLDER, testInvoice.number) : testInvoice.number;
250
+ testInvoice.created_at = new Date(Date.now());
251
+ const [validationPassed, info] = (0, invoice_generator_1.validateInputForProvidedKind)(templateKind, settings);
252
+ if (validationPassed) {
253
+ const buffer = await (0, invoice_generator_1.generateInvoice)(templateKind, settings, testInvoice, lastOrderWithTotals);
254
+ return {
255
+ invoice: testInvoice,
256
+ buffer: buffer
257
+ };
258
+ }
259
+ else {
260
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, info);
261
+ }
262
+ }
263
+ else {
264
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Invoice settings are not defined');
265
+ }
266
+ }
267
+ else {
268
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Document settings are not defined');
269
+ }
270
+ }
271
+ else {
272
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'You need to have at least one order to see preview');
273
+ }
274
+ }
275
+ }
276
+ exports.default = InvoiceService;
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9pbnZvaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHOztBQUVILDZDQUErRTtBQUMvRSw2Q0FBdUQ7QUFDdkQsMkNBQTZDO0FBQzdDLCtDQUE0QztBQUM1QyxtRUFBK0Q7QUFHL0QseURBQTREO0FBQzVELHNFQUErRjtBQUMvRixpREFBK0Q7QUFHL0QsTUFBcUIsY0FBZSxTQUFRLCtCQUFzQjtJQUtoRSxZQUNFLFNBQVM7UUFFVCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxTQUFTLENBQUMsOEJBQThCLENBQUM7SUFDakYsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGdCQUFrQyxFQUFFLHVCQUFnRDtRQUNoSCxJQUFJLHVCQUF1QixJQUFJLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFO1lBQ3ZFLE9BQU8sdUJBQXVCLENBQUMsZ0JBQXVDLENBQUM7U0FDeEU7UUFDRCxTQUFTO1FBQ1QsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6RCxPQUFPLGdCQUFnQixDQUFDLGdCQUF1QyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxtQ0FBbUIsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGdCQUFrQyxFQUFFLHVCQUFnRDtRQUNoSCxJQUFJLHVCQUF1QixJQUFJLHVCQUF1QixDQUFDLHFCQUFxQixFQUFFO1lBQzVFLE9BQU8sdUJBQXVCLENBQUMscUJBQXFCLENBQUM7U0FDdEQ7UUFDRCxTQUFTO1FBQ1QsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRTtZQUM5RCxPQUFPLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDO1NBQy9DO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBMkI7UUFDNUQsTUFBTSxZQUFZLEdBQXVCLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFNUcsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQzlCLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JCLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLHNDQUFzQyxFQUFFLENBQUM7YUFDcEY7WUFDRCxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUVELE1BQU0sV0FBVyxHQUFtQixNQUFNLElBQUksQ0FBQyxjQUFjO2FBQzFELGFBQWEsQ0FBQyxpQkFBTyxDQUFDO2FBQ3RCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQzthQUM3QixNQUFNLEVBQUUsQ0FBQTtRQUNYLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtZQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFdBQTZCLEVBQUUsWUFBK0I7UUFDM0YsSUFBSSxZQUFZLEVBQUU7WUFDaEIsV0FBVyxDQUFDLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztZQUN2RSxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1lBQzdELFdBQVcsQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztZQUN2RCxXQUFXLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFxQixFQUFFLFlBQXFCO1FBQ3JFLE1BQU0sVUFBVSxHQUF1QixZQUFZLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckgsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxzQ0FBMEIsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1NBQ2pHO1FBQ0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsbURBQW1ELENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQjtRQUV0QixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLG9DQUFnQixDQUFDLENBQUM7UUFDdkYsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO2FBQ2pHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO2FBQzdCLE1BQU0sRUFBRSxDQUFBO1FBRVgsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixPQUFPLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDO1NBQzlDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBRWhCLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsb0NBQWdCLENBQUMsQ0FBQztRQUN2RixNQUFNLG9CQUFvQixHQUFHLE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7YUFDakcsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7YUFDN0IsTUFBTSxFQUFFLENBQUE7UUFFWCxJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLE9BQU8sb0JBQW9CLENBQUMsaUJBQWlCLENBQUM7U0FDL0M7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBR0QsS0FBSyxDQUFDLGVBQWUsQ0FBRSxhQUFxQjtRQUMxQyxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLG9DQUFnQixDQUFDLENBQUM7UUFDdkYsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO2FBQ2pHLGlCQUFpQixDQUFDLGdDQUFnQyxFQUFFLGVBQWUsQ0FBQzthQUNwRSxPQUFPLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxDQUFDO2FBQzlDLE1BQU0sRUFBRSxDQUFBO1FBQ1gsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxvQ0FBZ0IsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuSCxtQkFBbUIsQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLENBQUM7UUFFdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUxRSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUFFLFVBQTJCO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFPLENBQUMsQ0FBQztRQUNyRCxRQUFRLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDdEMsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQzVDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDaEMsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxRQUFRLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFFbEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxnQkFBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsb0NBQWdCLENBQUMsQ0FBQztRQUN2RixNQUFNLG9CQUFvQixHQUFHLE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7YUFDakcsaUJBQWlCLENBQUMsZ0NBQWdDLEVBQUUsZUFBZSxDQUFDO2FBQ3BFLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxNQUFNLENBQUM7YUFDOUMsTUFBTSxFQUFFLENBQUE7UUFHWCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLG9DQUFnQixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25ILG1CQUFtQixDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUxRSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QjtRQUMzQixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLG9DQUFnQixDQUFDLENBQUM7UUFDdkYsTUFBTSxvQkFBb0IsR0FBNEIsTUFBTSwwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQzthQUMxSCxpQkFBaUIsQ0FBQyxnQ0FBZ0MsRUFBRSxlQUFlLENBQUM7YUFDcEUsT0FBTyxDQUFDLDZCQUE2QixFQUFFLE1BQU0sQ0FBQzthQUM5QyxNQUFNLEVBQUUsQ0FBQTtRQUVYLElBQUksb0JBQW9CLEtBQUssSUFBSSxFQUFFO1lBQ2pDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQixFQUFFLGdCQUF5QixLQUFLO1FBRWhFLElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFtQixNQUFNLElBQUksQ0FBQyxjQUFjO2lCQUN4RCxhQUFhLENBQUMsaUJBQU8sQ0FBQztpQkFDdEIsa0JBQWtCLENBQUMsU0FBUyxDQUFDO2lCQUM3QixpQkFBaUIsQ0FBQywyQkFBMkIsRUFBRSxtQkFBbUIsQ0FBQztpQkFDbkUsaUJBQWlCLENBQUMsaUNBQWlDLEVBQUUsZUFBZSxDQUFDO2lCQUNyRSxpQkFBaUIsQ0FBQyxtQ0FBbUMsRUFBRSwyQkFBMkIsQ0FBQztpQkFDbkYsaUJBQWlCLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQztpQkFDM0MsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO2lCQUMxRCxNQUFNLEVBQUUsQ0FBQztZQUVWLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUM1RCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUNoQjtvQkFDRSxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQztpQkFDbkQsQ0FDRixDQUFDO2dCQUNGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFDeEgsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG1DQUFlLEVBQUMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDeEcsT0FBTztvQkFDTCxPQUFPLEVBQUUsT0FBTztvQkFDaEIsTUFBTSxFQUFFLE1BQU07aUJBQ2YsQ0FBQTthQUNGO1NBQ0Y7UUFFRCxNQUFNLE9BQU8sR0FBbUIsTUFBTSxJQUFJLENBQUMsY0FBYzthQUN0RCxhQUFhLENBQUMsaUJBQU8sQ0FBQzthQUN0QixrQkFBa0IsQ0FBQyxTQUFTLENBQUM7YUFDN0IsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQzFELE1BQU0sRUFBRSxDQUFDO1FBRVosSUFBSSxPQUFPLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtZQUMvQixPQUFPO2dCQUNMLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUE7U0FDRjtRQUNELE9BQU87WUFDTCxPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFlO1FBRTNDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FDdEQsT0FBTyxFQUNQO1lBQ0UsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7U0FDbkQsQ0FDRixDQUFDO1FBQ0YsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ3RELElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sZUFBZSxHQUF3QyxNQUFNLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO2dCQUN4SSxJQUFJLGVBQWUsRUFBRTtvQkFDbkIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO29CQUNyRixNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBQSxnREFBNEIsRUFBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDaEcsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDcEIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7d0JBQ2pDLE1BQU0sVUFBVSxHQUFXLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBQ2hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGlCQUFPLENBQUMsQ0FBQzt3QkFDckQsUUFBUSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7d0JBRTdCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQzt3QkFFbEYsUUFBUSxDQUFDLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLHNDQUEwQixFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3QkFDM0ksUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7d0JBQ3RDLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyxlQUFlLENBQUM7d0JBRXJELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsaUJBQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFFdEYsTUFBTSxjQUFjLEdBQUcsSUFBQSxvQkFBVyxFQUFDLEtBQUssRUFBRTs0QkFDeEMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFO3lCQUM3QixDQUFDLENBQUM7d0JBRUgsS0FBSyxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUM7d0JBRWhDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUUzRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsbUNBQWUsRUFBQyxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUU3RixPQUFPOzRCQUNMLE9BQU8sRUFBRSxRQUFROzRCQUNqQixNQUFNLEVBQUUsTUFBTTt5QkFDZixDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLElBQUksQ0FDTCxDQUFDO3FCQUNIO2lCQUNGO3FCQUFNO29CQUNMLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGlFQUFpRSxDQUNsRSxDQUFDO2lCQUNIO2FBRUY7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsa0VBQWtFLENBQ25FLENBQUM7YUFDSDtTQUNGO2FBQU07WUFDTCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxZQUFpQztRQUV6RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLGNBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNwRSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQztTQUM3QixDQUFDLENBQUE7UUFFRixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FDcEUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDZjtnQkFDRSxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQzthQUNuRCxDQUNGLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ3RELElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sZUFBZSxHQUF3QyxNQUFNLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO2dCQUN4SSxJQUFJLGVBQWUsRUFBRTtvQkFDbkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsaUJBQU8sQ0FBQyxDQUFDO29CQUN4RCxNQUFNLFVBQVUsR0FBVyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO29CQUM3RCxXQUFXLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztvQkFDaEMsV0FBVyxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsc0NBQTBCLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUN4TCxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBQSxnREFBNEIsRUFBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ3RGLElBQUksZ0JBQWdCLEVBQUU7d0JBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxtQ0FBZSxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7d0JBQy9GLE9BQU87NEJBQ0wsT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLE1BQU0sRUFBRSxNQUFNO3lCQUNmLENBQUE7cUJBQ0Y7eUJBQU07d0JBQ0wsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsSUFBSSxDQUNMLENBQUM7cUJBQ0g7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsa0NBQWtDLENBQ25DLENBQUM7aUJBQ0g7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixtQ0FBbUMsQ0FDcEMsQ0FBQzthQUNIO1NBQ0Y7YUFBTTtZQUNMLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG9EQUFvRCxDQUNyRCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0Y7QUE5VUQsaUNBOFVDIn0=
@@ -0,0 +1,16 @@
1
+ import { TransactionBaseService } from "@medusajs/medusa";
2
+ import { DocumentSettings } from "../models/document-settings";
3
+ import { PackingSlipResult } from "./types/api";
4
+ import { PackingSlipTemplateKind } from "./types/template-kind";
5
+ export default class PackingSlipService extends TransactionBaseService {
6
+ private readonly orderService;
7
+ private readonly documentPackingSlipSettingsService;
8
+ constructor(container: any);
9
+ private calculateFormatNumber;
10
+ private calculateTemplateKind;
11
+ private getNextNumber;
12
+ getLastDocumentSettings(): Promise<DocumentSettings | undefined>;
13
+ getPackingSlip(packingSlipId: string, includeBuffer?: boolean): Promise<PackingSlipResult>;
14
+ create(orderId: string): Promise<PackingSlipResult>;
15
+ generatePreview(templateKind: PackingSlipTemplateKind): Promise<PackingSlipResult>;
16
+ }
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2024 RSC-Labs, https://rsoftcon.com/
4
+ *
5
+ * MIT License
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software
8
+ * distributed under the License is distributed on an "AS IS" BASIS,
9
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ * See the License for the specific language governing permissions and
11
+ * limitations under the License.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ const medusa_1 = require("@medusajs/medusa");
15
+ const medusa_2 = require("@medusajs/medusa");
16
+ const utils_1 = require("@medusajs/utils");
17
+ const packing_slip_1 = require("../models/packing-slip");
18
+ const document_settings_1 = require("../models/document-settings");
19
+ const template_kind_1 = require("./types/template-kind");
20
+ const packing_slip_generator_1 = require("./generators/packing-slip-generator");
21
+ const constants_1 = require("./types/constants");
22
+ class PackingSlipService extends medusa_1.TransactionBaseService {
23
+ constructor(container) {
24
+ super(container);
25
+ this.orderService = container.orderService;
26
+ this.documentPackingSlipSettingsService = container.documentPackingSlipSettingsService;
27
+ }
28
+ calculateFormatNumber(documentPackingSlipSettings) {
29
+ if (documentPackingSlipSettings && documentPackingSlipSettings.number_format) {
30
+ return documentPackingSlipSettings.number_format;
31
+ }
32
+ return undefined;
33
+ }
34
+ calculateTemplateKind(documentPackingSlipSettings) {
35
+ if (documentPackingSlipSettings && documentPackingSlipSettings.template) {
36
+ return documentPackingSlipSettings.template;
37
+ }
38
+ return template_kind_1.PackingSlipTemplateKind.BASIC;
39
+ }
40
+ async getNextNumber() {
41
+ const lastPackingSlip = await this.activeManager_
42
+ .getRepository(packing_slip_1.PackingSlip)
43
+ .createQueryBuilder('packs')
44
+ .orderBy('created_at', 'DESC')
45
+ .getOne();
46
+ if (lastPackingSlip !== null && lastPackingSlip !== undefined) {
47
+ return (parseInt(lastPackingSlip.number) + 1).toString();
48
+ }
49
+ return '1';
50
+ }
51
+ async getLastDocumentSettings() {
52
+ const documentSettingsRepository = this.activeManager_.getRepository(document_settings_1.DocumentSettings);
53
+ const lastDocumentSettings = await documentSettingsRepository.createQueryBuilder('documentSettings')
54
+ .leftJoinAndSelect("documentSettings.store_address", "store_address")
55
+ .orderBy('documentSettings.created_at', 'DESC')
56
+ .getOne();
57
+ if (lastDocumentSettings === null) {
58
+ return undefined;
59
+ }
60
+ return lastDocumentSettings;
61
+ }
62
+ async getPackingSlip(packingSlipId, includeBuffer = false) {
63
+ if (includeBuffer) {
64
+ const packingSlip = await this.activeManager_
65
+ .getRepository(packing_slip_1.PackingSlip)
66
+ .createQueryBuilder('packslip')
67
+ .leftJoinAndSelect("packslip.document_settings", "document_settings")
68
+ .leftJoinAndSelect("document_settings.store_address", "store_address")
69
+ .leftJoinAndSelect("packslip.document_packing_slip_settings", "document_packing_slip_settings")
70
+ .leftJoinAndSelect("packslip.order", "order")
71
+ .where("packslip.id = :packingSlipId", { packingSlipId: packingSlipId })
72
+ .getOne();
73
+ if (packingSlip && packingSlip !== null && packingSlip.document_settings) {
74
+ const order = await this.orderService.retrieveWithTotals(packingSlip.order.id, {
75
+ relations: ['billing_address', 'shipping_address', 'shipping_methods', 'shipping_methods.shipping_option']
76
+ });
77
+ const calculatedTemplateKind = this.calculateTemplateKind(packingSlip.document_packing_slip_settings);
78
+ const buffer = await (0, packing_slip_generator_1.generate)(calculatedTemplateKind, packingSlip.document_settings, packingSlip, order);
79
+ return {
80
+ packingSlip: packingSlip,
81
+ buffer: buffer
82
+ };
83
+ }
84
+ }
85
+ const packingSlip = await this.activeManager_
86
+ .getRepository(packing_slip_1.PackingSlip)
87
+ .createQueryBuilder('packslip')
88
+ .where("packslip.id = :packingSlipId", { packingSlipId: packingSlipId })
89
+ .getOne();
90
+ if (packingSlip && packingSlip !== null) {
91
+ return {
92
+ packingSlip: packingSlip
93
+ };
94
+ }
95
+ return {
96
+ packingSlip: undefined,
97
+ buffer: undefined
98
+ };
99
+ }
100
+ async create(orderId) {
101
+ const order = await this.orderService.retrieveWithTotals(orderId, {
102
+ relations: ['billing_address', 'shipping_address', 'shipping_methods', 'shipping_methods.shipping_option']
103
+ });
104
+ if (order) {
105
+ const settings = await this.getLastDocumentSettings();
106
+ if (settings) {
107
+ const packingSlipSettings = await this.documentPackingSlipSettingsService.getLastDocumentPackingSlipSettings();
108
+ if (packingSlipSettings) {
109
+ const calculatedTemplateKind = this.calculateTemplateKind(packingSlipSettings);
110
+ const [validationPassed, info] = (0, packing_slip_generator_1.validateInputForProvidedKind)(calculatedTemplateKind, settings);
111
+ if (validationPassed) {
112
+ const nextNumber = await this.getNextNumber();
113
+ const newEntry = this.activeManager_.create(packing_slip_1.PackingSlip);
114
+ newEntry.number = nextNumber;
115
+ const packingSlipFormatNumber = this.calculateFormatNumber(packingSlipSettings);
116
+ newEntry.display_number = packingSlipFormatNumber ? packingSlipFormatNumber.replace(constants_1.PACKING_SLIP_NUMBER_PLACEHOLDER, newEntry.number) : newEntry.number;
117
+ newEntry.order = order;
118
+ newEntry.document_settings = settings;
119
+ newEntry.document_packing_slip_settings = packingSlipSettings;
120
+ const resultInvoice = await this.activeManager_.getRepository(packing_slip_1.PackingSlip).save(newEntry);
121
+ const metaDataUpdate = (0, medusa_1.setMetadata)(order, {
122
+ packing_slip_id: resultInvoice.id
123
+ });
124
+ order.metadata = metaDataUpdate;
125
+ await this.activeManager_.getRepository(medusa_2.Order).save(order);
126
+ const buffer = await (0, packing_slip_generator_1.generate)(calculatedTemplateKind, settings, resultInvoice, order);
127
+ return {
128
+ packingSlip: newEntry,
129
+ buffer: buffer
130
+ };
131
+ }
132
+ else {
133
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, info);
134
+ }
135
+ }
136
+ else {
137
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Retrieve packing slip settings failed. Please check if they are set - e.g. if you set template or other settings.');
138
+ }
139
+ }
140
+ else {
141
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Retrieve document settings failed. Please check if they are set.');
142
+ }
143
+ }
144
+ else {
145
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Cant retrieve order');
146
+ }
147
+ }
148
+ async generatePreview(templateKind) {
149
+ const lastOrder = await this.activeManager_.getRepository(medusa_2.Order).find({
150
+ skip: 0,
151
+ take: 1,
152
+ order: { created_at: "DESC" },
153
+ });
154
+ if (lastOrder && lastOrder.length > 0) {
155
+ const lastOrderWithTotals = await this.orderService.retrieveWithTotals(lastOrder[0].id, {
156
+ relations: ['billing_address', 'shipping_address', 'shipping_methods', 'shipping_methods.shipping_option']
157
+ });
158
+ const settings = await this.getLastDocumentSettings();
159
+ if (settings) {
160
+ const previewPackingSlip = this.activeManager_.create(packing_slip_1.PackingSlip);
161
+ const nextNumber = await this.getNextNumber();
162
+ previewPackingSlip.number = nextNumber;
163
+ previewPackingSlip.display_number = nextNumber;
164
+ previewPackingSlip.created_at = new Date(Date.now());
165
+ const [validationPassed, info] = (0, packing_slip_generator_1.validateInputForProvidedKind)(templateKind, settings);
166
+ if (validationPassed) {
167
+ const buffer = await (0, packing_slip_generator_1.generate)(templateKind, settings, previewPackingSlip, lastOrderWithTotals);
168
+ return {
169
+ packingSlip: previewPackingSlip,
170
+ buffer: buffer
171
+ };
172
+ }
173
+ else {
174
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, info);
175
+ }
176
+ }
177
+ else {
178
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Document settings are not defined');
179
+ }
180
+ }
181
+ else {
182
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'You need to have at least one order to see preview');
183
+ }
184
+ }
185
+ }
186
+ exports.default = PackingSlipService;
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2luZy1zbGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3BhY2tpbmctc2xpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7QUFFSCw2Q0FBK0U7QUFDL0UsNkNBQXVEO0FBQ3ZELDJDQUE2QztBQUM3Qyx5REFBcUQ7QUFDckQsbUVBQStEO0FBRy9ELHlEQUFnRTtBQUNoRSxnRkFBNkY7QUFFN0YsaURBQW9FO0FBRXBFLE1BQXFCLGtCQUFtQixTQUFRLCtCQUFzQjtJQUtwRSxZQUNFLFNBQVM7UUFFVCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxTQUFTLENBQUMsa0NBQWtDLENBQUM7SUFDekYsQ0FBQztJQUVPLHFCQUFxQixDQUFDLDJCQUF3RDtRQUNwRixJQUFJLDJCQUEyQixJQUFJLDJCQUEyQixDQUFDLGFBQWEsRUFBRTtZQUM1RSxPQUFPLDJCQUEyQixDQUFDLGFBQWEsQ0FBQztTQUNsRDtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxxQkFBcUIsQ0FBQywyQkFBd0Q7UUFDcEYsSUFBSSwyQkFBMkIsSUFBSSwyQkFBMkIsQ0FBQyxRQUFRLEVBQUU7WUFDdkUsT0FBTywyQkFBMkIsQ0FBQyxRQUFtQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyx1Q0FBdUIsQ0FBQyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLE1BQU0sZUFBZSxHQUF1QixNQUFNLElBQUksQ0FBQyxjQUFjO2FBQ2xFLGFBQWEsQ0FBQywwQkFBVyxDQUFDO2FBQzFCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQzthQUMzQixPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQzthQUM3QixNQUFNLEVBQUUsQ0FBQTtRQUNYLElBQUksZUFBZSxLQUFLLElBQUksSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQzdELE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QjtRQUMzQixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLG9DQUFnQixDQUFDLENBQUM7UUFDdkYsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO2FBQ2pHLGlCQUFpQixDQUFDLGdDQUFnQyxFQUFFLGVBQWUsQ0FBQzthQUNwRSxPQUFPLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxDQUFDO2FBQzlDLE1BQU0sRUFBRSxDQUFBO1FBRVgsSUFBSSxvQkFBb0IsS0FBSyxJQUFJLEVBQUU7WUFDakMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQXFCLEVBQUUsZ0JBQXlCLEtBQUs7UUFFeEUsSUFBSSxhQUFhLEVBQUU7WUFDakIsTUFBTSxXQUFXLEdBQXVCLE1BQU0sSUFBSSxDQUFDLGNBQWM7aUJBQ2hFLGFBQWEsQ0FBQywwQkFBVyxDQUFDO2lCQUMxQixrQkFBa0IsQ0FBQyxVQUFVLENBQUM7aUJBQzlCLGlCQUFpQixDQUFDLDRCQUE0QixFQUFFLG1CQUFtQixDQUFDO2lCQUNwRSxpQkFBaUIsQ0FBQyxpQ0FBaUMsRUFBRSxlQUFlLENBQUM7aUJBQ3JFLGlCQUFpQixDQUFDLHlDQUF5QyxFQUFFLGdDQUFnQyxDQUFDO2lCQUM5RixpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7aUJBQzVDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDdkUsTUFBTSxFQUFFLENBQUM7WUFFVixJQUFJLFdBQVcsSUFBSSxXQUFXLEtBQUssSUFBSSxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDeEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUN0RCxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFDcEI7b0JBQ0UsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0NBQWtDLENBQUM7aUJBQzNHLENBQ0YsQ0FBQztnQkFDRixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsOEJBQThCLENBQUMsQ0FBQztnQkFDdEcsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGlDQUFRLEVBQUMsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekcsT0FBTztvQkFDTCxXQUFXLEVBQUUsV0FBVztvQkFDeEIsTUFBTSxFQUFFLE1BQU07aUJBQ2YsQ0FBQTthQUNGO1NBQ0Y7UUFFRCxNQUFNLFdBQVcsR0FBdUIsTUFBTSxJQUFJLENBQUMsY0FBYzthQUM5RCxhQUFhLENBQUMsMEJBQVcsQ0FBQzthQUMxQixrQkFBa0IsQ0FBQyxVQUFVLENBQUM7YUFDOUIsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDO2FBQ3ZFLE1BQU0sRUFBRSxDQUFDO1FBRVosSUFBSSxXQUFXLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtZQUN2QyxPQUFPO2dCQUNMLFdBQVcsRUFBRSxXQUFXO2FBQ3pCLENBQUE7U0FDRjtRQUNELE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUztZQUN0QixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBZTtRQUUxQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQ3RELE9BQU8sRUFDUDtZQUNFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGtDQUFrQyxDQUFDO1NBQzNHLENBQ0YsQ0FBQztRQUNGLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUN0RCxJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLG1CQUFtQixHQUE0QyxNQUFNLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO2dCQUN4SixJQUFJLG1CQUFtQixFQUFFO29CQUN2QixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUMvRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBQSxxREFBNEIsRUFBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDaEcsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDcEIsTUFBTSxVQUFVLEdBQVcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLDBCQUFXLENBQUMsQ0FBQzt3QkFDekQsUUFBUSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7d0JBRTdCLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBRWhGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQywyQ0FBK0IsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7d0JBQ3hKLFFBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixRQUFRLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO3dCQUN0QyxRQUFRLENBQUMsOEJBQThCLEdBQUcsbUJBQW1CLENBQUM7d0JBRTlELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsMEJBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFFMUYsTUFBTSxjQUFjLEdBQUcsSUFBQSxvQkFBVyxFQUFDLEtBQUssRUFBRTs0QkFDeEMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO3lCQUNsQyxDQUFDLENBQUM7d0JBRUgsS0FBSyxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUM7d0JBRWhDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUUzRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsaUNBQVEsRUFBQyxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUV0RixPQUFPOzRCQUNMLFdBQVcsRUFBRSxRQUFROzRCQUNyQixNQUFNLEVBQUUsTUFBTTt5QkFDZixDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLElBQUksQ0FDTCxDQUFDO3FCQUNIO2lCQUNGO3FCQUFNO29CQUNMLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1IQUFtSCxDQUNwSCxDQUFDO2lCQUNIO2FBQ0Y7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsa0VBQWtFLENBQ25FLENBQUM7YUFDSDtTQUNGO2FBQU07WUFDTCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxQkFBcUIsQ0FDdEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsWUFBcUM7UUFDekQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxjQUFLLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEUsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUM7U0FDN0IsQ0FBQyxDQUFBO1FBRUYsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQ3BFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ2Y7Z0JBQ0UsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0NBQWtDLENBQUM7YUFDM0csQ0FDRixDQUFDO1lBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUN0RCxJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLDBCQUFXLENBQUMsQ0FBQztnQkFDbkUsTUFBTSxVQUFVLEdBQVcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3RELGtCQUFrQixDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7Z0JBQ3ZDLGtCQUFrQixDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7Z0JBQy9DLGtCQUFrQixDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDckQsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUEscURBQTRCLEVBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN0RixJQUFJLGdCQUFnQixFQUFFO29CQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsaUNBQVEsRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLENBQUM7b0JBQy9GLE9BQU87d0JBQ0wsV0FBVyxFQUFFLGtCQUFrQjt3QkFDL0IsTUFBTSxFQUFFLE1BQU07cUJBQ2YsQ0FBQTtpQkFDRjtxQkFBTTtvQkFDTCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixJQUFJLENBQ0wsQ0FBQztpQkFDSDthQUNGO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1DQUFtQyxDQUNwQyxDQUFDO2FBQ0g7U0FDRjthQUFNO1lBQ0wsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsb0RBQW9ELENBQ3JELENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQXhORCxxQ0F3TkMifQ==
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Order } from "@medusajs/medusa";
4
+ import { Invoice } from "../../../../models/invoice";
5
+ import { DocumentSettings } from "../../../../models/document-settings";
6
+ export declare function validateInput(settings?: DocumentSettings): ([boolean, string]);
7
+ declare const _default: (settings: DocumentSettings, invoice: Invoice, order: Order) => Promise<Buffer>;
8
+ export default _default;