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.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/build/index.d.ts +9 -0
  4. package/build/index.js +8 -0
  5. package/build/package.json +44 -0
  6. package/build/src/authentication/authentication..d.ts +21 -0
  7. package/build/src/authentication/authentication..js +28 -0
  8. package/build/src/authentication/helpers/index.d.ts +1 -0
  9. package/build/src/authentication/helpers/index.js +1 -0
  10. package/build/src/authentication/helpers/username-token.helper.d.ts +15 -0
  11. package/build/src/authentication/helpers/username-token.helper.js +17 -0
  12. package/build/src/authentication/requests/index.d.ts +4 -0
  13. package/build/src/authentication/requests/index.js +4 -0
  14. package/build/src/authentication/requests/interfaces/ping-options.interface.d.ts +3 -0
  15. package/build/src/authentication/requests/interfaces/ping-options.interface.js +1 -0
  16. package/build/src/authentication/requests/interfaces/session-close-options.interface.d.ts +3 -0
  17. package/build/src/authentication/requests/interfaces/session-close-options.interface.js +1 -0
  18. package/build/src/authentication/requests/interfaces/session-create-options.interface.d.ts +5 -0
  19. package/build/src/authentication/requests/interfaces/session-create-options.interface.js +1 -0
  20. package/build/src/authentication/requests/interfaces/token-create-options.interface.d.ts +3 -0
  21. package/build/src/authentication/requests/interfaces/token-create-options.interface.js +1 -0
  22. package/build/src/authentication/requests/interfaces/username-token-options.interface.d.ts +8 -0
  23. package/build/src/authentication/requests/interfaces/username-token-options.interface.js +1 -0
  24. package/build/src/authentication/requests/ping.request.d.ts +12 -0
  25. package/build/src/authentication/requests/ping.request.js +16 -0
  26. package/build/src/authentication/requests/session-close.request.d.ts +12 -0
  27. package/build/src/authentication/requests/session-close.request.js +16 -0
  28. package/build/src/authentication/requests/session-create.request.d.ts +12 -0
  29. package/build/src/authentication/requests/session-create.request.js +26 -0
  30. package/build/src/authentication/requests/token-create.request.d.ts +12 -0
  31. package/build/src/authentication/requests/token-create.request.js +26 -0
  32. package/build/src/common/config/xml-parser.config.d.ts +1 -0
  33. package/build/src/common/config/xml-parser.config.js +17 -0
  34. package/build/src/common/helpers/header.helper.d.ts +10 -0
  35. package/build/src/common/helpers/header.helper.js +14 -0
  36. package/build/src/common/helpers/message-header.helper.d.ts +17 -0
  37. package/build/src/common/helpers/message-header.helper.js +19 -0
  38. package/build/src/common/helpers/request.helper.d.ts +12 -0
  39. package/build/src/common/helpers/request.helper.js +19 -0
  40. package/build/src/common/helpers/security.helper.d.ts +9 -0
  41. package/build/src/common/helpers/security.helper.js +11 -0
  42. package/build/src/common/helpers/soap-env.helper.d.ts +15 -0
  43. package/build/src/common/helpers/soap-env.helper.js +17 -0
  44. package/build/src/common/interfaces/actions.interface.d.ts +16 -0
  45. package/build/src/common/interfaces/actions.interface.js +18 -0
  46. package/build/src/common/interfaces/application-results.interface.d.ts +12 -0
  47. package/build/src/common/interfaces/application-results.interface.js +1 -0
  48. package/build/src/common/interfaces/header-options.interface.d.ts +5 -0
  49. package/build/src/common/interfaces/header-options.interface.js +1 -0
  50. package/build/src/common/interfaces/headers-request-options.interface.d.ts +4 -0
  51. package/build/src/common/interfaces/headers-request-options.interface.js +1 -0
  52. package/build/src/common/interfaces/index.d.ts +8 -0
  53. package/build/src/common/interfaces/index.js +8 -0
  54. package/build/src/common/interfaces/message-header-options.interface.d.ts +7 -0
  55. package/build/src/common/interfaces/message-header-options.interface.js +1 -0
  56. package/build/src/common/interfaces/post-options.interface.d.ts +5 -0
  57. package/build/src/common/interfaces/post-options.interface.js +1 -0
  58. package/build/src/common/interfaces/request-options.interface.d.ts +4 -0
  59. package/build/src/common/interfaces/request-options.interface.js +1 -0
  60. package/build/src/common/interfaces/soap-env-options.interface.d.ts +4 -0
  61. package/build/src/common/interfaces/soap-env-options.interface.js +1 -0
  62. package/build/src/common/utils/get-sub-string.d.ts +1 -0
  63. package/build/src/common/utils/get-sub-string.js +11 -0
  64. package/build/src/config.d.ts +5 -0
  65. package/build/src/config.js +18 -0
  66. package/build/src/daily-sales/common/interfaces/cupon-type.enum.d.ts +7 -0
  67. package/build/src/daily-sales/common/interfaces/cupon-type.enum.js +6 -0
  68. package/build/src/daily-sales/common/interfaces/document-type.enum.d.ts +9 -0
  69. package/build/src/daily-sales/common/interfaces/document-type.enum.js +8 -0
  70. package/build/src/daily-sales/common/interfaces/index.d.ts +5 -0
  71. package/build/src/daily-sales/common/interfaces/index.js +5 -0
  72. package/build/src/daily-sales/common/interfaces/selection-criteria.interface.d.ts +13 -0
  73. package/build/src/daily-sales/common/interfaces/selection-criteria.interface.js +1 -0
  74. package/build/src/daily-sales/common/interfaces/settlement-type.enum.d.ts +7 -0
  75. package/build/src/daily-sales/common/interfaces/settlement-type.enum.js +6 -0
  76. package/build/src/daily-sales/common/interfaces/transaction-type.enum.d.ts +8 -0
  77. package/build/src/daily-sales/common/interfaces/transaction-type.enum.js +7 -0
  78. package/build/src/daily-sales/common/requests/interfaces/report-options.interface.d.ts +7 -0
  79. package/build/src/daily-sales/common/requests/interfaces/report-options.interface.js +1 -0
  80. package/build/src/daily-sales/common/requests/interfaces/summary-options.interface.d.ts +15 -0
  81. package/build/src/daily-sales/common/requests/interfaces/summary-options.interface.js +1 -0
  82. package/build/src/daily-sales/common/requests/report.request.d.ts +10 -0
  83. package/build/src/daily-sales/common/requests/report.request.js +17 -0
  84. package/build/src/daily-sales/common/requests/summary.request.d.ts +15 -0
  85. package/build/src/daily-sales/common/requests/summary.request.js +24 -0
  86. package/build/src/daily-sales/common/utils/parse-summary-options-to-selection-criteria.d.ts +4 -0
  87. package/build/src/daily-sales/common/utils/parse-summary-options-to-selection-criteria.js +16 -0
  88. package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.d.ts +3 -0
  89. package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.js +8 -0
  90. package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.spec.d.ts +1 -0
  91. package/build/src/daily-sales/common/utils/parse-summary-options-to-xml.spec.js +30 -0
  92. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.d.ts +2 -0
  93. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.js +5 -0
  94. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.spec.d.ts +1 -0
  95. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-report.spec.js +56 -0
  96. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.d.ts +2 -0
  97. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.js +5 -0
  98. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.spec.d.ts +1 -0
  99. package/build/src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.spec.js +61 -0
  100. package/build/src/daily-sales/daily-sales.d.ts +9 -0
  101. package/build/src/daily-sales/daily-sales.js +41 -0
  102. package/build/src/daily-sales/interfaces/daily-sales-report-options.interface.d.ts +63 -0
  103. package/build/src/daily-sales/interfaces/daily-sales-report-options.interface.js +1 -0
  104. package/build/src/daily-sales/interfaces/daily-sales-summary-options.interface.d.ts +107 -0
  105. package/build/src/daily-sales/interfaces/daily-sales-summary-options.interface.js +1 -0
  106. package/build/src/interfaces.d.ts +24 -0
  107. package/build/src/interfaces.js +17 -0
  108. package/build/src/queue/common/helpers/interfaces/navigation-actions.interface.d.ts +5 -0
  109. package/build/src/queue/common/helpers/interfaces/navigation-actions.interface.js +6 -0
  110. package/build/src/queue/common/helpers/interfaces/queue-identifier-options.interface.d.ts +6 -0
  111. package/build/src/queue/common/helpers/interfaces/queue-identifier-options.interface.js +1 -0
  112. package/build/src/queue/common/helpers/navigation-action.helper.d.ts +3 -0
  113. package/build/src/queue/common/helpers/navigation-action.helper.js +7 -0
  114. package/build/src/queue/common/helpers/queue-access.helper.d.ts +9 -0
  115. package/build/src/queue/common/helpers/queue-access.helper.js +11 -0
  116. package/build/src/queue/common/helpers/queue-count.helper.d.ts +10 -0
  117. package/build/src/queue/common/helpers/queue-count.helper.js +12 -0
  118. package/build/src/queue/common/helpers/queue-identifier.helper.d.ts +18 -0
  119. package/build/src/queue/common/helpers/queue-identifier.helper.js +23 -0
  120. package/build/src/queue/common/helpers/queue-place.helper.d.ts +10 -0
  121. package/build/src/queue/common/helpers/queue-place.helper.js +12 -0
  122. package/build/src/queue/common/interfaces/index.d.ts +2 -0
  123. package/build/src/queue/common/interfaces/index.js +2 -0
  124. package/build/src/queue/common/interfaces/notification.interface.d.ts +5 -0
  125. package/build/src/queue/common/interfaces/notification.interface.js +1 -0
  126. package/build/src/queue/common/interfaces/warning.interface.d.ts +4 -0
  127. package/build/src/queue/common/interfaces/warning.interface.js +1 -0
  128. package/build/src/queue/common/requests/access-list.request.d.ts +12 -0
  129. package/build/src/queue/common/requests/access-list.request.js +22 -0
  130. package/build/src/queue/common/requests/access.request.d.ts +12 -0
  131. package/build/src/queue/common/requests/access.request.js +22 -0
  132. package/build/src/queue/common/requests/count.request.d.ts +12 -0
  133. package/build/src/queue/common/requests/count.request.js +25 -0
  134. package/build/src/queue/common/requests/exit.request.d.ts +12 -0
  135. package/build/src/queue/common/requests/exit.request.js +19 -0
  136. package/build/src/queue/common/requests/ignore.request.d.ts +12 -0
  137. package/build/src/queue/common/requests/ignore.request.js +19 -0
  138. package/build/src/queue/common/requests/index.d.ts +7 -0
  139. package/build/src/queue/common/requests/index.js +7 -0
  140. package/build/src/queue/common/requests/interfaces/access-options.interface.d.ts +5 -0
  141. package/build/src/queue/common/requests/interfaces/access-options.interface.js +1 -0
  142. package/build/src/queue/common/requests/interfaces/count-options.interface.d.ts +4 -0
  143. package/build/src/queue/common/requests/interfaces/count-options.interface.js +1 -0
  144. package/build/src/queue/common/requests/interfaces/exit-options.interface.d.ts +3 -0
  145. package/build/src/queue/common/requests/interfaces/exit-options.interface.js +1 -0
  146. package/build/src/queue/common/requests/interfaces/ignore-options.interface.d.ts +3 -0
  147. package/build/src/queue/common/requests/interfaces/ignore-options.interface.js +1 -0
  148. package/build/src/queue/common/requests/interfaces/place-options.inferface.d.ts +3 -0
  149. package/build/src/queue/common/requests/interfaces/place-options.inferface.js +1 -0
  150. package/build/src/queue/common/requests/interfaces/remove-options.interface.d.ts +3 -0
  151. package/build/src/queue/common/requests/interfaces/remove-options.interface.js +1 -0
  152. package/build/src/queue/common/requests/place.request.d.ts +12 -0
  153. package/build/src/queue/common/requests/place.request.js +20 -0
  154. package/build/src/queue/common/requests/remove.request.d.ts +12 -0
  155. package/build/src/queue/common/requests/remove.request.js +19 -0
  156. package/build/src/queue/common/utils/find-booking-id.d.ts +2 -0
  157. package/build/src/queue/common/utils/find-booking-id.js +10 -0
  158. package/build/src/queue/common/utils/find-booking-id.spec.d.ts +1 -0
  159. package/build/src/queue/common/utils/find-booking-id.spec.js +9 -0
  160. package/build/src/queue/common/utils/format-queue-response.d.ts +3 -0
  161. package/build/src/queue/common/utils/format-queue-response.js +12 -0
  162. package/build/src/queue/common/utils/index.d.ts +5 -0
  163. package/build/src/queue/common/utils/index.js +5 -0
  164. package/build/src/queue/common/utils/interfaces/booking-text.interface.d.ts +3 -0
  165. package/build/src/queue/common/utils/interfaces/booking-text.interface.js +1 -0
  166. package/build/src/queue/common/utils/interfaces/format-queue-options.interface.d.ts +11 -0
  167. package/build/src/queue/common/utils/interfaces/format-queue-options.interface.js +1 -0
  168. package/build/src/queue/common/utils/interfaces/index.d.ts +6 -0
  169. package/build/src/queue/common/utils/interfaces/index.js +6 -0
  170. package/build/src/queue/common/utils/interfaces/queue-access.interface.d.ts +21 -0
  171. package/build/src/queue/common/utils/interfaces/queue-access.interface.js +1 -0
  172. package/build/src/queue/common/utils/interfaces/queue-count.interface.d.ts +23 -0
  173. package/build/src/queue/common/utils/interfaces/queue-count.interface.js +1 -0
  174. package/build/src/queue/common/utils/interfaces/queue-place.interface.d.ts +8 -0
  175. package/build/src/queue/common/utils/interfaces/queue-place.interface.js +1 -0
  176. package/build/src/queue/common/utils/interfaces/warnings-notifications-options.interface.d.ts +5 -0
  177. package/build/src/queue/common/utils/interfaces/warnings-notifications-options.interface.js +1 -0
  178. package/build/src/queue/common/utils/parse-paragraph-to-warnings.d.ts +4 -0
  179. package/build/src/queue/common/utils/parse-paragraph-to-warnings.js +12 -0
  180. package/build/src/queue/common/utils/parse-warnings-to-notifications.d.ts +6 -0
  181. package/build/src/queue/common/utils/parse-warnings-to-notifications.js +4 -0
  182. package/build/src/queue/common/utils/parse-xml-to-queue-access.d.ts +2 -0
  183. package/build/src/queue/common/utils/parse-xml-to-queue-access.js +6 -0
  184. package/build/src/queue/common/utils/parse-xml-to-queue-access.spec.d.ts +1 -0
  185. package/build/src/queue/common/utils/parse-xml-to-queue-access.spec.js +135 -0
  186. package/build/src/queue/common/utils/parse-xml-to-queue-count.d.ts +2 -0
  187. package/build/src/queue/common/utils/parse-xml-to-queue-count.js +6 -0
  188. package/build/src/queue/common/utils/parse-xml-to-queue-count.spec.d.ts +1 -0
  189. package/build/src/queue/common/utils/parse-xml-to-queue-count.spec.js +67 -0
  190. package/build/src/queue/common/utils/parse-xml-to-queue-place.d.ts +2 -0
  191. package/build/src/queue/common/utils/parse-xml-to-queue-place.js +5 -0
  192. package/build/src/queue/common/utils/parse-xml-to-queue-place.spec.d.ts +1 -0
  193. package/build/src/queue/common/utils/parse-xml-to-queue-place.spec.js +88 -0
  194. package/build/src/queue/interfaces/index.d.ts +5 -0
  195. package/build/src/queue/interfaces/index.js +5 -0
  196. package/build/src/queue/interfaces/queue-access-options.interface.d.ts +7 -0
  197. package/build/src/queue/interfaces/queue-access-options.interface.js +1 -0
  198. package/build/src/queue/interfaces/queue-count.interface.d.ts +3 -0
  199. package/build/src/queue/interfaces/queue-count.interface.js +1 -0
  200. package/build/src/queue/interfaces/queue-ignore.interface.d.ts +3 -0
  201. package/build/src/queue/interfaces/queue-ignore.interface.js +1 -0
  202. package/build/src/queue/interfaces/queue-place-options.interface.d.ts +6 -0
  203. package/build/src/queue/interfaces/queue-place-options.interface.js +1 -0
  204. package/build/src/queue/interfaces/queue-remove.interface.d.ts +3 -0
  205. package/build/src/queue/interfaces/queue-remove.interface.js +1 -0
  206. package/build/src/queue/queue.d.ts +13 -0
  207. package/build/src/queue/queue.js +101 -0
  208. package/build/src/sabre.d.ts +31 -0
  209. package/build/src/sabre.js +141 -0
  210. package/package.json +44 -0
