sabre-legacy-client 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +15 -0
- package/build/index.d.ts +9 -0
- package/build/index.js +8 -0
- package/build/package.json +44 -0
- package/build/src/authentication/authentication..d.ts +21 -0
- package/build/src/authentication/authentication..js +28 -0
- package/build/src/authentication/helpers/index.d.ts +1 -0
- package/build/src/authentication/helpers/index.js +1 -0
- package/build/src/authentication/helpers/username-token.helper.d.ts +15 -0
- package/build/src/authentication/helpers/username-token.helper.js +17 -0
- package/build/src/authentication/requests/index.d.ts +4 -0
- package/build/src/authentication/requests/index.js +4 -0
- package/build/src/authentication/requests/interfaces/ping-options.interface.d.ts +3 -0
- package/build/src/authentication/requests/interfaces/ping-options.interface.js +1 -0
- package/build/src/authentication/requests/interfaces/session-close-options.interface.d.ts +3 -0
- package/build/src/authentication/requests/interfaces/session-close-options.interface.js +1 -0
- package/build/src/authentication/requests/interfaces/session-create-options.interface.d.ts +5 -0
- package/build/src/authentication/requests/interfaces/session-create-options.interface.js +1 -0
- package/build/src/authentication/requests/interfaces/token-create-options.interface.d.ts +3 -0
- package/build/src/authentication/requests/interfaces/token-create-options.interface.js +1 -0
- package/build/src/authentication/requests/interfaces/username-token-options.interface.d.ts +8 -0
- package/build/src/authentication/requests/interfaces/username-token-options.interface.js +1 -0
- package/build/src/authentication/requests/ping.request.d.ts +12 -0
- package/build/src/authentication/requests/ping.request.js +16 -0
- package/build/src/authentication/requests/session-close.request.d.ts +12 -0
- package/build/src/authentication/requests/session-close.request.js +16 -0
- package/build/src/authentication/requests/session-create.request.d.ts +12 -0
- package/build/src/authentication/requests/session-create.request.js +26 -0
- package/build/src/authentication/requests/token-create.request.d.ts +12 -0
- package/build/src/authentication/requests/token-create.request.js +26 -0
- package/build/src/common/config/xml-parser.config.d.ts +1 -0
- package/build/src/common/config/xml-parser.config.js +17 -0
- package/build/src/common/helpers/header.helper.d.ts +10 -0
- package/build/src/common/helpers/header.helper.js +14 -0
- package/build/src/common/helpers/message-header.helper.d.ts +17 -0
- package/build/src/common/helpers/message-header.helper.js +19 -0
- package/build/src/common/helpers/request.helper.d.ts +12 -0
- package/build/src/common/helpers/request.helper.js +19 -0
- package/build/src/common/helpers/security.helper.d.ts +9 -0
- package/build/src/common/helpers/security.helper.js +11 -0
- package/build/src/common/helpers/soap-env.helper.d.ts +15 -0
- package/build/src/common/helpers/soap-env.helper.js +17 -0
- package/build/src/common/interfaces/actions.interface.d.ts +16 -0
- package/build/src/common/interfaces/actions.interface.js +18 -0
- package/build/src/common/interfaces/application-results.interface.d.ts +12 -0
- package/build/src/common/interfaces/application-results.interface.js +1 -0
- package/build/src/common/interfaces/header-options.interface.d.ts +5 -0
- package/build/src/common/interfaces/header-options.interface.js +1 -0
- package/build/src/common/interfaces/headers-request-options.interface.d.ts +4 -0
- package/build/src/common/interfaces/headers-request-options.interface.js +1 -0
- package/build/src/common/interfaces/index.d.ts +8 -0
- package/build/src/common/interfaces/index.js +8 -0
- package/build/src/common/interfaces/message-header-options.interface.d.ts +7 -0
- package/build/src/common/interfaces/message-header-options.interface.js +1 -0
- package/build/src/common/interfaces/post-options.interface.d.ts +5 -0
- package/build/src/common/interfaces/post-options.interface.js +1 -0
- package/build/src/common/interfaces/request-options.interface.d.ts +4 -0
- package/build/src/common/interfaces/request-options.interface.js +1 -0
- package/build/src/common/interfaces/soap-env-options.interface.d.ts +4 -0
- package/build/src/common/interfaces/soap-env-options.interface.js +1 -0
- package/build/src/common/utils/get-sub-string.d.ts +1 -0
- package/build/src/common/utils/get-sub-string.js +11 -0
- package/build/src/config.d.ts +5 -0
- package/build/src/config.js +18 -0
- package/build/src/daily-sales/common/interfaces/cupon-type.enum.d.ts +7 -0
- package/build/src/daily-sales/common/interfaces/cupon-type.enum.js +6 -0
- package/build/src/daily-sales/common/interfaces/document-type.enum.d.ts +9 -0
- package/build/src/daily-sales/common/interfaces/document-type.enum.js +8 -0
- package/build/src/daily-sales/common/interfaces/index.d.ts +5 -0
- package/build/src/daily-sales/common/interfaces/index.js +5 -0
- package/build/src/daily-sales/common/interfaces/selection-criteria.interface.d.ts +13 -0
- package/build/src/daily-sales/common/interfaces/selection-criteria.interface.js +1 -0
- package/build/src/daily-sales/common/interfaces/settlement-type.enum.d.ts +7 -0
- package/build/src/daily-sales/common/interfaces/settlement-type.enum.js +6 -0
- package/build/src/daily-sales/common/interfaces/transaction-type.enum.d.ts +8 -0
- package/build/src/daily-sales/common/interfaces/transaction-type.enum.js +7 -0
- package/build/src/daily-sales/common/requests/interfaces/report-options.interface.d.ts +7 -0
- package/build/src/daily-sales/common/requests/interfaces/report-options.interface.js +1 -0
- package/build/src/daily-sales/common/requests/interfaces/summary-options.interface.d.ts +15 -0
- package/build/src/daily-sales/common/requests/interfaces/summary-options.interface.js +1 -0
- package/build/src/daily-sales/common/requests/report.request.d.ts +10 -0
- package/build/src/daily-sales/common/requests/report.request.js +17 -0
- package/build/src/daily-sales/common/requests/summary.request.d.ts +15 -0
- package/build/src/daily-sales/common/requests/summary.request.js +24 -0
- package/build/src/daily-sales/common/utils/parse-summary-options-to-selection-criteria.d.ts +4 -0
- package/build/src/daily-sales/common/utils/parse-summary-options-to-selection-criteria.js +16 -0
- package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.d.ts +3 -0
- package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.js +8 -0
- package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.spec.d.ts +1 -0
- package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.spec.js +30 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.d.ts +2 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.js +5 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.spec.d.ts +1 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.spec.js +56 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.d.ts +2 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.js +5 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.spec.d.ts +1 -0
- package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.spec.js +61 -0
- package/build/src/daily-sales/daily-sales.d.ts +9 -0
- package/build/src/daily-sales/daily-sales.js +41 -0
- package/build/src/daily-sales/interfaces/daily-sales-report-options.interface.d.ts +63 -0
- package/build/src/daily-sales/interfaces/daily-sales-report-options.interface.js +1 -0
- package/build/src/daily-sales/interfaces/daily-sales-summary-options.interface.d.ts +107 -0
- package/build/src/daily-sales/interfaces/daily-sales-summary-options.interface.js +1 -0
- package/build/src/interfaces.d.ts +24 -0
- package/build/src/interfaces.js +17 -0
- package/build/src/queue/common/helpers/interfaces/navigation-actions.interface.d.ts +5 -0
- package/build/src/queue/common/helpers/interfaces/navigation-actions.interface.js +6 -0
- package/build/src/queue/common/helpers/interfaces/queue-identifier-options.interface.d.ts +6 -0
- package/build/src/queue/common/helpers/interfaces/queue-identifier-options.interface.js +1 -0
- package/build/src/queue/common/helpers/navigation-action.helper.d.ts +3 -0
- package/build/src/queue/common/helpers/navigation-action.helper.js +7 -0
- package/build/src/queue/common/helpers/queue-access.helper.d.ts +9 -0
- package/build/src/queue/common/helpers/queue-access.helper.js +11 -0
- package/build/src/queue/common/helpers/queue-count.helper.d.ts +10 -0
- package/build/src/queue/common/helpers/queue-count.helper.js +12 -0
- package/build/src/queue/common/helpers/queue-identifier.helper.d.ts +18 -0
- package/build/src/queue/common/helpers/queue-identifier.helper.js +23 -0
- package/build/src/queue/common/helpers/queue-place.helper.d.ts +10 -0
- package/build/src/queue/common/helpers/queue-place.helper.js +12 -0
- package/build/src/queue/common/interfaces/index.d.ts +2 -0
- package/build/src/queue/common/interfaces/index.js +2 -0
- package/build/src/queue/common/interfaces/notification.interface.d.ts +5 -0
- package/build/src/queue/common/interfaces/notification.interface.js +1 -0
- package/build/src/queue/common/interfaces/warning.interface.d.ts +4 -0
- package/build/src/queue/common/interfaces/warning.interface.js +1 -0
- package/build/src/queue/common/requests/access-list.request.d.ts +12 -0
- package/build/src/queue/common/requests/access-list.request.js +22 -0
- package/build/src/queue/common/requests/access.request.d.ts +12 -0
- package/build/src/queue/common/requests/access.request.js +22 -0
- package/build/src/queue/common/requests/count.request.d.ts +12 -0
- package/build/src/queue/common/requests/count.request.js +25 -0
- package/build/src/queue/common/requests/exit.request.d.ts +12 -0
- package/build/src/queue/common/requests/exit.request.js +19 -0
- package/build/src/queue/common/requests/ignore.request.d.ts +12 -0
- package/build/src/queue/common/requests/ignore.request.js +19 -0
- package/build/src/queue/common/requests/index.d.ts +7 -0
- package/build/src/queue/common/requests/index.js +7 -0
- package/build/src/queue/common/requests/interfaces/access-options.interface.d.ts +5 -0
- package/build/src/queue/common/requests/interfaces/access-options.interface.js +1 -0
- package/build/src/queue/common/requests/interfaces/count-options.interface.d.ts +4 -0
- package/build/src/queue/common/requests/interfaces/count-options.interface.js +1 -0
- package/build/src/queue/common/requests/interfaces/exit-options.interface.d.ts +3 -0
- package/build/src/queue/common/requests/interfaces/exit-options.interface.js +1 -0
- package/build/src/queue/common/requests/interfaces/ignore-options.interface.d.ts +3 -0
- package/build/src/queue/common/requests/interfaces/ignore-options.interface.js +1 -0
- package/build/src/queue/common/requests/interfaces/place-options.inferface.d.ts +3 -0
- package/build/src/queue/common/requests/interfaces/place-options.inferface.js +1 -0
- package/build/src/queue/common/requests/interfaces/remove-options.interface.d.ts +3 -0
- package/build/src/queue/common/requests/interfaces/remove-options.interface.js +1 -0
- package/build/src/queue/common/requests/place.request.d.ts +12 -0
- package/build/src/queue/common/requests/place.request.js +20 -0
- package/build/src/queue/common/requests/remove.request.d.ts +12 -0
- package/build/src/queue/common/requests/remove.request.js +19 -0
- package/build/src/queue/common/utils/find-booking-id.d.ts +2 -0
- package/build/src/queue/common/utils/find-booking-id.js +10 -0
- package/build/src/queue/common/utils/find-booking-id.spec.d.ts +1 -0
- package/build/src/queue/common/utils/find-booking-id.spec.js +9 -0
- package/build/src/queue/common/utils/format-queue-response.d.ts +3 -0
- package/build/src/queue/common/utils/format-queue-response.js +12 -0
- package/build/src/queue/common/utils/index.d.ts +5 -0
- package/build/src/queue/common/utils/index.js +5 -0
- package/build/src/queue/common/utils/interfaces/booking-text.interface.d.ts +3 -0
- package/build/src/queue/common/utils/interfaces/booking-text.interface.js +1 -0
- package/build/src/queue/common/utils/interfaces/format-queue-options.interface.d.ts +11 -0
- package/build/src/queue/common/utils/interfaces/format-queue-options.interface.js +1 -0
- package/build/src/queue/common/utils/interfaces/index.d.ts +6 -0
- package/build/src/queue/common/utils/interfaces/index.js +6 -0
- package/build/src/queue/common/utils/interfaces/queue-access.interface.d.ts +21 -0
- package/build/src/queue/common/utils/interfaces/queue-access.interface.js +1 -0
- package/build/src/queue/common/utils/interfaces/queue-count.interface.d.ts +23 -0
- package/build/src/queue/common/utils/interfaces/queue-count.interface.js +1 -0
- package/build/src/queue/common/utils/interfaces/queue-place.interface.d.ts +8 -0
- package/build/src/queue/common/utils/interfaces/queue-place.interface.js +1 -0
- package/build/src/queue/common/utils/interfaces/warnings-notifications-options.interface.d.ts +5 -0
- package/build/src/queue/common/utils/interfaces/warnings-notifications-options.interface.js +1 -0
- package/build/src/queue/common/utils/parse-paragraph-to-warnings.d.ts +4 -0
- package/build/src/queue/common/utils/parse-paragraph-to-warnings.js +12 -0
- package/build/src/queue/common/utils/parse-warnings-to-notifications.d.ts +6 -0
- package/build/src/queue/common/utils/parse-warnings-to-notifications.js +4 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-access.d.ts +2 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-access.js +6 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-access.spec.d.ts +1 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-access.spec.js +135 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-count.d.ts +2 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-count.js +6 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-count.spec.d.ts +1 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-count.spec.js +67 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-place.d.ts +2 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-place.js +5 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-place.spec.d.ts +1 -0
- package/build/src/queue/common/utils/parse-xml-to-queue-place.spec.js +88 -0
- package/build/src/queue/interfaces/index.d.ts +5 -0
- package/build/src/queue/interfaces/index.js +5 -0
- package/build/src/queue/interfaces/queue-access-options.interface.d.ts +7 -0
- package/build/src/queue/interfaces/queue-access-options.interface.js +1 -0
- package/build/src/queue/interfaces/queue-count.interface.d.ts +3 -0
- package/build/src/queue/interfaces/queue-count.interface.js +1 -0
- package/build/src/queue/interfaces/queue-ignore.interface.d.ts +3 -0
- package/build/src/queue/interfaces/queue-ignore.interface.js +1 -0
- package/build/src/queue/interfaces/queue-place-options.interface.d.ts +6 -0
- package/build/src/queue/interfaces/queue-place-options.interface.js +1 -0
- package/build/src/queue/interfaces/queue-remove.interface.d.ts +3 -0
- package/build/src/queue/interfaces/queue-remove.interface.js +1 -0
- package/build/src/queue/queue.d.ts +13 -0
- package/build/src/queue/queue.js +101 -0
- package/build/src/sabre.d.ts +31 -0
- package/build/src/sabre.js +141 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './actions.interface';
|
|
2
|
+
export * from './application-results.interface';
|
|
3
|
+
export * from './header-options.interface';
|
|
4
|
+
export * from './headers-request-options.interface';
|
|
5
|
+
export * from './message-header-options.interface';
|
|
6
|
+
export * from './post-options.interface';
|
|
7
|
+
export * from './request-options.interface';
|
|
8
|
+
export * from './soap-env-options.interface';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './actions.interface';
|
|
2
|
+
export * from './application-results.interface';
|
|
3
|
+
export * from './header-options.interface';
|
|
4
|
+
export * from './headers-request-options.interface';
|
|
5
|
+
export * from './message-header-options.interface';
|
|
6
|
+
export * from './post-options.interface';
|
|
7
|
+
export * from './request-options.interface';
|
|
8
|
+
export * from './soap-env-options.interface';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getSubString(strSearch: string, strBegin: string, strEnd: string, withEnd: boolean): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function getSubString(strSearch, strBegin, strEnd, withEnd) {
|
|
2
|
+
let strSub = '';
|
|
3
|
+
const intBegin = strSearch.indexOf(strBegin);
|
|
4
|
+
if (intBegin !== -1) {
|
|
5
|
+
const startIndex = withEnd ? intBegin : intBegin + strBegin.length;
|
|
6
|
+
const endIndex = strSearch.indexOf(strEnd, startIndex);
|
|
7
|
+
if (endIndex !== -1)
|
|
8
|
+
strSub = strSearch.substring(startIndex, endIndex + (withEnd ? strEnd.length : 0));
|
|
9
|
+
}
|
|
10
|
+
return strSub;
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { version } from '../package.json';
|
|
2
|
+
const defaultBaseUrl = 'https://webservices.platform.sabre.com';
|
|
3
|
+
const defaultUserAgent = `sabre-client-node:${version}`;
|
|
4
|
+
const defaultConversationId = `sabre.client.node:${version}`;
|
|
5
|
+
const defaultDomain = 'AA';
|
|
6
|
+
const baseUrl = typeof process !== 'undefined' && process.env
|
|
7
|
+
? process.env.SABRE_SOAP_URL || defaultBaseUrl
|
|
8
|
+
: defaultBaseUrl;
|
|
9
|
+
const userAgent = typeof process !== 'undefined' && process.env
|
|
10
|
+
? process.env.SABRE_USER_AGENT || defaultUserAgent
|
|
11
|
+
: defaultUserAgent;
|
|
12
|
+
const domain = typeof process !== 'undefined' && process.env
|
|
13
|
+
? process.env.SABRE_DOMAIN || defaultDomain
|
|
14
|
+
: defaultDomain;
|
|
15
|
+
const conversationId = typeof process !== 'undefined' && process.env
|
|
16
|
+
? process.env.SABRE_CONVERSATION_ID || defaultConversationId
|
|
17
|
+
: defaultConversationId;
|
|
18
|
+
export { baseUrl, userAgent, domain, conversationId };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DocumentType } from "./document-type.enum";
|
|
2
|
+
import { SettlementType } from "./settlement-type.enum";
|
|
3
|
+
export interface SelectionCriteria {
|
|
4
|
+
PseudoCityCode: string;
|
|
5
|
+
Airline?: {
|
|
6
|
+
AirlineCode?: string;
|
|
7
|
+
AirlineNumber?: string;
|
|
8
|
+
};
|
|
9
|
+
ReportDate: string;
|
|
10
|
+
SettlementType?: SettlementType;
|
|
11
|
+
DocumentType?: DocumentType;
|
|
12
|
+
DocumentNumber?: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HeadersRequestOptions } from "../../../../common/interfaces/headers-request-options.interface";
|
|
2
|
+
import { DocumentType, SettlementType } from "../../../common/interfaces";
|
|
3
|
+
export interface SummaryOptions {
|
|
4
|
+
date: string;
|
|
5
|
+
pcc: string;
|
|
6
|
+
airline?: {
|
|
7
|
+
code?: string;
|
|
8
|
+
number?: string;
|
|
9
|
+
};
|
|
10
|
+
settlementType?: SettlementType;
|
|
11
|
+
documentType?: DocumentType;
|
|
12
|
+
documentNumber?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SummaryRequestOptions extends HeadersRequestOptions, SummaryOptions {
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReportRequestOptions } from "./interfaces/report-options.interface";
|
|
2
|
+
/**
|
|
3
|
+
* <DailySalesReportRQ ReturnHostCommand="false" Version="2.0.0" xmlns="http://webservices.sabre.com/sabreXML/2011/10">
|
|
4
|
+
* <SalesReport PseudoCityCode="{{pcc_tkt}}" StartDate="{{date}}"/>
|
|
5
|
+
* </DailySalesReportRQ>
|
|
6
|
+
* @param options ReportOptions
|
|
7
|
+
* @returns string
|
|
8
|
+
*/
|
|
9
|
+
declare function reportRequest(options: ReportRequestOptions): string;
|
|
10
|
+
export { reportRequest };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { request } from "../../../common/helpers/request.helper";
|
|
2
|
+
import { ActionsRQ } from "../../../common/interfaces";
|
|
3
|
+
/**
|
|
4
|
+
* <DailySalesReportRQ ReturnHostCommand="false" Version="2.0.0" xmlns="http://webservices.sabre.com/sabreXML/2011/10">
|
|
5
|
+
* <SalesReport PseudoCityCode="{{pcc_tkt}}" StartDate="{{date}}"/>
|
|
6
|
+
* </DailySalesReportRQ>
|
|
7
|
+
* @param options ReportOptions
|
|
8
|
+
* @returns string
|
|
9
|
+
*/
|
|
10
|
+
function reportRequest(options) {
|
|
11
|
+
const { pcc, date, authorization, conversationId } = options;
|
|
12
|
+
const body = `<DailySalesReportRQ ReturnHostCommand="false" Version="2.0.0" xmlns="http://webservices.sabre.com/sabreXML/2011/10"><SalesReport PseudoCityCode="${pcc}" StartDate="${date}"/></DailySalesReportRQ>`;
|
|
13
|
+
return request({
|
|
14
|
+
body, action: ActionsRQ.DAILY_SALES_REPORT, authorization, conversationId
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export { reportRequest };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SummaryRequestOptions } from "./interfaces/summary-options.interface";
|
|
2
|
+
/**
|
|
3
|
+
* <DailySalesSummaryRQ version="1.2.2" xmlns="http://www.sabre.com/ns/Ticketing/AsrServices/1.0">
|
|
4
|
+
* <Header/>
|
|
5
|
+
* <SelectionCriteria>
|
|
6
|
+
* <PseudoCityCode>{{pccTkt}}</PseudoCityCode>
|
|
7
|
+
* <ReportDate>{{date}}</ReportDate>
|
|
8
|
+
* </SelectionCriteria>
|
|
9
|
+
* </DailySalesSummaryRQ>
|
|
10
|
+
*
|
|
11
|
+
* @param options SummaryOptions
|
|
12
|
+
* @returns string
|
|
13
|
+
*/
|
|
14
|
+
declare function summaryRequest(options: SummaryRequestOptions): string;
|
|
15
|
+
export { summaryRequest };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { request } from "../../../common/helpers/request.helper";
|
|
2
|
+
import { ActionsRQ } from "../../../common/interfaces/actions.interface";
|
|
3
|
+
import { parseSummaryOptionsToXML } from "../utils/parse-summary-options-to-xml";
|
|
4
|
+
/**
|
|
5
|
+
* <DailySalesSummaryRQ version="1.2.2" xmlns="http://www.sabre.com/ns/Ticketing/AsrServices/1.0">
|
|
6
|
+
* <Header/>
|
|
7
|
+
* <SelectionCriteria>
|
|
8
|
+
* <PseudoCityCode>{{pccTkt}}</PseudoCityCode>
|
|
9
|
+
* <ReportDate>{{date}}</ReportDate>
|
|
10
|
+
* </SelectionCriteria>
|
|
11
|
+
* </DailySalesSummaryRQ>
|
|
12
|
+
*
|
|
13
|
+
* @param options SummaryOptions
|
|
14
|
+
* @returns string
|
|
15
|
+
*/
|
|
16
|
+
function summaryRequest(options) {
|
|
17
|
+
const { authorization, conversationId, ...summaryOptions } = options;
|
|
18
|
+
const selectionCriteria = parseSummaryOptionsToXML(summaryOptions);
|
|
19
|
+
const body = `<DailySalesSummaryRQ version="1.2.2" xmlns="http://www.sabre.com/ns/Ticketing/AsrServices/1.0"><Header/>${selectionCriteria}</DailySalesSummaryRQ>`;
|
|
20
|
+
return request({
|
|
21
|
+
body, action: ActionsRQ.AGENCY_REPORT, authorization, conversationId
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export { summaryRequest };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { SummaryOptions } from "../requests/interfaces/summary-options.interface";
|
|
2
|
+
import { SelectionCriteria } from "../interfaces";
|
|
3
|
+
declare function parseSummaryOptionsToSelectionCriteria(payload: SummaryOptions): SelectionCriteria;
|
|
4
|
+
export { parseSummaryOptionsToSelectionCriteria };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function parseSummaryOptionsToSelectionCriteria(payload) {
|
|
2
|
+
return {
|
|
3
|
+
PseudoCityCode: payload.pcc,
|
|
4
|
+
ReportDate: payload.date,
|
|
5
|
+
DocumentNumber: payload.documentNumber,
|
|
6
|
+
SettlementType: payload.settlementType,
|
|
7
|
+
DocumentType: payload.documentType,
|
|
8
|
+
Airline: payload.airline?.code || payload.airline?.number
|
|
9
|
+
? {
|
|
10
|
+
AirlineCode: payload.airline.code,
|
|
11
|
+
AirlineNumber: payload.airline.number
|
|
12
|
+
}
|
|
13
|
+
: undefined
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export { parseSummaryOptionsToSelectionCriteria };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { parseSummaryOptionsToSelectionCriteria } from "./parse-summary-options-to-selection-criteria";
|
|
2
|
+
function parseSummaryOptionsToXML(payload) {
|
|
3
|
+
const SelectionCriteria = parseSummaryOptionsToSelectionCriteria(payload);
|
|
4
|
+
const { XMLBuilder } = require('fast-xml-parser');
|
|
5
|
+
const builder = new XMLBuilder();
|
|
6
|
+
return builder.build({ SelectionCriteria });
|
|
7
|
+
}
|
|
8
|
+
export { parseSummaryOptionsToXML };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { parseSummaryOptionsToXML } from './parse-summary-options-to-xml';
|
|
2
|
+
describe('parseSummaryOptionsToXML', () => {
|
|
3
|
+
it('should handle minimal summary options with only required fields', () => {
|
|
4
|
+
const summaryPayload = {
|
|
5
|
+
date: '2025-02-18',
|
|
6
|
+
pcc: '8AYC'
|
|
7
|
+
};
|
|
8
|
+
const xml = parseSummaryOptionsToXML(summaryPayload);
|
|
9
|
+
expect(xml).toEqual('<SelectionCriteria><PseudoCityCode>8AYC</PseudoCityCode><ReportDate>2025-02-18</ReportDate></SelectionCriteria>');
|
|
10
|
+
});
|
|
11
|
+
it('should handle parse summary options with BSP & Tickets', () => {
|
|
12
|
+
const summaryPayload = {
|
|
13
|
+
pcc: '8AYC',
|
|
14
|
+
date: '2025-02-18',
|
|
15
|
+
settlementType: 'TKT',
|
|
16
|
+
documentType: 'TKT'
|
|
17
|
+
};
|
|
18
|
+
const xml = parseSummaryOptionsToXML(summaryPayload);
|
|
19
|
+
expect(xml).toEqual('<SelectionCriteria><PseudoCityCode>8AYC</PseudoCityCode><ReportDate>2025-02-18</ReportDate><SettlementType>TKT</SettlementType><DocumentType>TKT</DocumentType></SelectionCriteria>');
|
|
20
|
+
});
|
|
21
|
+
it('should handle parse summary options with specific ticket', () => {
|
|
22
|
+
const summaryPayload = {
|
|
23
|
+
pcc: '8AYC',
|
|
24
|
+
date: '2025-02-18',
|
|
25
|
+
documentNumber: '1134567834412'
|
|
26
|
+
};
|
|
27
|
+
const xml = parseSummaryOptionsToXML(summaryPayload);
|
|
28
|
+
expect(xml).toEqual('<SelectionCriteria><PseudoCityCode>8AYC</PseudoCityCode><ReportDate>2025-02-18</ReportDate><DocumentNumber>1134567834412</DocumentNumber></SelectionCriteria>');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { parseXMLToDailySalesReport } from "./parse-xml-to-daily-sales-report";
|
|
2
|
+
describe('parseXMLToDailySalesReport', () => {
|
|
3
|
+
it('should handle xml with minimal issuance data', () => {
|
|
4
|
+
const xmlPayload = '<DailySalesReportRS xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stl="http://services.sabre.com/STL/v01" Version="2.0.0"><stl:ApplicationResults status="Complete"><stl:Success timeStamp="2025-02-19T17:58:54Z"/></stl:ApplicationResults><SalesReport><CreationDetails><Source AgencyName="CORPORATIVO GALES" CreateDateTime="2025-02-18" PseudoCityCode="8AYC"/></CreationDetails><IssuanceData AgentSine="ASS" Commission="64" DocumentType="T" DomesticInternational="D" IndicatorTwo="ET" IssueTime="2258" ItineraryRef="UFKBGS" StockItemCount="1" TicketPrinter="1" TicketStock="MX"><Payment><Form Amount="8946" CurrencyCode="MXN">CA</Form></Payment><PersonName>RODRIGUEZ GOMEZ/MARCO ANTONIO</PersonName><TicketingInfo><Ticketing Ind="ETR" UsedCount="1" eTicketNumber="1393474586780"/></TicketingInfo></IssuanceData></SalesReport></DailySalesReportRS>';
|
|
5
|
+
const dailySalesReport = parseXMLToDailySalesReport(xmlPayload);
|
|
6
|
+
expect(dailySalesReport).toEqual({
|
|
7
|
+
applicationResults: {
|
|
8
|
+
success: { timeStamp: '2025-02-19T17:58:54Z' },
|
|
9
|
+
status: 'Complete'
|
|
10
|
+
},
|
|
11
|
+
salesReport: {
|
|
12
|
+
creationDetails: {
|
|
13
|
+
source: {
|
|
14
|
+
agencyName: 'CORPORATIVO GALES',
|
|
15
|
+
createDateTime: '2025-02-18',
|
|
16
|
+
pseudoCityCode: '8AYC'
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
issuanceData: {
|
|
20
|
+
payment: { form: { content: 'CA', amount: '8946', currencyCode: 'MXN' } },
|
|
21
|
+
personName: 'RODRIGUEZ GOMEZ/MARCO ANTONIO',
|
|
22
|
+
ticketingInfo: {
|
|
23
|
+
ticketing: { ind: 'ETR', usedCount: '1', eTicketNumber: '1393474586780' }
|
|
24
|
+
},
|
|
25
|
+
agentSine: 'ASS',
|
|
26
|
+
commission: '64',
|
|
27
|
+
documentType: 'T',
|
|
28
|
+
domesticInternational: 'D',
|
|
29
|
+
indicatorTwo: 'ET',
|
|
30
|
+
issueTime: '2258',
|
|
31
|
+
itineraryRef: 'UFKBGS',
|
|
32
|
+
stockItemCount: '1',
|
|
33
|
+
ticketPrinter: '1',
|
|
34
|
+
ticketStock: 'MX'
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
it('should handle error daily sales report', () => {
|
|
40
|
+
const xmlPayload = '<DailySalesReportRS xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stl="http://services.sabre.com/STL/v01" Version="2.0.0"><stl:ApplicationResults status="NotProcessed"><stl:Error type="BusinessLogic" timeStamp="2025-02-19T18:34:09Z"><stl:SystemSpecificResults><stl:Message>TICKETING DATABASE ERROR</stl:Message><stl:ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</stl:ShortText></stl:SystemSpecificResults></stl:Error></stl:ApplicationResults></DailySalesReportRS>';
|
|
41
|
+
const dailySalesReport = parseXMLToDailySalesReport(xmlPayload);
|
|
42
|
+
expect(dailySalesReport).toEqual({
|
|
43
|
+
applicationResults: {
|
|
44
|
+
error: {
|
|
45
|
+
systemSpecificResults: {
|
|
46
|
+
message: 'TICKETING DATABASE ERROR',
|
|
47
|
+
shortText: 'ERR.SWS.HOST.ERROR_IN_RESPONSE'
|
|
48
|
+
},
|
|
49
|
+
type: 'BusinessLogic',
|
|
50
|
+
timeStamp: '2025-02-19T18:34:09Z'
|
|
51
|
+
},
|
|
52
|
+
status: 'NotProcessed'
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { parseXMLToDailySalesSummary } from "./parse-xml-to-daily-sales-summary";
|
|
2
|
+
describe('parseXMLToDailySalesSummary', () => {
|
|
3
|
+
it('should handle xml with everything except NDC', () => {
|
|
4
|
+
const xmlPayload = '<asr:DailySalesSummaryRS xmlns:asr="http://www.sabre.com/ns/Ticketing/AsrServices/1.0" version="1.2.2" isQueryStillRunning="false"><asr:Header messageID="TKT_WS_PROD_V6WV-11003-2103709565-1739991967431-17568600-asrwsDqb"><OrchestrationID xmlns="http://services.sabre.com/STL/v01" xmlns:ns2="http://www.sabre.com/ns/Ticketing/AsrServices/1.0" xmlns:ns4="http://www.sabre.com/ns/Ticketing/TTL/1.0" xmlns:ns3="http://services.sabre.com/STL/Catalog/v01" seq="0">TKT_WS_PROD_V6WV-11003-2103709565-1739991967431-17568600-asrwsDqb</OrchestrationID><Results xmlns="http://services.sabre.com/STL/v01" xmlns:ns2="http://www.sabre.com/ns/Ticketing/AsrServices/1.0" xmlns:ns4="http://www.sabre.com/ns/Ticketing/TTL/1.0" xmlns:ns3="http://services.sabre.com/STL/Catalog/v01"><Success><System>T2-ASR</System></Success></Results></asr:Header><ns2:DSHeader xmlns:ns2="http://www.sabre.com/ns/Ticketing/AsrServices/1.0" xmlns="http://services.sabre.com/STL/v01" xmlns:ns4="http://www.sabre.com/ns/Ticketing/TTL/1.0" xmlns:ns3="http://services.sabre.com/STL/Catalog/v01"><ns2:PseudoCityCode>8AYC</ns2:PseudoCityCode><ns2:AgencyName>CORPORATIVO GALES</ns2:AgencyName></ns2:DSHeader><ns2:DailySalesReport xmlns:ns2="http://www.sabre.com/ns/Ticketing/AsrServices/1.0" xmlns="http://services.sabre.com/STL/v01" xmlns:ns4="http://www.sabre.com/ns/Ticketing/TTL/1.0" xmlns:ns3="http://services.sabre.com/STL/Catalog/v01"><ns2:ReportDate>2025-02-18</ns2:ReportDate><ns2:Transaction nonInteractive="false" electronicDocument="true" itineraryType="D"><ns2:DocumentType>TKT</ns2:DocumentType><ns2:SettlementType>TKT</ns2:SettlementType><ns2:PnrLocator>UFKBGS</ns2:PnrLocator><ns2:PassengerName>RODRIGUEZ GOMEZ/MARCO ANTONIO</ns2:PassengerName><ns2:DocumentDetails><ns2:DocumentNumber>1393474586780</ns2:DocumentNumber><ns2:StockType>MX</ns2:StockType><ns2:TransactionCode>SALE</ns2:TransactionCode></ns2:DocumentDetails><ns2:AirlineCode AirlineNumber="139">AM</ns2:AirlineCode><ns2:Commission><ns2:Amount>64</ns2:Amount><ns2:Percent>1.0</ns2:Percent></ns2:Commission><ns2:Payments><ns2:CurrencyCode decimalPlace="0">MXN</ns2:CurrencyCode><ns2:DocumentPayment><ns2:PaymentTotal>8946</ns2:PaymentTotal><ns2:PaymentDetail fop="CA" category="Cash"><ns2:PaymentAmount>8946</ns2:PaymentAmount></ns2:PaymentDetail></ns2:DocumentPayment></ns2:Payments><ns2:AgentSine>ASS</ns2:AgentSine><ns2:AgentPseudoCity>8AYC</ns2:AgentPseudoCity><ns2:TransactionDateTime>2025-02-18T22:58:00.000</ns2:TransactionDateTime></ns2:Transaction><ns2:TotalDailySales><ns2:TransactionType>SALE</ns2:TransactionType><ns2:SalesBySettlement><ns2:SettlementType>TKT</ns2:SettlementType><ns2:SaleTotals><ns2:CurrencyCode>MXN</ns2:CurrencyCode><ns2:CashTotals count="17">180705</ns2:CashTotals><ns2:CreditTotals count="19">649020</ns2:CreditTotals><ns2:CommissionTotals count="15">1486</ns2:CommissionTotals></ns2:SaleTotals></ns2:SalesBySettlement></ns2:TotalDailySales></ns2:DailySalesReport></asr:DailySalesSummaryRS>';
|
|
5
|
+
const dailySalesSummary = parseXMLToDailySalesSummary(xmlPayload);
|
|
6
|
+
expect(dailySalesSummary).toEqual({
|
|
7
|
+
header: {
|
|
8
|
+
orchestrationID: {
|
|
9
|
+
content: 'TKT_WS_PROD_V6WV-11003-2103709565-1739991967431-17568600-asrwsDqb',
|
|
10
|
+
seq: '0'
|
|
11
|
+
},
|
|
12
|
+
results: { success: { system: 'T2-ASR' } },
|
|
13
|
+
messageID: 'TKT_WS_PROD_V6WV-11003-2103709565-1739991967431-17568600-asrwsDqb'
|
|
14
|
+
},
|
|
15
|
+
dSHeader: { pseudoCityCode: '8AYC', agencyName: 'CORPORATIVO GALES' },
|
|
16
|
+
dailySalesReport: {
|
|
17
|
+
reportDate: '2025-02-18',
|
|
18
|
+
transaction: {
|
|
19
|
+
documentType: 'TKT',
|
|
20
|
+
settlementType: 'TKT',
|
|
21
|
+
pnrLocator: 'UFKBGS',
|
|
22
|
+
passengerName: 'RODRIGUEZ GOMEZ/MARCO ANTONIO',
|
|
23
|
+
documentDetails: {
|
|
24
|
+
documentNumber: 1393474586780,
|
|
25
|
+
stockType: 'MX',
|
|
26
|
+
transactionCode: 'SALE'
|
|
27
|
+
},
|
|
28
|
+
airlineCode: { content: 'AM', airlineNumber: '139' },
|
|
29
|
+
commission: { amount: 64, percent: 1 },
|
|
30
|
+
payments: {
|
|
31
|
+
currencyCode: { content: 'MXN', decimalPlace: '0' },
|
|
32
|
+
documentPayment: {
|
|
33
|
+
paymentTotal: 8946,
|
|
34
|
+
paymentDetail: { paymentAmount: 8946, fop: 'CA', category: 'Cash' }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
agentSine: 'ASS',
|
|
38
|
+
agentPseudoCity: '8AYC',
|
|
39
|
+
transactionDateTime: '2025-02-18T22:58:00.000',
|
|
40
|
+
nonInteractive: 'false',
|
|
41
|
+
electronicDocument: 'true',
|
|
42
|
+
itineraryType: 'D'
|
|
43
|
+
},
|
|
44
|
+
totalDailySales: {
|
|
45
|
+
transactionType: 'SALE',
|
|
46
|
+
salesBySettlement: {
|
|
47
|
+
settlementType: 'TKT',
|
|
48
|
+
saleTotals: {
|
|
49
|
+
currencyCode: 'MXN',
|
|
50
|
+
cashTotals: { content: 180705, count: '17' },
|
|
51
|
+
creditTotals: { content: 649020, count: '19' },
|
|
52
|
+
commissionTotals: { content: 1486, count: '15' }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
version: '1.2.2',
|
|
58
|
+
isQueryStillRunning: 'false'
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Sabre } from "../sabre";
|
|
2
|
+
import { ReportOptions } from "./interfaces/daily-sales-report-options.interface";
|
|
3
|
+
import { SummaryOptions } from "./interfaces/daily-sales-summary-options.interface";
|
|
4
|
+
export declare class DailySales {
|
|
5
|
+
private readonly sabre;
|
|
6
|
+
constructor(sabre: Sabre);
|
|
7
|
+
report(payload: ReportOptions): Promise<import("./interfaces/daily-sales-report-options.interface").DailySalesReportRS>;
|
|
8
|
+
summary(payload: SummaryOptions): Promise<import("./interfaces/daily-sales-summary-options.interface").DailySalesSummaryRS>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ActionsRQ } from "../common/interfaces/actions.interface";
|
|
2
|
+
import { reportRequest } from "./common/requests/report.request";
|
|
3
|
+
import { summaryRequest } from "./common/requests/summary.request";
|
|
4
|
+
import { parseXMLToDailySalesSummary } from "./common/utils/parse-xml-to-daily-sales-summary";
|
|
5
|
+
import { parseXMLToDailySalesReport } from "./common/utils/parse-xml-to-daily-sales-report";
|
|
6
|
+
export class DailySales {
|
|
7
|
+
sabre;
|
|
8
|
+
constructor(sabre) {
|
|
9
|
+
this.sabre = sabre;
|
|
10
|
+
}
|
|
11
|
+
async report(payload) {
|
|
12
|
+
if (!payload.pcc) {
|
|
13
|
+
if (typeof process !== 'undefined' && process.env) {
|
|
14
|
+
payload.pcc = process.env.SABRE_ORGANIZATION;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (!payload.pcc)
|
|
18
|
+
throw new Error('Missing pcc. Set it in report({ pcc, number })');
|
|
19
|
+
const { pcc, date } = payload;
|
|
20
|
+
this.sabre.setAction(ActionsRQ.DAILY_SALES_REPORT);
|
|
21
|
+
const response = await this.sabre.post((headersPayload) => reportRequest({ pcc, date, ...headersPayload }));
|
|
22
|
+
if (!response.data)
|
|
23
|
+
throw new Error(`Response error ${response.error}`);
|
|
24
|
+
return parseXMLToDailySalesReport(response.data);
|
|
25
|
+
}
|
|
26
|
+
async summary(payload) {
|
|
27
|
+
if (!payload.pcc) {
|
|
28
|
+
if (typeof process !== 'undefined' && process.env) {
|
|
29
|
+
payload.pcc = process.env.SABRE_ORGANIZATION;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!payload.pcc)
|
|
33
|
+
throw new Error('Missing pcc. Set it in summary({ pcc, ... })');
|
|
34
|
+
const { pcc } = payload;
|
|
35
|
+
this.sabre.setAction(ActionsRQ.DAILY_SALES_REPORT);
|
|
36
|
+
const response = await this.sabre.post((headersPayload) => summaryRequest({ pcc, ...payload, ...headersPayload }));
|
|
37
|
+
if (!response.data)
|
|
38
|
+
throw new Error(`Response error ${response.error}`);
|
|
39
|
+
return parseXMLToDailySalesSummary(response.data);
|
|
40
|
+
}
|
|
41
|
+
}
|