@rsc-labs/medusa-documents
Version:
Generate documents from Medusa
110 lines (109 loc) • 6.69 kB
JavaScript
;
/*
* 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_packing_slip_settings_1 = require("../models/document-packing-slip-settings");
const utils_1 = require("@medusajs/utils");
class DocumentPackingSlipSettingsService extends medusa_1.TransactionBaseService {
copySettingsIfPossible(newSettings, lastSettings) {
if (lastSettings) {
newSettings.forced_number = lastSettings.forced_number;
newSettings.number_format = lastSettings.number_format;
newSettings.template = lastSettings.template;
}
}
async getPackingSlipForcedNumber() {
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
if (lastDocumentPackingSlipSettings && lastDocumentPackingSlipSettings.forced_number) {
const nextNumber = lastDocumentPackingSlipSettings.forced_number.toString();
return nextNumber;
}
return undefined;
}
async resetForcedNumberByCreatingNewSettings() {
const documentPackingSlipSettingsRepository = this.activeManager_.getRepository(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const newDocumentPackingSlipSettings = this.activeManager_.create(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
this.copySettingsIfPossible(newDocumentPackingSlipSettings, lastDocumentPackingSlipSettings);
newDocumentPackingSlipSettings.forced_number = undefined;
const result = await documentPackingSlipSettingsRepository.save(newDocumentPackingSlipSettings);
return result;
}
async getLastDocumentPackingSlipSettings() {
const documentPackingSlipSettingsRepository = this.activeManager_.getRepository(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const lastDocumentPackingSlipSettings = await documentPackingSlipSettingsRepository.createQueryBuilder('documentPackingSlipSettings')
.orderBy('documentPackingSlipSettings.created_at', 'DESC')
.getOne();
if (lastDocumentPackingSlipSettings === null) {
return undefined;
}
return lastDocumentPackingSlipSettings;
}
async getPackingSlipTemplate() {
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
if (lastDocumentPackingSlipSettings) {
return lastDocumentPackingSlipSettings.template;
}
return undefined;
}
async updatePackingSlipForcedNumber(forcedNumber) {
if (forcedNumber && !isNaN(Number(forcedNumber))) {
const documentPackingSlipSettingsRepository = this.activeManager_.getRepository(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
const newDocumentPackingSlipSettings = this.activeManager_.create(document_packing_slip_settings_1.DocumentPackingSlipSettings);
this.copySettingsIfPossible(newDocumentPackingSlipSettings, lastDocumentPackingSlipSettings);
newDocumentPackingSlipSettings.forced_number = parseInt(forcedNumber);
const result = await documentPackingSlipSettingsRepository.save(newDocumentPackingSlipSettings);
return result;
}
else {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'You need to set proper number');
}
}
async updatePackingSlipTemplate(packingSlipTemplate) {
const documentPackingSlipSettingsRepository = this.activeManager_.getRepository(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
const newDocumentPackingSlipSettings = this.activeManager_.create(document_packing_slip_settings_1.DocumentPackingSlipSettings);
this.copySettingsIfPossible(newDocumentPackingSlipSettings, lastDocumentPackingSlipSettings);
newDocumentPackingSlipSettings.template = packingSlipTemplate;
const result = await documentPackingSlipSettingsRepository.save(newDocumentPackingSlipSettings);
return result;
}
async updateFormatNumber(newFormatNumber) {
const documentPackingSlipSettingsRepository = this.activeManager_.getRepository(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
const newDocumentPackingSlipSettings = this.activeManager_.create(document_packing_slip_settings_1.DocumentPackingSlipSettings);
this.copySettingsIfPossible(newDocumentPackingSlipSettings, lastDocumentPackingSlipSettings);
newDocumentPackingSlipSettings.number_format = newFormatNumber;
const result = await documentPackingSlipSettingsRepository.save(newDocumentPackingSlipSettings);
return result;
}
async updateSettings(newFormatNumber, forcedNumber, packingSlipTemplate) {
const documentPackingSlipSettingsRepository = this.activeManager_.getRepository(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const newDocumentPackingSlipSettings = this.activeManager_.create(document_packing_slip_settings_1.DocumentPackingSlipSettings);
const lastDocumentPackingSlipSettings = await this.getLastDocumentPackingSlipSettings();
this.copySettingsIfPossible(newDocumentPackingSlipSettings, lastDocumentPackingSlipSettings);
if (newFormatNumber) {
newDocumentPackingSlipSettings.number_format = newFormatNumber;
}
if (forcedNumber !== undefined && !isNaN(Number(forcedNumber))) {
newDocumentPackingSlipSettings.forced_number = parseInt(forcedNumber);
}
if (packingSlipTemplate) {
newDocumentPackingSlipSettings.template = packingSlipTemplate;
}
const result = await documentPackingSlipSettingsRepository.save(newDocumentPackingSlipSettings);
return result;
}
}
exports.default = DocumentPackingSlipSettingsService;