@@ -0,0 +1,5 @@
1
+ import { ActionsRQ } from "./actions.interface";
2
+ import { HeadersRequestOptions } from "./headers-request-options.interface";
3
+ export interface HeaderOptions extends HeadersRequestOptions {
4
+ action: ActionsRQ;
5
+ }
@@ -0,0 +1,4 @@
1
+ export interface HeadersRequestOptions {
2
+ authorization: string;
3
+ conversationId: string;
4
+ }
@@ -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,7 @@
1
+ import { ActionsRQ } from "./actions.interface";
2
+ export interface MessageHeaderOptions {
3
+ from?: string;
4
+ to?: string;
5
+ conversationId: string;
6
+ action: ActionsRQ;
7
+ }
@@ -0,0 +1,5 @@
1
+ export interface PostOptions {
2
+ query?: {
3
+ [key: string]: unknown;
4
+ };
5
+ }
@@ -0,0 +1,4 @@
1
+ import { HeaderOptions } from "./header-options.interface";
2
+ export interface RequestOptions extends HeaderOptions {
3
+ body: string;
4
+ }
@@ -0,0 +1,4 @@
1
+ export interface SoapEnvOptions {
2
+ header: string;
3
+ body: string;
4
+ }
@@ -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,5 @@
1
+ declare const baseUrl: string;
2
+ declare const userAgent: string;
3
+ declare const domain: string;
4
+ declare const conversationId: string;
5
+ export { baseUrl, userAgent, domain, conversationId };
@@ -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,7 @@
1
+ declare const CUPON_TYPE: {
2
+ readonly F: "F";
3
+ readonly P: "P";
4
+ readonly E: "E";
5
+ };
6
+ export type CuponType = keyof typeof CUPON_TYPE;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ const CUPON_TYPE = {
2
+ F: 'F',
3
+ P: 'P',
4
+ E: 'E'
5
+ };
6
+ export {};
@@ -0,0 +1,9 @@
1
+ declare const DOCUMENT_TYPE: {
2
+ readonly TKT: "TKT";
3
+ readonly EMD: "EMD";
4
+ readonly RFEMD: "RFEMD";
5
+ readonly RFND: "RFND";
6
+ readonly MCO: "MCO";
7
+ };
8
+ export type DocumentType = keyof typeof DOCUMENT_TYPE;
9
+ export {};
@@ -0,0 +1,8 @@
1
+ const DOCUMENT_TYPE = {
2
+ TKT: 'TKT',
3
+ EMD: 'EMD',
4
+ RFEMD: 'RFEMD',
5
+ RFND: 'RFND',
6
+ MCO: 'MCO'
7
+ };
8
+ export {};
@@ -0,0 +1,5 @@
1
+ export * from './cupon-type.enum';
2
+ export * from './document-type.enum';
3
+ export * from './selection-criteria.interface';
4
+ export * from './settlement-type.enum';
5
+ export * from './transaction-type.enum';
@@ -0,0 +1,5 @@
1
+ export * from './cupon-type.enum';
2
+ export * from './document-type.enum';
3
+ export * from './selection-criteria.interface';
4
+ export * from './settlement-type.enum';
5
+ export * from './transaction-type.enum';
@@ -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,7 @@
1
+ declare const SETTLEMENT_TYPE: {
2
+ readonly TAT: "TAT";
3
+ readonly TCH: "TCH";
4
+ readonly TKT: "TKT";
5
+ };
6
+ export type SettlementType = keyof typeof SETTLEMENT_TYPE;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ const SETTLEMENT_TYPE = {
2
+ TAT: 'TAT',
3
+ TCH: 'TCH',
4
+ TKT: 'TKT'
5
+ };
6
+ export {};
@@ -0,0 +1,8 @@
1
+ declare const TRANSACTION_TYPE: {
2
+ readonly SALE: "SALE";
3
+ readonly CNCL: "CNCL";
4
+ readonly RFND: "RFND";
5
+ readonly VOID: "VOID";
6
+ };
7
+ export type TransactionType = keyof typeof TRANSACTION_TYPE;
8
+ export {};
@@ -0,0 +1,7 @@
1
+ const TRANSACTION_TYPE = {
2
+ SALE: 'SALE',
3
+ CNCL: 'CNCL',
4
+ RFND: 'RFND',
5
+ VOID: 'VOID'
6
+ };
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { HeadersRequestOptions } from "../../../../common/interfaces/headers-request-options.interface";
2
+ export interface ReportOptions {
3
+ pcc: string;
4
+ date: string;
5
+ }
6
+ export interface ReportRequestOptions extends HeadersRequestOptions, ReportOptions {
7
+ }
@@ -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,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,3 @@
1
+ import { SummaryOptions } from "../requests/interfaces/summary-options.interface";
2
+ declare function parseSummaryOptionsToXML(payload: SummaryOptions): any;
3
+ export { parseSummaryOptionsToXML };
@@ -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,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,2 @@
1
+ declare function parseXMLToDailySalesReport(payload: string): import("../../interfaces/daily-sales-report-options.interface").DailySalesReportRS;
2
+ export { parseXMLToDailySalesReport };
@@ -0,0 +1,5 @@
1
+ import { parseXML } from "../../../common/config/xml-parser.config";
2
+ function parseXMLToDailySalesReport(payload) {
3
+ return parseXML(payload).dailySalesReportRS;
4
+ }
5
+ export { parseXMLToDailySalesReport };
@@ -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,2 @@
1
+ declare function parseXMLToDailySalesSummary(payload: string): import("../../interfaces/daily-sales-summary-options.interface").DailySalesSummaryRS;
2
+ export { parseXMLToDailySalesSummary };
@@ -0,0 +1,5 @@
1
+ import { parseXML } from "../../../common/config/xml-parser.config";
2
+ function parseXMLToDailySalesSummary(payload) {
3
+ return parseXML(payload).dailySalesSummaryRS;
4
+ }
5
+ export { parseXMLToDailySalesSummary };
@@ -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
+ }