richie-education 3.2.1-dev9 → 3.2.2-dev26
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/i18n/locales/ar-SA.json +29 -1
- package/i18n/locales/es-ES.json +29 -1
- package/i18n/locales/fa-IR.json +29 -1
- package/i18n/locales/fr-CA.json +29 -1
- package/i18n/locales/fr-FR.json +29 -1
- package/i18n/locales/ko-KR.json +29 -1
- package/i18n/locales/pt-PT.json +29 -1
- package/i18n/locales/ru-RU.json +29 -1
- package/i18n/locales/vi-VN.json +29 -1
- package/js/api/joanie.ts +144 -0
- package/js/components/PaymentInterfaces/types.ts +7 -0
- package/js/components/PaymentScheduleGrid/index.tsx +4 -2
- package/js/components/SaleTunnel/AddressSelector/index.spec.tsx +9 -2
- package/js/components/SaleTunnel/GenericSaleTunnel.tsx +33 -0
- package/js/components/SaleTunnel/SaleTunnelInformation/SaleTunnelInformationGroup.tsx +253 -0
- package/js/components/SaleTunnel/SaleTunnelInformation/SaleTunnelInformationSingular.tsx +314 -0
- package/js/components/SaleTunnel/SaleTunnelInformation/StepContent.tsx +528 -0
- package/js/components/SaleTunnel/SaleTunnelInformation/index.tsx +47 -261
- package/js/components/SaleTunnel/SaleTunnelSuccess/index.tsx +25 -11
- package/js/components/SaleTunnel/SubscriptionButton/index.tsx +54 -6
- package/js/components/SaleTunnel/_styles.scss +55 -0
- package/js/components/SaleTunnel/index.full-process-b2b.spec.tsx +356 -0
- package/js/components/SaleTunnel/{index.full-process.spec.tsx → index.full-process-b2c.spec.tsx} +4 -1
- package/js/components/SaleTunnel/index.spec.tsx +130 -1
- package/js/hooks/useBatchOrder/index.tsx +36 -0
- package/js/hooks/useContractArchive/index.ts +2 -0
- package/js/hooks/useOfferingOrganizations/index.tsx +38 -0
- package/js/hooks/useOrganizationAgreements.tsx/index.tsx +66 -0
- package/js/hooks/useOrganizationQuotes/index.tsx +56 -0
- package/js/hooks/usePaymentPlan.tsx +2 -1
- package/js/hooks/useTeacherPendingAgreementsCount/index.ts +34 -0
- package/js/pages/DashboardBatchOrderLayout/_styles.scss +5 -0
- package/js/pages/DashboardBatchOrderLayout/index.spec.tsx +78 -0
- package/js/pages/DashboardBatchOrderLayout/index.tsx +45 -0
- package/js/pages/DashboardBatchOrders/index.spec.tsx +237 -0
- package/js/pages/DashboardBatchOrders/index.tsx +84 -0
- package/js/pages/TeacherDashboardContractsLayout/TeacherDashboardCourseContractsLayout/index.tsx +0 -1
- package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/index.tsx +3 -1
- package/js/pages/TeacherDashboardOrganizationAgreements/AgreementActionsBar.tsx +49 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/BulkAgreementContractButton.tsx +79 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/OrganizationAgreementFrame.tsx +71 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/SignOrganizationAgreementButton.tsx +60 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/hooks/useAgreementsAbilities.tsx +8 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/hooks/useHasAgreementToDownload.tsx +27 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/hooks/useTeacherAgreementsToSign.tsx +32 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/index.spec.tsx +433 -0
- package/js/pages/TeacherDashboardOrganizationAgreements/index.tsx +130 -0
- package/js/pages/TeacherDashboardOrganizationAgreementsLayout/index.tsx +25 -0
- package/js/pages/TeacherDashboardOrganizationCourseLoader/index.spec.tsx +9 -0
- package/js/pages/TeacherDashboardOrganizationQuotes/_styles.scss +40 -0
- package/js/pages/TeacherDashboardOrganizationQuotes/index.full-process.spec.tsx +194 -0
- package/js/pages/TeacherDashboardOrganizationQuotes/index.spec.tsx +144 -0
- package/js/pages/TeacherDashboardOrganizationQuotes/index.tsx +521 -0
- package/js/pages/TeacherDashboardOrganizationQuotesLayout/index.tsx +26 -0
- package/js/translations/ar-SA.json +1 -1
- package/js/translations/es-ES.json +1 -1
- package/js/translations/fa-IR.json +1 -1
- package/js/translations/fr-CA.json +1 -1
- package/js/translations/fr-FR.json +1 -1
- package/js/translations/ko-KR.json +1 -1
- package/js/translations/pt-PT.json +1 -1
- package/js/translations/ru-RU.json +1 -1
- package/js/translations/vi-VN.json +1 -1
- package/js/types/Joanie.ts +216 -1
- package/js/utils/AbilitiesHelper/agreementAbilities.ts +14 -0
- package/js/utils/AbilitiesHelper/index.ts +7 -0
- package/js/utils/AbilitiesHelper/types.ts +12 -3
- package/js/utils/ObjectHelper/index.ts +20 -0
- package/js/utils/OrderHelper/index.ts +10 -0
- package/js/utils/errors/HttpError.ts +1 -0
- package/js/utils/test/factories/joanie.ts +156 -1
- package/js/widgets/Dashboard/components/DashboardBatchOrderLoader/_styles.scss +14 -0
- package/js/widgets/Dashboard/components/DashboardBatchOrderLoader/index.tsx +32 -0
- package/js/widgets/Dashboard/components/DashboardCard/index.spec.tsx +18 -0
- package/js/widgets/Dashboard/components/DashboardCard/index.stories.tsx +25 -2
- package/js/widgets/Dashboard/components/DashboardCard/index.tsx +4 -2
- package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/BatchOrderPaymentModal/BatchOrderPaymentManager.tsx +88 -0
- package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/BatchOrderPaymentModal/index.tsx +216 -0
- package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/DashboardBatchOrderSubItems.tsx +316 -0
- package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/index.spec.tsx +27 -0
- package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/index.tsx +175 -0
- package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.tsx +5 -2
- package/js/widgets/Dashboard/components/DashboardItem/Order/OrganizationBlock/index.tsx +4 -1
- package/js/widgets/Dashboard/components/DashboardItem/Order/_styles.scss +5 -0
- package/js/widgets/Dashboard/components/DashboardItem/_styles.scss +43 -0
- package/js/widgets/Dashboard/components/DashboardSidebar/components/AgreementNavLink/index.spec.tsx +214 -0
- package/js/widgets/Dashboard/components/DashboardSidebar/components/AgreementNavLink/index.tsx +47 -0
- package/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.tsx +1 -0
- package/js/widgets/Dashboard/components/TeacherDashboardOrganizationSidebar/index.spec.tsx +21 -3
- package/js/widgets/Dashboard/components/TeacherDashboardOrganizationSidebar/index.tsx +9 -0
- package/js/widgets/Dashboard/utils/learnerRoutes.tsx +30 -0
- package/js/widgets/Dashboard/utils/learnerRoutesPaths.tsx +12 -0
- package/js/widgets/Dashboard/utils/teacherDashboardPaths.tsx +12 -0
- package/js/widgets/Dashboard/utils/teacherRoutes.tsx +17 -0
- package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.spec.tsx +8 -2
- package/package.json +4 -1
- package/scss/colors/_theme.scss +1 -1
- package/scss/components/_index.scss +1 -0
package/i18n/locales/ar-SA.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/es-ES.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/fa-IR.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/fr-CA.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/fr-FR.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Supprimer ce coupon"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Réduction appliquée"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "Le code promo saisi n’est pas valide."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Trop de tentatives. Veuillez réessayer plus tard."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "Si vous avez un coupon ou code promo, veuillez le saisir dans le champ ci-dessous."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Coupon / Code promo"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Valider"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "Université"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "Pour vous inscrire, vous serez d
|
|
1440
|
+
"message": "Pour vous inscrire à la formation, vous serez d’abord invité à signer la convention de formation, puis à définir un mode de paiement si nécessaire."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/ko-KR.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/pt-PT.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Apagar este voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Desconto aplicado"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "O código do voucher enviado não é válido."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Tentativas excessivas. Por favor, tente novamente mais tarde."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "Se tiver um código promocional, insira-o no campo abaixo."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Código promocional"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validar"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "Universidade"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "Para se inscrever na formação, será
|
|
1440
|
+
"message": "Para se inscrever na formação, primeiro será convidado a assinar o contrato de formação e, em seguida, a definir um método de pagamento, se necessário."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/ru-RU.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/i18n/locales/vi-VN.json
CHANGED
|
@@ -1391,6 +1391,34 @@
|
|
|
1391
1391
|
"description": "Label for the total amount",
|
|
1392
1392
|
"message": "Total"
|
|
1393
1393
|
},
|
|
1394
|
+
"components.SaleTunnel.Information.voucher.delete": {
|
|
1395
|
+
"description": "Delete text for the voucher",
|
|
1396
|
+
"message": "Delete this voucher"
|
|
1397
|
+
},
|
|
1398
|
+
"components.SaleTunnel.Information.voucher.discount": {
|
|
1399
|
+
"description": "Discount description",
|
|
1400
|
+
"message": "Discount applied"
|
|
1401
|
+
},
|
|
1402
|
+
"components.SaleTunnel.Information.voucher.errorInvalid": {
|
|
1403
|
+
"description": "Error when voucher is invalid",
|
|
1404
|
+
"message": "The submitted voucher code is not valid."
|
|
1405
|
+
},
|
|
1406
|
+
"components.SaleTunnel.Information.voucher.errorTooManyRequests": {
|
|
1407
|
+
"description": "Error when user has tried too many vouchers",
|
|
1408
|
+
"message": "Too many attempts. Please try again later."
|
|
1409
|
+
},
|
|
1410
|
+
"components.SaleTunnel.Information.voucher.info": {
|
|
1411
|
+
"description": "Info for the voucher",
|
|
1412
|
+
"message": "If you have a voucher code, please enter it in the field below."
|
|
1413
|
+
},
|
|
1414
|
+
"components.SaleTunnel.Information.voucher.title": {
|
|
1415
|
+
"description": "Title for the voucher",
|
|
1416
|
+
"message": "Voucher code"
|
|
1417
|
+
},
|
|
1418
|
+
"components.SaleTunnel.Information.voucher.validate": {
|
|
1419
|
+
"description": "Validate text for the voucher",
|
|
1420
|
+
"message": "Validate"
|
|
1421
|
+
},
|
|
1394
1422
|
"components.SaleTunnel.Sponsors.SaleTunnelSponsors.blockTitle": {
|
|
1395
1423
|
"description": "Title for the universities section in the sale tunnel",
|
|
1396
1424
|
"message": "University"
|
|
@@ -1409,7 +1437,7 @@
|
|
|
1409
1437
|
},
|
|
1410
1438
|
"components.SaleTunnel.SubscriptionButton.walkthroughToSignAndSavePayment": {
|
|
1411
1439
|
"description": "Message explaining the subscription process with a training agreement to sign and a payment method to set.",
|
|
1412
|
-
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method."
|
|
1440
|
+
"message": "To enroll in the training, you will first be invited to sign the training agreement and then to define a payment method if required."
|
|
1413
1441
|
},
|
|
1414
1442
|
"components.SaleTunnel.WithdrawRightCheckbox.certificate .waiveCheckboxHelperClause2": {
|
|
1415
1443
|
"description": "Second clause item for the waiver checkbox.",
|
package/js/api/joanie.ts
CHANGED
|
@@ -101,6 +101,13 @@ export const getRoutes = () => {
|
|
|
101
101
|
submit_installment_payment: `${baseUrl}/orders/:id/submit-installment-payment/`,
|
|
102
102
|
set_payment_method: `${baseUrl}/orders/:id/payment-method/`,
|
|
103
103
|
},
|
|
104
|
+
batchOrders: {
|
|
105
|
+
get: `${baseUrl}/batch-orders/:id/`,
|
|
106
|
+
create: `${baseUrl}/batch-orders/`,
|
|
107
|
+
submit_for_payment: {
|
|
108
|
+
create: `${baseUrl}/batch-orders/:id/submit-for-payment/`,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
104
111
|
certificates: {
|
|
105
112
|
download: `${baseUrl}/certificates/:id/download/`,
|
|
106
113
|
get: `${baseUrl}/certificates/:id/`,
|
|
@@ -136,6 +143,25 @@ export const getRoutes = () => {
|
|
|
136
143
|
get: `${baseUrl}/organizations/:organization_id/contracts/:id/`,
|
|
137
144
|
getSignatureLinks: `${baseUrl}/organizations/:organization_id/contracts-signature-link/`,
|
|
138
145
|
},
|
|
146
|
+
quotes: {
|
|
147
|
+
get: `${baseUrl}/organizations/:organization_id/quotes/:id/`,
|
|
148
|
+
update: `${baseUrl}/organizations/:organization_id/confirm-quote/`,
|
|
149
|
+
purchase_order: {
|
|
150
|
+
update: `${baseUrl}/organizations/:organization_id/confirm-purchase-order/`,
|
|
151
|
+
},
|
|
152
|
+
bank_transfer: {
|
|
153
|
+
create: `${baseUrl}/organizations/:organization_id/confirm-bank-transfer/`,
|
|
154
|
+
},
|
|
155
|
+
submit_for_signature: {
|
|
156
|
+
create: `${baseUrl}/organizations/:organization_id/submit-for-signature-batch-order/`,
|
|
157
|
+
},
|
|
158
|
+
download_quote: {
|
|
159
|
+
get: `${baseUrl}/organizations/:organization_id/download-quote/`,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
agreements: {
|
|
163
|
+
get: `${baseUrl}/organizations/:organization_id/agreements/:id/`,
|
|
164
|
+
},
|
|
139
165
|
},
|
|
140
166
|
courses: {
|
|
141
167
|
get: `${baseUrl}/courses/:id/`,
|
|
@@ -157,6 +183,9 @@ export const getRoutes = () => {
|
|
|
157
183
|
},
|
|
158
184
|
offerings: {
|
|
159
185
|
get: `${baseUrl}/offerings/:id/`,
|
|
186
|
+
organizations: {
|
|
187
|
+
get: `${baseUrl}/offerings/:id/get-organizations/`,
|
|
188
|
+
},
|
|
160
189
|
},
|
|
161
190
|
contractDefinitions: {
|
|
162
191
|
previewTemplate: `${baseUrl}/contract_definitions/:id/preview_template/`,
|
|
@@ -303,6 +332,26 @@ const API = (): Joanie.API => {
|
|
|
303
332
|
body: JSON.stringify(payload),
|
|
304
333
|
}).then(checkStatus),
|
|
305
334
|
},
|
|
335
|
+
batchOrders: {
|
|
336
|
+
create: async (payload) =>
|
|
337
|
+
fetchWithJWT(ROUTES.user.batchOrders.create, {
|
|
338
|
+
method: 'POST',
|
|
339
|
+
body: JSON.stringify(payload),
|
|
340
|
+
}).then(checkStatus),
|
|
341
|
+
get: async (filters?: Joanie.BatchOrderQueryFilters) => {
|
|
342
|
+
return fetchWithJWT(buildApiUrl(ROUTES.user.batchOrders.get, filters)).then(checkStatus);
|
|
343
|
+
},
|
|
344
|
+
submit_for_payment: {
|
|
345
|
+
create: async (filters) => {
|
|
346
|
+
return fetchWithJWT(
|
|
347
|
+
buildApiUrl(ROUTES.user.batchOrders.submit_for_payment.create, filters),
|
|
348
|
+
{
|
|
349
|
+
method: 'POST',
|
|
350
|
+
},
|
|
351
|
+
).then(checkStatus);
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
},
|
|
306
355
|
enrollments: {
|
|
307
356
|
create: async (payload) =>
|
|
308
357
|
fetchWithJWT(ROUTES.user.enrollments.create, {
|
|
@@ -406,6 +455,94 @@ const API = (): Joanie.API => {
|
|
|
406
455
|
).then(checkStatus);
|
|
407
456
|
},
|
|
408
457
|
},
|
|
458
|
+
quotes: {
|
|
459
|
+
get: async (filters?: Joanie.OrganizationQuoteQueryFilters) => {
|
|
460
|
+
return fetchWithJWT(buildApiUrl(ROUTES.organizations.quotes.get, filters), {
|
|
461
|
+
method: 'GET',
|
|
462
|
+
}).then(checkStatus);
|
|
463
|
+
},
|
|
464
|
+
update: async (filters: { organization_id: string; payload: any }) => {
|
|
465
|
+
if (filters.organization_id && filters.payload) {
|
|
466
|
+
return fetchWithJWT(
|
|
467
|
+
ROUTES.organizations.quotes.update.replace(
|
|
468
|
+
':organization_id',
|
|
469
|
+
filters.organization_id,
|
|
470
|
+
),
|
|
471
|
+
{
|
|
472
|
+
method: 'PATCH',
|
|
473
|
+
body: JSON.stringify(filters.payload),
|
|
474
|
+
},
|
|
475
|
+
).then(checkStatus);
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
purchase_order: {
|
|
479
|
+
update: async (filters: { organization_id: string; payload: any }) => {
|
|
480
|
+
if (filters.organization_id && filters.payload) {
|
|
481
|
+
return fetchWithJWT(
|
|
482
|
+
ROUTES.organizations.quotes.purchase_order.update.replace(
|
|
483
|
+
':organization_id',
|
|
484
|
+
filters.organization_id,
|
|
485
|
+
),
|
|
486
|
+
{
|
|
487
|
+
method: 'PATCH',
|
|
488
|
+
body: JSON.stringify(filters.payload),
|
|
489
|
+
},
|
|
490
|
+
).then(checkStatus);
|
|
491
|
+
}
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
bank_transfer: {
|
|
495
|
+
create: async (filters: { organization_id: string; payload: any }) => {
|
|
496
|
+
if (filters.organization_id && filters.payload) {
|
|
497
|
+
return fetchWithJWT(
|
|
498
|
+
ROUTES.organizations.quotes.bank_transfer.create.replace(
|
|
499
|
+
':organization_id',
|
|
500
|
+
filters.organization_id,
|
|
501
|
+
),
|
|
502
|
+
{
|
|
503
|
+
method: 'POST',
|
|
504
|
+
body: JSON.stringify(filters.payload),
|
|
505
|
+
},
|
|
506
|
+
).then(checkStatus);
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
},
|
|
510
|
+
submit_for_signature: {
|
|
511
|
+
create: async (filters: { organization_id: string; payload: any }) => {
|
|
512
|
+
if (filters.organization_id && filters.payload) {
|
|
513
|
+
return fetchWithJWT(
|
|
514
|
+
ROUTES.organizations.quotes.submit_for_signature.create.replace(
|
|
515
|
+
':organization_id',
|
|
516
|
+
filters.organization_id,
|
|
517
|
+
),
|
|
518
|
+
{
|
|
519
|
+
method: 'POST',
|
|
520
|
+
body: JSON.stringify(filters.payload),
|
|
521
|
+
},
|
|
522
|
+
).then(checkStatus);
|
|
523
|
+
}
|
|
524
|
+
},
|
|
525
|
+
},
|
|
526
|
+
download_quote: {
|
|
527
|
+
get: async (filters?: Joanie.OrganizationQuoteQueryFilters) => {
|
|
528
|
+
return fetchWithJWT(
|
|
529
|
+
buildApiUrl(ROUTES.organizations.quotes.download_quote.get, filters),
|
|
530
|
+
{
|
|
531
|
+
method: 'GET',
|
|
532
|
+
},
|
|
533
|
+
)
|
|
534
|
+
.then(checkStatus)
|
|
535
|
+
.then(getFileFromResponse);
|
|
536
|
+
},
|
|
537
|
+
},
|
|
538
|
+
},
|
|
539
|
+
agreements: {
|
|
540
|
+
get: async (filters) => {
|
|
541
|
+
return fetchWithJWT(buildApiUrl(ROUTES.organizations.agreements.get, filters), {
|
|
542
|
+
method: 'GET',
|
|
543
|
+
}).then(checkStatus);
|
|
544
|
+
},
|
|
545
|
+
},
|
|
409
546
|
},
|
|
410
547
|
courses: {
|
|
411
548
|
get: (filters?: Joanie.CourseQueryFilters) => {
|
|
@@ -477,6 +614,13 @@ const API = (): Joanie.API => {
|
|
|
477
614
|
: buildApiUrl(ROUTES.offerings.get, filters),
|
|
478
615
|
).then(checkStatus);
|
|
479
616
|
},
|
|
617
|
+
organizations: {
|
|
618
|
+
get: (filters?: Joanie.OrganizationQuoteQueryFilters) => {
|
|
619
|
+
return fetchWithJWT(buildApiUrl(ROUTES.offerings.organizations.get, filters)).then(
|
|
620
|
+
checkStatus,
|
|
621
|
+
);
|
|
622
|
+
},
|
|
623
|
+
},
|
|
480
624
|
},
|
|
481
625
|
contractDefinitions: {
|
|
482
626
|
previewTemplate(id: string): Promise<File> {
|
|
@@ -9,6 +9,7 @@ export enum SubscriptionErrorMessageId {
|
|
|
9
9
|
ERROR_DEFAULT = 'errorDefault',
|
|
10
10
|
ERROR_FULL_PRODUCT = 'errorFullProduct',
|
|
11
11
|
ERROR_WITHDRAWAL_RIGHT = 'errorWithdrawalRight',
|
|
12
|
+
ERROR_BATCH_ORDER_FORM_INVALID = 'batchOrderFormInvalid',
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export enum PaymentProviders {
|
|
@@ -17,6 +18,12 @@ export enum PaymentProviders {
|
|
|
17
18
|
LYRA = 'lyra',
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
export enum PaymentMethod {
|
|
22
|
+
CARD_PAYMENT = 'card_payment',
|
|
23
|
+
BANK_TRANSFER = 'bank_transfer',
|
|
24
|
+
PURCHASE_ORDER = 'purchase_order',
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
export interface PaymentWithId {
|
|
21
28
|
payment_id: string;
|
|
22
29
|
}
|
|
@@ -59,8 +59,8 @@ export const PaymentScheduleGrid = ({ schedule }: Props) => {
|
|
|
59
59
|
<DataGrid
|
|
60
60
|
displayHeader={false}
|
|
61
61
|
columns={[
|
|
62
|
-
{ field: 'index', size: 10 },
|
|
63
|
-
{ field: 'amount', size: 90 },
|
|
62
|
+
{ field: 'index', size: 10, enableSorting: false },
|
|
63
|
+
{ field: 'amount', size: 90, enableSorting: false },
|
|
64
64
|
{
|
|
65
65
|
field: 'date',
|
|
66
66
|
renderCell: ({ row }) => (
|
|
@@ -68,6 +68,7 @@ export const PaymentScheduleGrid = ({ schedule }: Props) => {
|
|
|
68
68
|
<FormattedMessage {...messages.withdrawnAt} values={{ date: row.date }} />
|
|
69
69
|
</span>
|
|
70
70
|
),
|
|
71
|
+
enableSorting: false,
|
|
71
72
|
},
|
|
72
73
|
{
|
|
73
74
|
id: 'state',
|
|
@@ -79,6 +80,7 @@ export const PaymentScheduleGrid = ({ schedule }: Props) => {
|
|
|
79
80
|
) : (
|
|
80
81
|
''
|
|
81
82
|
),
|
|
83
|
+
enableSorting: false,
|
|
82
84
|
},
|
|
83
85
|
]}
|
|
84
86
|
rows={schedule.map((installment, index) => ({
|