UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

100 lines (99 loc) 5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.coaTicket2offer = coaTicket2offer; const COA = require("@motionpicture/coa-service"); const util_1 = require("util"); const factory = require("../../../../factory"); // tslint:disable-next-line:max-func-body-length function coaTicket2offer(params) { // discontinue eligibleMonetaryAmount(2025-01-03~) // 適用通貨区分 // const eligibleMonetaryAmount: [factory.offer.IEligibleMonetaryAmount] | undefined // = (typeof params.ticketResult.usePoint === 'number' && params.ticketResult.usePoint > 0 // && typeof params.defaultCurrencyType?.typeOf === 'string') // ? [{ // typeOf: 'MonetaryAmount', // currency: params.defaultCurrencyType.codeValue, // value: Number(params.ticketResult.usePoint) // }] // : undefined; // 決済カード条件へ変更(2025-01-03~) // 適用メンバーシップ区分 // const eligibleMembershipType: [factory.offer.IEligibleCategoryCode] | undefined // = (params.ticketResult.flgMember === COA.factory.master.FlgMember.Member // && typeof params.defaultMembershipType?.typeOf === 'string') // ? [{ // typeOf: params.defaultMembershipType.typeOf, // id: params.defaultMembershipType.id, // codeValue: params.defaultMembershipType.codeValue, // inCodeSet: params.defaultMembershipType.inCodeSet // }] // : undefined; const appliesToMovieTicket = (params.ticketResult.flgMember === COA.factory.master.FlgMember.Member && typeof params.paymentMethodType4membershipCoupon === 'string' && params.paymentMethodType4membershipCoupon.length > 0) ? [{ typeOf: factory.service.paymentService.PaymentServiceType.MovieTicket, /** * チケットコードを決済カード区分と定義する */ serviceType: params.ticketResult.ticketCode, // ticketCode serviceOutput: { /** * 決済方法区分 */ typeOf: params.paymentMethodType4membershipCoupon // from interface settings } }] : undefined; const unitPriceSpec = Object.assign({ typeOf: factory.priceSpecificationType.UnitPriceSpecification, price: 0, priceCurrency: factory.priceCurrency.JPY, valueAddedTaxIncluded: true, referenceQuantity: { typeOf: 'QuantitativeValue', unitCode: factory.unitCode.C62, value: 1 } }, (Array.isArray(appliesToMovieTicket)) ? { appliesToMovieTicket } : undefined); const identifier = (0, util_1.format)('%s-%s-%s', factory.service.webAPI.Identifier.COA, params.theaterCode, params.ticketResult.ticketCode); const offerName = { ja: params.ticketResult.ticketName, en: (typeof params.ticketResult.ticketNameEng === 'string') ? params.ticketResult.ticketNameEng : '' }; return { typeOf: factory.offerType.Offer, priceCurrency: factory.priceCurrency.JPY, // id: '', identifier: identifier, name: offerName, description: { ja: '', en: '' }, alternateName: { ja: params.ticketResult.ticketName, en: (typeof params.ticketResult.ticketNameEng === 'string') ? params.ticketResult.ticketNameEng : '' }, availability: factory.itemAvailability.InStock, itemOffered: { typeOf: factory.product.ProductType.EventService }, priceSpecification: unitPriceSpec, // ...(Array.isArray(eligibleMembershipType)) ? { eligibleMembershipType } : undefined, // 決済カード条件へ変更(2025-01-03~) // ...(Array.isArray(eligibleMonetaryAmount)) ? { eligibleMonetaryAmount } : undefined, // discontinue(2025-01-03~) additionalProperty: [ { name: 'theaterCode', value: params.theaterCode }, { name: 'ticketCode', value: String(params.ticketResult.ticketCode) }, { name: 'ticketName', value: String(params.ticketResult.ticketName) }, { name: 'ticketNameEng', value: String(params.ticketResult.ticketNameEng) }, { name: 'ticketNameKana', value: String(params.ticketResult.ticketNameKana) }, { name: 'usePoint', value: String(params.ticketResult.usePoint) }, ...(params.ticketResult.flgMember !== undefined) ? [{ name: 'flgMember', value: String(params.ticketResult.flgMember) }] : [] // ...Object.keys(params.ticketResult) // .map((key) => { // return { name: String(key), value: String((<any>params.ticketResult)[key]) }; // }) ] }; }