UNPKG

@rsc-labs/medusa-documents

Version:
110 lines (109 loc) 6.41 kB
"use strict"; /* * Copyright 2024 RSC-Labs, https://rsoftcon.com/ * * MIT License * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); const medusa_1 = require("@medusajs/medusa"); const document_invoice_settings_1 = require("../models/document-invoice-settings"); const utils_1 = require("@medusajs/utils"); class DocumentInvoiceSettingsService extends medusa_1.TransactionBaseService { copySettingsIfPossible(newSettings, lastSettings) { if (lastSettings) { newSettings.invoice_forced_number = lastSettings.invoice_forced_number; newSettings.invoice_number_format = lastSettings.invoice_number_format; newSettings.invoice_template = lastSettings.invoice_template; } } async getInvoiceForcedNumber() { const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); if (lastDocumentInvoiceSettings && lastDocumentInvoiceSettings.invoice_forced_number) { const nextNumber = lastDocumentInvoiceSettings.invoice_forced_number.toString(); return nextNumber; } return undefined; } async resetForcedNumberByCreatingNewSettings() { const documentInvoiceSettingsRepository = this.activeManager_.getRepository(document_invoice_settings_1.DocumentInvoiceSettings); const newDocumentInvoiceSettings = this.activeManager_.create(document_invoice_settings_1.DocumentInvoiceSettings); const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); this.copySettingsIfPossible(newDocumentInvoiceSettings, lastDocumentInvoiceSettings); newDocumentInvoiceSettings.invoice_forced_number = undefined; const result = await documentInvoiceSettingsRepository.save(newDocumentInvoiceSettings); return result; } async getLastDocumentInvoiceSettings() { const documentInvoiceSettingsRepository = this.activeManager_.getRepository(document_invoice_settings_1.DocumentInvoiceSettings); const lastDocumentInvoiceSettings = await documentInvoiceSettingsRepository.createQueryBuilder('documentInvoiceSettings') .orderBy('documentInvoiceSettings.created_at', 'DESC') .getOne(); if (lastDocumentInvoiceSettings === null) { return undefined; } return lastDocumentInvoiceSettings; } async getInvoiceTemplate() { const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); if (lastDocumentInvoiceSettings) { return lastDocumentInvoiceSettings.invoice_template; } return undefined; } async updateInvoiceForcedNumber(forcedNumber) { if (forcedNumber && !isNaN(Number(forcedNumber))) { const documentInvoiceSettingsRepository = this.activeManager_.getRepository(document_invoice_settings_1.DocumentInvoiceSettings); const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); const newDocumentInvoiceSettings = this.activeManager_.create(document_invoice_settings_1.DocumentInvoiceSettings); this.copySettingsIfPossible(newDocumentInvoiceSettings, lastDocumentInvoiceSettings); newDocumentInvoiceSettings.invoice_forced_number = parseInt(forcedNumber); const result = await documentInvoiceSettingsRepository.save(newDocumentInvoiceSettings); return result; } else { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'You need to set proper number'); } } async updateInvoiceTemplate(invoiceTemplate) { const documentInvoiceSettingsRepository = this.activeManager_.getRepository(document_invoice_settings_1.DocumentInvoiceSettings); const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); const newDocumentInvoiceSettings = this.activeManager_.create(document_invoice_settings_1.DocumentInvoiceSettings); this.copySettingsIfPossible(newDocumentInvoiceSettings, lastDocumentInvoiceSettings); newDocumentInvoiceSettings.invoice_template = invoiceTemplate; const result = await documentInvoiceSettingsRepository.save(newDocumentInvoiceSettings); return result; } async updateFormatNumber(newFormatNumber) { const documentInvoiceSettingsRepository = this.activeManager_.getRepository(document_invoice_settings_1.DocumentInvoiceSettings); const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); const newDocumentInvoiceSettings = this.activeManager_.create(document_invoice_settings_1.DocumentInvoiceSettings); this.copySettingsIfPossible(newDocumentInvoiceSettings, lastDocumentInvoiceSettings); newDocumentInvoiceSettings.invoice_number_format = newFormatNumber; const result = await documentInvoiceSettingsRepository.save(newDocumentInvoiceSettings); return result; } async updateSettings(newFormatNumber, forcedNumber, invoiceTemplate) { const documentInvoiceSettingsRepository = this.activeManager_.getRepository(document_invoice_settings_1.DocumentInvoiceSettings); const newDocumentInvoiceSettings = this.activeManager_.create(document_invoice_settings_1.DocumentInvoiceSettings); const lastDocumentInvoiceSettings = await this.getLastDocumentInvoiceSettings(); this.copySettingsIfPossible(newDocumentInvoiceSettings, lastDocumentInvoiceSettings); if (newFormatNumber) { newDocumentInvoiceSettings.invoice_number_format = newFormatNumber; } if (forcedNumber !== undefined && !isNaN(Number(forcedNumber))) { newDocumentInvoiceSettings.invoice_forced_number = parseInt(forcedNumber); } if (invoiceTemplate) { newDocumentInvoiceSettings.invoice_template = invoiceTemplate; } const result = await documentInvoiceSettingsRepository.save(newDocumentInvoiceSettings); return result; } } exports.default = DocumentInvoiceSettingsService;